Definir Alfa GERAMODULO; @ Indica o módulo processado, sendo: "C" = Comercial ou "T" = Tributos @ Definir Alfa GERATABELA; @ Indica a tabela de referência, sendo: E140IPV, E140ISV, E440IPC, E440ISC, E660INV, E660INC ou E660IRZ @ Se((GERAMODULO = "C") e (GERATABELA = "E140IPV")){ @ Verificando se a chamada é pelo módulo Comercial e da tabela E140IPV "Itens da nota fiscal de saída" @ Definir Alfa aCodSnf; Definir Alfa GERNDESAJS; @ Variável do Identificador (Descrição do ajuste) @ Definir Numero GERNBASAJS; @ Variável do Identificador (Base de cálculo) @ Definir Numero GERNPERAJS; @ Variável do Identificador (Alíquota) @ Definir Numero GERNVLRAJS; @ Variável do Identificador (Valor Ajuste) @ Definir Numero GERNCODDFS; @ Variável do Identificador (Cód. do Dispositivo fiscal) @ nCodEmp = 0; nCodFil = 0; nTipNfs = 0; nCodCli = 0; nCodDfs = 0; GERNDESAJS = ""; GERNBASAJS = 0; GERNPERAJS = 0; GERNVLRAJS = 0; nCodEmp = E140IPV.CODEMP; nCodFil = E140IPV.CODFIL; aCodSnf = E140IPV.CODSNF; nNumNfv = E140IPV.NUMNFV; nTipNfs = E140NFV.TipNfs; nCodCli = E140NFV.CodCli; Se((nTipNfs = 1) e (nCodCli > 0)) { @ 1 - NF Saída @ @ Verificando se a empresa/filial participa de algum programa de incentivo ao algodão @ Definir Cursor Cur_E070Imp; Cur_E070Imp.Sql "SELECT PRGINA \ FROM E070IMP \ WHERE CODEMP = :nCodEmp \ AND CODFIL = :nCodfil"; Cur_E070Imp.AbrirCursor(); Se(Cur_E070Imp.Achou) { nPrgIna = 0; nPrgIna = Cur_E070Imp.PrgIna; Se(nPrgIna = 2) { @ Proalba - Programa de Incentivo à Cultura do Algodão da Bahia @ @ Verificando se a Filial e o Cliente são do mesmo estado, se a Filial é Produtor Rural e o cliente é PJ @ Definir Cursor Cur_E070Fil; Cur_E070Fil.Sql "SELECT CODEMP,CODFIL,SIGUFS \ FROM E070FIL \ WHERE CODEMP = :nCodEmp \ AND CODFIL = :nCodFil \ AND TIPEMP = 7 \ AND SIGUFS = (SELECT SIGUFS \ FROM E085CLI \ WHERE CODCLI = :nCodCli \ AND TIPCLI = 'J')"; Cur_E070Fil.AbrirCursor(); Se(Cur_E070Fil.Achou){ @ Sim, são do mesmo estado @ @ Verificando se a transação do item está parametrizada para calcular incentivo e quais os dispositivos fiscais estão parametrizados @ Definir Alfa aTnsPro; aTnsPro = E140IPV.TNSPRO; Definir Cursor Cur_E001Ine; Cur_E001Ine.Sql "SELECT CALINA, CDFPBA, CDFFAG \ FROM E001INE \ WHERE CODEMP = :nCodEmp \ AND CODTNS = :aTnsPro"; Cur_E001Ine.AbrirCursor(); Se(Cur_E001Ine.Achou) { Definir Alfa aCalIna; nCdfPba = 0; nCdfFag = 0; aCalIna = Cur_E001Ine.CALINA; @ Calcula incentivo S/N @ LimpaEspacos(aCalIna); Se(aCalIna = "S"){ Definir Cursor Cur_E051Dis; nCodDfs = GERNCODDFS; nCdfPba = Cur_E001Ine.CDFPBA; @ Código do dispositivo fiscal do Proalba para venda de pluma de algodão @ nCdfFab = Cur_E001Ine.CDFFAG; @ Código do dispositivo fiscal do Fundeagro para venda de pluma de algodão @ Se(nCodDfs = nCdfPba) { @ Calculando valores para o Proalba na Venda @ Cur_E051Dis.Sql "SELECT PERAJS \ FROM E051DIS \ WHERE CODEMP = :nCodEmp \ AND CODDFS = :nCodDfs"; Cur_E051Dis.AbrirCursor(); Se(Cur_E051Dis.Achou) { nPerAjsPro = 0; nPerAjs = E140IPV.PerIdf; nPerAjsPro = Cur_E051Dis.PerAjs; Se(nPerAjs>0){ GERNBASAJS = E140IPV.BasIdf; GERNBASAJS = (GERNBASAJS/(1-(nPerAjs/100))); ArredondarValor(GERNBASAJS, 2); GERNPERAJS = nPerAjs; nVlrIcmAjs = (GERNBASAJS*(nPerAjs/100)); ArredondarValor(nVlrIcmAjs, 2); nVlrAjs = (nVlrIcmAjs*(nPerAjsPro/100)); ArredondarValor(nVlrAjs, 2); GERNVLRAJS = nVlrAjs; GERNDESAJS = "Valor do Proalba"; } } Cur_E051Dis.FecharCursor(); } Senao Se(nCodDfs = nCdfFab) { @ Calculando valores para o Fundeagro na Venda @ Cur_E051Dis.Sql "SELECT PERAJS \ FROM E051DIS \ WHERE CODEMP = :nCodEmp \ AND CODDFS = :nCodDfs"; Cur_E051Dis.AbrirCursor(); Se(Cur_E051Dis.Achou) { nPerAjsFun = 0; nPerAjs = E140IPV.PerIdf; nPerAjsFun = Cur_E051Dis.PerAjs; Se(nPerAjs>0){ GERNBASAJS = E140IPV.BasIdf; GERNBASAJS = (GERNBASAJS/(1-(nPerAjs/100))); ArredondarValor(GERNBASAJS, 2); GERNPERAJS = nPerAjs; nVlrIcmAjs = (GERNBASAJS*(nPerAjs/100)); ArredondarValor(nVlrIcmAjs, 2); nVlrAjs = (nVlrIcmAjs*(nPerAjsFun/100)); ArredondarValor(nVlrAjs, 2); GERNVLRAJS = nVlrAjs; GERNDESAJS = "Valor do Fundeagro"; } } Cur_E051Dis.FecharCursor(); } } } Cur_E001Ine.FecharCursor(); } Cur_E070Fil.FecharCursor(); } } Cur_E070Imp.FecharCursor(); } } Senao Se((GERAMODULO = "C") e (GERATABELA = "E440IPC")){ @ Verificando se a chamada é pelo módulo Comercial e da tabela E440IPC "Itens da nota fiscal de entrada" @ Definir Alfa aCodSnf; nCodEmp = 0; nCodFil = 0; nTipNfe = 0; nCodCli = 0; nCodDfs = 0; nCodFor = 0; nNumNfc = 0; Definir Numero GERNBASAJS; @ Variáveis do Identificador @ Definir Numero GERNPERAJS; @ Variáveis do Identificador @ Definir Numero GERNVLRAJS; @ Variáveis do Identificador @ GERNBASAJS = 0; GERNPERAJS = 0; GERNVLRAJS = 0; nCodEmp = E440IPC.CODEMP; nCodFil = E440IPC.CODFIL; aCodSnf = E440IPC.CODSNF; nNumNfc = E440IPC.NUMNFC; nCodFor = E440IPC.CODFOR; nTipNfe = E440NFC.TIPNFE; Se(((nTipNfe = 2) ou (nTipNfe = 3))e (nCodFor > 0)) { @ 2 - Devolução (NF Cliente) ou 3 - Devolução (NF de Saída) @ @ Verificando se a empresa/filial participa de algum programa de incentivo ao algodão @ Definir Cursor Cur_E070Imp; Cur_E070Imp.Sql "SELECT PRGINA \ FROM E070IMP \ WHERE CODEMP = :nCodEmp \ AND CODFIL = :nCodFil"; Cur_E070Imp.AbrirCursor(); Se(Cur_E070Imp.Achou) { nPrgIna = 0; nPrgIna = Cur_E070Imp.PrgIna; Se(nPrgIna = 2) { @ Proalba - Programa de Incentivo à Cultura do Algodão da Bahia @ @ Verificando se a Filial e o Fornecedor são do mesmo estado, se a Filial é Produtor Rural e o fornecedor é PJ @ Definir Cursor Cur_E070Fil; Cur_E070Fil.Sql "SELECT CODEMP,CODFIL,SIGUFS \ FROM E070FIL \ WHERE CODEMP = :nCodEmp \ AND CODFIL = :nCodFil \ AND TIPEMP = 7 \ AND SIGUFS = (SELECT SIGUFS \ FROM E095FOR \ WHERE CODFOR = :nCodFor \ AND TIPFOR = 'J')"; Cur_E070Fil.AbrirCursor(); Se(Cur_E070Fil.Achou){ @ Sim, são do mesmo estado @ @ Verificando se a transação do item está parametrizada para calcular incentivo e quais os dispositivos fiscais estão parametrizados @ Definir Alfa aTnsPro; aTnsPro = E440IPC.TNSPRO; Definir Cursor Cur_E001Ine; Cur_E001Ine.Sql "SELECT CALINA, CDFPBA, CDFFAG \ FROM E001INE \ WHERE CODEMP = :nCodEmp \ AND CODTNS = :aTnsPro"; Cur_E001Ine.AbrirCursor(); Se(Cur_E001Ine.Achou) { Definir Alfa aCalIna; nCdfPba = 0; nCdfFag = 0; aCalIna = Cur_E001Ine.CALINA; @ Calcula incentivo S/N @ LimpaEspacos(aCalIna); Se(aCalIna = "S"){ Definir Numero GERNCODDFS; @ Dispositivo fiscal @ Definir Alfa GERNDESAJS; @ Descrição do ajuste @ GERNDESAJS = ""; Definir Cursor Cur_E051Dis; nCodDfs = GERNCODDFS; nCdfPba = Cur_E001Ine.CDFPBA; @ Código do dispositivo fiscal do Proalba para devolução de venda de pluma de algodão @ nCdfFab = Cur_E001Ine.CDFFAG; @ Código do dispositivo fiscal do Fundeagro para devolução de venda de pluma de algodão @ Se(nCodDfs = nCdfPba) { @ Calculando valores para o Proalba na Devolução de venda @ Cur_E051Dis.Sql "SELECT PERAJS \ FROM E051DIS \ WHERE CODEMP = :nCodEmp \ AND CODDFS = :nCodDfs"; Cur_E051Dis.AbrirCursor(); Se(Cur_E051Dis.Achou) { nPerAjsPro = 0; nPerAjs = E440IPC.PerIdf; nPerAjsPro = Cur_E051Dis.PerAjs; Se(nPerAjs>0){ GERNBASAJS = E440IPC.BasIdf; GERNBASAJS = (GERNBASAJS/(1-(nPerAjs/100))); ArredondarValor(GERNBASAJS,2); GERNPERAJS = nPerAjs; nVlrIcmAjs = (GERNBASAJS*(nPerAjs/100)); ArredondarValor(nVlrIcmAjs,2); GERNVLRAJS = (nVlrIcmAjs*(nPerAjsPro/100)); ArredondarValor(GERNVLRAJS,2); GERNDESAJS = "Valor do Proalba - Devolução"; } } Cur_E051Dis.FecharCursor(); } Senao Se(nCodDfs = nCdfFab) { @ Calculando valores para o Fundeagro na Devolução de venda @ Cur_E051Dis.Sql "SELECT PERAJS \ FROM E051DIS \ WHERE CODEMP = :nCodEmp \ AND CODDFS = :nCodDfs"; Cur_E051Dis.AbrirCursor(); Se(Cur_E051Dis.Achou) { nPerAjsFun = 0; nPerAjs = E440IPC.PerIdf; nPerAjsFun = Cur_E051Dis.PerAjs; Se(nPerAjs>0){ GERNBASAJS = E440IPC.BasIdf; GERNBASAJS = (GERNBASAJS/(1-(nPerAjs/100))); ArredondarValor(GERNBASAJS,2); GERNPERAJS = nPerAjs; nVlrIcmAjs = (GERNBASAJS*(nPerAjs/100)); ArredondarValor(nVlrIcmAjs,2); GERNVLRAJS = (nVlrIcmAjs*(nPerAjsFun/100)); ArredondarValor(GERNVLRAJS,2); GERNDESAJS = "Valor do Fundeagro - Devolução"; } } Cur_E051Dis.FecharCursor(); } } } Cur_E001Ine.FecharCursor(); } Cur_E070Fil.FecharCursor(); } Senao { GERNBASAJS = 0; GERNPERAJS= 0; GERNVLRAJS = 0; } } Cur_E070Imp.FecharCursor(); } Senao { GERNBASAJS = 0; GERNPERAJS= 0; GERNVLRAJS = 0; } }