A melhoria "Prazo de Entrega (Lead Time)" permite aos usuários definir um prazo de entrega padrão para os pedidos, automatizando a sugestão da Data de Entrega. Esta atualização visa melhorar a precisão no planejamento e na comunicação com os clientes, assegurando que as expectativas de entrega sejam realistas e bem gerenciadas.
    OBJETIVO
Com essa implementação, ao criar um pedido, a Data de Entrega é preenchida automaticamente com base no prazo padrão definido, mas com a flexibilidade de ajuste manual pelo usuário. Isso otimiza o processo de vendas, proporcionando uma visão clara do tempo necessário para a entrega dos produtos ou serviços.
  DETALHES FUNCIONAIS
Funções
Cadastro de Prazos de Entrega: Configuração de prazos com base em critérios como cliente, cidades, UF, filiais e segmentos.
Data de Entrega Automática: Em novos pedidos, a data de entrega é sugerida automaticamente conforme os prazos cadastrados.
Edição Flexível da Data: Usuários podem ajustar manualmente a data de entrega, respeitando o prazo mínimo.
Validação de Prazos: Restrições para garantir que a data de entrega não seja inferior ao prazo mínimo estabelecido.
  COMO USAR?
Passo a Passo
Defina o prazo padrão de entrega nas configurações do TOTVS CRM.
Ao criar um pedido, a Data de Entrega será calculada automaticamente.
Se desejar, ajuste manualmente a Data de Entrega no pedido.
 EXEMPLO PRÁTICO
Desafio Antigo:
Antes da atualização, no processo de realização de pedidos, a definição da data de entrega dependia exclusivamente do preenchimento manual do usuário, que apenas estabelecia a data mínima e máxima.
Solução Atualizada:
o sistema agora calcula automaticamente a data de entrega do pedido, baseando-se em um prazo padrão predefinido e outros critérios específicos como cliente, cidades e UF de origem e destino. Essa mudança assegura uma estimativa mais precisa e realista para as datas de entrega, otimizando a logística e melhorando o planejamento e a satisfação do cliente.
  DETALHES TÉCNICOS
