Transfere quantidade entre armazéns/endereços
POST/sku/movement/transfer
Move quantidade de um SKU entre dois armazéns ou dois endereços/lotes, gerando duas movimentações vinculadas (saída na origem, entrada no destino). O custo unitário usado em ambas é o custo médio do armazém de origem — ou o valor de CostSet quando a parametrização UseCostFromCostSet está ativa.
Origem e destino precisam estar no mesmo Centro de Distribuição. O SKU precisa estar ativo e ser do tipo Sku, Matéria-prima ou Uso e consumo.
Modos de transferência:
- Entre armazéns — envie
IDStockKeepingUnitWarehouseFrom+IDStockKeepingUnitWarehouseTo. O sistema consome lotes na ordem FIFO (mais antigo primeiro) até completarQuantity. Para SKU sem rastreabilidade usa o lote padrão. - Entre lotes/endereços — envie
IDBatchFrom+ (IDBatchToouIDStockKeepingUnitLocationTo). Quando vier sóIDStockKeepingUnitLocationTo, o sistema procura um lote compatível no destino (mesma validade/fabricação/comentário) e o reutiliza; se não existir, cria um novo lote. Com a parametrizaçãoKeepUniqueBatchForFiscalConciliationativa, sempre cria um novo lote no destino.
Validações:
- Se a quantidade total do lote origem for menor que
Quantity, devolve[BadRequest] - Quantidade total insuficiente para transferencia. Pode ser contornado ativandoAllowNegativeBalanceTransferou, no fluxo entre lotes/endereços, enviandoIgnoreBalance=1. - Em transferência entre endereços com SKU rastreável, se o endereço destino já tem o mesmo SKU em lote divergente (validade/fabricação/comentário diferentes) e a parametrização
AllowSameItemDifferentBatchSameLocationestá inativa, devolve[BadRequest] - Item possui lotes divergentes no endereço de destino.
Efeitos colaterais:
- Atualiza o saldo agregado do SKU no armazém de destino e, quando o saldo do SKU nesse armazém fica negativo em algum ponto da linha do tempo, dispara o recálculo de custo do SKU.
- Reprocessa pedidos no armazém de destino com status "Falta produto" e equivalentes (
IDStatusOrder11,12e24), limpandoQuantityNonconformityà medida que a quantidade transferida cobre as faltas, e devolvendo o pedido aIDStatusOrder = 1(Fechado) quando todos os itens voltam a ter saldo. Cada alteração gera evento de pedido (IDEvent = 35). No fluxo entre lotes/endereços entram as não conformidades1,2,5e6; no fluxo entre armazéns, apenas5e6. - Publica a notificação
SkuBalanceTransferpara o webhook da empresa.
Resposta: depende do fluxo. Na transferência entre lotes/endereços, por padrão devolve as duas movimentações criadas e, com BatchResponse=1, devolve a lista de lotes do SKU. Na transferência entre armazéns, a resposta é sempre a lista de lotes do SKU — BatchResponse não é considerado nesse fluxo.
Request
Responses
- 200
- 400
- 500
Transferência criada. No fluxo entre lotes/endereços retorna as duas movimentações criadas, ou a lista de lotes do SKU quando BatchResponse=1. No fluxo entre armazéns retorna sempre a lista de lotes do SKU.
Falha de validação. Possíveis mensagens:
[BadRequest] - Quantidade precisa ser maior que zero—Quantityausente ou zero.[BadRequest] - SKU não existe—IDSkuinválido, de outra conta, inativo, ou item cujo tipo não é Sku, Matéria-prima ou Uso e consumo.[BadRequest] - Item não é do tipo SKU, matéria prima ou insumo— o tipo do item não é Sku, Matéria-prima ou Uso e consumo.[BadRequest] - Lote origem não existe—IDBatchFrominválido.[BadRequest] - Lote destino não existe—IDBatchToinválido.[BadRequest] - Endereço destino não existe—IDStockKeepingUnitLocationToinválido.[BadRequest] - Armazém origem não existe/[BadRequest] - Armazém destino não existe— armazém inválido ou de outra empresa.[BadRequest] - Centro de distribuição de origem diferente do destino— armazéns/endereços em CDs diferentes.[BadRequest] - Item possui lotes divergentes no endereço de destino e não pode ser transferido— bloqueio quandoAllowSameItemDifferentBatchSameLocationestá inativo.[BadRequest] - Quantidade total insuficiente para transferencia: Origem: X Transferência: Y— saldo insuficiente (libere comAllowNegativeBalanceTransferouIgnoreBalance=1).[BadRequest] - Quantidade insuficiente para transferência— não há lote disponível para consumir no armazém de origem.
Erro interno.