/*================*/ /* Versão: 2.5.43 */ /*==============================================================*/ /* Table: CONFIG */ /*==============================================================*/ ALTER TABLE CONFIG ADD VERSAO_SIS VARCHAR(25); COMMIT WORK; /*==============================================================*/ /* Table: PARAMETROS */ /*==============================================================*/ UPDATE PARAMETROS SET NOME_PARAM = 'USA_CONTROLE_CAIXA', DESCR_PARAM = 'Usa Controle de Caixa no Sistema' WHERE SEQ_PARAM = 41; UPDATE PARAMETROS SET NOME_PARAM = 'VD_LCTO_AUTOMATICO_CAIXA', DESCR_PARAM = 'Venda: Lancto Automático de Venda à Vista no Caixa' WHERE SEQ_PARAM = 51; UPDATE PARAMETROS SET NOME_PARAM = 'CP_LCTO_AUTOMATICO_CAIXA', DESCR_PARAM = 'Compra: Lancto Automático de Venda à Vista no Caixa' WHERE SEQ_PARAM = 54; UPDATE PARAMETROS SET NOME_PARAM = 'VD_COD_BANCO_LCTO', DESCR_PARAM = 'Venda: Código Banco Lancto A Vista no Caixa' WHERE SEQ_PARAM = 52; UPDATE PARAMETROS SET NOME_PARAM = 'CP_COD_BANCO_LCTO', DESCR_PARAM = 'Compra: Código Banco Lancto A Vista no Caixa' WHERE SEQ_PARAM = 55; UPDATE PARAMETROS SET NOME_PARAM = 'VD_COD_DESCR_LCTO', DESCR_PARAM = 'Venda: Código Descrição Caixa Lancto A Vista' WHERE SEQ_PARAM = 53; UPDATE PARAMETROS SET NOME_PARAM = 'CP_COD_DESCR_LCTO', DESCR_PARAM = 'Compra: Código Descrição Caixa Lancto A Vista' WHERE SEQ_PARAM = 56; UPDATE PARAMETROS SET NOME_PARAM = 'CX_TRANSF_ENTRADA', DESCR_PARAM = 'Caixa: Conta de Entrada de Transferências entre Bancos/Contas' WHERE SEQ_PARAM = 61; UPDATE PARAMETROS SET NOME_PARAM = 'CX_TRANSF_SAIDA', DESCR_PARAM = 'Caixa: Conta de Saída de Transferências entre Bancos/Contas' WHERE SEQ_PARAM = 62; COMMIT WORK; INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,99,'PG_LCTO_AUTOMATICO_CAIXA','Contas: Lancto Automático de Pagamento à Vista no Caixa','STRING','2','N'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,100,'RC_LCTO_AUTOMATICO_CAIXA','Contas: Lancto Automático de Recebimento à Vista no Caixa','STRING','2','N'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,101,'PG_COD_BANCO_LCTO','Contas: Código Banco Lancto de Pagamento no Caixa','INTEGER','2',NULL); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,102,'RC_COD_BANCO_LCTO','Contas: Código Banco Lancto de Recebimento no Caixa','INTEGER','2',NULL); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,103,'PG_COD_DESCR_LCTO','Contas: Código Descrição Caixa Lancto de Pagamento','INTEGER','2',NULL); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,104,'RC_COD_DESCR_LCTO','Contas: Código Descrição Caixa Lancto de Recebimento','INTEGER','2',NULL); COMMIT WORK; /*================*/ /* Versão: 2.5.50 */ /*==============================================================*/ /* Table: VENDEDORES */ /*==============================================================*/ UPDATE VENDEDORES SET ATIVO = 'S' WHERE ATIVO IS NULL; COMMIT WORK; /*==============================================================*/ /* Table: TABELA_PRECOS */ /*==============================================================*/ ALTER TABLE TABELA_PRECOS ALTER COLUMN PRECO_VENDA TYPE NUMERIC (18, 3); ALTER TABLE TABELA_PRECOS ALTER COLUMN VLR_PROMO TYPE NUMERIC (18, 3); ALTER TABLE TABELA_PRECOS ALTER COLUMN NOVO_PRECO TYPE NUMERIC (18, 3); ALTER TABLE TABELA_PRECOS ALTER COLUMN ANTIGO_PRECO TYPE NUMERIC (18, 3); COMMIT WORK; /*==============================================================*/ /* Table: PRODUTOS */ /*==============================================================*/ ALTER TABLE PRODUTOS ALTER COLUMN PRECO_VENDA TYPE NUMERIC (18, 3); COMMIT WORK; /*================*/ /* Versão: 2.5.51 */ /*==============================================================*/ /* Table: ITENS_NF */ /*==============================================================*/ ALTER TABLE ITENS_NF ADD BASE_IPI NUMERIC(15,2); ALTER TABLE ITENS_NF ADD COD_ESPVOL SMALLINT; COMMIT WORK; /*==============================================================*/ /* Table: PAR_NFE */ /*==============================================================*/ ALTER TABLE PAR_NFE ADD FORMA_LOGO CHAR(3); ALTER TABLE PAR_NFE ADD CASAS_QTD_PROD SMALLINT; ALTER TABLE PAR_NFE ADD CASAS_VLR_PROD SMALLINT; ALTER TABLE PAR_NFE ADD MRG_SUPERIOR FLOAT; ALTER TABLE PAR_NFE ADD MRG_INFERIOR FLOAT; ALTER TABLE PAR_NFE ADD MRG_ESQUERDA FLOAT; ALTER TABLE PAR_NFE ADD MRG_DIREITA FLOAT; COMMIT WORK; UPDATE PAR_NFE SET FORMA_LOGO = 'NOR', CASAS_QTD_PROD = 1, CASAS_VLR_PROD = 2, MRG_SUPERIOR = 0.8, MRG_INFERIOR = 0.8, MRG_ESQUERDA = 0.6, MRG_DIREITA = 0.51; COMMIT WORK; /*==============================================================*/ /* Table: VOLUMES_NF */ /*==============================================================*/ create table VOLUMES_NF ( COD_EMPRESA SMALLINT not null, TIPO_CONTROL CHAR(1) not null, SERIE_NF SMALLINT not null, NRO_NF INTEGER not null, SEQ_VOLUME SMALLINT not null, QTD_VOL NUMERIC(9,4), COD_ESPVOL SMALLINT, MARCA VARCHAR(25), NUMERACAO VARCHAR(25), PESO_BRUTO NUMERIC(9,3), PESO_LIQUIDO NUMERIC(9,3), constraint PK_VOLUMES_NF primary key (COD_EMPRESA, TIPO_CONTROL, SERIE_NF, NRO_NF, SEQ_VOLUME) ); alter table VOLUMES_NF add constraint FK_VOLUMES_NF_ESPECIES foreign key (COD_ESPVOL) references ESPECIES (COD_ESPVOL); alter table VOLUMES_NF add constraint FK_VOLUMES_NF_NOTAFISCAL foreign key (COD_EMPRESA, TIPO_CONTROL, SERIE_NF, NRO_NF) references NOTAFISCAL (COD_EMPRESA, TIPO_CONTROL, SERIE_NF, NRO_NF); COMMIT WORK; /*==============================================================*/ /* Table: ITENS_PEDIDO */ /*==============================================================*/ ALTER TABLE ITENS_PEDIDO ADD COD_ESPVOL SMALLINT; COMMIT WORK; /*==============================================================*/ /*==============================================================*/ /*============= A T E N Ç Ã O ===============*/ /*==============================================================*/ /* APÓS RODAR AS ALTERAÇÕES ACIMA, DEVERÁ SE EXECUTAR */ /* A FUNÇÃO | Acerto dos Volumes Transportados | PARA FAZER */ /* OS ACERTOS NAS NOTAS FISCAIS JÁ EXISTENTES */ /*==============================================================*/ /*================*/ /* Versão: 2.5.52 */ /*==============================================================*/ /* Table: PRODUTOS */ /*==============================================================*/ ALTER TABLE PRODUTOS ADD COD_ESPVOL SMALLINT; COMMIT WORK; /*================*/ /* Versão: 2.5.53 */ /*==============================================================*/ /* Table: PAR_NFE */ /*==============================================================*/ ALTER TABLE PAR_NFE ADD TIPO_DANFE CHAR(2); ALTER TABLE PAR_NFE ADD FORMATO_DANFE CHAR(1); COMMIT WORK; UPDATE PAR_NFE SET TIPO_DANFE = 'RV', FORMATO_DANFE = 'R'; COMMIT WORK; /*================*/ /* Versão: 2.5.54 */ /*==============================================================*/ /* Table: ITENS_NF */ /*==============================================================*/ ALTER TABLE ITENS_NF ADD BASE_ICMS_SUBST NUMERIC(15,2); ALTER TABLE ITENS_NF ADD VLR_ICMS_SUBST NUMERIC(15,2); 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 varSERIE_NF INTEGER; DECLARE VARIABLE varNRO_NF INTEGER; DECLARE VARIABLE varVLR_ITEM DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS3 DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS3 DECIMAL(15,2); DECLARE VARIABLE varVLR_IPI DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS2 DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS2 DECIMAL(15,2); DECLARE VARIABLE varVLR_SERV DECIMAL(15,2); DECLARE VARIABLE varVLR_CONFERE DECIMAL(15,2); DECLARE VARIABLE varVLR_CONFERE2 DECIMAL(15,2); DECLARE VARIABLE varVLR_DIF DECIMAL(15,2); BEGIN /* SELEÇÃO DOS VALORES DOS ITENS DE PRODUTOS */ SELECT INF.NRO_NF, SUM(INF.VLR_TOTAL), SUM(INF.BASE_ICMS), SUM(INF.VLR_ICMS), SUM(INF.VLR_IPI) 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.TIPO_CONTROL = NEW.TIPO_CONTROL GROUP BY INF.NRO_NF INTO :varNRO_NF, :varVLR_ITEM, :varBASE_ICMS, :varVLR_ICMS, :varVLR_IPI; /* SELEÇÃO DOS VALORES DOS ITENS DE SERVICO */ SELECT SVF.NRO_NF, SUM(SVF.VLR_TOTAL), SUM(SVF.BASE_ICMS), SUM(SVF.VLR_ICMS) FROM SERVICOS_NF SVF WHERE SVF.COD_EMPRESA = NEW.COD_EMPRESA AND SVF.SERIE_NF = NEW.SERIE_NF AND SVF.NRO_NF = NEW.NRO_NF AND SVF.TIPO_CONTROL = NEW.TIPO_CONTROL GROUP BY SVF.NRO_NF INTO :varNRO_NF, :varVLR_SERV, :varBASE_ICMS3, :varVLR_ICMS3; NEW.VLR_TOTAL = NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_OUTDESP + NEW.VLR_IPI + NEW.VLR_ACRES - NEW.VLR_DESC; IF (varVLR_SERV IS NULL) THEN varVLR_SERV = 0; IF (varBASE_ICMS3 IS NULL) THEN varBASE_ICMS3 = 0; IF (varVLR_ICMS3 IS NULL) THEN varVLR_ICMS3 = 0; IF (varVLR_ITEM IS NULL) THEN varVLR_ITEM = 0; IF (varBASE_ICMS IS NULL) THEN varBASE_ICMS = 0; IF (varVLR_ICMS IS NULL) THEN varVLR_ICMS = 0; IF (varVLR_IPI IS NULL) THEN varVLR_IPI = 0; NEW.VLR_PROD = :varVLR_ITEM; NEW.VLR_SERV = :varVLR_SERV; NEW.BASE_ICMS = :varBASE_ICMS + :varBASE_ICMS3; NEW.VLR_ICMS = :varVLR_ICMS + :varVLR_ICMS3; NEW.VLR_IPI = :varVLR_IPI; NEW.VLR_TOTAL = :varVLR_ITEM + :varVLR_SERV + NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_OUTDESP + NEW.VLR_IPI + NEW.VLR_ACRES - NEW.VLR_DESC; IF (varVLR_ITEM > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.VLR_RATEIO = (INF.VLR_TOTAL / :varVLR_ITEM) * (NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_OUTDESP + NEW.VLR_IPI + NEW.VLR_ACRES - NEW.VLR_DESC) WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; IF (NEW.VLR_FRETE > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_FRETE = (INF.VLR_TOTAL * NEW.VLR_FRETE) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_FRETE) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_SEGURO > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_SEGURO = (INF.VLR_TOTAL * NEW.VLR_SEGURO) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_SEGURO) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_OUTDESP > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_DESPESAS = (INF.VLR_TOTAL * NEW.VLR_OUTDESP) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_DESPESAS) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_DESC > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_DESCTO = (INF.VLR_TOTAL * NEW.VLR_DESC) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_DESCTO) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_ACRES > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_ACRES = (INF.VLR_TOTAL * NEW.VLR_ACRES) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_ACRES) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END END SELECT ANF.NRO_NF, SUM(ANF.BASE_ICMS), SUM(ANF.VLR_ICMS) FROM ALIQ_ICMSNF ANF WHERE ANF.COD_EMPRESA = NEW.COD_EMPRESA AND ANF.NRO_NF = NEW.NRO_NF AND ANF.TIPO_CONTROL = NEW.TIPO_CONTROL GROUP BY ANF.NRO_NF INTO :varNRO_NF, :varBASE_ICMS2, :varVLR_ICMS2; IF (:varBASE_ICMS2 IS NOT NULL) THEN BEGIN NEW.BASE_ICMS = NEW.BASE_ICMS + :varBASE_ICMS2; NEW.VLR_ICMS = NEW.VLR_ICMS + :varVLR_ICMS2; UPDATE ITENS_NF INF SET INF.RAT_BASE_ICMS = (:varBASE_ICMS2 * INF.VLR_TOTAL) / :varVLR_ITEM, INF.RAT_VLR_ICMS = (:varVLR_ICMS2 * INF.VLR_TOTAL) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_BASE_ICMS), SUM(INF.RAT_VLR_ICMS) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE, :varVLR_CONFERE2; IF (varBASE_ICMS2 <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = varBASE_ICMS2 - varVLR_CONFERE; UPDATE ITENS_NF INF SET INF.RAT_BASE_ICMS = INF.RAT_BASE_ICMS + :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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END IF (varVLR_ICMS2 <> varVLR_CONFERE2) THEN BEGIN varVLR_DIF = varVLR_ICMS2 - varVLR_CONFERE2; UPDATE ITENS_NF INF SET INF.RAT_VLR_ICMS = INF.RAT_VLR_ICMS + :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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END 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.VLR_SUBST > 0) THEN NEW.VLR_TOTAL = NEW.VLR_TOTAL + NEW.VLR_SUBST; END^ SET TERM ;^ COMMIT WORK; /*================*/ /* Versão: 2.5.58 */ /*==============================================================*/ /* Table: ITENS_NF */ /*==============================================================*/ alter table ITENS_NF add PERC_BC_ICMS NUMERIC(9,2); alter table ITENS_NF add PERC_MVA NUMERIC(9,2); alter table ITENS_NF add PERC_SUBST NUMERIC(9,2); alter table ITENS_NF add CST_IPI CHAR(3); alter table ITENS_NF add BC_ICMS_FDSDA NUMERIC(15,2); alter table ITENS_NF add VLR_ICMS_FDSDA NUMERIC(15,2); alter table ITENS_NF add BC_SUBST_FDSDA NUMERIC(15,2); alter table ITENS_NF add VLR_SUBST_FDSDA NUMERIC(15,2); COMMIT WORK; ALTER TABLE ITENS_NF ALTER COLUMN CST TO CST_ICMS; COMMIT WORK; /*==============================================================*/ /* Table: ALIQ_ICMS */ /*==============================================================*/ ALTER TABLE ALIQ_ICMS ADD PERC_ICMS_SUBST NUMERIC(9,2); 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 varSERIE_NF INTEGER; DECLARE VARIABLE varNRO_NF INTEGER; DECLARE VARIABLE varVLR_ITEM DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS3 DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS3 DECIMAL(15,2); DECLARE VARIABLE varVLR_IPI DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS2 DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS2 DECIMAL(15,2); DECLARE VARIABLE varVLR_SERV DECIMAL(15,2); DECLARE VARIABLE varVLR_CONFERE DECIMAL(15,2); DECLARE VARIABLE varVLR_CONFERE2 DECIMAL(15,2); DECLARE VARIABLE varVLR_DIF DECIMAL(15,2); DECLARE VARIABLE varBASE_SUBST DECIMAL(15,2); DECLARE VARIABLE varVLR_SUBST DECIMAL(15,2); DECLARE VARIABLE varTOTAL_FDSDA DECIMAL(15,2); DECLARE VARIABLE varVLR_FDSDA DECIMAL(15,2); DECLARE VARIABLE varSEQ_ITEM INTEGER; DECLARE VARIABLE varCFOP CHAR(6); DECLARE VARIABLE varPERC_BC_ICMS DECIMAL(15,2); DECLARE VARIABLE varPERC_ICMS DECIMAL(15,2); DECLARE VARIABLE varCST_ICMS CHAR(3); DECLARE VARIABLE varPERC_SUBST DECIMAL(15,2); DECLARE VARIABLE varPERC_MVA DECIMAL(15,2); DECLARE VARIABLE varAUX DECIMAL(15,2); DECLARE VARIABLE varBC_ICMS_FDSDA DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS_FDSDA DECIMAL(15,2); DECLARE VARIABLE varBC_SUBST_FDSDA DECIMAL(15,2); DECLARE VARIABLE varVLR_SUBST_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.BASE_ICMS_SUBST), SUM(INF.VLR_ICMS_SUBST), 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.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_ITEM, :varBASE_ICMS, :varVLR_ICMS, :varVLR_IPI, :varBASE_SUBST, :varVLR_SUBST, :varTOTAL_FDSDA; IF (varTOTAL_FDSDA > 0) THEN BEGIN FOR SELECT INF.SEQUENCIA, INF.CFOP, INF.PERC_BC_ICMS, INF.PERC_ICMS, INF.CST_ICMS, INF.PERC_SUBST, INF.PERC_MVA, 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.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varSEQ_ITEM, :varCFOP, :varPERC_BC_ICMS, :varPERC_ICMS, :varCST_ICMS, :varPERC_SUBST, :varPERC_MVA, :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; varBC_SUBST_FDSDA = 0; varVLR_SUBST_FDSDA = 0; IF ((SUBSTR(varCST_ICMS,2,3) = '10') AND (SUBSTR(varCFOP,1,1) > 5)) THEN BEGIN varBC_SUBST_FDSDA = ((((varVLR_FDSDA * varPERC_MVA) / 100) + varVLR_FDSDA) * varPERC_BC_ICMS) / 100; varAUX = (varBC_SUBST_FDSDA * varPERC_SUBST) / 100; varVLR_SUBST_FDSDA = varAUX - varVLR_ICMS_FDSDA; END UPDATE ITENS_NF INF SET INF.BC_ICMS_FDSDA = :varBC_ICMS_FDSDA, INF.VLR_ICMS_FDSDA = :varVLR_ICMS_FDSDA, INF.BC_SUBST_FDSDA = :varBC_SUBST_FDSDA, INF.VLR_SUBST_FDSDA = :varVLR_SUBST_FDSDA WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = :varSEQ_ITEM; END SELECT SUM(INF.BASE_ICMS + BC_ICMS_FDSDA), SUM(INF.VLR_ICMS + VLR_ICMS_FDSDA), SUM(INF.BASE_ICMS_SUBST + BC_SUBST_FDSDA), SUM(INF.VLR_ICMS_SUBST + VLR_SUBST_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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varBASE_ICMS, :varVLR_ICMS, :varBASE_SUBST, :varVLR_SUBST; END /* SELEÇÃO DOS VALORES DOS ITENS DE SERVICO */ SELECT SUM(SVF.VLR_TOTAL), SUM(SVF.BASE_ICMS), SUM(SVF.VLR_ICMS) FROM SERVICOS_NF SVF WHERE SVF.COD_EMPRESA = NEW.COD_EMPRESA AND SVF.SERIE_NF = NEW.SERIE_NF AND SVF.NRO_NF = NEW.NRO_NF AND SVF.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_SERV, :varBASE_ICMS3, :varVLR_ICMS3; NEW.VLR_TOTAL = NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_OUTDESP + NEW.VLR_IPI + NEW.VLR_ACRES - NEW.VLR_DESC; IF (varVLR_SERV IS NULL) THEN varVLR_SERV = 0; IF (varBASE_ICMS3 IS NULL) THEN varBASE_ICMS3 = 0; IF (varVLR_ICMS3 IS NULL) THEN varVLR_ICMS3 = 0; IF (varVLR_ITEM IS NULL) THEN varVLR_ITEM = 0; IF (varBASE_ICMS IS NULL) THEN varBASE_ICMS = 0; IF (varVLR_ICMS IS NULL) THEN varVLR_ICMS = 0; IF (varVLR_IPI IS NULL) THEN varVLR_IPI = 0; IF (varBASE_SUBST IS NULL) THEN varBASE_SUBST = 0; IF (varVLR_SUBST IS NULL) THEN varVLR_SUBST = 0; NEW.VLR_PROD = :varVLR_ITEM; NEW.VLR_SERV = :varVLR_SERV; NEW.BASE_ICMS = :varBASE_ICMS + :varBASE_ICMS3; NEW.VLR_ICMS = :varVLR_ICMS + :varVLR_ICMS3; NEW.BASE_SUBST = :varBASE_SUBST; NEW.VLR_SUBST = :varVLR_SUBST; NEW.VLR_IPI = :varVLR_IPI; NEW.VLR_TOTAL = :varVLR_ITEM + :varVLR_SERV + NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_OUTDESP + NEW.VLR_IPI + NEW.VLR_ACRES - NEW.VLR_DESC; IF (varVLR_ITEM > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.VLR_RATEIO = (INF.VLR_TOTAL / :varVLR_ITEM) * (NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_OUTDESP + NEW.VLR_IPI + NEW.VLR_ACRES - NEW.VLR_DESC) WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; IF (NEW.VLR_FRETE > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_FRETE = (INF.VLR_TOTAL * NEW.VLR_FRETE) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_FRETE) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_SEGURO > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_SEGURO = (INF.VLR_TOTAL * NEW.VLR_SEGURO) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_SEGURO) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_OUTDESP > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_DESPESAS = (INF.VLR_TOTAL * NEW.VLR_OUTDESP) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_DESPESAS) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_DESC > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_DESCTO = (INF.VLR_TOTAL * NEW.VLR_DESC) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_DESCTO) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_ACRES > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_ACRES = (INF.VLR_TOTAL * NEW.VLR_ACRES) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_ACRES) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END END SELECT ANF.NRO_NF, SUM(ANF.BASE_ICMS), SUM(ANF.VLR_ICMS) FROM ALIQ_ICMSNF ANF WHERE ANF.COD_EMPRESA = NEW.COD_EMPRESA AND ANF.NRO_NF = NEW.NRO_NF AND ANF.TIPO_CONTROL = NEW.TIPO_CONTROL GROUP BY ANF.NRO_NF INTO :varNRO_NF, :varBASE_ICMS2, :varVLR_ICMS2; IF (:varBASE_ICMS2 IS NOT NULL) THEN BEGIN NEW.BASE_ICMS = NEW.BASE_ICMS + :varBASE_ICMS2; NEW.VLR_ICMS = NEW.VLR_ICMS + :varVLR_ICMS2; UPDATE ITENS_NF INF SET INF.RAT_BASE_ICMS = (:varBASE_ICMS2 * INF.VLR_TOTAL) / :varVLR_ITEM, INF.RAT_VLR_ICMS = (:varVLR_ICMS2 * INF.VLR_TOTAL) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_BASE_ICMS), SUM(INF.RAT_VLR_ICMS) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE, :varVLR_CONFERE2; IF (varBASE_ICMS2 <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = varBASE_ICMS2 - varVLR_CONFERE; UPDATE ITENS_NF INF SET INF.RAT_BASE_ICMS = INF.RAT_BASE_ICMS + :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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END IF (varVLR_ICMS2 <> varVLR_CONFERE2) THEN BEGIN varVLR_DIF = varVLR_ICMS2 - varVLR_CONFERE2; UPDATE ITENS_NF INF SET INF.RAT_VLR_ICMS = INF.RAT_VLR_ICMS + :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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END 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.VLR_SUBST > 0) THEN NEW.VLR_TOTAL = NEW.VLR_TOTAL + NEW.VLR_SUBST; END^ SET TERM ;^ COMMIT WORK; /*================*/ /* Versão: 2.5.59 */ /*==============================================================*/ /* Table: NOTAFISCAL */ /*==============================================================*/ ALTER TABLE NOTAFISCAL ADD COD_ICMS_FDSDA SMALLINT; 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 varSERIE_NF INTEGER; DECLARE VARIABLE varNRO_NF INTEGER; DECLARE VARIABLE varVLR_ITEM DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS3 DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS3 DECIMAL(15,2); DECLARE VARIABLE varVLR_IPI DECIMAL(15,2); DECLARE VARIABLE varBASE_ICMS2 DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS2 DECIMAL(15,2); DECLARE VARIABLE varVLR_SERV DECIMAL(15,2); DECLARE VARIABLE varVLR_CONFERE DECIMAL(15,2); DECLARE VARIABLE varVLR_CONFERE2 DECIMAL(15,2); DECLARE VARIABLE varVLR_DIF DECIMAL(15,2); DECLARE VARIABLE varBASE_SUBST DECIMAL(15,2); DECLARE VARIABLE varVLR_SUBST DECIMAL(15,2); DECLARE VARIABLE varTOTAL_FDSDA DECIMAL(15,2); DECLARE VARIABLE varVLR_FDSDA DECIMAL(15,2); DECLARE VARIABLE varSEQ_ITEM INTEGER; DECLARE VARIABLE varCFOP CHAR(6); DECLARE VARIABLE varPERC_BC_ICMS DECIMAL(15,2); DECLARE VARIABLE varPERC_ICMS DECIMAL(15,2); DECLARE VARIABLE varCST_ICMS CHAR(3); DECLARE VARIABLE varPERC_SUBST DECIMAL(15,2); DECLARE VARIABLE varPERC_MVA DECIMAL(15,2); DECLARE VARIABLE varAUX DECIMAL(15,2); DECLARE VARIABLE varBC_ICMS_FDSDA DECIMAL(15,2); DECLARE VARIABLE varVLR_ICMS_FDSDA DECIMAL(15,2); DECLARE VARIABLE varBC_SUBST_FDSDA DECIMAL(15,2); DECLARE VARIABLE varVLR_SUBST_FDSDA DECIMAL(15,2); DECLARE VARIABLE varPERC_BC_FDSDA DECIMAL(15,2); DECLARE VARIABLE varPERC_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.BASE_ICMS_SUBST), SUM(INF.VLR_ICMS_SUBST), 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.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_ITEM, :varBASE_ICMS, :varVLR_ICMS, :varVLR_IPI, :varBASE_SUBST, :varVLR_SUBST, :varTOTAL_FDSDA; IF (varTOTAL_FDSDA > 0) THEN BEGIN varPERC_BC_FDSDA = 0; varPERC_ICMS_FDSDA = 0; IF (NEW.COD_ICMS_FDSDA > 0) THEN BEGIN SELECT ALQ.BASE_ICMS, ALQ.PERC_ICMS FROM ALIQ_ICMS ALQ WHERE ALQ.COD_ICMS = NEW.COD_ICMS_FDSDA INTO :varPERC_BC_FDSDA, :varPERC_ICMS_FDSDA; END FOR SELECT INF.SEQUENCIA, INF.CFOP, INF.PERC_BC_ICMS, INF.PERC_ICMS, INF.CST_ICMS, INF.PERC_SUBST, INF.PERC_MVA, 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.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varSEQ_ITEM, :varCFOP, :varPERC_BC_ICMS, :varPERC_ICMS, :varCST_ICMS, :varPERC_SUBST, :varPERC_MVA, :varVLR_FDSDA DO BEGIN IF (NEW.COD_ICMS_FDSDA > 0) THEN BEGIN IF (varPERC_BC_FDSDA > 0) THEN varBC_ICMS_FDSDA = (varVLR_FDSDA * varPERC_BC_FDSDA) / 100; ELSE varBC_ICMS_FDSDA = 0; varVLR_ICMS_FDSDA = (varBC_ICMS_FDSDA * varPERC_ICMS_FDSDA) / 100; END ELSE 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; END varBC_SUBST_FDSDA = 0; varVLR_SUBST_FDSDA = 0; IF ((SUBSTR(varCST_ICMS,2,3) = '10') AND (SUBSTR(varCFOP,1,1) > 5)) THEN BEGIN varBC_SUBST_FDSDA = ((((varVLR_FDSDA * varPERC_MVA) / 100) + varVLR_FDSDA) * varPERC_BC_ICMS) / 100; varAUX = (varBC_SUBST_FDSDA * varPERC_SUBST) / 100; varVLR_SUBST_FDSDA = varAUX - varVLR_ICMS_FDSDA; END UPDATE ITENS_NF INF SET INF.BC_ICMS_FDSDA = :varBC_ICMS_FDSDA, INF.VLR_ICMS_FDSDA = :varVLR_ICMS_FDSDA, INF.BC_SUBST_FDSDA = :varBC_SUBST_FDSDA, INF.VLR_SUBST_FDSDA = :varVLR_SUBST_FDSDA WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = :varSEQ_ITEM; END SELECT SUM(INF.BASE_ICMS + BC_ICMS_FDSDA), SUM(INF.VLR_ICMS + VLR_ICMS_FDSDA), SUM(INF.BASE_ICMS_SUBST + BC_SUBST_FDSDA), SUM(INF.VLR_ICMS_SUBST + VLR_SUBST_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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varBASE_ICMS, :varVLR_ICMS, :varBASE_SUBST, :varVLR_SUBST; END /* SELEÇÃO DOS VALORES DOS ITENS DE SERVICO */ SELECT SUM(SVF.VLR_TOTAL), SUM(SVF.BASE_ICMS), SUM(SVF.VLR_ICMS) FROM SERVICOS_NF SVF WHERE SVF.COD_EMPRESA = NEW.COD_EMPRESA AND SVF.SERIE_NF = NEW.SERIE_NF AND SVF.NRO_NF = NEW.NRO_NF AND SVF.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_SERV, :varBASE_ICMS3, :varVLR_ICMS3; NEW.VLR_TOTAL = NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_OUTDESP + NEW.VLR_IPI + NEW.VLR_ACRES - NEW.VLR_DESC; IF (varVLR_SERV IS NULL) THEN varVLR_SERV = 0; IF (varBASE_ICMS3 IS NULL) THEN varBASE_ICMS3 = 0; IF (varVLR_ICMS3 IS NULL) THEN varVLR_ICMS3 = 0; IF (varVLR_ITEM IS NULL) THEN varVLR_ITEM = 0; IF (varBASE_ICMS IS NULL) THEN varBASE_ICMS = 0; IF (varVLR_ICMS IS NULL) THEN varVLR_ICMS = 0; IF (varVLR_IPI IS NULL) THEN varVLR_IPI = 0; IF (varBASE_SUBST IS NULL) THEN varBASE_SUBST = 0; IF (varVLR_SUBST IS NULL) THEN varVLR_SUBST = 0; NEW.VLR_PROD = :varVLR_ITEM; NEW.VLR_SERV = :varVLR_SERV; NEW.BASE_ICMS = :varBASE_ICMS + :varBASE_ICMS3; NEW.VLR_ICMS = :varVLR_ICMS + :varVLR_ICMS3; NEW.BASE_SUBST = :varBASE_SUBST; NEW.VLR_SUBST = :varVLR_SUBST; NEW.VLR_IPI = :varVLR_IPI; NEW.VLR_TOTAL = :varVLR_ITEM + :varVLR_SERV + NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_OUTDESP + NEW.VLR_IPI + NEW.VLR_ACRES - NEW.VLR_DESC; IF (varVLR_ITEM > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.VLR_RATEIO = (INF.VLR_TOTAL / :varVLR_ITEM) * (NEW.VLR_FRETE + NEW.VLR_SEGURO + NEW.VLR_OUTDESP + NEW.VLR_IPI + NEW.VLR_ACRES - NEW.VLR_DESC) WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; IF (NEW.VLR_FRETE > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_FRETE = (INF.VLR_TOTAL * NEW.VLR_FRETE) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_FRETE) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_SEGURO > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_SEGURO = (INF.VLR_TOTAL * NEW.VLR_SEGURO) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_SEGURO) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_OUTDESP > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_DESPESAS = (INF.VLR_TOTAL * NEW.VLR_OUTDESP) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_DESPESAS) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_DESC > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_DESCTO = (INF.VLR_TOTAL * NEW.VLR_DESC) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_DESCTO) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END IF (NEW.VLR_ACRES > 0) THEN BEGIN UPDATE ITENS_NF INF SET INF.RAT_ACRES = (INF.VLR_TOTAL * NEW.VLR_ACRES) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_ACRES) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE; 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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END END END SELECT ANF.NRO_NF, SUM(ANF.BASE_ICMS), SUM(ANF.VLR_ICMS) FROM ALIQ_ICMSNF ANF WHERE ANF.COD_EMPRESA = NEW.COD_EMPRESA AND ANF.NRO_NF = NEW.NRO_NF AND ANF.TIPO_CONTROL = NEW.TIPO_CONTROL GROUP BY ANF.NRO_NF INTO :varNRO_NF, :varBASE_ICMS2, :varVLR_ICMS2; IF (:varBASE_ICMS2 IS NOT NULL) THEN BEGIN NEW.BASE_ICMS = NEW.BASE_ICMS + :varBASE_ICMS2; NEW.VLR_ICMS = NEW.VLR_ICMS + :varVLR_ICMS2; UPDATE ITENS_NF INF SET INF.RAT_BASE_ICMS = (:varBASE_ICMS2 * INF.VLR_TOTAL) / :varVLR_ITEM, INF.RAT_VLR_ICMS = (:varVLR_ICMS2 * INF.VLR_TOTAL) / :varVLR_ITEM WHERE INF.COD_EMPRESA = NEW.COD_EMPRESA AND INF.SERIE_NF = NEW.SERIE_NF AND INF.NRO_NF = NEW.NRO_NF AND INF.TIPO_CONTROL = NEW.TIPO_CONTROL; SELECT SUM(INF.RAT_BASE_ICMS), SUM(INF.RAT_VLR_ICMS) 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.TIPO_CONTROL = NEW.TIPO_CONTROL INTO :varVLR_CONFERE, :varVLR_CONFERE2; IF (varBASE_ICMS2 <> varVLR_CONFERE) THEN BEGIN varVLR_DIF = varBASE_ICMS2 - varVLR_CONFERE; UPDATE ITENS_NF INF SET INF.RAT_BASE_ICMS = INF.RAT_BASE_ICMS + :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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END IF (varVLR_ICMS2 <> varVLR_CONFERE2) THEN BEGIN varVLR_DIF = varVLR_ICMS2 - varVLR_CONFERE2; UPDATE ITENS_NF INF SET INF.RAT_VLR_ICMS = INF.RAT_VLR_ICMS + :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.TIPO_CONTROL = NEW.TIPO_CONTROL AND INF.SEQUENCIA = 1; END 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.VLR_SUBST > 0) THEN NEW.VLR_TOTAL = NEW.VLR_TOTAL + NEW.VLR_SUBST; END^ SET TERM ;^ COMMIT WORK; /*================*/ /* Versão: 2.5.60 */ /*==============================================================*/ /* Table: PAR_NFE */ /*==============================================================*/ alter table PAR_NFE add EMAIL_SERVIDOR VARCHAR(50); alter table PAR_NFE add EMAIL_PORTA VARCHAR(10); alter table PAR_NFE add EMAIL_USER VARCHAR(25); alter table PAR_NFE add EMAIL_SENHA VARCHAR(25); alter table PAR_NFE add EMAIL_SSL CHAR(1); alter table PAR_NFE add EMAIL_TITULO VARCHAR(100); alter table PAR_NFE add EMAIL_MESG VARCHAR(5000); alter table PAR_NFE add EMAIL_AUTO CHAR(1); COMMIT WORK; /*================*/ /* Versão: 2.5.61 */ /*==============================================================*/ /* Table: EMPRESAS */ /*==============================================================*/ ALTER TABLE EMPRESAS ADD EMAIL_ENV_NFE VARCHAR(100); ALTER TABLE EMPRESAS ADD EMAIL_REC_NFE VARCHAR(100); COMMIT WORK; /*================*/ /* Versão: 2.5.64 */ /*==============================================================*/ /* Table: PAR_NFE */ /*==============================================================*/ ALTER TABLE PAR_NFE ALTER COLUMN EMAIL_USER TYPE VARCHAR (75) CHARACTER SET ISO8859_1; COMMIT WORK; /*================*/ /* Versão: 2.5.66 */ /*==============================================================*/ DROP TABLE CAIXA_ABREFECHA; /*==============================================================*/ /* Table: CAIXA_ABREFECHA */ /*==============================================================*/ create table CAIXA_ABREFECHA ( COD_EMPRESA SMALLINT not null, COD_OPERADOR SMALLINT not null, DT_MOVTO DATE not null, COD_BANCO SMALLINT, HR_ABRE TIME, VLR_ABRE NUMERIC(15,2), HR_FECHA SMALLINT, VLR_FECHA NUMERIC(15,2), SITUACAO VARCHAR(10), constraint PK_CAIXA_ABREFECHA primary key (COD_EMPRESA, COD_OPERADOR, DT_MOVTO) ); COMMIT WORK; /*==============================================================*/ /* Table: PARAMETROS */ /*==============================================================*/ INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,105,'CX_TIPO_OPERACAO','Caixa: Tipo de Operação (EMPRESA ou TERMINAL)','STRING','2','EMPRESA'); COMMIT WORK; UPDATE PARAMETROS SET CLASS_PARAM = '2' WHERE SEQ_PARAM = 41; COMMIT WORK; /*==============================================================*/ /* Table: NOTAFISCAL */ /*==============================================================*/ UPDATE NOTAFISCAL SET VLR_SUBST = 0 WHERE VLR_SUBST IS NULL; COMMIT WORK; /*================*/ /* Versão: 2.5.67 */ /*==============================================================*/ /* Table: PARAMETROS */ /*==============================================================*/ UPDATE PARAMETROS SET CLASS_PARAM = '2' WHERE SEQ_PARAM = 41; COMMIT WORK;