
# This is a fix for InnoDB in MySQL >= 4.1.x
# It "suspends judgement" for fkey relationships until are tables are set.
SET FOREIGN_KEY_CHECKS = 0;

#-----------------------------------------------------------------------------
#-- traza
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `traza`;


CREATE TABLE `traza`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`especialista_id` INTEGER  NOT NULL,
	`accion` TEXT,
	`fecha` DATE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `traza_FI_1` (`especialista_id`),
	CONSTRAINT `traza_FK_1`
		FOREIGN KEY (`especialista_id`)
		REFERENCES `especialista` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- setup
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `setup`;


CREATE TABLE `setup`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`nombre` CHAR(20),
	`id_item` CHAR(50),
	`descripcion` CHAR(50),
	`valor` CHAR(200),
	`tipo_valor_id` INTEGER  NOT NULL,
	`valor_inicial` CHAR(200),
	`maximo` CHAR(200),
	`minimo` CHAR(200),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `setup_FI_1` (`tipo_valor_id`),
	CONSTRAINT `setup_FK_1`
		FOREIGN KEY (`tipo_valor_id`)
		REFERENCES `tipo_valor` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- equipo
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `equipo`;


CREATE TABLE `equipo`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`modelo_id` INTEGER,
	`nombre` VARCHAR(20),
	`numero_telefonico` VARCHAR(30),
	`numero_serie` VARCHAR(20),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `equipo_FI_1` (`modelo_id`),
	CONSTRAINT `equipo_FK_1`
		FOREIGN KEY (`modelo_id`)
		REFERENCES `modelo` (`id`)
		ON DELETE SET NULL
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- tipo_valor
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `tipo_valor`;


CREATE TABLE `tipo_valor`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`nombre` CHAR(50),
	`descripcion` CHAR(200),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- periodo_contable
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `periodo_contable`;


CREATE TABLE `periodo_contable`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`fecha_inicial` DATE,
	`fecha_final` DATE,
	`descripcion` CHAR(200),
	`cerrado` TINYINT(1) default 0,
	`activo` TINYINT(1) default 0,
	`empresa_id` INTEGER  NOT NULL,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `periodo_contable_FI_1` (`empresa_id`),
	CONSTRAINT `periodo_contable_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- extraccion_caja
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `extraccion_caja`;


CREATE TABLE `extraccion_caja`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`fecha` DATE,
	`monto` DOUBLE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- cuadre_caja
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `cuadre_caja`;


CREATE TABLE `cuadre_caja`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`periodo_contable_id` INTEGER,
	`especialista_id` INTEGER,
	`empresa_id` INTEGER,
	`dia` TINYINT(1),
	`monto_sistema` DOUBLE,
	`monto_caja` DOUBLE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `cuadre_caja_FI_1` (`periodo_contable_id`),
	CONSTRAINT `cuadre_caja_FK_1`
		FOREIGN KEY (`periodo_contable_id`)
		REFERENCES `periodo_contable` (`id`),
	INDEX `cuadre_caja_FI_2` (`especialista_id`),
	CONSTRAINT `cuadre_caja_FK_2`
		FOREIGN KEY (`especialista_id`)
		REFERENCES `especialista` (`id`),
	INDEX `cuadre_caja_FI_3` (`empresa_id`),
	CONSTRAINT `cuadre_caja_FK_3`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- tipo_gasto
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `tipo_gasto`;


CREATE TABLE `tipo_gasto`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`nombre` CHAR(50),
	`descripcion` CHAR(200),
	`empresa_id` INTEGER  NOT NULL,
	`fijo` TINYINT(1) default 0,
	`neutro` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `tipo_gasto_FI_1` (`empresa_id`),
	CONSTRAINT `tipo_gasto_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- gasto_departamento
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `gasto_departamento`;


CREATE TABLE `gasto_departamento`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`tipo_gasto_id` INTEGER  NOT NULL,
	`especialista_id` INTEGER  NOT NULL,
	`tasa_cambio` DOUBLE,
	`tasa_cambio_usd` DOUBLE,
	`descripcion` CHAR(255),
	`cantidad` DOUBLE,
	`valor` DOUBLE,
	`fecha` DATE,
	`periodo_contable_id` INTEGER  NOT NULL,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `gasto_departamento_FI_1` (`tipo_gasto_id`),
	CONSTRAINT `gasto_departamento_FK_1`
		FOREIGN KEY (`tipo_gasto_id`)
		REFERENCES `tipo_gasto` (`id`),
	INDEX `gasto_departamento_FI_2` (`especialista_id`),
	CONSTRAINT `gasto_departamento_FK_2`
		FOREIGN KEY (`especialista_id`)
		REFERENCES `especialista` (`id`),
	INDEX `gasto_departamento_FI_3` (`periodo_contable_id`),
	CONSTRAINT `gasto_departamento_FK_3`
		FOREIGN KEY (`periodo_contable_id`)
		REFERENCES `periodo_contable` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- moneda
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `moneda`;


