-- Table structure for table `pagos_administrativos`
--

CREATE TABLE `pagos_administrativos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pago_administrativo` varchar(20) DEFAULT NULL COMMENT 'Pago',
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `tipo_compra` varchar(20) DEFAULT NULL,
  `sucursales_id` int(11) NOT NULL,
  `fecha_aplicacion` datetime NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `empleados_id` int(11) DEFAULT NULL,
  `proveedores_id` int(11) DEFAULT NULL,
  `bancos_id` int(11) NOT NULL,
  `referencia` varchar(20) DEFAULT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `forma_pago` varchar(50) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `proveedores_id` (`proveedores_id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `pago_administrativo` (`pago_administrativo`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `moneda` (`moneda`),
  KEY `forma_pago` (`forma_pago`),
  KEY `sucursales_id` (`sucursales_id`),
  KEY `empleados_id` (`empleados_id`),
  CONSTRAINT `pagos_administrativos_ibfk_1` FOREIGN KEY (`sucursales_id`) REFERENCES `sucursales` (`id`),
  CONSTRAINT `pagos_administrativos_ibfk_2` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `pagos_administrativos_ibfk_3` FOREIGN KEY (`empleados_id`) REFERENCES `empleados` (`id`),
  CONSTRAINT `pagos_administrativos_ibfk_4` FOREIGN KEY (`proveedores_id`) REFERENCES `proveedores` (`id`),
  CONSTRAINT `pagos_administrativos_ibfk_5` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_administrativos`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_administrativos_before_insert` BEFORE INSERT ON `pagos_administrativos`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT gf_pagos(NEW.sucursales_id) INTO vFolio;
      
      SELECT gs_pagos(NEW.sucursales_id) INTO vSerie;

      SET NEW.pago_administrativo = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

	IF (NEW.estatus = 'Pagado') THEN
    	SET NEW.estatus='Capturado';
    END IF;
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_administrativos_after_update` AFTER UPDATE ON `pagos_administrativos`
 FOR EACH ROW BEGIN 

 DECLARE proveedor_deposito VARCHAR(50);
 DECLARE total_pagos DECIMAL(11,2) ;
 SET total_pagos = 0 ;
 
         UPDATE compras_administrativos c INNER JOIN pagos_administrativos_detalle d ON
	c.id = d.compras_administrativos_id SET c.pagos_administrativos_id = NEW.id
		WHERE d.pagos_administrativos_id = NEW.id;
        
	IF (NEW.estatus LIKE 'Pagado') THEN 
        UPDATE compras_administrativos c INNER JOIN pagos_administrativos_detalle d ON
	c.id = d.compras_administrativos_id SET c.pagos_administrativos_id = NEW.id
		WHERE d.pagos_administrativos_id = NEW.id;
    END IF; 

  IF (NEW.estatus = 'Pagado' AND OLD.estatus <> 'Pagado') THEN
    
    SELECT proveedores.razon_social INTO proveedor_deposito 
    FROM proveedores
    WHERE proveedores.id = NEW.proveedores_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Pago Administrativo', proveedor_deposito, NEW.pago_administrativo, NEW.numero_autorizacion, 'Retiro', NULL, NEW.total);
    
  END IF;
  
  IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Pagado') THEN
    
    SELECT proveedores.razon_social INTO proveedor_deposito 
    FROM proveedores
    WHERE proveedores.id = NEW.proveedores_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Cancelacion Pago Administrativo', proveedor_deposito, NEW.pago_administrativo, NEW.numero_autorizacion, 'Deposito', NEW.total, NULL);
    
  END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_administrativos_detalle`
--

CREATE TABLE `pagos_administrativos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pagos_administrativos_id` int(11) DEFAULT NULL,
  `compras_administrativos_id` int(11) NOT NULL,
  `importe_pago` decimal(11,2) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `compras_administrativos_id` (`compras_administrativos_id`),
  KEY `pagos_administrativos_id` (`pagos_administrativos_id`) USING BTREE,
  CONSTRAINT `pagos_administrativos_detalle_ibfk_1` FOREIGN KEY (`pagos_administrativos_id`) REFERENCES `pagos_administrativos` (`id`),
  CONSTRAINT `pagos_administrativos_detalle_ibfk_2` FOREIGN KEY (`compras_administrativos_id`) REFERENCES `compras_administrativos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_administrativos_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_administrativos_detalle_insert` AFTER INSERT ON `pagos_administrativos_detalle`
 FOR EACH ROW BEGIN 
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;

  SELECT COALESCE(SUM(pagos_administrativos_detalle.importe_pago)) INTO total_pagos
   FROM pagos_administrativos_detalle
   LEFT JOIN compras_administrativos ON (compras_administrativos.id = pagos_administrativos_detalle.compras_administrativos_id)
   WHERE pagos_administrativos_detalle.compras_administrativos_id = NEW.compras_administrativos_id
        AND pagos_administrativos_detalle.id <> NEW.id
            AND compras_administrativos.estatus = 'Comprada' ;

  SELECT COALESCE(total_pagos, 0) + NEW.importe_pago INTO total_pagos ;

  UPDATE compras_administrativos 
      SET compras_administrativos.saldo = compras_administrativos.total - total_pagos
			WHERE compras_administrativos.id = NEW.compras_administrativos_id ;

UPDATE compras_administrativos
	SET compras_administrativos.pagos_administrativos_id = NEW.pagos_administrativos_id 
    WHERE compras_administrativos.id = NEW.compras_administrativos_id;
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_administrativos_detalle_update` AFTER UPDATE ON `pagos_administrativos_detalle`
 FOR EACH ROW BEGIN 
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;

  SELECT COALESCE(SUM(pagos_administrativos_detalle.importe_pago)) INTO total_pagos
   FROM pagos_administrativos_detalle
   LEFT JOIN compras_administrativos ON (compras_administrativos.id = pagos_administrativos_detalle.compras_administrativos_id)
   WHERE pagos_administrativos_detalle.compras_administrativos_id = NEW.compras_administrativos_id
        AND pagos_administrativos_detalle.id <> NEW.id
            AND compras_administrativos.estatus = 'Comprada' ;

  SELECT COALESCE(total_pagos, 0) + NEW.importe_pago INTO total_pagos ;

  UPDATE compras_administrativos 
      SET compras_administrativos.saldo = compras_administrativos.total - total_pagos
			WHERE compras_administrativos.id = COALESCE(NEW.compras_administrativos_id, OLD.compras_administrativos_id) ;

UPDATE compras_administrativos
	SET compras_administrativos.pagos_administrativos_id = NEW.pagos_administrativos_id 
    WHERE compras_administrativos.id = NEW.compras_administrativos_id;
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_administrativos_detalle_delete` AFTER DELETE ON `pagos_administrativos_detalle`
 FOR EACH ROW BEGIN 
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;

  SELECT COALESCE(SUM(pagos_administrativos_detalle.importe_pago)) INTO total_pagos
   FROM pagos_administrativos_detalle
   LEFT JOIN compras_administrativos ON (compras_administrativos.id = pagos_administrativos_detalle.compras_administrativos_id)
   WHERE pagos_administrativos_detalle.compras_administrativos_id = OLD.compras_administrativos_id
        AND pagos_administrativos_detalle.id <> OLD.id
            AND compras_administrativos.estatus = 'Comprada' ;

 SELECT COALESCE(total_pagos, 0) INTO total_pagos ;

 UPDATE compras_administrativos 
     SET compras_administrativos.saldo = compras_administrativos.total - total_pagos, compras_administrativos.pagos_administrativos_id = NULL
     WHERE compras_administrativos.id = OLD.compras_administrativos_id ;

END */;;
DELIMITER ;

--
-- Table structure for table `pagos_combustibles`
--

CREATE TABLE `pagos_combustibles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pago_combustible` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_aplicacion` date NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `gasolineras_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) NOT NULL,
  `forma_pago` varchar(50) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `total` decimal(11,2) DEFAULT NULL,
  `subtotal` decimal(11,2) DEFAULT NULL,
  `iva` decimal(11,2) DEFAULT NULL,
  `ieps` decimal(11,2) DEFAULT NULL COMMENT 'IEPS',
  PRIMARY KEY (`id`),
  KEY `gasolineras_id` (`gasolineras_id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  CONSTRAINT `pagos_combustibles_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `pagos_combustibles_ibfk_2` FOREIGN KEY (`gasolineras_id`) REFERENCES `gasolineras` (`id`),
  CONSTRAINT `pagos_combustibles_ibfk_3` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_combustibles`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_combustibles_before_insert` BEFORE INSERT ON `pagos_combustibles`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_proveedores') INTO vFolio;
      
      SELECT getserie('pagos_proveedores') INTO vSerie;

      SET NEW.pago_combustible = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_combustibles_after_insert` AFTER INSERT ON `pagos_combustibles`
 FOR EACH ROW BEGIN

	INSERT INTO pagos_combustibles_detalle (pagos_combustibles_id, remisiones_combustibles_detalle_id, litros, importe_pago) (SELECT NEW.id, r.id, r.litros, r.importe FROM remisiones_combustibles_detalle r WHERE r.gasolineras_id=NEW.gasolineras_id AND r.estatus='Autorizado');
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_combustibles_after_update` AFTER UPDATE ON `pagos_combustibles`
 FOR EACH ROW BEGIN 
   
   UPDATE remisiones_combustibles_detalle r INNER JOIN pagos_combustibles_detalle d ON
	r.id = d.remisiones_combustibles_detalle_id SET r.pagos_combustibles_id = NEW.id
		WHERE d.pagos_combustibles_id = NEW.id;  
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_combustibles_detalle`
--

CREATE TABLE `pagos_combustibles_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pagos_combustibles_id` int(11) DEFAULT NULL,
  `remisiones_combustibles_detalle_id` int(11) NOT NULL,
  `litros` decimal(11,2) NOT NULL,
  `importe_pago` decimal(11,2) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `pagos_combustibles_id` (`pagos_combustibles_id`) USING BTREE,
  KEY `remisiones_combustibles_detalle_id` (`remisiones_combustibles_detalle_id`) USING BTREE,
  CONSTRAINT `pagos_combustibles_detalle_ibfk_1` FOREIGN KEY (`pagos_combustibles_id`) REFERENCES `pagos_combustibles` (`id`),
  CONSTRAINT `pagos_combustibles_detalle_ibfk_2` FOREIGN KEY (`remisiones_combustibles_detalle_id`) REFERENCES `remisiones_combustibles_detalle` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_combustibles_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_combustibles_detalle_update` AFTER UPDATE ON `pagos_combustibles_detalle`
 FOR EACH ROW BEGIN 
            
   UPDATE remisiones_combustibles_detalle
	SET remisiones_combustibles_detalle.pagos_combustibles_id = NULL
    WHERE remisiones_combustibles_detalle.id = OLD.remisiones_combustibles_detalle_id;
  
     UPDATE remisiones_combustibles_detalle
	SET remisiones_combustibles_detalle.pagos_combustibles_id = NEW.pagos_combustibles_id
    WHERE remisiones_combustibles_detalle.id = NEW.remisiones_combustibles_detalle_id;     

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_combustibles_detalle_delete` AFTER DELETE ON `pagos_combustibles_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_combustibles_detalle r 
	SET r.pagos_combustibles_id=NULL
    WHERE r.id=OLD.remisiones_combustibles_detalle_id;
    
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_combustibles_paqueteria`
--

CREATE TABLE `pagos_combustibles_paqueteria` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pago_combustible_paqueteria` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_aplicacion` date NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `gasolineras_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) NOT NULL,
  `forma_pago` varchar(50) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `total` decimal(11,2) DEFAULT NULL,
  `subtotal` decimal(11,2) DEFAULT NULL,
  `iva` decimal(11,2) DEFAULT NULL,
  `ieps` decimal(11,2) DEFAULT NULL COMMENT 'IEPS',
  PRIMARY KEY (`id`),
  KEY `gasolineras_id` (`gasolineras_id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  CONSTRAINT `pagos_combustibles_paqueteria_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `pagos_combustibles_paqueteria_ibfk_2` FOREIGN KEY (`gasolineras_id`) REFERENCES `gasolineras` (`id`),
  CONSTRAINT `pagos_combustibles_paqueteria_ibfk_3` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_combustibles_paqueteria`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_combustibles_paqueteria_before_insert` BEFORE INSERT ON `pagos_combustibles_paqueteria`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_proveedores') INTO vFolio;
      
      SELECT getserie('pagos_proveedores') INTO vSerie;

      SET NEW.pago_combustible_paqueteria = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_combustibles_paqueteria_after_insert` AFTER INSERT ON `pagos_combustibles_paqueteria`
 FOR EACH ROW BEGIN

	INSERT INTO pagos_combustibles_paqueteria_detalle (pagos_combustibles_paqueteria_id, viajes_informes_combustibles_detalle_id, litros, importe_pago) (SELECT NEW.id, r.id, r.litros, r.importe FROM viajes_informes_combustibles_detalle r WHERE r.gasolineras_id=NEW.gasolineras_id AND r.estatus='Autorizado');
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_combustibles_paqueteria_after_update` AFTER UPDATE ON `pagos_combustibles_paqueteria`
 FOR EACH ROW BEGIN 
   
   UPDATE viajes_informes_combustibles_detalle r INNER JOIN pagos_combustibles_paqueteria_detalle d ON
	r.id = d.viajes_informes_combustibles_detalle_id SET r.pagos_combustibles_paqueteria_id = NEW.id
		WHERE d.pagos_combustibles_paqueteria_id = NEW.id;  
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_combustibles_paqueteria_detalle`
--

CREATE TABLE `pagos_combustibles_paqueteria_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pagos_combustibles_paqueteria_id` int(11) DEFAULT NULL,
  `viajes_informes_combustibles_detalle_id` int(11) NOT NULL,
  `litros` decimal(11,2) NOT NULL,
  `importe_pago` decimal(11,2) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `pagos_combustibles_paqueteria_id` (`pagos_combustibles_paqueteria_id`) USING BTREE,
  KEY `viajes_informes_combustibles_detalle_id` (`viajes_informes_combustibles_detalle_id`) USING BTREE,
  CONSTRAINT `pagos_combustibles_paqueteria_detalle_ibfk_1` FOREIGN KEY (`pagos_combustibles_paqueteria_id`) REFERENCES `pagos_combustibles_paqueteria` (`id`),
  CONSTRAINT `pagos_combustibles_paqueteria_detalle_ibfk_2` FOREIGN KEY (`viajes_informes_combustibles_detalle_id`) REFERENCES `viajes_informes_combustibles_detalle` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_combustibles_paqueteria_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_combustibles_paqueteria_detalle_update` AFTER UPDATE ON `pagos_combustibles_paqueteria_detalle`
 FOR EACH ROW BEGIN 
            
   UPDATE viajes_informes_combustibles_detalle
	SET viajes_informes_combustibles_detalle.pagos_combustibles_paqueteria_id = NULL
    WHERE viajes_informes_combustibles_detalle.id = OLD.viajes_informes_combustibles_detalle_id;
  
     UPDATE viajes_informes_combustibles_detalle
	SET viajes_informes_combustibles_detalle.pagos_combustibles_paqueteria_id = NEW.pagos_combustibles_paqueteria_id
    WHERE viajes_informes_combustibles_detalle.id = NEW.viajes_informes_combustibles_detalle_id;     

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_combustibles_paqueteria_detalle_delete` AFTER DELETE ON `pagos_combustibles_paqueteria_detalle`
 FOR EACH ROW BEGIN 

UPDATE viajes_informes_combustibles_detalle r 
	SET r.pagos_combustibles_paqueteria_id=NULL
    WHERE r.id=OLD.viajes_informes_combustibles_detalle_id;
    
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_maniobras_extras_permisionarios`
--

CREATE TABLE `pagos_maniobras_extras_permisionarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pago_maniobra_extra_permisionario` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_aplicacion` date NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `permisionarios_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) NOT NULL,
  `forma_pago` varchar(50) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `porc_iva` int(11) DEFAULT NULL,
  `subtotal` decimal(11,2) DEFAULT NULL,
  `iva` decimal(11,2) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  `porc_retencion` int(11) DEFAULT NULL,
  `retencion` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `permisionarios_id` (`permisionarios_id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  CONSTRAINT `pagos_maniobras_extras_permisionarios_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `pagos_maniobras_extras_permisionarios_ibfk_2` FOREIGN KEY (`permisionarios_id`) REFERENCES `permisionarios` (`id`),
  CONSTRAINT `pagos_maniobras_extras_permisionarios_ibfk_3` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_maniobras_extras_permisionarios`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_maniobras_extras_permisionarios_before_insert` BEFORE INSERT ON `pagos_maniobras_extras_permisionarios`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_proveedores') INTO vFolio;
      
      SELECT getserie('pagos_proveedores') INTO vSerie;

      SET NEW.pago_maniobra_extra_permisionario = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_maniobras_extras_permisionarios_after_insert` AFTER INSERT ON `pagos_maniobras_extras_permisionarios`
 FOR EACH ROW BEGIN

	INSERT INTO pagos_maniobras_extras_permisionarios_detalle (pagos_maniobras_extras_permisionarios_id, remisiones_permisionarios_maniobras_extras_detalle_id,  importe_pago) (SELECT NEW.id, r.id, r.importe FROM remisiones_permisionarios_maniobras_extras_detalle r WHERE r.permisionarios_maniobras_id=NEW.permisionarios_id AND r.estatus='Autorizado');
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_maniobras_extras_permisionarios_after_update` AFTER UPDATE ON `pagos_maniobras_extras_permisionarios`
 FOR EACH ROW BEGIN 
   
   UPDATE remisiones_permisionarios_maniobras_extras_detalle r INNER JOIN pagos_maniobras_extras_permisionarios_detalle d ON
	r.id = d.remisiones_permisionarios_maniobras_extras_detalle_id SET r.pagos_maniobras_extras_permisionarios_id = NEW.id
		WHERE d.pagos_maniobras_extras_permisionarios_id = NEW.id;  
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_maniobras_extras_permisionarios_detalle`
--

CREATE TABLE `pagos_maniobras_extras_permisionarios_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pagos_maniobras_extras_permisionarios_id` int(11) DEFAULT NULL,
  `remisiones_permisionarios_maniobras_extras_detalle_id` int(11) NOT NULL,
  `importe_pago` decimal(11,2) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `pagos_maniobras_extras_permisionarios_id` (`pagos_maniobras_extras_permisionarios_id`) USING BTREE,
  KEY `remisiones_permisionarios_maniobras_extras_detalle_id` (`remisiones_permisionarios_maniobras_extras_detalle_id`) USING BTREE,
  CONSTRAINT `pagos_maniobras_extras_permisionarios_detalle_ibfk_1` FOREIGN KEY (`pagos_maniobras_extras_permisionarios_id`) REFERENCES `pagos_maniobras_extras_permisionarios` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_maniobras_extras_permisionarios_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_maniobras_extras_permisionarios_detalle_update` AFTER UPDATE ON `pagos_maniobras_extras_permisionarios_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_permisionarios_maniobras_extras_detalle
	SET remisiones_permisionarios_maniobras_extras_detalle.pagos_maniobras_extras_permisionarios_id = NEW.pagos_maniobras_extras_permisionarios_id 
    WHERE remisiones_permisionarios_maniobras_extras_detalle.id = NEW.remisiones_permisionarios_maniobras_extras_detalle_id;
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_maniobras_extras_permisionarios_detalle_delete` AFTER DELETE ON `pagos_maniobras_extras_permisionarios_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_permisionarios_maniobras_extras_detalle
	SET remisiones_permisionarios_maniobras_extras_detalle.pagos_maniobras_extras_permisionarios_id = NULL
    WHERE remisiones_permisionarios_maniobras_extras_detalle.id = OLD.remisiones_permisionarios_maniobras_extras_detalle_id;
    
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_operadores`
--

CREATE TABLE `pagos_operadores` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pago_operador` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_aplicacion` date NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_inicio` date NOT NULL,
  `fecha_fin` date NOT NULL,
  `operadores_id` int(11) NOT NULL,
  `forma_pago` varchar(50) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `total` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `operadores_id` (`operadores_id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  CONSTRAINT `pagos_operadores_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `pagos_operadores_ibfk_2` FOREIGN KEY (`operadores_id`) REFERENCES `operadores` (`id`),
  CONSTRAINT `pagos_operadores_ibfk_3` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_operadores`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_operadores_before_insert` BEFORE INSERT ON `pagos_operadores`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_proveedores') INTO vFolio;
      
      SELECT getserie('pagos_proveedores') INTO vSerie;

      SET NEW.pago_operador = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_operadores_after_insert` AFTER INSERT ON `pagos_operadores`
 FOR EACH ROW BEGIN

	INSERT INTO pagos_operadores_detalle (pagos_operadores_id, remisiones_id) (SELECT NEW.id, r.id FROM remisiones r WHERE r.operadores_id=NEW.operadores_id AND r.lq_estatus='Autorizada');
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_operadores_after_update` AFTER UPDATE ON `pagos_operadores`
 FOR EACH ROW BEGIN  
        UPDATE remisiones r INNER JOIN pagos_operadores_detalle d ON
	r.id = d.remisiones_id SET r.pagos_operadores_id = NEW.id
		WHERE d.pagos_operadores_id = NEW.id; 
        
	IF (NEW.estatus='Pagado' AND OLD.estatus='Capturado') THEN
    	UPDATE remisiones r INNER JOIN pagos_operadores_detalle d ON
	r.id = d.remisiones_id SET r.lq_estatus = 'Pagada'
		WHERE d.pagos_operadores_id = NEW.id; 
    END IF;
    
    IF (NEW.estatus='Cancelado' AND OLD.estatus='Pagado') THEN
    	UPDATE remisiones r INNER JOIN pagos_operadores_detalle d ON
	r.id = d.remisiones_id SET r.lq_estatus = 'Autorizada'
		WHERE d.pagos_operadores_id = NEW.id; 
    END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_operadores_detalle`
--

CREATE TABLE `pagos_operadores_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pagos_operadores_id` int(11) DEFAULT NULL,
  `remisiones_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `pagos_operadores_id` (`pagos_operadores_id`) USING BTREE,
  KEY `remisiones_id` (`remisiones_id`) USING BTREE,
  CONSTRAINT `pagos_operadores_detalle_ibfk_1` FOREIGN KEY (`pagos_operadores_id`) REFERENCES `pagos_operadores` (`id`),
  CONSTRAINT `pagos_operadores_detalle_ibfk_2` FOREIGN KEY (`remisiones_id`) REFERENCES `remisiones` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_operadores_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_operadores_detalle_update` AFTER UPDATE ON `pagos_operadores_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones r 
	SET r.pagos_operadores_id=NULL
    WHERE r.id=OLD.remisiones_id;
    
UPDATE remisiones r 
	SET r.pagos_operadores_id=NEW.pagos_operadores_id
    WHERE r.id=NEW.remisiones_id;
        
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_operadores_detalle_delete` AFTER DELETE ON `pagos_operadores_detalle`
 FOR EACH ROW BEGIN

UPDATE remisiones r 
	SET r.pagos_operadores_id=NULL
    WHERE r.id=OLD.remisiones_id; 
        
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_ordenes_mantenimientos`
--

CREATE TABLE `pagos_ordenes_mantenimientos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pago_orden_mantenimiento` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_aplicacion` date NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `proveedores_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) NOT NULL,
  `forma_pago` varchar(50) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `subtotal` decimal(11,2) DEFAULT NULL,
  `iva` decimal(11,2) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `proveedores_id` (`proveedores_id`) USING BTREE,
  CONSTRAINT `pagos_ordenes_mantenimientos_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `pagos_ordenes_mantenimientos_ibfk_2` FOREIGN KEY (`proveedores_id`) REFERENCES `proveedores` (`id`),
  CONSTRAINT `pagos_ordenes_mantenimientos_ibfk_3` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_ordenes_mantenimientos`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_ordenes_mantenimientos_before_insert` BEFORE INSERT ON `pagos_ordenes_mantenimientos`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_proveedores') INTO vFolio;
      
      SELECT getserie('pagos_proveedores') INTO vSerie;

      SET NEW.pago_orden_mantenimiento = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_ordenes_mantenimientos_after_insert` AFTER INSERT ON `pagos_ordenes_mantenimientos`
 FOR EACH ROW BEGIN

	INSERT INTO pagos_ordenes_mantenimientos_detalle (pagos_ordenes_mantenimientos_id, ordenes_mantenimientos_id, importe_pago) (SELECT NEW.id, r.id, r.total FROM ordenes_mantenimientos r WHERE r.proveedores_id=NEW.proveedores_id AND r.estatus='Terminado');
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_ordenes_mantenimientos_after_update` AFTER UPDATE ON `pagos_ordenes_mantenimientos`
 FOR EACH ROW BEGIN 
   
   UPDATE ordenes_mantenimientos r INNER JOIN pagos_ordenes_mantenimientos_detalle d ON
	r.id = d.ordenes_mantenimientos_id SET r.pagos_ordenes_mantenimientos_id = NEW.id
		WHERE d.pagos_ordenes_mantenimientos_id = NEW.id;  
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_ordenes_mantenimientos_detalle`
--

CREATE TABLE `pagos_ordenes_mantenimientos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pagos_ordenes_mantenimientos_id` int(11) DEFAULT NULL,
  `ordenes_mantenimientos_id` int(11) NOT NULL,
  `importe_pago` decimal(11,2) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `pagos_ordenes_mantenimientos_id` (`pagos_ordenes_mantenimientos_id`) USING BTREE,
  KEY `ordenes_mantenimientos_id` (`ordenes_mantenimientos_id`) USING BTREE,
  CONSTRAINT `pagos_ordenes_mantenimientos_detalle_ibfk_1` FOREIGN KEY (`pagos_ordenes_mantenimientos_id`) REFERENCES `pagos_ordenes_mantenimientos` (`id`),
  CONSTRAINT `pagos_ordenes_mantenimientos_detalle_ibfk_2` FOREIGN KEY (`ordenes_mantenimientos_id`) REFERENCES `ordenes_mantenimientos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_ordenes_mantenimientos_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_ordenes_mantenimientos_detalle_after_insert` AFTER INSERT ON `pagos_ordenes_mantenimientos_detalle`
 FOR EACH ROW BEGIN

UPDATE ordenes_mantenimientos
	SET ordenes_mantenimientos.pagos_ordenes_mantenimientos_id = NEW.pagos_ordenes_mantenimientos_id 
    WHERE ordenes_mantenimientos.id = NEW.ordenes_mantenimientos_id;
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_ordenes_mantenimientos_detalle_update` AFTER UPDATE ON `pagos_ordenes_mantenimientos_detalle`
 FOR EACH ROW BEGIN 

   UPDATE ordenes_mantenimientos
	SET ordenes_mantenimientos.pagos_ordenes_mantenimientos_id = NULL
    WHERE ordenes_mantenimientos.id = OLD.ordenes_mantenimientos_id;
  
     UPDATE ordenes_mantenimientos
	SET ordenes_mantenimientos.pagos_ordenes_mantenimientos_id = NEW.pagos_ordenes_mantenimientos_id
    WHERE ordenes_mantenimientos.id = NEW.ordenes_mantenimientos_id;     
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_ordenes_mantenimientos_detalle_delete` AFTER DELETE ON `pagos_ordenes_mantenimientos_detalle`
 FOR EACH ROW BEGIN 
UPDATE ordenes_mantenimientos r 
	SET r.pagos_ordenes_mantenimientos_id=NULL
    WHERE r.id=OLD.ordenes_mantenimientos_id;
    
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_permisionarios`
--

CREATE TABLE `pagos_permisionarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pago_permisionario` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_aplicacion` date NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `permisionarios_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) NOT NULL,
  `forma_pago` varchar(50) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `porc_iva` int(11) DEFAULT NULL,
  `porc_retencion` int(11) DEFAULT NULL,
  `subtotal` decimal(11,2) DEFAULT NULL,
  `iva` decimal(11,2) DEFAULT NULL,
  `retencion` decimal(11,2) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `permisionarios_id` (`permisionarios_id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  CONSTRAINT `pagos_permisionarios_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `pagos_permisionarios_ibfk_2` FOREIGN KEY (`permisionarios_id`) REFERENCES `permisionarios` (`id`),
  CONSTRAINT `pagos_permisionarios_ibfk_3` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_permisionarios`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_permisionarios_before_insert` BEFORE INSERT ON `pagos_permisionarios`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_proveedores') INTO vFolio;
      
      SELECT getserie('pagos_proveedores') INTO vSerie;

      SET NEW.pago_permisionario = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_permisionarios_after_insert` AFTER INSERT ON `pagos_permisionarios`
 FOR EACH ROW BEGIN

	INSERT INTO pagos_permisionarios_detalle (pagos_permisionarios_id, remisiones_permisionarios_id, total, total_anticipos) (SELECT NEW.id, r.id, r.lq_precio_compra, r.total_anticipos FROM remisiones_permisionarios r WHERE r.permisionarios_id=NEW.permisionarios_id AND r.lq_estatus='Autorizada');
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_permisionarios_after_update` AFTER UPDATE ON `pagos_permisionarios`
 FOR EACH ROW BEGIN 
   
   UPDATE remisiones_permisionarios r INNER JOIN pagos_permisionarios_detalle d ON
	r.id = d.remisiones_permisionarios_id SET r.pagos_permisionarios_id = NEW.id
		WHERE d.pagos_permisionarios_id = NEW.id;
        
   IF (NEW.estatus = 'Pagado' AND OLD.estatus = 'Capturado') THEN 
   		UPDATE remisiones_permisionarios r INNER JOIN pagos_permisionarios_detalle d ON
	r.id = d.remisiones_permisionarios_id SET r.lq_estatus = 'Pagada'
		WHERE d.pagos_permisionarios_id = NEW.id;
   END IF;
   
   IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Pagado') THEN 
   		UPDATE remisiones_permisionarios r INNER JOIN pagos_permisionarios_detalle d ON
	r.id = d.remisiones_permisionarios_id SET r.lq_estatus = 'Autorizada'
		WHERE d.pagos_permisionarios_id = NEW.id;
   END IF;
   
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_permisionarios_detalle`
--

CREATE TABLE `pagos_permisionarios_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pagos_permisionarios_id` int(11) DEFAULT NULL,
  `remisiones_permisionarios_id` int(11) NOT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  `total_anticipos` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `pagos_permisionarios_id` (`pagos_permisionarios_id`) USING BTREE,
  KEY `remisiones_permisionarios_id` (`remisiones_permisionarios_id`) USING BTREE,
  CONSTRAINT `pagos_permisionarios_detalle_ibfk_1` FOREIGN KEY (`pagos_permisionarios_id`) REFERENCES `pagos_permisionarios` (`id`),
  CONSTRAINT `pagos_permisionarios_detalle_ibfk_2` FOREIGN KEY (`remisiones_permisionarios_id`) REFERENCES `remisiones_permisionarios` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_permisionarios_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_permisionarios_detalle_update` AFTER UPDATE ON `pagos_permisionarios_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_permisionarios r 
	SET r.pagos_permisionarios_id=NULL
    WHERE r.id=OLD.remisiones_permisionarios_id;
    
UPDATE remisiones_permisionarios r 
	SET r.pagos_permisionarios_id=NEW.pagos_permisionarios_id
    WHERE r.id=NEW.remisiones_permisionarios_id;
      
      
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_permisionarios_detalle_delete` AFTER DELETE ON `pagos_permisionarios_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_permisionarios r 
	SET r.pagos_permisionarios_id=NULL
    WHERE r.id=OLD.remisiones_permisionarios_id; 
     
        
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_proveedores`
--

CREATE TABLE `pagos_proveedores` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pago_proveedor` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_aplicacion` datetime NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `proveedores_id` int(11) NOT NULL,
  `forma_pago` varchar(50) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `referencia` varchar(20) DEFAULT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `total` decimal(11,2) DEFAULT NULL,
  `porc_iva` int(11) DEFAULT NULL,
  `porc_retencion` int(11) DEFAULT NULL,
  `subtotal` decimal(11,2) DEFAULT NULL,
  `iva` decimal(11,2) DEFAULT NULL,
  `retencion` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `proveedores_id` (`proveedores_id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `pago_proveedor` (`pago_proveedor`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `moneda` (`moneda`),
  KEY `forma_pago` (`forma_pago`),
  CONSTRAINT `pagos_proveedores_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `pagos_proveedores_ibfk_2` FOREIGN KEY (`proveedores_id`) REFERENCES `proveedores` (`id`),
  CONSTRAINT `pagos_proveedores_ibfk_3` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_proveedores`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_proveedores_before_insert` BEFORE INSERT ON `pagos_proveedores`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_refacciones') INTO vFolio;
      
      SELECT getserie('pagos_refacciones') INTO vSerie;

      SET NEW.pago_proveedor = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

	IF (NEW.estatus = 'Pagado') THEN
    	SET NEW.estatus='Capturado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_proveedores_after_update` AFTER UPDATE ON `pagos_proveedores`
 FOR EACH ROW BEGIN 

 DECLARE proveedor_deposito VARCHAR(50);
  
	IF (NEW.estatus LIKE 'Pagado') THEN 
        UPDATE compras c INNER JOIN pagos_proveedores_detalle d ON
	c.id = d.compras_id SET c.pagos_proveedores_id = NEW.id
		WHERE d.pagos_proveedores_id = NEW.id;
    END IF; 

  IF (NEW.estatus = 'Pagado' AND OLD.estatus <> 'Pagado') THEN
    
    SELECT proveedores.razon_social INTO proveedor_deposito 
    FROM proveedores
    WHERE proveedores.id = NEW.proveedores_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Pago Proveedor', proveedor_deposito, NEW.pago_proveedor, NEW.numero_autorizacion, 'Retiro', NULL, NEW.total);
    
  END IF;
  
  IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Pagado') THEN
    
    SELECT proveedores.razon_social INTO proveedor_deposito 
    FROM proveedores
    WHERE proveedores.id = NEW.proveedores_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Cancelacion Pago Proveedor', proveedor_deposito, NEW.pago_proveedor, NEW.numero_autorizacion, 'Deposito', NEW.total, NULL);
    
  END IF;
  
END */;;
DELIMITER ;

--
-- Table structure for table `pagos_proveedores_detalle`
--

CREATE TABLE `pagos_proveedores_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pagos_proveedores_id` int(11) DEFAULT NULL,
  `compras_id` int(11) NOT NULL,
  `importe_pago` decimal(11,2) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `compras_id` (`compras_id`),
  KEY `pagos_proveedores_id` (`pagos_proveedores_id`) USING BTREE,
  CONSTRAINT `pagos_proveedores_detalle_ibfk_1` FOREIGN KEY (`pagos_proveedores_id`) REFERENCES `pagos_proveedores` (`id`),
  CONSTRAINT `pagos_proveedores_detalle_ibfk_2` FOREIGN KEY (`compras_id`) REFERENCES `compras` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `pagos_proveedores_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_proveedores_detalle_after_insert` AFTER INSERT ON `pagos_proveedores_detalle`
 FOR EACH ROW BEGIN
  DECLARE total_pagos DECIMAL(11,2) ;
  SET total_pagos = 0 ;
  SELECT COALESCE(SUM(pagos_proveedores_detalle.importe_pago)) INTO total_pagos
   FROM pagos_proveedores_detalle
   LEFT JOIN compras ON (compras.id = pagos_proveedores_detalle.compras_id)
   WHERE pagos_proveedores_detalle.compras_id = NEW.compras_id
   			AND pagos_proveedores_detalle.id <> NEW.id
            AND compras.estatus = 'Comprada' ;

SELECT COALESCE(total_pagos, 0) + NEW.importe_pago INTO total_pagos ;

 UPDATE compras 
     SET compras.saldo = compras.total - total_pagos
     WHERE compras.id = NEW.compras_id ;

UPDATE compras 
	SET compras.pagos_proveedores_id = NEW.pagos_proveedores_id
    WHERE compras.id = NEW.compras_id;
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_proveedores_detalle_update` AFTER UPDATE ON `pagos_proveedores_detalle`
 FOR EACH ROW BEGIN 
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;

  SELECT COALESCE(SUM(pagos_proveedores_detalle.importe_pago)) INTO total_pagos
   FROM pagos_proveedores_detalle
   LEFT JOIN compras ON (compras.id = pagos_proveedores_detalle.compras_id)
   WHERE pagos_proveedores_detalle.compras_id = NEW.compras_id
        AND pagos_proveedores_detalle.id <> NEW.id
            AND compras.estatus = 'Comprada' ;

  SELECT COALESCE(total_pagos, 0) + NEW.importe_pago INTO total_pagos ;

  UPDATE compras 
      SET compras.saldo = compras.total - total_pagos
			WHERE compras.id = COALESCE(NEW.compras_id, OLD.compras_id) ;

UPDATE compras 
	SET compras.pagos_proveedores_id = NEW.pagos_proveedores_id
    WHERE compras.id = NEW.compras_id;
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pagos_proveedores_detalle_delete` AFTER DELETE ON `pagos_proveedores_detalle`
 FOR EACH ROW BEGIN 
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;

  SELECT COALESCE(SUM(pagos_proveedores_detalle.importe_pago)) INTO total_pagos
   FROM pagos_proveedores_detalle
   LEFT JOIN compras ON (compras.id = pagos_proveedores_detalle.compras_id)
   WHERE pagos_proveedores_detalle.compras_id = OLD.compras_id
        AND pagos_proveedores_detalle.id <> OLD.id
            AND compras.estatus = 'Comprada' ;

 SELECT COALESCE(total_pagos, 0) INTO total_pagos ;

 UPDATE compras 
     SET compras.saldo = compras.total - total_pagos, compras.pagos_proveedores_id=NULL
     WHERE compras.id = OLD.compras_id ;

END */;;
DELIMITER ;

--
-- Table structure for table `paises`
--

CREATE TABLE `paises` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pais` varchar(50) NOT NULL,
  `abreviatura` varchar(10) NOT NULL,
  `codigo_sat` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `pais` (`pais`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `paises`
--

INSERT INTO `paises` VALUES (1,'Mexico','MX','MEX'),(2,'Estados Unidos','USA','USA');

--
-- Table structure for table `parametros`
--

CREATE TABLE `parametros` (
  `parametro` varchar(100) NOT NULL,
  `valor` varchar(200) NOT NULL,
  UNIQUE KEY `parametro` (`parametro`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `parametros`
--

INSERT INTO `parametros` VALUES ('correo_fuente','ventas@ag-solucion.com'),('correo_mantenimientos','soporte@ag-solucion.com'),('correo_vigencias','rquirarte@gmail.com,alberto@ag-solucion.com,soporte@ag-solucion.com,gabriel@ag-solucion'),('dias_diferencia_planeacion','7'),('encabezado_ciudad_cp','ZAPOPAN, JALISCO, MEXICO'),('encabezado_codigo_postal','45138'),('encabezado_correo_electronico','ventas@ag-solucion.com'),('encabezado_domicilio_colonia','AVENIDA DE LAS PALMERAS 905-A COL.LA TUZANIA'),('encabezado_lugar_expedicion','45138'),('encabezado_pagina_web','www.ag-solucion.com'),('encabezado_razon_social','AG SOLUCION'),('encabezado_rfc','PAIS900502IC1'),('encabezado_slogan','601 - REGIMEN GENERAL DE LEY PERSONAS MORALES'),('encabezado_telefono','Tel. 33 2087 8718'),('id_almacen_autoconsumo','3'),('id_almacen_vales_salidas','1'),('id_banco_pagos','1'),('id_gasolinera_autoconsumo','1'),('id_producto_autoconsumo','3'),('id_producto_autoconsumo_urea','4'),('kms_diferencia_planeacion','500'),('num_permisosct',''),('permsct','TPAF01'),('tiene_permisionarios','Si');

--
-- Table structure for table `permisionarios`
--

CREATE TABLE `permisionarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nombre_comercial` varchar(50) DEFAULT NULL,
  `razon_social_permisionario` varchar(50) NOT NULL,
  `rfc` varchar(20) NOT NULL,
  `calle` varchar(100) NOT NULL,
  `numero` varchar(10) NOT NULL,
  `interior` varchar(10) DEFAULT NULL,
  `colonia` varchar(50) NOT NULL,
  `ciudad` varchar(50) NOT NULL,
  `estados_id` int(11) NOT NULL,
  `codigo_postal` varchar(5) NOT NULL,
  `paises_id` int(11) NOT NULL,
  `contacto` varchar(100) DEFAULT NULL,
  `telefono` varchar(20) DEFAULT NULL,
  `id_nextel` varchar(20) DEFAULT NULL,
  `telefono_3` varchar(20) DEFAULT NULL,
  `telefono_4` varchar(20) DEFAULT NULL,
  `telefono_5` varchar(20) DEFAULT NULL,
  `telefono_6` varchar(20) DEFAULT NULL,
  `viaja_a` varchar(200) DEFAULT NULL,
  `equipo_cuenta` varchar(200) DEFAULT NULL,
  `cuenta_contable` varchar(50) DEFAULT NULL,
  `banco` varchar(50) DEFAULT NULL,
  `clabe_interbancaria` varchar(50) DEFAULT NULL,
  `forma_pago` varchar(50) DEFAULT NULL,
  `dias_credito` int(11) NOT NULL,
  `dias_pago` varchar(10) DEFAULT NULL,
  `correo_permisionario` varchar(50) DEFAULT NULL,
  `estatus` varchar(10) NOT NULL,
  `causa_baja` varchar(100) DEFAULT NULL,
  `lugar_base` varchar(100) DEFAULT NULL,
  `persona` char(6) NOT NULL DEFAULT 'm',
  PRIMARY KEY (`id`),
  KEY `estados_id` (`estados_id`),
  KEY `paises_id` (`paises_id`),
  KEY `razon_social_permisionario` (`razon_social_permisionario`),
  KEY `nombre_comercial` (`nombre_comercial`),
  KEY `rfc` (`rfc`),
  CONSTRAINT `permisionarios_ibfk_1` FOREIGN KEY (`estados_id`) REFERENCES `estados` (`id`),
  CONSTRAINT `permisionarios_ibfk_2` FOREIGN KEY (`paises_id`) REFERENCES `paises` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `permisionarios`
--


--
-- Table structure for table `planeaciones_mantenimientos`
--

CREATE TABLE `planeaciones_mantenimientos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `planeacion_mantenimiento` varchar(20) DEFAULT NULL,
  `estatus` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `unidades_id` int(11) NOT NULL,
  `kms_planeado` decimal(11,2) DEFAULT NULL,
  `fecha_planeado` date DEFAULT NULL,
  `conceptos_cobro_egresos_id` int(11) NOT NULL,
  `comentarios` varchar(200) DEFAULT NULL,
  `ordenes_mantenimientos_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `unidades_id` (`unidades_id`),
  KEY `ordenes_mantenimientos_id` (`ordenes_mantenimientos_id`) USING BTREE,
  KEY `planeacion_mantenimiento` (`planeacion_mantenimiento`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `conceptos_cobro_egresos_id` (`conceptos_cobro_egresos_id`) USING BTREE,
  CONSTRAINT `planeaciones_mantenimientos_ibfk_1` FOREIGN KEY (`unidades_id`) REFERENCES `unidades` (`id`),
  CONSTRAINT `planeaciones_mantenimientos_ibfk_2` FOREIGN KEY (`conceptos_cobro_egresos_id`) REFERENCES `conceptos_cobro_egresos` (`id`),
  CONSTRAINT `planeaciones_mantenimientos_ibfk_3` FOREIGN KEY (`ordenes_mantenimientos_id`) REFERENCES `ordenes_mantenimientos` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `planeaciones_mantenimientos`
--

INSERT INTO `planeaciones_mantenimientos` VALUES (1,'PM1','Planeada','2026-02-09 18:06:20',7,10000.00,'2026-04-22',203,'revisar los frenos ',3),(2,'PM2','Planeada','2026-03-03 17:41:49',8,NULL,NULL,203,'',NULL);
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `planeaciones_mantenimientos_before_insert` BEFORE INSERT ON `planeaciones_mantenimientos`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('planeaciones_mantenimientos') INTO vFolio;

      SELECT getserie('planeaciones_mantenimientos') INTO vSerie;

      SET NEW.planeacion_mantenimiento = CONCAT(vSerie, vFolio);

      SET NEW.fecha_hora = NOW();

END */;;
DELIMITER ;

--
-- Table structure for table `planeaciones_mantenimientos_detalle`
--

CREATE TABLE `planeaciones_mantenimientos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `planeaciones_mantenimientos_id` int(11) NOT NULL,
  `kms_planeado` decimal(11,2) DEFAULT NULL,
  `fecha_planeado` date DEFAULT NULL,
  `tareas_reparaciones_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `planeaciones_mantenimientos_id` (`planeaciones_mantenimientos_id`),
  KEY `tareas_reparaciones_id` (`tareas_reparaciones_id`),
  CONSTRAINT `planeaciones_mantenimientos_detalle_ibfk_1` FOREIGN KEY (`planeaciones_mantenimientos_id`) REFERENCES `planeaciones_mantenimientos` (`id`),
  CONSTRAINT `planeaciones_mantenimientos_detalle_ibfk_2` FOREIGN KEY (`tareas_reparaciones_id`) REFERENCES `tareas_reparaciones` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `planeaciones_mantenimientos_detalle`
--


--
-- Table structure for table `prestamos_operadores`
--

CREATE TABLE `prestamos_operadores` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `prestamo_operador` varchar(20) DEFAULT NULL COMMENT 'Prestamo',
  `fecha_hora` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `fecha_aplicacion` datetime NOT NULL,
  `sucursales_id` int(11) NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `empleados_id` int(11) NOT NULL,
  `concepto` varchar(100) DEFAULT NULL,
  `importe` decimal(11,2) NOT NULL,
  `abonado` decimal(11,2) DEFAULT NULL,
  `saldo` decimal(11,2) DEFAULT NULL,
  `bancos_id` int(11) NOT NULL,
  `bancos_cuenta` varchar(50) NOT NULL,
  `referencia` varchar(50) DEFAULT NULL,
  `remisiones_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `remisiones_id` (`remisiones_id`) USING BTREE,
  KEY `prestamo_operador` (`prestamo_operador`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `sucursales_id` (`sucursales_id`),
  KEY `empleados_id` (`empleados_id`) USING BTREE,
  CONSTRAINT `prestamos_operadores_ibfk_1` FOREIGN KEY (`sucursales_id`) REFERENCES `sucursales` (`id`),
  CONSTRAINT `prestamos_operadores_ibfk_2` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `prestamos_operadores_ibfk_3` FOREIGN KEY (`empleados_id`) REFERENCES `empleados` (`id`),
  CONSTRAINT `prestamos_operadores_ibfk_4` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`),
  CONSTRAINT `prestamos_operadores_ibfk_5` FOREIGN KEY (`remisiones_id`) REFERENCES `remisiones` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `prestamos_operadores`
--

INSERT INTO `prestamos_operadores` VALUES (1,'PRO1','2025-10-31 00:00:33','2025-10-30 17:55:16',8,'Autorizado',NULL,NULL,1,'Emfermedad',5000.00,2000.00,3000.00,1,'1071124813','',NULL),(2,'SPO1','2025-11-04 23:40:21','2025-11-03 13:00:21',9,'Autorizado',NULL,NULL,2,'PRESTAMO',5000.00,1500.00,3500.00,1,'1071124813','',NULL);
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `prestamos_operadores_before_insert` BEFORE INSERT ON `prestamos_operadores`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT gf_prestamos_operadores(NEW.sucursales_id) INTO vFolio;
      
      SELECT gs_prestamos_operadores(NEW.sucursales_id) INTO vSerie;

      SET NEW.prestamo_operador = CONCAT(vSerie, vFolio);

      SET NEW.fecha_hora = SYSDATE();

	IF (NEW.estatus = 'Autorizado') THEN
    	SET NEW.estatus = 'Capturado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `prestamos_operadores_before_update` BEFORE UPDATE ON `prestamos_operadores`
 FOR EACH ROW BEGIN

	IF (NEW.saldo = 0 AND OLD.saldo > 0 AND NEW.estatus<>'Cancelado') THEN
		SET NEW.estatus = "Pagado";
	END IF;

    IF (NEW.estatus='Autorizado' AND OLD.estatus='Capturado') THEN
    	SET NEW.saldo = NEW.importe;
        SET NEW.abonado = 0;
    END IF;

    IF (NEW.saldo > 0 AND NEW.estatus="Pagado" AND OLD.estatus="Pagado") THEN
    	SET NEW.estatus='Autorizado';
    END IF;
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `prestamos_operadores_after_update` AFTER UPDATE ON `prestamos_operadores`
 FOR EACH ROW BEGIN 

   DECLARE proveedor_deposito VARCHAR(100);
    
  IF (NEW.estatus = 'Autorizado' AND OLD.estatus <> 'Autorizado') THEN
    
    SELECT empleados.empleado INTO proveedor_deposito 
    FROM empleados
    WHERE empleados.id = NEW.empleados_id;

		INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
		VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Prestamo Operador', proveedor_deposito, NEW.prestamo_operador, NEW.referencia, 'Retiro', NULL, NEW.importe);
    
  END IF;
  
  IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Autorizado') THEN
    
    SELECT empleados.empleado INTO proveedor_deposito 
    FROM empleados
    WHERE empleados.id = NEW.empleados_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Cancelacion Prestamo Operador', proveedor_deposito, NEW.referencia, NEW.prestamo_operador, 'Deposito',  NEW.importe, NULL);
    
  END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `prestamos_operadores_historial`
--

CREATE TABLE `prestamos_operadores_historial` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `prestamos_operadores_id` int(11) NOT NULL,
  `estatus` varchar(20) DEFAULT NULL,
  `operacion` varchar(50) NOT NULL,
  `user_id` int(11) NOT NULL,
  `descripcion` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `solicitudes_servicio_id` (`prestamos_operadores_id`),
  KEY `user_id` (`user_id`),
  KEY `prestamos_operadores_id` (`prestamos_operadores_id`),
  KEY `user_id_2` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `prestamos_operadores_historial`
--


--
-- Table structure for table `productos`
--

CREATE TABLE `productos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `producto_codigo_interno` varchar(20) NOT NULL,
  `producto_nombre` varchar(100) NOT NULL,
  `productos_familias_id` int(11) NOT NULL,
  `existencia_producto` decimal(11,2) DEFAULT '0.00',
  `maximo` decimal(11,2) DEFAULT NULL,
  `minimo` decimal(11,2) DEFAULT NULL,
  `costo` decimal(11,2) DEFAULT '0.00',
  `almacenes_id` int(11) NOT NULL,
  `ubicacion` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `productos_familias_id` (`productos_familias_id`),
  KEY `almacenes_id` (`almacenes_id`) USING BTREE,
  KEY `producto_codigo_interno` (`producto_codigo_interno`),
  KEY `producto_nombre` (`producto_nombre`),
  CONSTRAINT `productos_ibfk_1` FOREIGN KEY (`productos_familias_id`) REFERENCES `productos_familias` (`id`),
  CONSTRAINT `productos_ibfk_2` FOREIGN KEY (`almacenes_id`) REFERENCES `almacenes` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `productos`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `productos_before_insert` BEFORE INSERT ON `productos`
 FOR EACH ROW BEGIN
	SET NEW.existencia_producto = 0;
    SET NEW.costo = 0;
END */;;
DELIMITER ;

--
-- Table structure for table `productos_familias`
--

CREATE TABLE `productos_familias` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `familia` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `familia` (`familia`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `productos_familias`
--

INSERT INTO `productos_familias` VALUES (2,'LLANTAS'),(1,'REFACCIONES');

--
-- Table structure for table `propietarios`
--

CREATE TABLE `propietarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tipo` varchar(20) DEFAULT NULL,
  `nombre` varchar(100) NOT NULL,
  `paises_residencia_id` int(11) DEFAULT NULL,
  `rfc` varchar(20) NOT NULL,
  `calle` varchar(100) DEFAULT NULL,
  `numero_exterior` varchar(50) DEFAULT NULL,
  `numero_interior` varchar(50) DEFAULT NULL,
  `municipios_id` int(11) DEFAULT NULL,
  `localidades_id` int(11) DEFAULT NULL,
  `colonias_id` int(11) DEFAULT NULL,
  `codigos_postales_id` int(11) DEFAULT NULL,
  `estados_id` int(11) DEFAULT NULL,
  `paises_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `paises_residencia_id` (`paises_residencia_id`),
  KEY `estados_id` (`estados_id`),
  KEY `municipios_id` (`municipios_id`),
  KEY `localidades_id` (`localidades_id`),
  KEY `colonias_id` (`colonias_id`),
  KEY `codigos_postales_id` (`codigos_postales_id`),
  KEY `paises_id` (`paises_id`),
  CONSTRAINT `propietarios_ibfk_1` FOREIGN KEY (`paises_residencia_id`) REFERENCES `paises` (`id`),
  CONSTRAINT `propietarios_ibfk_2` FOREIGN KEY (`municipios_id`) REFERENCES `municipios` (`id`),
  CONSTRAINT `propietarios_ibfk_3` FOREIGN KEY (`localidades_id`) REFERENCES `localidades` (`id`),
  CONSTRAINT `propietarios_ibfk_4` FOREIGN KEY (`colonias_id`) REFERENCES `colonias` (`id`),
  CONSTRAINT `propietarios_ibfk_5` FOREIGN KEY (`codigos_postales_id`) REFERENCES `codigos_postales` (`id`),
  CONSTRAINT `propietarios_ibfk_6` FOREIGN KEY (`estados_id`) REFERENCES `estados` (`id`),
  CONSTRAINT `propietarios_ibfk_7` FOREIGN KEY (`paises_id`) REFERENCES `paises` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `propietarios`
--


--
-- Table structure for table `proveedores`
--

CREATE TABLE `proveedores` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `razon_social` varchar(50) NOT NULL,
  `nombre_comercial` varchar(100) DEFAULT NULL,
  `rfc` varchar(20) NOT NULL,
  `dias_credito` int(11) DEFAULT NULL,
  `persona` varchar(10) DEFAULT NULL,
  `calle` varchar(100) DEFAULT NULL,
  `colonia` varchar(50) DEFAULT NULL,
  `ciudad` varchar(50) DEFAULT NULL,
  `estados_id` int(11) DEFAULT NULL,
  `paises_id` int(11) DEFAULT NULL,
  `codigo_postal` varchar(5) DEFAULT NULL,
  `fecha_alta` date DEFAULT NULL,
  `fecha_baja` date DEFAULT NULL,
  `causa_baja` int(100) DEFAULT NULL,
  `estatus` varchar(10) NOT NULL,
  `viaja_a` varchar(200) DEFAULT NULL,
  `equipo_cuenta` varchar(200) DEFAULT NULL,
  `lugar_base` varchar(100) DEFAULT NULL,
  `dias_pago` varchar(10) DEFAULT NULL,
  `forma_pago` varchar(50) DEFAULT NULL,
  `cuenta_contable` varchar(50) DEFAULT NULL,
  `cuenta_pago` varchar(50) DEFAULT NULL,
  `telefono` varchar(20) DEFAULT NULL,
  `celular` varchar(20) DEFAULT NULL,
  `banco` varchar(50) DEFAULT NULL,
  `correo` varchar(100) DEFAULT NULL,
  `clabe_interbancaria` varchar(20) DEFAULT NULL,
  `contacto` varchar(100) DEFAULT NULL,
  `filtro` int(11) DEFAULT NULL,
  `tipos_resumen` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `estados_id` (`estados_id`),
  KEY `razon_social` (`razon_social`),
  KEY `rfc` (`rfc`),
  KEY `paises_id` (`paises_id`),
  CONSTRAINT `proveedores_ibfk_1` FOREIGN KEY (`estados_id`) REFERENCES `estados` (`id`),
  CONSTRAINT `proveedores_ibfk_2` FOREIGN KEY (`paises_id`) REFERENCES `paises` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `proveedores`
--

INSERT INTO `proveedores` VALUES (1,'Autoconsumo','AutoConsumo','',NULL,'Moral',NULL,NULL,NULL,1,1,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,'PEMEX','PEMEX','XAXX010101000',30,'Moral','','','',NULL,NULL,'','2025-10-29',NULL,NULL,'Activo','','','','Lunes',NULL,'',NULL,'33-5489-659',NULL,NULL,NULL,NULL,NULL,NULL,'3'),(3,'Transportes Mexico','Transportes Mexico','METR59787IC1',30,'Moral','Sureste','Cojotepec','Apodaca',2,1,'55879','2025-10-22',NULL,NULL,'Activo','','','','Lunes',NULL,'',NULL,'33-3369-9875',NULL,NULL,NULL,NULL,NULL,NULL,'5'),(4,'Pase','Pase Servicios Electrónicos','ISD950921HE5',30,'Moral','Lago Zurich 219','Miguel Hidalgo','Ciudad de Mexico',2,1,'11529','2025-10-30',NULL,NULL,'Activo','','','','Lunes',NULL,'',NULL,'55-59-50-25-60',NULL,NULL,NULL,NULL,NULL,NULL,'2,5'),(5,'Oscar','','xxx',NULL,'Fisica','','','',1,1,'',NULL,NULL,NULL,'Activo','','','','Lunes',NULL,'',NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'4');
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `proveedores_after_insert` AFTER INSERT ON `proveedores`
 FOR EACH ROW BEGIN

	INSERT INTO proveedores_tipo_documento (proveedores_id, tipo_documento_id) SELECT NEW.id, tipo_documento.id FROM tipo_documento WHERE tipo_documento.grupo="Proveedores";
    
END */;;
DELIMITER ;

--
-- Table structure for table `proveedores_convenios_conceptos`
--

CREATE TABLE `proveedores_convenios_conceptos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `proveedores_id` int(11) NOT NULL,
  `rutas_id` int(11) NOT NULL,
  `clase_unidades` varchar(30) NOT NULL,
  `viaje` varchar(10) NOT NULL,
  `moneda` varchar(20) NOT NULL,
  `conceptos_cobro_egresos_id` int(11) NOT NULL,
  `grupo` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
  `importe` decimal(11,2) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `clientes_id` (`proveedores_id`) USING BTREE,
  KEY `rutas_id` (`rutas_id`) USING BTREE,
  KEY `conceptos_cobro_id` (`conceptos_cobro_egresos_id`),
  CONSTRAINT `proveedores_convenios_conceptos_ibfk_1` FOREIGN KEY (`proveedores_id`) REFERENCES `proveedores` (`id`),
  CONSTRAINT `proveedores_convenios_conceptos_ibfk_2` FOREIGN KEY (`rutas_id`) REFERENCES `rutas` (`id`),
  CONSTRAINT `proveedores_convenios_conceptos_ibfk_3` FOREIGN KEY (`conceptos_cobro_egresos_id`) REFERENCES `conceptos_cobro_egresos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `proveedores_convenios_conceptos`
--


--
-- Table structure for table `proveedores_ejecutivos`
--

CREATE TABLE `proveedores_ejecutivos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `proveedores_id` int(11) NOT NULL,
  `nombre` varchar(100) NOT NULL COMMENT 'Nombre Ejecutivo',
  `homoclave` varchar(10) DEFAULT NULL,
  `telefono` varchar(50) DEFAULT NULL,
  `correo_electronico` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `proveedores_id` (`proveedores_id`) USING BTREE,
  CONSTRAINT `proveedores_ejecutivos_ibfk_1` FOREIGN KEY (`proveedores_id`) REFERENCES `proveedores` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `proveedores_ejecutivos`
--


--
-- Table structure for table `proveedores_tipo`
--

CREATE TABLE `proveedores_tipo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `proveedores_id` int(11) NOT NULL,
  `proveedores_tipos_id` int(11) NOT NULL,
  `filtro` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `proveedores_id` (`proveedores_id`) USING BTREE,
  KEY `proveedores_tipos_id` (`proveedores_tipos_id`) USING BTREE,
  CONSTRAINT `proveedores_tipo_ibfk_1` FOREIGN KEY (`proveedores_id`) REFERENCES `proveedores` (`id`),
  CONSTRAINT `proveedores_tipo_ibfk_2` FOREIGN KEY (`proveedores_tipos_id`) REFERENCES `proveedores_tipos` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `proveedores_tipo`
--

INSERT INTO `proveedores_tipo` VALUES (1,2,3,NULL),(2,3,5,NULL),(3,4,2,NULL),(4,5,4,NULL),(5,4,5,NULL);
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `proveedores_tipo_after_insert` AFTER INSERT ON `proveedores_tipo`
 FOR EACH ROW BEGIN

		UPDATE proveedores p
    JOIN (SELECT pt.proveedores_id, GROUP_CONCAT(pt.proveedores_tipos_id SEPARATOR ',') AS tipos_contenidos
          FROM proveedores_tipo pt
          GROUP BY pt.proveedores_id
          ) s
          ON p.id = s.proveedores_id
    SET p.tipos_resumen=s.tipos_contenidos 
    WHERE p.id = NEW.proveedores_id;

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `proveedores_tipo_after_update` AFTER UPDATE ON `proveedores_tipo`
 FOR EACH ROW BEGIN

		UPDATE proveedores p
    JOIN (SELECT pt.proveedores_id, GROUP_CONCAT(pt.proveedores_tipos_id SEPARATOR ',') AS tipos_contenidos
          FROM proveedores_tipo pt
          GROUP BY pt.proveedores_id
          ) s
          ON p.id = s.proveedores_id
    SET p.tipos_resumen=s.tipos_contenidos 
    WHERE p.id = NEW.proveedores_id;

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `proveedores_tipo_after_delete` AFTER DELETE ON `proveedores_tipo`
 FOR EACH ROW BEGIN

		UPDATE proveedores p
    JOIN (SELECT pt.proveedores_id, GROUP_CONCAT(pt.proveedores_tipos_id SEPARATOR ',') AS tipos_contenidos
          FROM proveedores_tipo pt
          GROUP BY pt.proveedores_id
          ) s
          ON p.id = s.proveedores_id
    SET p.tipos_resumen=s.tipos_contenidos 
    WHERE p.id = OLD.proveedores_id;

END */;;
DELIMITER ;

--
-- Table structure for table `proveedores_tipo_documento`
--

CREATE TABLE `proveedores_tipo_documento` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `proveedores_id` int(11) NOT NULL,
  `tipo_documento_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `tipo_documento_id` (`tipo_documento_id`) USING BTREE,
  KEY `proveedores_id` (`proveedores_id`) USING BTREE,
  CONSTRAINT `proveedores_tipo_documento_ibfk_1` FOREIGN KEY (`proveedores_id`) REFERENCES `proveedores` (`id`),
  CONSTRAINT `proveedores_tipo_documento_ibfk_2` FOREIGN KEY (`tipo_documento_id`) REFERENCES `tipo_documento` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `proveedores_tipo_documento`
--

INSERT INTO `proveedores_tipo_documento` VALUES (1,2,3),(2,3,3),(3,4,3),(4,5,3);

--
-- Table structure for table `proveedores_tipos`
--

CREATE TABLE `proveedores_tipos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tipo_proveedor` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `tipo_proveedor` (`tipo_proveedor`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `proveedores_tipos`
--

INSERT INTO `proveedores_tipos` VALUES (1,'Administrativo'),(8,'AutoConsumo'),(2,'Casetas Electonicas'),(3,'Combustible Credito'),(4,'Mantenimiento Externo'),(7,'Operador'),(5,'Permisionario'),(6,'Refacciones y Llantas');

--
-- Table structure for table `provision_pagos_combustibles`
--

CREATE TABLE `provision_pagos_combustibles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pago_combustible` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_programacion_pago` date DEFAULT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `gasolineras_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) NOT NULL,
  `comentarios` varchar(250) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  `saldo` decimal(11,2) DEFAULT NULL,
  `fecha_vencimiento` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `gasolineras_id` (`gasolineras_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pago_combustible` (`provision_pago_combustible`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `moneda` (`moneda`),
  KEY `proveedores_factura` (`proveedores_factura`),
  CONSTRAINT `provision_pagos_combustibles_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `provision_pagos_combustibles_ibfk_2` FOREIGN KEY (`gasolineras_id`) REFERENCES `gasolineras` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_combustibles`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_before_insert` BEFORE INSERT ON `provision_pagos_combustibles`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('compras_combustibles') INTO vFolio;
      
      SELECT getserie('compras_combustibles') INTO vSerie;

      SET NEW.provision_pago_combustible = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_after_insert` AFTER INSERT ON `provision_pagos_combustibles`
 FOR EACH ROW BEGIN

  INSERT INTO provision_pagos_combustibles_detalle (provision_pagos_combustibles_id, remisiones_combustibles_detalle_id, litros, importe) (SELECT NEW.id, r.id, r.litros, r.importe FROM remisiones_combustibles_detalle r WHERE r.gasolineras_id=NEW.gasolineras_id AND r.estatus='Autorizado' AND r.provision_pagos_combustibles_id IS NULL);
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_before_update` BEFORE UPDATE ON `provision_pagos_combustibles`
 FOR EACH ROW BEGIN

  DECLARE dias INT(11);
    
    IF (NEW.estatus = 'Autorizado' AND OLD.estatus <> 'Autorizado') THEN
      SELECT COALESCE(s.dias_credito,0) FROM gasolineras s WHERE s.id=NEW.gasolineras_id INTO dias;
        IF (NEW.fecha_programacion_pago IS NOT NULL) THEN
        	SET NEW.fecha_vencimiento = DATE_ADD(NEW.fecha_programacion_pago, INTERVAL dias DAY);
        ELSE
        	SET NEW.fecha_vencimiento = DATE_ADD(CURDATE(), INTERVAL dias DAY);
        END IF;
      SET NEW.saldo = NEW.total;
    END IF;

    IF (NEW.saldo = 0 AND OLD.estatus = 'Autorizado') THEN
      SET NEW.estatus='Pagado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_after_update` AFTER UPDATE ON `provision_pagos_combustibles`
 FOR EACH ROW BEGIN
  UPDATE remisiones_combustibles_detalle r INNER JOIN provision_pagos_combustibles_detalle d ON
  r.id = d.remisiones_combustibles_detalle_id SET r.provision_pagos_combustibles_id = NEW.id
    WHERE d.provision_pagos_combustibles_id = NEW.id;
        
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_combustibles_detalle`
--

CREATE TABLE `provision_pagos_combustibles_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_combustibles_id` int(11) DEFAULT NULL,
  `remisiones_combustibles_detalle_id` int(11) NOT NULL,
  `litros` decimal(11,2) DEFAULT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `remisiones_combustibles_detalle_id` (`remisiones_combustibles_detalle_id`) USING BTREE,
  KEY `provision_pagos_combustibles_id` (`provision_pagos_combustibles_id`) USING BTREE,
  CONSTRAINT `provision_pagos_combustibles_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_combustibles_id`) REFERENCES `provision_pagos_combustibles` (`id`),
  CONSTRAINT `provision_pagos_combustibles_detalle_ibfk_2` FOREIGN KEY (`remisiones_combustibles_detalle_id`) REFERENCES `remisiones_combustibles_detalle` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_combustibles_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_detalle_after_update` AFTER UPDATE ON `provision_pagos_combustibles_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_combustibles_detalle r 
  SET r.provision_pagos_combustibles_id=NULL
    WHERE r.id=OLD.remisiones_combustibles_detalle_id;
    
UPDATE remisiones_combustibles_detalle r 
  SET r.provision_pagos_combustibles_id=NEW.provision_pagos_combustibles_id
    WHERE r.id=NEW.remisiones_combustibles_detalle_id;
      
      
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_detalle_after_delete` AFTER DELETE ON `provision_pagos_combustibles_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_combustibles_detalle r 
  SET r.provision_pagos_combustibles_id=NULL
    WHERE r.id=OLD.remisiones_combustibles_detalle_id; 
      
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_combustibles_pagos_detalle`
--

CREATE TABLE `provision_pagos_combustibles_pagos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_combustibles_id` int(11) DEFAULT NULL,
  `pago_combustible` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `fecha_aplicacion` datetime NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `bancos_cuenta` varchar(50) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `forma_pago` varchar(50) NOT NULL,
  `saldo_provision_pago` decimal(11,2) DEFAULT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pagos_combustibles_id` (`provision_pagos_combustibles_id`) USING BTREE,
  KEY `pago_combustible` (`pago_combustible`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `forma_pago` (`forma_pago`),
  CONSTRAINT `provision_pagos_combustibles_pagos_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_combustibles_id`) REFERENCES `provision_pagos_combustibles` (`id`),
  CONSTRAINT `provision_pagos_combustibles_pagos_detalle_ibfk_2` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`),
  CONSTRAINT `provision_pagos_combustibles_pagos_detalle_ibfk_3` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `provision_pagos_combustibles_pagos_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_pagos_detalle_before_insert` BEFORE INSERT ON `provision_pagos_combustibles_pagos_detalle`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_combustibles') INTO vFolio;
      
      SELECT getserie('pagos_combustibles') INTO vSerie;

      SET NEW.pago_combustible = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

	IF (NEW.estatus = 'Pagado') THEN
    	SET NEW.estatus='Capturado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_pagos_detalle_after_update` AFTER UPDATE ON `provision_pagos_combustibles_pagos_detalle`
 FOR EACH ROW BEGIN 

   DECLARE proveedor_deposito VARCHAR(50);
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;
   
   IF (NEW.estatus = 'Pagado' and OLD.estatus = 'Capturado') THEN
  	SELECT COALESCE(SUM(provision_pagos_combustibles_pagos_detalle.importe)) INTO total_pagos
   FROM provision_pagos_combustibles_pagos_detalle
   WHERE provision_pagos_combustibles_pagos_detalle.provision_pagos_combustibles_id = NEW.provision_pagos_combustibles_id AND provision_pagos_combustibles_pagos_detalle.estatus='Pagado';

  SELECT COALESCE(total_pagos, 0) INTO total_pagos ;

  UPDATE provision_pagos_combustibles 
      SET provision_pagos_combustibles.saldo = provision_pagos_combustibles.total - total_pagos
      WHERE provision_pagos_combustibles.id = COALESCE(NEW.provision_pagos_combustibles_id, OLD.provision_pagos_combustibles_id) ;
 
   END IF;
   
  IF (NEW.estatus = 'Pagado' AND OLD.estatus <> 'Pagado') THEN
    
    SELECT gasolineras.gasolinera INTO proveedor_deposito 
    FROM gasolineras
    LEFT JOIN provision_pagos_combustibles ON provision_pagos_combustibles.id=NEW.provision_pagos_combustibles_id
    WHERE gasolineras.id = provision_pagos_combustibles.gasolineras_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Pago Combustible', proveedor_deposito, NEW.pago_combustible, NEW.numero_autorizacion, 'Retiro', NULL, NEW.importe);
    
  END IF;
  
  IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Pagado') THEN
    
    SELECT gasolineras.gasolinera INTO proveedor_deposito 
    FROM gasolineras
    LEFT JOIN provision_pagos_combustibles ON provision_pagos_combustibles.id=NEW.provision_pagos_combustibles_id
    WHERE gasolineras.id = provision_pagos_combustibles.gasolineras_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro, saldo_final)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Cancelacion Pago Combustible', proveedor_deposito, NEW.pago_combustible, NEW.numero_autorizacion, 'Deposito', NEW.importe, NULL);
    
  END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_combustibles_paqueteria`
--

CREATE TABLE `provision_pagos_combustibles_paqueteria` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pago_combustible_paqueteria` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_programacion_pago` date DEFAULT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `proveedores_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) NOT NULL,
  `comentarios` varchar(250) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  `saldo` decimal(11,2) DEFAULT NULL,
  `fecha_vencimiento` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pago_combustible_paqueteria` (`provision_pago_combustible_paqueteria`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `moneda` (`moneda`),
  KEY `proveedores_factura` (`proveedores_factura`),
  KEY `proveedores_id` (`proveedores_id`) USING BTREE,
  CONSTRAINT `provision_pagos_combustibles_paqueteria_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `provision_pagos_combustibles_paqueteria_ibfk_2` FOREIGN KEY (`proveedores_id`) REFERENCES `proveedores` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_combustibles_paqueteria`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_paqueteria_before_insert` BEFORE INSERT ON `provision_pagos_combustibles_paqueteria`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('compras_combustibles_paqueteria') INTO vFolio;
      
      SELECT getserie('compras_combustibles_paqueteria') INTO vSerie;

      SET NEW.provision_pago_combustible_paqueteria = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_paqueteria_after_insert` AFTER INSERT ON `provision_pagos_combustibles_paqueteria`
 FOR EACH ROW BEGIN

  INSERT INTO provision_pagos_combustibles_paqueteria_detalle (provision_pagos_combustibles_paqueteria_id, viajes_informes_combustibles_detalle_id, litros, importe) (SELECT NEW.id, r.id, r.litros, r.importe FROM viajes_informes_combustibles_detalle r WHERE r.proveedores_id=NEW.proveedores_id AND r.estatus='Autorizado' AND r.provision_pagos_combustibles_paqueteria_id IS NULL);
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_paqueteria_before_update` BEFORE UPDATE ON `provision_pagos_combustibles_paqueteria`
 FOR EACH ROW BEGIN

  DECLARE dias INT(11);
    
    IF (NEW.estatus = 'Autorizado' AND OLD.estatus <> 'Autorizado') THEN
      SELECT COALESCE(s.dias_credito,0) FROM proveedores s WHERE s.id=NEW.proveedores_id INTO dias;
        IF (NEW.fecha_programacion_pago IS NOT NULL) THEN
        	SET NEW.fecha_vencimiento = DATE_ADD(NEW.fecha_programacion_pago, INTERVAL dias DAY);
        ELSE
        	SET NEW.fecha_vencimiento = DATE_ADD(CURDATE(), INTERVAL dias DAY);
        END IF;
      SET NEW.saldo = NEW.total;
    END IF;

    IF (NEW.saldo = 0 AND OLD.estatus = 'Autorizado') THEN
      SET NEW.estatus='Pagado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_paqueteria_after_update` AFTER UPDATE ON `provision_pagos_combustibles_paqueteria`
 FOR EACH ROW BEGIN
  UPDATE viajes_informes_combustibles_detalle r INNER JOIN provision_pagos_combustibles_paqueteria_detalle d ON
  r.id = d.viajes_informes_combustibles_detalle_id SET r.provision_pagos_combustibles_paqueteria_id = NEW.id
    WHERE d.provision_pagos_combustibles_paqueteria_id = NEW.id;
        
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_combustibles_paqueteria_detalle`
--

CREATE TABLE `provision_pagos_combustibles_paqueteria_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_combustibles_paqueteria_id` int(11) DEFAULT NULL,
  `viajes_informes_combustibles_detalle_id` int(11) NOT NULL,
  `litros` decimal(11,2) DEFAULT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `viajes_informes_combustibles_detalle_id` (`viajes_informes_combustibles_detalle_id`) USING BTREE,
  KEY `provision_pagos_combustibles_paqueteria_id` (`provision_pagos_combustibles_paqueteria_id`) USING BTREE,
  CONSTRAINT `provision_pagos_combustibles_paqueteria_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_combustibles_paqueteria_id`) REFERENCES `provision_pagos_combustibles_paqueteria` (`id`),
  CONSTRAINT `provision_pagos_combustibles_paqueteria_detalle_ibfk_2` FOREIGN KEY (`viajes_informes_combustibles_detalle_id`) REFERENCES `viajes_informes_combustibles_detalle` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_combustibles_paqueteria_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_paqueteria_detalle_after_update` AFTER UPDATE ON `provision_pagos_combustibles_paqueteria_detalle`
 FOR EACH ROW BEGIN 

UPDATE viajes_informes_combustibles_detalle r 
  SET r.provision_pagos_combustibles_paqueteria_id=NULL
    WHERE r.id=OLD.viajes_informes_combustibles_detalle_id;
    
UPDATE viajes_informes_combustibles_detalle r 
  SET r.provision_pagos_combustibles_paqueteria_id=NEW.provision_pagos_combustibles_paqueteria_id
    WHERE r.id=NEW.viajes_informes_combustibles_detalle_id;
      
      
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_paqueteria_detalle_after_delete` AFTER DELETE ON `provision_pagos_combustibles_paqueteria_detalle`
 FOR EACH ROW BEGIN 

UPDATE viajes_informes_combustibles_detalle r 
  SET r.provision_pagos_combustibles_paqueteria_id=NULL
    WHERE r.id=OLD.viajes_informes_combustibles_detalle_id; 
      
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_combustibles_paqueteria_pagos_detalle`
--

CREATE TABLE `provision_pagos_combustibles_paqueteria_pagos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_combustibles_paqueteria_id` int(11) DEFAULT NULL,
  `pago_combustible_paqueteria` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `fecha_aplicacion` datetime NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `bancos_cuenta` varchar(50) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `forma_pago` varchar(50) NOT NULL,
  `saldo_provision_pago` decimal(11,2) DEFAULT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pagos_combustibles_paqueteria_id` (`provision_pagos_combustibles_paqueteria_id`) USING BTREE,
  KEY `pago_combustible_paqueteria` (`pago_combustible_paqueteria`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `forma_pago` (`forma_pago`),
  CONSTRAINT `provision_pagos_combustibles_paqueteria_pagos_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_combustibles_paqueteria_id`) REFERENCES `provision_pagos_combustibles_paqueteria` (`id`),
  CONSTRAINT `provision_pagos_combustibles_paqueteria_pagos_detalle_ibfk_2` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`),
  CONSTRAINT `provision_pagos_combustibles_paqueteria_pagos_detalle_ibfk_3` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `provision_pagos_combustibles_paqueteria_pagos_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_paq_pagos_detalle_before_insert` BEFORE INSERT ON `provision_pagos_combustibles_paqueteria_pagos_detalle`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_combustibles_paqueteria') INTO vFolio;
      
      SELECT getserie('pagos_combustibles_paqueteria') INTO vSerie;

      SET NEW.pago_combustible_paqueteria = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

	IF (NEW.estatus = 'Pagado') THEN
    	SET NEW.estatus='Capturado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_paq_pagos_detalle_after_update` AFTER UPDATE ON `provision_pagos_combustibles_paqueteria_pagos_detalle`
 FOR EACH ROW BEGIN 

   DECLARE proveedor_deposito VARCHAR(50);
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;
   
IF (NEW.estatus = 'Pagado' and OLD.estatus = 'Capturado') THEN
  SELECT COALESCE(SUM(provision_pagos_combustibles_paqueteria_pagos_detalle.importe)) INTO total_pagos
   FROM provision_pagos_combustibles_paqueteria_pagos_detalle
   WHERE provision_pagos_combustibles_paqueteria_pagos_detalle.provision_pagos_combustibles_paqueteria_id = NEW.provision_pagos_combustibles_paqueteria_id AND provision_pagos_combustibles_paqueteria_pagos_detalle.estatus='Pagado';

  SELECT COALESCE(total_pagos, 0) INTO total_pagos ;

  UPDATE provision_pagos_combustibles_paqueteria 
      SET provision_pagos_combustibles_paqueteria.saldo = provision_pagos_combustibles_paqueteria.total - total_pagos
      WHERE provision_pagos_combustibles_paqueteria.id = COALESCE(NEW.provision_pagos_combustibles_paqueteria_id, OLD.provision_pagos_combustibles_paqueteria_id) ;
 
    END IF;

  IF (NEW.estatus = 'Pagado' AND OLD.estatus <> 'Pagado') THEN
    
    SELECT proveedores.razon_social INTO proveedor_deposito 
    FROM proveedores
    LEFT JOIN provision_pagos_combustibles_paqueteria ON provision_pagos_combustibles_paqueteria.id=NEW.provision_pagos_combustibles_paqueteria_id
    WHERE proveedores.id = provision_pagos_combustibles_paqueteria.proveedores_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Pago Combustible Paqueteria', proveedor_deposito, NEW.pago_combustible_paqueteria, NEW.numero_autorizacion, 'Retiro', NULL, NEW.importe);
    
  END IF;
  
  IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Pagado') THEN
    
    SELECT proveedores.razon_social INTO proveedor_deposito 
    FROM proveedores
    LEFT JOIN provision_pagos_combustibles_paqueteria ON provision_pagos_combustibles_paqueteria.id=NEW.provision_pagos_combustibles_paqueteria_id
    WHERE proveedores.id = provision_pagos_combustibles_paqueteria.proveedores_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Cancelacion Pago Combustible Paqueteria', proveedor_deposito, NEW.pago_combustible_paqueteria, NEW.numero_autorizacion, 'Deposito', NEW.importe, NULL);
    
  END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_combustibles_reparto`
--

CREATE TABLE `provision_pagos_combustibles_reparto` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pago_combustible_reparto` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_programacion_pago` date DEFAULT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `proveedores_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) NOT NULL,
  `comentarios` varchar(250) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  `saldo` decimal(11,2) DEFAULT NULL,
  `fecha_vencimiento` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pago_combustible_reparto` (`provision_pago_combustible_reparto`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `moneda` (`moneda`),
  KEY `proveedores_factura` (`proveedores_factura`),
  KEY `proveedores_id` (`proveedores_id`) USING BTREE,
  CONSTRAINT `provision_pagos_combustibles_reparto_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `provision_pagos_combustibles_reparto_ibfk_2` FOREIGN KEY (`proveedores_id`) REFERENCES `proveedores` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_combustibles_reparto`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_reparto_before_insert` BEFORE INSERT ON `provision_pagos_combustibles_reparto`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('compras_combustibles_reparto') INTO vFolio;
      
      SELECT getserie('compras_combustibles_reparto') INTO vSerie;

      SET NEW.provision_pago_combustible_reparto = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_reparto_after_insert` AFTER INSERT ON `provision_pagos_combustibles_reparto`
 FOR EACH ROW BEGIN

  INSERT INTO provision_pagos_combustibles_reparto_detalle (provision_pagos_combustibles_reparto_id, viajes_repartos_combustibles_detalle_id, litros, importe) (SELECT NEW.id, r.id, r.litros, r.importe FROM viajes_repartos_combustibles_detalle r WHERE r.proveedores_id=NEW.proveedores_id AND r.estatus='Autorizado' AND r.provision_pagos_combustibles_reparto_id IS NULL);
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_reparto_before_update` BEFORE UPDATE ON `provision_pagos_combustibles_reparto`
 FOR EACH ROW BEGIN

  DECLARE dias INT(11);
    
    IF (NEW.estatus = 'Autorizado' AND OLD.estatus <> 'Autorizado') THEN
      SELECT COALESCE(s.dias_credito,0) FROM proveedores s WHERE s.id=NEW.proveedores_id INTO dias;
        IF (NEW.fecha_programacion_pago IS NOT NULL) THEN
        	SET NEW.fecha_vencimiento = DATE_ADD(NEW.fecha_programacion_pago, INTERVAL dias DAY);
        ELSE
        	SET NEW.fecha_vencimiento = DATE_ADD(CURDATE(), INTERVAL dias DAY);
        END IF;
      SET NEW.saldo = NEW.total;
    END IF;

    IF (NEW.saldo = 0 AND OLD.estatus = 'Autorizado') THEN
      SET NEW.estatus='Pagado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_reparto_after_update` AFTER UPDATE ON `provision_pagos_combustibles_reparto`
 FOR EACH ROW BEGIN
  UPDATE viajes_repartos_combustibles_detalle r INNER JOIN provision_pagos_combustibles_reparto_detalle d ON
  r.id = d.viajes_repartos_combustibles_detalle_id SET r.provision_pagos_combustibles_reparto_id = NEW.id
    WHERE d.provision_pagos_combustibles_reparto_id = NEW.id;
        
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_combustibles_reparto_detalle`
--

CREATE TABLE `provision_pagos_combustibles_reparto_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_combustibles_reparto_id` int(11) DEFAULT NULL,
  `viajes_repartos_combustibles_detalle_id` int(11) NOT NULL,
  `litros` decimal(11,2) DEFAULT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `viajes_repartos_combustibles_detalle_id` (`viajes_repartos_combustibles_detalle_id`) USING BTREE,
  KEY `provision_pagos_combustibles_reparto_id` (`provision_pagos_combustibles_reparto_id`) USING BTREE,
  CONSTRAINT `provision_pagos_combustibles_reparto_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_combustibles_reparto_id`) REFERENCES `provision_pagos_combustibles_reparto` (`id`),
  CONSTRAINT `provision_pagos_combustibles_reparto_detalle_ibfk_2` FOREIGN KEY (`viajes_repartos_combustibles_detalle_id`) REFERENCES `viajes_repartos_combustibles_detalle` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_combustibles_reparto_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_reparto_detalle_after_update` AFTER UPDATE ON `provision_pagos_combustibles_reparto_detalle`
 FOR EACH ROW BEGIN 

UPDATE viajes_repartos_combustibles_detalle r 
  SET r.provision_pagos_combustibles_reparto_id=NULL
    WHERE r.id=OLD.viajes_repartos_combustibles_detalle_id;
    
UPDATE viajes_repartos_combustibles_detalle r 
  SET r.provision_pagos_combustibles_reparto_id=NEW.provision_pagos_combustibles_reparto_id
    WHERE r.id=NEW.viajes_repartos_combustibles_detalle_id;
      
      
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_reparto_detalle_after_delete` AFTER DELETE ON `provision_pagos_combustibles_reparto_detalle`
 FOR EACH ROW BEGIN 

UPDATE viajes_repartos_combustibles_detalle r 
  SET r.provision_pagos_combustibles_reparto_id=NULL
    WHERE r.id=OLD.viajes_repartos_combustibles_detalle_id; 
      
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_combustibles_reparto_pagos_detalle`
--

CREATE TABLE `provision_pagos_combustibles_reparto_pagos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_combustibles_reparto_id` int(11) DEFAULT NULL,
  `pago_combustible_reparto` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `fecha_aplicacion` datetime NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `bancos_cuenta` varchar(50) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `forma_pago` varchar(50) NOT NULL,
  `saldo_provision_pago` decimal(11,2) DEFAULT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pagos_combustibles_reparto_id` (`provision_pagos_combustibles_reparto_id`) USING BTREE,
  KEY `pago_combustible_reparto` (`pago_combustible_reparto`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `forma_pago` (`forma_pago`),
  CONSTRAINT `provision_pagos_combustibles_reparto_pagos_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_combustibles_reparto_id`) REFERENCES `provision_pagos_combustibles_reparto` (`id`),
  CONSTRAINT `provision_pagos_combustibles_reparto_pagos_detalle_ibfk_2` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`),
  CONSTRAINT `provision_pagos_combustibles_reparto_pagos_detalle_ibfk_3` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `provision_pagos_combustibles_reparto_pagos_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_reparto_pagos_detalle_before_insert` BEFORE INSERT ON `provision_pagos_combustibles_reparto_pagos_detalle`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_combustibles_reparto') INTO vFolio;
      
      SELECT getserie('pagos_combustibles_reparto') INTO vSerie;

      SET NEW.pago_combustible_reparto = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

	IF (NEW.estatus = 'Pagado') THEN
    	SET NEW.estatus='Capturado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_combustibles_reparto_pagos_detalle_after_update` AFTER UPDATE ON `provision_pagos_combustibles_reparto_pagos_detalle`
 FOR EACH ROW BEGIN 

   DECLARE proveedor_deposito VARCHAR(50);
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;
   
