Pular para o conteúdo principal

MFA015 — Movimentação MFA015

Fonte​

  • Form: source/MFA015/UMFA015.pas
  • DataModule: source/MFA015/UdmMFA015.pas
  • DFM Form: source/MFA015/UMFA015.dfm
  • DFM DataModule: source/MFA015/UdmMFA015.dfm
  • Package: source/MFA015/MFA015.dpk

Objetivo​

Tela de manutencao dos parametros de tres integracoes externas do faturamento, organizada em tres abas independentes:

  1. Open-Net — parametros do módulo de venda externa (PARMONMS): controles de pedido/palm, bloqueio de cliente, comissao, desconto/acrescimo maximos, estoque, promocao, tipos de manutencao de cliente, visualizacao de titulos/estoque e desconto maximo geral.
  2. Scanntech — credenciais e filtros da integracao com a Scanntech (PARMSCANNTECH + filhos EMPRESASCANNTECH, PERFILSCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH). Define usuario/senha/URL do portal, intervalo de envio, intervalo de reenvio (6h/12h) e restringe o envio as empresas, perfis de produto, movimentacoes e series de NF informadas.
  3. CRM Zen — parametros do integrador CRM Zen (PARMCRMZEN + TIPOPESSOACRMZEN). Define URL/token/token de consulta, frequencia de envio em minutos, usuario e empresa responsavel, filtros "somente pessoas ativas" / "liberadas no SCPC" e os tipos de pessoa a sincronizar.

Funcionalidades​

  • Edicao direta dos registros de parametro (Novo/Salvar/Excluir/Cancelar) por aba.
  • Botao "Salvar" persiste todas as abas numa unica transacao e reabre as queries apos Commit.
  • Busca F9 em grids e campos de codigo (EMPRESA, USUARIO, PERFIL, TIPOPESSOA, MOVIMENTACAO2, SERIEAGRUPADA).
  • Exclusao do registro-mestre do CRM Zen remove em cascata todos os tipos de pessoa vinculados (C-2074).
  • Validacoes automaticas em OnValidate: confere existencia e unicidade de cada FK (empresa ativa, perfil cadastrado, movimentação existente, serie com relacao em PARMNOTA).
  • Defaults automaticos: ao inserir PARMSCANNTECH seta CD_PARMSCANNTECH=1, HR_FREQUENCIA=01:00:00 e TP_REENVIO=12; ao inserir PARMCRMZEN seta CD_CRMZEN=1, ST_PESSOASATIVAS='S' e ST_FINACLIBERADOSCPC='S'.
  • Controle de acesso: se programa.tpAcesso = 2, oculta botoes Novo/Salvar/Excluir.

Estrutura da Tela​

A tela tem barra de ferramentas lateral e PageControl com 3 abas.

Barra de ferramentas (lateral esquerda)​

  • "Novo Registro <F5>" (btnNovo)
  • "Salvar Alteracoes <F6>" (btnSalvar)
  • "Excluir Registro <F7>" (btnExcluir)
  • "Cancelar Registro <F4>" (btnLimpar)
  • "Consultar <F3>" (btnProcurar — oculto)
  • "Atualizar Registros <F2>" (btnAtualizar — oculto)
  • "Imprimir <F8>" (btnImprimir — oculto)
  • "Sair <F12>" (btnSair)

Aba "Open-Net"​

GroupBox "Parametros para Exportacao" (vinculado a PARMONMS via dsPARM):

Caption (Label)CampoTipo
Permite Alteracao futura dos PedidosST_ALTERAPEDIDOPALMCombo Sim/Nao
Bloqueia Pedidos para Clientes SuspensosST_BLOQUEIOPEDCLIENTECombo Sim/Nao
Utiliza Controle de ComissaoST_CONTROLACOMISSAOCombo Sim/Nao
Utiliza Controle de Desconto MaximoST_CONTROLADESCMAXCombo Sim/Nao
Utiliza Controle de Estoque dos ProdutosST_CONTROLAESTOQUECombo Sim/Nao
Informa Observacao nos Titulos PendentesST_CONTROLAOBSTITULOSCombo Sim/Nao
Utiliza Controle de PromocaoST_CONTROLAPROMOCAOCombo Sim/Nao
Utiliza Controle de Acrecimo Maximo nos ItensST_CTRLACRESMAXITEMCombo Sim/Nao
Utiliza Controle de Desconto Maximo nos ItensST_CTRLDESCMAXITEMCombo Sim/Nao
Permite Preco dos Itens Diretamento ou Atraves de DescontoST_INFORMADESCPRECOCombo Desconto/Preco/Ambos/Nenhum
Tipo de Controle Permitido no Cadastro de ClientesST_MANUTCLIENTECombo Inclusao/Alteracao/Consulta/Tudo
Controle de Impressao e Envio de Email dos PedidosST_PEDIDOIMPEMAILCombo Sim/Nao
Visualiza Titulos Pendentes dos ClientesST_VIZUALIZATITULOSCombo Sim/Nao
Visualiza Estoque dos ProdutosST_VIZUALIZAESTOQUECombo Sim/Nao
Desconto Maximo geral do Pedido de VendaPC_DESCONTOMAXGERALEdit numerico

