ALTER TABLE saldof
ADD (
    PALETE_BARCODE VARCHAR2(45) NULL,
    DOCTIP_CODIGO VARCHAR2(10) NULL,
    DOCCAB_NUMERO VARCHAR2(20) NULL,
    USUCAD_CODIGO VARCHAR2(10) NULL,
    USUCAD_NOME VARCHAR2(100) NULL,
    TRANS_CODIGO NUMBER(20,0) NULL,
    TAREFA_SEQ  integer null
)

CREATE OR REPLACE TRIGGER LOGSALDOIU
	AFTER INSERT OR UPDATE ON saldo
	FOR EACH ROW
DECLARE
	V_DATAF varchar2(10);
	V_HORAF varchar2(8);
    V_PALETE_BARCODE VARCHAR2(45);
    V_DOCTIP_CODIGO VARCHAR2(10);
    V_DOCCAB_NUMERO VARCHAR2(20);
    V_USUCAD_CODIGO VARCHAR2(10);
    V_USUCAD_NOME VARCHAR2(100);
BEGIN
    IF :NEW.SALDO_FINALIDADE = 'SALDO' THEN
        --Pega a Data e Hora
        select to_char(sysdate,'YYYYMMDD') into V_DATAF from dual;
        select to_char(sysdate,'HH24MISS') into V_HORAF from dual;
        --Consegue o Barcode do Palete
        begin
			select PALETE_BARCODE into V_PALETE_BARCODE
			  from palete
			 where PALETE_SEQ = :NEW.PALETE_SEQ;
        exception
            WHEN NO_DATA_FOUND  THEN
                NULL;
        end;
        --Pega o Tipo e Numero do Documento
        begin
            select DOCCAB_NUMERO
                 , DOCTIP_CODIGO
              into V_DOCCAB_NUMERO
                 , V_DOCTIP_CODIGO
              from doccab
             where DOCCAB_SEQ = :NEW.DOCCAB_SEQ;
        exception
            WHEN NO_DATA_FOUND  THEN
                NULL;
        end;
        --Pega o Nome do Usuario
        begin
            select USUCAD_NOME
              into V_USUCAD_NOME
              from usucad
             where EMPRES_CODIGO = :NEW.EMPRES_CODIGO
               and FILIAL_CODIGO = :NEW.FILIAL_CODIGO
               and USUCAD_CODIGO = :NEW.USUCAD_CODIGO;
        exception
            WHEN NO_DATA_FOUND  THEN
                NULL;
        end;

        --Executa o insert na saldof
        insert into saldof( SALDO_SEQ
                          , EMPRES_CODIGO
                          , FILIAL_CODIGO
                          , PRDCAD_CODIGO
                          , UMVCAD_ID
                          , UOMCAD_CODIGO
                          , SALDO_QDE
                          , ENDERE_CODFANTASIA
                          , UOMCAD_CODIGOPRI
                          , SALDO_UOMCAD
                          , PALETE_SEQ
                          , DOCCAB_SEQ
                          , DOCITM_SEQ
                          , SALDO_FINALIDADE
                          , DATAF
                          , HORAF
                          , SALDO_QDEANT
                          , SALDO_UOMCADANT
                          , PALETE_BARCODE
                          , DOCTIP_CODIGO
                          , DOCCAB_NUMERO
                          , USUCAD_CODIGO
                          , USUCAD_NOME
                          , TRANS_CODIGO
                          , TAREFA_SEQ
                          )
                    values( :NEW.SALDO_SEQ
                          , :NEW.EMPRES_CODIGO
                          , :NEW.FILIAL_CODIGO
                          , :NEW.PRDCAD_CODIGO
                          , :NEW.UMVCAD_ID
                          , :NEW.UOMCAD_CODIGO
                          , :NEW.SALDO_QDE
                          , :NEW.ENDERE_CODFANTASIA
                          , :NEW.UOMCAD_CODIGOPRI
                          , :NEW.SALDO_UOMCAD
                          , :NEW.PALETE_SEQ
                          , :NEW.DOCCAB_SEQ
                          , :NEW.DOCITM_SEQ
                          , :NEW.SALDO_FINALIDADE
                          , V_DATAF
                          , V_HORAF
                          , :OLD.SALDO_QDE
                          , :OLD.SALDO_UOMCAD
                          , V_PALETE_BARCODE
                          , V_DOCTIP_CODIGO
                          , V_DOCCAB_NUMERO
                          , :NEW.USUCAD_CODIGO
                          , V_USUCAD_NOME
                          , :NEW.TRANS_CODIGO
                          , :NEW.TAREFA_SEQ
                          );
    END IF;
