DROP TABLE cn_table_vig_seq CASCADE CONSTRAINTS
 ;
DROP TABLE cn_table_seq CASCADE CONSTRAINTS
 ;
DROP TABLE cn_alias CASCADE CONSTRAINTS
 ;
DROP TABLE cn_tipo_comp_periodo_valido CASCADE CONSTRAINTS
 ;
DROP TABLE cn_movimiento_contable CASCADE CONSTRAINTS
 ;
DROP TABLE cn_sub_aux CASCADE CONSTRAINTS
 ;
DROP TABLE cn_sub_centro_costo CASCADE CONSTRAINTS
 ;
DROP TABLE cn_centro_costo CASCADE CONSTRAINTS
 ;
DROP TABLE cn_auxiliar CASCADE CONSTRAINTS
 ;
DROP TABLE cn_tipo_sub_aux CASCADE CONSTRAINTS
 ;
DROP TABLE cn_catalogo CASCADE CONSTRAINTS
 ;
DROP TABLE cn_tipo_retencion CASCADE CONSTRAINTS
 ;
DROP TABLE cn_estado_catalogo CASCADE CONSTRAINTS
 ;
DROP TABLE cn_cuenta_mayor CASCADE CONSTRAINTS
 ;
DROP TABLE cn_grupo_cuenta CASCADE CONSTRAINTS
 ;
DROP TABLE cn_clase_cuenta CASCADE CONSTRAINTS
 ;
DROP TABLE cn_documento CASCADE CONSTRAINTS
 ;
DROP TABLE cn_td CASCADE CONSTRAINTS
 ;
DROP TABLE cn_mae_ter CASCADE CONSTRAINTS
 ;
DROP TABLE cn_control_cad CASCADE CONSTRAINTS
 ;
DROP TABLE cn_tipo_comprobante CASCADE CONSTRAINTS
 ;
DROP TABLE cn_control_periodo CASCADE CONSTRAINTS
 ;
DROP TABLE cn_vigencia CASCADE CONSTRAINTS
 ;
DROP TABLE cn_periodo_contable CASCADE CONSTRAINTS
 ;
DROP TABLE cn_centro_operacion CASCADE CONSTRAINTS
 ;
DROP TABLE cn_cia CASCADE CONSTRAINTS
 ;
/**********************************/
/* Table Name: cn_cia */
/**********************************/
CREATE TABLE cn_cia(
 id_cia NUMBER NOT NULL,
 raz_soc VARCHAR2(128) NOT NULL,
 nro_iden NUMBER NOT NULL
)
 ;
DROP SEQUENCE cn_cia_SEQ
 ;
CREATE SEQUENCE cn_cia_SEQ NOMAXVALUE NOCACHE NOORDER NOCYCLE
 ;
DROP TRIGGER cn_cia_TRG
 ;
CREATE TRIGGER cn_cia_TRG
BEFORE INSERT ON cn_cia
FOR EACH ROW
BEGIN
SELECT cn_cia_SEQ.NEXTVAL INTO :NEW.id_cia FROM DUAL;
END;
 ;
COMMENT ON TABLE cn_cia is 'cn_cia'
 ;
COMMENT ON COLUMN cn_cia.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_cia.raz_soc is 'raz_soc'
 ;
COMMENT ON COLUMN cn_cia.nro_iden is 'nro_iden'
 ;
/**********************************/
/* Table Name: cn_centro_operacion */
/**********************************/
CREATE TABLE cn_centro_operacion(
 id_cen_op NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 nom_cen_op VARCHAR2(128) NOT NULL,
 descr_cen_op VARCHAR2(128) NOT NULL,
 activo NUMBER(1) DEFAULT 1 NOT NULL
)
 ;
COMMENT ON TABLE cn_centro_operacion is 'cn_centro_operacion'
 ;
COMMENT ON COLUMN cn_centro_operacion.id_cen_op is 'id_cen_op'
 ;
COMMENT ON COLUMN cn_centro_operacion.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_centro_operacion.nom_cen_op is 'nom_cen_op'
 ;
COMMENT ON COLUMN cn_centro_operacion.descr_cen_op is 'descr_cen_op'
 ;
COMMENT ON COLUMN cn_centro_operacion.activo is 'activo'
 ;
/**********************************/
/* Table Name: cn_periodo_contable */
/**********************************/
CREATE TABLE cn_periodo_contable(
 id_periodo_contable NUMBER NOT NULL,
 nom_periodo VARCHAR2(16) NOT NULL
)
 ;
COMMENT ON TABLE cn_periodo_contable is 'cn_periodo_contable'
 ;
COMMENT ON COLUMN cn_periodo_contable.id_periodo_contable is 'id_periodo_contable'
 ;
COMMENT ON COLUMN cn_periodo_contable.nom_periodo is 'nom_periodo'
 ;
/**********************************/
/* Table Name: cn_vigencia */
/**********************************/
CREATE TABLE cn_vigencia(
 id_vigencia NUMBER NOT NULL
)
 ;
COMMENT ON TABLE cn_vigencia is 'cn_vigencia'
 ;
COMMENT ON COLUMN cn_vigencia.id_vigencia is 'id_vigencia'
 ;
/**********************************/
/* Table Name: cn_control_periodo */
/**********************************/
CREATE TABLE cn_control_periodo(
 id_control_periodo NUMBER NOT NULL,
 id_vigencia NUMBER NOT NULL,
 id_periodo_contable NUMBER NOT NULL,
 id_cen_op NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 activo NUMBER(1) DEFAULT 1 NOT NULL
)
 ;
COMMENT ON TABLE cn_control_periodo is 'cn_control_periodo'
 ;
COMMENT ON COLUMN cn_control_periodo.id_control_periodo is 'id_control_periodo'
 ;
COMMENT ON COLUMN cn_control_periodo.id_vigencia is 'id_vigencia'
 ;
COMMENT ON COLUMN cn_control_periodo.id_periodo_contable is 'id_periodo_contable'
 ;
COMMENT ON COLUMN cn_control_periodo.id_cen_op is 'id_cen_op'
 ;
COMMENT ON COLUMN cn_control_periodo.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_control_periodo.activo is 'activo'
 ;
/**********************************/
/* Table Name: cn_tipo_comprobante */
/**********************************/
CREATE TABLE cn_tipo_comprobante(
 id_tipo_comprobante NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 nom_tipo_comprobante VARCHAR2(128) NOT NULL,
 nom_corto VARCHAR2(32) NOT NULL,
 activo NUMBER(1) DEFAULT 1 NOT NULL
)
 ;
COMMENT ON TABLE cn_tipo_comprobante is 'cn_tipo_comprobante'
 ;
COMMENT ON COLUMN cn_tipo_comprobante.id_tipo_comprobante is 'id_tipo_comprobante'
 ;
COMMENT ON COLUMN cn_tipo_comprobante.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_tipo_comprobante.nom_tipo_comprobante is 'nom_tipo_comprobante'
 ;
COMMENT ON COLUMN cn_tipo_comprobante.nom_corto is 'nom_corto'
 ;
COMMENT ON COLUMN cn_tipo_comprobante.activo is 'activo'
 ;
/**********************************/
/* Table Name: cn_control_cad */
/**********************************/
CREATE TABLE cn_control_cad(
 id_cad NUMBER NOT NULL,
 id_vigencia NUMBER NOT NULL,
 id_cen_op NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 id_periodo_contable NUMBER NOT NULL,
 id_tipo_comprobante NUMBER NOT NULL,
 fecha_cad DATE NOT NULL,
 tot_debito NUMBER DEFAULT 0 NOT NULL,
 tot_credito NUMBER DEFAULT 0 NOT NULL,
 id_ter_genero NUMBER NULL ,
 id_ter_reviso NUMBER NULL ,
 id_ter_aprobo NUMBER NULL 
)
 ;
COMMENT ON TABLE cn_control_cad is 'cn_control_cad'
 ;
COMMENT ON COLUMN cn_control_cad.id_cad is 'id_cad'
 ;
COMMENT ON COLUMN cn_control_cad.id_vigencia is 'id_vigencia'
 ;
COMMENT ON COLUMN cn_control_cad.id_cen_op is 'id_cen_op'
 ;
COMMENT ON COLUMN cn_control_cad.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_control_cad.id_periodo_contable is 'id_periodo_contable'
 ;
COMMENT ON COLUMN cn_control_cad.id_tipo_comprobante is 'id_tipo_comprobante'
 ;
COMMENT ON COLUMN cn_control_cad.fecha_cad is 'fecha_cad'
 ;
COMMENT ON COLUMN cn_control_cad.tot_debito is 'tot_debito'
 ;
COMMENT ON COLUMN cn_control_cad.tot_credito is 'tot_credito'
 ;
COMMENT ON COLUMN cn_control_cad.id_ter_genero is 'id_ter_genero'
 ;
COMMENT ON COLUMN cn_control_cad.id_ter_reviso is 'id_ter_reviso'
 ;
COMMENT ON COLUMN cn_control_cad.id_ter_aprobo is 'id_ter_aprobo'
 ;
/**********************************/
/* Table Name: cn_mae_ter */
/**********************************/
CREATE TABLE cn_mae_ter(
 id_mae_ter NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 nitocc VARCHAR2(32) NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 email VARCHAR2(128) NULL 
)
 ;
COMMENT ON TABLE cn_mae_ter is 'cn_mae_ter'
 ;
COMMENT ON COLUMN cn_mae_ter.id_mae_ter is 'id_mae_ter'
 ;
COMMENT ON COLUMN cn_mae_ter.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_mae_ter.nitocc is 'nitocc'
 ;
COMMENT ON COLUMN cn_mae_ter.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_mae_ter.email is 'email'
 ;
/**********************************/
/* Table Name: cn_td */
/**********************************/
CREATE TABLE cn_td(
 id_td NUMBER NOT NULL,
 cod_td VARCHAR2(2) NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 nom_cort VARCHAR2(32) NOT NULL
)
 ;
COMMENT ON TABLE cn_td is 'cn_td'
 ;
COMMENT ON COLUMN cn_td.id_td is 'id_td'
 ;
COMMENT ON COLUMN cn_td.cod_td is 'cod_td'
 ;
COMMENT ON COLUMN cn_td.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_td.nom_cort is 'nom_cort'
 ;
/**********************************/
/* Table Name: cn_documento */
/**********************************/
CREATE TABLE cn_documento(
 id_documento NUMBER NOT NULL,
 id_cad NUMBER NOT NULL,
 id_vigencia NUMBER NOT NULL,
 id_cen_op NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 id_td NUMBER NOT NULL,
 id_mae_ter NUMBER NULL ,
 descr_mto VARCHAR2(256) NULL ,
 doc_soporte VARCHAR2(32) NULL ,
 fecha_soporte DATE NULL 
)
 ;
COMMENT ON TABLE cn_documento is 'cn_documento'
 ;
COMMENT ON COLUMN cn_documento.id_documento is 'id_documento'
 ;
COMMENT ON COLUMN cn_documento.id_cad is 'id_cad'
 ;
COMMENT ON COLUMN cn_documento.id_vigencia is 'id_vigencia'
 ;
COMMENT ON COLUMN cn_documento.id_cen_op is 'id_cen_op'
 ;
COMMENT ON COLUMN cn_documento.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_documento.id_td is 'id_td'
 ;
COMMENT ON COLUMN cn_documento.id_mae_ter is 'id_mae_ter'
 ;
COMMENT ON COLUMN cn_documento.descr_mto is 'descr_mto'
 ;
COMMENT ON COLUMN cn_documento.doc_soporte is 'doc_soporte'
 ;
COMMENT ON COLUMN cn_documento.fecha_soporte is 'fecha_soporte'
 ;
/**********************************/
/* Table Name: cn_clase_cuenta */
/**********************************/
CREATE TABLE cn_clase_cuenta(
 id_clase_cuenta NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 digito VARCHAR2(1) NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 nom_corto VARCHAR2(32) NOT NULL,
 naturaleza VARCHAR2(1) DEFAULT 'D' NOT NULL
)
 ;
COMMENT ON TABLE cn_clase_cuenta is 'cn_clase_cuenta'
 ;
COMMENT ON COLUMN cn_clase_cuenta.id_clase_cuenta is 'id_clase_cuenta'
 ;
COMMENT ON COLUMN cn_clase_cuenta.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_clase_cuenta.digito is 'digito'
 ;
COMMENT ON COLUMN cn_clase_cuenta.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_clase_cuenta.nom_corto is 'nom_corto'
 ;
COMMENT ON COLUMN cn_clase_cuenta.naturaleza is 'naturaleza'
 ;
/**********************************/
/* Table Name: cn_grupo_cuenta */
/**********************************/
CREATE TABLE cn_grupo_cuenta(
 id_grupo_cuenta NUMBER NOT NULL,
 id_clase_cuenta NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 digito VARCHAR2(1) NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 nom_corto VARCHAR2(32) NOT NULL
)
 ;
COMMENT ON TABLE cn_grupo_cuenta is 'cn_grupo_cuenta'
 ;
COMMENT ON COLUMN cn_grupo_cuenta.id_grupo_cuenta is 'id_grupo_cuenta'
 ;
COMMENT ON COLUMN cn_grupo_cuenta.id_clase_cuenta is 'id_clase_cuenta'
 ;
COMMENT ON COLUMN cn_grupo_cuenta.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_grupo_cuenta.digito is 'digito'
 ;
COMMENT ON COLUMN cn_grupo_cuenta.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_grupo_cuenta.nom_corto is 'nom_corto'
 ;
