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:
- Estoque entra —
UPDATE StockKeepingUnitMovement SET IDStatusSku = 1 WHERE IDPurchase = ?. ComUseReceiptDataAsMovementDate=1, também atualizaRecordTimestamp = NOW(). - Recebimento finalizado —
IDStatusPurchase = 1,InvoiceFinishTimestamp = NOW(),InvoiceFinishUser = <usuário>. - Custo médio do SKU recalculado em
StockKeepingUnit.CostAverage / CostLastPurchase(a menos queUseCostFromCostSet=1). - Pedido de compra muda para
IDStatusBuyOrder = 5(Recebido) ou6(Parcial — se?PartialBuyOrder=1). - Contas a pagar ativadas —
AccountsPayableReceivable.IDStatusAccountPayableReceivable: 4 → 0(estado 'não lançado' → 'aberto'). - Números de série liberados —
StockKeepingUnitSerialNumber.IDTypeStatusSkuSerialNumber = 1. - E-mail SES enviado para a lista de
PurchaseFinishEmailcom HTML listando código, produto, quantidade, armazém. - Webhook SQS (
webhook.fifo) — uma mensagem por item, topicSkuBalancePurchaseReceipt. - Pedidos sem estoque reabertos — pedidos em
IDStatusOrder IN (11, 12, 24, 25)revisados, voltam para1(Fechado) quando o saldo cobre a falta (apenas comChangeNoBalanceOrderStatusAfterReceipt=1). - Pedido de devolução criado — quando
?CreateReturnOrder=1e há divergências para menos, criaOrderscom tipo de devolução e o fornecedor como cliente. - Recálculo de cardex retroativo —
RecordTimestampdo 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
- 200
- 400
- 404
Detalhe do recebimento finalizado.
Mensagens [BadRequest]:
Centro de distribuição não possui armazém de divergência cadastradoNenhum SKU pode ter quantidade menor ou igual a zero, verifique antes de finalizar<msg composta>com itens não enviados / a menor / a maior / não existe no recebimentoArmazém (IDStockKeepingUnitWarehouse) X não encontradoEndereço SKU X não encontradoLote (IDBatchNumber) X não encontrado para o sku: YDatas de fabricação e validade precisam ser preenchidas para o SKU: XPreencha a data de validade, obrigatória para o SKU XPreencha o lote, obrigatório para o SKU XSKU X vence em N dias e mínimo dias necessários são M dias(comMinimumDaysBestBeforePurchase)Data de fabricação maior que data de validade para o SKU X
[NotFound] - Recebimento não encontrado.