/*===============*/ /* Versão: 3.56 */ /*==============================================================*/ /* Table: ACESSO */ /*==============================================================*/ ALTER TABLE ACESSO ADD TIPO_CLASS CHAR(1); COMMIT WORK; UPDATE ACESSO SET TIPO_CLASS = '3' WHERE TIPO_CLASS IS NULL; COMMIT WORK; /*==============================================================*/ /* Table: PARAMETROS */ /*==============================================================*/ UPDATE PARAMETROS SET CLASS_PARAM = '6' WHERE CLASS_PARAM = '3'; COMMIT WORK; INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,47,'PERC_MAXIMO_DESCTO','% Máximo de Desconto a Aplicar na Venda','FLOAT','1','10'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,48,'SENHA_LIBERA_DESCONTO','Senha para Liberar % Maior de Desconto na Venda','STRING','1',''); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (2,47,'PERC_MAXIMO_DESCTO','% Máximo de Desconto a Aplicar na Venda','FLOAT','1','10'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (2,48,'SENHA_LIBERA_DESCONTO','Senha para Liberar % Maior de Desconto na Venda','STRING','1',''); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (3,47,'PERC_MAXIMO_DESCTO','% Máximo de Desconto a Aplicar na Venda','FLOAT','1','10'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (3,48,'SENHA_LIBERA_DESCONTO','Senha para Liberar % Maior de Desconto na Venda','STRING','1',''); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (4,47,'PERC_MAXIMO_DESCTO','% Máximo de Desconto a Aplicar na Venda','FLOAT','1','10'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (4,48,'SENHA_LIBERA_DESCONTO','Senha para Liberar % Maior de Desconto na Venda','STRING','1',''); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (5,47,'PERC_MAXIMO_DESCTO','% Máximo de Desconto a Aplicar na Venda','FLOAT','1','10'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (5,48,'SENHA_LIBERA_DESCONTO','Senha para Liberar % Maior de Desconto na Venda','STRING','1',''); COMMIT WORK; /*===============*/ /* Versão: 3.58 */ /*==============================================================*/ /* Table: PRODUTOS */ /*==============================================================*/ UPDATE PRODUTOS SET COD_ICMS_ESTADO = COD_ICMS_VD WHERE COD_ICMS_ESTADO IS NULL AND COD_ICMS_VD IS NOT NULL; COMMIT WORK; UPDATE PRODUTOS SET COD_ICMS_FORA = COD_ICMS_VDF WHERE COD_ICMS_FORA IS NULL AND COD_ICMS_VDF IS NOT NULL; COMMIT WORK; UPDATE PRODUTOS SET COD_ICMS_VD = COD_ICMS_ESTADO WHERE COD_ICMS_VD IS NULL AND COD_ICMS_ESTADO IS NOT NULL; COMMIT WORK; UPDATE PRODUTOS SET COD_ICMS_VDF = COD_ICMS_FORA WHERE COD_ICMS_VDF IS NULL AND COD_ICMS_FORA IS NOT NULL; COMMIT WORK; /*===============*/ /* Versão: 3.59 */ /*==============================================================*/ /* Table: PARAMETROS */ /*==============================================================*/ INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,49,'NRO_LOTE_NFE','Nº do Lote Atual Transmissão de NFe (Sequencial)','INTEGER','4','1'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (2,49,'NRO_LOTE_NFE','Nº do Lote Atual Transmissão de NFe (Sequencial)','INTEGER','4','1'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (3,49,'NRO_LOTE_NFE','Nº do Lote Atual Transmissão de NFe (Sequencial)','INTEGER','4','1'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (4,49,'NRO_LOTE_NFE','Nº do Lote Atual Transmissão de NFe (Sequencial)','INTEGER','4','1'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (5,49,'NRO_LOTE_NFE','Nº do Lote Atual Transmissão de NFe (Sequencial)','INTEGER','4','1'); COMMIT WORK; /*===============*/ /* Versão: 3.60 */ /*==============================================================*/ /* Table: PARAMETROS */ /*==============================================================*/ INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,50,'CP_MULTI_PTPED_ESTOQUE','Compras: Multiplicador de Ponto Ped. sobre Estoque','FLOAT','2','1'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (2,50,'CP_MULTI_PTPED_ESTOQUE','Compras: Multiplicador de Ponto Ped. sobre Estoque','FLOAT','2','1'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (3,50,'CP_MULTI_PTPED_ESTOQUE','Compras: Multiplicador de Ponto Ped. sobre Estoque','FLOAT','2','1'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (4,50,'CP_MULTI_PTPED_ESTOQUE','Compras: Multiplicador de Ponto Ped. sobre Estoque','FLOAT','2','1'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (5,50,'CP_MULTI_PTPED_ESTOQUE','Compras: Multiplicador de Ponto Ped. sobre Estoque','FLOAT','2','1'); COMMIT WORK; /*===============*/ /* Versão: 3.62 */ /*==============================================================*/ /* Trigger: TG_UPDATE_ENTRADAS */ /*==============================================================*/ SET TERM ^; ALTER TRIGGER TG_UPDATE_ENTRADAS ACTIVE BEFORE UPDATE POSITION 0 AS DECLARE VARIABLE varCOD_EMPRESA INTEGER; DECLARE VARIABLE varSEQ_INCLUSAO INTEGER; DECLARE VARIABLE varDOCUMENTO VARCHAR(20); DECLARE VARIABLE varVLT_TOTAL_ITEM DECIMAL(15,2); DECLARE VARIABLE varVLR_RATEIO DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS DECIMAL(15,2); DECLARE VARIABLE varRAT_ICMS DECIMAL(15,2); DECLARE VARIABLE varRAT_BASE_ICMS DECIMAL(15,2); DECLARE VARIABLE varRAT_ICMS_SUBST DECIMAL(15,2); DECLARE VARIABLE varRAT_BC_ICMS_SUBST DECIMAL(15,2); DECLARE VARIABLE varSEQUENCIA INTEGER; DECLARE VARIABLE varPRIMEIRO INTEGER; DECLARE VARIABLE varVLR_CONFERE DECIMAL(15,2); DECLARE VARIABLE varVLR_DIF DECIMAL(15,2); DECLARE VARIABLE varVLR_TOTAL_DESCTO DECIMAL(15,2); /* = = Rateia Acrescimos e descontos entre os Itens de Entrada= =*/ BEGIN IF ((NEW.VLR_TOTAL_MERC IS NOT NULL) AND (NEW.VLR_TOTAL_MERC > 0)) THEN BEGIN UPDATE ITENS_ENTRADA IET SET IET.RAT_VALOR = (NEW.VLR_FRETE * (IET.VLR_TOTAL_ITEM / NEW.VLR_TOTAL_MERC)) + (NEW.VLR_SEGURO * (IET.VLR_TOTAL_ITEM / NEW.VLR_TOTAL_MERC)) + (NEW.VLR_DESPESAS * (IET.VLR_TOTAL_ITEM / NEW.VLR_TOTAL_MERC)) - (NEW.VLR_DESCONTO * (IET.VLR_TOTAL_ITEM / NEW.VLR_TOTAL_MERC)) + (NEW.VLR_ACR_EXTRA * (IET.VLR_TOTAL_ITEM / NEW.VLR_TOTAL_MERC)) - (NEW.VLR_DESC_EXTRA * (IET.VLR_TOTAL_ITEM / NEW.VLR_TOTAL_MERC)) + (NEW.VLR_FRETE_CONH * (IET.VLR_TOTAL_ITEM / NEW.VLR_TOTAL_MERC)) WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL; UPDATE ITENS_ENTRADA IET SET IET.RAT_FRETE = 0, IET.RAT_SEGURO = 0, IET.RAT_DESPESAS = 0, IET.RAT_DESCTO = 0 WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL; IF (NEW.VLR_FRETE > 0) THEN BEGIN UPDATE ITENS_ENTRADA IET SET IET.RAT_FRETE = (IET.VLR_TOTAL_ITEM * NEW.VLR_FRETE) / NEW.VLR_TOTAL_MERC WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT MIN(IET.SEQ_ITEM), SUM(IET.RAT_FRETE) FROM ITENS_ENTRADA IET WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varPRIMEIRO, :varVLR_CONFERE; IF (NEW.VLR_FRETE <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = NEW.VLR_FRETE - varVLR_CONFERE; UPDATE ITENS_ENTRADA IET SET IET.RAT_FRETE = IET.RAT_FRETE + :varVLR_DIF WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.SEQ_ITEM = :varPRIMEIRO; END END IF (NEW.VLR_SEGURO > 0) THEN BEGIN UPDATE ITENS_ENTRADA IET SET IET.RAT_SEGURO = (IET.VLR_TOTAL_ITEM * NEW.VLR_SEGURO) / NEW.VLR_TOTAL_MERC WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT MIN(IET.SEQ_ITEM), SUM(IET.RAT_SEGURO) FROM ITENS_ENTRADA IET WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varPRIMEIRO, :varVLR_CONFERE; IF (NEW.VLR_SEGURO <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = NEW.VLR_SEGURO - varVLR_CONFERE; UPDATE ITENS_ENTRADA IET SET IET.RAT_SEGURO = IET.RAT_SEGURO + :varVLR_DIF WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.SEQ_ITEM = :varPRIMEIRO; END END IF (NEW.VLR_DESPESAS > 0) THEN BEGIN UPDATE ITENS_ENTRADA IET SET IET.RAT_DESPESAS = (IET.VLR_TOTAL_ITEM * NEW.VLR_DESPESAS) / NEW.VLR_TOTAL_MERC WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT MIN(IET.SEQ_ITEM), SUM(IET.RAT_DESPESAS) FROM ITENS_ENTRADA IET WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varPRIMEIRO, :varVLR_CONFERE; IF (NEW.VLR_DESPESAS <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = NEW.VLR_DESPESAS - varVLR_CONFERE; UPDATE ITENS_ENTRADA IET SET IET.RAT_DESPESAS = IET.RAT_DESPESAS + :varVLR_DIF WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.SEQ_ITEM = :varPRIMEIRO; END END varVLR_TOTAL_DESCTO = NEW.VLR_DESCONTO + NEW.VLR_DESC_EXTRA; IF (varVLR_TOTAL_DESCTO > 0) THEN BEGIN UPDATE ITENS_ENTRADA IET SET IET.RAT_DESCTO = (IET.VLR_TOTAL_ITEM * :varVLR_TOTAL_DESCTO) / NEW.VLR_TOTAL_MERC WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT MIN(IET.SEQ_ITEM), SUM(IET.RAT_DESCTO) FROM ITENS_ENTRADA IET WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varPRIMEIRO, :varVLR_CONFERE; IF (varVLR_TOTAL_DESCTO <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = varVLR_TOTAL_DESCTO - varVLR_CONFERE; UPDATE ITENS_ENTRADA IET SET IET.RAT_DESCTO = IET.RAT_DESCTO + :varVLR_DIF WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.SEQ_ITEM = :varPRIMEIRO; END END END /* = = Faz somatorios de valores dos Itens de Entrada e procura o primeiro item= =*/ SELECT IET.DOCUMENTO, SUM(IET.RAT_VALOR), MIN(IET.SEQ_ITEM), SUM(IET.BASE_ICMS), SUM(IET.VLR_ICMS) FROM ITENS_ENTRADA IET WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL GROUP BY IET.DOCUMENTO INTO :varDOCUMENTO, :varVLR_RATEIO, :varSEQUENCIA, :varBASE_ICMS, :varVLR_ICMS; /* = = Calcula a diferenca entre a soma dos Itens de Entrada e o valores Totais na Entrada no Rateio e grava a diferenca no primeiro item de entrada = =*/ UPDATE ITENS_ENTRADA IET SET IET.RAT_VALOR = IET.RAT_VALOR - (:varVLR_RATEIO - (NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_DESPESAS + NEW.VLR_FRETE_CONH - NEW.VLR_DESCONTO + NEW.VLR_ACR_EXTRA - NEW.VLR_DESC_EXTRA)) WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.SEQ_ITEM = :varSEQUENCIA; /* = = Rateia Valores de Icms e Base Icms que alem dos Itens = =*/ UPDATE ITENS_ENTRADA IET SET IET.RAT_ICMS = (NEW.VLR_ICMS - :varVLR_ICMS) * (IET.VLR_ICMS / :varVLR_ICMS), IET.RAT_BASE_ICMS = (NEW.BASE_ICMS - :varBASE_ICMS) * (IET.BASE_ICMS / :varBASE_ICMS) WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.VLR_ICMS > 0; /* = = Faz somatorio do Icms e Base Icms e procura o primeiro item com ICMS = =*/ SELECT IET.DOCUMENTO, MIN(IET.SEQ_ITEM), SUM(IET.RAT_ICMS), SUM(IET.RAT_BASE_ICMS) FROM ITENS_ENTRADA IET WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.VLR_ICMS > 0 GROUP BY IET.DOCUMENTO INTO :varDOCUMENTO, :varSEQUENCIA, :varRAT_ICMS, :varRAT_BASE_ICMS; IF (varRAT_ICMS IS NOT NULL) THEN BEGIN /* = = Grava a diferenca no primeiro item de entrada com ICMS= =*/ UPDATE ITENS_ENTRADA IET SET IET.RAT_ICMS = IET.RAT_ICMS + (NEW.VLR_ICMS - (:varRAT_ICMS + :varVLR_ICMS)), IET.RAT_BASE_ICMS = IET.RAT_BASE_ICMS + (NEW.BASE_ICMS - (:varRAT_BASE_ICMS + :varBASE_ICMS)) WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.SEQ_ITEM = :varSEQUENCIA; END /* == TRATA SUBSTITUIÇÃO TRIBUTÁRIA */ IF (NEW.ICMS_SUBST > 0) THEN BEGIN /* = = Faz somatorios de valores dos Itens de Entrada que tem substituição */ SELECT SUM(IET.VLR_TOTAL_ITEM) FROM ITENS_ENTRADA IET WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND (IET.CST_TRIB = '10' OR IET.CST_TRIB = '30' OR IET.CST_TRIB = '60' OR IET.CST_TRIB = '70') GROUP BY IET.COD_EMPRESA, IET.DOCUMENTO INTO :varVLT_TOTAL_ITEM; /* == Passa todos os itens que tem susbstituição e rateia o valor da mesma */ UPDATE ITENS_ENTRADA IET SET IET.RAT_ICMS_SUBST = (NEW.ICMS_SUBST * (IET.VLR_TOTAL_ITEM / :varVLT_TOTAL_ITEM)), IET.RAT_BC_ICMS_SUBST = (NEW.BASE_ICMS_SUBST * (IET.VLR_TOTAL_ITEM / :varVLT_TOTAL_ITEM)) WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND (IET.CST_TRIB = '10' OR IET.CST_TRIB = '30' OR IET.CST_TRIB = '60' OR IET.CST_TRIB = '70'); /* = = Faz somatorio do Icms e Base Icms e procura o primeiro item com ICMS = =*/ SELECT MIN(IET.SEQ_ITEM), SUM(IET.RAT_ICMS_SUBST), SUM(IET.RAT_BC_ICMS_SUBST) FROM ITENS_ENTRADA IET WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.RAT_ICMS_SUBST > 0 AND (IET.CST_TRIB = '10' OR IET.CST_TRIB = '30' OR IET.CST_TRIB = '60' OR IET.CST_TRIB = '70') GROUP BY IET.DOCUMENTO INTO :varPRIMEIRO, :varRAT_ICMS_SUBST, :varRAT_BC_ICMS_SUBST; /* = = Grava a diferenca no primeiro item de entrada com ICMS= =*/ UPDATE ITENS_ENTRADA IET SET IET.RAT_ICMS_SUBST = IET.RAT_ICMS_SUBST + (NEW.ICMS_SUBST - :varRAT_ICMS_SUBST), IET.RAT_BC_ICMS_SUBST = IET.RAT_BC_ICMS_SUBST + (NEW.BASE_ICMS_SUBST - :varRAT_BC_ICMS_SUBST) WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.SEQ_INCLUSAO = NEW.SEQ_INCLUSAO AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.SEQ_ITEM = :varPRIMEIRO; END END^ SET TERM ;^ COMMIT WORK; /*===============*/ /* Versão: 3.66 */ /*==============================================================*/ /* Table: AGRUPADOR */ /*==============================================================*/ ALTER TABLE AGRUPADOR ADD COD_EMPRESA SMALLINT; COMMIT WORK; /*===============*/ /* Versão: 3.69 */ /*==============================================================*/ /* Table: PARAMETROS */ /*==============================================================*/ INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,51,'CUPOM_PARA_NOTAFISCAL','Cupom Fiscal: Pede fazer Nota Fiscal pelo Cupom','STRING','2','N'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,52,'CHAVE_BUSCACEP_COD_IBGE','Chave para Site www.buscarcep.com.br (Cód. IBGE)','STRING','2',''); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (2,51,'CUPOM_PARA_NOTAFISCAL','Cupom Fiscal: Pede fazer Nota Fiscal pelo Cupom','STRING','2','N'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (2,52,'CHAVE_BUSCACEP_COD_IBGE','Chave para Site www.buscarcep.com.br (Cód. IBGE)','STRING','2',''); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (3,51,'CUPOM_PARA_NOTAFISCAL','Cupom Fiscal: Pede fazer Nota Fiscal pelo Cupom','STRING','2','N'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (3,52,'CHAVE_BUSCACEP_COD_IBGE','Chave para Site www.buscarcep.com.br (Cód. IBGE)','STRING','2',''); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (4,51,'CUPOM_PARA_NOTAFISCAL','Cupom Fiscal: Pede fazer Nota Fiscal pelo Cupom','STRING','2','N'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (4,52,'CHAVE_BUSCACEP_COD_IBGE','Chave para Site www.buscarcep.com.br (Cód. IBGE)','STRING','2',''); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (5,51,'CUPOM_PARA_NOTAFISCAL','Cupom Fiscal: Pede fazer Nota Fiscal pelo Cupom','STRING','2','N'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (5,52,'CHAVE_BUSCACEP_COD_IBGE','Chave para Site www.buscarcep.com.br (Cód. IBGE)','STRING','2',''); COMMIT WORK; /*===============*/ /* Versão: 3.70 */ /*==============================================================*/ /* Table: PRODUTOS_ACERTAR */ /*==============================================================*/ create table PRODUTOS_ACERTAR ( SEQ_ACERTO INTEGER not null, COD_PRODUTO INTEGER, DESCR_PRODUTO VARCHAR(50), OQUE_ACERTAR VARCHAR(25), SITUACAO CHAR(1), constraint PK_PRODUTOS_ACERTAR primary key (SEQ_ACERTO) ); COMMIT WORK; /*===============*/ /* Versão: 3.71 */ /*==============================================================*/ /* Table: PRODUTOS_ACERTAR */ /*==============================================================*/ ALTER TABLE PRODUTOS_ACERTAR ADD COD_VENDEDOR SMALLINT; COMMIT WORK; /*==============================================================*/ /* Table: PRODUTOS_ACERTAR */ /*==============================================================*/ ALTER TABLE NOTA_FISCAL ADD SOMA_SUBST_NF CHAR(1); COMMIT WORK; ALTER TRIGGER TG_UPDATE_NOTAFISCAL INACTIVE; UPDATE NOTA_FISCAL SET SOMA_SUBST_NF = 'N' WHERE SOMA_SUBST_NF IS NULL; ALTER TRIGGER TG_UPDATE_NOTAFISCAL ACTIVE; COMMIT WORK; /*==============================================================*/ /* Trigger: TG_UPDATE_NOTAFISCAL */ /*==============================================================*/ SET TERM ^; ALTER TRIGGER TG_UPDATE_NOTAFISCAL ACTIVE BEFORE UPDATE POSITION 0 AS DECLARE VARIABLE varCOD_EMPRESA INTEGER; DECLARE VARIABLE varTIPO_CONTROL CHAR(1); DECLARE VARIABLE varNRO_NF INTEGER; DECLARE VARIABLE varSERIE_NF CHAR(3); DECLARE VARIABLE varVLR_TOTAL DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS_SUBST DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS_SUBST DECIMAL(15,2); DECLARE VARIABLE varVLR_IPI DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS2 DECIMAL(15,2); DECLARE VARIABLE varVLR_SERVICO DECIMAL(15,2); DECLARE VARIABLE varVLR_PRODUTO DECIMAL(15,2); DECLARE VARIABLE varVLR_FRETE DECIMAL(15,2); DECLARE VARIABLE varVLR_SEGURO DECIMAL(15,2); DECLARE VARIABLE varVLR_OUT_DESP DECIMAL(15,2); DECLARE VARIABLE varVLR_DESCTO DECIMAL(15,2); DECLARE VARIABLE varVLR_ACRES DECIMAL(15,2); DECLARE VARIABLE varVLR_ITENS DECIMAL(15,2); DECLARE VARIABLE varVLR_CONFERE DECIMAL(15,2); DECLARE VARIABLE varVLR_DIF DECIMAL(15,2); DECLARE VARIABLE varTOTAL_FDSDA DECIMAL(15,2); DECLARE VARIABLE varSEQ_ITEM INTEGER; DECLARE VARIABLE varPERC_BC_ICMS DECIMAL(9,4); DECLARE VARIABLE varPERC_ICMS DECIMAL(9,4); DECLARE VARIABLE varVLR_FDSDA DECIMAL(15,2); DECLARE VARIABLE varBC_ICMS_FDSDA DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS_FDSDA DECIMAL(15,2); BEGIN /* SELEÇÃO DOS VALORES DOS ITENS DE PRODUTOS */ SELECT SUM(INF.VLR_TOTAL), SUM(INF.BASE_ICMS), SUM(INF.VLR_ICMS), SUM(INF.VLR_IPI), SUM(INF.BC_ICMS_SUBST), SUM(INF.VLR_ICMS_SUBST) FROM ITENS_NF INF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SERIE_NF = NEW.SERIE_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_ITEM = 'MERC' INTO :varVLR_PRODUTO, :varBASE_ICMS, :varVLR_ICMS, :varVLR_IPI, :varBASE_ICMS_SUBST, :varVLR_ICMS_SUBST; IF (:varVLR_PRODUTO IS NOT NULL) THEN NEW.VLR_PROD = :varVLR_PRODUTO; IF (:varBASE_ICMS IS NOT NULL) THEN NEW.BASE_ICMS = :varBASE_ICMS; IF (:varVLR_ICMS IS NOT NULL) THEN NEW.VLR_ICMS = :varVLR_ICMS; IF (:varVLR_IPI IS NOT NULL) THEN NEW.VLR_IPI = :varVLR_IPI; IF (:varBASE_ICMS_SUBST IS NOT NULL) THEN NEW.BASE_SUBST = :varBASE_ICMS_SUBST; IF (:varVLR_ICMS_SUBST IS NOT NULL) THEN NEW.VLR_SUBST = :varVLR_ICMS_SUBST; /* SELEÇÃO DOS VALORES DOS ITENS DE SERVICO */ SELECT SUM(INF.VLR_TOTAL), SUM(INF.BASE_ICMS), SUM(INF.VLR_ICMS) FROM ITENS_NF INF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SERIE_NF = NEW.SERIE_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_ITEM = 'SERV' INTO :varVLR_SERVICO, :varBASE_ICMS, :varVLR_ICMS; IF (:varVLR_SERVICO IS NOT NULL) THEN NEW.VLR_SERV = :varVLR_SERVICO; IF (:varBASE_ICMS IS NOT NULL) THEN NEW.BASE_ICMS = NEW.BASE_ICMS + :varBASE_ICMS; IF (:varVLR_ICMS IS NOT NULL) THEN NEW.VLR_ICMS = NEW.VLR_ICMS + :varVLR_ICMS; NEW.VLR_TOTAL = NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_OUTDESP + NEW.VLR_IPI + NEW.VLR_ACRES - NEW.VLR_DESC; IF (varVLR_PRODUTO IS NOT NULL) THEN BEGIN UPDATE ITENS_NF INF SET INF.VLR_RATEIO = (INF.VLR_TOTAL / :varVLR_PRODUTO) * (NEW.VLR_TOTAL) WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SERIE_NF = NEW.SERIE_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_ITEM = 'MERC'; NEW.VLR_TOTAL = NEW.VLR_TOTAL + NEW.VLR_PROD; END IF (varVLR_SERVICO IS NOT NULL) THEN NEW.VLR_TOTAL = NEW.VLR_TOTAL + NEW.VLR_SERV; varVLR_ITENS = NEW.VLR_PROD + NEW.VLR_SERV; IF (varVLR_ITENS > 0) then BEGIN IF (NEW.VLR_FRETE > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_FRETE = (INF.VLR_TOTAL * NEW.VLR_FRETE) / :varVLR_ITENS WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC'); SELECT SUM(INF.RAT_FRETE), MIN(INF.SEQ_ITEM) FROM ITENS_NF INF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') INTO :varVLR_CONFERE, :varSEQ_ITEM; IF (NEW.VLR_FRETE <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = NEW.VLR_FRETE - varVLR_CONFERE; UPDATE ITENS_NF INF SET INF.RAT_FRETE = INF.RAT_FRETE + :varVLR_DIF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') AND INF.SEQ_ITEM = :varSEQ_ITEM; END END IF (NEW.VLR_SEGURO > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_SEGURO = (INF.VLR_TOTAL * NEW.VLR_SEGURO) / :varVLR_ITENS WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC'); SELECT SUM(INF.RAT_SEGURO), MIN(INF.SEQ_ITEM) FROM ITENS_NF INF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') INTO :varVLR_CONFERE, :varSEQ_ITEM; IF (NEW.VLR_SEGURO <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = NEW.VLR_SEGURO - varVLR_CONFERE; UPDATE ITENS_NF INF SET INF.RAT_SEGURO = INF.RAT_SEGURO + :varVLR_DIF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') AND INF.SEQ_ITEM = :varSEQ_ITEM; END END IF (NEW.VLR_OUTDESP > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_DESPESAS = (INF.VLR_TOTAL * NEW.VLR_OUTDESP) / :varVLR_ITENS WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC'); SELECT SUM(INF.RAT_DESPESAS), MIN(INF.SEQ_ITEM) FROM ITENS_NF INF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') INTO :varVLR_CONFERE, :varSEQ_ITEM; IF (NEW.VLR_OUTDESP <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = NEW.VLR_OUTDESP - varVLR_CONFERE; UPDATE ITENS_NF INF SET INF.RAT_DESPESAS = INF.RAT_DESPESAS + :varVLR_DIF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') AND INF.SEQ_ITEM = :varSEQ_ITEM; END END IF (NEW.VLR_DESC > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_DESCTO = (INF.VLR_TOTAL * NEW.VLR_DESC) / :varVLR_ITENS WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC'); SELECT SUM(INF.RAT_DESCTO), MIN(INF.SEQ_ITEM) FROM ITENS_NF INF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') INTO :varVLR_CONFERE, :varSEQ_ITEM; IF (NEW.VLR_DESC <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = NEW.VLR_DESC - varVLR_CONFERE; UPDATE ITENS_NF INF SET INF.RAT_DESCTO = INF.RAT_DESCTO + :varVLR_DIF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') AND INF.SEQ_ITEM = :varSEQ_ITEM; END END IF (NEW.VLR_ACRES > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_ACRES = (INF.VLR_TOTAL * NEW.VLR_ACRES) / :varVLR_ITENS WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC'); SELECT SUM(INF.RAT_ACRES), MIN(INF.SEQ_ITEM) FROM ITENS_NF INF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') INTO :varVLR_CONFERE, :varSEQ_ITEM; IF (NEW.VLR_ACRES <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = NEW.VLR_ACRES - varVLR_CONFERE; UPDATE ITENS_NF INF SET INF.RAT_ACRES = INF.RAT_ACRES + :varVLR_DIF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') AND INF.SEQ_ITEM = :varSEQ_ITEM; END END END SELECT SUM(INF.RAT_FRETE + INF.RAT_DESPESAS + INF.RAT_SEGURO + INF.RAT_ACRES - INF.RAT_DESCTO) FROM ITENS_NF INF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SERIE_NF = NEW.SERIE_NF AND INF.MODELO_NF = NEW.MODELO_NF AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') INTO :varTOTAL_FDSDA; IF (varTOTAL_FDSDA > 0) THEN BEGIN FOR SELECT INF.SEQ_ITEM, INF.PERC_BC_ICMS, INF.PERC_ICMS, INF.RAT_FRETE + INF.RAT_DESPESAS + INF.RAT_SEGURO + INF.RAT_ACRES - INF.RAT_DESCTO FROM ITENS_NF INF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND (INF.TIPO_ITEM = 'SERV' OR INF.TIPO_ITEM = 'MERC') AND INF.BASE_ICMS > 0 INTO :varSEQ_ITEM, :varPERC_BC_ICMS, :varPERC_ICMS, :varVLR_FDSDA DO BEGIN IF (varPERC_BC_ICMS > 0) THEN varBC_ICMS_FDSDA = (varVLR_FDSDA * varPERC_BC_ICMS) / 100; ELSE varBC_ICMS_FDSDA = 0; varVLR_ICMS_FDSDA = (varBC_ICMS_FDSDA * varPERC_ICMS) / 100; UPDATE ITENS_NF INF SET INF.BC_ICMS_FDSDA = :varBC_ICMS_FDSDA, INF.VLR_ICMS_FDSDA = :varVLR_ICMS_FDSDA WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQ_ITEM = :varSEQ_ITEM; END SELECT SUM(BC_ICMS_FDSDA), SUM(VLR_ICMS_FDSDA) FROM ITENS_NF INF WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.MODELO_NF = NEW.MODELO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varBASE_ICMS, :varVLR_ICMS; IF (:varBASE_ICMS IS NOT NULL) THEN NEW.BASE_ICMS = NEW.BASE_ICMS + :varBASE_ICMS; IF (:varVLR_ICMS IS NOT NULL) THEN NEW.VLR_ICMS = NEW.VLR_ICMS + :varVLR_ICMS; END IF (NEW.DESC_INSS = 'S') THEN NEW.VLR_TOTAL = NEW.VLR_TOTAL - NEW.VLR_INSS; IF (NEW.DESC_IRRF = 'S') THEN NEW.VLR_TOTAL = NEW.VLR_TOTAL - NEW.VLR_IRRF; IF (NEW.SOMA_SUBST_NF = 'S') THEN NEW.VLR_TOTAL = NEW.VLR_TOTAL + NEW.VLR_SUBST; END^ SET TERM ;^ COMMIT WORK; UPDATE AGRUPADOR SET COD_EMPRESA = 1 WHERE COD_EMPRESA IS NULL; COMMIT WORK;