-- DERECHOS DE AUTOR ING. MARCO T. GONZALEZ
-- VISION INFORMATICA S.A.
-- LICENCIA DE USO A AMNET
-- SECRETO COMERCIAL PROTEGIDO POR ACUERDO DE NO DIVULGACION

CREATE SEQUENCE CONSBITACORA;

DROP TABLE GENBITACORA;

/*==============================================================*/
/* Table: GENBITACORA                                       */
/*==============================================================*/
CREATE TABLE GENBITACORA  (
   CONSECUTIVO        NUMBER(10)                      NOT NULL,
   CIA                CHAR(3)                         ,
   FECHA              DATE                            DEFAULT SYSDATE NOT NULL,
   VALOR              VARCHAR2(30)                    NOT NULL,
   TABLA              VARCHAR2(30)                    NOT NULL,
   COLUMNA            VARCHAR2(30)                    NOT NULL,
   VALORNUEVO         VARCHAR2(512)                   NOT NULL,
   VALORANTERIOR      VARCHAR2(512)                   NOT NULL,
   USUARIO            VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GENBITACORA_PK PRIMARY KEY (CONSECUTIVO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);


Create or replace package GenPKbitacora is
   Procedure insertar(pcia in varchar2,pvalor in varchar2, pTab in varchar2, 
                      pCol in varchar2,pValnuevo in varchar2, pValviejo in varchar2);

end GenPKBitacora;
/

Create or replace package Body GenPKbitacora is

   Procedure insertar(pcia in varchar2,pvalor in varchar2, pTab in varchar2, 
                      pCol in varchar2,pValnuevo in varchar2, pValviejo in varchar2) is
      vcons genbitacora.consecutivo%type;
   Begin

     SELECT CONSBITACORA.NEXTVAL
     INTO vcons
     FROM DUAL;

     insert into genbitacora
            (CIA,CONSECUTIVO, VALOR, FECHA, TABLA, COLUMNA, VALORNUEVO, VALORANTERIOR,USUARIO)
            values (pcia,VCons, pvalor, sysdate, pTab, pCol, pValnuevo, pValviejo,USER);
   End Insertar;

end GenPKbitacora;
/


CREATE OR REPLACE TRIGGER GENERALOGCLIENTE
BEFORE UPDATE OF COD_CLASE,ESTADO,CLASE_CATALOGO,COD_CLIENTE,NOM_CLIENTE,COD_ZONA ON
       Gen_Cliente
FOR EACH ROW
BEGIN
--Inserta un registro en el log de clientes con los
   if :new.ESTADO!=:old.ESTADO then
      GenPKbitacora.insertar(:new.cod_cia, :new.cod_Cliente, 'GEN_CLIENTE', 'ESTADO',
                         :new.ESTADO, :old.ESTADO);
   end if;
   if :new.nom_cliente!=:old.nom_cliente then
      GenPKbitacora.insertar(:new.cod_cia, :new.cod_Cliente, 'GEN_CLIENTE', 'NOM_CLIENTE',
                         :new.nom_cliente, :old.nom_cliente);
   end if;
   if :new.COD_CLASE!=:old.COD_CLASE then
      GenPKbitacora.insertar(:new.cod_cia,:new.cod_Cliente, 'GEN_CLIENTE', 'COD_CLASE',
                         :new.COD_CLASE, :old.COD_CLASE);
   end if;
   if :new.CLASE_CATALOGO!=:old.CLASE_CATALOGO then
      GenPKbitacora.insertar(:new.cod_cia,:new.cod_Cliente, 'GEN_CLIENTE', 'CLASE_CATALOGO',
                         :new.CLASE_CATALOGO, :old.CLASE_CATALOGO);
   end if;
   if :new.COD_CLIENTE!=:old.COD_CLIENTE then
      GenPKbitacora.insertar(:new.cod_cia, :old.cod_Cliente, 'COD_CLIENTE', 'COD_CLIENTE',
                         :new.COD_CLIENTE, :old.COD_CLIENTE);
   end if;
   if :new.COD_ZONA!=:old.COD_ZONA then
      GenPKbitacora.insertar(:new.cod_cia,:new.cod_Cliente, 'COD_ZONA', 'COD_ZONA',
                         :new.COD_ZONA, :old.COD_ZONA);
   end if;
END;
/




define owner="MAYOR"
define role="LLOBET_GENERAL"
set verify off

CREATE PUBLIC SYNONYM GenPKbitacora FOR &OWNER..GenPKbitacora; 
GRANT EXECUTE ON GenPKbitacora TO &ROLE; 

CREATE PUBLIC SYNONYM GENBITACORA FOR &OWNER..GENBITACORA; 
GRANT ALL ON GENBITACORA TO &ROLE; 