/**********************************/
/* Table Name: cn_cuenta_mayor */
/**********************************/
CREATE TABLE cn_cuenta_mayor(
 id_cuenta_mayor NUMBER NOT NULL,
 id_grupo_cuenta NUMBER NOT NULL,
 id_clase_cuenta NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 digitos VARCHAR2(2) NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 nom_corto VARCHAR2(32) NOT NULL,
 naturaleza VARCHAR2(1) DEFAULT 'D' NOT NULL
)
 ;
COMMENT ON TABLE cn_cuenta_mayor is 'cn_cuenta_mayor'
 ;
COMMENT ON COLUMN cn_cuenta_mayor.id_cuenta_mayor is 'id_cuenta_mayor'
 ;
COMMENT ON COLUMN cn_cuenta_mayor.id_grupo_cuenta is 'id_grupo_cuenta'
 ;
COMMENT ON COLUMN cn_cuenta_mayor.id_clase_cuenta is 'id_clase_cuenta'
 ;
COMMENT ON COLUMN cn_cuenta_mayor.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_cuenta_mayor.digitos is 'digitos'
 ;
COMMENT ON COLUMN cn_cuenta_mayor.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_cuenta_mayor.nom_corto is 'nom_corto'
 ;
COMMENT ON COLUMN cn_cuenta_mayor.naturaleza is 'naturaleza'
 ;
/**********************************/
/* Table Name: cn_estado_catalogo */
/**********************************/
CREATE TABLE cn_estado_catalogo(
 id_estado_catalogo NUMBER NOT NULL,
 usa_tercero NUMBER(1) NOT NULL,
 usa_auxiliar NUMBER(1) NOT NULL,
 usa_cen_cto NUMBER(1) NOT NULL,
 usa_sub_cen_cto NUMBER(1) NOT NULL
)
 ;
DROP SEQUENCE cn_estado_catalogo_SEQ
 ;
CREATE SEQUENCE cn_estado_catalogo_SEQ NOMAXVALUE NOCACHE NOORDER NOCYCLE
 ;
DROP TRIGGER cn_estado_catalogo_TRG
 ;
CREATE TRIGGER cn_estado_catalogo_TRG
BEFORE INSERT ON cn_estado_catalogo
FOR EACH ROW
BEGIN
SELECT cn_estado_catalogo_SEQ.NEXTVAL INTO :NEW.id_estado_catalogo FROM DUAL;
END;
 ;
COMMENT ON TABLE cn_estado_catalogo is 'cn_estado_catalogo'
 ;
COMMENT ON COLUMN cn_estado_catalogo.id_estado_catalogo is 'id_estado_catalogo'
 ;
COMMENT ON COLUMN cn_estado_catalogo.usa_tercero is 'usa_tercero'
 ;
COMMENT ON COLUMN cn_estado_catalogo.usa_auxiliar is 'usa_auxiliar'
 ;
COMMENT ON COLUMN cn_estado_catalogo.usa_cen_cto is 'usa_cen_cto'
 ;
COMMENT ON COLUMN cn_estado_catalogo.usa_sub_cen_cto is 'usa_sub_cen_cto'
 ;
/**********************************/
/* Table Name: cn_tipo_retencion */
/**********************************/
CREATE TABLE cn_tipo_retencion(
 id_tipo_retencion NUMBER NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 nom_corto VARCHAR2(32) NOT NULL
)
 ;
DROP SEQUENCE cn_tipo_retencion_SEQ
 ;
CREATE SEQUENCE cn_tipo_retencion_SEQ NOMAXVALUE NOCACHE NOORDER NOCYCLE
 ;
DROP TRIGGER cn_tipo_retencion_TRG
 ;
CREATE TRIGGER cn_tipo_retencion_TRG
BEFORE INSERT ON cn_tipo_retencion
FOR EACH ROW
BEGIN
SELECT cn_tipo_retencion_SEQ.NEXTVAL INTO :NEW.id_tipo_retencion FROM DUAL;
END;
 ;
COMMENT ON TABLE cn_tipo_retencion is 'cn_tipo_retencion'
 ;
COMMENT ON COLUMN cn_tipo_retencion.id_tipo_retencion is 'id_tipo_retencion'
 ;
COMMENT ON COLUMN cn_tipo_retencion.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_tipo_retencion.nom_corto is 'nom_corto'
 ;
/**********************************/
/* Table Name: cn_catalogo */
/**********************************/
CREATE TABLE cn_catalogo(
 id_catalogo NUMBER NOT NULL,
 id_cuenta_mayor NUMBER NOT NULL,
 id_grupo_cuenta NUMBER NOT NULL,
 id_clase_cuenta NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 id_estado_catalogo NUMBER NOT NULL,
 id_tipo_retencion NUMBER NULL ,
 digitos VARCHAR2(2) NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 nom_corto VARCHAR2(32) NOT NULL,
 activo NUMBER(1) NOT NULL,
 corriente NUMBER(1) NOT NULL
)
 ;
COMMENT ON TABLE cn_catalogo is 'cn_catalogo'
 ;
COMMENT ON COLUMN cn_catalogo.id_catalogo is 'id_catalogo'
 ;
COMMENT ON COLUMN cn_catalogo.id_cuenta_mayor is 'id_cuenta_mayor'
 ;
COMMENT ON COLUMN cn_catalogo.id_grupo_cuenta is 'id_grupo_cuenta'
 ;
COMMENT ON COLUMN cn_catalogo.id_clase_cuenta is 'id_clase_cuenta'
 ;
COMMENT ON COLUMN cn_catalogo.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_catalogo.id_estado_catalogo is 'id_estado_catalogo'
 ;
COMMENT ON COLUMN cn_catalogo.id_tipo_retencion is 'id_tipo_retencion'
 ;
COMMENT ON COLUMN cn_catalogo.digitos is 'digitos'
 ;
COMMENT ON COLUMN cn_catalogo.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_catalogo.nom_corto is 'nom_corto'
 ;
COMMENT ON COLUMN cn_catalogo.activo is 'activo'
 ;
COMMENT ON COLUMN cn_catalogo.corriente is 'corriente'
 ;
/**********************************/
/* Table Name: cn_tipo_sub_aux */
/**********************************/
CREATE TABLE cn_tipo_sub_aux(
 id_tipo_sub_aux NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 descr VARCHAR2(128) NOT NULL,
 descr_corta VARCHAR2(32) NULL ,
 activo NUMBER(1) NOT NULL
)
 ;
COMMENT ON TABLE cn_tipo_sub_aux is 'cn_tipo_sub_aux'
 ;
COMMENT ON COLUMN cn_tipo_sub_aux.id_tipo_sub_aux is 'id_tipo_sub_aux'
 ;
COMMENT ON COLUMN cn_tipo_sub_aux.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_tipo_sub_aux.descr is 'descr'
 ;
COMMENT ON COLUMN cn_tipo_sub_aux.descr_corta is 'descr_corta'
 ;
COMMENT ON COLUMN cn_tipo_sub_aux.activo is 'activo'
 ;
/**********************************/
/* Table Name: cn_auxiliar */
/**********************************/
CREATE TABLE cn_auxiliar(
 id_auxiliar NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 id_catalogo NUMBER NOT NULL,
 id_cuenta_mayor NUMBER NOT NULL,
 id_grupo_cuenta NUMBER NOT NULL,
 id_clase_cuenta NUMBER NOT NULL,
 cod_aux VARCHAR2(3) NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 nom_corto VARCHAR2(32) NOT NULL,
 activo NUMBER(1) DEFAULT 1 NOT NULL,
 porcentaje NUMBER(3,2) NULL ,
 id_tipo_sub_aux NUMBER NULL 
)
 ;
COMMENT ON TABLE cn_auxiliar is 'cn_auxiliar'
 ;
COMMENT ON COLUMN cn_auxiliar.id_auxiliar is 'id_auxiliar'
 ;
COMMENT ON COLUMN cn_auxiliar.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_auxiliar.id_catalogo is 'id_catalogo'
 ;
COMMENT ON COLUMN cn_auxiliar.id_cuenta_mayor is 'id_cuenta_mayor'
 ;
COMMENT ON COLUMN cn_auxiliar.id_grupo_cuenta is 'id_grupo_cuenta'
 ;
COMMENT ON COLUMN cn_auxiliar.id_clase_cuenta is 'id_clase_cuenta'
 ;
COMMENT ON COLUMN cn_auxiliar.cod_aux is 'cod_aux'
 ;
COMMENT ON COLUMN cn_auxiliar.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_auxiliar.nom_corto is 'nom_corto'
 ;
COMMENT ON COLUMN cn_auxiliar.activo is 'activo'
 ;
COMMENT ON COLUMN cn_auxiliar.porcentaje is 'porcentaje'
 ;
COMMENT ON COLUMN cn_auxiliar.id_tipo_sub_aux is 'id_tipo_sub_aux'
 ;
/**********************************/
/* Table Name: cn_centro_costo */
/**********************************/
CREATE TABLE cn_centro_costo(
 id_centro_costo NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 nom_corto VARCHAR2(32) NOT NULL,
 cod_proy VARCHAR2(128) NULL 
)
 ;
COMMENT ON TABLE cn_centro_costo is 'cn_centro_costo'
 ;
COMMENT ON COLUMN cn_centro_costo.id_centro_costo is 'id_centro_costo'
 ;
COMMENT ON COLUMN cn_centro_costo.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_centro_costo.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_centro_costo.nom_corto is 'nom_corto'
 ;
COMMENT ON COLUMN cn_centro_costo.cod_proy is 'cod_proy'
 ;
/**********************************/
/* Table Name: cn_sub_centro_costo */
/**********************************/
CREATE TABLE cn_sub_centro_costo(
 id_sub_centro_costo NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 nom_corto VARCHAR2(32) NOT NULL,
 cod_sub_proy VARCHAR2(128) NULL 
)
 ;
COMMENT ON TABLE cn_sub_centro_costo is 'cn_sub_centro_costo'
 ;
COMMENT ON COLUMN cn_sub_centro_costo.id_sub_centro_costo is 'id_sub_centro_costo'
 ;
COMMENT ON COLUMN cn_sub_centro_costo.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_sub_centro_costo.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_sub_centro_costo.nom_corto is 'nom_corto'
 ;
COMMENT ON COLUMN cn_sub_centro_costo.cod_sub_proy is 'cod_sub_proy'
 ;
/**********************************/
/* Table Name: cn_sub_aux */
/**********************************/
CREATE TABLE cn_sub_aux(
 id_sub_aux NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 id_tipo_sub_aux NUMBER NOT NULL,
 cod_sub_aux VARCHAR2(3) NOT NULL,
 nombre VARCHAR2(128) NOT NULL,
 nom_corto VARCHAR2(32) NOT NULL,
 activo NUMBER(1) NOT NULL
)
 ;
COMMENT ON TABLE cn_sub_aux is 'cn_sub_aux'
 ;
COMMENT ON COLUMN cn_sub_aux.id_sub_aux is 'id_sub_aux'
 ;
COMMENT ON COLUMN cn_sub_aux.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_sub_aux.id_tipo_sub_aux is 'id_tipo_sub_aux'
 ;
COMMENT ON COLUMN cn_sub_aux.cod_sub_aux is 'cod_sub_aux'
 ;
COMMENT ON COLUMN cn_sub_aux.nombre is 'nombre'
 ;
COMMENT ON COLUMN cn_sub_aux.nom_corto is 'nom_corto'
 ;
COMMENT ON COLUMN cn_sub_aux.activo is 'activo'
 ;
/**********************************/
/* Table Name: cn_movimiento_contable */
/**********************************/
CREATE TABLE cn_movimiento_contable(
 id_mov_cont NUMBER NOT NULL,
 id_documento NUMBER NOT NULL,
 id_cad NUMBER NOT NULL,
 id_vigencia NUMBER NOT NULL,
 id_cen_op NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 id_catalogo NUMBER NOT NULL,
 id_cuenta_mayor NUMBER NOT NULL,
 id_grupo_cuenta NUMBER NOT NULL,
 id_clase_cuenta NUMBER NOT NULL,
 id_mae_ter NUMBER NULL ,
 id_auxiliar NUMBER NULL ,
 id_sub_aux NUMBER NULL ,
 id_centro_costo NUMBER NULL ,
 id_sub_centro_costo NUMBER NULL ,
 debito NUMBER NULL ,
 credito NUMBER NULL ,
 valor_base NUMBER NULL 
)
 ;
COMMENT ON TABLE cn_movimiento_contable is 'cn_movimiento_contable'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_mov_cont is 'id_mov_cont'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_documento is 'id_documento'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_cad is 'id_cad'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_vigencia is 'id_vigencia'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_cen_op is 'id_cen_op'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_catalogo is 'id_catalogo'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_cuenta_mayor is 'id_cuenta_mayor'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_grupo_cuenta is 'id_grupo_cuenta'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_clase_cuenta is 'id_clase_cuenta'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_mae_ter is 'id_mae_ter'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_auxiliar is 'id_auxiliar'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_sub_aux is 'id_sub_aux'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_centro_costo is 'id_centro_costo'
 ;
COMMENT ON COLUMN cn_movimiento_contable.id_sub_centro_costo is 'id_sub_centro_costo'
 ;
COMMENT ON COLUMN cn_movimiento_contable.debito is 'debito'
 ;
COMMENT ON COLUMN cn_movimiento_contable.credito is 'credito'
 ;
COMMENT ON COLUMN cn_movimiento_contable.valor_base is 'valor_base'
 ;
/**********************************/
/* Table Name: cn_tipo_comp_periodo_valido */
/**********************************/
CREATE TABLE cn_tipo_comp_periodo_valido(
 id_periodo_contable NUMBER NOT NULL,
 id_tipo_comprobante NUMBER NOT NULL,
 id_cia NUMBER NOT NULL
)
 ;
COMMENT ON TABLE cn_tipo_comp_periodo_valido is 'cn_tipo_comp_periodo_valido'
 ;