IF (NEW.estatus = 'Pagado' and OLD.estatus = 'Capturado') THEN
  SELECT COALESCE(SUM(provision_pagos_combustibles_reparto_pagos_detalle.importe)) INTO total_pagos
   FROM provision_pagos_combustibles_reparto_pagos_detalle
   WHERE provision_pagos_combustibles_reparto_pagos_detalle.provision_pagos_combustibles_reparto_id = NEW.provision_pagos_combustibles_reparto_id AND provision_pagos_combustibles_reparto_pagos_detalle.estatus='Pagado';

  SELECT COALESCE(total_pagos, 0) INTO total_pagos ;

  UPDATE provision_pagos_combustibles_reparto 
      SET provision_pagos_combustibles_reparto.saldo = provision_pagos_combustibles_reparto.total - total_pagos
      WHERE provision_pagos_combustibles_reparto.id = COALESCE(NEW.provision_pagos_combustibles_reparto_id, OLD.provision_pagos_combustibles_reparto_id) ;
 
    END IF;
    
  IF (NEW.estatus = 'Pagado' AND OLD.estatus <> 'Pagado') THEN
    
    SELECT gasolineras.gasolinera INTO proveedor_deposito 
    FROM gasolineras
    LEFT JOIN provision_pagos_combustibles_reparto ON provision_pagos_combustibles_reparto.id=NEW.provision_pagos_combustibles_reparto_id
    WHERE gasolineras.id = provision_pagos_combustibles_reparto.gasolineras_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Pago Combustible Reparto', proveedor_deposito, NEW.pago_combustible_reparto, NEW.numero_autorizacion, 'Retiro', NULL, NEW.importe);
    
  END IF;
  
  IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Pagado') THEN
    
    SELECT gasolineras.gasolinera INTO proveedor_deposito 
    FROM gasolineras
    LEFT JOIN provision_pagos_combustibles_reparto ON provision_pagos_combustibles_reparto.id=NEW.provision_pagos_combustibles_reparto_id
    WHERE gasolineras.id = provision_pagos_combustibles_reparto.gasolineras_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Cancelacion Pago Combustible Reparto', proveedor_deposito, NEW.pago_combustible_reparto, NEW.numero_autorizacion, 'Deposito', NEW.importe, NULL);
    
  END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_maniobras_cruces_permisionarios`
--

CREATE TABLE `provision_pagos_maniobras_cruces_permisionarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pago_maniobra_cruce_permisionario` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_programacion_pago` date DEFAULT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `permisionarios_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) NOT NULL,
  `comentarios` varchar(250) DEFAULT NULL,
  `porc_iva` int(11) DEFAULT NULL,
  `porc_retencion` int(11) DEFAULT NULL,
  `subtotal` decimal(11,2) DEFAULT NULL,
  `iva` decimal(11,2) DEFAULT NULL,
  `retencion` decimal(11,2) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  `saldo` decimal(11,2) DEFAULT NULL,
  `fecha_vencimiento` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `permisionarios_id` (`permisionarios_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pago_maniobra_cruce_permisionario` (`provision_pago_maniobra_cruce_permisionario`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `moneda` (`moneda`),
  KEY `proveedores_factura` (`proveedores_factura`),
  CONSTRAINT `provision_pagos_maniobras_cruces_permisionarios_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `provision_pagos_maniobras_cruces_permisionarios_ibfk_2` FOREIGN KEY (`permisionarios_id`) REFERENCES `permisionarios` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_maniobras_cruces_permisionarios`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_c_before_insert` BEFORE INSERT ON `provision_pagos_maniobras_cruces_permisionarios`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('provision_pagos') INTO vFolio;
      
      SELECT getserie('provision_pagos') INTO vSerie;

      SET NEW.provision_pago_maniobra_cruce_permisionario = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_c_permisionarios_after_insert` AFTER INSERT ON `provision_pagos_maniobras_cruces_permisionarios`
 FOR EACH ROW BEGIN

  INSERT INTO provision_pagos_maniobras_cruces_permisionarios_detalle (provision_pagos_maniobras_cruces_permisionarios_id, remisiones_permisionarios_maniobras_cruces_detalle_id, importe) (SELECT NEW.id, r.id, r.importe FROM remisiones_permisionarios_maniobras_cruces_detalle r WHERE r.permisionarios_maniobras_id=NEW.permisionarios_id AND r.estatus='Autorizada' AND r.provision_pagos_maniobras_cruces_permisionarios_id IS NULL);
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_c_before_update` BEFORE UPDATE ON `provision_pagos_maniobras_cruces_permisionarios`
 FOR EACH ROW BEGIN

  DECLARE dias INT(11);
    
    IF (NEW.estatus = 'Autorizado' AND OLD.estatus <> 'Autorizado') THEN
      SELECT COALESCE(s.dias_credito,0) FROM permisionarios s WHERE s.id=NEW.permisionarios_id INTO dias;
        IF (NEW.fecha_programacion_pago IS NOT NULL) THEN
        	SET NEW.fecha_vencimiento = DATE_ADD(NEW.fecha_programacion_pago, INTERVAL dias DAY);
        ELSE
        	SET NEW.fecha_vencimiento = DATE_ADD(CURDATE(), INTERVAL dias DAY);
        END IF;
      SET NEW.saldo = NEW.total;
    END IF;

    IF (NEW.saldo = 0 AND OLD.estatus = 'Autorizado') THEN
      SET NEW.estatus='Pagado';
      
      UPDATE remisiones_permisionarios_maniobras_cruces_detalle r INNER JOIN provision_pagos_maniobras_cruces_permisionarios_detalle d ON
  r.id = d.remisiones_permisionarios_maniobras_cruces_detalle_id SET r.estatus = 'Pagada' WHERE d.provision_pagos_maniobras_cruces_permisionarios_id = NEW.id;
    END IF;
    
    IF (NEW.estatus = "Cancelado" AND OLD.estatus= "Pagado") THEN
          UPDATE remisiones_permisionarios_maniobras_cruces_detalle r INNER JOIN provision_pagos_maniobras_cruces_permisionarios_detalle d ON
  r.id = d.remisiones_permisionarios_maniobras_cruces_detalle_id SET r.estatus = 'Autorizada'
    WHERE d.provision_pagos_maniobras_cruces_permisionarios_id = NEW.id;
    END IF;
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_c_permisionarios_after_update` AFTER UPDATE ON `provision_pagos_maniobras_cruces_permisionarios`
 FOR EACH ROW BEGIN
  UPDATE remisiones_permisionarios_maniobras_cruces_detalle r INNER JOIN provision_pagos_maniobras_cruces_permisionarios_detalle d ON
  r.id = d.remisiones_permisionarios_maniobras_cruces_detalle_id SET r.provision_pagos_maniobras_cruces_permisionarios_id = NEW.id
    WHERE d.provision_pagos_maniobras_cruces_permisionarios_id = NEW.id;
        
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_maniobras_cruces_permisionarios_detalle`
--

