Pular para o conteúdo principal

Roda uma simulação de frete

POST 

/carrier/quotation

Roda uma cotação para o CEP destino + lista de volumes/produtos. Handler PHP.

Validações iniciais (BusinessException → 400):

  • ShippingPostalCode precisa estar preenchido.
  • Pelo menos 1 item em Quotations com Weight > 0.
  • CEP precisa existir na base de CEPs (caso contrário grava erro tipo 3 em CarrierQuotationError).

Lógica:

  • Peso total = soma dos Weight de cada item.
  • Largura total = soma dos Width.
  • Altura e comprimento totais = máximo entre os itens.
  • Para cada transportadora ativa de leilão de frete (Suppliers.CarrierAuction = 1):
    • Calcula cubagem usando CarrierCubageKmM (padrão 167) e compara com CarrierCubageFreeWeight para definir WeightSelected (peso real ou cubado).
    • Busca a faixa de CEP em CarrierScope; se não atende, marca Attended=0.
    • Busca preço em CarrierRate por RateType + WeightFrom/WeightTo; quando o peso excede a maior faixa e existe entrada com WeightTo=-1, extrapola linearmente.
    • Soma componentes do frete (rate, gris, advalorem, pedágio, taxas de difícil acesso, despacho, etc.) → subtotal.
    • Aplica ICMS interestadual (se origem e destino diferem de estado e transportadora não tem CarrierICMSIncluded).
    • Aplica CarrierAuctionPenalty da transportadora e regras de Regras Simulação Frete (adição de dias e/ou valor).
  • Persiste cabeçalho em CarrierQuotation e linhas em CarrierQuotationRate.

Devolve um array com 1 item: o detalhe da simulação criada (mesmo formato do GET por id).

Request

Responses

Simulação criada.