BEGIN;
CREATE TABLE "anuencias_tecnicas_proyectos" (
    "id" serial NOT NULL PRIMARY KEY,
    "fecha_registro" timestamp with time zone NOT NULL,
    "fecha_ultimo_cambio" timestamp with time zone NOT NULL,
    "activo" boolean NOT NULL,
    "usuario_id" integer NOT NULL REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED,
    "clave" varchar(10) NOT NULL,
    "nombre" varchar(150) NOT NULL,
    "descripcion" varchar(100) NOT NULL,
    UNIQUE ("clave", "nombre")
)
;
CREATE TABLE "anuencias_tecnicas_partidas_partidas" (
    "id" serial NOT NULL PRIMARY KEY,
    "partidas_id" integer NOT NULL,
    "proyectos_id" integer NOT NULL REFERENCES "anuencias_tecnicas_proyectos" ("id") DEFERRABLE INITIALLY DEFERRED,
    UNIQUE ("partidas_id", "proyectos_id")
)
;
CREATE TABLE "anuencias_tecnicas_partidas" (
    "id" serial NOT NULL PRIMARY KEY,
    "fecha_registro" timestamp with time zone NOT NULL,
    "fecha_ultimo_cambio" timestamp with time zone NOT NULL,
    "activo" boolean NOT NULL,
    "usuario_id" integer NOT NULL REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED,
    "clave" varchar(10) NOT NULL,
    "nombre" varchar(150) NOT NULL,
    "descripcion" varchar(100) NOT NULL
)
;
ALTER TABLE "anuencias_tecnicas_partidas_partidas" ADD CONSTRAINT "partidas_id_refs_id_9d24cc64" FOREIGN KEY ("partidas_id") REFERENCES "anuencias_tecnicas_partidas" ("id") DEFERRABLE INITIALLY DEFERRED;
CREATE TABLE "anuencias_tecnicas_estatus" (
    "id" serial NOT NULL PRIMARY KEY,
    "fecha_registro" timestamp with time zone NOT NULL,
    "fecha_ultimo_cambio" timestamp with time zone NOT NULL,
    "activo" boolean NOT NULL,
    "usuario_id" integer NOT NULL REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED,
    "clave" varchar(10) NOT NULL,
    "nombre" varchar(150) NOT NULL,
    "descripcion" varchar(100) NOT NULL,
    "color" varchar(17) NOT NULL,
    "secuencia" integer NOT NULL
)
;
CREATE TABLE "anuencias_tecnicas_catalogodependencias" (
    "id" serial NOT NULL PRIMARY KEY,
    "clave" varchar(150) NOT NULL,
    "nombre" varchar(150) NOT NULL
)
;
CREATE TABLE "anuencias_tecnicas_anuencia_datos" (
    "id" serial NOT NULL PRIMARY KEY,
    "fecha_registro" timestamp with time zone NOT NULL,
    "fecha_ultimo_cambio" timestamp with time zone NOT NULL,
    "activo" boolean NOT NULL,
    "usuario_id" integer NOT NULL REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED,
    "fecha_solicitud" timestamp with time zone,
    "fecha_recepcion" timestamp with time zone,
    "dependencias_id" integer NOT NULL REFERENCES "anuencias_tecnicas_catalogodependencias" ("id") DEFERRABLE INITIALLY DEFERRED,
    "no_oficio" varchar(70) NOT NULL,
    "contacto_tecnico" varchar(150) NOT NULL,
    "telefono_fax" varchar(15) NOT NULL,
    "extension" varchar(6),
    "correo_electronico" varchar(30),
    "no_requisicion" varchar(15),
    "estatus_id" integer NOT NULL REFERENCES "anuencias_tecnicas_estatus" ("id") DEFERRABLE INITIALLY DEFERRED,
    "autorizacion_presupuesto" varchar(100),
    "autorizacion_tecnica" varchar(100),
    "cotizaciones" varchar(100),
    "justificacion" text NOT NULL
)
;
CREATE TABLE "anuencias_tecnicas_addproyectos" (
    "id" serial NOT NULL PRIMARY KEY,
    "clave" varchar(100) NOT NULL,
    "nombre" varchar(200) NOT NULL
)
;
CREATE TABLE "anuencias_tecnicas_addpartidas_proyectos" (
    "id" serial NOT NULL PRIMARY KEY,
    "addpartidas_id" integer NOT NULL,
    "addproyectos_id" integer NOT NULL REFERENCES "anuencias_tecnicas_addproyectos" ("id") DEFERRABLE INITIALLY DEFERRED,
    UNIQUE ("addpartidas_id", "addproyectos_id")
)
;
CREATE TABLE "anuencias_tecnicas_addpartidas" (
    "id" serial NOT NULL PRIMARY KEY,
    "clave" varchar(100) NOT NULL,
    "nombre" varchar(200) NOT NULL
)
;
ALTER TABLE "anuencias_tecnicas_addpartidas_proyectos" ADD CONSTRAINT "addpartidas_id_refs_id_7ef15694" FOREIGN KEY ("addpartidas_id") REFERENCES "anuencias_tecnicas_addpartidas" ("id") DEFERRABLE INITIALLY DEFERRED;
CREATE TABLE "anuencias_tecnicas_anuencia_detalle" (
    "id" serial NOT NULL PRIMARY KEY,
    "fecha_registro" timestamp with time zone NOT NULL,
    "fecha_ultimo_cambio" timestamp with time zone NOT NULL,
    "activo" boolean NOT NULL,
    "usuario_id" integer NOT NULL REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED,
    "anuencia_id" integer NOT NULL REFERENCES "anuencias_tecnicas_anuencia_datos" ("id") DEFERRABLE INITIALLY DEFERRED,
    "proyecto_id" integer NOT NULL REFERENCES "anuencias_tecnicas_addproyectos" ("id") DEFERRABLE INITIALLY DEFERRED,
    "partida_id" integer NOT NULL REFERENCES "anuencias_tecnicas_addpartidas" ("id") DEFERRABLE INITIALLY DEFERRED,
    "no_lote" varchar(3),
    "articulo" varchar(300) NOT NULL,
    "categoria" varchar(100) NOT NULL,
    "descripcion" text NOT NULL,
    "cantidad" integer NOT NULL,
    "precio" numeric(20, 2) NOT NULL,
    "url" varchar(200),
    "autorizado" boolean NOT NULL,
    "observaciones" text,
    UNIQUE ("proyecto_id", "partida_id", "articulo", "anuencia_id")
)
;
CREATE TABLE "anuencias_tecnicas_revision" (
    "id" serial NOT NULL PRIMARY KEY,
    "fecha_registro" timestamp with time zone NOT NULL,
    "fecha_ultimo_cambio" timestamp with time zone NOT NULL,
    "activo" boolean NOT NULL,
    "usuario_id" integer NOT NULL REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED,
    "anuencia_id" integer NOT NULL REFERENCES "anuencias_tecnicas_anuencia_datos" ("id") DEFERRABLE INITIALLY DEFERRED
)
;
CREATE TABLE "anuencias_tecnicas_autorizacion" (
    "id" serial NOT NULL PRIMARY KEY,
    "fecha_registro" timestamp with time zone NOT NULL,
    "fecha_ultimo_cambio" timestamp with time zone NOT NULL,
    "activo" boolean NOT NULL,
    "usuario_id" integer NOT NULL REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED,
    "anuencia_id" integer NOT NULL REFERENCES "anuencias_tecnicas_anuencia_datos" ("id") DEFERRABLE INITIALLY DEFERRED
)
;
CREATE INDEX "anuencias_tecnicas_proyectos_usuario_id" ON "anuencias_tecnicas_proyectos" ("usuario_id");
CREATE INDEX "anuencias_tecnicas_partidas_usuario_id" ON "anuencias_tecnicas_partidas" ("usuario_id");
CREATE INDEX "anuencias_tecnicas_estatus_usuario_id" ON "anuencias_tecnicas_estatus" ("usuario_id");
CREATE INDEX "anuencias_tecnicas_anuencia_datos_usuario_id" ON "anuencias_tecnicas_anuencia_datos" ("usuario_id");
CREATE INDEX "anuencias_tecnicas_anuencia_datos_dependencias_id" ON "anuencias_tecnicas_anuencia_datos" ("dependencias_id");
CREATE INDEX "anuencias_tecnicas_anuencia_datos_estatus_id" ON "anuencias_tecnicas_anuencia_datos" ("estatus_id");
CREATE INDEX "anuencias_tecnicas_anuencia_detalle_usuario_id" ON "anuencias_tecnicas_anuencia_detalle" ("usuario_id");
CREATE INDEX "anuencias_tecnicas_anuencia_detalle_anuencia_id" ON "anuencias_tecnicas_anuencia_detalle" ("anuencia_id");
CREATE INDEX "anuencias_tecnicas_anuencia_detalle_proyecto_id" ON "anuencias_tecnicas_anuencia_detalle" ("proyecto_id");
CREATE INDEX "anuencias_tecnicas_anuencia_detalle_partida_id" ON "anuencias_tecnicas_anuencia_detalle" ("partida_id");
CREATE INDEX "anuencias_tecnicas_revision_usuario_id" ON "anuencias_tecnicas_revision" ("usuario_id");
CREATE INDEX "anuencias_tecnicas_revision_anuencia_id" ON "anuencias_tecnicas_revision" ("anuencia_id");
CREATE INDEX "anuencias_tecnicas_autorizacion_usuario_id" ON "anuencias_tecnicas_autorizacion" ("usuario_id");
CREATE INDEX "anuencias_tecnicas_autorizacion_anuencia_id" ON "anuencias_tecnicas_autorizacion" ("anuencia_id");

COMMIT;