CREATE TABLE `moneda`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`nombre` CHAR(20),
	`alias` CHAR(5),
	`descripcion` CHAR(20),
	`tasa_cambio` DOUBLE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- empresa
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `empresa`;


CREATE TABLE `empresa`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`alias` CHAR(50),
	`nombre` CHAR(50),
	`descripcion` CHAR(200),
	`url` CHAR(200) default '',
	`gastos_fijos` TINYINT(1) default 0,
	`servicio_manual` TINYINT(1) default 0,
	`venta_dinamica` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- descuento_especialista
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `descuento_especialista`;


CREATE TABLE `descuento_especialista`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`especialista_id` INTEGER,
	`periodo_contable_id` INTEGER  NOT NULL,
	`cantidad` DOUBLE,
	`descripcion` CHAR(200),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `descuento_especialista_FI_1` (`especialista_id`),
	CONSTRAINT `descuento_especialista_FK_1`
		FOREIGN KEY (`especialista_id`)
		REFERENCES `especialista` (`id`),
	INDEX `descuento_especialista_FI_2` (`periodo_contable_id`),
	CONSTRAINT `descuento_especialista_FK_2`
		FOREIGN KEY (`periodo_contable_id`)
		REFERENCES `periodo_contable` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- servicio
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `servicio`;