CREATE TABLE `provision_pagos_maniobras_cruces_permisionarios_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_maniobras_cruces_permisionarios_id` int(11) DEFAULT NULL,
  `remisiones_permisionarios_maniobras_cruces_detalle_id` int(11) NOT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `remisiones_permisionarios_maniobras_cruces_detalle_id` (`remisiones_permisionarios_maniobras_cruces_detalle_id`) USING BTREE,
  KEY `provision_pagos_maniobras_cruces_permisionarios_id` (`provision_pagos_maniobras_cruces_permisionarios_id`) USING BTREE,
  CONSTRAINT `provision_pagos_maniobras_cruces_permisionarios_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_maniobras_cruces_permisionarios_id`) REFERENCES `provision_pagos_maniobras_cruces_permisionarios` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_maniobras_cruces_permisionarios_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_c_permisionarios_detalle_after_update` AFTER UPDATE ON `provision_pagos_maniobras_cruces_permisionarios_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_permisionarios_maniobras_cruces_detalle r 
  SET r.provision_pagos_maniobras_cruces_permisionarios_id=NULL
    WHERE r.id=OLD.remisiones_permisionarios_maniobras_cruces_detalle_id;
    
UPDATE remisiones_permisionarios_maniobras_cruces_detalle r 
  SET r.provision_pagos_maniobras_cruces_permisionarios_id=NEW.provision_pagos_maniobras_cruces_permisionarios_id
    WHERE r.id=NEW.remisiones_permisionarios_maniobras_cruces_detalle_id;
      
      
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_c_permisionarios_detalle_after_delete` AFTER DELETE ON `provision_pagos_maniobras_cruces_permisionarios_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_permisionarios_maniobras_cruces_detalle r 
  SET r.provision_pagos_maniobras_cruces_permisionarios_id=NULL
    WHERE r.id=OLD.remisiones_permisionarios_maniobras_cruces_detalle_id; 
      
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_maniobras_cruces_permisionarios_pagos_detalle`
--

CREATE TABLE `provision_pagos_maniobras_cruces_permisionarios_pagos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_maniobras_cruces_permisionarios_id` int(11) DEFAULT NULL,
  `pago_maniobra_cruce_permisionario` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `fecha_aplicacion` datetime NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `bancos_cuenta` varchar(50) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `forma_pago` varchar(50) NOT NULL,
  `saldo_provision_pago` decimal(11,2) DEFAULT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pagos_maniobras_cruces_permisionarios_id` (`provision_pagos_maniobras_cruces_permisionarios_id`) USING BTREE,
  KEY `pago_maniobra_cruce_permisionario` (`pago_maniobra_cruce_permisionario`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `forma_pago` (`forma_pago`),
  CONSTRAINT `provision_pagos_m_c_permisionarios_pagos_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_maniobras_cruces_permisionarios_id`) REFERENCES `provision_pagos_maniobras_cruces_permisionarios` (`id`),
  CONSTRAINT `provision_pagos_m_c_permisionarios_pagos_detalle_ibfk_2` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`),
  CONSTRAINT `provision_pagos_m_c_permisionarios_pagos_detalle_ibfk_3` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `provision_pagos_maniobras_cruces_permisionarios_pagos_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_c_permisionarios_pagos_detalle_b_i` BEFORE INSERT ON `provision_pagos_maniobras_cruces_permisionarios_pagos_detalle`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_maniobras_cruces_permisionarios') INTO vFolio;
      
      SELECT getserie('pagos_maniobras_cruces_permisionarios') INTO vSerie;

      SET NEW.pago_maniobra_cruce_permisionario = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

	IF (NEW.estatus = 'Pagado') THEN
    	SET NEW.estatus='Capturado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_c_permisionarios_pagos_detalle_a_u` AFTER UPDATE ON `provision_pagos_maniobras_cruces_permisionarios_pagos_detalle`
 FOR EACH ROW BEGIN 

   DECLARE proveedor_deposito VARCHAR(50);
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;
   