Banco de dados
Pelo tools, opção 3, o sistema deve adicionar as seguintes colunas na tabela prazoentrega:
idparceiro: FK (Foreign Key) para tabela parceiro, nullable.
Pelo tools, opção 3, na tabela prazoentrega, o sistema deve tornar a coluna idlocalfilial nullable.
Telas de cadastro
Abaixo do menu Configuração > Configuração Pedido, o sistema deverá receber nova tela de cadastro, de nome "Prazo Entrega".
A nova tela conterá grid contendo as seguintes colunas:
"Cliente": campo seleção, cujas opções selecionáveis são os parceiros ativos do sistema. Persistência no campo prazoentrega.idparceiro.
"Cidade Origem": campo seleção, cujas opções selecionáveis são as cidades ativas do sistema. Caso selecionada alguma opção no campo "UF Origem", o sistema deverá filtrar as seleções do presente campo segundo a consulta:
/* select idcidade, descricao from cidade where idunidadefederativa = "ID da UF Origem selecionada" and idnativo = 1 */
Persistência no campo prazoentrega.idcidadeorigem.
"Cidade Destino": campo seleção. Caso selecionada alguma opção no campo "UF Destino", o sistema deverá filtrar as seleções do presente campo segundo a consulta:
/* select idcidade, descricao from cidade where idunidadefederativa = "ID da UF Destino selecionada" and idnativo = 1 */
Persistência no campo prazoentrega.idcidadedestino.
"UF Origem": campo seleção, cujas opções selecionáveis são as unidades federativas ativas do sistema. Caso selecionada alguma opção no campo "Cidade Origem", o sistema deverá filtrar as seleções do presente campo segundo a consulta: div style="background-color: #2d2d2d; padding: 10px; border-radius: 5px;">
/* select uf.idunidadefederativa, uf.descricao from cidade c inner join unidadefederativa uf on uf.idunidadefederativa = c.idunidadefederativa where c.idcidade = "ID da Cidade Origem selecionada" and uf.idnativo = 1 */
Persistência no campo prazoentrega.idunidadefedorigem.
"UF Destino": campo seleção. Caso selecionada alguma opção no campo "Cidade Destino", o sistema deverá filtrar as seleções do presente campo segundo a consulta:
/* select uf.idunidadefederativa, uf.descricao from cidade c inner join unidadefederativa uf on uf.idunidadefederativa = c.idunidadefederativa where c.idcidade = "ID da Cidade Destino selecionada" and uf.idnativo = 1 */
Persistência no campo prazoentrega.idunidadefeddestino.
"Filial": campo seleção, cujas opções selecionáveis são as filiais ativas do sistema, segundo a consulta:
/* select l.idlocal from local l inner join localtipolocal ltl on ltl.idlocal = l.idlocal inner join tipolocal tl on tl.idtipolocal = ltl.idtipolocal where tl.sgltipolocal = "UEM" */
Persistência no campo prazoentrega.idlocalfilial.
"Segmento": campo seleção, cujas opções selecionáveis são os segmentos ativos do sistema. Persistência no campo prazoentrega.idsegmento.
"Dias para entrega": Campo numérico editável, aceitando valores inteiros positivos. Persistência no campo prazoentrega.prazo.
"Tipo Prazo": campo drop-down, com as seguintes opções fixas: "Dias corridos" (valor "DIASCORR") e "Dias úteis" (valor "DIASUTEIS"). Persistência no campo prazoentrega.sgltipoprazo.
Persistir o campo prazoentrega.sgltipoentrega como "ENT" de maneira fixa.
Configuração de busca
Na tela Configuração > Configuração Pedido > Busca entrega, o sistema abrirá para configuração os ícones de níveis e filtros gerais.
A tabela de origem da busca será a tabela prazoentrega, focando nos registros marcados como "ENT" no campo prazoentrega.sgltipoentrega.
Na última tela (Filtros), as opções no campo "Nome" incluem:
PARCEIRO_IDPARCEIRO: Parceiro selecionado no pedido. Texto de ajuda:
-- Parceiro selecionado no pedido where prazoentrega.idparceiro = ${Identificador do parceiro selecionado no pedido}
CIDADEORIGEM_IDCIDADE: Cidade da filial de venda selecionada no pedido. Texto de ajuda:
-- Cidade da filial de venda selecionada no pedido where prazoentrega.idcidadeorigem = (select idcidade from local where idlocal = ${Identificador da filial selecionada no pedido})
CIDADEDESTINO_IDCIDADE: Cidade do local do cliente selecionado no pedido. Texto de ajuda:
-- Cidade do local do cliente selecionado no pedido where prazoentrega.idcidadedestino = (select idcidade from local where idlocal = ${Identificador do local selecionado no pedido})
UFORIGEM_IDUNIDADEFEDERATIVA: Unidade federativa da cidade da filial de venda selecionada no pedido. Texto de ajuda:
-- Unidade federativa da cidade da filial de venda selecionada no pedido where prazoentrega.idunidadefedorigem = (select idunidadefederativa from cidade where idcidade = (select idcidade from local where idlocal = ${Identificador da filial selecionada no pedido}))
UFDESTINO_IDUNIDADEFEDERATIVA: Unidade federativa da cidade do local selecionado no pedido. Texto de ajuda:
-- Unidade federativa da cidade do local selecionado no pedido where prazoentrega.idunidadefeddestino = (select idunidadefederativa from cidade where idcidade = (select idcidade from local where idlocal = ${Identificador do local selecionado no pedido}))
FILIAL_IDLOCAL: Filial de venda selecionada no pedido. Texto de ajuda:
-- Filial de venda selecionada no pedido where prazoentrega.idlocalfilial = ${Identificador da filial selecionada no pedido}
SEGMENTO_IDSEGMENTO: Segmento selecionado no pedido. Texto de ajuda:
-- Segmento selecionado no pedido where prazoentrega.idsegmento = ${Identificador do segmento selecionado no pedido}
Os textos de ajuda (Tooltip) serão mostrados ao passar o mouse sobre os registros, e o sistema deve colorir a linha com a cor #ffe096 ao exibir o tooltip.
Implementação no pedido
No pedido de venda, no campo "Data entrega", o sistema deverá preencher automaticamente o campo com base na busca definida pela configuração do ponto 3, adicionando o prazo de entrega resultante da consulta à data atual (current_date + prazoentrega.prazo).
Se sgltipoprazo = 'DIASCORR', adicionar o prazo do campo prazoentrega.prazo à data corrente, sem desconsiderar finais de semanas e feriados. div style="background-color: #2d2d2d; padding: 10px; border-radius: 5px;">
(CURRENT_DATE + {prazoentrega.prazo})
Se sgltipoprazo = 'DIASUTEIS', adicionar o prazo do campo prazoentrega.prazo à data corrente, desconsiderando finais de semanas e feriados. div style="background-color: #2d2d2d; padding: 10px; border-radius: 5px;">
(CURRENT_DATE + {prazoentrega.prazo} + contagem de feriados e finais de semana entre current_date e data final)
Consideração dos feriados do sistema a partir da consulta: div style="background-color: #2d2d2d; padding: 10px; border-radius: 5px;">
/* select * from datacomemorativa where idnferiado = 1 */
A entidade feriado pode ser depreciada em código-fonte.
Caso o usuário edite o campo manualmente, validar que a data seja maior ou igual à data definida pela consulta acima.
Se a data for maior ou igual, permitir a finalização do pedido. Se for menor, realizar Rollback com a mensagem: "A data de entrega mínima deve ser ${Data retornada pelo cálculo current_date + prazoentrega.prazo retornado pela consulta}".
PERGUNTAS FREQUENTES
question_answerÉ possível ajustar manualmente a data de entrega?
Sim. Apesar do cálculo automático, o sistema permite que o usuário ajuste a data de entrega manualmente, mantendo a flexibilidade no processo.