COMMENT ON COLUMN cn_tipo_comp_periodo_valido.id_periodo_contable is 'id_periodo_contable'
 ;
COMMENT ON COLUMN cn_tipo_comp_periodo_valido.id_tipo_comprobante is 'id_tipo_comprobante'
 ;
COMMENT ON COLUMN cn_tipo_comp_periodo_valido.id_cia is 'id_cia'
 ;
/**********************************/
/* Table Name: cn_alias */
/**********************************/
CREATE TABLE cn_alias(
 nom_entidad VARCHAR2(128) NOT NULL,
 id_cia NUMBER NOT NULL,
 alias VARCHAR2(128) NOT NULL,
 activo NUMBER(1) NOT NULL
)
 ;
COMMENT ON TABLE cn_alias is 'cn_alias'
 ;
COMMENT ON COLUMN cn_alias.nom_entidad is 'nom_entidad'
 ;
COMMENT ON COLUMN cn_alias.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_alias.alias is 'alias'
 ;
COMMENT ON COLUMN cn_alias.activo is 'activo'
 ;
/**********************************/
/* Table Name: cn_table_seq */
/**********************************/
CREATE TABLE cn_table_seq(
 nom_entidad VARCHAR2(32) NOT NULL,
 id_cia NUMBER NOT NULL,
 seq NUMBER NOT NULL
)
 ;
COMMENT ON TABLE cn_table_seq is 'cn_table_seq'
 ;
COMMENT ON COLUMN cn_table_seq.nom_entidad is 'nom_entidad'
 ;
COMMENT ON COLUMN cn_table_seq.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_table_seq.seq is 'seq'
 ;
/**********************************/
/* Table Name: cn_table_vig_seq */
/**********************************/
CREATE TABLE cn_table_vig_seq(
 nom_entidad VARCHAR2(32) NOT NULL,
 id_cia NUMBER NOT NULL,
 id_vigencia NUMBER NOT NULL,
 seq NUMBER NULL 
)
 ;
COMMENT ON TABLE cn_table_vig_seq is 'cn_table_vig_seq'
 ;
COMMENT ON COLUMN cn_table_vig_seq.nom_entidad is 'nom_entidad'
 ;
COMMENT ON COLUMN cn_table_vig_seq.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_table_vig_seq.id_vigencia is 'id_vigencia'
 ;
COMMENT ON COLUMN cn_table_vig_seq.seq is 'seq'
 ;
ALTER TABLE cn_cia ADD CONSTRAINT cn_cia_PK PRIMARY KEY (id_cia)
 ;
ALTER TABLE cn_centro_operacion ADD CONSTRAINT cn_centro_operacion_PK PRIMARY KEY (id_cen_op, id_cia)
 ;
ALTER TABLE cn_centro_operacion ADD CONSTRAINT cn_centro_operacion_FK0 FOREIGN KEY (id_cia) REFERENCES cn_cia (id_cia)
 ;
CREATE INDEX cn_centro_operacion_id ON cn_centro_operacion (id_cen_op)
 ;
ALTER TABLE cn_periodo_contable ADD CONSTRAINT cn_periodo_contable_PK PRIMARY KEY (id_periodo_contable)
 ;
ALTER TABLE cn_vigencia ADD CONSTRAINT cn_vigencia_PK PRIMARY KEY (id_vigencia)
 ;
ALTER TABLE cn_control_periodo ADD CONSTRAINT cn_control_periodo_PK PRIMARY KEY (id_control_periodo, id_vigencia, id_periodo_contable, id_cen_op, id_cia)
 ;
ALTER TABLE cn_control_periodo ADD CONSTRAINT cn_control_periodo_FK0 FOREIGN KEY (id_cen_op,id_cia) REFERENCES cn_centro_operacion (id_cen_op,id_cia)
 ;
ALTER TABLE cn_control_periodo ADD CONSTRAINT cn_control_periodo_FK1 FOREIGN KEY (id_periodo_contable) REFERENCES cn_periodo_contable (id_periodo_contable)
 ;
ALTER TABLE cn_control_periodo ADD CONSTRAINT cn_control_periodo_FK2 FOREIGN KEY (id_vigencia) REFERENCES cn_vigencia (id_vigencia)
 ;
ALTER TABLE cn_tipo_comprobante ADD CONSTRAINT cn_tipo_comprobante_PK PRIMARY KEY (id_tipo_comprobante, id_cia)
 ;
ALTER TABLE cn_tipo_comprobante ADD CONSTRAINT cn_tipo_comprobante_FK0 FOREIGN KEY (id_cia) REFERENCES cn_cia (id_cia)
 ;
ALTER TABLE cn_control_cad ADD CONSTRAINT cn_control_cad_PK PRIMARY KEY (id_cad, id_vigencia, id_cen_op, id_cia)
 ;
ALTER TABLE cn_control_cad ADD CONSTRAINT cn_control_cad_FK0 FOREIGN KEY (id_cen_op,id_cia) REFERENCES cn_centro_operacion (id_cen_op,id_cia)
 ;
ALTER TABLE cn_control_cad ADD CONSTRAINT cn_control_cad_FK1 FOREIGN KEY (id_vigencia) REFERENCES cn_vigencia (id_vigencia)
 ;
ALTER TABLE cn_control_cad ADD CONSTRAINT cn_control_cad_FK2 FOREIGN KEY (id_tipo_comprobante,id_cia) REFERENCES cn_tipo_comprobante (id_tipo_comprobante,id_cia)
 ;
ALTER TABLE cn_control_cad ADD CONSTRAINT cn_control_cad_FK3 FOREIGN KEY (id_periodo_contable) REFERENCES cn_periodo_contable (id_periodo_contable)
 ;
ALTER TABLE cn_mae_ter ADD CONSTRAINT cn_mae_ter_PK PRIMARY KEY (id_mae_ter, id_cia)
 ;
ALTER TABLE cn_mae_ter ADD CONSTRAINT cn_mae_ter_FK0 FOREIGN KEY (id_cia) REFERENCES cn_cia (id_cia)
 ;
ALTER TABLE cn_td ADD CONSTRAINT cn_td_PK PRIMARY KEY (id_td)
 ;
ALTER TABLE cn_documento ADD CONSTRAINT cn_documento_PK PRIMARY KEY (id_documento, id_cad, id_vigencia, id_cen_op, id_cia)
 ;
ALTER TABLE cn_documento ADD CONSTRAINT cn_documento_FK0 FOREIGN KEY (id_cad,id_vigencia,id_cen_op,id_cia) REFERENCES cn_control_cad (id_cad,id_vigencia,id_cen_op,id_cia)
 ;
ALTER TABLE cn_documento ADD CONSTRAINT cn_documento_FK1 FOREIGN KEY (id_mae_ter,id_cia) REFERENCES cn_mae_ter (id_mae_ter,id_cia)
 ;
ALTER TABLE cn_documento ADD CONSTRAINT cn_documento_FK2 FOREIGN KEY (id_td) REFERENCES cn_td (id_td)
 ;
ALTER TABLE cn_clase_cuenta ADD CONSTRAINT cn_clase_cuenta_PK PRIMARY KEY (id_clase_cuenta, id_cia)
 ;
ALTER TABLE cn_clase_cuenta ADD CONSTRAINT cn_clase_cuenta_FK0 FOREIGN KEY (id_cia) REFERENCES cn_cia (id_cia)
 ;
ALTER TABLE cn_grupo_cuenta ADD CONSTRAINT cn_grupo_cuenta_PK PRIMARY KEY (id_grupo_cuenta, id_clase_cuenta, id_cia)
 ;
ALTER TABLE cn_grupo_cuenta ADD CONSTRAINT cn_grupo_cuenta_FK0 FOREIGN KEY (id_clase_cuenta,id_cia) REFERENCES cn_clase_cuenta (id_clase_cuenta,id_cia)
 ;
ALTER TABLE cn_cuenta_mayor ADD CONSTRAINT cn_cuenta_mayor_PK PRIMARY KEY (id_cuenta_mayor, id_grupo_cuenta, id_clase_cuenta, id_cia)
 ;
ALTER TABLE cn_cuenta_mayor ADD CONSTRAINT cn_cuenta_mayor_FK0 FOREIGN KEY (id_grupo_cuenta,id_clase_cuenta,id_cia) REFERENCES cn_grupo_cuenta (id_grupo_cuenta,id_clase_cuenta,id_cia)
 ;
ALTER TABLE cn_estado_catalogo ADD CONSTRAINT cn_estado_catalogo_PK PRIMARY KEY (id_estado_catalogo)
 ;
ALTER TABLE cn_tipo_retencion ADD CONSTRAINT cn_tipo_retencion_PK PRIMARY KEY (id_tipo_retencion)
 ;
ALTER TABLE cn_catalogo ADD CONSTRAINT cn_catalogo_PK PRIMARY KEY (id_catalogo, id_cuenta_mayor, id_grupo_cuenta, id_clase_cuenta, id_cia)
 ;
ALTER TABLE cn_catalogo ADD CONSTRAINT cn_catalogo_FK0 FOREIGN KEY (id_cuenta_mayor,id_grupo_cuenta,id_clase_cuenta,id_cia) REFERENCES cn_cuenta_mayor (id_cuenta_mayor,id_grupo_cuenta,id_clase_cuenta,id_cia)
 ;
ALTER TABLE cn_catalogo ADD CONSTRAINT cn_catalogo_FK1 FOREIGN KEY (id_estado_catalogo) REFERENCES cn_estado_catalogo (id_estado_catalogo)
 ;
ALTER TABLE cn_catalogo ADD CONSTRAINT cn_catalogo_FK2 FOREIGN KEY (id_tipo_retencion) REFERENCES cn_tipo_retencion (id_tipo_retencion)
 ;
ALTER TABLE cn_tipo_sub_aux ADD CONSTRAINT cn_tipo_sub_aux_PK PRIMARY KEY (id_tipo_sub_aux, id_cia)
 ;
ALTER TABLE cn_tipo_sub_aux ADD CONSTRAINT cn_tipo_sub_aux_FK0 FOREIGN KEY (id_cia) REFERENCES cn_cia (id_cia)
 ;
ALTER TABLE cn_auxiliar ADD CONSTRAINT cn_auxiliar_PK PRIMARY KEY (id_auxiliar, id_cia)
 ;
ALTER TABLE cn_auxiliar ADD CONSTRAINT cn_auxiliar_FK0 FOREIGN KEY (id_catalogo,id_cuenta_mayor,id_grupo_cuenta,id_clase_cuenta,id_cia) REFERENCES cn_catalogo (id_catalogo,id_cuenta_mayor,id_grupo_cuenta,id_clase_cuenta,id_cia)
 ;
ALTER TABLE cn_auxiliar ADD CONSTRAINT cn_auxiliar_FK1 FOREIGN KEY (id_tipo_sub_aux,id_cia) REFERENCES cn_tipo_sub_aux (id_tipo_sub_aux,id_cia)
 ;
ALTER TABLE cn_centro_costo ADD CONSTRAINT cn_centro_costo_PK PRIMARY KEY (id_centro_costo, id_cia)
 ;
ALTER TABLE cn_centro_costo ADD CONSTRAINT cn_centro_costo_FK0 FOREIGN KEY (id_cia) REFERENCES cn_cia (id_cia)
 ;
ALTER TABLE cn_sub_centro_costo ADD CONSTRAINT cn_sub_centro_costo_PK PRIMARY KEY (id_sub_centro_costo, id_cia)
 ;
ALTER TABLE cn_sub_centro_costo ADD CONSTRAINT cn_sub_centro_costo_FK0 FOREIGN KEY (id_cia) REFERENCES cn_cia (id_cia)
 ;
ALTER TABLE cn_sub_aux ADD CONSTRAINT cn_sub_aux_PK PRIMARY KEY (id_sub_aux, id_cia)
 ;
ALTER TABLE cn_sub_aux ADD CONSTRAINT cn_sub_aux_FK0 FOREIGN KEY (id_tipo_sub_aux,id_cia) REFERENCES cn_tipo_sub_aux (id_tipo_sub_aux,id_cia)
 ;
ALTER TABLE cn_movimiento_contable ADD CONSTRAINT cn_movimiento_contable_PK PRIMARY KEY (id_mov_cont, id_documento, id_cad, id_vigencia, id_cen_op, id_cia)
 ;
ALTER TABLE cn_movimiento_contable ADD CONSTRAINT cn_movimiento_contable_FK0 FOREIGN KEY (id_documento,id_cad,id_vigencia,id_cen_op,id_cia) REFERENCES cn_documento (id_documento,id_cad,id_vigencia,id_cen_op,id_cia)
 ;
ALTER TABLE cn_movimiento_contable ADD CONSTRAINT cn_movimiento_contable_FK1 FOREIGN KEY (id_centro_costo,id_cia) REFERENCES cn_centro_costo (id_centro_costo,id_cia)
 ;
ALTER TABLE cn_movimiento_contable ADD CONSTRAINT cn_movimiento_contable_FK2 FOREIGN KEY (id_sub_centro_costo,id_cia) REFERENCES cn_sub_centro_costo (id_sub_centro_costo,id_cia)
 ;
ALTER TABLE cn_movimiento_contable ADD CONSTRAINT cn_movimiento_contable_FK3 FOREIGN KEY (id_auxiliar,id_cia) REFERENCES cn_auxiliar (id_auxiliar,id_cia)
 ;
ALTER TABLE cn_movimiento_contable ADD CONSTRAINT cn_movimiento_contable_FK4 FOREIGN KEY (id_mae_ter,id_cia) REFERENCES cn_mae_ter (id_mae_ter,id_cia)
 ;
ALTER TABLE cn_movimiento_contable ADD CONSTRAINT cn_movimiento_contable_FK5 FOREIGN KEY (id_sub_aux,id_cia) REFERENCES cn_sub_aux (id_sub_aux,id_cia)
 ;
