--script para SQL SERVER
CREATE TABLE saldof ( 
	SALDOF_SEQ        	bigint IDENTITY(1,1) NOT NULL,
	SALDO_SEQ         	bigint NULL,
	EMPRES_CODIGO     	varchar(4) NULL,
	FILIAL_CODIGO     	varchar(4) NULL,
	PRDCAD_CODIGO     	varchar(20) NULL,
	UMVCAD_ID         	bigint NULL DEFAULT ((0)),
	UOMCAD_CODIGO     	varchar(3) NULL,
	SALDO_QDE         	decimal(12,4) NULL DEFAULT ((0)),
	ENDERE_CODFANTASIA	varchar(20) NULL,
	UOMCAD_CODIGOPRI  	varchar(3) NULL,
	SALDO_UOMCAD      	decimal(12,4) NULL DEFAULT ((0)),
	PALETE_SEQ        	bigint NULL DEFAULT ((0)),
	DOCCAB_SEQ        	bigint NULL DEFAULT ((0)),
	DOCITM_SEQ        	bigint NULL DEFAULT ((0)),
	SALDO_FINALIDADE  	varchar(20) NULL DEFAULT ('Saldo'),
	DATAF             	varchar(8) NULL,
	HORAF             	varchar(6) NULL,
	PALETE_BARCODE    	varchar(45) NULL,
	DOCTIP_CODIGO     	varchar(10) NULL,
	DOCCAB_NUMERO     	varchar(20) NULL,
	USUCAD_CODIGO     	varchar(10) NULL,
	USUCAD_NOME       	varchar(100) NULL,
	TAREFA_SEQ        	int NULL,
	TRANS_CODIGO      	numeric(20,0) NULL,
	SALDO_QDEANT      	decimal(12,4) NULL,
	SALDO_UOMCADANT   	varchar(3) NULL 
	);
----fim

CREATE TABLE saldof (
  saldof_seq         NUMBER(12,0) NOT NULL,
  saldo_seq          NUMBER(12,0) NULL,
  empres_codigo      VARCHAR2(4)  NULL,
  filial_codigo      VARCHAR2(4)  NULL,
  prdcad_codigo      VARCHAR2(20) NULL,
  umvcad_id          NUMBER(12,0) DEFAULT (0) NULL,
  uomcad_codigo      VARCHAR2(3)  NULL,
  saldo_qde          NUMBER(12,4) DEFAULT (0) NULL,
  endere_codfantasia VARCHAR2(20) NULL,
  uomcad_codigopri   VARCHAR2(3)  NULL,
  saldo_uomcad       NUMBER(12,4) DEFAULT (0) NULL,
  palete_seq         NUMBER(12,0) DEFAULT (0) NULL,
  doccab_seq         NUMBER(12,0) DEFAULT (0) NULL,
  docitm_seq         NUMBER(12,0) DEFAULT (0) NULL,
  saldo_finalidade   VARCHAR2(20) DEFAULT ('Saldo') NULL,
  dataf              VARCHAR2(8)  NULL,
  horaf              VARCHAR2(6)  NULL,
  saldo_qdeant       NUMBER(12,4) DEFAULT (0) NULL,
  saldo_uomcadant    NUMBER(12,4) DEFAULT (0) NULL
)
/

ALTER TABLE saldof
  ADD PRIMARY KEY (
    saldof_seq
  )
/

CREATE SEQUENCE seq_saldof
  MINVALUE 1
  MAXVALUE 999999999999999999999999999
  INCREMENT BY 1
  NOCYCLE
  NOORDER
  CACHE 20
/

CREATE OR REPLACE TRIGGER tg_bi_saldof
BEFORE INSERT ON saldof
FOR EACH ROW
DECLARE

BEGIN
   SELECT SEQ_SALDOF.NEXTVAL
   INTO :NEW.SALDOF_SEQ FROM dual;
EXCEPTION
    WHEN OTHERS THEN ROLLBACK;
END;
/

CREATE OR REPLACE TRIGGER logsaldoiu
	AFTER INSERT OR UPDATE ON saldo
	FOR EACH ROW
DECLARE
	V_DATAF varchar2(10);
	V_HORAF varchar2(8);
BEGIN
	select to_char(sysdate,'YYYYMMDD') into V_DATAF from dual;
    select to_char(sysdate,'HH24MISS') into V_HORAF from dual;
    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 )
                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 );
END;
/

CREATE OR REPLACE TRIGGER logsaldod
	AFTER DELETE ON saldo
	FOR EACH ROW
DECLARE
	V_DATAF varchar2(10);
	V_HORAF varchar2(8);
BEGIN
	select to_char(sysdate,'YYYYMMDD') into V_DATAF from dual;
    select to_char(sysdate,'HH24MISS') into V_HORAF from dual;
    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 )
                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 );
END;
/
