Pular para o conteúdo principal

Finaliza (ou rascunha) o packing de um pedido

POST 

/fulfillment/packing/order/:idorder

Coração do fluxo de packing. Dois modos:

Modo Rascunho (Draft=1): apenas grava o body no Redis sob a chave PickingList:<IDPickingList> (TTL 4 dias). Não toca em banco. Retorna "sucesso". É chamado a cada bipagem pelo frontend para preservar o progresso do operador.

Modo Final (sem Draft): processa o packing completo:

  1. Conferência: compara Items enviados com StockKeepingUnitMovement do pedido. Em caso de divergência, falha com mensagem detalhada (itens não enviados / a maior / a menor). Aceita divergência apenas quando PartialInvoice=1 (com privilégio + parametrização habilitada).
  2. Faturamento parcial: quando há differenceSentLessQty, ajusta StockKeepingUnitMovement proporcionalmente, recalcula PriceSellingTotal e reescala AccountsPayableReceivable.Value. Se AutomaticTransferPartialInvoiceWarehousePacking configurado, transfere itens removidos para o endereço de Quarentena.
  3. Validação de série: para SKUs com SerialNumber=1, valida e amarra cada serial via StockKeepingUnitSerialNumber.
  4. Reconciliação de volumes: cria/apaga linhas em Packages para bater com QuantityPackages; salva dimensões dos volumes vindas em Volumes[].
  5. Embalagens: para cada item em Packages[], insere a linha via worker PHP /order/sku/orderskupost.php (com PriceSelling=0).
  6. NF-e: invoca worker PHP /nfe/invoice.php para emissão (a menos que NoInvoice=1).
  7. Transição de status: com transportadora + romaneio habilitado → status 6 + adiciona ao romaneio aberto. Com SetShippedAfterPacking=1 ou IDOrderStatusTo → invoca lambda orderStatusPut (geralmente para 7 Enviado). Caso contrário → status 22 (Aguardando romaneio).
  8. Picking-list status: marca como 5 (Concluído) quando todos os pedidos terminaram, ou 4 (Em packing) caso contrário.

Dispara debounce de 3 s via Redis (md5 do body) para evitar disparo duplicado pelo operador.

Retorna o detalhe do pedido (invocação de OrderGet).

Request

Responses

Em modo Rascunho: literal "sucesso". Em modo Final: detalhe do pedido (resultado de OrderGet).