01. DADOS GERAIS
Produto: | TOTVS CRM Automação da Força de Vendas |
---|
Linha de Produto: | |
---|
ERPs impactados: | Protheus, Datasul e ERPs terceiros |
---|
Módulo: | Vendas |
---|
Função: | Itens de pedido |
---|
Ticket: |
|
---|
Requisito/Story/Issue: | |
---|
03. ESCOPO TÉCNICO
1. Criação de campos em banco de dados
O sistema deverá, via opção 3 do tools, criar a tabela wsconfigpedcampovinculo, com os seguintes campos:
2. Tela de configuração de "Operações condicionais"
- Na tela de Configuração > Configuração Pedido > Produto, deverá existir um botão com label "Operações condicionais", com ícone definido pelo link: https://www.flaticon.com/free-icon/rules_9798461?term=rules&page=1&position=14&origin=search&related_id=9798461
- Quando clicado, o sistema abrirá uma nova tela, com título "Operações condicionais - ${Código do campo selecionado na tela anterior}"
- Essa tela conterá 3 abas:
- Visualização
- A tela de visualização será implementada no futuro. Por hora, o sistema pode exibir mensagem: "A visualização condicional de campos ainda não está implementada"
- Edição
- A aba deverá exibir elemento de pesquisa rápida.
- A aba deverá exibir grid, com os seguintes campos:
- Profissional
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idusuario
- Cliente
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idparceiro
- Local
- Trazer todos os ativos vinculados ao parceiro selecionado.
- Se não houver parceiro selecionado, trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idlocal
- Local cobrança
- Trazer todos os ativos vinculados ao parceiro selecionado.
- Se não houver parceiro selecionado, trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idlocalcobranca
- Região
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idregiao
- Cidade
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idcidade
- Unidade federativa
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idunidadefederativa
- Filial
- Trazer todos os ativos
- Trazer todos os locais do tipo UEM
- Persistir em wsconfigpedcampovinculo.idfilial
- Condição de pagamento
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idcondicaopagamento
- Grupo de parceiro
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idgrupoparceiro
- Segmento
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idsegmento
- Tipologia
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idtipologia
- Tipo de pedido - Cabeçalho
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idtipopedido_cab
- Tipo de pedido - Item
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idtipopedido_item
- Tipo de cobrança
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idtipocobranca
- Tabela de preço - Cabeçalho
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idtabelapreco_cab
- Tabela de preço - Item
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idtabelapreco_item
- Moeda
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idindexador
- Agrupador
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idwsconfigpedidoagrupador
- Operação
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idoperacao
- Tipo estoque - Cabeçalho
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idtipoestoque_cab
- Tipo estoque - Item
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idtipoestoque_item
- Safra - Cabeçalho
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idsafra_cab
- Safra - Item
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idsafra_item
- Cultura - Cabeçalho
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idcultura_cab
- Cultura - Item
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idcultura_item
- Tipo desconto
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idtipodesconto
- Controle Flex
- Trazer todos os ativos
- Persistir em wsconfigpedcampovinculo.idcontroleflex
- A aba deverá possuir coluna de label "Diferente de": check-box com valores de tela Sim/Não
- Persistir em wsconfigpedcampovinculo.idndiferente
- Ao gravar um registro nessa grid, o sistema deverá persistir o campo wsconfigpedcampovinculo.contexto como 'EDI'
3. Edição condicional de campos no pedido
- Na tela de pedidos, ao realizar a tentativa de edição de um campo (onBeforeEditCell)
- Para cada item do carrinho, o sistema deverá consultar na tabela wsconfigpedcampovinculo, passando os campos selecionados no pedido como critérios de filtro, para verificar a existência de regras condicionais de obrigatoriedade.
// Conjunto de registros com regra de igualdade
select idwsconfigpedidocampo from wsconfigpedcampovinculo where
contexto='EDI'
AND idndiferente = 0
AND (idusuario = ? or idusuario is null)
AND (idparceiro = ? or idparceiro is null)
AND (idlocal = ? or idlocal is null)
AND (idlocalcobranca = ? or idlocalcobranca is null)
AND (idregiao = ? or idregiao is null) // select idregiao from localregiao where idlocal = ?
AND (idcidade = ? or idcidade is null) // select idcidade from local where idlocal = ?
AND (idunidadefederativa = ? or idunidadefederativa is null) // select idunidadefederativa from cidade where idcidade = (select idcidad select e from local where idlocal = ?)
AND (idfilial = ? or idfilial is null)
AND (idcondicaopagamento = ? or idcondicaopagamento is null)
AND (idgrupoparceiro = ? or idgrupoparceiro is null)
AND (idsegmento = ? or idsegmento is null)
AND (idtipologia = ? or idtipologia is null)
AND (idtipopedido_cab = ? or idtipopedido_cab is null) // tipopedido selecionado no cabeçalho
AND (idtipopedido_item = ? or idtipopedido_item is null) // tipopedido selecionado no item
AND (idtipocobranca = ? or idtipocobranca is null)
AND (idtabelapreco_cab = ? or idtabelapreco_cab is null) // tabelapreco selecionado no cabeçalho
AND (idtabelapreco_item = ? or idtabelapreco_item is null) // tabelapreco selecionado no cabeçalho
AND (idindexador = ? or idindexador is null)
AND (idwsconfigpedidoagrupador = ? or idwsconfigpedidoagrupador is null)
AND (idoperacao = ? or idoperacao is null)
AND (idtipoestoque_cab = ? or idtipoestoque_cab is null) // tipoestoque selecionado no cabeçalho
AND (idtipoestoque_item = ? or idtipoestoque_item is null) // tipoestoque selecionado no cabeçalho
AND (idsafra_cab = ? or idsafra_cab is null) // safra selecionado no cabeçalho
AND (idsafra_item = ? or idsafra_item is null) // safra selecionado no cabeçalho
AND (idcultura_cab = ? or idcultura_cab is null) // cultura selecionado no cabeçalho
AND (idcultura_item = ? or idcultura_item is null) // cultura selecionado no cabeçalho
AND (idtipodesconto = ? or idtipodesconto is null)
AND (idcontroleflex = ? or idcontroleflex is null)
// Conjunto de registros com regra de DIFERENÇA
UNION
select idwsconfigpedidocampo from wsconfigpedcampovinculo where
contexto='EDI'
AND idndiferente = 1
AND (idusuario <> ? or idusuario is null)
AND (idparceiro <> ? or idparceiro is null)
AND (idlocal <> ? or idlocal is null)
AND (idlocalcobranca <> ? or idlocalcobranca is null)
AND (idregiao <> ? or idregiao is null) // select idregiao from localregiao where idlocal <> ?
AND (idcidade <> ? or idcidade is null) // select idcidade from local where idlocal <> ?
AND (idunidadefederativa <> ? or idunidadefederativa is null) // select idunidadefederativa from cidade where idcidade <> (select idcidad select e from local where idlocal <> ?)
AND (idfilial <> ? or idfilial is null)
AND (idcondicaopagamento <> ? or idcondicaopagamento is null)
AND (idgrupoparceiro <> ? or idgrupoparceiro is null)
AND (idsegmento <> ? or idsegmento is null)
AND (idtipologia <> ? or idtipologia is null)
AND (idtipopedido_cab <> ? or idtipopedido_cab is null) // tipopedido selecionado no cabeçalho
AND (idtipopedido_item <> ? or idtipopedido_item is null) // tipopedido selecionado no item
AND (idtipocobranca <> ? or idtipocobranca is null)
AND (idtabelapreco_cab <> ? or idtabelapreco_cab is null) // tabelapreco selecionado no cabeçalho
AND (idtabelapreco_item <> ? or idtabelapreco_item is null) // tabelapreco selecionado no cabeçalho
AND (idindexador <> ? or idindexador is null)
AND (idwsconfigpedidoagrupador <> ? or idwsconfigpedidoagrupador is null)
AND (idoperacao <> ? or idoperacao is null)
AND (idtipoestoque_cab <> ? or idtipoestoque_cab is null) // tipoestoque selecionado no cabeçalho
AND (idtipoestoque_item <> ? or idtipoestoque_item is null) // tipoestoque selecionado no cabeçalho
AND (idsafra_cab <> ? or idsafra_cab is null) // safra selecionado no cabeçalho
AND (idsafra_item <> ? or idsafra_item is null) // safra selecionado no cabeçalho
AND (idcultura_cab <> ? or idcultura_cab is null) // cultura selecionado no cabeçalho
AND (idcultura_item <> ? or idcultura_item is null) // cultura selecionado no cabeçalho
AND (idtipodesconto <> ? or idtipodesconto is null)
AND (idcontroleflex <> ? or idcontroleflex is null)
- Se houverem registros retornados, o sistema deverá permitir a edição do campo clicado (idwsconfigpedidocampo) do item em questão.
- Na tela de pedidos, na alteração de campos relacionados com a tabela wsconfigpedidocampo,
- O sistema deverá refazer a busca de edição condicional,
- Caso o sistema encontre campos do item (wsconfigpedidocampo) que já tiveram seu valor alterado (valor de tela <> valor do cache)
- O sistema deverá exibir a seguinte mensagem de confirmação:
"O seguintes campos já não são mais editáveis e terão seus valores retornados para os valores padrão:
${Label do campo 1},
${Label do campo 2}
...
Deseja prosseguir?
"
Opções Sim/não - Caso seja clicada a opção "Sim"
- O sistema deverá retornar os valores dos campos que não são mais editáveis para o valor do cache.
- Caso contrário, o sistema executará um rollback e a alteração do campo não será efetivada.