Identificador de Regra
IMP-661GIREC02
Finalidade: Permitir ao usuário calcular e atualizar, via regra, os valores de multa e juros (juros/multa) na guia de recolhimento.
Módulo: IMP - Impostos.
Tela: Guias de Recolhimento (F661GRI)
Transação: Não se aplica.
Regra:
Exemplo de regra:
Definir Alfa xSQL;
Definir Alfa xCur;
Definir Alfa ImpACodImp;
Definir Alfa ImpAObsGr1;
Definir Alfa AVlrResConvertido;
Definir Alfa ADiaCalConvertido;
Definir Alfa AMesCalConvertido;
Definir Alfa AAnoCalConvertido;
Definir Numero NPerJrs;
Definir Numero NPerMul;
Definir Numero NVlrRes;
Definir Numero ImpNVlrPri;
Definir Numero ImpNCodEmp;
Definir Numero ImpNCodFil;
Definir Numero ImpNSeqLct;
Definir Numero ImpNVlrJur;
Definir Numero ImpNVlrMul;
Definir Numero NDiaCal;
Definir Numero NDiaOri;
Definir Numero NMesCal;
Definir Numero NMesOri;
Definir Numero NAnoCal;
Definir Numero NAnoOri;
Definir Data ImpDVenOri;
Definir Data ImpDVenOriAjustado;
Definir Data DCalculo; @Nova data de vencimento@
Definir Data DCalculoAjustado;
Definir Data ImpDDatApi;
DataHoje(DCalculo);
se (DCalculo > ImpDVenOri)
inicio
DesMontaData(DCalculo,NDiaCal,NMesCal,NAnoCal);
DesMontaData(ImpDVenOri,NDiaOri,NMesOri,NAnoOri);
NDiaCal = 1;
se (NMesCal = 1)
NMesCal = 12;
senao
NMesCal = NMesCal - 1;
NDiaOri = 1;
MontaData(NDiaCal, NMesCal, NAnoCal, DCalculoAjustado);
MontaData(01, NMesOri,NAnoOri, ImpDVenOriAjustado);
@calcula juros@
xSQL = "SELECT SUM(VLRCOT) AS NPERJRS \
FROM E031IMO \
WHERE E031IMO.CODMOE = 'SEL' AND \
E031IMO.DATMOE >= :DVENORI AND \
E031IMO.DATMOE <= :DCALCULO ";
SQL_Criar(xCur);
SQL_DefinirComando(xCur, xSQL);
SQL_DefinirData(xCur,"DCALCULO",DCalculoAjustado);
SQL_DefinirData(xCur,"DVENORI",ImpDVenOriAjustado);
SQL_AbrirCursor(xCur);
SQL_RetornarFlutuante(xCur, "NPERJRS", NPerJrs);
Se (NPerJrs > 0)
ImpNVlrJur = ImpNVlrPri * (NPerJrs / 100);
@calcula multa@
xSQL = "SELECT E095HFO.PAGMUL \
FROM E661GRI,E051GUI,E055PAR,E095HFO \
WHERE E051GUI.CODEMP=E661GRI.CODEMP AND \
E051GUI.CODGRI=E661GRI.CODGRI AND \
E055PAR.CODEMP=E051GUI.CODEMP AND \
E055PAR.CODFIL=E661GRI.CODFIL AND \
E055PAR.CODGRI=E051GUI.CODGRI AND \
E095HFO.CODEMP=E661GRI.CODEMP AND \
E095HFO.CODFIL=E661GRI.CODFIL AND \
E095HFO.CODFOR=E055PAR.PAGFOR AND \
E661GRI.CODEMP = :CODEMP AND \
E661GRI.CODFIL = :CODFIL AND \
E661GRI.CODIMP = :CODIMP AND \
E661GRI.DATAPI = :DATAPI AND \
E661GRI.SEQLCT = :SEQLCT ";
SQL_Criar(xCur);
SQL_DefinirComando(xCur, xSQL);
SQL_DefinirInteiro(xCur,"CODEMP",ImpNCodEmp);
SQL_DefinirInteiro(xCur,"CODFIL",ImpNCodFil);
SQL_DefinirAlfa(xCur,"CODIMP",ImpACodImp);
SQL_DefinirData(xCur,"DATAPI",ImpDDatApi);
SQL_DefinirInteiro(xCur,"SEQLCT",ImpNSeqLct);
SQL_AbrirCursor(xCur);
SQL_RetornarFlutuante(xCur, "PAGMUL", NPagMul);
Se (NPagMul > 0)
inicio
NDiaMul = DCalculo - ImpDVenOri;
NPerMul = NDiaMul * NPagMul;
Se (NPerMul > 20)
NPerMul = 20;
ImpNVlrMul = ImpNVlrPri * (NPerMul / 100);
fim;
@ Atualiza Guia de Recolhimento @
Se ((ImpNVlrJur > 0) ou (ImpNVlrMul > 0))
inicio
NVlrRes = ImpNVlrPri + ImpNVlrJur + ImpNVlrMul;
ConverteMascara(1,NVlrRes,AVlrResConvertido,"zzz.zzz.zz9,99");
DesMontaData(DCalculo,NDiaCal,NMesCal,NAnoCal);
IntParaAlfa(NDiaCal,ADiaCalConvertido);
IntParaAlfa(NMesCal,AMesCalConvertido);
IntParaAlfa(NAnoCal,AAnoCalConvertido);
LimpaEspacos(AVlrResConvertido);
ImpAObsGr1 = "Cálculo válido para " + ADiaCalConvertido + "/" + AMesCalConvertido + "/" + AAnoCalConvertido + ", valor total " + AVlrResConvertido;
xSQL = "UPDATE E661GRI SET OBSGR1 = :OBSGR1, VLRJUR = :VLRJUR, VLRMUL = :VLRMUL WHERE CODEMP = :CODEMP AND CODFIL = :CODFIL AND CODIMP = :CODIMP AND DATAPI = :DATAPI AND SEQLCT = :SEQLCT ";
SQL_Criar(xCur);
SQL_DefinirComando(xCur, xSQL);
SQL_DefinirInteiro(xCur,"CODEMP",ImpNCodEmp);
SQL_DefinirInteiro(xCur,"CODFIL",ImpNCodFil);
SQL_DefinirAlfa(xCur,"CODIMP",ImpACodImp);
SQL_DefinirAlfa(xCur,"OBSGR1",ImpAObsGr1);
SQL_DefinirData(xCur,"DATAPI",ImpDDatApi);
SQL_DefinirInteiro(xCur,"SEQLCT",ImpNSeqLct);
SQL_DefinirFlutuante(xCur,"VLRJUR",ImpNVlrJur);
SQL_DefinirFlutuante(xCur,"VLRMUL",ImpNVlrMul);
SQL_AbrirCursor(xCur);
fim;
fim;
|
English
Español
English
Español