IF (NEW.estatus = 'Pagado' and OLD.estatus = 'Capturado') THEN
  SELECT COALESCE(SUM(provision_pagos_maniobras_cruces_permisionarios_pagos_detalle.importe)) INTO total_pagos
   FROM provision_pagos_maniobras_cruces_permisionarios_pagos_detalle
   WHERE provision_pagos_maniobras_cruces_permisionarios_pagos_detalle.provision_pagos_maniobras_cruces_permisionarios_id = NEW.provision_pagos_maniobras_cruces_permisionarios_id AND provision_pagos_maniobras_cruces_permisionarios_pagos_detalle.estatus='Pagado';

  SELECT COALESCE(total_pagos, 0) INTO total_pagos ;

  UPDATE provision_pagos_maniobras_cruces_permisionarios 
      SET provision_pagos_maniobras_cruces_permisionarios.saldo = provision_pagos_maniobras_cruces_permisionarios.total - total_pagos
      WHERE provision_pagos_maniobras_cruces_permisionarios.id = COALESCE(NEW.provision_pagos_maniobras_cruces_permisionarios_id, OLD.provision_pagos_maniobras_cruces_permisionarios_id) ;
 
    END IF;
    
  IF (NEW.estatus = 'Pagado' AND OLD.estatus <> 'Pagado') THEN
    
    SELECT permisionarios.razon_social_permisionario INTO proveedor_deposito 
    FROM permisionarios
    LEFT JOIN provision_pagos_maniobras_cruces_permisionarios ON provision_pagos_maniobras_cruces_permisionarios.id=NEW.provision_pagos_maniobras_cruces_permisionarios_id
    WHERE permisionarios.id = provision_pagos_maniobras_cruces_permisionarios.permisionarios_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Pago Maniobra Cruce Permisionario', proveedor_deposito, NEW.pago_maniobra_cruce_permisionario, NEW.numero_autorizacion, 'Retiro', NULL, NEW.importe);
    
  END IF;
  
  IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Pagado') THEN
    
    SELECT permisionarios.razon_social_permisionario INTO proveedor_deposito 
    FROM permisionarios
    LEFT JOIN provision_pagos_maniobras_cruces_permisionarios ON provision_pagos_maniobras_cruces_permisionarios.id=NEW.provision_pagos_maniobras_cruces_permisionarios_id
    WHERE permisionarios.id = provision_pagos_maniobras_cruces_permisionarios.permisionarios_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro, saldo_final)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Cancelacion Pago Maniobra Cruce Permisionario', proveedor_deposito, NEW.pago_maniobra_cruce_permisionario, NEW.numero_autorizacion, 'Deposito', NEW.importe, NULL);
    
  END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_maniobras_extras_detalle`
--

CREATE TABLE `provision_pagos_maniobras_extras_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_maniobras_extras_permisionarios_id` int(11) DEFAULT NULL,
  `remisiones_maniobras_extras_detalle_id` int(11) NOT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `provision_pagos_maniobras_extras_permisionarios_id` (`provision_pagos_maniobras_extras_permisionarios_id`) USING BTREE,
  KEY `remisiones_maniobras_extras_detalle_id` (`remisiones_maniobras_extras_detalle_id`) USING BTREE,
  CONSTRAINT `provision_pagos_maniobras_extras_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_maniobras_extras_permisionarios_id`) REFERENCES `provision_pagos_maniobras_extras_permisionarios` (`id`),
  CONSTRAINT `provision_pagos_maniobras_extras_detalle_ibfk_2` FOREIGN KEY (`remisiones_maniobras_extras_detalle_id`) REFERENCES `remisiones_maniobras_extras_detalle` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_maniobras_extras_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_e_detalle_after_update` AFTER UPDATE ON `provision_pagos_maniobras_extras_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_maniobras_extras_detalle r 
  SET r.provision_pagos_maniobras_extras_permisionarios_id=NULL
    WHERE r.id=OLD.remisiones_maniobras_extras_detalle_id;
    
UPDATE remisiones_maniobras_extras_detalle r 
  SET r.provision_pagos_maniobras_extras_permisionarios_id=NEW.provision_pagos_maniobras_extras_permisionarios_id
    WHERE r.id=NEW.remisiones_maniobras_extras_detalle_id;
      
      
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_e_detalle_after_delete` AFTER DELETE ON `provision_pagos_maniobras_extras_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_maniobras_extras_detalle r 
  SET r.provision_pagos_maniobras_extras_permisionarios_id=NULL
    WHERE r.id=OLD.remisiones_maniobras_extras_detalle_id; 
      
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_maniobras_extras_permisionarios`
--