Aba "Scanntech"​

GroupBox "Scanntech" (vinculado a PARMSCANNTECH):

CaptionCampoTipo
UsuarioDS_USUARIOEdit
SenhaDS_SENHAEdit
Id EmpresaCD_EMPRESAEdit
EnderecoDS_URLEdit
Intervalo envioHR_FREQUENCIADateTimePicker (hh:mm:ss)
Intervalo ReenvioTP_REENVIOCombo "6 Horas / 12 Horas"

GroupBox "Empresas" — grid EMPRESASCANNTECH (Código, Nome). F9 abre busca "EMPRESA".

GroupBox "Perfil Produtos" — grid PERFILSCANNTECH (Código, Nome). F9 abre busca "PERFIL".

GroupBox "Movimentacoes" — grid MOVIMENTACAOSCANNTECH (Código, Nome). F9 abre busca "MOVIMENTACAO2".

GroupBox "Series NF" — grid SERIESCANNTECH (Código). F9 abre busca "SERIEAGRUPADA".

Aba "CRM Zen"​

GroupBox "Dados para o Integrador" (vinculado a PARMCRMZEN):

CaptionCampoTipo
URLDS_URLEdit
TokenDS_TOKENEdit
Token ConsultaDS_TOKENCONSULTAMemo
Frequencia (em Minutos)NR_FREQUENCIAENVIOEdit numerico
UsuarioCD_USUARIO + NM_USUARIOEdit com F9
EmpresaCD_EMPRESA + NM_EMPRESAEdit com F9
Somente Pessoas AtivasST_PESSOASATIVASCheckBox (S/N)
Situacao Financeira Liberada (SCPC)ST_FINACLIBERADOSCPCCheckBox (S/N)

GroupBox "Tipo Pessoa" — grid TIPOPESSOACRMZEN (Código, Descricao). F9 abre busca "TIPOPESSOA".

Parametros que Influenciam​

As proprias tabelas editadas sao parametros consumidos por outras rotinas. Efeito de cada configuracao:

