/*==============================================================*/
/* DBMS name:      ORACLE Version 9i                            */
/* Created on:     30/01/2008 11:38:15 a.m.                     */
/*==============================================================*/


/*==============================================================*/
/* Table: ACUASIGNACION                                         */
/*==============================================================*/
CREATE TABLE ACUASIGNACION  (
   CIA                  CHAR(3)                         NOT NULL,
   MEDIDOR              NUMBER(5)                       NOT NULL,
   FECHA                DATE                            NOT NULL,
   CLIENTE              VARCHAR2(25)                    NOT NULL,
   SERVICIO             CHAR(3)                         NOT NULL,
   CONSTRAINT ACUASIGNACION_PK PRIMARY KEY (CIA, MEDIDOR, FECHA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: ACUSERVICIO_ASIGNACION_FK2                            */
/*==============================================================*/
CREATE INDEX ACUSERVICIO_ASIGNACION_FK2 ON ACUASIGNACION (
   CIA ASC,
   SERVICIO ASC
);

/*==============================================================*/
/* Table: ACUCOMUNIDAD                                          */
/*==============================================================*/
CREATE TABLE ACUCOMUNIDAD  (
   CIA                  CHAR(3)                         NOT NULL,
   COMUNIDAD            VARCHAR2(5)                     NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   RUTA                 NUMBER(3)                       NOT NULL,
   OBSERVACIONES        VARCHAR2(200),
   COD_PROVINCIA        CHAR(2)                         NOT NULL,
   COD_CANTON           CHAR(3)                         NOT NULL,
   COD_DISTRITO         CHAR(3)                         NOT NULL,
   CONSTRAINT ACUCOMUNIDAD_PK PRIMARY KEY (CIA, COMUNIDAD)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: ACURUTA_COMUNIDAD_FK1                                 */
/*==============================================================*/
CREATE INDEX ACURUTA_COMUNIDAD_FK1 ON ACUCOMUNIDAD (
   CIA ASC,
   RUTA ASC
);

/*==============================================================*/
/* Table: ACUCONCEPTO                                           */
/*==============================================================*/
CREATE TABLE ACUCONCEPTO  (
   CIA                  CHAR(3)                         NOT NULL,
   CONCEPTO             CHAR(3)                         NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   TIPO                 CHAR(1)                         NOT NULL
      CONSTRAINT ACUCONCEPTO_TIPO_CK CHECK (TIPO IN ('A','C','D','O')),
   IMPVENTA             NUMBER(5,2)                     NOT NULL,
   CONSTRAINT ACUCONCEPTO_PK PRIMARY KEY (CIA, CONCEPTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: ACUDETFACTURA                                         */
/*==============================================================*/
CREATE TABLE ACUDETFACTURA  (
   CIA                  CHAR(3)                         NOT NULL,
   DOCUMENTO            NUMBER(10)                      NOT NULL,
   LINEA                NUMBER(3)                       NOT NULL,
   CONCEPTO             CHAR(3)                         NOT NULL,
   REFERENCIA           NUMBER(10)                      NOT NULL,
   SUBTOTAL             NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUDETFACTURA_SUBTOTAL_CK CHECK (SUBTOTAL >= 0),
   DESCUENTO            NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUDETFACTURA_DESCUENTO_CK CHECK (DESCUENTO >= 0),
   IMPUESTO             NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUDETFACTURA_IMPUESTO_CK CHECK (IMPUESTO >= 0),
   MULTA                NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUDETFACTURA_MULTA_CK CHECK (MULTA >= 0),
   CONSTRAINT ACUDETFACTURA_PK PRIMARY KEY (CIA, DOCUMENTO, LINEA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: ACUFACTURA                                            */
/*==============================================================*/
CREATE TABLE ACUFACTURA  (
   CIA                  CHAR(3)                         NOT NULL,
   DOCUMENTO            NUMBER(10)                      NOT NULL,
   FECHA                DATE                            NOT NULL,
   DESCRIPCION          VARCHAR2(40),
   CLIENTE              VARCHAR2(25)                    NOT NULL,
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT ACUFACTURA_ESTADO_CK CHECK (ESTADO IN ('P','A','N')),
   CONSTRAINT ACUFACTURA_PK PRIMARY KEY (CIA, DOCUMENTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: ACULECTURA                                            */
/*==============================================================*/
CREATE TABLE ACULECTURA  (
   CIA                  CHAR(3)                         NOT NULL,
   DOCUMENTO            NUMBER(10)                      NOT NULL,
   PERIODO              NUMBER(6)                       NOT NULL,
   FECHA                DATE                            NOT NULL,
   VENCIMIENTO          DATE                            NOT NULL,
   MEDIDOR              NUMBER(5)                       NOT NULL,
   CLIENTE              VARCHAR2(25)                    NOT NULL,
   SERVICIO             CHAR(3)                         NOT NULL,
   ACTUAL               NUMBER(7)                       NOT NULL
      CONSTRAINT ACULECTURA_ACTUAL_CK CHECK (ACTUAL >= 0),
   ANTERIOR             NUMBER(7)                       NOT NULL
      CONSTRAINT ACULECTURA_ANTERIOR_CK CHECK (ANTERIOR >= 0),
   MONTO                NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACULECTURA_MONTO_CK CHECK (MONTO >= 0),
   FACTURA              NUMBER(10),
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT ACULECTURA_ESTADO_CK CHECK (ESTADO IN ('P','A','N')),
   CONSTRAINT ACULECTURA_PK PRIMARY KEY (CIA, DOCUMENTO),
   CONSTRAINT ACULECTURA_MEDIDOR_AK UNIQUE (CIA, MEDIDOR, PERIODO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: ACUSERVICIO_LECTURA_FK2                               */
/*==============================================================*/
CREATE INDEX ACUSERVICIO_LECTURA_FK2 ON ACULECTURA (
   CIA ASC,
   SERVICIO ASC
);

/*==============================================================*/
/* Index: ACUFACTURA_LECTURA_FK3                                */
/*==============================================================*/
CREATE INDEX ACUFACTURA_LECTURA_FK3 ON ACULECTURA (
   CIA ASC,
   FACTURA ASC
);

/*==============================================================*/
/* Table: ACUMEDIDOR                                            */
/*==============================================================*/
CREATE TABLE ACUMEDIDOR  (
   CIA                  CHAR(3)                         NOT NULL,
   MEDIDOR              NUMBER(5)                       NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   DIRECCION            VARCHAR2(60)                    NOT NULL,
   OBSERVACIONES        VARCHAR2(200),
   COMUNIDAD            VARCHAR2(5)                     NOT NULL,
   RUTA                 NUMBER(3)                       NOT NULL,
   SECUENCIA            NUMBER(4)                      
      CONSTRAINT ACUMEDIDOR_SECUENCIA_CK CHECK (SECUENCIA IS NULL OR (SECUENCIA >= 0 )),
   CLIENTE              VARCHAR2(25)                    NOT NULL,
   SERVICIO             CHAR(3)                         NOT NULL,
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT ACUMEDIDOR_ESTADO_CK CHECK (ESTADO IN ('A','C','N')),
   CONSTRAINT ACUMEDIDOR_PK PRIMARY KEY (CIA, MEDIDOR)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: ACUCOMUNIDAD_MEDIDOR_FK1                              */
/*==============================================================*/
CREATE INDEX ACUCOMUNIDAD_MEDIDOR_FK1 ON ACUMEDIDOR (
   CIA ASC,
   COMUNIDAD ASC
);

/*==============================================================*/
/* Index: ACURUTA_MEDIDOR_FK2                                   */
/*==============================================================*/
CREATE INDEX ACURUTA_MEDIDOR_FK2 ON ACUMEDIDOR (
   CIA ASC,
   RUTA ASC
);

/*==============================================================*/
/* Index: ACUSERVICIO_MEDIDOR_FK3                               */
/*==============================================================*/
CREATE INDEX ACUSERVICIO_MEDIDOR_FK3 ON ACUMEDIDOR (
   CIA ASC,
   SERVICIO ASC
);

/*==============================================================*/
/* Table: ACUPARAMETRO                                          */
/*==============================================================*/
CREATE TABLE ACUPARAMETRO  (
   CIA                  CHAR(3)                         NOT NULL,
   PERIODO              NUMBER(6)                       NOT NULL,
   TRANSACCION          NUMBER(10)                      NOT NULL,
   LECTURA              NUMBER(10)                      NOT NULL,
   FACTURA              NUMBER(10)                      NOT NULL,
   SOLICITUD            NUMBER(10)                      NOT NULL,
   MEDIDOR              NUMBER(5)                       NOT NULL,
   MAXLINEAS            NUMBER(3)                       NOT NULL,
   CONSTRAINT ACUPARAMETRO_PK PRIMARY KEY (CIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: ACURUTA                                               */
/*==============================================================*/
CREATE TABLE ACURUTA  (
   CIA                  CHAR(3)                         NOT NULL,
   RUTA                 NUMBER(3)                       NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   CONSTRAINT ACURUTA_PK PRIMARY KEY (CIA, RUTA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: ACUSERVICIO                                           */
/*==============================================================*/
CREATE TABLE ACUSERVICIO  (
   CIA                  CHAR(3)                         NOT NULL,
   SERVICIO             CHAR(3)                         NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL
      CONSTRAINT ACUSERVICIO_DESCRIPCIO_CK CHECK (DESCRIPCION >= '0'),
   CARGOCONECCION       NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUSERVICIO_CARGOCONEC_CK CHECK (CARGOCONECCION >= 0),
   CARGORECONECCION     NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUSERVICIO_CARGORECON_CK CHECK (CARGORECONECCION >= 0),
   CARGOMULTA           NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUSERVICIO_CARGOMULTA_CK CHECK (CARGOMULTA >= 0),
   CONSUMOMINIMO        NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUSERVICIO_CONSUMOMIN_CK CHECK (CONSUMOMINIMO >= 0),
   DIASVENCE            NUMBER(3)                       NOT NULL,
   CONSTRAINT ACUSERVICIO_PK PRIMARY KEY (CIA, SERVICIO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: ACUSOLICITUD                                          */
/*==============================================================*/
CREATE TABLE ACUSOLICITUD  (
   CIA                  CHAR(3)                         NOT NULL,
   DOCUMENTO            NUMBER(10)                      NOT NULL,
   CLIENTE              VARCHAR2(25)                    NOT NULL,
   FECHA                DATE                            NOT NULL,
   SERVICIO             CHAR(3)                         NOT NULL,
   MEDIDOR              NUMBER(5),
   MONTO                NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUSOLICITUD_MONTO_CK CHECK (MONTO >= 0),
   UBICACION            CHAR(1)                         NOT NULL,
   FINCA                VARCHAR2(30),
   ESCRITURA            VARCHAR2(30),
   PLANOCATASTRO        VARCHAR2(30),
   CARTAVENTA           VARCHAR2(30),
   OTROS                VARCHAR2(30),
   OBSERVACIONES        VARCHAR2(120),
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT ACUSOLICITUD_ESTADO_CK CHECK (ESTADO IN ('P','A','N')),
   CONSTRAINT ACUSOLICITUD_PK PRIMARY KEY (CIA, DOCUMENTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: ACUTARIFA                                             */
/*==============================================================*/
CREATE TABLE ACUTARIFA  (
   CIA                  CHAR(3)                         NOT NULL,
   SERVICIO             CHAR(3)                         NOT NULL,
   DESDE                NUMBER(4)                       NOT NULL,
   COSTOM3              NUMBER(9,4)                     NOT NULL
      CONSTRAINT ACUTARIFA_COSTOM3_CK CHECK (COSTOM3 >= 0),
   CONSTRAINT ACUTARIFA_PK PRIMARY KEY (CIA, SERVICIO, DESDE)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: ACUTRANSACCION                                        */
/*==============================================================*/
CREATE TABLE ACUTRANSACCION  (
   CIA                  CHAR(3)                         NOT NULL,
   DOCUMENTO            NUMBER(10)                      NOT NULL,
   FECHA                DATE                            NOT NULL,
   DESCRIPCION          VARCHAR2(40)                    NOT NULL,
   CONCEPTO             CHAR(3)                         NOT NULL,
   CLIENTE              VARCHAR2(25)                    NOT NULL,
   MONTO                NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUTRANSACCION_MONTO_CK CHECK (MONTO >= 0),
   DESCUENTO            NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUTRANSACCION_DESCUENTO_CK CHECK (DESCUENTO >= 0),
   SALDO                NUMBER(14,2)                    NOT NULL
      CONSTRAINT ACUTRANSACCION_SALDO_CK CHECK (SALDO >= 0),
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT ACUTRANSACCION_ESTADO_CK CHECK (ESTADO IN ('P','A','N')),
   CONSTRAINT ACUTRANSACCION_PK PRIMARY KEY (CIA, DOCUMENTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: ACUCONCEPTO_TRANSACCION_FK1                           */
/*==============================================================*/
CREATE INDEX ACUCONCEPTO_TRANSACCION_FK1 ON ACUTRANSACCION (
   CIA ASC,
   CONCEPTO ASC
);

/*==============================================================*/
/* View: SECLECTURA                                             */
/*==============================================================*/
CREATE OR REPLACE VIEW SECLECTURA AS
SELECT B.CIA,B.DOCUMENTO,A.COMUNIDAD,A.RUTA,A.SECUENCIA,A.DESCRIPCION,B.PERIODO,B.FECHA,
B.VENCIMIENTO,B.MEDIDOR,B.CLIENTE,B.SERVICIO,B.ACTUAL,B.ANTERIOR,
B.MONTO,B.FACTURA,B.ESTADO
FROM  ACUMEDIDOR A,ACULECTURA B
WHERE A.CIA       = B.CIA
AND   A.MEDIDOR   = B.MEDIDOR;

ALTER TABLE ACUASIGNACION
   ADD CONSTRAINT ACUMEDIDOR_ASIGNACION_FK FOREIGN KEY (CIA, MEDIDOR)
      REFERENCES ACUMEDIDOR (CIA, MEDIDOR);

ALTER TABLE ACUASIGNACION
   ADD CONSTRAINT ACUSERVICIO_ASIGNACION_FK FOREIGN KEY (CIA, SERVICIO)
      REFERENCES ACUSERVICIO (CIA, SERVICIO);

ALTER TABLE ACUCOMUNIDAD
   ADD CONSTRAINT ACURUTA_COMUNIDAD_FK FOREIGN KEY (CIA, RUTA)
      REFERENCES ACURUTA (CIA, RUTA);

ALTER TABLE ACUCONCEPTO
   ADD CONSTRAINT ACUPARAMETRO_CONCEPTO_FK FOREIGN KEY (CIA)
      REFERENCES ACUPARAMETRO (CIA);

ALTER TABLE ACUDETFACTURA
   ADD CONSTRAINT ACUFACTURA_DETFACTURA_FK FOREIGN KEY (CIA, DOCUMENTO)
      REFERENCES ACUFACTURA (CIA, DOCUMENTO);

ALTER TABLE ACULECTURA
   ADD CONSTRAINT ACUFACTURA_LECTURA_FK FOREIGN KEY (CIA, FACTURA)
      REFERENCES ACUFACTURA (CIA, DOCUMENTO);

ALTER TABLE ACULECTURA
   ADD CONSTRAINT ACUMEDIDOR_LECTURA_FK FOREIGN KEY (CIA, MEDIDOR)
      REFERENCES ACUMEDIDOR (CIA, MEDIDOR);

ALTER TABLE ACULECTURA
   ADD CONSTRAINT ACUSERVICIO_LECTURA_FK FOREIGN KEY (CIA, SERVICIO)
      REFERENCES ACUSERVICIO (CIA, SERVICIO);

ALTER TABLE ACUMEDIDOR
   ADD CONSTRAINT ACUCOMUNIDAD_MEDIDOR_FK FOREIGN KEY (CIA, COMUNIDAD)
      REFERENCES ACUCOMUNIDAD (CIA, COMUNIDAD);

ALTER TABLE ACUMEDIDOR
   ADD CONSTRAINT ACURUTA_MEDIDOR_FK FOREIGN KEY (CIA, RUTA)
      REFERENCES ACURUTA (CIA, RUTA);

ALTER TABLE ACUMEDIDOR
   ADD CONSTRAINT ACUSERVICIO_MEDIDOR_FK FOREIGN KEY (CIA, SERVICIO)
      REFERENCES ACUSERVICIO (CIA, SERVICIO)
      ON DELETE CASCADE;

ALTER TABLE ACUSERVICIO
   ADD CONSTRAINT ACUPARAMETRO_SERVICIO_FK FOREIGN KEY (CIA)
      REFERENCES ACUPARAMETRO (CIA);

ALTER TABLE ACUSOLICITUD
   ADD CONSTRAINT ACUPARAMETRO_SOLICITUD_FK FOREIGN KEY (CIA)
      REFERENCES ACUPARAMETRO (CIA);

ALTER TABLE ACUTARIFA
   ADD CONSTRAINT ACUSERVICIO_TARIFA_FK FOREIGN KEY (CIA, SERVICIO)
      REFERENCES ACUSERVICIO (CIA, SERVICIO);

ALTER TABLE ACUTRANSACCION
   ADD CONSTRAINT ACUCONCEPTO_TRANSACCION_FK FOREIGN KEY (CIA, CONCEPTO)
      REFERENCES ACUCONCEPTO (CIA, CONCEPTO);