CREATE TABLE `provision_pagos_maniobras_extras_permisionarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pago_maniobra_extra_permisionario` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_programacion_pago` date DEFAULT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `permisionarios_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) NOT NULL,
  `comentarios` varchar(250) DEFAULT NULL,
  `porc_iva` int(11) DEFAULT NULL,
  `subtotal` decimal(11,2) DEFAULT NULL,
  `iva` decimal(11,2) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  `saldo` decimal(11,2) DEFAULT NULL,
  `fecha_vencimiento` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `permisionarios_id` (`permisionarios_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pago_maniobra_extra_permisionario` (`provision_pago_maniobra_extra_permisionario`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `moneda` (`moneda`),
  KEY `proveedores_factura` (`proveedores_factura`),
  CONSTRAINT `provision_pagos_maniobras_extras_permisionarios_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `provision_pagos_maniobras_extras_permisionarios_ibfk_2` FOREIGN KEY (`permisionarios_id`) REFERENCES `permisionarios` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_maniobras_extras_permisionarios`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_e_permisionarios_before_insert` BEFORE INSERT ON `provision_pagos_maniobras_extras_permisionarios`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('compras_maniobras_extras_permisionarios') INTO vFolio;
      
      SELECT getserie('compras_maniobras_extras_permisionarios') INTO vSerie;

      SET NEW.provision_pago_maniobra_extra_permisionario = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_e_permisionarios_after_insert` AFTER INSERT ON `provision_pagos_maniobras_extras_permisionarios`
 FOR EACH ROW BEGIN

	INSERT INTO provision_pagos_maniobras_extras_permisionarios_detalle (provision_pagos_maniobras_extras_permisionarios_id, remisiones_permisionarios_maniobras_extras_detalle_id, importe) (SELECT NEW.id, r.id, r.importe FROM remisiones_permisionarios_maniobras_extras_detalle r WHERE r.permisionarios_maniobras_id=NEW.permisionarios_id AND r.estatus='Autorizada' AND r.provision_pagos_maniobras_extras_permisionarios_id IS NULL);
    
	INSERT INTO provision_pagos_maniobras_extras_detalle (provision_pagos_maniobras_extras_permisionarios_id, remisiones_maniobras_extras_detalle_id, importe) (SELECT NEW.id, r.id, r.importe FROM remisiones_maniobras_extras_detalle r WHERE r.permisionarios_maniobras_id=NEW.permisionarios_id AND r.estatus='Autorizada' AND r.provision_pagos_maniobras_extras_permisionarios_id IS NULL);
     
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_e_permisionarios_before_update` BEFORE UPDATE ON `provision_pagos_maniobras_extras_permisionarios`
 FOR EACH ROW BEGIN

  DECLARE dias INT(11);
    
    IF (NEW.estatus = 'Autorizado' AND OLD.estatus <> 'Autorizado') THEN
      SELECT COALESCE(s.dias_credito,0) FROM permisionarios s WHERE s.id=NEW.permisionarios_id INTO dias;
        IF (NEW.fecha_programacion_pago IS NOT NULL) THEN
        	SET NEW.fecha_vencimiento = DATE_ADD(NEW.fecha_programacion_pago, INTERVAL dias DAY);
        ELSE
        	SET NEW.fecha_vencimiento = DATE_ADD(CURDATE(), INTERVAL dias DAY);
        END IF;
      SET NEW.saldo = NEW.total;
    END IF;

    IF (NEW.saldo = 0 AND OLD.estatus = 'Autorizado') THEN
      SET NEW.estatus='Pagado';
      
      UPDATE remisiones_permisionarios_maniobras_extras_detalle r INNER JOIN provision_pagos_maniobras_extras_permisionarios_detalle d ON
  r.id = d.remisiones_permisionarios_maniobras_extras_detalle_id SET r.estatus = 'Pagada'
    WHERE d.provision_pagos_maniobras_extras_permisionarios_id = NEW.id;
       
      UPDATE remisiones_maniobras_extras_detalle r INNER JOIN provision_pagos_maniobras_extras_detalle d ON
  r.id = d.remisiones_maniobras_extras_detalle_id SET r.estatus = 'Pagada'
    WHERE d.provision_pagos_maniobras_extras_permisionarios_id = NEW.id;
    END IF;
    
    IF (NEW.estatus = "Cancelado" AND OLD.estatus= "Pagado") THEN
      UPDATE remisiones_permisionarios_maniobras_extras_detalle r INNER JOIN provision_pagos_maniobras_extras_permisionarios_detalle d ON
  r.id = d.remisiones_permisionarios_maniobras_extras_detalle_id SET r.estatus = 'Autorizada'
    WHERE d.provision_pagos_maniobras_extras_permisionarios_id = NEW.id;
       
      UPDATE remisiones_maniobras_extras_detalle r INNER JOIN provision_pagos_maniobras_extras_detalle d ON
  r.id = d.remisiones_maniobras_extras_detalle_id SET r.estatus = 'Autorizada'
    WHERE d.provision_pagos_maniobras_extras_permisionarios_id = NEW.id;
    END IF;
    

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_e_permisionarios_after_update` AFTER UPDATE ON `provision_pagos_maniobras_extras_permisionarios`
 FOR EACH ROW BEGIN
  UPDATE remisiones_permisionarios_maniobras_extras_detalle r INNER JOIN provision_pagos_maniobras_extras_permisionarios_detalle d ON
  r.id = d.remisiones_permisionarios_maniobras_extras_detalle_id SET r.provision_pagos_maniobras_extras_permisionarios_id = NEW.id
    WHERE d.provision_pagos_maniobras_extras_permisionarios_id = NEW.id;
       
  UPDATE remisiones_maniobras_extras_detalle r INNER JOIN provision_pagos_maniobras_extras_detalle d ON
  r.id = d.remisiones_maniobras_extras_detalle_id SET r.provision_pagos_maniobras_extras_permisionarios_id = NEW.id
    WHERE d.provision_pagos_maniobras_extras_permisionarios_id = NEW.id;
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_maniobras_extras_permisionarios_detalle`
--

CREATE TABLE `provision_pagos_maniobras_extras_permisionarios_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_maniobras_extras_permisionarios_id` int(11) DEFAULT NULL,
  `remisiones_permisionarios_maniobras_extras_detalle_id` int(11) NOT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `remisiones_permisionarios_maniobras_extras_detalle_id` (`remisiones_permisionarios_maniobras_extras_detalle_id`) USING BTREE,
  KEY `provision_pagos_maniobras_extras_permisionarios_id` (`provision_pagos_maniobras_extras_permisionarios_id`) USING BTREE,
  CONSTRAINT `provision_pagos_maniobras_extras_permisionarios_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_maniobras_extras_permisionarios_id`) REFERENCES `provision_pagos_maniobras_extras_permisionarios` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_maniobras_extras_permisionarios_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_e_permisionarios_detalle_after_update` AFTER UPDATE ON `provision_pagos_maniobras_extras_permisionarios_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_permisionarios_maniobras_extras_detalle r 
  SET r.provision_pagos_maniobras_extras_permisionarios_id=NULL
    WHERE r.id=OLD.remisiones_permisionarios_maniobras_extras_detalle_id;
    
UPDATE remisiones_permisionarios_maniobras_extras_detalle r 
  SET r.provision_pagos_maniobras_extras_permisionarios_id=NEW.provision_pagos_maniobras_extras_permisionarios_id
    WHERE r.id=NEW.remisiones_permisionarios_maniobras_extras_detalle_id;
      
      
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_e_permisionarios_detalle_after_delete` AFTER DELETE ON `provision_pagos_maniobras_extras_permisionarios_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones_permisionarios_maniobras_extras_detalle r 
  SET r.provision_pagos_maniobras_extras_permisionarios_id=NULL
    WHERE r.id=OLD.remisiones_permisionarios_maniobras_extras_detalle_id; 
      
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_maniobras_extras_permisionarios_pagos_detalle`
--

CREATE TABLE `provision_pagos_maniobras_extras_permisionarios_pagos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_maniobras_extras_permisionarios_id` int(11) DEFAULT NULL,
  `pago_maniobra_extra_permisionario` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `fecha_aplicacion` datetime NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `bancos_cuenta` varchar(50) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `forma_pago` varchar(50) NOT NULL,
  `saldo_provision_pago` decimal(11,2) DEFAULT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pagos_maniobras_extras_permisionarios_id` (`provision_pagos_maniobras_extras_permisionarios_id`) USING BTREE,
  KEY `pago_maniobra_extra_permisionario` (`pago_maniobra_extra_permisionario`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `forma_pago` (`forma_pago`),
  CONSTRAINT `provision_pagos_m_e_permisionarios_pagos_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_maniobras_extras_permisionarios_id`) REFERENCES `provision_pagos_maniobras_extras_permisionarios` (`id`),
  CONSTRAINT `provision_pagos_m_e_permisionarios_pagos_detalle_ibfk_2` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`),
  CONSTRAINT `provision_pagos_m_e_permisionarios_pagos_detalle_ibfk_3` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `provision_pagos_maniobras_extras_permisionarios_pagos_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_e_permisionarios_pagos_detalle_before_insert` BEFORE INSERT ON `provision_pagos_maniobras_extras_permisionarios_pagos_detalle`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_maniobras_extras_permisionarios') INTO vFolio;
      
      SELECT getserie('pagos_maniobras_extras_permisionarios') INTO vSerie;

      SET NEW.pago_maniobra_extra_permisionario = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

	IF (NEW.estatus = 'Pagado') THEN
    	SET NEW.estatus='Capturado';
    END IF;

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_m_e_permisionarios_pagos_detalle_after_update` AFTER UPDATE ON `provision_pagos_maniobras_extras_permisionarios_pagos_detalle`
 FOR EACH ROW BEGIN 

   DECLARE proveedor_deposito VARCHAR(50);
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;
   
IF (NEW.estatus = 'Pagado' and OLD.estatus = 'Capturado') THEN
  SELECT COALESCE(SUM(provision_pagos_maniobras_extras_permisionarios_pagos_detalle.importe)) INTO total_pagos
   FROM provision_pagos_maniobras_extras_permisionarios_pagos_detalle
   WHERE provision_pagos_maniobras_extras_permisionarios_pagos_detalle.provision_pagos_maniobras_extras_permisionarios_id = NEW.provision_pagos_maniobras_extras_permisionarios_id AND provision_pagos_maniobras_extras_permisionarios_pagos_detalle.estatus='Pagado';

  SELECT COALESCE(total_pagos, 0) INTO total_pagos ;

  UPDATE provision_pagos_maniobras_extras_permisionarios 
      SET provision_pagos_maniobras_extras_permisionarios.saldo = provision_pagos_maniobras_extras_permisionarios.total - total_pagos
      WHERE provision_pagos_maniobras_extras_permisionarios.id = COALESCE(NEW.provision_pagos_maniobras_extras_permisionarios_id, OLD.provision_pagos_maniobras_extras_permisionarios_id) ;
 
    END IF;
    
  IF (NEW.estatus = 'Pagado' AND OLD.estatus <> 'Pagado') THEN
    
    SELECT permisionarios.razon_social_permisionario INTO proveedor_deposito 
    FROM permisionarios
    LEFT JOIN provision_pagos_maniobras_extras_permisionarios ON provision_pagos_maniobras_extras_permisionarios.id=NEW.provision_pagos_maniobras_extras_permisionarios_id
    WHERE permisionarios.id = provision_pagos_maniobras_extras_permisionarios.permisionarios_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Pago Maniobra Extra Permisionario', proveedor_deposito, NEW.pago_maniobra_extra_permisionario, NEW.numero_autorizacion, 'Retiro', NULL, NEW.importe);
    
  END IF;
  
  IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Pagado') THEN
    
    SELECT permisionarios.razon_social_permisionario INTO proveedor_deposito 
    FROM permisionarios
    LEFT JOIN provision_pagos_maniobras_extras_permisionarios ON provision_pagos_maniobras_extras_permisionarios.id=NEW.provision_pagos_maniobras_extras_permisionarios_id
    WHERE permisionarios.id = provision_pagos_maniobras_extras_permisionarios.permisionarios_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Cancelacion Pago Maniobra Extra Permisionario', proveedor_deposito, NEW.pago_maniobra_extra_permisionario, NEW.numero_autorizacion, 'Deposito', NEW.importe, NULL);
    
  END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_operadores`
--

CREATE TABLE `provision_pagos_operadores` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pago_operador` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_programacion_pago` date DEFAULT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `fecha_inicio` date NOT NULL,
  `fecha_fin` date NOT NULL,
  `operadores_id` int(11) NOT NULL,
  `comentarios` varchar(250) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  `saldo` decimal(11,2) DEFAULT NULL,
  `fecha_vencimiento` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `operadores_id` (`operadores_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pago_operador` (`provision_pago_operador`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `moneda` (`moneda`),
  CONSTRAINT `provision_pagos_operadores_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `provision_pagos_operadores_ibfk_2` FOREIGN KEY (`operadores_id`) REFERENCES `operadores` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_operadores`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_before_insert` BEFORE INSERT ON `provision_pagos_operadores`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('compras_operadores') INTO vFolio;
      
      SELECT getserie('compras_operadores') INTO vSerie;

      SET NEW.provision_pago_operador = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_after_insert` AFTER INSERT ON `provision_pagos_operadores`
 FOR EACH ROW BEGIN

  INSERT INTO provision_pagos_operadores_detalle (provision_pagos_operadores_id, remisiones_id) (SELECT NEW.id, r.id FROM remisiones r WHERE r.operadores_id=NEW.operadores_id AND r.lq_estatus='Autorizada' AND r.provision_pagos_operadores_id IS NULL AND r.moneda=NEW.moneda);
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_before_update` BEFORE UPDATE ON `provision_pagos_operadores`
 FOR EACH ROW BEGIN
    
    IF (NEW.estatus = 'Autorizado' AND OLD.estatus <> 'Autorizado') THEN
      
      SET NEW.saldo = NEW.total;

    END IF;

    IF (NEW.saldo = 0 AND OLD.estatus = 'Autorizado') THEN
      SET NEW.estatus='Pagado';
      
      UPDATE remisiones r INNER JOIN provision_pagos_operadores_detalle d ON
  r.id = d.remisiones_id SET r.lq_estatus = 'Pagada'
    WHERE d.provision_pagos_operadores_id = NEW.id;
    
    END IF;
    
    IF (NEW.estatus = "Cancelado" AND OLD.estatus= "Pagado") THEN
          UPDATE remisiones r INNER JOIN provision_pagos_operadores_detalle d ON
  r.id = d.remisiones_id SET r.lq_estatus = 'Autorizada'
    WHERE d.provision_pagos_operadores_id = NEW.id;
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_after_update` AFTER UPDATE ON `provision_pagos_operadores`
 FOR EACH ROW BEGIN
  UPDATE remisiones r INNER JOIN provision_pagos_operadores_detalle d ON
  r.id = d.remisiones_id SET r.provision_pagos_operadores_id = NEW.id
    WHERE d.provision_pagos_operadores_id = NEW.id;
        
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_operadores_detalle`
--

CREATE TABLE `provision_pagos_operadores_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_operadores_id` int(11) DEFAULT NULL,
  `remisiones_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `remisiones_id` (`remisiones_id`) USING BTREE,
  KEY `provision_pagos_operadores_id` (`provision_pagos_operadores_id`) USING BTREE,
  CONSTRAINT `provision_pagos_operadores_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_operadores_id`) REFERENCES `provision_pagos_operadores` (`id`),
  CONSTRAINT `provision_pagos_operadores_detalle_ibfk_2` FOREIGN KEY (`remisiones_id`) REFERENCES `remisiones` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_operadores_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_detalle_after_update` AFTER UPDATE ON `provision_pagos_operadores_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones r 
  SET r.provision_pagos_operadores_id=NULL
    WHERE r.id=OLD.remisiones_id;
    
UPDATE remisiones r 
  SET r.provision_pagos_operadores_id=NEW.provision_pagos_operadores_id
    WHERE r.id=NEW.remisiones_id;
      
      
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_detalle_after_delete` AFTER DELETE ON `provision_pagos_operadores_detalle`
 FOR EACH ROW BEGIN 

UPDATE remisiones r 
  SET r.provision_pagos_operadores_id=NULL
    WHERE r.id=OLD.remisiones_id; 
      
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_operadores_pagos_detalle`
--

CREATE TABLE `provision_pagos_operadores_pagos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_operadores_id` int(11) DEFAULT NULL,
  `pago_operador` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `fecha_aplicacion` datetime NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `bancos_cuenta` varchar(50) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `forma_pago` varchar(50) NOT NULL,
  `saldo_provision_pago` decimal(11,2) DEFAULT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pagos_operadores_id` (`provision_pagos_operadores_id`) USING BTREE,
  KEY `pago_operador` (`pago_operador`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `forma_pago` (`forma_pago`),
  CONSTRAINT `provision_pagos_operadores_pagos_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_operadores_id`) REFERENCES `provision_pagos_operadores` (`id`),
  CONSTRAINT `provision_pagos_operadores_pagos_detalle_ibfk_2` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`),
  CONSTRAINT `provision_pagos_operadores_pagos_detalle_ibfk_3` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `provision_pagos_operadores_pagos_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_pagos_detalle_before_insert` BEFORE INSERT ON `provision_pagos_operadores_pagos_detalle`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_operadores') INTO vFolio;
      
      SELECT getserie('pagos_operadores') INTO vSerie;

      SET NEW.pago_operador = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

	IF (NEW.estatus = 'Pagado') THEN
    	SET NEW.estatus='Capturado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_pagos_detalle_after_update` AFTER UPDATE ON `provision_pagos_operadores_pagos_detalle`
 FOR EACH ROW BEGIN 

   DECLARE proveedor_deposito VARCHAR(100);
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;
   
IF (NEW.estatus = 'Pagado' and OLD.estatus = 'Capturado') THEN
  SELECT COALESCE(SUM(provision_pagos_operadores_pagos_detalle.importe)) INTO total_pagos
   FROM provision_pagos_operadores_pagos_detalle
   WHERE provision_pagos_operadores_pagos_detalle.provision_pagos_operadores_id = NEW.provision_pagos_operadores_id AND provision_pagos_operadores_pagos_detalle.estatus='Pagado';

  SELECT COALESCE(total_pagos, 0) INTO total_pagos ;

  UPDATE provision_pagos_operadores 
      SET provision_pagos_operadores.saldo = provision_pagos_operadores.total - total_pagos
      WHERE provision_pagos_operadores.id = COALESCE(NEW.provision_pagos_operadores_id, OLD.provision_pagos_operadores_id) ;
 
    END IF;
    
  IF (NEW.estatus = 'Pagado' AND OLD.estatus <> 'Pagado') THEN
    
    SELECT operadores.operador INTO proveedor_deposito 
    FROM operadores
    LEFT JOIN provision_pagos_operadores ON provision_pagos_operadores.id=NEW.provision_pagos_operadores_id
    WHERE operadores.id = provision_pagos_operadores.operadores_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Pago Operador', proveedor_deposito, NEW.pago_operador, NEW.numero_autorizacion, 'Retiro', NULL, NEW.importe);
    
  END IF;
  
  IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Pagado') THEN
    
    SELECT operadores.operador INTO proveedor_deposito 
    FROM operadores
    LEFT JOIN provision_pagos_operadores ON provision_pagos_operadores.id=NEW.provision_pagos_operadores_id
    WHERE operadores.id = provision_pagos_operadores.operadores_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Cancelacion Pago Operador', proveedor_deposito, NEW.pago_operador, NEW.numero_autorizacion, 'Deposito', NEW.importe, NULL);
    
  END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_operadores_paqueteria`
--

CREATE TABLE `provision_pagos_operadores_paqueteria` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pago_operador_paqueteria` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_programacion_pago` date DEFAULT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `fecha_inicio` date NOT NULL,
  `fecha_fin` date NOT NULL,
  `empleados_id` int(11) NOT NULL,
  `comentarios` varchar(250) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  `saldo` decimal(11,2) DEFAULT NULL,
  `fecha_vencimiento` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pago_operador_paqueteria` (`provision_pago_operador_paqueteria`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `moneda` (`moneda`),
  KEY `empleados_id` (`empleados_id`) USING BTREE,
  CONSTRAINT `provision_pagos_operadores_paqueteria_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `provision_pagos_operadores_paqueteria_ibfk_2` FOREIGN KEY (`empleados_id`) REFERENCES `empleados` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_operadores_paqueteria`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_paqueteria_before_insert` BEFORE INSERT ON `provision_pagos_operadores_paqueteria`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('compras_operadores_paqueteria') INTO vFolio;
      
      SELECT getserie('compras_operadores_paqueteria') INTO vSerie;

      SET NEW.provision_pago_operador_paqueteria = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_paqueteria_after_insert` AFTER INSERT ON `provision_pagos_operadores_paqueteria`
 FOR EACH ROW BEGIN

  INSERT INTO provision_pagos_operadores_paqueteria_detalle (provision_pagos_operadores_paqueteria_id, viajes_informes_id) (SELECT NEW.id, r.id FROM viajes_informes r WHERE r.empleados_id=NEW.empleados_id AND r.lq_estatus='Autorizada' AND r.provision_pagos_operadores_paqueteria_id IS NULL);
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_paqueteria_before_update` BEFORE UPDATE ON `provision_pagos_operadores_paqueteria`
 FOR EACH ROW BEGIN
    
    IF (NEW.estatus = 'Autorizado' AND OLD.estatus <> 'Autorizado') THEN
      
      SET NEW.saldo = NEW.total;

    END IF;

    IF (NEW.saldo = 0 AND OLD.estatus = 'Autorizado') THEN
      SET NEW.estatus='Pagado';
      UPDATE viajes_informes r INNER JOIN provision_pagos_operadores_paqueteria_detalle d ON
	r.id = d.viajes_informes_id SET r.lq_estatus = 'Pagada'
		WHERE d.provision_pagos_operadores_paqueteria_id = NEW.id;
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_paqueteria_after_update` AFTER UPDATE ON `provision_pagos_operadores_paqueteria`
 FOR EACH ROW BEGIN
  UPDATE viajes_informes r INNER JOIN provision_pagos_operadores_paqueteria_detalle d ON
  r.id = d.viajes_informes_id SET r.provision_pagos_operadores_paqueteria_id = NEW.id
    WHERE d.provision_pagos_operadores_paqueteria_id = NEW.id;
        
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_operadores_paqueteria_detalle`
--

CREATE TABLE `provision_pagos_operadores_paqueteria_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_operadores_paqueteria_id` int(11) DEFAULT NULL,
  `viajes_informes_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `viajes_informes_id` (`viajes_informes_id`) USING BTREE,
  KEY `provision_pagos_operadores_paqueteria_id` (`provision_pagos_operadores_paqueteria_id`) USING BTREE,
  CONSTRAINT `provision_pagos_operadores_paqueteria_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_operadores_paqueteria_id`) REFERENCES `provision_pagos_operadores_paqueteria` (`id`),
  CONSTRAINT `provision_pagos_operadores_paqueteria_detalle_ibfk_2` FOREIGN KEY (`viajes_informes_id`) REFERENCES `viajes_informes` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_operadores_paqueteria_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_paqueteria_detalle_after_update` AFTER UPDATE ON `provision_pagos_operadores_paqueteria_detalle`
 FOR EACH ROW BEGIN 

UPDATE viajes_informes r 
  SET r.provision_pagos_operadores_paqueteria_id=NULL
    WHERE r.id=OLD.viajes_informes_id;
    
UPDATE viajes_informes r 
  SET r.provision_pagos_operadores_paqueteria_id=NEW.provision_pagos_operadores_paqueteria_id
    WHERE r.id=NEW.viajes_informes_id;
      
      
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_paqueteria_detalle_after_delete` AFTER DELETE ON `provision_pagos_operadores_paqueteria_detalle`
 FOR EACH ROW BEGIN 

UPDATE viajes_informes r 
  SET r.provision_pagos_operadores_paqueteria_id=NULL
    WHERE r.id=OLD.viajes_informes_id; 
      
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_operadores_paqueteria_pagos_detalle`
--

CREATE TABLE `provision_pagos_operadores_paqueteria_pagos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_operadores_paqueteria_id` int(11) DEFAULT NULL,
  `pago_operador_paqueteria` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `fecha_aplicacion` datetime NOT NULL,
  `estatus` varchar(20) NOT NULL,
  `bancos_id` int(11) NOT NULL,
  `bancos_cuenta` varchar(50) NOT NULL,
  `numero_autorizacion` varchar(20) DEFAULT NULL COMMENT 'Autorizacion / Referencia',
  `forma_pago` varchar(50) NOT NULL,
  `saldo_provision_pago` decimal(11,2) DEFAULT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `bancos_id` (`bancos_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pagos_operadores_paqueteria_id` (`provision_pagos_operadores_paqueteria_id`) USING BTREE,
  KEY `pago_operador_paqueteria` (`pago_operador_paqueteria`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `forma_pago` (`forma_pago`),
  CONSTRAINT `provision_pagos_operadores_paqueteria_pagos_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_operadores_paqueteria_id`) REFERENCES `provision_pagos_operadores_paqueteria` (`id`),
  CONSTRAINT `provision_pagos_operadores_paqueteria_pagos_detalle_ibfk_2` FOREIGN KEY (`bancos_id`) REFERENCES `bancos` (`id`),
  CONSTRAINT `provision_pagos_operadores_paqueteria_pagos_detalle_ibfk_3` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `provision_pagos_operadores_paqueteria_pagos_detalle`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_paq_pagos_detalle_before_insert` BEFORE INSERT ON `provision_pagos_operadores_paqueteria_pagos_detalle`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('pagos_operadores_paqueteria') INTO vFolio;
      
      SELECT getserie('pagos_operadores_paqueteria') INTO vSerie;

      SET NEW.pago_operador_paqueteria = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

	IF (NEW.estatus = 'Pagado') THEN
    	SET NEW.estatus='Capturado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_operadores_paqueteria_pagos_detalle_after_update` AFTER UPDATE ON `provision_pagos_operadores_paqueteria_pagos_detalle`
 FOR EACH ROW BEGIN 

   DECLARE proveedor_deposito VARCHAR(100);
   DECLARE total_pagos DECIMAL(11,2) ;
   SET total_pagos = 0 ;
   
IF (NEW.estatus = 'Pagado' and OLD.estatus = 'Capturado') THEN
  SELECT COALESCE(SUM(provision_pagos_operadores_paqueteria_pagos_detalle.importe)) INTO total_pagos
   FROM provision_pagos_operadores_paqueteria_pagos_detalle
   WHERE provision_pagos_operadores_paqueteria_pagos_detalle.provision_pagos_operadores_paqueteria_id = NEW.provision_pagos_operadores_paqueteria_id AND provision_pagos_operadores_paqueteria_pagos_detalle.estatus='Pagado';

  SELECT COALESCE(total_pagos, 0) INTO total_pagos ;

  UPDATE provision_pagos_operadores_paqueteria 
      SET provision_pagos_operadores_paqueteria.saldo = provision_pagos_operadores_paqueteria.total - total_pagos
      WHERE provision_pagos_operadores_paqueteria.id = COALESCE(NEW.provision_pagos_operadores_paqueteria_id, OLD.provision_pagos_operadores_paqueteria_id) ;
 
    END IF;
   
  IF (NEW.estatus = 'Pagado' AND OLD.estatus <> 'Pagado') THEN
    
    SELECT empleados.empleado INTO proveedor_deposito 
    FROM empleados
    LEFT JOIN provision_pagos_operadores_paqueteria ON provision_pagos_operadores_paqueteria.id=NEW.provision_pagos_operadores_paqueteria_id
    WHERE empleados.id = provision_pagos_operadores_paqueteria.empleados_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Pago Operador Paqueteria', proveedor_deposito, NEW.pago_operador_paqueteria, NEW.numero_autorizacion, 'Retiro', NULL, NEW.importe);
    
  END IF;
  
  IF (NEW.estatus = 'Cancelado' AND OLD.estatus = 'Pagado') THEN
    
    SELECT empleados.empleado INTO proveedor_deposito 
    FROM empleados
    LEFT JOIN provision_pagos_operadores_paqueteria ON provision_pagos_operadores_paqueteria.id=NEW.provision_pagos_operadores_paqueteria_id
    WHERE empleados.id = provision_pagos_operadores_paqueteria.empleados_id;

	INSERT INTO bancos_saldos (fecha_hora, bancos_id, tipo_operacion, razon_social, folio, numero_autorizacion, movimiento, monto_deposito, monto_retiro)
	VALUES (NEW.fecha_aplicacion, NEW.bancos_id, 'Cancelacion Pago Operador Paqueteria', proveedor_deposito, NEW.pago_operador_paqueteria, NEW.numero_autorizacion, 'Deposito', NEW.importe, NULL);
    
  END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_ordenes_mantenimientos`
--

CREATE TABLE `provision_pagos_ordenes_mantenimientos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pago_orden_mantenimiento` varchar(20) DEFAULT NULL,
  `fecha_hora` timestamp NULL DEFAULT NULL,
  `moneda` varchar(20) NOT NULL,
  `tipo_cambio` decimal(11,2) NOT NULL,
  `fecha_programacion_pago` date DEFAULT NULL,
  `estatus` varchar(20) NOT NULL,
  `fecha_cancelacion` date DEFAULT NULL,
  `causas_cancelacion_id` int(11) DEFAULT NULL,
  `proveedores_id` int(11) NOT NULL,
  `proveedores_factura` varchar(50) DEFAULT NULL,
  `comentarios` varchar(250) DEFAULT NULL,
  `porc_iva` int(11) DEFAULT NULL,
  `subtotal` decimal(11,2) DEFAULT NULL,
  `iva` decimal(11,2) DEFAULT NULL,
  `total` decimal(11,2) DEFAULT NULL,
  `saldo` decimal(11,2) DEFAULT NULL,
  `fecha_vencimiento` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `proveedores_id` (`proveedores_id`),
  KEY `causas_cancelacion_id` (`causas_cancelacion_id`),
  KEY `provision_pago_orden_mantenimiento` (`provision_pago_orden_mantenimiento`),
  KEY `fecha_hora` (`fecha_hora`),
  KEY `estatus` (`estatus`),
  KEY `moneda` (`moneda`),
  KEY `proveedores_factura` (`proveedores_factura`),
  CONSTRAINT `provision_pagos_ordenes_mantenimientos_ibfk_1` FOREIGN KEY (`causas_cancelacion_id`) REFERENCES `causas_cancelacion` (`id`),
  CONSTRAINT `provision_pagos_ordenes_mantenimientos_ibfk_2` FOREIGN KEY (`proveedores_id`) REFERENCES `proveedores` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `provision_pagos_ordenes_mantenimientos`
--

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_ordenes_mantenimientos_before_insert` BEFORE INSERT ON `provision_pagos_ordenes_mantenimientos`
 FOR EACH ROW BEGIN

   DECLARE vFolio INT(11);
   DECLARE vSerie VARCHAR(3);

      SELECT nextval('provision_pagos') INTO vFolio;
      
      SELECT getserie('provision_pagos') INTO vSerie;

      SET NEW.provision_pago_orden_mantenimiento = CONCAT(vSerie,vFolio);

      SET NEW.fecha_hora = SYSDATE();

END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_ordenes_mantenimientos_after_insert` AFTER INSERT ON `provision_pagos_ordenes_mantenimientos`
 FOR EACH ROW BEGIN

  INSERT INTO provision_pagos_ordenes_mantenimientos_detalle (provision_pagos_ordenes_mantenimientos_id, ordenes_mantenimientos_id, importe) (SELECT NEW.id, r.id, r.total FROM ordenes_mantenimientos r WHERE r.proveedores_id=NEW.proveedores_id AND r.estatus='Terminado' AND r.provision_pagos_ordenes_mantenimientos_id IS NULL);
    
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_ordenes_mantenimientos_before_update` BEFORE UPDATE ON `provision_pagos_ordenes_mantenimientos`
 FOR EACH ROW BEGIN

  DECLARE dias INT(11);
    
    IF (NEW.estatus = 'Autorizado' AND OLD.estatus <> 'Autorizado') THEN
      SELECT COALESCE(s.dias_credito,0) FROM proveedores s WHERE s.id=NEW.proveedores_id INTO dias;
        IF (NEW.fecha_programacion_pago IS NOT NULL) THEN
        	SET NEW.fecha_vencimiento = DATE_ADD(NEW.fecha_programacion_pago, INTERVAL dias DAY);
        ELSE
        	SET NEW.fecha_vencimiento = DATE_ADD(CURDATE(), INTERVAL dias DAY);
        END IF;
      SET NEW.saldo = NEW.total;
    END IF;

    IF (NEW.saldo = 0 AND OLD.estatus = 'Autorizado') THEN
      SET NEW.estatus='Pagado';
    END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `provision_pagos_ordenes_mantenimientos_after_update` AFTER UPDATE ON `provision_pagos_ordenes_mantenimientos`
 FOR EACH ROW BEGIN
  UPDATE ordenes_mantenimientos r INNER JOIN provision_pagos_ordenes_mantenimientos_detalle d ON
  r.id = d.ordenes_mantenimientos_id SET r.provision_pagos_ordenes_mantenimientos_id = NEW.id
    WHERE d.provision_pagos_ordenes_mantenimientos_id = NEW.id;
        
END */;;
DELIMITER ;

--
-- Table structure for table `provision_pagos_ordenes_mantenimientos_detalle`
--

CREATE TABLE `provision_pagos_ordenes_mantenimientos_detalle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provision_pagos_ordenes_mantenimientos_id` int(11) DEFAULT NULL,
  `ordenes_mantenimientos_id` int(11) NOT NULL,
  `importe` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `ordenes_mantenimientos_id` (`ordenes_mantenimientos_id`) USING BTREE,
  KEY `provision_pagos_ordenes_mantenimientos_id` (`provision_pagos_ordenes_mantenimientos_id`) USING BTREE,
  CONSTRAINT `provision_pagos_ordenes_mantenimientos_detalle_ibfk_1` FOREIGN KEY (`provision_pagos_ordenes_mantenimientos_id`) REFERENCES `provision_pagos_ordenes_mantenimientos` (`id`),
  CONSTRAINT `provision_pagos_ordenes_mantenimientos_detalle_ibfk_2` FOREIGN KEY (`ordenes_mantenimientos_id`) REFERENCES `ordenes_mantenimientos` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
