/*==============================================================*/ /* Table: ORDEM_COMPRA */ /*==============================================================*/ ALTER TABLE ORDEM_COMPRA ADD COMPRADOR_RESP VARCHAR(50); COMMIT WORK; /*==============================================================*/ /* Table: ORCAMENTOS */ /*==============================================================*/ ALTER TABLE ORCAMENTOS ADD ENDERECO_CLI VARCHAR(60); ALTER TABLE ORCAMENTOS ADD CNPJ_CLI VARCHAR(20); ALTER TABLE ORCAMENTOS ADD CIDADE_CLI VARCHAR(45); ALTER TABLE ORCAMENTOS ADD TELEFONE_CLI VARCHAR(25); COMMIT WORK; /*==============================================================*/ /* Table: CONFIG */ /*==============================================================*/ ALTER TABLE CONFIG ADD MERCADO_PLUS CHAR(1); COMMIT WORK; UPDATE CONFIG SET MERCADO_PLUS = 'N'; COMMIT WORK; /*==============================================================*/ /* Table: PARAMETROS */ /*==============================================================*/ INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,28,'CARREGA_PROD_MEMORIA_CF','Carregar Produtos em Memória no C.F. Mercado Plus','STRING','1','N'); INSERT INTO PARAMETROS (COD_PARAMETRO,SEQ_PARAM,NOME_PARAM,DESCR_PARAM,TIPO_PARAM,CLASS_PARAM,VALOR_PARAM) VALUES (1,29,'GRAVA_MAPA_SCHALTER','Gravar Mapa Resumo Schalter','STRING','1',NULL); COMMIT WORK; /*==============================================================*/ /* Table: NOTAFISCAL */ /*==============================================================*/ ALTER TABLE NOTAFISCAL ADD PERC_COMISSAO NUMERIC(9,2); ALTER TABLE NOTAFISCAL ADD VLR_COMISSAO NUMERIC(15,2); COMMIT WORK; /*==============================================================*/ /* Table: ENTRADAS */ /*==============================================================*/ SET TERM ^; ALTER TRIGGER TG_UPDATE_ENTRADAS ACTIVE BEFORE UPDATE POSITION 0 AS DECLARE VARIABLE varCOD_EMPRESA INTEGER; DECLARE VARIABLE varCOD_CLIENTE INTEGER; DECLARE VARIABLE varDOCUMENTO VARCHAR(20); 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 varSEQUENCIA INTEGER; BEGIN /* = = Rateia Acrescimos e descontos entre os Itens de Entrada= =*/ 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.COD_CLIENTE = NEW.COD_CLIENTE AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL; END /* = = Faz somatorios de valores dos Itens de Entrada e procura o primeiro item= =*/ SELECT IET.COD_EMPRESA, IET.COD_CLIENTE, IET.DOCUMENTO, SUM(IET.RAT_VALOR), MIN(IET.SEQUENCIA), SUM(IET.BASE_ICMS), SUM(IET.VLR_ICMS) FROM ITENS_ENTRADA IET WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.COD_CLIENTE = NEW.COD_CLIENTE AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL GROUP BY IET.COD_EMPRESA, IET.COD_CLIENTE, IET.DOCUMENTO INTO :varCOD_EMPRESA, :varCOD_CLIENTE, :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.COD_CLIENTE = NEW.COD_CLIENTE AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.SEQUENCIA = :varSEQUENCIA; /* = = Rateia Valores de Icms e Base Icms que alem dos Itens = =*/ IF ((varVLR_ICMS > 0) AND (varBASE_ICMS > 0)) THEN BEGIN 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.COD_CLIENTE = NEW.COD_CLIENTE AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.VLR_ICMS > 0; END /* = = Faz somatorio do Icms e Base Icms e procura o primeiro item com ICMS = =*/ SELECT IET.COD_EMPRESA, IET.COD_CLIENTE, IET.DOCUMENTO, MIN(IET.SEQUENCIA), SUM(IET.RAT_ICMS), SUM(IET.RAT_BASE_ICMS) FROM ITENS_ENTRADA IET WHERE IET.COD_EMPRESA = NEW.COD_EMPRESA AND IET.COD_CLIENTE = NEW.COD_CLIENTE AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.VLR_ICMS > 0 GROUP BY IET.COD_EMPRESA, IET.COD_CLIENTE, IET.DOCUMENTO INTO :varCOD_EMPRESA, :varCOD_CLIENTE, :varDOCUMENTO, :varSEQUENCIA, :varRAT_ICMS, varRAT_BASE_ICMS; /* = = 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.COD_CLIENTE = NEW.COD_CLIENTE AND IET.DOCUMENTO = NEW.DOCUMENTO AND IET.TIPO_CONTROL = NEW.TIPO_CONTROL AND IET.SEQUENCIA = :varSEQUENCIA; END^ SET TERM ;^ COMMIT WORK;