Tabela de conteúdos
PUT - Alteração de Itens do Orçamento
Este método altera um ou mais itens de um orçamento de venda já cadastrado: quantidade, preço, desconto, política de desconto, comissão, prazo de entrega e observação. O comportamento é o mesmo da alteração de item na Manutenção de Pedidos de Vendas (PRX125915) em modo orçamento, e o orçamento tem desconto geral, impostos e valor total recalculados na mesma gravação.
api/OrcamentoVenda/{numero}/itens/alteracao
Exemplo URL
<IP do Serviço>:<Porta liberada para o serviço>/api/OrcamentoVenda/123456/itens/alteracao?CodigoEstabelecimento=1
Parâmetros URL
- {numero} (*) - Número do orçamento cujos itens serão alterados.
- CodigoEstabelecimento - (Opcional) Estabelecimento ao qual pertence o orçamento. Quando não informado, é usado o estabelecimento da conexão do serviço.
Parâmetros do Header
| auth | Token adquirido no Login. |
Exemplo de Body
{
"itens": [
{
"codigoProduto": 1001,
"sequencia": 1,
"quantidade": 3,
"precoUnitario": 20
},
{
"codigoProduto": 1002,
"sequencia": 2,
"percentualDesconto": 10,
"codigosPoliticaDesconto": [19]
}
]
}
Explicação dos campos do Body
Campos com (*) são obrigatórios:
- itens (*) → Lista → Itens que serão alterados. Precisa ter ao menos um item, sem repetir o mesmo produto com a mesma sequência.
- codigoProduto (*) → Long → Código do produto do item.
- sequencia (*) → Inteiro → Sequência do item no orçamento. Junto com o produto, identifica o item, inclusive quando o mesmo produto aparece em mais de uma linha.
- quantidade → Decimal → Nova quantidade. Quando informada, deve ser maior que zero.
- precoUnitario → Decimal → Novo preço unitário, antes da política de desconto. Não pode ser negativo.
- percentualDesconto → Decimal → Novo percentual de desconto do item, entre 0 e 100.
- codigosPoliticaDesconto → Lista de Inteiros → Códigos da política de desconto de vendas do item (veja a tabela abaixo). Todos precisam existir e estar ativos.
- percentualComissao → Decimal → Novo percentual de comissão do item.
- prazoEntrega → Date → Nova data de entrega do item, no formato “YYYY-MM-DD”.
- observacao → String → Nova observação do item.
Os campos sem (*) são opcionais: o campo não informado mantém o valor atual do item, e pelo menos um deles deve vir em cada item. A alteração não troca o produto: para isso, exclua o item pela exclusão de itens e inclua o novo pela inclusão de itens.
A política de desconto tem três situações:
| Valor de codigosPoliticaDesconto | Efeito |
|---|---|
| Campo ausente | Mantém a política atual do item. |
Lista vazia [] | Remove a política do item. |
| Lista preenchida | Substitui a política atual pelos códigos informados. |
Ao mudar o preço ou a política, os descontos da política são reaplicados em cascata sobre o preço informado ou, quando o preço não vem, sobre o preço do item antes da política atual.
Como funciona a alteração
► Conferência do orçamento
Antes de alterar, o método confere que o orçamento:
- existe e ainda está na situação de orçamento;
- não é um Orçamento de Itens Sob Projeto (esses são mantidos pelo PRX123915);
- ainda não gerou pedido de venda nem virou pedido;
- está em uma etapa que permite a rotina de Manutenção de Orçamentos e Pedidos, quando a empresa usa controle de etapas;
- não está aberto no ERP por outro usuário.
► Localização dos itens
Cada item é procurado no orçamento pelo produto e sequência. O item que não é encontrado é ignorado, e o retorno avisa que ele não foi alterado; os demais seguem. Se nenhum dos itens enviados for encontrado, nada é gravado.
► Conferência de cada item alterado
- A quantidade precisa ficar maior que zero, e o desconto, entre 0% e 100%.
- Quando o parâmetro PRX125915-VALIDA-ITEM-TBPRECO está ativo, o produto precisa ter preço vigente na tabela de preços do item.
- O preço unitário já com o desconto do item não pode ficar abaixo do preço mínimo da tabela, salvo com o parâmetro PERM-VLR-TOT-MENOR-PRECO-MIN ativo.
- Com o parâmetro PV-USA-LIMITE-DESC ativo, o desconto respeita o limite de desconto configurado.
► Gravação
Se qualquer item encontrado for recusado, nenhuma alteração é gravada. Com todos aceitos, o ERP:
- recalcula o valor do desconto do item quando mudam quantidade, preço, desconto ou política;
- recalcula o desconto geral do orçamento: com o parâmetro DEFINE-PCT-BASE-VALOR-DESCONTO ativo, mantém o valor do desconto e recalcula o percentual; desativado, mantém o percentual e recalcula o valor;
- recalcula IPI, ICMS-ST e os tributos da reforma (CBS, IBS e IS) dos itens, e o valor total do orçamento, com a mesma fórmula da tela;
- recalcula as parcelas pela condição de pagamento somente com os parâmetros PV-UTIL-COND-PERS e PRX125915-SEMPRE-GRAVA-PEDVP ativos, preservando as parcelas de antecipação; sem eles, as parcelas existentes não mudam;
- renumera as sequências dos itens de 1 em diante;
- registra no histórico do orçamento o que mudou em cada item (por exemplo, “quantidade de 2 para 3”).
A situação, a aprovação e a revisão do orçamento continuam as mesmas.
Exemplos de Retorno
Sucesso
O retorno traz em dados uma mensagem por item enviado, dizendo se ele foi alterado ou se não foi encontrado:
{
"bemSucedido": true,
"mensagemFalha": null,
"novoCodigo": null,
"dados": [
{ "descricao": "Produto 1001 da sequência 1 alterado.", ... },
{ "descricao": "Produto 1002 da sequência 7 não foi encontrado no orçamento e não foi alterado.", ... }
]
}
Falha no formato da requisição
Lista de itens vazia, produto ou sequência não informados, item sem nenhum campo para alterar, item repetido, quantidade zero, desconto fora da faixa de 0 a 100 ou preço negativo recusam a requisição (HTTP 400) antes de qualquer consulta ao orçamento. O motivo de cada campo vem em dados:
{
"bemSucedido": false,
"mensagemFalha": "Algumas validações para a alteração de itens no orçamento não foram bem-sucedidas. Consulte os detalhes para mais informações.",
"novoCodigo": null,
"dados": [ ... ]
}
Falha na conferência do orçamento ou dos itens
A recusa também volta com HTTP 400 e bemSucedido igual a false, com uma mensagem por problema em dados. As mais comuns:
| Mensagem | O que fazer |
|---|---|
| Alteração não realizada: nenhum dos itens enviados foi encontrado no orçamento com o produto e a sequência informados. | Consulte o orçamento e envie as sequências atuais. |
| Orçamento não encontrado. | Confira o número e o estabelecimento informados. |
| O registro {numero} não é um orçamento. | O número é de um pedido de venda; a rota vale só para orçamento. |
| Este orçamento já gerou o pedido {pedido}. Não poderá ser alterado! | Faça a mudança no pedido gerado. |
| Orçamento {numero} encontra-se na etapa '…', que não permite alterações na rotina de … | Mude a etapa do orçamento ou libere a rotina na etapa. |
| Orçamento em uso por outro usuário: {usuário}. | Peça ao usuário para fechar o orçamento no ERP e envie de novo. |
| Sequência {n} (produto {código}): O preço unitário com desconto (…) é menor que o preço mínimo (…) cadastrado na tabela de preços {tabela}. | Ajuste o preço ou o desconto do item. |
| Política de desconto informada nos itens do orçamento é inexistente ou inativa. | Confira os códigos de codigosPoliticaDesconto. |
| Estabelecimento não encontrado. | Confira o CodigoEstabelecimento da URL. |