END;





CREATE OR REPLACE TRIGGER LOGSALDOD
	BEFORE DELETE ON saldo
	FOR EACH ROW
DECLARE
	V_DATAF varchar2(10);
	V_HORAF varchar2(8);
    V_PALETE_BARCODE VARCHAR2(45);
    V_DOCTIP_CODIGO VARCHAR2(10);
    V_DOCCAB_NUMERO VARCHAR2(20);
    V_USUCAD_CODIGO VARCHAR2(10);
    V_USUCAD_NOME VARCHAR2(100);
BEGIN
    IF :OLD.SALDO_FINALIDADE = 'SALDO' THEN
        --Pega a Data e Hora
        select to_char(sysdate,'YYYYMMDD') into V_DATAF from dual;
        select to_char(sysdate,'HH24MISS') into V_HORAF from dual;
        --Consegue o Barcode do Palete
        begin
			select PALETE_BARCODE into V_PALETE_BARCODE
			  from palete
			 where PALETE_SEQ = :OLD.PALETE_SEQ;
        exception
            WHEN NO_DATA_FOUND  THEN
                NULL;
        end;
        --Pega o Tipo e Numero do Documento
        begin
			select DOCCAB_NUMERO
				 , DOCTIP_CODIGO
			  into V_DOCCAB_NUMERO
				 , V_DOCTIP_CODIGO
			  from doccab
			 where DOCCAB_SEQ = :OLD.DOCCAB_SEQ;
        exception
            WHEN NO_DATA_FOUND  THEN
                NULL;
        end;
        --Pega o Nome do Usuario
        begin
			select USUCAD_NOME
			  into V_USUCAD_NOME
			  from usucad
			 where EMPRES_CODIGO = :OLD.EMPRES_CODIGO
			   and FILIAL_CODIGO = :OLD.FILIAL_CODIGO
			   and USUCAD_CODIGO = :OLD.USUCAD_CODIGO;
        exception
            WHEN NO_DATA_FOUND  THEN
                NULL;
        end;
        --Executa o insert na saldof
        insert into saldof( SALDO_SEQ
                          , EMPRES_CODIGO
                          , FILIAL_CODIGO
                          , PRDCAD_CODIGO
                          , UMVCAD_ID
                          , UOMCAD_CODIGO
                          , SALDO_QDE
                          , ENDERE_CODFANTASIA
                          , UOMCAD_CODIGOPRI
                          , SALDO_UOMCAD
                          , PALETE_SEQ
                          , DOCCAB_SEQ
                          , DOCITM_SEQ
                          , SALDO_FINALIDADE
                          , DATAF
                          , HORAF
                          , SALDO_QDEANT
                          , SALDO_UOMCADANT
                          , PALETE_BARCODE
                          , DOCTIP_CODIGO
                          , DOCCAB_NUMERO
                          , USUCAD_CODIGO
                          , USUCAD_NOME
                          , TRANS_CODIGO
                          , TAREFA_SEQ
                          )
                    values( :OLD.SALDO_SEQ
                          , :OLD.EMPRES_CODIGO
                          , :OLD.FILIAL_CODIGO
                          , :OLD.PRDCAD_CODIGO
                          , :OLD.UMVCAD_ID
                          , :OLD.UOMCAD_CODIGO
                          , 0
                          , :OLD.ENDERE_CODFANTASIA
                          , :OLD.UOMCAD_CODIGOPRI
                          , 0
                          , :OLD.PALETE_SEQ
                          , :OLD.DOCCAB_SEQ
                          , :OLD.DOCITM_SEQ
                          , :OLD.SALDO_FINALIDADE
                          , V_DATAF
                          , V_HORAF
                          , :OLD.SALDO_QDE
                          , :OLD.SALDO_UOMCAD
                          , V_PALETE_BARCODE
                          , V_DOCTIP_CODIGO
                          , V_DOCCAB_NUMERO
                          , :OLD.USUCAD_CODIGO
                          , V_USUCAD_NOME
                          , :OLD.TRANS_CODIGO
                          , :OLD.TAREFA_SEQ
                          );
    END IF;
END;