ALTER TABLE cn_movimiento_contable ADD CONSTRAINT cn_movimiento_contable_FK6 FOREIGN KEY (id_catalogo,id_cuenta_mayor,id_grupo_cuenta,id_clase_cuenta,id_cia) REFERENCES cn_catalogo (id_catalogo,id_cuenta_mayor,id_grupo_cuenta,id_clase_cuenta,id_cia)
 ;
ALTER TABLE cn_tipo_comp_periodo_valido ADD CONSTRAINT cn_tipo_comp_peri_val_PK PRIMARY KEY (id_periodo_contable, id_tipo_comprobante, id_cia)
 ;
ALTER TABLE cn_tipo_comp_periodo_valido ADD CONSTRAINT cn_tipo_comp_peri_val_FK0 FOREIGN KEY (id_periodo_contable) REFERENCES cn_periodo_contable (id_periodo_contable)
 ;
ALTER TABLE cn_tipo_comp_periodo_valido ADD CONSTRAINT cn_tipo_comp_peri_val_FK1 FOREIGN KEY (id_tipo_comprobante,id_cia) REFERENCES cn_tipo_comprobante (id_tipo_comprobante,id_cia)
 ;
ALTER TABLE cn_alias ADD CONSTRAINT cn_alias_PK PRIMARY KEY (nom_entidad, id_cia)
 ;
ALTER TABLE cn_alias ADD CONSTRAINT cn_alias_FK0 FOREIGN KEY (id_cia) REFERENCES cn_cia (id_cia)
 ;
ALTER TABLE cn_table_seq ADD CONSTRAINT cn_table_seq_PK PRIMARY KEY (nom_entidad, id_cia)
 ;
ALTER TABLE cn_table_seq ADD CONSTRAINT cn_table_seq_FK0 FOREIGN KEY (id_cia) REFERENCES cn_cia (id_cia)
 ;
ALTER TABLE cn_table_vig_seq ADD CONSTRAINT cn_table_vig_seq_PK PRIMARY KEY (nom_entidad, id_cia, id_vigencia)
 ;
ALTER TABLE cn_table_vig_seq ADD CONSTRAINT cn_table_vig_seq_FK0 FOREIGN KEY (id_cia) REFERENCES cn_cia (id_cia)
 ;
ALTER TABLE cn_table_vig_seq ADD CONSTRAINT cn_table_vig_seq_FK1 FOREIGN KEY (id_vigencia) REFERENCES cn_vigencia (id_vigencia)
 ;

/**********************************/
/*           Constraints          */
/**********************************/

/*
*Restringe que la combinacion ID_TIPO_RETENCION,ACTIVO,USA_TERCERO,USA_AUXILIAR,USA_CEN_CTO,USA_SUB_CEN_CTO, CORRIENTE 
*no se repita en la tabla CN_ESTADO_CATALOGO
*/
ALTER TABLE CN_ESTADO_CATALOGO
ADD CONSTRAINT cn_est_cat_unicos UNIQUE(USA_TERCERO,USA_AUXILIAR,USA_CEN_CTO,USA_SUB_CEN_CTO)
;


/*Asegura que los valores sean de un bit 0 o 1*/
ALTER TABLE CN_ESTADO_CATALOGO
ADD CONSTRAINT cn_est_cat_val_bit 
CHECK (
USA_TERCERO  IN (0,1) AND 
USA_AUXILIAR  IN (0,1) AND 
USA_CEN_CTO  IN (0,1) AND 
USA_SUB_CEN_CTO IN (0,1))
;

/*Asegura que la naturaleza sea D para debito  o C para credito*/

ALTER TABLE CN_CUENTA_MAYOR
ADD CONSTRAINT cn_cuen_may_natur CHECK (NATURALEZA IN ('D','C'))
;

/*Asegura que los valores sean digitos del 0 al 99*/

ALTER TABLE CN_CUENTA_MAYOR
ADD CONSTRAINT cn_cuen_may_dig CHECK (DIGITOS BETWEEN 00 AND 99)
;

/*Restringe que no pueddan ser mas de 13 periodos contables*/

ALTER TABLE CN_PERIODO_CONTABLE
ADD CONSTRAINT cn_per_cont_mes
CHECK (
ID_PERIODO_CONTABLE BETWEEN 1 AND 13
)
;

/*Asegura que la naturaleza sea D para debito  o C para credito*/

ALTER TABLE CN_CLASE_CUENTA
ADD CONSTRAINT cn_clas_cuen_natur CHECK (NATURALEZA IN ('D','C'))
;

/*Asegura que los valores tomen los numeros del 0 al 9*/

ALTER TABLE CN_CLASE_CUENTA
ADD CONSTRAINT cn_clas_cuen_val_dig CHECK (DIGITO BETWEEN 0 AND 9)
;

/*Asegura que los valores tomen los numeros del 0 al 9*/

ALTER TABLE CN_GRUPO_CUENTA
ADD CONSTRAINT cn_grup_cuen_val_dig CHECK (DIGITO BETWEEN 0 AND 9)
;

/*Asegura que los valores sean de un bit 0 o 1*/

ALTER TABLE CN_CONTROL_PERIODO
ADD CONSTRAINT cn_cont_per_val_bit CHECK (ACTIVO IN ('0','1'))
;

/*Asegura que los valores sean de un bit 0 o 1*/

ALTER TABLE CN_CENTRO_OPERACION
ADD CONSTRAINT cn_cent_oper_val_bit CHECK (ACTIVO IN ('0','1'))
;

/*Asegura que los valores sean de un bit 0 o 1*/

ALTER TABLE CN_TIPO_COMPROBANTE
ADD CONSTRAINT cn_tipo_comp_val_bit CHECK (ACTIVO IN ('0','1'))
;

/*Asegura que los valores sean digitos del 00 al 99*/

ALTER TABLE CN_CATALOGO
ADD CONSTRAINT cn_catal_val_dig CHECK (DIGITOS BETWEEN 0 AND 99)
;

/*Asegura que los valores sean de un bit 0 o 1*/

ALTER TABLE CN_CATALOGO
ADD CONSTRAINT cn_catal_val_bit CHECK (
ACTIVO IN ('0','1') AND
CORRIENTE IN ('0','1')
)
;

/*Asegura que los valores sean de un bit 0 o 1*/

ALTER TABLE CN_AUXILIAR
ADD CONSTRAINT cn_auxi_val_bit CHECK (ACTIVO IN ('0','1'))
;

/*Asegura que los valores sean de un bit 0 o 1*/

ALTER TABLE CN_ALIAS
ADD CONSTRAINT cn_ali_val_bit CHECK (ACTIVO IN ('0','1'))
;

/*Asegura que los valores sean de un bit 0 o 1*/

ALTER TABLE CN_SUB_AUX
ADD CONSTRAINT cn_sub_aux_val_bit CHECK (ACTIVO IN ('0','1'))
;

/*Asegura que los valores sean de un bit 0 o 1*/

ALTER TABLE CN_TIPO_SUB_AUX
ADD CONSTRAINT cn_tip_sub_aux_val_bit CHECK (ACTIVO IN ('0','1'))
;

/**********************************/
/*           Vistas          */
/**********************************/

/**********************************/
/* Drop View  */
/**********************************/
DROP VIEW CN_TIP_COM_FECHA;
DROP VIEW CN_SUBC_DIGITOS_AUX;
DROP VIEW CN_SUBC_DIGITOS;
DROP VIEW CN_SUBC_AUX_TER;
DROP VIEW CN_SALDO_VIGPER;
DROP VIEW CN_SALDO_SIN_CONSOL;
DROP VIEW CN_SALDO_DEB_SIN_ANT;
DROP VIEW CN_SALDO_CRE_SIN_ANT;
DROP VIEW CN_MOV_AUX_TER;
DROP VIEW CN_MOVIMIENTO_VIGPER;
DROP VIEW CN_MOVIMIENTO_AUX;
DROP VIEW CN_LIBRO_MAYOR_CONSOL;
DROP VIEW CN_LIBRO_MAYOR;
DROP VIEW CN_LIBRO_DIARIO_OF;
DROP VIEW CN_LIBRO_AUX;
DROP VIEW CN_DOCUMENTO_TOT;
DROP VIEW CN_DIGITOS_CUENTAS;
DROP VIEW CN_CONTROL_CAD_NUM_MOV;
DROP VIEW CN_CATALOGO_DIGITOS;
DROP VIEW CN_BALANCE_DETALLADO;
DROP VIEW CN_BALANCE_CONSOL;
DROP VIEW CN_AUX_SUBC_TER;
DROP VIEW CN_AUX_SUBC;

/**********************************/
/* View Name: CN_AUX_SUBC */
/**********************************/
CREATE VIEW CN_AUX_SUBC ( VIG_PER, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CATALOGO, ID_CUENTA_MAYOR, ID_GRUPO_CUENTA, ID_CLASE_CUENTA, TIPO_SALDO, DEBITO, CREDITO, SALDO )
AS
select 
VIG_PER,
ID_CIA,
ID_CEN_OP,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_CATALOGO,
ID_CUENTA_MAYOR,
ID_GRUPO_CUENTA,
ID_CLASE_CUENTA,
TIPO_SALDO,   

/*cambio de 0 por null*/
   (CASE
       WHEN DEBITO = 0 THEN null
    ELSE DEBITO
  END ) DEBITO,

   (CASE
       WHEN CREDITO = 0 THEN null
    ELSE CREDITO
  END ) CREDITO,

SALDO 

from
(
select 
 /**Llave de la vista*/
sal.VIG_PER,
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA,
NULL  AS TIPO_SALDO,
sum(sal.DEBITO) AS DEBITO,
sum(sal.CREDITO) AS CREDITO,
NULL AS SALDO
from CN_SALDO_VIGPER sal

JOIN CN_CONTROL_CAD cad
on sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA

GROUP BY
sal.VIG_PER,
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

)

ORDER BY 
ID_CIA,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_CEN_OP,
VIG_PER;


/**********************************/
/* View Name: CN_AUX_SUBC_TER */
/**********************************/
CREATE VIEW CN_AUX_SUBC_TER ( VIG_PER, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_MAE_TER, ID_AUXILIAR, ID_CATALOGO, ID_CUENTA_MAYOR, ID_GRUPO_CUENTA, ID_CLASE_CUENTA, TIPO_SALDO, DEBITO, CREDITO, SALDO )
AS
select 
VIG_PER,
ID_CIA,
ID_CEN_OP,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_MAE_TER,
ID_AUXILIAR,
ID_CATALOGO,
ID_CUENTA_MAYOR,
ID_GRUPO_CUENTA,
ID_CLASE_CUENTA,
TIPO_SALDO,   

/*cambio de 0 por null*/
   (CASE
       WHEN DEBITO = 0 THEN null
    ELSE DEBITO
  END ) DEBITO,

   (CASE
       WHEN CREDITO = 0 THEN null
    ELSE CREDITO
  END ) CREDITO,

SALDO 

from
(
select 
 /**Llave de la vista*/
sal.VIG_PER,
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.ID_MAE_TER,
sal.ID_AUXILIAR,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA,
NULL  AS TIPO_SALDO,
sum(sal.DEBITO) AS DEBITO,
sum(sal.CREDITO) AS CREDITO,
NULL AS SALDO
from CN_SALDO_VIGPER sal

JOIN CN_CONTROL_CAD cad
on sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA


GROUP BY
sal.VIG_PER,
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.ID_MAE_TER,
sal.ID_AUXILIAR,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

)

ORDER BY 
ID_CIA,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_CEN_OP,
ID_CATALOGO,
VIG_PER;