TabelaCampoEfeito
PARMONMSST_ALTERAPEDIDOPALMLibera edicao posterior de pedido importado do Open-Net (palm).
PARMONMSST_BLOQUEIOPEDCLIENTEBloqueia emissao de pedido para cliente suspenso no Open-Net.
PARMONMSST_CONTROLACOMISSAOLiga controle de comissao do vendedor nas vendas Open-Net.
PARMONMSST_CONTROLADESCMAXLiga limite de desconto por venda.
PARMONMSST_CONTROLAESTOQUELiga validacao de saldo de estoque na venda.
PARMONMSST_CONTROLAOBSTITULOSObriga informar observacao em titulos pendentes.
PARMONMSST_CONTROLAPROMOCAOLiga mecanismo de promocao de preco.
PARMONMSST_CTRLACRESMAXITEMLiga limite de acrescimo por item.
PARMONMSST_CTRLDESCMAXITEMLiga limite de desconto por item.
PARMONMSPC_DESCONTOMAXGERALPercentual maximo de desconto por pedido de venda.
PARMONMSST_INFORMADESCPRECODefine se o vendedor informa Desconto, Preco, Ambos ou Nenhum no item.
PARMONMSST_MANUTCLIENTEPermite Inclusao, Alteracao, Consulta ou Tudo no cadastro de cliente via Open-Net.
PARMONMSST_PEDIDOIMPEMAILControla impressão/envio por e-mail dos pedidos.
PARMONMSST_VIZUALIZATITULOSMostra titulos pendentes do cliente na venda.
PARMONMSST_VIZUALIZAESTOQUEMostra estoque do produto na venda.
PARMSCANNTECHDS_USUARIO / DS_SENHA / DS_URLCredenciais e endpoint usados pelo JunsoftIntegracao para autenticar na Scanntech.
PARMSCANNTECHCD_EMPRESAId da empresa no portal Scanntech (nao e FK local, e o codigo externo).
PARMSCANNTECHHR_FREQUENCIAIntervalo de envio de lotes (hh:mm:ss).
PARMSCANNTECHTP_REENVIOJanela de reenvio em horas (6 ou 12).
EMPRESASCANNTECHCD_EMPRESARestringe quais empresas do ERP tem suas vendas enviadas a Scanntech (filtro em GERA_NOTAFISCAL).
PERFILSCANNTECHCD_PERFILRestringe quais perfis de produto sao enviados a Scanntech.
MOVIMENTACAOSCANNTECHCD_MOVIMENTACAORestringe quais movimentacoes (ex.: venda, devolucao) sao enviadas a Scanntech.
SERIESCANNTECHCD_SERIERestringe as series de nota de saida enviadas a Scanntech (validada em PARMNOTA: serie + empresa + TP_NOTA='S' devem existir).
PARMCRMZENDS_URL / DS_TOKEN / DS_TOKENCONSULTAEndpoint e tokens usados pelo JunsoftIntegracao para autenticar no CRM Zen.
PARMCRMZENNR_FREQUENCIAENVIOIntervalo em minutos que o JunsoftIntegracao observa para enviar/receber.
PARMCRMZENCD_USUARIO / CD_EMPRESAUsuario e empresa responsaveis pelo envio no CRM Zen.
PARMCRMZENST_PESSOASATIVASQuando 'S', filtra somente pessoas ativas no envio.
PARMCRMZENST_FINACLIBERADOSCPCQuando 'S', envia somente pessoas com situacao financeira liberada no SCPC.
TIPOPESSOACRMZENCD_TIPOPESSOARestringe quais tipos de pessoa (cliente, fornecedor, etc.) sao sincronizados ao CRM Zen.

Regras de Negocio​

  1. Aba Open-Net (tabPARMAfterInsert): no insert seta defaults — CD_EMPRESA = sessao.Empresa.cd_Empresa, todos os flags S/N = 'N', ST_MANUTCLIENTE = 'X' (Tudo), ST_INFORMADESCPRECO = 'N' (Nenhum).
  2. Aba Open-Net (tabPARMBeforePost): garante CD_EMPRESA preenchido e atualiza DT_REGISTRO = Now.
  3. Scanntech (tabPARMSCANNTECHAfterInsert): seta CD_PARMSCANNTECH=1, HR_FREQUENCIA=01:00:00, TP_REENVIO=12. Sempre existe apenas um registro (SELECT FIRST 1).
  4. Scanntech (tabPARMSCANNTECHBeforePost): DS_USUARIO, DS_SENHA, CD_EMPRESA e HR_FREQUENCIA sao obrigatorios (com SetFocus no campo vazio antes do raise).
  5. Scanntech (tabPARMSCANNTECHAfterOpen): apos abrir PARMSCANNTECH, reabre os filhos EMPRESASCANNTECH, PERFILSCANNTECH, MOVIMENTACAOSCANNTECH e SERIESCANNTECH com o CD_PARMSCANNTECH atual.
  6. Validacao CD_EMPRESA (Scanntech): unicidade em EMPRESASCANNTECH + existencia em EMPRESA + ST_ATIVO='S'. Preenche NM_EMPRESA automaticamente.
  7. Validacao CD_PERFIL (Scanntech): unicidade em PERFILSCANNTECH + existencia em PERFIL (referencia ao cadastro [TPO033] na mensagem).
  8. Validacao CD_MOVIMENTACAO (Scanntech): unicidade em MOVIMENTACAOSCANNTECH + ValidaMovimentacao(transaction, ...) do jCommon para existencia/descricao.
  9. Validacao CD_SERIE (Scanntech): exige ao menos uma empresa no grid EMPRESASCANNTECH; serie deve existir em PARMNOTA com TP_NOTA='S' para alguma das empresas listadas; seta TP_NOTASERIE='S' no BeforePost.
  10. BeforePost dos filhos Scanntech: todos copiam CD_PARMSCANNTECH = tabPARMSCANNTECHCD_PARMSCANNTECH (FK para o pai) e exigem o codigo do registro filho.
  11. CRM Zen (tabPARMCRMZENAfterInsert): seta CD_CRMZEN=1, ST_PESSOASATIVAS='S', ST_FINACLIBERADOSCPC='S'.
  12. CRM Zen (tabPARMCRMZENAfterScroll): reabre TIPOPESSOACRMZEN filtrado pelo CD_CRMZEN atual.
  13. CRM Zen (tabPARMCRMZENBeforePost): exige URL (W-1906), TOKEN (W-1908), FREQUENCIA (W-1907), CD_USUARIO (W-0012) e CD_EMPRESA (W-0014).
  14. Validacao CD_USUARIO (CRM Zen): existencia em USUARIO. Preenche NM_USUARIO. Erro W-0007 se nao cadastrado.
  15. Validacao CD_EMPRESA (CRM Zen): existencia em EMPRESA. Preenche NM_EMPRESA. Erro E-0261 se nao cadastrado.
  16. TIPOPESSOACRMZEN (AfterInsert): FK CD_PARMCRMZEN = tabPARMCRMZENCD_CRMZEN.
  17. TIPOPESSOACRMZEN (BeforePost): exige CD_TIPOPESSOA preenchido (W-0415) — em caso de erro, navega para a aba CRM Zen e seta foco no grid. Reaplica as mesmas validacoes do PARMCRMZEN (URL/TOKEN/FREQUENCIA/USUARIO).
  18. Validacao CD_TIPOPESSOA (CRM Zen): existencia em TIPOPESSOA. Erro E-0239 se nao cadastrado.
  19. Exclusao do PARMCRMZEN: antes de Delete, confirma com C-2074 e apaga todos os TIPOPESSOACRMZEN vinculados. Apos excluir, CommitRetaining.
  20. Exclusao em grids (Scanntech/CRM Zen Tipo Pessoa): confirma com C-0045 ("Deseja Excluir o Registro?") antes de Navegacao.Delete.
  21. Salvar (btnSalvarClick): faz Post em cascata em todas as 8 queries (PARM, PARMSCANNTECH, EMPRESASCANNTECH, PERFILSCANNTECH, MOVIMENTACAOSCANNTECH, PARMCRMZEN, TIPOPESSOACRMZEN, SERIESCANNTECH), revalida cada serie (tabSERIESCANNTECHCD_SERIEValidate em loop), commita, reabre tudo e mostra I-0047.
  22. Foco inicial: ao abrir, ativa aba Open-Net e foca cmbST_ALTERAPEDIDOPALM.

