Pular para o conteúdo principal

Finaliza o recebimento (entra estoque + side effects)

POST 

/purchase/:idpurchase/receipt

Coração do recebimento — endpoint mais complexo do módulo. Encerra o ciclo, entra estoque e dispara cadeia de efeitos:

  1. Estoque entraUPDATE StockKeepingUnitMovement SET IDStatusSku = 1 WHERE IDPurchase = ?. Com UseReceiptDataAsMovementDate=1, também atualiza RecordTimestamp = NOW().
  2. Recebimento finalizadoIDStatusPurchase = 1, InvoiceFinishTimestamp = NOW(), InvoiceFinishUser = <usuário>.
  3. Custo médio do SKU recalculado em StockKeepingUnit.CostAverage / CostLastPurchase (a menos que UseCostFromCostSet=1).
  4. Pedido de compra muda para IDStatusBuyOrder = 5 (Recebido) ou 6 (Parcial — se ?PartialBuyOrder=1).
  5. Contas a pagar ativadas — AccountsPayableReceivable.IDStatusAccountPayableReceivable: 4 → 0 (estado 'não lançado' → 'aberto').
  6. Números de série liberados — StockKeepingUnitSerialNumber.IDTypeStatusSkuSerialNumber = 1.
  7. E-mail SES enviado para a lista de PurchaseFinishEmail com HTML listando código, produto, quantidade, armazém.
  8. Webhook SQS (webhook.fifo) — uma mensagem por item, topic SkuBalancePurchaseReceipt.
  9. Pedidos sem estoque reabertos — pedidos em IDStatusOrder IN (11, 12, 24, 25) revisados, voltam para 1 (Fechado) quando o saldo cobre a falta (apenas com ChangeNoBalanceOrderStatusAfterReceipt=1).
  10. Pedido de devolução criado — quando ?CreateReturnOrder=1 e há divergências para menos, cria Orders com tipo de devolução e o fornecedor como cliente.
  11. Recálculo de cardex retroativoRecordTimestamp do movimento é retroagido 1 segundo se necessário para evitar saldo negativo em datas anteriores (ChangeInboundDate=1).

Body opcional: lista de itens efetivamente recebidos. Quando vazio, monta a partir da conferência salva. Divergências para mais vão ao armazém de divergência do CD (IDTypeStockKeepingUnitWarehouse=2).

Request

Responses

Detalhe do recebimento finalizado.