/**********************************/
/* View Name: CN_BALANCE_CONSOL */
/**********************************/
CREATE VIEW CN_BALANCE_CONSOL ( CUENTA, AUXILIAR, SUBAUXILIAR, TERCERO, NOMBRE_CUENTA, SALDO_ANTERIOR, MVTO_DEBITO, MVTO_CREDITO, NUEVO_SALDO, ID_CIA, ID_VIGENCIA, ID_PERIODO_CONTABLE )
AS
SELECT "CUENTA","AUXILIAR","SUBAUXILIAR","TERCERO","NOMBRE_CUENTA","SALDO_ANTERIOR","MVTO_DEBITO","MVTO_CREDITO","NUEVO_SALDO","ID_CIA","ID_VIGENCIA","ID_PERIODO_CONTABLE"
FROM
(
/** INICIA BALANCE */
/* Clase Cuenta*/
SELECT *
FROM
(
SELECT
CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
NOMBRE_CUENTA,
SUM(SALDO_ANTERIOR) AS SALDO_ANTERIOR,
SUM(MVTO_DEBITO) AS MVTO_DEBITO,
SUM(MVTO_CREDITO) AS MVTO_CREDITO,
SUM(NUEVO_SALDO) AS NUEVO_SALDO,
 /**Llave de la vista*/
 ID_CIA,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
FROM 
(
SELECT
SUBSTR(sal.SUBCUENTA,1,1) AS CUENTA,
cla.NOMBRE AS NOMBRE_CUENTA,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ANTERIOR
 ELSE -sal.SALDO_ANTERIOR
END AS SALDO_ANTERIOR,
sal.DEBITO AS MVTO_DEBITO,
sal.CREDITO AS MVTO_CREDITO,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ACTUAL
 ELSE -sal.SALDO_ACTUAL
END AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
)
GROUP BY
CUENTA,
NOMBRE_CUENTA,
 /**Llave de la vista*/
 ID_CIA,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
)

UNION

/* Grupo Cuenta*/
SELECT *
FROM
(
SELECT
CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
NOMBRE_CUENTA,
SUM(SALDO_ANTERIOR) AS SALDO_ANTERIOR,
SUM(MVTO_DEBITO) AS MVTO_DEBITO,
SUM(MVTO_CREDITO) AS MVTO_CREDITO,
SUM(NUEVO_SALDO) AS NUEVO_SALDO,
 /**Llave de la vista*/
 ID_CIA,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
FROM 
(
SELECT
SUBSTR(sal.SUBCUENTA,1,2) AS CUENTA,
gru.NOMBRE AS NOMBRE_CUENTA,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ANTERIOR
 ELSE -sal.SALDO_ANTERIOR
END AS SALDO_ANTERIOR,
sal.DEBITO AS MVTO_DEBITO,
sal.CREDITO AS MVTO_CREDITO,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ACTUAL
 ELSE -sal.SALDO_ACTUAL
END AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 sal.ID_CIA = gru.ID_CIA
 AND sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
)
GROUP BY
CUENTA,
NOMBRE_CUENTA,
 /**Llave de la vista*/
 ID_CIA,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
)

UNION

/* Cuenta Mayor*/
SELECT *
FROM
(
SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cue.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Subcuenta con terceros */
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

GROUP BY
 sal.SUBCUENTA,
 ter.NITOCC,
 ter.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Subcuenta sin terceros */
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cat.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

GROUP BY
 sal.SUBCUENTA,
 cat.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Auxiliares con terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 ter.NOMBRE,
 ter.NITOCC,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION


/* Auxiliares sin terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
aux.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 aux.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Sub auxiliares con terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
subaux.COD_SUB_AUX AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN
 CN_SUB_AUX subaux
 ON sal.ID_CIA = subaux.ID_CIA
 AND sal.ID_SUB_AUX = subaux.ID_SUB_AUX
 AND aux.ID_TIPO_SUB_AUX = subaux.ID_TIPO_SUB_AUX

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER
 
GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 subaux.COD_SUB_AUX,
 ter.NITOCC,
 ter.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Sub auxiliares sin terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
subaux.COD_SUB_AUX AS SUBAUXILIAR,
NULL AS TERCERO,
subaux.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN
 CN_SUB_AUX subaux
 ON sal.ID_CIA = subaux.ID_CIA
 AND sal.ID_SUB_AUX = subaux.ID_SUB_AUX
 AND aux.ID_TIPO_SUB_AUX = subaux.ID_TIPO_SUB_AUX
 
GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 subaux.COD_SUB_AUX,
 subaux.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)
/** TERMINA BALANCE **/
)ORDER BY
CUENTA ASC,
NVL(AUXILIAR,'000') ASC,
NVL(SUBAUXILIAR,'000') ASC,
NVL(TERCERO,'00000000000000000000000000000000') ASC;

/**********************************/
/* View Name: CN_BALANCE_DETALLADO */
/**********************************/
CREATE VIEW CN_BALANCE_DETALLADO ( CUENTA, AUXILIAR, SUBAUXILIAR, TERCERO, NOMBRE_CUENTA, SALDO_ANTERIOR, MVTO_DEBITO, MVTO_CREDITO, NUEVO_SALDO, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE )
AS
SELECT
bal.CUENTA,
bal.AUXILIAR,
bal.SUBAUXILIAR,
bal.TERCERO,
bal.NOMBRE_CUENTA,
bal.SALDO_ANTERIOR,
bal.MVTO_DEBITO,
bal.MVTO_CREDITO,
bal.NUEVO_SALDO,
 /**Llave de la vista*/
bal.ID_CIA,
bal.ID_CEN_OP,
bal.ID_VIGENCIA,
bal.ID_PERIODO_CONTABLE
FROM
(
/** INICIA BALANCE */
/* Clase Cuenta*/
SELECT *
FROM
(
SELECT
CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
NOMBRE_CUENTA,
SUM(SALDO_ANTERIOR) AS SALDO_ANTERIOR,
SUM(MVTO_DEBITO) AS MVTO_DEBITO,
SUM(MVTO_CREDITO) AS MVTO_CREDITO,
SUM(NUEVO_SALDO) AS NUEVO_SALDO,
 /**Llave de la vista*/
 ID_CIA,
 ID_CEN_OP,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
FROM 
(
SELECT
SUBSTR(sal.SUBCUENTA,1,1) AS CUENTA,
cla.NOMBRE AS NOMBRE_CUENTA,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ANTERIOR
 ELSE -sal.SALDO_ANTERIOR
END AS SALDO_ANTERIOR,
sal.DEBITO AS MVTO_DEBITO,
sal.CREDITO AS MVTO_CREDITO,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ACTUAL
 ELSE -sal.SALDO_ACTUAL
END AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
)
GROUP BY
CUENTA,
NOMBRE_CUENTA,
 /**Llave de la vista*/
 ID_CIA,
 ID_CEN_OP,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
)

UNION

/* Grupo Cuenta*/
SELECT *
FROM
(
SELECT
CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
NOMBRE_CUENTA,
SUM(SALDO_ANTERIOR) AS SALDO_ANTERIOR,
SUM(MVTO_DEBITO) AS MVTO_DEBITO,
SUM(MVTO_CREDITO) AS MVTO_CREDITO,
SUM(NUEVO_SALDO) AS NUEVO_SALDO,
 /**Llave de la vista*/
 ID_CIA,
 ID_CEN_OP,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
FROM 
(
SELECT
SUBSTR(sal.SUBCUENTA,1,2) AS CUENTA,
gru.NOMBRE AS NOMBRE_CUENTA,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ANTERIOR
 ELSE -sal.SALDO_ANTERIOR
END AS SALDO_ANTERIOR,
sal.DEBITO AS MVTO_DEBITO,
sal.CREDITO AS MVTO_CREDITO,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ACTUAL
 ELSE -sal.SALDO_ACTUAL
END AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 sal.ID_CIA = gru.ID_CIA
 AND sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
)
GROUP BY
CUENTA,
NOMBRE_CUENTA,
 /**Llave de la vista*/
 ID_CIA,
 ID_CEN_OP,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
)

UNION

/* Cuenta Mayor*/
SELECT *
FROM
(
SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cue.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Subcuenta con terceros */
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

GROUP BY
 sal.SUBCUENTA,
 ter.NITOCC,
 ter.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Subcuenta sin terceros */
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cat.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

GROUP BY
 sal.SUBCUENTA,
 cat.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Auxiliares con terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 ter.NOMBRE,
 ter.NITOCC,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION


/* Auxiliares sin terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
aux.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 aux.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Sub auxiliares con terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
subaux.COD_SUB_AUX AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN
 CN_SUB_AUX subaux
 ON sal.ID_CIA = subaux.ID_CIA
 AND sal.ID_SUB_AUX = subaux.ID_SUB_AUX
 AND aux.ID_TIPO_SUB_AUX = subaux.ID_TIPO_SUB_AUX

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER
 
GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 subaux.COD_SUB_AUX,
 ter.NITOCC,
 ter.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Sub auxiliares sin terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
subaux.COD_SUB_AUX AS SUBAUXILIAR,
NULL AS TERCERO,
subaux.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN
 CN_SUB_AUX subaux
 ON sal.ID_CIA = subaux.ID_CIA
 AND sal.ID_SUB_AUX = subaux.ID_SUB_AUX
 AND aux.ID_TIPO_SUB_AUX = subaux.ID_TIPO_SUB_AUX
 
GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 subaux.COD_SUB_AUX,
 subaux.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)
/** TERMINA BALANCE **/
)
bal
ORDER BY
bal.CUENTA ASC,
NVL(bal.AUXILIAR,'000') ASC,
NVL(bal.SUBAUXILIAR,'000') ASC,
NVL(bal.TERCERO,'00000000000000000000000000000000') ASC;

/**********************************/
/* View Name: CN_CATALOGO_DIGITOS */
/**********************************/
CREATE VIEW CN_CATALOGO_DIGITOS ( DIGITOS, NOMBRE, NATURALEZA, USA_TERCERO, USA_AUXILIAR, USA_CEN_CTO, USA_SUB_CEN_CTO )
AS
SELECT "DIGITOS","NOMBRE","NATURALEZA","USA_TERCERO","USA_AUXILIAR","USA_CEN_CTO","USA_SUB_CEN_CTO"
FROM
(

SELECT 
digito||'00000' AS digitos, 
NOMBRE AS NOMBRE,  
NATURALEZA, 
0 AS USA_TERCERO, 
0 AS USA_AUXILIAR, 
0 AS USA_CEN_CTO, 
0 AS USA_SUB_CEN_CTO
FROM CN_CLASE_CUENTA

UNION

SELECT 
cla.DIGITO||gru.DIGITO||'0000' AS digitos, 
'__'||gru.NOMBRE AS NOMBRE, 
NULL AS NATURALEZA,
0 AS USA_TERCERO, 
0 AS USA_AUXILIAR, 
0 AS USA_CEN_CTO, 
0 AS USA_SUB_CEN_CTO
FROM CN_GRUPO_CUENTA gru

JOIN CN_CLASE_CUENTA cla ON 
cla.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

UNION

SELECT 
cla.DIGITO||gru.DIGITO||may.DIGITOS||'00' AS digitos, 
'____'||may.NOMBRE AS NOMBRE, 
may.NATURALEZA, 
0 AS USA_TERCERO, 
0 AS USA_AUXILIAR, 
0 AS USA_CEN_CTO, 
0 AS USA_SUB_CEN_CTO
FROM CN_CUENTA_MAYOR may

JOIN CN_GRUPO_CUENTA gru ON 
may.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA

JOIN CN_CLASE_CUENTA cla ON 
cla.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

UNION

SELECT 
cla.DIGITO||gru.DIGITO||may.DIGITOS||cat.DIGITOS AS digitos, 
'______'||cat.NOMBRE AS NOMBRE, 
NULL AS NATURALEZA, 
est.USA_TERCERO, 
est.USA_AUXILIAR, 
est.USA_CEN_CTO, 
est.USA_SUB_CEN_CTO
FROM CN_CATALOGO cat

JOIN CN_CUENTA_MAYOR may ON 
cat.ID_CUENTA_MAYOR = may.ID_CUENTA_MAYOR

JOIN CN_GRUPO_CUENTA gru ON 
may.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA

JOIN CN_CLASE_CUENTA cla ON 
cla.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_ESTADO_CATALOGO est ON 
est.ID_ESTADO_CATALOGO = cat.ID_ESTADO_CATALOGO

);


/**********************************/
/* View Name: CN_CONTROL_CAD_NUM_MOV */
/**********************************/
CREATE VIEW CN_CONTROL_CAD_NUM_MOV ( ID_CAD, ID_VIGENCIA, ID_CEN_OP, ID_CIA, ID_PERIODO_CONTABLE, ID_TIPO_COMPROBANTE, NUM_MOV )
AS
SELECT ID_CAD, ID_VIGENCIA, ID_CEN_OP, ID_CIA, ID_PERIODO_CONTABLE, ID_TIPO_COMPROBANTE, COUNT(ID_MOV_CONT) AS NUM_MOV
FROM CN_CONTROL_CAD NATURAL JOIN CN_MOVIMIENTO_CONTABLE 
GROUP BY ID_CAD, ID_VIGENCIA, ID_CEN_OP, ID_CIA, ID_PERIODO_CONTABLE, ID_TIPO_COMPROBANTE;


/**********************************/
/* View Name: CN_DIGITOS_CUENTAS */
/**********************************/
CREATE VIEW CN_DIGITOS_CUENTAS ( ID_CIA, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, DIGITOS_GRU, DIGITOS_MAY, NOMBRE, NOM_CORTO, NATURALEZA )
AS
SELECT 
"ID_CIA","ID_CLASE_CUENTA","ID_GRUPO_CUENTA","ID_CUENTA_MAYOR","DIGITOS_GRU","DIGITOS_MAY","NOMBRE","NOM_CORTO","NATURALEZA"
FROM
(
SELECT
may.ID_CIA, 
cla.ID_CLASE_CUENTA, 
gru.ID_GRUPO_CUENTA, 
may.ID_CUENTA_MAYOR,
cla.DIGITO || gru.DIGITO AS DIGITOS_GRU, 
cla.DIGITO || gru.DIGITO || may.DIGITOS AS DIGITOS_MAY, 
may.NOMBRE, 
may.NOM_CORTO,
may.NATURALEZA

FROM CN_CUENTA_MAYOR may 

JOIN CN_GRUPO_CUENTA gru ON
 may .ID_CIA = gru.ID_CIA
 AND may.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND may.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 may.ID_CIA = cla.ID_CIA
 AND may.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
);


/**********************************/
/* View Name: CN_DOCUMENTO_TOT */
/**********************************/
CREATE VIEW CN_DOCUMENTO_TOT ( ID_CIA, ID_CAD, ID_VIGENCIA, ID_CEN_OP, ID_DOCUMENTO, ID_TD, ID_MAE_TER, DESCR_MTO, DOC_SOPORTE, FECHA_SOPORTE, TOT_DEBITO, TOT_CREDITO )
AS
SELECT 
 doc.ID_CIA,
 doc.ID_CAD,
 doc.ID_VIGENCIA,
 doc.ID_CEN_OP,
 doc.ID_DOCUMENTO,
 doc.ID_TD,
 doc.ID_MAE_TER,
 doc.DESCR_MTO,
 doc.DOC_SOPORTE,
 doc.FECHA_SOPORTE,
/*totales*/
SUM(NVL(mov.DEBITO,0)) AS TOT_DEBITO,
SUM(NVL(mov.CREDITO,0)) AS TOT_CREDITO
FROM CN_DOCUMENTO doc
LEFT JOIN CN_MOVIMIENTO_CONTABLE mov ON 
 mov.ID_CIA = doc.ID_CIA
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
GROUP BY
 doc.ID_CIA,
 doc.ID_CAD,
 doc.ID_VIGENCIA,
 doc.ID_CEN_OP,
 doc.ID_DOCUMENTO,
 doc.ID_TD,
 doc.ID_MAE_TER,
 doc.DESCR_MTO,
 doc.DOC_SOPORTE,
 doc.FECHA_SOPORTE;


/**********************************/
/* View Name: CN_LIBRO_AUX */
/**********************************/
CREATE VIEW CN_LIBRO_AUX ( CUENTA, AUXILIAR, SUBAUXILIAR, TERCERO, NOMBRE_CUENTA, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_MOV_CONT, FECHA_CAD, ID_CAD, ID_DOCUMENTO, DESCR_MTO, DEBITO, CREDITO )
AS
SELECT "CUENTA","AUXILIAR","SUBAUXILIAR","TERCERO","NOMBRE_CUENTA","ID_CIA","ID_CEN_OP","ID_VIGENCIA","ID_PERIODO_CONTABLE","ID_MOV_CONT","FECHA_CAD","ID_CAD","ID_DOCUMENTO","DESCR_MTO","DEBITO","CREDITO"
FROM
(/* clase */
SELECT DISTINCT
cla.DIGITO AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cla.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

UNION

/*grupo*/
SELECT DISTINCT
cla.DIGITO||gru.DIGITO AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
gru.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/* mayor */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cue.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/* catálogo sin aux, sin ter */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cat.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/* con auxiliar, sin tercero */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
aux.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_AUXILIAR aux ON
 mov.ID_CIA = aux.ID_CIA
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND mov.ID_AUXILIAR = aux.ID_AUXILIAR

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/* con tercero, sin auxilar */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 mov.ID_CIA = ter.ID_CIA
 AND mov.ID_MAE_TER = ter.ID_MAE_TER

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/*con auxiliar, con tercero*/
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_AUXILIAR aux ON
 mov.ID_CIA = aux.ID_CIA
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND mov.ID_AUXILIAR = aux.ID_AUXILIAR

JOIN CN_MAE_TER ter ON
 mov.ID_CIA = ter.ID_CIA
 AND mov.ID_MAE_TER = ter.ID_MAE_TER

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/* movimientos sin auxiliar, sin tercero */
SELECT
 cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
 NULL AS AUXILIAR,
 NULL AS SUBAUXILIAR,
 NULL AS TERCERO,
 cat.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 /* VALORES DE MOVIMIENTO */
 mov.ID_MOV_CONT AS ID_MOV_CONT,
 cad.FECHA_CAD AS FECHA_CAD,
 mov.ID_CAD AS ID_CAD,
 mov.ID_DOCUMENTO AS ID_DOCUMENTO,
 doc.DESCR_MTO AS DESCR_MTO,
 mov.DEBITO AS DEBITO,
 mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
 mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
 AND mov.ID_CAD = doc.ID_CAD
 AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
 AND mov.ID_CEN_OP = doc.ID_CEN_OP
 AND mov.ID_CIA = doc.ID_CIA

WHERE mov.ID_MAE_TER IS NULL AND mov.ID_AUXILIAR IS NULL

UNION

/* movimientos con auxiliar, sin tercero */
SELECT
 cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
 aux.COD_AUX AS AUXILIAR,
 NULL AS SUBAUXILIAR,
 NULL AS TERCERO,
 aux.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 /* VALORES DE MOVIMIENTO */
 mov.ID_MOV_CONT AS ID_MOV_CONT,
 cad.FECHA_CAD AS FECHA_CAD,
 mov.ID_CAD AS ID_CAD,
 mov.ID_DOCUMENTO AS ID_DOCUMENTO,
 doc.DESCR_MTO AS DESCR_MTO,
 mov.DEBITO AS DEBITO,
 mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_AUXILIAR aux ON
 mov.ID_CIA = aux.ID_CIA
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND mov.ID_AUXILIAR = aux.ID_AUXILIAR

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
 mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
 AND mov.ID_CAD = doc.ID_CAD
 AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
 AND mov.ID_CEN_OP = doc.ID_CEN_OP
 AND mov.ID_CIA = doc.ID_CIA

WHERE mov.ID_MAE_TER IS NULL

UNION

/* movimientos sin auxiliar, con tercero */
SELECT
 cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
 NULL AS AUXILIAR,
 NULL AS SUBAUXILIAR,
 ter.NITOCC AS TERCERO,
 ter.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 /* VALORES DE MOVIMIENTO */
 mov.ID_MOV_CONT AS ID_MOV_CONT,
 cad.FECHA_CAD AS FECHA_CAD,
 mov.ID_CAD AS ID_CAD,
 mov.ID_DOCUMENTO AS ID_DOCUMENTO,
 doc.DESCR_MTO AS DESCR_MTO,
 mov.DEBITO AS DEBITO,
 mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 mov.ID_CIA = ter.ID_CIA
 AND mov.ID_MAE_TER = ter.ID_MAE_TER

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
 mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
 AND mov.ID_CAD = doc.ID_CAD
 AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
 AND mov.ID_CEN_OP = doc.ID_CEN_OP
 AND mov.ID_CIA = doc.ID_CIA

WHERE mov.ID_AUXILIAR IS NULL

UNION

/* movimientos con auxiliar, con tercero */
SELECT
 cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
 aux.COD_AUX AS AUXILIAR,
 NULL AS SUBAUXILIAR,
 ter.NITOCC AS TERCERO,
 ter.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 /* VALORES DE MOVIMIENTO */
 mov.ID_MOV_CONT AS ID_MOV_CONT,
 cad.FECHA_CAD AS FECHA_CAD,
 mov.ID_CAD AS ID_CAD,
 mov.ID_DOCUMENTO AS ID_DOCUMENTO,
 doc.DESCR_MTO AS DESCR_MTO,
 mov.DEBITO AS DEBITO,
 mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_AUXILIAR aux ON
 mov.ID_CIA = aux.ID_CIA
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND mov.ID_AUXILIAR = aux.ID_AUXILIAR

JOIN CN_MAE_TER ter ON
 mov.ID_CIA = ter.ID_CIA
 AND mov.ID_MAE_TER = ter.ID_MAE_TER

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
 mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
 AND mov.ID_CAD = doc.ID_CAD
 AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
 AND mov.ID_CEN_OP = doc.ID_CEN_OP
 AND mov.ID_CIA = doc.ID_CIA

)
lib
/**WHERE ID_CEN_OP = 16 AND ID_PERIODO_CONTABLE = 1 AND ID_VIGENCIA = 2011*/
ORDER BY
lib.CUENTA ASC,
NVL(lib.AUXILIAR,'000') ASC,
NVL(lib.SUBAUXILIAR,'000') ASC,
NVL(lib.TERCERO,'00000000000000000000000000000000') ASC,
NVL(lib.ID_MOV_CONT,'00000000000000000000000000000000') ASC;


/**********************************/
/* View Name: CN_LIBRO_DIARIO_OF */
/**********************************/
CREATE VIEW CN_LIBRO_DIARIO_OF ( ORDEN, CODIGO, COMPROBANTE, FECHA_CAD, DEBITO, CREDITO, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE )
AS
select 
ORDEN,    
CODIGO,     
COMPROBANTE,                                               
FECHA_CAD,
/*cambio de 0 por null*/
   (CASE
       WHEN DEBITO = 0 THEN null
    ELSE DEBITO
  END ) DEBITO,

   (CASE
       WHEN CREDITO = 0 THEN null
    ELSE CREDITO
  END ) CREDITO,

ID_CIA,
ID_CEN_OP,
ID_VIGENCIA,     
ID_PERIODO_CONTABLE
 
from
(
/*clase cuenta*/
SELECT 
1 AS ORDEN,
cla.DIGITO AS CODIGO,
cla.NOMBRE AS COMPROBANTE,
/* VALORES DE MOVIMIENTO */
NULL AS FECHA_CAD,
SUM(mov.DEBITO) AS DEBITO,
SUM(mov.CREDITO) AS CREDITO,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

GROUP BY
cla.DIGITO,
cla.NOMBRE,
mov.ID_CIA,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
mov.ID_CEN_OP

UNION

/*grupo cuenta*/
SELECT 
2 AS ORDEN,
cla.DIGITO || gru.DIGITO AS CODIGO,
gru.NOMBRE AS COMPROBANTE,
/* VALORES DE MOVIMIENTO */
NULL AS FECHA_CAD,
SUM(mov.DEBITO) AS DEBITO,
SUM(mov.CREDITO) AS CREDITO,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_GRUPO_CUENTA gru ON
mov.ID_CIA = gru.ID_CIA
AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

GROUP BY 
cla.DIGITO || gru.DIGITO,
gru.NOMBRE,
mov.ID_CIA,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
mov.ID_CEN_OP

UNION

/*cuenta mayor*/
SELECT 
3 AS ORDEN,
cla.DIGITO || gru.DIGITO || cue.DIGITOS AS CODIGO,
cue.NOMBRE AS COMPROBANTE,
/* VALORES DE MOVIMIENTO */
NULL AS FECHA_CAD,
SUM(mov.DEBITO) AS DEBITO,
SUM(mov.CREDITO) AS CREDITO,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
mov.ID_CIA = gru.ID_CIA
AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

GROUP BY 
cla.DIGITO || gru.DIGITO || cue.DIGITOS,
cue.NOMBRE,
mov.ID_CIA,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
mov.ID_CEN_OP

UNION

/*catalogo*/
SELECT 
4 AS ORDEN,
cla.DIGITO || gru.DIGITO || cue.DIGITOS || cat.DIGITOS AS CODIGO,
cat.NOMBRE AS COMPROBANTE,
/* VALORES DE MOVIMIENTO */
NULL AS FECHA_CAD,
SUM(mov.DEBITO) AS DEBITO,
SUM(mov.CREDITO) AS CREDITO,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
mov.ID_CIA = gru.ID_CIA
AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

GROUP BY 
cla.DIGITO || gru.DIGITO || cue.DIGITOS || cat.DIGITOS,
cat.NOMBRE,
mov.ID_CIA,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
mov.ID_CEN_OP

UNION

/*movimientos por tipo de comprobante*/
SELECT 
5 AS ORDEN,
cla.DIGITO || gru.DIGITO || cue.DIGITOS || cat.DIGITOS AS CODIGO,
tip.ID_TIPO_COMPROBANTE || ' ' || tip.NOM_TIPO_COMPROBANTE AS COMPROBANTE,
/* VALORES DE MOVIMIENTO */
cad.FECHA_CAD AS FECHA_CAD,
sum(mov.DEBITO) AS DEBITO,
sum(mov.CREDITO) AS CREDITO,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
mov.ID_CIA = gru.ID_CIA
AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

JOIN CN_TIPO_COMPROBANTE tip ON
tip.ID_CIA = cad.ID_CIA
 and tip.ID_TIPO_COMPROBANTE = cad.ID_TIPO_COMPROBANTE

group by 
cla.DIGITO || gru.DIGITO || cue.DIGITOS || cat.DIGITOS,
tip.ID_TIPO_COMPROBANTE || ' ' || tip.NOM_TIPO_COMPROBANTE,
cad.FECHA_CAD,
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

) 

ORDER BY ID_CIA, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CEN_OP, CODIGO, ORDEN, FECHA_CAD;


/**********************************/
/* View Name: CN_LIBRO_MAYOR */
/**********************************/
CREATE VIEW CN_LIBRO_MAYOR ( CUENTA, NOMBRE, SAL_ANT_DEB, SAL_ANT_CRE, MOV_DEBITO, MOV_CREDITO, SAL_ACT_DEB, SAL_ACT_CRE, ID_CIA, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CEN_OP )
AS
SELECT "CUENTA","NOMBRE","SAL_ANT_DEB","SAL_ANT_CRE","MOV_DEBITO","MOV_CREDITO","SAL_ACT_DEB","SAL_ACT_CRE","ID_CIA","ID_VIGENCIA","ID_PERIODO_CONTABLE","ID_CEN_OP"
FROM
(

SELECT *
FROM
(
SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
cue.NOMBRE AS NOMBRE,
sum(sal.SALDO_ANTERIOR) AS SAL_ANT_DEB,
NULL AS SAL_ANT_CRE,
sum(sal.DEBITO) AS MOV_DEBITO,
sum(sal.CREDITO) AS MOV_CREDITO,
sum(sal.SALDO_ACTUAL) AS SAL_ACT_DEB,
NULL AS SAL_ACT_CRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE,
sal.ID_CEN_OP

FROM CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

WHERE cue.NATURALEZA='D'

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE,
sal.ID_CEN_OP

UNION

SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
cue.NOMBRE AS NOMBRE,
NULL AS SAL_ANT_DEB,
sum(sal.SALDO_ANTERIOR) AS SAL_ANT_CRE,
sum(sal.DEBITO) AS MOV_DEBITO,
sum(sal.CREDITO) AS MOV_CREDITO,
NULL AS SAL_ACT_DEB,
sum(sal.SALDO_ACTUAL) AS SAL_ACT_CRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE,
sal.ID_CEN_OP

FROM CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

WHERE cue.NATURALEZA='C'

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE,
sal.ID_CEN_OP

)
ORDER BY   ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CEN_OP, CUENTA

);


/**********************************/
/* View Name: CN_LIBRO_MAYOR_CONSOL */
/**********************************/
CREATE VIEW CN_LIBRO_MAYOR_CONSOL ( CUENTA, NOMBRE, SAL_ANT_DEB, SAL_ANT_CRE, MOV_DEBITO, MOV_CREDITO, SAL_ACT_DEB, SAL_ACT_CRE, ID_CIA, ID_VIGENCIA, ID_PERIODO_CONTABLE )
AS
SELECT "CUENTA","NOMBRE","SAL_ANT_DEB","SAL_ANT_CRE","MOV_DEBITO","MOV_CREDITO","SAL_ACT_DEB","SAL_ACT_CRE","ID_CIA","ID_VIGENCIA","ID_PERIODO_CONTABLE"
FROM
(

SELECT *
FROM
(
SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
cue.NOMBRE AS NOMBRE,
sum(sal.SALDO_ANTERIOR) AS SAL_ANT_DEB,
NULL AS SAL_ANT_CRE,
sum(sal.DEBITO) AS MOV_DEBITO,
sum(sal.CREDITO) AS MOV_CREDITO,
sum(sal.SALDO_ACTUAL) AS SAL_ACT_DEB,
NULL AS SAL_ACT_CRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

WHERE cue.NATURALEZA='D'

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

UNION

SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
cue.NOMBRE AS NOMBRE,
NULL AS SAL_ANT_DEB,
sum(sal.SALDO_ANTERIOR) AS SAL_ANT_CRE,
sum(sal.DEBITO) AS MOV_DEBITO,
sum(sal.CREDITO) AS MOV_CREDITO,
NULL AS SAL_ACT_DEB,
sum(sal.SALDO_ACTUAL) AS SAL_ACT_CRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

WHERE cue.NATURALEZA='C'

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

)
ORDER BY   ID_VIGENCIA, ID_PERIODO_CONTABLE, CUENTA

);


/**********************************/
/* View Name: CN_MOVIMIENTO_AUX */
/**********************************/
CREATE VIEW CN_MOVIMIENTO_AUX ( DIGITO, AUXILIAR, TERCERO, NOMBRE, ID_MOV_CONT, FECHA_CAD, ID_CAD, ID_DOCUMENTO, DESCR_MTO, DEBITO, CREDITO )
AS
SELECT 
"DIGITO","AUXILIAR","TERCERO","NOMBRE","ID_MOV_CONT","FECHA_CAD","ID_CAD","ID_DOCUMENTO","DESCR_MTO","DEBITO","CREDITO"
FROM
(
/** INICIA MOVIMIENTO*/
/* Clase Cuenta*/
SELECT 
DIGITO,
NULL as AUXILIAR,
NULL AS TERCERO,
NOMBRE,
ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_CLASE_CUENTA 
NATURAL JOIN CN_MOVIMIENTO_CONTABLE 

UNION

/* Grupo Cuenta*/
SELECT 
cla.DIGITO||gru.DIGITO,
NULL as AUXILIAR,
NULL AS TERCERO,
gru.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO
FROM CN_MOVIMIENTO_CONTABLE mov
JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

UNION

/* Cuenta Mayor*/
SELECT 
cla.DIGITO||gru.DIGITO||cue.DIGITOS,
NULL as AUXILIAR,
NULL AS TERCERO,
cue.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO
FROM CN_MOVIMIENTO_CONTABLE mov
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

UNION

/* Catalogo*/
SELECT 
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
NULL AS AUXILIAR,
NULL AS TERCERO,
cat.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_CAD AS ID_CAD,
doc.ID_DOCUMENTO AS ID_DOCUMENTO,
doc.DESCR_MTO AS DESCR_MTO,
mov.DEBITO AS DEBITO,
mov.CREDITO AS CREDITO
FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA


UNION

/* Terceros con auxiliar */
SELECT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
aux.COD_AUX AS AUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_CAD AS ID_CAD,
doc.ID_DOCUMENTO AS ID_DOCUMENTO,
doc.DESCR_MTO AS DESCR_MTO,
mov.DEBITO AS DEBITO,
mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_MAE_TER ter ON 
mov.ID_MAE_TER = ter.ID_MAE_TER
AND  mov.ID_CIA = ter.ID_CIA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA

JOIN CN_AUXILIAR aux ON 
 mov.ID_AUXILIAR = aux.ID_AUXILIAR
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

UNION

/* Terceros sin auxiliar */
SELECT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
NULL AS AUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_CAD AS ID_CAD,
doc.ID_DOCUMENTO AS ID_DOCUMENTO,
doc.DESCR_MTO AS DESCR_MTO,
mov.DEBITO AS DEBITO,
mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_MAE_TER ter ON 
mov.ID_MAE_TER = ter.ID_MAE_TER
AND  mov.ID_CIA = ter.ID_CIA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA


UNION

/* Auxiliares con terceros*/
SELECT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
aux.COD_AUX AS AUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_CAD AS ID_CAD,
doc.ID_DOCUMENTO AS ID_DOCUMENTO,
doc.DESCR_MTO AS DESCR_MTO,
mov.DEBITO AS DEBITO,
mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_AUXILIAR aux ON
 mov.ID_AUXILIAR = aux.ID_AUXILIAR
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA

JOIN CN_MAE_TER ter ON 
mov.ID_MAE_TER = ter.ID_MAE_TER
AND  mov.ID_CIA = ter.ID_CIA

UNION

/* Auxiliares sin terceros*/
SELECT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS TERCERO,
aux.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_CAD AS ID_CAD,
doc.ID_DOCUMENTO AS ID_DOCUMENTO,
doc.DESCR_MTO AS DESCR_MTO,
mov.DEBITO AS DEBITO,
mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_AUXILIAR aux ON
 mov.ID_AUXILIAR = aux.ID_AUXILIAR
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA

/** TERMINA MOVIMIENTO**/
)
ORDER BY ID_MOV_CONT , DIGITO;


/**********************************/
/* View Name: CN_MOVIMIENTO_VIGPER */
/**********************************/
CREATE VIEW CN_MOVIMIENTO_VIGPER ( VIG_PER, ID_PERIODO_CONTABLE, ID_VIGENCIA, ID_MOV_CONT, ID_DOCUMENTO, ID_CAD, ID_CEN_OP, ID_CIA, ID_CATALOGO, ID_CUENTA_MAYOR, ID_GRUPO_CUENTA, ID_CLASE_CUENTA, ID_MAE_TER, ID_AUXILIAR, ID_SUB_AUX, ID_CENTRO_COSTO, ID_SUB_CENTRO_COSTO, DEBITO, CREDITO, VALOR_BASE )
AS
SELECT "VIG_PER","ID_PERIODO_CONTABLE","ID_VIGENCIA","ID_MOV_CONT","ID_DOCUMENTO","ID_CAD","ID_CEN_OP","ID_CIA","ID_CATALOGO","ID_CUENTA_MAYOR","ID_GRUPO_CUENTA","ID_CLASE_CUENTA","ID_MAE_TER","ID_AUXILIAR","ID_SUB_AUX","ID_CENTRO_COSTO","ID_SUB_CENTRO_COSTO","DEBITO","CREDITO","VALOR_BASE"
FROM
(
SELECT 
mov.ID_VIGENCIA || SUBSTR( '00'  || cad.ID_PERIODO_CONTABLE , -2,2 ) AS VIG_PER,
cad.ID_PERIODO_CONTABLE ,
mov.ID_VIGENCIA,  
mov.ID_MOV_CONT,
mov.ID_DOCUMENTO,
mov.ID_CAD,        
mov.ID_CEN_OP,     
mov.ID_CIA,     
mov.ID_CATALOGO,     
mov.ID_CUENTA_MAYOR,     
mov.ID_GRUPO_CUENTA,     
mov.ID_CLASE_CUENTA ,    
mov.ID_MAE_TER ,    
mov.ID_AUXILIAR ,    
mov.ID_SUB_AUX,     
mov.ID_CENTRO_COSTO,     
mov.ID_SUB_CENTRO_COSTO,     
mov.DEBITO,     
mov.CREDITO,     
mov.VALOR_BASE 
FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

)

ORDER BY VIG_PER;

/**********************************/
/* View Name: CN_MOV_AUX_TE */
/**********************************/
CREATE VIEW CN_MOV_AUX_TER ( VIG_PER, FECHA_CAD, ID_TIPO_COMPROBANTE, TERCERO, DEBITO, CREDITO, SALDO, TIPO_DOC, DOC_SOPORTE, DESCR_MTO, ID_CIA, ID_CEN_OP, ID_AUXILIAR, ID_CATALOGO, ID_CUENTA_MAYOR, ID_GRUPO_CUENTA, ID_CLASE_CUENTA )
AS
select "VIG_PER","FECHA_CAD","ID_TIPO_COMPROBANTE","TERCERO","DEBITO","CREDITO","SALDO","TIPO_DOC","DOC_SOPORTE","DESCR_MTO","ID_CIA","ID_CEN_OP","ID_AUXILIAR","ID_CATALOGO","ID_CUENTA_MAYOR","ID_GRUPO_CUENTA","ID_CLASE_CUENTA"
from(

SELECT 
VIG_PER,
FECHA_CAD,
ID_TIPO_COMPROBANTE,
TERCERO,
sum(DEBITO) as DEBITO,
sum(CREDITO) as CREDITO,
NULL AS SALDO,
TIPO_DOC,
DOC_SOPORTE,
DESCR_MTO,
/*llave de la vista*/ 
ID_CIA, 
ID_CEN_OP,
ID_AUXILIAR,
ID_CATALOGO,     
ID_CUENTA_MAYOR,     
ID_GRUPO_CUENTA,     
ID_CLASE_CUENTA 

FROM
(
/* Movimientos de auxiliares con terceros*/
SELECT
cad.ID_VIGENCIA || SUBSTR( '00'  || cad.ID_PERIODO_CONTABLE , -2,2 ) AS VIG_PER,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_TIPO_COMPROBANTE AS ID_TIPO_COMPROBANTE,
ter.ID_MAE_TER AS TERCERO,

/*cambio de 0 por null*/
   (CASE
       WHEN mov.DEBITO = 0 THEN null
    ELSE mov.DEBITO
  END ) DEBITO,


   (CASE
       WHEN mov.CREDITO = 0 THEN null
    ELSE mov.CREDITO
  END ) CREDITO,

td.NOMBRE AS TIPO_DOC,
doc.DOC_SOPORTE AS DOC_SOPORTE,
doc.DESCR_MTO AS DESCR_MTO,
/*llave de la vista*/ 
mov.ID_CIA, 
mov.ID_CEN_OP,
mov.ID_AUXILIAR,
mov.ID_CATALOGO,     
mov.ID_CUENTA_MAYOR,     
mov.ID_GRUPO_CUENTA,     
mov.ID_CLASE_CUENTA 

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_AUXILIAR aux ON
 mov.ID_AUXILIAR = aux.ID_AUXILIAR
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA

JOIN CN_MAE_TER ter ON 
mov.ID_MAE_TER = ter.ID_MAE_TER
AND  mov.ID_CIA = ter.ID_CIA

JOIN CN_TD td ON 
doc.ID_TD = td.ID_TD


)

group by
VIG_PER,
FECHA_CAD,
ID_TIPO_COMPROBANTE,
TERCERO,
TIPO_DOC,
DOC_SOPORTE,
DESCR_MTO,
/*llave de la vista*/ 
ID_CIA, 
ID_CEN_OP,
ID_AUXILIAR,
ID_CATALOGO,     
ID_CUENTA_MAYOR,     
ID_GRUPO_CUENTA,     
ID_CLASE_CUENTA 


)

ORDER BY
ID_CIA,
ID_CEN_OP, 
FECHA_CAD,
ID_TIPO_COMPROBANTE,
TERCERO;


/**********************************/
/* View Name: CN_SALDO_CRE_SIN_ANT */
/**********************************/
CREATE VIEW CN_SALDO_CRE_SIN_ANT ( ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, ID_MAE_TER, ID_AUXILIAR, ID_SUB_AUX, ID_CENTRO_COSTO, ID_SUB_CENTRO_COSTO, SUBCUENTA, DEBITO, CREDITO, SALDO_PERIODO )
AS
SELECT 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO||
 gru.DIGITO||
 cue.DIGITOS||
 cat.DIGITOS
 AS SUBCUENTA,
 SUM(mov.DEBITO) AS DEBITO,
 SUM(mov.CREDITO) AS CREDITO,
 SUM(mov.CREDITO) - SUM(mov.DEBITO) AS SALDO_PERIODO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

JOIN CN_VIGENCIA vig ON
 mov.ID_VIGENCIA = vig.ID_VIGENCIA

JOIN CN_PERIODO_CONTABLE per ON
 cad.ID_PERIODO_CONTABLE = per.ID_PERIODO_CONTABLE

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

WHERE cue.NATURALEZA = 'C'

GROUP BY 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO,
 gru.DIGITO,
 cue.DIGITOS,
 cat.DIGITOS

ORDER BY
 SUBCUENTA;


/**********************************/
/* View Name: CN_SALDO_DEB_SIN_ANT */
/**********************************/
CREATE VIEW CN_SALDO_DEB_SIN_ANT ( ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, ID_MAE_TER, ID_AUXILIAR, ID_SUB_AUX, ID_CENTRO_COSTO, ID_SUB_CENTRO_COSTO, SUBCUENTA, DEBITO, CREDITO, SALDO_PERIODO )
AS
SELECT 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO||
 gru.DIGITO||
 cue.DIGITOS||
 cat.DIGITOS
 AS SUBCUENTA,
 SUM(mov.DEBITO) AS DEBITO,
 SUM(mov.CREDITO) AS CREDITO,
 SUM(mov.DEBITO) - SUM(mov.CREDITO) AS SALDO_PERIODO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

JOIN CN_VIGENCIA vig ON
 mov.ID_VIGENCIA = vig.ID_VIGENCIA

JOIN CN_PERIODO_CONTABLE per ON
 cad.ID_PERIODO_CONTABLE = per.ID_PERIODO_CONTABLE

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

WHERE cue.NATURALEZA = 'D'

GROUP BY 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO,
 gru.DIGITO,
 cue.DIGITOS,
 cat.DIGITOS

ORDER BY SUBCUENTA;


/**********************************/
/* View Name: CN_SALDO_SIN_CONSOL */
/**********************************/
CREATE VIEW CN_SALDO_SIN_CONSOL ( ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, ID_MAE_TER, ID_AUXILIAR, ID_SUB_AUX, ID_CENTRO_COSTO, ID_SUB_CENTRO_COSTO, SUBCUENTA, DEBITO, CREDITO )
AS
SELECT 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO||
 gru.DIGITO||
 cue.DIGITOS||
 cat.DIGITOS
 AS SUBCUENTA,
 SUM(mov.DEBITO) AS DEBITO,
 SUM(mov.CREDITO) AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

JOIN CN_VIGENCIA vig ON
 mov.ID_VIGENCIA = vig.ID_VIGENCIA

JOIN CN_PERIODO_CONTABLE per ON
 cad.ID_PERIODO_CONTABLE = per.ID_PERIODO_CONTABLE

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

GROUP BY 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO,
 gru.DIGITO,
 cue.DIGITOS,
 cat.DIGITOS

ORDER BY SUBCUENTA;


/**********************************/
/* View Name: CN_SALDO_VIGPER */
/**********************************/
CREATE VIEW CN_SALDO_VIGPER ( VIG_PER, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, ID_MAE_TER, ID_AUXILIAR, ID_SUB_AUX, ID_CENTRO_COSTO, ID_SUB_CENTRO_COSTO, SUBCUENTA, SALDO_ANTERIOR, DEBITO, CREDITO, SALDO_ACTUAL )
AS
SELECT "VIG_PER","ID_CIA","ID_CEN_OP","ID_VIGENCIA","ID_PERIODO_CONTABLE","ID_CLASE_CUENTA","ID_GRUPO_CUENTA","ID_CUENTA_MAYOR","ID_CATALOGO","ID_MAE_TER","ID_AUXILIAR","ID_SUB_AUX","ID_CENTRO_COSTO","ID_SUB_CENTRO_COSTO","SUBCUENTA","SALDO_ANTERIOR","DEBITO","CREDITO","SALDO_ACTUAL"
FROM
(
SELECT 
ID_VIGENCIA || SUBSTR( '00'  || ID_PERIODO_CONTABLE , -2,2 ) AS VIG_PER,
ID_CIA,
ID_CEN_OP,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_CLASE_CUENTA,
ID_GRUPO_CUENTA,
ID_CUENTA_MAYOR,
ID_CATALOGO,
ID_MAE_TER,
ID_AUXILIAR,
ID_SUB_AUX,
ID_CENTRO_COSTO,
ID_SUB_CENTRO_COSTO,
SUBCUENTA,
SALDO_ANTERIOR,
DEBITO,
CREDITO,
SALDO_ACTUAL
FROM CN_SALDO

)

ORDER BY VIG_PER;


/**********************************/
/* View Name: CN_SUBC_AUX_TER */
/**********************************/
CREATE VIEW CN_SUBC_AUX_TER ( VIG_PER, CUENTA, NOMBRE, COD_AUX, NOM_AUX, ID_AUXILIAR, NITOCC, NOM_TER, ID_MAE_TER, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CATALOGO, ID_CUENTA_MAYOR, ID_GRUPO_CUENTA, ID_CLASE_CUENTA )
AS
SELECT "VIG_PER","CUENTA","NOMBRE","COD_AUX","NOM_AUX","ID_AUXILIAR","NITOCC","NOM_TER","ID_MAE_TER","ID_CIA","ID_CEN_OP","ID_VIGENCIA","ID_PERIODO_CONTABLE","ID_CATALOGO","ID_CUENTA_MAYOR","ID_GRUPO_CUENTA","ID_CLASE_CUENTA"
FROM
(
/* catálogo sin aux, sin ter */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
cat.NOMBRE AS NOMBRE,
NULL AS COD_AUX,
NULL AS NOM_AUX,
NULL AS ID_AUXILIAR,
NULL AS NITOCC,
NULL AS NOM_TER,
NULL AS ID_MAE_TER,
 /**Llave de la vista*/
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.VIG_PER,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

FROM CN_SALDO_VIGPER sal

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
  sal.ID_CIA =  sal.ID_CIA
 AND  sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
  sal.ID_CIA = cue.ID_CIA
 AND  sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND  sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA

UNION

/* con auxiliar, sin tercero */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
cat.NOMBRE AS NOMBRE,
aux.COD_AUX,
aux.NOMBRE AS NOM_AUX,
sal.ID_AUXILIAR,
NULL AS NITOCC,
NULL AS NOM_TER,
NULL AS ID_MAE_TER,
 /**Llave de la vista*/
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.VIG_PER,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

FROM CN_SALDO_VIGPER sal

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
  sal.ID_CIA =  sal.ID_CIA
 AND  sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
  sal.ID_CIA = cue.ID_CIA
 AND  sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND  sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA

JOIN CN_AUXILIAR aux ON
 sal.ID_CIA = aux.ID_CIA
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR


UNION

/* sin auxilar, con tercero  */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
cat.NOMBRE AS NOMBRE,
NULL AS COD_AUX,
NULL AS NOM_AUX,
NULL AS ID_AUXILIAR,
ter.NITOCC,
ter.NOMBRE AS NOM_TER,
sal.ID_MAE_TER,
 /**Llave de la vista*/
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.VIG_PER,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

FROM CN_SALDO_VIGPER sal

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
  sal.ID_CIA =  sal.ID_CIA
 AND  sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
  sal.ID_CIA = cue.ID_CIA
 AND  sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND  sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

UNION

/*con auxiliar, con tercero*/
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
cat.NOMBRE AS NOMBRE,
aux.COD_AUX,
aux.NOMBRE AS NOM_AUX,
sal.ID_AUXILIAR,
ter.NITOCC,
ter.NOMBRE AS NOM_TER,
sal.ID_MAE_TER,
 /**Llave de la vista*/
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.VIG_PER,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

FROM CN_SALDO_VIGPER sal

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
  sal.ID_CIA =  sal.ID_CIA
 AND  sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
  sal.ID_CIA = cue.ID_CIA
 AND  sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND  sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA

JOIN CN_AUXILIAR aux ON
 sal.ID_CIA = aux.ID_CIA
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

)

ORDER BY 
ID_CIA,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_CEN_OP,
CUENTA;


/**********************************/
/* View Name: CN_SUBC_DIGITOS */
/**********************************/
CREATE VIEW CN_SUBC_DIGITOS ( ID_CIA, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, DIGITOS, NOMBRE, ACTIVO, CORRIENTE, USA_TERCERO, USA_AUXILIAR, USA_CEN_CTO, USA_SUB_CEN_CTO )
AS
SELECT "ID_CIA","ID_CLASE_CUENTA","ID_GRUPO_CUENTA","ID_CUENTA_MAYOR","ID_CATALOGO","DIGITOS","NOMBRE","ACTIVO","CORRIENTE","USA_TERCERO","USA_AUXILIAR","USA_CEN_CTO","USA_SUB_CEN_CTO"
FROM
(
SELECT cat.ID_CIA, cla.ID_CLASE_CUENTA, gru.ID_GRUPO_CUENTA, may.ID_CUENTA_MAYOR, cat.ID_CATALOGO, cla.DIGITO||gru.DIGITO||may.DIGITOS||cat.DIGITOS AS digitos, cat.NOMBRE, cat.ACTIVO, cat.CORRIENTE, est.USA_TERCERO, est.USA_AUXILIAR, est.USA_CEN_CTO, est.USA_SUB_CEN_CTO
FROM CN_CATALOGO cat 

JOIN CN_ESTADO_CATALOGO est ON
 cat.ID_ESTADO_CATALOGO = est.ID_ESTADO_CATALOGO
 
JOIN CN_CUENTA_MAYOR may ON
 cat.ID_CIA = may.ID_CIA
 AND cat.ID_CUENTA_MAYOR = may.ID_CUENTA_MAYOR
 AND cat.ID_GRUPO_CUENTA = may.ID_GRUPO_CUENTA
 AND cat.ID_CLASE_CUENTA = may.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 cat.ID_CIA = gru.ID_CIA
 AND cat.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND cat.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 cat.ID_CIA = cla.ID_CIA
 AND cat.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
);


/**********************************/
/* View Name: CN_SUBC_DIGITOS_AUX */
/**********************************/
CREATE VIEW CN_SUBC_DIGITOS_AUX ( ID_CIA, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, ID_AUXILIAR, DIGITOS, COD_AUX, NOMBRE, NOM_AUX, ACTIVO, CORRIENTE, USA_TERCERO, USA_AUXILIAR, USA_CEN_CTO, USA_SUB_CEN_CTO )
AS
SELECT "ID_CIA","ID_CLASE_CUENTA","ID_GRUPO_CUENTA","ID_CUENTA_MAYOR","ID_CATALOGO","ID_AUXILIAR","DIGITOS","COD_AUX","NOMBRE","NOM_AUX","ACTIVO","CORRIENTE","USA_TERCERO","USA_AUXILIAR","USA_CEN_CTO","USA_SUB_CEN_CTO"
FROM
(
SELECT cat.ID_CIA, cla.ID_CLASE_CUENTA,
 gru.ID_GRUPO_CUENTA,
 may.ID_CUENTA_MAYOR,
 cat.ID_CATALOGO,
 aux.ID_AUXILIAR,
 cla.DIGITO||gru.DIGITO||may.DIGITOS||cat.DIGITOS AS digitos,
 aux.COD_AUX,
 cat.NOMBRE,
 aux.NOMBRE AS NOM_AUX,
 cat.ACTIVO,
 cat.CORRIENTE,
 est.USA_TERCERO,
 est.USA_AUXILIAR,
 est.USA_CEN_CTO,
 est.USA_SUB_CEN_CTO
FROM CN_CATALOGO cat 

JOIN CN_ESTADO_CATALOGO est ON
 cat.ID_ESTADO_CATALOGO = est.ID_ESTADO_CATALOGO
 
JOIN CN_CUENTA_MAYOR may ON
 cat.ID_CIA = may.ID_CIA
 AND cat.ID_CUENTA_MAYOR = may.ID_CUENTA_MAYOR
 AND cat.ID_GRUPO_CUENTA = may.ID_GRUPO_CUENTA
 AND cat.ID_CLASE_CUENTA = may.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 cat.ID_CIA = gru.ID_CIA
 AND cat.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND cat.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 cat.ID_CIA = cla.ID_CIA
 AND cat.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_AUXILIAR aux ON
 cat.ID_CIA = aux.ID_CIA
 AND cat.ID_CATALOGO = aux.ID_CATALOGO
 AND cat.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND cat.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND cat.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

WHERE aux.ACTIVO <> 0
);


/**********************************/
/* View Name: CN_TIP_COM_FECHA  */
/**********************************/
CREATE VIEW CN_TIP_COM_FECHA ( ID_CIA, ID_CEN_OP, ID_TIPO_COMPROBANTE, FECHA_CAD )
AS
SELECT DISTINCT ID_CIA, ID_CEN_OP, ID_TIPO_COMPROBANTE, FECHA_CAD
FROM CN_CONTROL_CAD
ORDER BY FECHA_CAD;


/*anexo tabla 20110818*/
/**********************************/
/* Table Name: cn_control_periodo_log */
/**********************************/
CREATE TABLE cn_control_periodo_log(
 usuario VARCHAR2(128) NOT NULL,
 fecha DATE NOT NULL,
 accion VARCHAR2(256) NOT NULL,
 id_control_periodo NUMBER NOT NULL,
 id_vigencia NUMBER NOT NULL,
 id_periodo_contable NUMBER NOT NULL,
 id_cen_op NUMBER NOT NULL,
 id_cia NUMBER NOT NULL,
 activo NUMBER(1) DEFAULT 1 NOT NULL
)
 ;

COMMENT ON TABLE cn_control_periodo_log is 'cn_control_periodo_log'
 ;
COMMENT ON COLUMN cn_control_periodo_log.usuario is 'usuario'
 ;
COMMENT ON COLUMN cn_control_periodo_log.fecha is 'fecha'
 ;
COMMENT ON COLUMN cn_control_periodo_log.accion is 'accion'
 ;
COMMENT ON COLUMN cn_control_periodo_log.id_control_periodo is 'id_control_periodo'
 ;
COMMENT ON COLUMN cn_control_periodo_log.id_vigencia is 'id_vigencia'
 ;
COMMENT ON COLUMN cn_control_periodo_log.id_periodo_contable is 'id_periodo_contable'
 ;
COMMENT ON COLUMN cn_control_periodo_log.id_cen_op is 'id_cen_op'
 ;
COMMENT ON COLUMN cn_control_periodo_log.id_cia is 'id_cia'
 ;
COMMENT ON COLUMN cn_control_periodo_log.activo is 'activo'
 ;

ALTER TABLE cn_control_periodo_log ADD CONSTRAINT cn_control_periodo_log_FK0 FOREIGN KEY (id_cen_op,id_cia) REFERENCES cn_centro_operacion (id_cen_op,id_cia)
 ;
ALTER TABLE cn_control_periodo_log ADD CONSTRAINT cn_control_periodo_log_FK1 FOREIGN KEY (id_periodo_contable) REFERENCES cn_periodo_contable (id_periodo_contable)
 ;
ALTER TABLE cn_control_periodo_log ADD CONSTRAINT cn_control_periodo_log_FK2 FOREIGN KEY (id_vigencia) REFERENCES cn_vigencia (id_vigencia)
 ;
/*Asegura que los valores sean de un bit 0 o 1*/

ALTER TABLE CN_CONTROL_PERIODO_log
ADD CONSTRAINT cn_cont_per_log_val_bit CHECK (ACTIVO IN ('0','1'))
;

