DELIMITER |
CREATE TRIGGER logsaldou AFTER UPDATE ON saldo
FOR EACH ROW
BEGIN
  DECLARE V_DATAF varchar(10);
	DECLARE V_HORAF varchar(8);
	DECLARE V_PALETE_BARCODE varchar(45);
	DECLARE V_DOCTIP_CODIGO varchar(10);
	DECLARE V_DOCCAB_NUMERO varchar(20);
	DECLARE V_USUCAD_CODIGO varchar(10);
	DECLARE V_USUCAD_NOME varchar(100);
	DECLARE V_SALDO_FINALIDADE varchar(20);
	DECLARE V_PALETE_SEQ decimal(18,0);
	DECLARE V_DOCCAB_SEQ decimal(18,0);
	DECLARE V_EMPRES_CODIGO varchar(4);
	DECLARE V_FILIAL_CODIGO varchar(4);
	DECLARE V_SALDO_SEQ bigint;
	DECLARE V_PRDCAD_CODIGO varchar(20);
	DECLARE V_UMVCAD_ID decimal(18,0);
	DECLARE V_UOMCAD_CODIGO varchar(3);
	DECLARE V_ENDERE_CODFANTASIA varchar(20);
	DECLARE V_UOMCAD_CODIGOPRI varchar(3);
	DECLARE V_DOCITM_SEQ decimal(18,0);
	DECLARE V_SALDO_QDE decimal(12,4);
	DECLARE V_SALDO_UOMCAD decimal(12,4);
	DECLARE V_TRANS_CODIGO numeric(20,0);
	DECLARE V_TAREFA_SEQ decimal(18,0);
	DECLARE V_SALDO_QDEANT decimal(12,4);
	DECLARE V_UOMCAD_CODIGOANT decimal(12,4);


  SET V_SALDO_FINALIDADE		 = NEW.SALDO_FINALIDADE;
  SET V_PALETE_SEQ					 = NEW.PALETE_SEQ;
  SET V_DOCCAB_SEQ				 	= NEW.DOCCAB_SEQ;
  SET V_EMPRES_CODIGO				= NEW.EMPRES_CODIGO;
  SET V_FILIAL_CODIGO        = NEW.FILIAL_CODIGO;
  SET V_USUCAD_CODIGO				= NEW.USUCAD_CODIGO;
  SET V_SALDO_SEQ						= NEW.SALDO_SEQ;
  SET V_PRDCAD_CODIGO				= NEW.PRDCAD_CODIGO;
  SET V_UMVCAD_ID						= NEW.UMVCAD_ID;
  SET V_UOMCAD_CODIGO				= NEW.UOMCAD_CODIGO;
  SET V_ENDERE_CODFANTASIA 	= NEW.ENDERE_CODFANTASIA;
  SET V_UOMCAD_CODIGOPRI	 	= NEW.UOMCAD_CODIGOPRI;
  SET V_DOCITM_SEQ				 	= NEW.DOCITM_SEQ;
  SET V_SALDO_QDE						= NEW.SALDO_QDE;
  SET V_SALDO_UOMCAD		 		= NEW.SALDO_UOMCAD;
  SET V_TRANS_CODIGO		 		= NEW.TRANS_CODIGO;
  SET V_TAREFA_SEQ			 		= NEW.TAREFA_SEQ;
  SET V_SALDO_QDEANT				 = OLD.SALDO_QDE;
  SET V_UOMCAD_CODIGOANT 	  = OLD.SALDO_UOMCAD;


  IF (V_SALDO_FINALIDADE='SALDO') THEN

  		-- Obtem DATA e HORA
		-- SET V_DATAF = CAST(getdate() as date);
    -- SET V_HORAF = CAST(getdate() as time);

		 SET V_DATAF = DATE_FORMAT(now(),'%Y%m%d');
     SET V_HORAF = DATE_FORMAT(now(),'%H%i%s');

        -- Obtem o BARCODE do palete
    SET V_PALETE_BARCODE = (SELECT PALETE_BARCODE FROM palete WHERE PALETE_SEQ = V_PALETE_SEQ);

    -- Obtem o TIPO e NÚMERO do documento
    SET V_DOCCAB_NUMERO = (SELECT DOCCAB_NUMERO FROM doccab WHERE DOCCAB_SEQ = V_DOCCAB_SEQ);
    SET V_DOCTIP_CODIGO = (SELECT DOCTIP_CODIGO FROM doccab WHERE DOCCAB_SEQ = V_DOCCAB_SEQ);

    -- Obtem o NOME do usuário
		SET V_USUCAD_NOME = (SELECT USUCAD_NOME
			FROM usucad
			WHERE  EMPRES_CODIGO = V_EMPRES_CODIGO
			   AND FILIAL_CODIGO = V_FILIAL_CODIGO
			   AND USUCAD_CODIGO = V_USUCAD_CODIGO);

    -- Executa o insert na saldof
		INSERT INTO saldof( SALDO_SEQ
                          , DATAF
                          , HORAF
                          , 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
                          , SALDO_QDEANT
                          , SALDO_UOMCADANT
                          , PALETE_BARCODE
                          , DOCTIP_CODIGO
                          , DOCCAB_NUMERO
                          , USUCAD_CODIGO
                          , USUCAD_NOME
                          , TRANS_CODIGO
                          , TAREFA_SEQ
                          )
				VALUES ( V_SALDO_SEQ
                          , V_DATAF
                          , V_HORAF
                          , V_EMPRES_CODIGO
                          , V_FILIAL_CODIGO
                          , V_PRDCAD_CODIGO
                          , V_UMVCAD_ID
                          , V_UOMCAD_CODIGO
                          , V_SALDO_QDE
                          , V_ENDERE_CODFANTASIA
                          , V_UOMCAD_CODIGOPRI
                          , V_SALDO_UOMCAD
                          , V_PALETE_SEQ
                          , V_DOCCAB_SEQ
                          , V_DOCITM_SEQ
                          , V_SALDO_FINALIDADE
                          , V_SALDO_QDEANT
                          , V_UOMCAD_CODIGOANT
                          , V_PALETE_BARCODE
                          , V_DOCTIP_CODIGO
                          , V_DOCCAB_NUMERO
                          , V_USUCAD_CODIGO
                          , V_USUCAD_NOME
                          , V_TRANS_CODIGO
                          , V_TAREFA_SEQ
                          );


  END IF;

END |
