CREATE OR REPLACE TRIGGER TR_PAF_FISCAL_ML2 before delete or insert or update on FISCAL_ML2 REFERENCING NEW AS NEW OLD AS OLD for each row declare impressora_id number; tipoReg varchar(2); cnpjMatriz varchar(14); ieEmpTransp varchar(14); imEmpTransp varchar(14); numSerie20 varchar(20); mfAdicional varchar(1); tipoEcf varchar(7); marca varchar(20); modelo varchar(20); numUsuario varchar(2); ccf varchar(6); --M coo varchar(6); gnf varchar(6); --L grg varchar(6); --L dataEmissao varchar(8); horaEmissao varchar(6); modalidade varchar(2); categoria varchar(2); identLinha varchar(8); codOrigem varchar(20); codDestino varchar(20); tipoServico varchar(2); dataViagem varchar(8); horaViagem varchar(6); tipoViagem varchar(2); poltrona varchar(7); plataforma varchar(15); codDesconto varchar(8); valorTarifa varchar(8); aliquota varchar(4); --M pedagio varchar(8); taxaEmbarque varchar(8); valorTotal varchar(8); formaPago varchar(2); valorPago varchar(8); nomePassageiro varchar(50); numDocIdentif varchar(40); sac varchar(15); agencia varchar(35); info varchar(433); begin impressora_id := 0; IF DELETING THEN impressora_id := :OLD.fiscalimpressora_id; ELSIF INSERTING THEN impressora_id := :NEW.fiscalimpressora_id; END IF; if user <> 'VTABOL' then update punto_venta p set p.pafinvalido = 1 where p.puntoventa_id = (select puntoventa_id from fiscal_impressora where fiscalimpressora_id = impressora_id); end if; if INSERTING or UPDATING then tipoReg := nvl(:NEW.tipoReg, ''); cnpjMatriz := nvl(:NEW.cnpjMatriz, ''); ieEmpTransp := nvl(:NEW.ieEmpTransp, ''); imEmpTransp := nvl(:NEW.imEmpTransp, ''); numSerie20 := nvl(:NEW.numserie20, ''); mfAdicional := nvl(:NEW.mfAdicional, ''); tipoEcf := nvl(:NEW.tipoEcf, ''); marca := nvl(:NEW.marca, ''); modelo := nvl(:NEW.modelo, ''); numUsuario := nvl(:NEW.numUsuario, ''); coo := nvl(:NEW.coo, ''); dataEmissao := nvl(:NEW.dataEmissao, ''); horaEmissao := nvl(:NEW.horaEmissao, ''); modalidade := nvl(:NEW.modalidade, ''); categoria := nvl(:NEW.categoria, ''); identLinha := nvl(:NEW.identLinha, ''); codOrigem := nvl(:NEW.codOrigem, ''); codDestino := nvl(:NEW.codDestino, ''); tipoServico := nvl(:NEW.tipoServico, ''); dataViagem := nvl(:NEW.dataViagem, ''); horaViagem := nvl(:NEW.horaViagem, ''); tipoViagem := nvl(:NEW.tipoViagem, ''); poltrona := nvl(:NEW.poltrona, ''); plataforma := nvl(:NEW.plataforma, ''); codDesconto := nvl(:NEW.codDesconto, ''); valorTarifa := nvl(:NEW.valorTarifa, ''); pedagio := nvl(:NEW.pedagio, ''); taxaEmbarque := nvl(:NEW.taxaEmbarque, ''); valorTotal := nvl(:NEW.valorTotal, ''); formaPago := nvl(:NEW.formaPago, ''); valorPago := nvl(:NEW.valorPago, ''); nomePassageiro := nvl(:NEW.nomePassageiro, ''); numDocIdentif := nvl(:NEW.numDocIdentif, ''); sac := nvl(:NEW.sac, ''); agencia := nvl(:NEW.agencia, ''); if UPPER(tipoReg) = 'M2' then ccf := nvl(:NEW.ccf, ''); aliquota := nvl(:NEW.aliquota, ''); gnf := ''; grg := ''; else gnf := nvl(:NEW.gnf, ''); grg := nvl(:NEW.grg, ''); ccf := ''; aliquota := ''; end if; --info := tipoReg || cnpjMatriz || ieEmpTransp || imEmpTransp || numSerie20 || mfAdicional || tipoEcf || marca || modelo || numUsuario || ccf || coo || gnf || grg || dataEmissao || horaEmissao || modalidade || categoria || identLinha || codOrigem || codDestino || tipoServico || dataViagem || horaViagem || tipoViagem || poltrona || plataforma || codDesconto || valorTarifa || aliquota || pedagio || taxaEmbarque || valorTotal || formaPago || valorPago || nomePassageiro || numDocIdentif || sac || agencia; --info := SYS.DBMS_CRYPTO.Hash (UTL_I18N.STRING_TO_RAW (info, 'AL32UTF8'), 2); info := SYS.DBMS_CRYPTO.Hash (UTL_I18N.STRING_TO_RAW (tipoReg || cnpjMatriz || ieEmpTransp || imEmpTransp || numSerie20 || mfAdicional || tipoEcf || marca || modelo || numUsuario || ccf || coo || gnf || grg || dataEmissao || horaEmissao || modalidade || categoria || identLinha || codOrigem || codDestino || tipoServico || dataViagem || horaViagem || tipoViagem || poltrona || plataforma || codDesconto || valorTarifa || aliquota || pedagio || taxaEmbarque || valorTotal || formaPago || valorPago || nomePassageiro || numDocIdentif || sac || agencia, 'AL32UTF8'), 2); if user <> 'VTABOL' then :NEW.hashbd := info; else :NEW.hashvta := SYS.DBMS_CRYPTO.Hash (UTL_I18N.STRING_TO_RAW ('RJA2014' || info, 'AL32UTF8'), 2); :NEW.hashbd := info; end if; end if; end;