CREATE TABLE `servicio`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`cliente_id` INTEGER  NOT NULL,
	`especialista_id` INTEGER  NOT NULL,
	`mecanico_id` INTEGER,
	`diagnostico_id` INTEGER  NOT NULL,
	`modelo_equipo_id` INTEGER  NOT NULL,
	`periodo_contable_id` INTEGER  NOT NULL,
	`inventario_id` INTEGER default 0,
	`promotor` VARCHAR(200) default '',
	`fecha` DATE,
	`tipo` TINYINT(0),
	`descripcion` VARCHAR(200),
	`es_merma` TINYINT(1) default 0,
	`merma_recogida` TINYINT(1) default 0,
	`fecha_recogida` DATE,
	`al_por_mayor` TINYINT(0) default 0,
	`borrado` TINYINT(1) default 0,
	`mano_obra` TINYINT(1),
	`garantia` TINYINT(2),
	`precio_manual` TINYINT(3),
	`porciento_pago` TINYINT default 10,
	`porciento_pago_mecanico` TINYINT default 10,
	`porciento_pago_promotor` TINYINT default 10,
	`pago_secretaria` DOUBLE default 0,
	`pago_promotor` DOUBLE default 0,
	`pago_mecanico` DOUBLE default 0,
	`pagado` TINYINT(1),
	`observaciones` VARCHAR(255) default '',
	`created_at` DATETIME,
	`updated_at` DATETIME,
	`contador_update` INTEGER default 0,
	PRIMARY KEY (`id`),
	INDEX `servicio_FI_1` (`empresa_id`),
	CONSTRAINT `servicio_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
		ON DELETE CASCADE,
	INDEX `servicio_FI_2` (`cliente_id`),
	CONSTRAINT `servicio_FK_2`
		FOREIGN KEY (`cliente_id`)
		REFERENCES `cliente` (`id`)
		ON DELETE CASCADE,
	INDEX `servicio_FI_3` (`especialista_id`),
	CONSTRAINT `servicio_FK_3`
		FOREIGN KEY (`especialista_id`)
		REFERENCES `especialista` (`id`)
		ON DELETE CASCADE,
	INDEX `servicio_FI_4` (`mecanico_id`),
	CONSTRAINT `servicio_FK_4`
		FOREIGN KEY (`mecanico_id`)
		REFERENCES `especialista` (`id`)
		ON DELETE CASCADE,
	INDEX `servicio_FI_5` (`diagnostico_id`),
	CONSTRAINT `servicio_FK_5`
		FOREIGN KEY (`diagnostico_id`)
		REFERENCES `diagnostico` (`id`),
	INDEX `servicio_FI_6` (`modelo_equipo_id`),
	CONSTRAINT `servicio_FK_6`
		FOREIGN KEY (`modelo_equipo_id`)
		REFERENCES `modelo` (`id`),
	INDEX `servicio_FI_7` (`periodo_contable_id`),
	CONSTRAINT `servicio_FK_7`
		FOREIGN KEY (`periodo_contable_id`)
		REFERENCES `periodo_contable` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- devolucion_merma
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `devolucion_merma`;


CREATE TABLE `devolucion_merma`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`modelo_id` INTEGER  NOT NULL,
	`costo` DOUBLE default 0,
	`venta` DOUBLE default 0,
	`cantidad` DOUBLE default 0,
	`fecha` DATE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `devolucion_merma_FI_1` (`modelo_id`),
	CONSTRAINT `devolucion_merma_FK_1`
		FOREIGN KEY (`modelo_id`)
		REFERENCES `modelo` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- opciones_servicio_manual
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `opciones_servicio_manual`;


CREATE TABLE `opciones_servicio_manual`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`servicio_id` INTEGER  NOT NULL,
	`value` VARCHAR(50),
	`venta` DOUBLE,
	`garantia` TINYINT(1) default 0,
	`moneda` TINYINT(1) default 0,
	PRIMARY KEY (`id`),
	INDEX `opciones_servicio_manual_FI_1` (`servicio_id`),
	CONSTRAINT `opciones_servicio_manual_FK_1`
		FOREIGN KEY (`servicio_id`)
		REFERENCES `servicio` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- devolucion_servicio_periodo
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `devolucion_servicio_periodo`;


CREATE TABLE `devolucion_servicio_periodo`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`periodo_contable_id` INTEGER  NOT NULL,
	`servicio_id` INTEGER  NOT NULL,
	`especialista_id` INTEGER  NOT NULL,
	`gasto_id` INTEGER  NOT NULL,
	`parcial` TINYINT(1),
	`descripcion` CHAR(200),
	`fecha` DATE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `devolucion_servicio_periodo_FI_1` (`periodo_contable_id`),
	CONSTRAINT `devolucion_servicio_periodo_FK_1`
		FOREIGN KEY (`periodo_contable_id`)
		REFERENCES `periodo_contable` (`id`),
	INDEX `devolucion_servicio_periodo_FI_2` (`servicio_id`),
	CONSTRAINT `devolucion_servicio_periodo_FK_2`
		FOREIGN KEY (`servicio_id`)
		REFERENCES `servicio` (`id`),
	INDEX `devolucion_servicio_periodo_FI_3` (`especialista_id`),
	CONSTRAINT `devolucion_servicio_periodo_FK_3`
		FOREIGN KEY (`especialista_id`)
		REFERENCES `especialista` (`id`)
		ON DELETE CASCADE,
	INDEX `devolucion_servicio_periodo_FI_4` (`gasto_id`),
	CONSTRAINT `devolucion_servicio_periodo_FK_4`
		FOREIGN KEY (`gasto_id`)
		REFERENCES `gasto_departamento` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- modelo_servicio
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `modelo_servicio`;


CREATE TABLE `modelo_servicio`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`servicio_id` INTEGER  NOT NULL,
	`modelo_id` INTEGER  NOT NULL,
	`otros_datos` CHAR(200),
	`costo_de` TINYINT(0) default 0,
	`costo` DOUBLE,
	`venta` DOUBLE,
	`pago` DOUBLE default 0,
	`moneda` TINYINT(1) default 1,
	`tasa_cambio` DOUBLE default 1,
	`tasa_cambio_usd` DOUBLE,
	`descuento` DOUBLE,
	`plus` DOUBLE,
	`cantidad` DOUBLE default 0,
	`pago_secretaria` DOUBLE default 0,
	`pago_promotor` DOUBLE default 0,
	`pago_mecanico` DOUBLE default 0,
	`mp_id` CHAR(50),
	`devolucion` TINYINT(1),
	`es_merma` TINYINT(1) default 0,
	`costo_producto` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `modelo_servicio_FI_1` (`servicio_id`),
	CONSTRAINT `modelo_servicio_FK_1`
		FOREIGN KEY (`servicio_id`)
		REFERENCES `servicio` (`id`)
		ON DELETE CASCADE,
	INDEX `modelo_servicio_FI_2` (`modelo_id`),
	CONSTRAINT `modelo_servicio_FK_2`
		FOREIGN KEY (`modelo_id`)
		REFERENCES `modelo` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- concepto
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `concepto`;


CREATE TABLE `concepto`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`nombre` CHAR(50),
	`descripcion` CHAR(200),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `concepto_FI_1` (`empresa_id`),
	CONSTRAINT `concepto_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- diagnostico
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `diagnostico`;