Datasets e SQL​

DatasetTabelaSQLObservacao
tabPARMPARMONMSSELECT ... FROM PARMONMS WHERE CD_EMPRESA = :CD_EMPRESAUm registro por empresa.
tabPARMSCANNTECHPARMSCANNTECHSELECT FIRST 1 ... FROM PARMSCANNTECHRegistro unico global. AfterOpen reabre filhos.
tabEMPRESASCANNTECHEMPRESASCANNTECH + EMPRESASELECT ... FROM EMPRESASCANNTECH E INNER JOIN EMPRESA EM ON ... WHERE E.CD_PARMSCANNTECH = :CD_PARMSCANNTECHGrid filho.
tabPERFILSCANNTECHPERFILSCANNTECH + PERFILSELECT ... FROM PERFILSCANNTECH P INNER JOIN PERFIL PE ON ... WHERE P.CD_PARMSCANNTECH = :CD_PARMSCANNTECHGrid filho.
tabMOVIMENTACAOSCANNTECHMOVIMENTACAOSCANNTECH + MOVIMENTACAOSELECT ... FROM MOVIMENTACAOSCANNTECH MS INNER JOIN MOVIMENTACAO M ON ... WHERE MS.CD_PARMSCANNTECH = :CD_PARMSCANNTECHGrid filho.
tabSERIESCANNTECHSERIESCANNTECHSELECT ... FROM SERIESCANNTECH SS WHERE SS.CD_PARMSCANNTECH = :CD_PARMSCANNTECHGrid filho. Valida relacao com PARMNOTA.
tabPARMCRMZENPARMCRMZEN + USUARIO + EMPRESASELECT FIRST 1 ... FROM PARMCRMZEN P LEFT JOIN USUARIO U ... LEFT JOIN EMPRESA E ...Registro unico global.
tabTIPOPESSOACRMZENTIPOPESSOACRMZEN + TIPOPESSOASELECT ... FROM TIPOPESSOACRMZEN T LEFT JOIN TIPOPESSOA TP ... WHERE T.CD_PARMCRMZEN = :CD_PARMCRMZENGrid filho.

