Salve salve pessoal…
Trago para vocês hoje, uma exemplificação da Restruturação da SE5 na família de tabelas FK* no Protheus 12.
Para quem conhece o Protheus, sabe que a tabela SE5, de Movimentos Financeiros, era a representação do Labírinto do Minotauro, só que sem saída rs. Acontece que para normatizar e melhorar o sistema, eles separaram a tabela SE5, em 11 tabelas menores da FK1 à FKB, conforme imagem abaixo.
Dessa forma, separaram as tabelas para melhorar a identificação dos registros, por exemplo, ai baixar um título a receber, gera uma FK1, e as FK* auxiliares.
No caso de baixar um título a pagar, gera uma FK2, e as FK* auxiliares.
E se for feito um movimento bancário, gera uma FK5, e as FK* auxiliares.
A nível de sistema, ficou mais organizado dessa forma, porém para dar manutenção, ou encontrar algo, se tornou mais trabalhoso, pensando nisso, montei uma cláusula SQL para identificar os dados de uma baixa a pagar e de uma baixa a receber.
Abaixo o código da baixa a pagar.
SELECT SE5.R_E_C_N_O_ AS SE5REC, FK2.R_E_C_N_O_ AS FK2REC, FK7.R_E_C_N_O_ AS FK7REC, FKA.R_E_C_N_O_ AS FKAREC, FKA2.R_E_C_N_O_ AS FKA2REC FROM SE5010 SE5 LEFT JOIN FK2010 FK2 ON ( FK2_FILIAL = '01' AND FK2_IDFK2 = E5_IDORIG AND FK2.D_E_L_E_T_ = ' ' ) LEFT JOIN FK7010 FK7 ON ( FK7_FILIAL = '01' AND FK7_IDDOC = FK2_IDDOC AND FK7.D_E_L_E_T_ = ' ' ) LEFT JOIN FKA010 FKA ON ( FKA.FKA_FILIAL = '01' AND FKA.FKA_IDORIG = E5_IDORIG AND FKA.FKA_TABORI = 'FK2' AND FKA.D_E_L_E_T_ = ' ' ) LEFT JOIN FKA010 FKA2 ON ( FKA2.FKA_FILIAL = '01' AND FKA2.FKA_IDPROC = FKA.FKA_IDPROC AND FKA2.FKA_TABORI = 'FK5' AND FKA2.D_E_L_E_T_ = ' ' ) LEFT JOIN FK5010 FK5 ON ( FK5_FILIAL = '01' AND FK5_IDMOV = FKA2.FKA_IDORIG AND FK5.D_E_L_E_T_ = ' ' ) WHERE E5_FILIAL = '01' AND E5_NUMERO = '000000058' AND E5_PREFIXO = '3' AND SE5.D_E_L_E_T_ = ' '
Abaixo o código da baixa a receber.
SELECT SE5.R_E_C_N_O_ AS SE5REC, FK1.R_E_C_N_O_ AS FK1REC, FK7.R_E_C_N_O_ AS FK7REC, FKA.R_E_C_N_O_ AS FKAREC, FKA2.R_E_C_N_O_ AS FKA2REC FROM SE5010 SE5 LEFT JOIN FK1010 FK1 ON ( FK1_FILIAL = '01' AND FK1_IDFK1 = E5_IDORIG AND FK1.D_E_L_E_T_ = ' ' ) LEFT JOIN FK7010 FK7 ON ( FK7_FILIAL = '01' AND FK7_IDDOC = FK1_IDDOC AND FK7.D_E_L_E_T_ = ' ' ) LEFT JOIN FKA010 FKA ON ( FKA.FKA_FILIAL = '01' AND FKA.FKA_IDORIG = E5_IDORIG AND FKA.FKA_TABORI = 'FK1' AND FKA.D_E_L_E_T_ = ' ' ) LEFT JOIN FKA010 FKA2 ON ( FKA2.FKA_FILIAL = '01' AND FKA2.FKA_IDPROC = FKA.FKA_IDPROC AND FKA2.FKA_TABORI = 'FK5' AND FKA2.D_E_L_E_T_ = ' ' ) LEFT JOIN FK5010 FK5 ON ( FK5_FILIAL = '01' AND FK5_IDMOV = FKA2.FKA_IDORIG AND FK5.D_E_L_E_T_ = ' ' ) WHERE E5_FILIAL = '01' AND E5_NUMERO = '000133613' AND E5_PREFIXO = '3' AND SE5.D_E_L_E_T_ = ' '
Caso tenha interesse, abaixo uma representação dos campos para comparação do processo de baixas a pagar.
Abaixo uma do baixas a receber.
E por último, uma de movimentação bancária.
Referências:
– tdn.totvs.com
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Parabéns Dan, ótimo material muito bom.
Obrigado Rone.
Um grande abraço.
Excelente!
Obrigado Edivaldo.
Um grande abraço.
Dan_Atilio boa tarde,
Estou tentando criar uma função para baixar titulos que são feitos em cartão de credito, porém para relalizar esse baixa preciso registrar na tabela SE5, porém existem campos que não entendo são eles:
E5_LA
E5_SITUACA
E5_LOTE
E5_MULTNAT
E5_MOVFKS
E5_IDORIG
E5_TABORI
Gostaria de saber em especial como gero esse codigo estremamente complexo presente no campo E5_IDORIG
Desde já agradecido.
Alex Neto
Boa tarde Alex.
Se você utilizar o conceito de ExecAuto (inclusive tem vídeo aula gratuita no nosso canal do YouTube), as rotinas padrões preenchem tudo isso de forma automática, e você não precisa se preocupar com nada.
Grande abraço.
Olá, bom dia!
Ótima explicação, parabéns!
Um dúvida, sabe dizer se em algum momento a SE5 não será mais usada?
Bom dia Raphael.
Pelo legado do sistema, acho complicado a extinção dela.
Se ocorrer, vai levar alguns anos ainda, mas acho que seria inviável.
Boa noite!
Preciso de um relatório que me traga o valor a receber, desconsiderando o que eu já fiz de compensação através de RA, contudo, as RA que eu ainda não compensei, precisa aparecer no relatório.
Se alguém ajudar eu agradeço.
Bom dia Edmilson.
Talvez no padrão já tenha algo assim. Em todo o caso, entre no fórum AdvPLers no Discord, que lá você perguntando sua dúvida, pode ser que alguém já tenha feito algo assim.
Link do fórum: https://discord.gg/q3n25s2
Abraços.
Artigo muito útil, parabéns!
Opa, obrigado pelo feedback Eduardo.
Grande abraço.