CREATE TABLE `diagnostico`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`nombre` CHAR(50),
	`descripcion` CHAR(200),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `diagnostico_FI_1` (`empresa_id`),
	CONSTRAINT `diagnostico_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- concepto_gasto
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `concepto_gasto`;


CREATE TABLE `concepto_gasto`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`nombre` CHAR(50),
	`descripcion` CHAR(200),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `concepto_gasto_FI_1` (`empresa_id`),
	CONSTRAINT `concepto_gasto_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- gasto
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `gasto`;


CREATE TABLE `gasto`
(
	`cuenta_id` INTEGER  NOT NULL,
	`especialista_id` INTEGER  NOT NULL,
	`concepto_gasto_id` INTEGER  NOT NULL,
	`fecha` DATE,
	`valor` DOUBLE,
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	PRIMARY KEY (`id`),
	INDEX `gasto_FI_1` (`cuenta_id`),
	CONSTRAINT `gasto_FK_1`
		FOREIGN KEY (`cuenta_id`)
		REFERENCES `cuenta` (`id`),
	INDEX `gasto_FI_2` (`especialista_id`),
	CONSTRAINT `gasto_FK_2`
		FOREIGN KEY (`especialista_id`)
		REFERENCES `especialista` (`id`),
	INDEX `gasto_FI_3` (`concepto_gasto_id`),
	CONSTRAINT `gasto_FK_3`
		FOREIGN KEY (`concepto_gasto_id`)
		REFERENCES `concepto_gasto` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- ingreso
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `ingreso`;


CREATE TABLE `ingreso`
(
	`cuenta_id` INTEGER  NOT NULL,
	`servicio_id` INTEGER  NOT NULL,
	`fecha` DATE,
	`valor` DOUBLE,
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	PRIMARY KEY (`id`),
	INDEX `ingreso_FI_1` (`cuenta_id`),
	CONSTRAINT `ingreso_FK_1`
		FOREIGN KEY (`cuenta_id`)
		REFERENCES `cuenta` (`id`),
	INDEX `ingreso_FI_2` (`servicio_id`),
	CONSTRAINT `ingreso_FK_2`
		FOREIGN KEY (`servicio_id`)
		REFERENCES `servicio` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- cuenta
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `cuenta`;


CREATE TABLE `cuenta`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`concepto_id` INTEGER  NOT NULL,
	`moneda_id` INTEGER  NOT NULL,
	`nombre` CHAR(50),
	`descripcion` CHAR(200),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `cuenta_FI_1` (`empresa_id`),
	CONSTRAINT `cuenta_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`),
	INDEX `cuenta_FI_2` (`concepto_id`),
	CONSTRAINT `cuenta_FK_2`
		FOREIGN KEY (`concepto_id`)
		REFERENCES `concepto` (`id`),
	INDEX `cuenta_FI_3` (`moneda_id`),
	CONSTRAINT `cuenta_FK_3`
		FOREIGN KEY (`moneda_id`)
		REFERENCES `moneda` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- estado_cuenta
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `estado_cuenta`;


CREATE TABLE `estado_cuenta`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`cuenta_id` INTEGER  NOT NULL,
	`valor_inicial` DOUBLE,
	`valor_final` DOUBLE,
	`descripcion` CHAR(200),
	`fecha` DATE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `estado_cuenta_FI_1` (`cuenta_id`),
	CONSTRAINT `estado_cuenta_FK_1`
		FOREIGN KEY (`cuenta_id`)
		REFERENCES `cuenta` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- tipo_especialista
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `tipo_especialista`;


CREATE TABLE `tipo_especialista`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`nombre` CHAR(50),
	`descripcion` CHAR(200),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- especialista
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `especialista`;


CREATE TABLE `especialista`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`user_id` INTEGER  NOT NULL,
	`tipo_especialista_id` INTEGER  NOT NULL,
	`plantilla_gastos_fijos` TINYINT default 0,
	`nombre` VARCHAR(255) default '' NOT NULL,
	`apellidos` VARCHAR(255) default '' NOT NULL,
	`porciento_pago` TINYINT default 0,
	`escala_pago` TINYINT default 0,
	`porciento_pago_accesorio` TINYINT default 0,
	`no_licencia` VARCHAR(50) default '' NOT NULL,
	`documento` VARCHAR(50) default '' NOT NULL,
	`no_ci` VARCHAR(50) default '' NOT NULL,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `especialista_FI_1` (`user_id`),
	CONSTRAINT `especialista_FK_1`
		FOREIGN KEY (`user_id`)
		REFERENCES `sf_guard_user` (`id`)
		ON DELETE CASCADE,
	INDEX `especialista_FI_2` (`tipo_especialista_id`),
	CONSTRAINT `especialista_FK_2`
		FOREIGN KEY (`tipo_especialista_id`)
		REFERENCES `tipo_especialista` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- especialista_empresa
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `especialista_empresa`;


CREATE TABLE `especialista_empresa`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`especialista_id` INTEGER  NOT NULL,
	`empresa_id` INTEGER  NOT NULL,
	`porciento_pago` DOUBLE default 0,
	`escala_pago` TINYINT default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `especialista_empresa_FI_1` (`especialista_id`),
	CONSTRAINT `especialista_empresa_FK_1`
		FOREIGN KEY (`especialista_id`)
		REFERENCES `especialista` (`id`)
		ON DELETE CASCADE,
	INDEX `especialista_empresa_FI_2` (`empresa_id`),
	CONSTRAINT `especialista_empresa_FK_2`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- deuda_trabajador
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `deuda_trabajador`;


CREATE TABLE `deuda_trabajador`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`especialista_id` INTEGER  NOT NULL,
	`descripcion` VARCHAR(255),
	`valor` DOUBLE,
	`fecha` DATE,
	`pagada` TINYINT(1) default 0,
	`moneda` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `deuda_trabajador_FI_1` (`especialista_id`),
	CONSTRAINT `deuda_trabajador_FK_1`
		FOREIGN KEY (`especialista_id`)
		REFERENCES `especialista` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- pago_trabajador
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `pago_trabajador`;


CREATE TABLE `pago_trabajador`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`deuda_trabajador_id` INTEGER  NOT NULL,
	`descripcion` VARCHAR(255),
	`valor` DOUBLE,
	`fecha` DATE,
	`moneda` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `pago_trabajador_FI_1` (`deuda_trabajador_id`),
	CONSTRAINT `pago_trabajador_FK_1`
		FOREIGN KEY (`deuda_trabajador_id`)
		REFERENCES `deuda_trabajador` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- deuda_cliente
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `deuda_cliente`;


CREATE TABLE `deuda_cliente`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`cliente_id` INTEGER  NOT NULL,
	`descripcion` VARCHAR(255),
	`valor` DOUBLE,
	`fecha` DATE,
	`pagada` TINYINT(1) default 0,
	`moneda` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `deuda_cliente_FI_1` (`cliente_id`),
	CONSTRAINT `deuda_cliente_FK_1`
		FOREIGN KEY (`cliente_id`)
		REFERENCES `cliente` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- pago_cliente
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `pago_cliente`;


CREATE TABLE `pago_cliente`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`deuda_cliente_id` INTEGER  NOT NULL,
	`descripcion` VARCHAR(255),
	`valor` DOUBLE,
	`fecha` DATE,
	`moneda` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `pago_cliente_FI_1` (`deuda_cliente_id`),
	CONSTRAINT `pago_cliente_FK_1`
		FOREIGN KEY (`deuda_cliente_id`)
		REFERENCES `deuda_cliente` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- escala_pago
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `escala_pago`;


CREATE TABLE `escala_pago`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`minimo` DOUBLE,
	`maximo` DOUBLE,
	`porciento_pago` TINYINT default 0,
	PRIMARY KEY (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- tipo_cliente
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `tipo_cliente`;


CREATE TABLE `tipo_cliente`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`nombre` CHAR(50),
	`descripcion` CHAR(200),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- cliente
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `cliente`;


CREATE TABLE `cliente`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`tipo_cliente_id` INTEGER  NOT NULL,
	`numero` INTEGER,
	`nombre` VARCHAR(60),
	`c_i` VARCHAR(11),
	`email` VARCHAR(50),
	`telefono_contacto1` VARCHAR(20),
	`telefono_contacto2` VARCHAR(20),
	`telefono_contacto3` VARCHAR(20),
	`equipo` VARCHAR(50),
	`modelo` VARCHAR(50),
	`imei` VARCHAR(20),
	`imei_etiqueta` VARCHAR(20),
	`valor` DOUBLE,
	`garantia_desde` DATE,
	`garantia_hasta` DATE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `cliente_FI_1` (`empresa_id`),
	CONSTRAINT `cliente_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
		ON DELETE CASCADE,
	INDEX `cliente_FI_2` (`tipo_cliente_id`),
	CONSTRAINT `cliente_FK_2`
		FOREIGN KEY (`tipo_cliente_id`)
		REFERENCES `tipo_cliente` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- cliente_cuenta
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `cliente_cuenta`;


CREATE TABLE `cliente_cuenta`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`cliente_id` INTEGER  NOT NULL,
	`servicio_id` INTEGER,
	`modelo_id` INTEGER,
	`descripcion` VARCHAR(255) default '',
	`valor` DOUBLE,
	`fecha` DATE,
	`telefono` VARCHAR(20)  NOT NULL,
	`entrada_salida` TINYINT(1) default 0,
	`concepto` TINYINT(1) default 1,
	`moneda` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `cliente_cuenta_FI_1` (`cliente_id`),
	CONSTRAINT `cliente_cuenta_FK_1`
		FOREIGN KEY (`cliente_id`)
		REFERENCES `cliente` (`id`)
		ON DELETE CASCADE,
	INDEX `cliente_cuenta_FI_2` (`servicio_id`),
	CONSTRAINT `cliente_cuenta_FK_2`
		FOREIGN KEY (`servicio_id`)
		REFERENCES `servicio` (`id`)
		ON DELETE CASCADE,
	INDEX `cliente_cuenta_FI_3` (`modelo_id`),
	CONSTRAINT `cliente_cuenta_FK_3`
		FOREIGN KEY (`modelo_id`)
		REFERENCES `modelo` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- tipo_modelo
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `tipo_modelo`;


CREATE TABLE `tipo_modelo`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`nombre` VARCHAR(20)  NOT NULL,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	UNIQUE KEY `tipo_modelo_U_1` (`nombre`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- marca
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `marca`;


CREATE TABLE `marca`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`nombre` VARCHAR(20),
	`orden_visual` INTEGER,
	`deleted_at` TINYINT(1) default 0,
	`tipo` TINYINT(1) default 0,
	`porciento_pago` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `marca_FI_1` (`empresa_id`),
	CONSTRAINT `marca_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- producto
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `producto`;


CREATE TABLE `producto`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`nombre` VARCHAR(20),
	`code_bar` VARCHAR(7),
	`estilo` VARCHAR(10),
	`orden_visual` INTEGER,
	`deleted_at` TINYINT(1) default 0,
	`porciento_pago` TINYINT(1) default 0,
	`es_accesorio` TINYINT(1) default 0,
	`tipo` TINYINT(1) default 0,
	`descuento_al_por_mayor` DOUBLE default 0,
	`otros_datos` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	KEY `producto_I_1`(`code_bar`),
	INDEX `producto_FI_1` (`empresa_id`),
	CONSTRAINT `producto_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- modelo
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `modelo`;


CREATE TABLE `modelo`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`marca_id` INTEGER,
	`producto_id` INTEGER,
	`tipo_modelo_id` INTEGER,
	`nombre` VARCHAR(200),
	`code_bar` VARCHAR(7),
	`punto_pedido` INTEGER,
	`precio` DOUBLE default 0,
	`precio_publico` DOUBLE default 0,
	`precio_publico_almacen` DOUBLE default 0,
	`moneda` TINYINT(1) default 1,
	`moneda_publico` TINYINT(1) default 1,
	`moneda_publico_almacen` TINYINT(1) default 1,
	`compatible_con` TEXT,
	`favorito` TINYINT(1) default 0,
	`en_falta` TINYINT(1) default 0,
	`lista_top` TINYINT(1) default 0,
	`deleted_at` TINYINT(1) default 0,
	`porciento_pago` TINYINT(1) default 0,
	`pago` DOUBLE default 0,
	`pago_mecanico` DOUBLE default 0,
	`pago_promotor` DOUBLE default 0,
	`formato_pago` TINYINT(1) default 0,
	`mano_obra` TINYINT(1) default 0,
	`pantalla` VARCHAR(40),
	`flash` VARCHAR(40),
	`camaraf` VARCHAR(40),
	`camarat` VARCHAR(40),
	`huella` VARCHAR(40),
	`facial` VARCHAR(40),
	`dialsim` VARCHAR(40),
	`micro` VARCHAR(40),
	`memoria` VARCHAR(40),
	`capacidad` VARCHAR(40),
	`tarjeta` VARCHAR(40),
	`tipo` TINYINT(1) default 0,
	`marca_custom` VARCHAR(150),
	`modelo` VARCHAR(150),
	`caracteristicas` VARCHAR(255),
	`imei` VARCHAR(150),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	KEY `modelo_I_1`(`code_bar`),
	INDEX `modelo_FI_1` (`marca_id`),
	CONSTRAINT `modelo_FK_1`
		FOREIGN KEY (`marca_id`)
		REFERENCES `marca` (`id`)
		ON DELETE CASCADE,
	INDEX `modelo_FI_2` (`producto_id`),
	CONSTRAINT `modelo_FK_2`
		FOREIGN KEY (`producto_id`)
		REFERENCES `producto` (`id`)
		ON DELETE CASCADE,
	INDEX `modelo_FI_3` (`tipo_modelo_id`),
	CONSTRAINT `modelo_FK_3`
		FOREIGN KEY (`tipo_modelo_id`)
		REFERENCES `tipo_modelo` (`id`)
		ON DELETE SET NULL
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- inventario_chequeado
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `inventario_chequeado`;


CREATE TABLE `inventario_chequeado`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`modelo_id` INTEGER,
	`chequeado` TINYINT(1) default 0,
	`destino` TINYINT(1) default 0,
	`fecha` DATE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `inventario_chequeado_FI_1` (`modelo_id`),
	CONSTRAINT `inventario_chequeado_FK_1`
		FOREIGN KEY (`modelo_id`)
		REFERENCES `modelo` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- foto_modelo
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `foto_modelo`;


CREATE TABLE `foto_modelo`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`nombre` VARCHAR(200),
	`equipo` VARCHAR(200),
	`modelo_id` INTEGER,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `foto_modelo_FI_1` (`modelo_id`),
	CONSTRAINT `foto_modelo_FK_1`
		FOREIGN KEY (`modelo_id`)
		REFERENCES `modelo` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- compatibilidad
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `compatibilidad`;


CREATE TABLE `compatibilidad`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`nodo_id` INTEGER,
	`modelo_id` INTEGER,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- modelo_temp
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `modelo_temp`;


CREATE TABLE `modelo_temp`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`marca_id` INTEGER,
	`producto_id` INTEGER,
	`nombre` VARCHAR(20),
	`precio` DOUBLE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `modelo_temp_FI_1` (`marca_id`),
	CONSTRAINT `modelo_temp_FK_1`
		FOREIGN KEY (`marca_id`)
		REFERENCES `marca` (`id`)
		ON DELETE CASCADE,
	INDEX `modelo_temp_FI_2` (`producto_id`),
	CONSTRAINT `modelo_temp_FK_2`
		FOREIGN KEY (`producto_id`)
		REFERENCES `producto` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- cartera_servicio_manual
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `cartera_servicio_manual`;


CREATE TABLE `cartera_servicio_manual`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER,
	`nombre` VARCHAR(100),
	`valor` DOUBLE,
	`garantia` TINYINT(2),
	`moneda` TINYINT(1) default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `cartera_servicio_manual_FI_1` (`empresa_id`),
	CONSTRAINT `cartera_servicio_manual_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- inventario
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `inventario`;


CREATE TABLE `inventario`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`especialista_id` INTEGER  NOT NULL,
	`concepto` TINYINT(1) default 1,
	`pendiente` TINYINT(1) default 1,
	`tipo` TINYINT(1) default 1,
	`es_merma` TINYINT(1) default 0,
	`baja_por_merma` TINYINT(1) default 0,
	`fecha` DATE,
	`fecha_baja_merma` DATE,
	`descripcion` VARCHAR(255),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `inventario_FI_1` (`especialista_id`),
	CONSTRAINT `inventario_FK_1`
		FOREIGN KEY (`especialista_id`)
		REFERENCES `especialista` (`id`)
		ON DELETE SET NULL
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- movimiento_inventario
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `movimiento_inventario`;


CREATE TABLE `movimiento_inventario`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`inventario_id` INTEGER,
	`modelo_id` INTEGER,
	`precio` DOUBLE,
	`costo` DOUBLE,
	`cantidad` INTEGER,
	`origen` INTEGER,
	`destino` INTEGER,
	`es_merma` TINYINT(1) default 0,
	`baja_por_merma` TINYINT(1) default 0,
	`fecha_baja_merma` DATE,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `movimiento_inventario_FI_1` (`inventario_id`),
	CONSTRAINT `movimiento_inventario_FK_1`
		FOREIGN KEY (`inventario_id`)
		REFERENCES `inventario` (`id`)
		ON DELETE CASCADE,
	INDEX `movimiento_inventario_FI_2` (`modelo_id`),
	CONSTRAINT `movimiento_inventario_FK_2`
		FOREIGN KEY (`modelo_id`)
		REFERENCES `modelo` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- compra
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `compra`;


CREATE TABLE `compra`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`concepto` TINYINT(1) default 1,
	`pendiente` TINYINT(1) default 1,
	`tipo` TINYINT(1) default 1,
	`fecha` DATE,
	`descripcion` VARCHAR(255),
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- modelo_compra
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `modelo_compra`;


CREATE TABLE `modelo_compra`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`compra_id` INTEGER,
	`modelo_id` INTEGER,
	`precio` DOUBLE,
	`costo` DOUBLE,
	`cantidad` INTEGER,
	`origen` TINYINT(1) default 4,
	`destino` TINYINT(1) default 1,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `modelo_compra_FI_1` (`compra_id`),
	CONSTRAINT `modelo_compra_FK_1`
		FOREIGN KEY (`compra_id`)
		REFERENCES `compra` (`id`)
		ON DELETE CASCADE,
	INDEX `modelo_compra_FI_2` (`modelo_id`),
	CONSTRAINT `modelo_compra_FK_2`
		FOREIGN KEY (`modelo_id`)
		REFERENCES `modelo` (`id`)
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- entrada
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `entrada`;


CREATE TABLE `entrada`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`cliente_id` INTEGER,
	`equipo_id` INTEGER,
	`empresa_id` INTEGER  NOT NULL,
	`fecha` DATE,
	`defectacion` TEXT,
	`despachado` TINYINT default 0,
	`devolucion` TINYINT default 0,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `entrada_FI_1` (`cliente_id`),
	CONSTRAINT `entrada_FK_1`
		FOREIGN KEY (`cliente_id`)
		REFERENCES `cliente` (`id`)
		ON DELETE SET NULL,
	INDEX `entrada_FI_2` (`equipo_id`),
	CONSTRAINT `entrada_FK_2`
		FOREIGN KEY (`equipo_id`)
		REFERENCES `equipo` (`id`)
		ON DELETE SET NULL,
	INDEX `entrada_FI_3` (`empresa_id`),
	CONSTRAINT `entrada_FK_3`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
		ON DELETE CASCADE
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- salida
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `salida`;


CREATE TABLE `salida`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`entrada_id` INTEGER,
	`fecha` DATE,
	`fecha_solucion` DATE,
	`motivo_no_solucion` TEXT,
	`precio` DOUBLE,
	`garantia` INTEGER,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `salida_FI_1` (`empresa_id`),
	CONSTRAINT `salida_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
		ON DELETE CASCADE,
	INDEX `salida_FI_2` (`entrada_id`),
	CONSTRAINT `salida_FK_2`
		FOREIGN KEY (`entrada_id`)
		REFERENCES `entrada` (`id`)
		ON DELETE SET NULL
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- devolucion
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `devolucion`;


CREATE TABLE `devolucion`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`entrada_id` INTEGER,
	`fecha` DATE,
	`defectacion` TEXT,
	PRIMARY KEY (`id`),
	INDEX `devolucion_FI_1` (`empresa_id`),
	CONSTRAINT `devolucion_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
		ON DELETE CASCADE,
	INDEX `devolucion_FI_2` (`entrada_id`),
	CONSTRAINT `devolucion_FK_2`
		FOREIGN KEY (`entrada_id`)
		REFERENCES `entrada` (`id`)
		ON DELETE SET NULL
)Type=InnoDB;

#-----------------------------------------------------------------------------
#-- salida_devolucion
#-----------------------------------------------------------------------------

DROP TABLE IF EXISTS `salida_devolucion`;


CREATE TABLE `salida_devolucion`
(
	`id` INTEGER  NOT NULL AUTO_INCREMENT,
	`empresa_id` INTEGER  NOT NULL,
	`devolucion_id` INTEGER,
	`fecha` DATE,
	`fecha_solucion` DATE,
	`motivo_no_solucion` TEXT,
	`precio` DOUBLE,
	`garantia` INTEGER,
	`created_at` DATETIME,
	`updated_at` DATETIME,
	PRIMARY KEY (`id`),
	INDEX `salida_devolucion_FI_1` (`empresa_id`),
	CONSTRAINT `salida_devolucion_FK_1`
		FOREIGN KEY (`empresa_id`)
		REFERENCES `empresa` (`id`)
		ON DELETE CASCADE,
	INDEX `salida_devolucion_FI_2` (`devolucion_id`),
	CONSTRAINT `salida_devolucion_FK_2`
		FOREIGN KEY (`devolucion_id`)
		REFERENCES `devolucion` (`id`)
		ON DELETE SET NULL
)Type=InnoDB;

# This restores the fkey checks, after having unset them earlier
SET FOREIGN_KEY_CHECKS = 1;
