Pular para o conteúdo principal

Altera status do pedido

PUT 

/orders/:idorder/status

Move o pedido de um status para outro, respeitando as transições configuradas em TypeStatusOrderRule para a empresa. Usado pelo botão Cancelar da tela Outbound com IDOrderStatusTo=90, mas serve a todas as transições disparadas pelas telas de operação (Pedidos, Picking-List, Romaneio, Tracking, etc.).

Fluxo do handler (orderStatusPut, Node):

  1. Localiza o pedido pelo IDOrder da rota + AccountName do contexto (Company.AccountName = prefix).
  2. IDStatusOrder atual + IDCarrierType, IDStatusInvoice da NF principal, IDOrdersCarrierCollectionList, IDPickingList.
  3. Consulta TypeStatusOrderRule (transições permitidas saindo do status atual) e valida que IDOrderStatusTo está na lista. Se não estiver, retorna [BadRequest] - Status não permite alteração.
  4. Aplica validações específicas do status destino (cada IDOrderStatusTo tem o seu case). Os casos mais relevantes:
    • 0 Aberto — reverte para Aberto. Quando a NF principal está em status IN (2, 3, 4, 5, 7, 8) (Enviada/Emitida/Processando/Pendente conciliação EPEC/Cancelada/Denegada) e a parametrização AllowOpenOrderInvoiced != 1, bloqueia com [BadRequest] - Desvincular nota fiscal antes de alterar status. Reseta BalanceChange em movimentos e Budget=0 quando o status origem está em margem/crédito.
    • 1 Fechado — só permitido a partir de 11 (Falta produto) ou 93 (Em produção).
    • 90 Cancelado (botão da tela Outbound) — bloqueia quando Orders.IDOrdersCarrierCollectionList > 0 ([BadRequest] - Pedido esta em romaneio X, retirar antes de mudar status) ou Orders.IDPickingList > 0 ([BadRequest] - Pedido esta na Picking List X, retirar antes de mudar status). Caso liberado: zera BalanceChange dos movimentos, deleta Packages, ajusta AccountsPayableReceivable (status 4 Cancelado quando ainda em aberto; mantém status quando pago; cria contra-lançamento em AccountsPayableReceivableBankStatement quando pagamento foi em dinheiro / TypePayment.Category=7), zera PickingBasket/IDOrdersCarrierCollectionList/IDPickingList no pedido e atualiza IDStatusOrder=90.
    • 91 Extraviado, 92 Extraviado parcialmente, 94 Devolvido, 95 Em devolução, 97 Reversa finalizada — disponíveis para transições típicas do pós-envio. Bloqueio depende da regra cadastrada em TypeStatusOrderRule.
  5. Grava um evento em OrderEvents (IDEvent=35 para Aberto, 19 para Cancelado, etc.) com RecordUserCreated e StatusDate.

Validações de body comuns:

  • IDOrderStatusTo precisa estar na lista de transições permitidas a partir do status atual.
  • Quando o TypeStatusOrder.CommentsRequired=1 para o destino e StatusComment está vazio, retorna [BadRequest] - Comentário precisa ser preenchido.
  • StatusDate não pode ser mais de 5 min no futuro ([BadRequest] - Data Evento não pode ser superior a data atual).

Request

Responses

Transição aplicada. Body de resposta é a string literal "sucesso".