CREATE TABLE CONT_EJERCICIOS ( ID TIPO_ID NOT NULL, NOMBRE VARCHAR(255), FECHA_INICIO DATE, FECHA_FIN DATE, ESTADO VARCHAR(255), LONG_SUB_CUENTA SMALLINT, ID_ASIENTO_APERTURA TIPO_ID, ID_ASIENTO_PERYGAN TIPO_ID, ID_ASIENTO_CIERRE TIPO_ID); ALTER TABLE CONT_EJERCICIOS ADD CONSTRAINT PK_CONT_EJERCICIOS PRIMARY KEY (ID); CREATE TABLE CONT_CUENTAS_ESPECIALES ( ID TIPO_ID NOT NULL, REFERENCIA varchar(6), descripcion varchar(255)); ALTER TABLE CONT_CUENTAS_ESPECIALES ADD CONSTRAINT PK_CONT_CUENTAS_ESPECIALES PRIMARY KEY (ID); CREATE TABLE CONT_EPIGRAFES ( ID TIPO_ID NOT NULL, REF_EPIGRAFE VARCHAR(6), ID_PADRE TIPO_ID, descripcion varchar(255), ID_EJERCICIO TIPO_ID); ALTER TABLE CONT_EPIGRAFES ADD CONSTRAINT PK_CONT_EPIGRAFES PRIMARY KEY (ID); CREATE TABLE CONT_BALANCES ( ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */, REF_BALANCE VARCHAR(255), NATURALEZA VARCHAR(255), NIVEL1 tipo_perfil, DESCRIPCION1 varchar(255), NIVEL2 TIPO_PERFIL, DESCRIPCION2 varchar(255), NIVEL3 TIPO_PERFIL, DESCRIPCION3 varchar(255)); ALTER TABLE CONT_BALANCES ADD CONSTRAINT PK_CONT_BALANCES PRIMARY KEY (ID); CREATE TABLE CONT_CUENTAS ( ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */, REF_CUENTA VARCHAR(10), ID_EJERCICIO TIPO_ID /* TIPO_ID = INTEGER */, ID_EPIGRAFE TIPO_ID /* TIPO_ID = INTEGER */, DESCRIPCION VARCHAR(255), ID_BALANCE TIPO_ID /* TIPO_ID = INTEGER */, ID_CUENTA_ESPECIAL TIPO_ID /* TIPO_ID = INTEGER */ ); ALTER TABLE CONT_CUENTAS ADD CONSTRAINT PK_CONT_CUENTAS PRIMARY KEY (ID); CREATE TABLE CONT_SUBCUENTAS ( ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */, REF_SUBCUENTA VARCHAR(15), DESCRIPCION VARCHAR(255), ID_CUENTA TIPO_ID /* TIPO_ID = INTEGER */, ID_EJERCICIO TIPO_ID /* TIPO_ID = INTEGER */ ); ALTER TABLE CONT_SUBCUENTAS ADD CONSTRAINT PK_CONT_SUBCUENTAS PRIMARY KEY (ID); CREATE TABLE CONT_ASIENTOS ( ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */, FECHA_ASIENTO DATE, ORDEN INTEGER ); ALTER TABLE CONT_ASIENTOS ADD CONSTRAINT PK_CONT_ASIENTOS PRIMARY KEY (ID); CREATE TABLE CONT_APUNTES ( ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */, ID_ASIENTO TIPO_ID /* TIPO_ID = INTEGER */, ID_SUBCUENTA TIPO_ID /* TIPO_ID = INTEGER */, CONCEPTO VARCHAR(255), PUNTEADO SMALLINT, DEBE TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */, HABER TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */, ID_FACTURA TIPO_ID /* TIPO_ID = INTEGER */, ID_RECIBO TIPO_ID /* TIPO_ID = INTEGER */ ); ALTER TABLE CONT_APUNTES ADD CONSTRAINT PK_CONT_APUNTES PRIMARY KEY (ID); CREATE VIEW V_CONT_EPIGRAFES( ID, REF_EPIGRAFE, DESCRIPCION, ID_EJERCICIO, ID_PADRE, EPIGRAFE_PADRE) AS select CONT_EPI1.ID, CONT_EPI1.REF_EPIGRAFE, CONT_EPI1.DESCRIPCION, CONT_EPI1.ID_EJERCICIO, CONT_EPI1.ID_PADRE, CONT_EPI2.DESCRIPCION as EPIGRAFE_PADRE from CONT_EPIGRAFES CONT_EPI1 left join CONT_EPIGRAFES CONT_EPI2 on (CONT_EPI2.ID = CONT_EPI1.ID_PADRE) ; CREATE VIEW V_CONT_CUENTAS( ID, REF_CUENTA, ID_EJERCICIO, DESCRIPCION, ID_EPIGRAFE, EPIGRAFE, ID_BALANCE, BALANCE, ID_CUENTA_ESPECIAL, CUENTA_ESPECIAL) AS select CONT_CUENTAS.ID, CONT_CUENTAS.REF_CUENTA, CONT_CUENTAS.ID_EJERCICIO, CONT_CUENTAS.DESCRIPCION, CONT_CUENTAS.ID_EPIGRAFE, CONT_EPIGRAFES.DESCRIPCION as EPIGRAFE, CONT_CUENTAS.ID_BALANCE, CONT_BALANCES.REF_BALANCE as BALANCE, CONT_CUENTAS.ID_CUENTA_ESPECIAL, CONT_CUENTAS_ESPECIALES.DESCRIPCION as CUENTA_ESPECIAL from CONT_CUENTAS left join CONT_EPIGRAFES on (CONT_EPIGRAFES.ID = CONT_CUENTAS.ID_EPIGRAFE) left join CONT_BALANCES on (CONT_BALANCES.ID = CONT_CUENTAS.ID_BALANCE) left join CONT_CUENTAS_ESPECIALES on (CONT_CUENTAS_ESPECIALES.ID = CONT_CUENTAS.ID_CUENTA_ESPECIAL) ; DROP VIEW V_CONT_SUBCUENTAS; DROP VIEW V_CONT_SUBCUENTAS_SALDO; CREATE VIEW V_CONT_SUBCUENTAS_SALDO( ID_SUBCUENTA, DEBE, HABER, SALDO) AS select cont_subcuentas.ID, COALESCE(SUM(cont_apuntes.DEBE), 0) as DEBE, COALESCE(SUM(cont_apuntes.HABER), 0) as HABER, COALESCE(SUM(cont_apuntes.DEBE), 0) - COALESCE(SUM(cont_apuntes.HABER), 0) as SALDO from cont_subcuentas left join cont_apuntes on (cont_apuntes.id_subcuenta = cont_subcuentas.ID) group by cont_subcuentas.ID ; CREATE VIEW V_CONT_SUBCUENTAS( ID, REF_SUBCUENTA, DESCRIPCION, ID_EJERCICIO, ID_CUENTA, CUENTA, DEBE, HABER, SALDO) AS select CONT_SUBCUENTAS.ID, CONT_SUBCUENTAS.REF_SUBCUENTA, CONT_SUBCUENTAS.DESCRIPCION, CONT_SUBCUENTAS.ID_EJERCICIO, CONT_SUBCUENTAS.ID_CUENTA, CONT_CUENTAS.DESCRIPCION as CUENTA, V_CONT_SUBCUENTAS_SALDO.DEBE, V_CONT_SUBCUENTAS_SALDO.HABER, V_CONT_SUBCUENTAS_SALDO.SALDO from V_CONT_SUBCUENTAS_SALDO left join CONT_SUBCUENTAS on (CONT_SUBCUENTAS.ID = V_CONT_SUBCUENTAS_SALDO.ID_SUBCUENTA) left join CONT_CUENTAS on (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA) ;