Validacoes auxiliares executam SELECTs diretos (ExecutaConsulta) em EMPRESA, PERFIL, TIPOPESSOA, USUARIO, PARMNOTA, EMPRESASCANNTECH, PERFILSCANNTECH, MOVIMENTACAOSCANNTECH para checar unicidade e existencia.

Parâmetros Documentados​

Parâmetros desta tela documentados pelo agente. Cada execução adiciona ou atualiza o item correspondente.

ParâmetroResumo
CD_EMPRESAId Empresa (Scanntech) - aba Aba Scanntech → GroupBox "Scanntech" → campo Id Empresa - PARMSCANNTECH
CD_PARMSCANNTECHCódigo do Parâmetro Scanntech - PARMSCANNTECH
DS_SENHASenha Scanntech - aba Aba Scanntech → campo "Senha" - PARMSCANNTECH
DS_URLEndereço da API Scanntech - aba Aba CRM Zen → Seção Scanntech - PARMSCANNTECH
DS_USUARIOUsuário Scanntech - PARMSCANNTECH
DT_REGISTROData/Hora de Registro (PARMSCANNTECH) - PARMSCANNTECH
HR_FREQUENCIAIntervalo de Envio Scanntech - aba Aba Scanntech → campo "Intervalo envio" - PARMSCANNTECH
TP_REENVIOIntervalo de Reenvio Scanntech - aba Aba Scanntech → campo "Intervalo Reenvio" - PARMSCANNTECH

Tabelas de Escrita (INSERT/UPDATE/DELETE)​

TabelaOperacoes
EMPRESASCANNTECHDELETE, INSERT, SELECT, UPDATE
MOVIMENTACAOSCANNTECHDELETE, INSERT, SELECT, UPDATE
PARMCRMZENDELETE, INSERT, SELECT, UPDATE
PARMONMSDELETE, INSERT, SELECT, UPDATE
PARMSCANNTECHDELETE, INSERT, SELECT, UPDATE
PERFILSCANNTECHDELETE, INSERT, SELECT, UPDATE
SERIESCANNTECHDELETE, INSERT, SELECT, UPDATE
TIPOPESSOACRMZENDELETE, INSERT, SELECT, UPDATE

Tabelas de Leitura (SELECT)​

TabelaOperacoes
EMPRESASELECT
MOVIMENTACAOSELECT
PARMNOTASELECT
PERFILSELECT
TIPOPESSOASELECT
USUARIOSELECT

Procedures Chamadas​

Nenhuma (a tela trabalha apenas com TFDQuery / TFDUpdateSQL diretos e ExecutaConsulta do jDB).

Tabelas via Procedures (acesso indireto)​

Nao aplicavel — sem procedures chamadas.

Dependencias Aferentes (quem alimenta esta tela)​

Telas que escrevem em tabelas lidas por esta tela (cadastros-fonte das FKs).

TelaTítuloTabelas em Comum
ADM002Cadastro de EmpresaEMPRESA
ADM001Cadastro de UsuarioUSUARIO
TPO033Cadastro de Perfil de ProdutoPERFIL
TPO007Cadastro de Tipo de PessoaTIPOPESSOA
CNF001Configuracao de MovimentaçãoMOVIMENTACAO
CNF012Configuracao de Movimentação (auxiliar)MOVIMENTACAO
CPD001Configuracao de PedidoMOVIMENTACAO
MFA007Cadastro de Parametros de NotaPARMNOTA

Dependencias Eferentes (quem consome dados desta tela)​

Telas/servicos que leem tabelas escritas por esta tela.

TelaTítuloTabelas em Comum
JunsoftIntegracaoServiço de integracao (Scanntech + CRM Zen)PARMSCANNTECH, EMPRESASCANNTECH, PERFILSCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
TRD016Consumidor de parametros Open-NetPARMONMS
CNF001Gera Nota Fiscal (procedure GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH (via procedure)
MNF001Manutencao NF-e (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
MNF002Manutencao NFC-e (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
MNF004Manutencao NF de Serviço (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
MNF005Cancelamento de NF (via CANCELA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
MNF007Manutencao de NF (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
MNF008Manutencao de NF (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
MNF010Manutencao de NF (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
MNF013Manutencao de NF (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
MNF017Manutencao de NF (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
MNF019Manutencao de NF (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
MNF023Manutencao de NF (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH
JunsoftServiceFatAppServiço de faturamento (via GERA_NOTAFISCAL)PARMSCANNTECH, EMPRESASCANNTECH, MOVIMENTACAOSCANNTECH, SERIESCANNTECH