CREATE DATABASE IF NOT EXISTS `vn` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; USE `vn`; -- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64) -- -- Host: db.verdnatura.es Database: vn -- ------------------------------------------------------ -- Server version 5.6.25-4-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `accountingType` -- DROP TABLE IF EXISTS `accountingType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `accountingType` ( `id` smallint(6) NOT NULL DEFAULT '0', `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='descripcio dels valors de la columna "cash" de la taula vn2008.Bancios'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `activityTaxDismissed` -- DROP TABLE IF EXISTS `activityTaxDismissed`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `activityTaxDismissed` ( `clientFk` int(11) NOT NULL, `isNotified` tinyint(1) DEFAULT '0', `isDismissed` tinyint(1) DEFAULT '0', `notified` int(11) DEFAULT '0', PRIMARY KEY (`clientFk`), CONSTRAINT `clientFk` FOREIGN KEY (`clientFk`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `addressForPackaging` -- DROP TABLE IF EXISTS `addressForPackaging`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `addressForPackaging` ( `addressFk` int(11) NOT NULL, `packagingValue` decimal(10,2) NOT NULL DEFAULT '0.04', PRIMARY KEY (`addressFk`), CONSTRAINT `addresForPackaging_fk1` FOREIGN KEY (`addressFk`) REFERENCES `vn2008`.`Consignatarios` (`id_consigna`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `autonomousRegion` -- DROP TABLE IF EXISTS `autonomousRegion`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `autonomousRegion` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) CHARACTER SET utf8 NOT NULL, `geoFk` int(11) DEFAULT NULL, `countryFk` mediumint(8) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `countryFk` (`countryFk`), CONSTRAINT `countryFk` FOREIGN KEY (`countryFk`) REFERENCES `vn2008`.`Paises` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `bookingPlanner` -- DROP TABLE IF EXISTS `bookingPlanner`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `bookingPlanner` ( `id` int(10) NOT NULL AUTO_INCREMENT, `effectived` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `pgcFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `taxAreaFk` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'SPAIN', `priority` int(2) unsigned DEFAULT NULL, `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT '1', `countryFk` mediumint(8) unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `taxArea_bookingPlanner_idx` (`taxAreaFk`), KEY `pgcFk_bookingPlanner_idx` (`pgcFk`), KEY `taxClassFk` (`taxClassFk`), KEY `countryFk` (`countryFk`), CONSTRAINT `bookingPlanner_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON DELETE CASCADE, CONSTRAINT `bookingPlanner_ibfk_2` FOREIGN KEY (`taxClassFk`) REFERENCES `vn2008`.`iva_group` (`iva_group_id`) ON DELETE CASCADE, CONSTRAINT `bookingPlanner_ibfk_3` FOREIGN KEY (`countryFk`) REFERENCES `vn2008`.`Paises` (`Id`) ON DELETE CASCADE, CONSTRAINT `taxArea_bookingPlanner` FOREIGN KEY (`taxAreaFk`) REFERENCES `taxArea` (`code`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=81 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `calendarHolidays` -- DROP TABLE IF EXISTS `calendarHolidays`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `calendarHolidays` ( `calendarHolidaysTypeFk` int(11) NOT NULL, `dated` date NOT NULL, `calendarHolidaysNameFk` int(11) DEFAULT NULL, `workCenterFk` int(11) NOT NULL, PRIMARY KEY (`dated`,`workCenterFk`), KEY `calendarholidaystypeFk_idx` (`calendarHolidaysTypeFk`), KEY `calendarHolidaysNameFk_idx` (`calendarHolidaysNameFk`), KEY `workCenterFk_idx` (`workCenterFk`), CONSTRAINT `calendarHolidaysNameFk` FOREIGN KEY (`calendarHolidaysNameFk`) REFERENCES `calendarHolidaysName` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `calendarholidaystypeFk` FOREIGN KEY (`calendarHolidaysTypeFk`) REFERENCES `calendarHolidaysType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `workCenterFk` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `calendarHolidaysName` -- DROP TABLE IF EXISTS `calendarHolidaysName`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `calendarHolidaysName` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `calendarHolidaysType` -- DROP TABLE IF EXISTS `calendarHolidaysType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `calendarHolidaysType` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `hexColour` char(7) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `category` -- DROP TABLE IF EXISTS `category`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, `nick` varchar(3) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `clientCreditLimit` -- DROP TABLE IF EXISTS `clientCreditLimit`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `clientCreditLimit` ( `id` int(11) NOT NULL, `maxAmount` int(10) unsigned NOT NULL, `roleFk` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `clientLog` -- DROP TABLE IF EXISTS `clientLog`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `clientLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned NOT NULL, `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `description` text COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `originFk` (`originFk`), KEY `userFk` (`userFk`), CONSTRAINT `clientLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `clientLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB AUTO_INCREMENT=15099 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `confectionType` -- DROP TABLE IF EXISTS `confectionType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `confectionType` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `config` -- DROP TABLE IF EXISTS `config`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `config` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `mdbServer` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `fakeEmail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `defaultersMaxAmount` int(10) DEFAULT '200' COMMENT 'maxima deuda permitida a partir de la cual se bloquea a un usuario', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `cplusCorrectingType` -- DROP TABLE IF EXISTS `cplusCorrectingType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusCorrectingType` ( `id` int(11) NOT NULL AUTO_INCREMENT, `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `cplusInvoiceType472` -- DROP TABLE IF EXISTS `cplusInvoiceType472`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusInvoiceType472` ( `id` int(10) unsigned NOT NULL, `description` varchar(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*18) TIPO FACTURA (Asientos)SOPORTADO – DEDUCIBLE (472)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `cplusInvoiceType477` -- DROP TABLE IF EXISTS `cplusInvoiceType477`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusInvoiceType477` ( `id` int(10) unsigned NOT NULL, `description` varchar(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*18) TIPO FACTURA (Asientos)REPERCUTIDO - DEVENGADO (477)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `cplusRectificationType` -- DROP TABLE IF EXISTS `cplusRectificationType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusRectificationType` ( `id` int(10) unsigned NOT NULL, `description` varchar(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*20) TIPO RECTIFICATIVA (Asientos)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `cplusSubjectOp` -- DROP TABLE IF EXISTS `cplusSubjectOp`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusSubjectOp` ( `id` int(10) unsigned NOT NULL, `description` varchar(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*17) TIPO OPERACIÓN SUJETA/NO SUJETA (Asientos)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `cplusTaxBreak` -- DROP TABLE IF EXISTS `cplusTaxBreak`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusTaxBreak` ( `id` int(10) unsigned NOT NULL, `description` varchar(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*16) TIPO EXENCIÓN (Asientos)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `cplusTerIdNif` -- DROP TABLE IF EXISTS `cplusTerIdNif`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusTerIdNif` ( `id` int(11) NOT NULL, `description` varchar(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `cplusTrascendency472` -- DROP TABLE IF EXISTS `cplusTrascendency472`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusTrascendency472` ( `id` int(10) unsigned NOT NULL, `description` varchar(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*15) CLAVE DE RÉGIMEN ESPECIAL O TRASCENDENCIA(Asientos)SOPORTADO – DEDUCIBLE (472)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `cplusTrascendency477` -- DROP TABLE IF EXISTS `cplusTrascendency477`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusTrascendency477` ( `id` int(10) unsigned NOT NULL, `description` varchar(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*15) CLAVE DE RÉGIMEN ESPECIAL O TRASCENDENCIA(Asientos) REPERCUTIDO - DEVENGADO (477)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `creditClassification` -- DROP TABLE IF EXISTS `creditClassification`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `creditClassification` ( `id` int(11) NOT NULL AUTO_INCREMENT, `client` int(11) NOT NULL, `dateStart` date NOT NULL, `dateEnd` date DEFAULT NULL, PRIMARY KEY (`id`), KEY `creditClassifClientFk_idx` (`client`), KEY `creditClassifdateEnd_idx` (`dateEnd`), CONSTRAINT `creditClassifClientFk` FOREIGN KEY (`client`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=2626 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`creditClassification_BEFORE_UPDATE` BEFORE UPDATE ON `creditClassification` FOR EACH ROW BEGIN IF NEW.client <> OLD.client THEN CALL util.throw('NOT_ALLOWED_CHANGE_CLIENT'); END IF; IF NEW.dateEnd IS NOT NULL AND OLD.dateEnd IS NULL THEN UPDATE vn2008.Clientes c SET creditInsurance = 0 WHERE c.Id_cliente = NEW.client; END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Table structure for table `creditInsurance` -- DROP TABLE IF EXISTS `creditInsurance`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `creditInsurance` ( `id` int(11) NOT NULL AUTO_INCREMENT, `creditClassification` int(11) DEFAULT NULL, `credit` int(11) DEFAULT NULL, `creationDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `grade` tinyint(1) DEFAULT NULL, PRIMARY KEY (`id`), KEY `CreditInsurance_Fk1_idx` (`creditClassification`), CONSTRAINT `CreditInsurance_Fk1` FOREIGN KEY (`creditClassification`) REFERENCES `creditClassification` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=1679 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalla los clientes que tienen seguro de credito'; /*!40101 SET character_set_client = @saved_cs_client */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`creditInsurance_AFTER_INSERT` AFTER INSERT ON `creditInsurance` FOR EACH ROW BEGIN UPDATE vn2008.Clientes c JOIN vn.creditClassification cc ON cc.client = c.Id_Cliente SET creditInsurance = NEW.credit WHERE cc.id = NEW.creditClassification; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Table structure for table `dailyTaskLog` -- DROP TABLE IF EXISTS `dailyTaskLog`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `dailyTaskLog` ( `state` varchar(250) COLLATE utf8_unicode_ci NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `deliveryError` -- DROP TABLE IF EXISTS `deliveryError`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `deliveryError` ( `ticket` int(11) NOT NULL, `description` varchar(255) CHARACTER SET latin1 NOT NULL, `worker` int(11) NOT NULL, `creation_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY `errorTickets_idx` (`ticket`), KEY `errorWorker_idx` (`worker`), CONSTRAINT `errorTickets` FOREIGN KEY (`ticket`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `errorWorker` FOREIGN KEY (`worker`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `entryLog` -- DROP TABLE IF EXISTS `entryLog`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `entryLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned NOT NULL, `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `description` text COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `userFk` (`userFk`), KEY `logEntry_ibfk_1` (`originFk`), CONSTRAINT `entryLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Entradas` (`Id_Entrada`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `entryLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB AUTO_INCREMENT=24376 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `excuse` -- DROP TABLE IF EXISTS `excuse`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `excuse` ( `id` int(11) NOT NULL AUTO_INCREMENT, `txt` varchar(255) CHARACTER SET latin1 NOT NULL, `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `gateArea` -- DROP TABLE IF EXISTS `gateArea`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `gateArea` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `inkI18n` -- DROP TABLE IF EXISTS `inkI18n`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `inkI18n` ( `inkFk` char(3) COLLATE utf8_unicode_ci NOT NULL, `lang` char(2) CHARACTER SET utf8 NOT NULL, `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`inkFk`,`lang`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `invoiceCorrectionType` -- DROP TABLE IF EXISTS `invoiceCorrectionType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceCorrectionType` ( `id` int(11) NOT NULL AUTO_INCREMENT, `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `description_UNIQUE` (`description`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `invoiceInSerial` -- DROP TABLE IF EXISTS `invoiceInSerial`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceInSerial` ( `code` varchar(2) COLLATE utf8_unicode_ci NOT NULL, `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `cplusTerIdNifFk` int(11) NOT NULL DEFAULT '1', `taxAreaFk` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`code`), KEY `InvoiceInSerial_Fk1_idx` (`cplusTerIdNifFk`), KEY `InvoiceInSerial_Fk1_idx1` (`taxAreaFk`), CONSTRAINT `InvoiceInSerial_Fk1` FOREIGN KEY (`cplusTerIdNifFk`) REFERENCES `cplusTerIdNif` (`id`), CONSTRAINT `InvoiceInSerial_Fk2` FOREIGN KEY (`taxAreaFk`) REFERENCES `taxArea` (`code`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `invoiceOutExpence` -- DROP TABLE IF EXISTS `invoiceOutExpence`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceOutExpence` ( `id` int(11) NOT NULL AUTO_INCREMENT, `invoiceOutFk` int(10) unsigned NOT NULL, `amount` decimal(10,2) NOT NULL DEFAULT '0.00', `expenceFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `invoiceOutExpence_restriccion` (`expenceFk`,`invoiceOutFk`), KEY `invoiceOutExpence_FK_1_idx` (`invoiceOutFk`), KEY `invoiceOutExpence_FK_2_idx` (`expenceFk`), CONSTRAINT `invoiceOutExpence_FK_1` FOREIGN KEY (`invoiceOutFk`) REFERENCES `vn2008`.`Facturas` (`factura_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `invoiceOutExpence_FK_2` FOREIGN KEY (`expenceFk`) REFERENCES `vn2008`.`Gastos` (`Id_Gasto`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=45362 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Desglosa la base imponible de una factura en funcion del tipo de gasto/venta'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `invoiceOutSerial` -- DROP TABLE IF EXISTS `invoiceOutSerial`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceOutSerial` ( `code` varchar(2) COLLATE utf8_unicode_ci NOT NULL, `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `isTaxed` tinyint(1) NOT NULL DEFAULT '1', `taxAreaFk` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'NATIONAL', `isCEE` tinyint(1) NOT NULL DEFAULT '0', `cplusInvoiceType477Fk` int(10) unsigned DEFAULT '1', PRIMARY KEY (`code`), KEY `taxAreaFk_idx` (`taxAreaFk`), CONSTRAINT `invoiceOutSerial_ibfk_1` FOREIGN KEY (`taxAreaFk`) REFERENCES `taxArea` (`code`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `invoiceOutTax` -- DROP TABLE IF EXISTS `invoiceOutTax`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceOutTax` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `invoiceOutFk` int(10) unsigned NOT NULL, `taxableBase` decimal(10,2) NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `vat` decimal(10,2) NOT NULL DEFAULT '0.00', `pgcFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0000000000', PRIMARY KEY (`id`), UNIQUE KEY `invoiceOutTax_Resctriccion` (`invoiceOutFk`,`pgcFk`), KEY `invoiceOutFk_idx` (`invoiceOutFk`), KEY `pgcFk` (`pgcFk`), CONSTRAINT `invoiceOutFk` FOREIGN KEY (`invoiceOutFk`) REFERENCES `vn2008`.`Facturas` (`factura_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `invoiceOutTax_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=855453 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `itemCategoryI18n` -- DROP TABLE IF EXISTS `itemCategoryI18n`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemCategoryI18n` ( `categoryFk` int(10) unsigned NOT NULL, `lang` char(2) CHARACTER SET utf8 NOT NULL, `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`categoryFk`,`lang`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `itemConversor` -- DROP TABLE IF EXISTS `itemConversor`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemConversor` ( `espItemFk` int(11) NOT NULL, `genItemFk` int(11) DEFAULT NULL, PRIMARY KEY (`espItemFk`), KEY `itemConversor_fk2_idx` (`genItemFk`), CONSTRAINT `itemConversor_fk1` FOREIGN KEY (`espItemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemConversor_fk2` FOREIGN KEY (`genItemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relaciona los item específicos con los genéricos'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `itemTag` -- DROP TABLE IF EXISTS `itemTag`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemTag` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemFk` int(11) NOT NULL, `tagFk` int(11) NOT NULL, `value` varchar(20) COLLATE utf8_unicode_ci NOT NULL, `priority` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `priorityItem` (`itemFk`,`priority`), KEY `tagFk` (`tagFk`,`value`), CONSTRAINT `itemFK` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=14178 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `itemTagArranged` -- DROP TABLE IF EXISTS `itemTagArranged`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemTagArranged` ( `itemFk` int(11) NOT NULL, `tag1` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `val1` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `tag2` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `val2` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `tag3` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `val3` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `tag4` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `val4` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `tag5` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `val5` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `tag6` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `val6` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`itemFk`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Cache de columnas de características de artículo'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `itemTaxCountry` -- DROP TABLE IF EXISTS `itemTaxCountry`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemTaxCountry` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemFk` int(11) DEFAULT NULL, `countryFk` mediumint(8) unsigned DEFAULT NULL, `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT '1', `effectived` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `taxClassFK_idx` (`taxClassFk`), KEY `countryFK_paises_idx` (`countryFk`), KEY `itemFK_Article_idx` (`itemFk`), CONSTRAINT `countryFK_paises` FOREIGN KEY (`countryFk`) REFERENCES `vn2008`.`Paises` (`Id`) ON UPDATE CASCADE, CONSTRAINT `itemFK_Article` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `taxClassFK_Iva_Group` FOREIGN KEY (`taxClassFk`) REFERENCES `vn2008`.`iva_group` (`iva_group_id`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=437545 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Define la clase de iva por artículo y pais'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `itemTypeI18n` -- DROP TABLE IF EXISTS `itemTypeI18n`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemTypeI18n` ( `typeFk` smallint(5) unsigned NOT NULL, `lang` char(2) CHARACTER SET utf8 NOT NULL, `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`typeFk`,`lang`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `itemVerdecora` -- DROP TABLE IF EXISTS `itemVerdecora`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemVerdecora` ( `itemFk` int(11) NOT NULL, `codin` int(11) DEFAULT NULL, PRIMARY KEY (`itemFk`), CONSTRAINT `itemVerdecora_fk1` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relaciona nuestros articulos con los de Verdecora'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `mailTemplates` -- DROP TABLE IF EXISTS `mailTemplates`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mailTemplates` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) CHARACTER SET utf8 NOT NULL, `attachmentPath` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `manuscript` -- DROP TABLE IF EXISTS `manuscript`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `manuscript` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(45) CHARACTER SET utf8 NOT NULL, `description` text COLLATE utf8_unicode_ci, `enabled` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `code_UNIQUE` (`code`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `message` -- DROP TABLE IF EXISTS `message`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `message` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uuid` varchar(50) CHARACTER SET utf8 NOT NULL, `sender` varchar(50) CHARACTER SET utf8 NOT NULL, `recipient` varchar(50) CHARACTER SET utf8 NOT NULL, `message` longtext CHARACTER SET utf8, `sendDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `sender` (`sender`), KEY `recipient` (`recipient`), KEY `uuid` (`uuid`(8)) ) ENGINE=InnoDB AUTO_INCREMENT=1338730 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `messageInbox` -- DROP TABLE IF EXISTS `messageInbox`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `messageInbox` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uuid` varchar(50) CHARACTER SET utf8 NOT NULL, `sender` varchar(50) CHARACTER SET utf8 NOT NULL, `recipient` varchar(45) CHARACTER SET utf8 NOT NULL, `finalRecipient` varchar(50) CHARACTER SET utf8 NOT NULL, `message` longtext CHARACTER SET utf8, `sendDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `read` varchar(45) CHARACTER SET utf8 NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `uuid` (`uuid`(8)), KEY `finalRecipient` (`finalRecipient`) ) ENGINE=InnoDB AUTO_INCREMENT=1482237 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `noticeCategory` -- DROP TABLE IF EXISTS `noticeCategory`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `noticeCategory` ( `id` int(11) NOT NULL AUTO_INCREMENT, `keyName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `subject` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, `description` text COLLATE utf8_unicode_ci, `isEnabled` tinyint(1) NOT NULL DEFAULT '1', `requiredRole` int(11) NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `keyName_UNIQUE` (`keyName`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `noticeSubscription` -- DROP TABLE IF EXISTS `noticeSubscription`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `noticeSubscription` ( `noticeCategoryFk` int(11) NOT NULL DEFAULT '0', `userFk` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`noticeCategoryFk`,`userFk`), KEY `noticeSubscription_ibfk_2` (`userFk`), CONSTRAINT `noticeSubscription_ibfk_1` FOREIGN KEY (`noticeCategoryFk`) REFERENCES `noticeCategory` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `noticeSubscription_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `originI18n` -- DROP TABLE IF EXISTS `originI18n`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `originI18n` ( `originFk` tinyint(2) unsigned NOT NULL, `lang` char(2) CHARACTER SET utf8 NOT NULL, `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`originFk`,`lang`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `outgoingInvoiceVat` -- DROP TABLE IF EXISTS `outgoingInvoiceVat`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `outgoingInvoiceVat` ( `outgoingInvoice` mediumint(8) NOT NULL, `taxBase` decimal(12,2) DEFAULT NULL, `equalizationTax` decimal(12,2) DEFAULT NULL, `Vat` decimal(12,2) DEFAULT NULL, PRIMARY KEY (`outgoingInvoice`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `packageEquivalent` -- DROP TABLE IF EXISTS `packageEquivalent`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `packageEquivalent` ( `packageFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `equivalentFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`packageFk`,`equivalentFk`), KEY `packageEquivalent_fk2_idx` (`equivalentFk`), CONSTRAINT `packageEquivalent_fk1` FOREIGN KEY (`packageFk`) REFERENCES `vn2008`.`Cubos` (`Id_Cubo`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `packageEquivalent_fk2` FOREIGN KEY (`equivalentFk`) REFERENCES `vn2008`.`Cubos` (`Id_Cubo`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='recoge los modelos de cubos que se han de sustituir a efectos de presentar informes resumidos'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `person` -- DROP TABLE IF EXISTS `person`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `person` ( `id` int(11) NOT NULL AUTO_INCREMENT, `firstname` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `surnames` varchar(60) COLLATE utf8_unicode_ci NOT NULL, `fi` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, `birth` date DEFAULT NULL, `readerId` int(11) DEFAULT NULL, `workerFk` int(11) DEFAULT NULL, `isDisable` tinyint(1) NOT NULL DEFAULT '0', `isFreelance` tinyint(1) NOT NULL DEFAULT '0', `isSsDiscounted` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `nif` (`fi`), KEY `nifIndex` (`fi`), KEY `workerFk_idx` (`workerFk`) ) ENGINE=InnoDB AUTO_INCREMENT=818 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `pgc` -- DROP TABLE IF EXISTS `pgc`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `pgc` ( `code` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `rate` decimal(10,2) NOT NULL, `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `cplusTaxBreakFk` int(10) unsigned DEFAULT '1', `mod340` tinyint(1) NOT NULL DEFAULT '0', `mod347` tinyint(1) NOT NULL DEFAULT '0', `cplusTrascendency477Fk` int(10) unsigned DEFAULT '1', PRIMARY KEY (`code`), KEY `pgc_fk1_idx` (`cplusTaxBreakFk`), KEY `pgc_fk2_idx` (`cplusTrascendency477Fk`), CONSTRAINT `pgc_fk1` FOREIGN KEY (`cplusTaxBreakFk`) REFERENCES `cplusTaxBreak` (`id`) ON UPDATE CASCADE, CONSTRAINT `pgc_fk2` FOREIGN KEY (`cplusTrascendency477Fk`) REFERENCES `cplusTrascendency477` (`id`) ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Plan General Contable'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `pgcEqu` -- DROP TABLE IF EXISTS `pgcEqu`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `pgcEqu` ( `vatFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Cuenta de IVA', `equFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Cuenta de recargo de equivalencia', PRIMARY KEY (`vatFk`,`equFk`), KEY `pgcEqu_fk2_idx` (`equFk`), CONSTRAINT `pgcEqu_fk1` FOREIGN KEY (`vatFk`) REFERENCES `pgc` (`code`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `pgcEqu_fk2` FOREIGN KEY (`equFk`) REFERENCES `pgc` (`code`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Recoge las cuentas contables con recargo de equivalencia e identifica a la que corresponde al iva y la que corresponde al recargo'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `postCode` -- DROP TABLE IF EXISTS `postCode`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `postCode` ( `code` varchar(10) CHARACTER SET latin1 NOT NULL, `townFk` int(11) NOT NULL, `geoFk` int(11) DEFAULT NULL, PRIMARY KEY (`code`), KEY `postCode_ix1` (`townFk`), KEY `postCode_ix2` (`geoFk`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `profile` -- DROP TABLE IF EXISTS `profile`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `profile` ( `id` int(11) NOT NULL AUTO_INCREMENT, `personFk` int(11) DEFAULT NULL, `profileTypeFk` int(11) NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `personFk` (`personFk`), KEY `profileTypeFk` (`profileTypeFk`), CONSTRAINT `profile_ibfk_1` FOREIGN KEY (`personFk`) REFERENCES `person` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `profile_ibfk_2` FOREIGN KEY (`profileTypeFk`) REFERENCES `profileType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=697 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `profileType` -- DROP TABLE IF EXISTS `profileType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `profileType` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(15) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `routeGate` -- DROP TABLE IF EXISTS `routeGate`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `routeGate` ( `deviceId` varchar(30) CHARACTER SET utf8 NOT NULL, `displayText` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `status` set('idle','doing','done','') CHARACTER SET utf8 DEFAULT 'idle', `gateAreaFk` int(11) NOT NULL DEFAULT '1', `routeFk` int(11) DEFAULT NULL, `freeTickets` int(11) DEFAULT NULL, `expeditions` int(11) DEFAULT NULL, `scanned` int(11) DEFAULT NULL, `flag` blob, `pallets` int(11) DEFAULT NULL, `lastScanned` datetime DEFAULT NULL, PRIMARY KEY (`deviceId`), UNIQUE KEY `routeFk_UNIQUE` (`routeFk`), KEY `routeGate_fk1_idx` (`gateAreaFk`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`routeGateBeforeUpdate` BEFORE UPDATE ON `routeGate` FOR EACH ROW BEGIN IF (NOT (NEW.expeditions <=> OLD.expeditions) OR NOT (NEW.scanned <=> OLD.scanned)) AND NEW.status <=> OLD.status THEN IF NEW.expeditions = 0 THEN SET NEW.status = 'idle'; ELSEIF NEW.expeditions = NEW.scanned THEN SET NEW.status = 'done'; ELSE SET NEW.status = 'doing'; END IF; END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Table structure for table `routeLog` -- DROP TABLE IF EXISTS `routeLog`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `routeLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned NOT NULL, `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `description` text COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=327138 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `sms` -- DROP TABLE IF EXISTS `sms`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sms` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `senderFk` int(11) NOT NULL, `destinationFk` int(11) DEFAULT NULL, `sender` varchar(15) CHARACTER SET utf8 NOT NULL DEFAULT '693474205', `destination` varchar(15) CHARACTER SET utf8 NOT NULL, `message` varchar(160) COLLATE utf8_unicode_ci NOT NULL, `statusCode` smallint(9) NOT NULL DEFAULT '0', `status` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=87324 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `smsConfig` -- DROP TABLE IF EXISTS `smsConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `smsConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `uri` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `user` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `password` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `title` varchar(50) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='SMS configuration parameters'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `solunionCAP` -- DROP TABLE IF EXISTS `solunionCAP`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `solunionCAP` ( `creditInsurance` int(11) NOT NULL, `dateStart` date NOT NULL, `dateEnd` date NOT NULL, `dateLeaving` date DEFAULT NULL, PRIMARY KEY (`creditInsurance`,`dateStart`), KEY `solunionCAPdateLeavingIdx` (`dateLeaving`), CONSTRAINT `solunionCAP` FOREIGN KEY (`creditInsurance`) REFERENCES `creditInsurance` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`solunionCAP_AFTER_INSERT` AFTER INSERT ON `solunionCAP` FOR EACH ROW BEGIN UPDATE vn2008.Clientes c JOIN creditClassification cc ON c.Id_Cliente = cc.client JOIN creditInsurance ci ON ci.creditClassification = cc.id SET creditInsurance = ci.credit * 2 WHERE ci.id = NEW.creditInsurance; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`solunionCAP_AFTER_UPDATE` AFTER UPDATE ON `solunionCAP` FOR EACH ROW BEGIN IF NEW.dateLeaving IS NOT NULL THEN UPDATE vn2008.Clientes c JOIN creditClassification cc ON c.Id_Cliente = cc.client JOIN creditInsurance ci ON ci.creditClassification = cc.id SET creditInsurance = ci.credit WHERE ci.id = OLD.creditInsurance; ELSE UPDATE vn2008.Clientes c JOIN creditClassification cc ON c.Id_Cliente = cc.client JOIN creditInsurance ci ON ci.creditClassification = cc.id SET creditInsurance = ci.credit * 2 WHERE ci.id = OLD.creditInsurance; END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`solunionCAP_BEFORE_DELETE` BEFORE DELETE ON `solunionCAP` FOR EACH ROW BEGIN UPDATE vn2008.Clientes c JOIN creditClassification cc ON c.Id_Cliente = cc.client JOIN creditInsurance ci ON ci.creditClassification = cc.id SET creditInsurance = ci.credit WHERE ci.id = OLD.creditInsurance; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Table structure for table `stockBuyed` -- DROP TABLE IF EXISTS `stockBuyed`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `stockBuyed` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user` int(10) unsigned DEFAULT NULL, `buyed` decimal(10,2) DEFAULT NULL, `date` date DEFAULT NULL, `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `reserved` decimal(10,2) DEFAULT NULL, `requested` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `date_UNIQUE` (`date`,`user`), KEY `stockBuyed_user_idx` (`user`), CONSTRAINT `stockBuyedUserFk` FOREIGN KEY (`user`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=222154 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `tag` -- DROP TABLE IF EXISTS `tag`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tag` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(25) CHARACTER SET utf8 NOT NULL, `free` tinyint(1) NOT NULL DEFAULT '1', `isQuantitatif` tinyint(4) NOT NULL DEFAULT '1', `sourceTable` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `unit` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Categorias para etiquetar los productos'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `tagI18n` -- DROP TABLE IF EXISTS `tagI18n`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tagI18n` ( `tagFk` int(10) unsigned NOT NULL, `lang` char(2) CHARACTER SET utf8 NOT NULL, `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`tagFk`,`lang`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `taxArea` -- DROP TABLE IF EXISTS `taxArea`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `taxArea` ( `code` varchar(15) COLLATE utf8_unicode_ci NOT NULL, `ClaveOperacionFactura` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, `CodigoTransaccion` int(2) DEFAULT NULL, PRIMARY KEY (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `ticketLog` -- DROP TABLE IF EXISTS `ticketLog`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned NOT NULL, `action` set('insert','update','delete','select') COLLATE utf8_unicode_ci NOT NULL, `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `description` text COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `logTicketoriginFk` (`originFk`), KEY `logTicketuserFk` (`userFk`), CONSTRAINT `ticketLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=265299 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `ticketPackage` -- DROP TABLE IF EXISTS `ticketPackage`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketPackage` ( `ticket` int(11) NOT NULL, `counter` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`ticket`), CONSTRAINT `ticketPackage_ticketFk` FOREIGN KEY (`ticket`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `ticketPackaging` -- DROP TABLE IF EXISTS `ticketPackaging`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketPackaging` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ticketFk` int(11) NOT NULL, `packagingFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `quantity` int(10) DEFAULT '0', `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `pvp` double DEFAULT NULL, PRIMARY KEY (`id`), KEY `ticketPackaging_fk1_idx` (`ticketFk`), KEY `ticketPackaging_fk2_idx` (`packagingFk`), CONSTRAINT `ticketPackaging_fk1` FOREIGN KEY (`ticketFk`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketPackaging_fk2` FOREIGN KEY (`packagingFk`) REFERENCES `vn2008`.`Cubos` (`Id_Cubo`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=5454 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `ticketPackagingStartingStock` -- DROP TABLE IF EXISTS `ticketPackagingStartingStock`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketPackagingStartingStock` ( `clientFk` int(11) NOT NULL, `packagingFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `itemFk` int(11) NOT NULL, `sent` int(11) DEFAULT NULL, `returned` int(11) DEFAULT NULL, PRIMARY KEY (`clientFk`,`packagingFk`), KEY `ticketPackagingStartingStock_fk2_idx` (`packagingFk`), KEY `ticketPackagingStartingStock_fk3_idx` (`itemFk`), CONSTRAINT `ticketPackagingStartingStock_fk1` FOREIGN KEY (`clientFk`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketPackagingStartingStock_fk2` FOREIGN KEY (`packagingFk`) REFERENCES `vn2008`.`Cubos` (`Id_Cubo`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketPackagingStartingStock_fk3` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `ticketTrolley` -- DROP TABLE IF EXISTS `ticketTrolley`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketTrolley` ( `ticket` int(11) NOT NULL, `labelCount` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`ticket`), CONSTRAINT `fk_ticketTrolley_vs_ticket` FOREIGN KEY (`ticket`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `town` -- DROP TABLE IF EXISTS `town`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `town` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, `provinceFk` smallint(6) unsigned NOT NULL, `geoFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `provinceFk_idx` (`provinceFk`), KEY `town_ix2` (`name`), CONSTRAINT `provinceFk` FOREIGN KEY (`provinceFk`) REFERENCES `vn2008`.`province` (`province_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=55237 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `travelObservation` -- DROP TABLE IF EXISTS `travelObservation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `travelObservation` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(11) NOT NULL, `description` text COLLATE utf8_unicode_ci NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Observaciones de travel'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `workCenter` -- DROP TABLE IF EXISTS `workCenter`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workCenter` ( `id` int(11) NOT NULL DEFAULT '0', `name` varchar(255) DEFAULT NULL, `payrollCenterFk` int(11) DEFAULT NULL, `counter` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `workerDocument` -- DROP TABLE IF EXISTS `workerDocument`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workerDocument` ( `id` int(11) NOT NULL AUTO_INCREMENT, `worker` int(10) unsigned DEFAULT NULL, `document` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `workerDocument_ibfk_1` (`worker`), KEY `workerDocument_ibfk_2` (`document`), CONSTRAINT `workerDocument_ibfk_1` FOREIGN KEY (`worker`) REFERENCES `vn2008`.`Trabajadores` (`user_id`) ON UPDATE CASCADE, CONSTRAINT `workerDocument_ibfk_2` FOREIGN KEY (`document`) REFERENCES `vn2008`.`gestdoc` (`id`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=3058 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `workerLog` -- DROP TABLE IF EXISTS `workerLog`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workerLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned NOT NULL, `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `description` text COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `workerFk_idx` (`originFk`), KEY `userFk_idx` (`userFk`), CONSTRAINT `userFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `workerFk` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB AUTO_INCREMENT=1154 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `workerTeam_kk` -- DROP TABLE IF EXISTS `workerTeam_kk`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workerTeam_kk` ( `id` int(11) NOT NULL AUTO_INCREMENT, `team` int(11) NOT NULL, `user` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `user_team_idx` (`user`), CONSTRAINT `user_team` FOREIGN KEY (`user`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `workingHours` -- DROP TABLE IF EXISTS `workingHours`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workingHours` ( `id` int(11) NOT NULL AUTO_INCREMENT, `timeIn` datetime NOT NULL, `timeOut` datetime DEFAULT NULL, `userId` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `user_working_hour_idx` (`userId`), CONSTRAINT `user_working_hour` FOREIGN KEY (`userId`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=14428 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena horas de Entrada y de Salida del personal'; /*!40101 SET character_set_client = @saved_cs_client */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`workingHoursBeforeInsert` BEFORE INSERT ON `workingHours` FOR EACH ROW BEGIN IF (SELECT COUNT(*) FROM workingHours WHERE userId = NEW.userId AND DATE(timeIn) = CURDATE()) > 0 THEN CALL util.throw ('ALREADY_LOGGED'); END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Table structure for table `zone` -- DROP TABLE IF EXISTS `zone`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `zone` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `hour` int(11) NOT NULL, `warehouseFk` int(11) NOT NULL, `agencyFk` int(11) NOT NULL, `travelingDays` int(11) NOT NULL DEFAULT '1', `price` double NOT NULL DEFAULT '0', `bonus` double NOT NULL DEFAULT '0', PRIMARY KEY (`id`,`name`), UNIQUE KEY `name_UNIQUE` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `zoneCalendar` -- DROP TABLE IF EXISTS `zoneCalendar`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `zoneCalendar` ( `zoneFk` int(11) NOT NULL, `delivered` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`zoneFk`,`delivered`), CONSTRAINT `zoneFk` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `zoneGeo` -- DROP TABLE IF EXISTS `zoneGeo`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `zoneGeo` ( `zoneFk` int(11) NOT NULL, `geoFk` int(11) NOT NULL, `isIncluded` tinyint(1) DEFAULT NULL, PRIMARY KEY (`zoneFk`,`geoFk`), KEY `geoFk_idx` (`geoFk`), CONSTRAINT `geoFk` FOREIGN KEY (`geoFk`) REFERENCES `zoneNest` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `zoneGeoFk` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `zoneNest` -- DROP TABLE IF EXISTS `zoneNest`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `zoneNest` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `lft` int(11) DEFAULT NULL, `rgt` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=20944 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `zoneNestTree` -- DROP TABLE IF EXISTS `zoneNestTree`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `zoneNestTree` ( `id` int(11) NOT NULL DEFAULT '0', `name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `lft` int(11) DEFAULT NULL, `rgt` int(11) DEFAULT NULL, `depth` bigint(22) NOT NULL DEFAULT '0', `sons` decimal(10,0) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping events for database 'vn' -- /*!50106 SET @save_time_zone= @@TIME_ZONE */ ; /*!50106 DROP EVENT IF EXISTS `ticketClosure` */; DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; /*!50003 SET @saved_cs_results = @@character_set_results */ ;; /*!50003 SET @saved_col_connection = @@collation_connection */ ;; /*!50003 SET character_set_client = utf8mb4 */ ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_general_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; /*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `ticketClosure` ON SCHEDULE EVERY 1 DAY STARTS '2017-09-18 00:30:00' ON COMPLETION NOT PRESERVE ENABLE COMMENT 'Realiza el cierre de todos los almacenes del dia actual' DO CALL ticketClosureMultiWarehouse(DATE_ADD(CURDATE(), INTERVAL -1 DAY)) */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; /*!50003 SET character_set_results = @saved_cs_results */ ;; /*!50003 SET collation_connection = @saved_col_connection */ ;; DELIMITER ; /*!50106 SET TIME_ZONE= @save_time_zone */ ; -- -- Dumping routines for database 'vn' -- /*!50003 DROP FUNCTION IF EXISTS `addressTaxArea` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `addressTaxArea`(vAddresId INT, vCompanyId INT) RETURNS varchar(25) CHARSET utf8 DETERMINISTIC BEGIN /** * Devuelve el area de un Consignatario, * intracomunitario, extracomunitario, nacional o recargo de equivalencia. * Asumimos que no tenemos ninguna empresa * * @param vAddresId Id del Consignatario * @param vCompanyId Compañia desde la que se factura * @return Código de area */ DECLARE vTaxArea VARCHAR(25); DECLARE vClientIsUeeMember INT; DECLARE vSupplierIsUeeMember INT; DECLARE vSpainCountryCode INT DEFAULT 1; DECLARE vSupplierCountry INT; DECLARE vClientCountry INT; DECLARE vIsEqualizated BOOLEAN; DECLARE vIsVies BOOLEAN; SELECT cClient.isUeeMember, c.countryFk, a.isEqualizated, cSupplier.isUeeMember, s.countryFk, c.isVies INTO vClientIsUeeMember, vClientCountry, vIsEqualizated, vSupplierIsUeeMember, vSupplierCountry, vIsVies FROM address a JOIN `client` c ON c.id = a.clientFk JOIN country cClient ON cClient.id = c.countryFk JOIN supplier s ON s.id = vCompanyId JOIN country cSupplier ON cSupplier.id = s.countryFk WHERE a.id = vAddresId; CASE WHEN NOT vClientIsUeeMember THEN SET vTaxArea = 'WORLD'; WHEN vClientIsUeeMember AND vSupplierIsUeeMember AND vClientCountry != vSupplierCountry AND vIsVies THEN SET vTaxArea = 'CEE'; WHEN vIsEqualizated AND vClientCountry = vSpainCountryCode THEN SET vTaxArea = 'EQU'; ELSE SET vTaxArea = 'NATIONAL'; END CASE; RETURN vTaxArea; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `agencyIsAvailable` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `agencyIsAvailable`(vAgency INT, vDate DATE, vAddress INT) RETURNS tinyint(1) BEGIN /** * Comprueba si la agencia esta disponible para la fecha y * dirección dadas, es decir, si es posible enviar mercancía * desde al menos uno de los almacenes por la agencia, fecha * y direcciones especificadas. * * @param vAgency Id de agencia * @param vDate Fecha de recepción de mercancía * @param vAddress Id consignatario, %NULL para recogida * @return %TRUE si la agencia esta disponible, %FALSE en caso contrario */ DECLARE vMaxDays INT DEFAULT DATEDIFF(vDate, CURDATE()); DECLARE vWday TINYINT DEFAULT WEEKDAY(vDate); DECLARE vHour TINYINT DEFAULT HOUR(NOW()); DECLARE vProvince INT; DECLARE isAvailable BOOL; SELECT provinceFk INTO vProvince FROM address WHERE id = vAddress; SELECT COUNT(*) > 0 INTO isAvailable FROM agencyHour h JOIN agencyMode a ON a.agencyFk = h.agencyFk WHERE (h.provinceFk = vProvince OR h.provinceFk IS NULL) AND (h.weekDay = vWday OR h.weekDay IS NULL) AND (h.substractDay < vMaxDays OR (h.substractDay = vMaxDays AND h.maxHour > vHour)) AND a.id = vAgency; RETURN isAvailable; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `clientGetDebt` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `clientGetDebt`(vClient INT, vDate DATE) RETURNS decimal(10,2) BEGIN /** * Devuelve el saldo de un cliente. * * @param vClient Identificador del cliente * @param vDate Fecha hasta la que tener en cuenta * @return Saldo del cliente */ DECLARE vDateEnd DATETIME; DECLARE vDateIni DATETIME; DECLARE vDebt DECIMAL(10,2); SET vDate = IFNULL(vDate, CURDATE()); SET vDateIni = TIMESTAMPADD(MONTH, -2, CURDATE()); SET vDateEnd = TIMESTAMP(vDate, '23:59:59'); DROP TEMPORARY TABLE IF EXISTS tmp.ticket; CREATE TEMPORARY TABLE tmp.ticket (INDEX (ticketFk)) ENGINE = MEMORY SELECT id ticketFk FROM ticket WHERE clientFk = vClient AND refFk IS NULL AND shipped BETWEEN vDateIni AND vDateEnd; CALL vn.ticketGetTotal; SELECT IFNULL(SUM(t.amount), 0) INTO vDebt FROM ( SELECT SUM(total) amount FROM tmp.ticketTotal UNION ALL SELECT SUM(Entregado) FROM vn2008.Recibos WHERE Id_Cliente = vClient AND Fechacobro > vDateEnd UNION ALL SELECT SUM(amount) FROM bi.customer_risk r WHERE customer_id = vClient UNION ALL SELECT CAST(-SUM(amount) / 100 AS DECIMAL(10,2)) FROM hedera.tpvTransaction WHERE clientFk = vClient AND receiptFk IS NULL AND `status` = 'ok' ) t; DROP TEMPORARY TABLE tmp.ticket, tmp.ticketTotal; RETURN vDebt; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `clientGetMana` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `clientGetMana`(vClient INT) RETURNS decimal(10,2) BEGIN /** * Devuelve el maná del cliente. * * @param vClient Id del cliente * @return Maná del cliente */ DECLARE vMana DECIMAL(10,2); DECLARE vFromDated DATE; SELECT max(dated) INTO vFromDated FROM vn.clientManaCache WHERE clientFk = vClient; SELECT sum(mana) INTO vMana FROM ( SELECT mana FROM vn.clientManaCache WHERE clientFk = vClient AND dated = vFromDated UNION ALL SELECT s.quantity * Valor FROM vn.ticket t JOIN vn.address a ON a.id = t.addressFk JOIN vn.sale s on s.ticketFk = t.id JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = s.id WHERE Id_Componente IN (37, 39) AND t.shipped > vFromDated AND t.clientFk = vClient UNION ALL SELECT - Entregado FROM vn2008.Recibos r JOIN vn2008.Clientes c using(Id_Cliente) WHERE r.Id_Banco = 66 AND r.Fechacobro > vFromDated AND c.Id_Cliente = vClient UNION ALL SELECT g.Importe FROM vn2008.Greuges g JOIN vn2008.Clientes c using(Id_Cliente) WHERE g.Greuges_type_id = 3 -- Maná AND g.Fecha > vFromDated AND c.Id_Cliente = vClient ) sub; RETURN IFNULL(vMana,0); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `clientTaxArea` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `clientTaxArea`(vClientId INT, vCompanyId INT) RETURNS varchar(25) CHARSET utf8 BEGIN /** * Devuelve el area de un cliente, * intracomunitario, extracomunitario y nacional. * * @param vClient Id del cliente * @param vCompanyFk Compañia desde la que se factura * @return Código de area */ DECLARE vTaxArea VARCHAR(25); DECLARE vCee INT; SELECT ct.Cee INTO vCee FROM `client` c JOIN country ct ON ct.id = c.countryFk JOIN supplier s ON s.id = vCompanyId WHERE c.id = vClientId AND c.isVies AND c.countryFk != s.countryFk; IF vCee < 2 THEN SET vTaxArea = 'CEE'; ELSEIF vCee = 2 THEN SET vTaxArea = 'WORLD'; ELSE SET vTaxArea = 'NATIONAL'; END IF; RETURN vTaxArea; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `getAlert3State` */; ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getAlert3State`(vTicket INT) RETURNS varchar(45) CHARSET latin1 BEGIN DECLARE vDeliveryType INTEGER DEFAULT 0; DECLARE vWorker INT; DECLARE isWaitingForPickUp BOOLEAN DEFAULT FALSE; DECLARE vCode VARCHAR(45); SELECT IFNULL(aw.Vista,a.Vista) INTO vDeliveryType FROM vn2008.Tickets t JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia LEFT JOIN vn2008.agency_warehouse aw ON a.agency_id = aw.agency_id AND t.warehouse_id = aw.warehouse_id WHERE Id_Ticket = vTicket; SELECT getUser() INTO vWorker; CASE vDeliveryType WHEN 1 THEN -- AGENCIAS SELECT COUNT(*) INTO isWaitingForPickUp FROM vn2008.Tickets t JOIN vn2008.warehouse_pickup w ON w.agency_id = t.Id_Agencia WHERE t.Id_Ticket = vTicket AND w.warehouse_id <> t.warehouse_id; IF isWaitingForPickUp THEN SET vCode = 'WAITING_FOR_PICKUP'; ELSE SET vCode = 'DELIVERED'; END IF; WHEN 2 THEN -- REPARTO SET vCode = 'ON_DELIVERY'; ELSE -- MERCADO, OTROS SET vCode = 'DELIVERED'; END CASE; RETURN vCode; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `getDueDate` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getDueDate`(vDated DATE, vDayToPay INT) RETURNS date BEGIN DECLARE vDued DATE; SET vDued = IF (vDayToPay > 30 or vDayToPay < 1 ,TIMESTAMPADD(DAY, vDayToPay, vDated) ,TIMESTAMPADD(DAY, vDayToPay, LAST_DAY(vDated))); RETURN vDued; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `getInventoryDate` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getInventoryDate`() RETURNS date DETERMINISTIC BEGIN RETURN vn2008.date_inv(); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `getShipmentHour` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getShipmentHour`(vTicket INT) RETURNS int(11) BEGIN DECLARE vShipmentHour INT; SELECT HOUR(shipped) INTO vShipmentHour FROM ticket WHERE id = vTicket; IF vShipmentHour = 0 THEN DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; CREATE TEMPORARY TABLE tmp.production_buffer ENGINE = MEMORY SELECT am.agency as agency_id , t.warehouseFk as warehouse_id , a.province as province_id , 0 as Hora , 0 as Departure FROM ticket t JOIN agencyMode am on am.id = t.agencyModeFk JOIN address a on a.id = t.addressFk WHERE t.id = vTicket; CALL vn2008.production_buffer_set_priority; SELECT Hora INTO vShipmentHour FROM tmp.production_buffer; END IF; RETURN vShipmentHour; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `getSpecialPrice` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getSpecialPrice`(vItemFk int(11),vClientFk int(11)) RETURNS decimal(10,2) BEGIN DECLARE price DECIMAL(10,2); SELECT rate3 INTO price FROM vn.priceFixed WHERE itemFk = vItemFk AND CURDATE() BETWEEN started AND ended ORDER BY created DESC LIMIT 1; SELECT `value` INTO price FROM vn.especialPrice WHERE itemFk = vItemFk AND clientFk = vClientFk ; RETURN price; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `getTicketToPrepare` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getTicketToPrepare`(`vWorker` INT, `vWarehouse` INT) RETURNS int(11) BEGIN /** * Devuelve el ticket que debe de preparar el trabajador * * @param vWorker Id del trabajador * @param vWarehouse Id del almacén * @return Id del ticket **/ DECLARE vToday DATETIME DEFAULT CURDATE(); DECLARE vYesterday DATETIME; DECLARE vTodayvMidniight DATETIME DEFAULT midnight(vToday); DECLARE vTicket INT DEFAULT NULL; SET vYesterday = TIMESTAMPADD(DAY,-1,vToday); DROP TEMPORARY TABLE IF EXISTS tmp.workerComercial; CREATE TEMPORARY TABLE tmp.workerComercial ENGINE = MEMORY SELECT worker FROM `grant` g JOIN grantGroup gg ON g.`group` = gg.id WHERE gg.description = 'Comerciales' AND worker != 2; -- PAKO numero DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; CREATE TEMPORARY TABLE tmp.production_buffer ENGINE = MEMORY SELECT t.id as ticket , am.agency as agency_id , t.warehouseFk as warehouse_id , a.province as province_id , Hour(t.shipped) as Hora , Hour(t.shipped) as Departure , Minute(t.shipped) as Minuto , tls.code , IFNULL(t.priority,0) loadingOrder FROM ticket t JOIN ticketState tls on t.id = tls.ticket JOIN agencyMode am on am.id = t.agencyModeFk JOIN address a on a.id = t.addressFk LEFT JOIN tmp.workerComercial wc ON wc.worker = vWorker WHERE t.shipped BETWEEN vYesterday AND vTodayvMidniight AND t.warehouseFk = vWarehouse AND ( (tls.code = 'PRINTED' AND wc.worker IS NULL) OR (tls.code ='PICKER_DESIGNED' AND tls.worker = vWorker) OR (tls.code = 'PRINTED_BACK') ); CALL vn2008.production_buffer_set_priority; SELECT ticket INTO vTicket FROM tmp.production_buffer ORDER BY (code = 'PICKER_DESIGNED') DESC , Hora, Minuto, loadingOrder LIMIT 1; RETURN vTicket; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `getTicketTrolleyLabelCount` */; ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getTicketTrolleyLabelCount`(vTicket INT) RETURNS int(11) BEGIN DECLARE vLabelCount INT DEFAULT 0; SELECT labelCount INTO vLabelCount FROM ticketTrolley WHERE ticket = vTicket; SET vLabelCount = vLabelCount +1 ; REPLACE ticketTrolley(ticket,labelCount) SELECT vTicket, vLabelCount; RETURN vlabelCount; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `getUser` */; ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getUser`() RETURNS int(11) DETERMINISTIC BEGIN RETURN getWorker(); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `getUserId` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getUserId`(userName varchar(30)) RETURNS int(11) BEGIN DECLARE vUser INT; SELECT id INTO vUser FROM account.user WHERE `name` = userName; RETURN vUser; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `getWorker` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getWorker`() RETURNS int(11) DETERMINISTIC BEGIN DECLARE vUser INT; SELECT id INTO vUser FROM worker WHERE userFk = account.userGetId(); RETURN vUser; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `getWorkerkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getWorkerkk`() RETURNS int(11) DETERMINISTIC BEGIN DECLARE vUser INT; SELECT id INTO vUser FROM worker WHERE user = account.userGetId(); RETURN vUser; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `hasAnyNegativeBase` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `hasAnyNegativeBase`() RETURNS tinyint(1) BEGIN /* Calcula si existe alguna base imponible negativa * Requiere la tabla temporal vn.ticketToInvoice(id) * * returns BOOLEAN */ DECLARE vCountry INT; DECLARE hasAnyNegativeBase BOOLEAN; SELECT s.countryFk INTO vCountry FROM supplier s JOIN ticket t ON t.companyFk = s.id JOIN vn.ticketToInvoice tl ON tl.id = t.id LIMIT 1; SELECT COUNT(*) INTO hasAnyNegativeBase FROM ( SELECT SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2)) taxableBase FROM sale s JOIN item i ON i.id = s.itemFk JOIN itemTaxCountry itc ON itc.itemFk = i.id AND itc.countryFk = vCountry JOIN vn.ticketToInvoice tl ON tl.id = s.ticketFk GROUP BY itc.taxClassFk HAVING taxableBase < 0 ) t1 ; RETURN hasAnyNegativeBase; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `hasSomeNegativeBase` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `hasSomeNegativeBase`(vTicket INT) RETURNS tinyint(1) BEGIN DECLARE vCountry INT; DECLARE hasSomeNegativeBase BOOLEAN; SELECT s.countryFk INTO vCountry FROM supplier s JOIN ticket t ON t.companyFk = s.id WHERE t.id = vTicket; SELECT COUNT(*) INTO hasSomeNegativeBase FROM ( SELECT SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2)) taxableBase FROM sale s JOIN item i ON i.id = s.itemFk JOIN itemTaxCountry itc ON itc.itemFk = i.id AND itc.countryFk = vCountry WHERE s.ticketFk = vTicket GROUP BY itc.taxClassFk HAVING taxableBase < 0 ) t1 ; RETURN hasSomeNegativeBase; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `invoiceOutAmount` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `invoiceOutAmount`(vInvoiceRef VARCHAR(15)) RETURNS decimal(10,2) BEGIN DECLARE totalAmount DECIMAL(10,2); SELECT SUM(vat) INTO totalAmount FROM ( SELECT iot.vat FROM invoiceOutTax iot JOIN invoiceOut io ON io.id = iot.invoiceOutFk WHERE io.ref = vInvoiceRef UNION ALL SELECT ioe.amount FROM invoiceOutExpence ioe JOIN invoiceOut io ON io.id = ioe.invoiceOutFk WHERE io.ref = vInvoiceRef ) t1; RETURN totalAmount; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `invoiceSerial` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(1)) RETURNS char(1) CHARSET utf8 BEGIN /** * Obtiene la serie de de una factura * dependiendo del area del cliente. * * @param vClientFk Id del cliente * @param vCompanyFk Id de la empresa * @param vType Tipo de factura ["R", "M", "G"] * @return Serie de la factura */ DECLARE vArea VARCHAR(25); DECLARE vSerie CHAR(1); IF (SELECT hasInvoiceSimplified FROM client WHERE id = vClientFk) THEN RETURN 'S'; END IF; SELECT clientTaxArea(vClientFk, vCompanyFk) INTO vArea; -- Factura rápida IF vType = 'R' THEN SELECT CASE vArea WHEN 'CEE' THEN 'H' WHEN 'WORLD' THEN 'E' WHEN 'NATIONAL' THEN 'T' END INTO vSerie; -- Factura multiple ELSEIF vType = 'M' THEN SELECT CASE vArea WHEN 'CEE' THEN 'H' WHEN 'WORLD' THEN 'E' WHEN 'NATIONAL' THEN 'M' END INTO vSerie; -- Factura global ELSEIF vType = 'G' THEN SELECT CASE vArea WHEN 'CEE' THEN 'V' WHEN 'WORLD' THEN 'X' WHEN 'NATIONAL' THEN 'A' END INTO vSerie; END IF; RETURN vSerie; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `isPalletHomogeneus` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `isPalletHomogeneus`(vExpedition INT) RETURNS tinyint(1) BEGIN DECLARE vScanId INT; DECLARE vDistinctRoutesInThePallet INT; SELECT scan_id INTO vScanId FROM vn2008.scan_line WHERE code = vExpedition; SELECT COUNT(*) INTO vDistinctRoutesInThePallet FROM ( SELECT DISTINCT t.Id_Ruta FROM vn2008.scan_line sl JOIN vn2008.expeditions e ON e.expeditions_id = sl.code JOIN vn2008.Tickets t ON t.Id_Ticket = e.ticket_id WHERE sl.scan_id = vScanId AND t.Id_Ruta ) t1; RETURN vDistinctRoutesInThePallet = 1; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `isWorkerBoss` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `isWorkerBoss`(vUserId INT(11)) RETURNS tinyint(1) DETERMINISTIC BEGIN DECLARE subjectId INT(11) DEFAULT vUserId; DECLARE tmpSubjectId INT(11); DECLARE tmpBossId INT(11); LOOP SELECT bossWorker.user_id AS tmpBossId, subjectWorker.user_id AS tmpSubjectId INTO tmpBossId, tmpSubjectId FROM vn2008.Trabajadores AS subjectWorker JOIN vn2008.Trabajadores AS bossWorker ON bossWorker.Id_Trabajador = subjectWorker.boss WHERE subjectWorker.user_id = subjectId; IF tmpBossId = tmpSubjectId THEN RETURN FALSE; ELSEIF tmpBossId = account.userGetId() THEN RETURN TRUE; ELSE SET subjectId = tmpBossId; END IF; END LOOP; RETURN FALSE; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `messageSend` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `messageSend`(vRecipient VARCHAR(255), vMessage TEXT) RETURNS int(11) BEGIN /** * Envia un mensaje a un usuario o a una lista de usuarios. * * @param vRecipient Nombre de usuario o de alias * @param vMessage Texto del mensaje * @return Número de destinatarios **/ DECLARE vCount INT; DECLARE vUuid VARCHAR(255); DECLARE vSendDate DATETIME DEFAULT NOW(); DECLARE vUser VARCHAR(255) DEFAULT account.userGetName(); SET vRecipient = LOWER(vRecipient); DROP TEMPORARY TABLE IF EXISTS tRecipients; CREATE TEMPORARY TABLE tRecipients SELECT u.name finalRecipient FROM account.mailAlias a JOIN account.mailAliasAccount aa ON aa.mailAlias = a.id JOIN account.user u ON u.id = aa.account WHERE a.alias = vRecipient COLLATE utf8_unicode_ci AND u.name != vUser AND u.active UNION SELECT u.name FROM account.user u WHERE u.name = vRecipient AND u.active; SELECT COUNT(*) INTO vCount FROM tRecipients; IF vCount = 0 THEN RETURN vCount; END IF; SET vUuid = UUID(); INSERT INTO message SET uuid = vUuid, sender = vUser, recipient = vRecipient, message = vMessage, sendDate = vSendDate; INSERT INTO messageInbox (uuid, sender, recipient, finalRecipient, message, sendDate) SELECT vUuid, vUser, vRecipient, finalRecipient, vMessage, vSendDate FROM tRecipients; DROP TEMPORARY TABLE tRecipients; RETURN vCount; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `midnight` */; ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `midnight`(vDate DATE) RETURNS datetime DETERMINISTIC BEGIN RETURN TIMESTAMP(vDate,'23:59:59'); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `noticeHasActive` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `noticeHasActive`(vCategoryKey VARCHAR(50), vUser INT) RETURNS tinyint(1) BEGIN /** * Comprueba si el usuario tiene activada o no la categoría * * @param vNoticeCategory Id de la categoría * @param vUser Id del usuario * @return %True si el usuario tiene activada la notificación, %False en caso contrario */ DECLARE vActive INT; SELECT COUNT(*) INTO vActive FROM noticeSubscription s JOIN noticeCategory c ON c.id = s.noticeCategoryFk WHERE c.keyName = vCategoryKey AND userFk = vUser; RETURN vActive; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `phytoPassport` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `phytoPassport`(vRef VARCHAR(15)) RETURNS text CHARSET utf8 BEGIN DECLARE vPhyto TEXT CHARSET utf8 COLLATE utf8_unicode_ci; SELECT GROUP_CONCAT(i.id, ':', ppa.denomination, ' ', pp.number, CHAR(13,10) SEPARATOR '') fitosanitario INTO vPhyto FROM sale s JOIN ticket t ON t.id = s.ticketFk JOIN item i ON i.id = s.itemFk JOIN plantpassport pp ON pp.producerFk = i.producerFk JOIN plantpassportAuthority ppa ON ppa.id = pp.plantpassportAuthorityFk JOIN itemBotanicalWithGenus ib ON ib.itemFk = i.id JOIN botanicExport be ON be.restriction = 'Se Requiere Certificado' LEFT JOIN ediGenus eg ON eg.id = be.ediGenusFk LEFT JOIN ediSpecie es ON es.id = be.ediSpecieFk WHERE t.refFk = vRef AND ib.ediBotanic LIKE CONCAT(IFNULL(eg.latinGenusName, ''), IF(latinSpeciesName > '', CONCAT(' ', latinSpeciesName), ''), '%'); RETURN vPhyto; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `ticketGetTotal` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `ticketGetTotal`(vTicketId INT) RETURNS decimal(10,2) READS SQL DATA DETERMINISTIC BEGIN /** * Calcula el total con IVA de un ticket. * * @param vTicketId Identificador del ticket * @return Total del ticket */ DECLARE vTotal DECIMAL(10,2); DROP TEMPORARY TABLE IF EXISTS tmp.ticket; CREATE TEMPORARY TABLE tmp.ticket ENGINE = MEMORY SELECT vTicketId ticketFk; CALL ticketGetTotal; SELECT total INTO vTotal FROM tmp.ticketTotal; DROP TEMPORARY TABLE tmp.ticket, tmp.ticketTotal; RETURN vTotal; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `ticketGetTotalkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `ticketGetTotalkk`(vTicketId INT) RETURNS decimal(10,2) READS SQL DATA DETERMINISTIC BEGIN /** * Calcula el total con IVA de un ticket. * * @param vTicketId Identificador del ticket * @return Total del ticket */ DECLARE vTotal DECIMAL(10,2); DROP TEMPORARY TABLE IF EXISTS tmp.ticket; CREATE TEMPORARY TABLE tmp.ticket ENGINE = MEMORY SELECT vTicketId ticketFk; CALL ticketGetTotal; SELECT total INTO vTotal FROM tmp.ticketTotal; DROP TEMPORARY TABLE tmp.ticket, tmp.ticketTotal; RETURN vTotal; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `ticketPositionInPath` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `ticketPositionInPath`(vTicketId INT) RETURNS varchar(10) CHARSET utf8 BEGIN DECLARE vRestTicketsMaxOrder INT; DECLARE vRestTicketsMinOrder INT; DECLARE vRestTicketsPacking INT; DECLARE vMyProductionOrder INT; DECLARE vPosition VARCHAR(10) DEFAULT 'MID'; DECLARE vMyPath INT; DECLARE vMyWarehouse INT; DECLARE PACKING_ORDER INT; DECLARE vExpeditionsCount INT; DECLARE vIsValenciaPath BOOLEAN DEFAULT FALSE; SELECT `order` INTO PACKING_ORDER FROM state WHERE code = 'PACKING'; SELECT t.routeFk, t.warehouseFk, IFNULL(ts.productionOrder,0) INTO vMyPath, vMyWarehouse, vMyProductionOrder FROM ticket t LEFT JOIN ticketState ts on ts.ticket = t.id WHERE t.id = vTicketId; SELECT (ag.`name` = 'VN_VALENCIA') INTO vIsValenciaPath FROM vn2008.Rutas r JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia JOIN vn2008.agency ag on ag.agency_id = a.agency_id WHERE r.Id_Ruta = vMyPath; IF vIsValenciaPath THEN -- Rutas Valencia SELECT COUNT(*) INTO vExpeditionsCount FROM expedition e JOIN ticket t ON t.id = e.ticket WHERE t.routeFk = vMyPath; SELECT MAX(ts.productionOrder), MIN(ts.productionOrder) INTO vRestTicketsMaxOrder, vRestTicketsMinOrder FROM ticket t LEFT JOIN ticketState ts on t.id = ts.ticket WHERE t.routeFk = vMyPath AND t.warehouseFk = vMyWarehouse AND t.id != vTicketid; SELECT COUNT(*) INTO vRestTicketsPacking FROM ticket t LEFT JOIN ticketState ts on t.id = ts.ticket WHERE ts.productionOrder = PACKING_ORDER AND t.routeFk = vMyPath AND t.warehouseFk = vMyWarehouse AND t.id != vTicketid; IF vExpeditionsCount = 1 THEN SET vPosition = 'FIRST'; ELSEIF vRestTicketsMinOrder > PACKING_ORDER THEN SET vPosition = 'LAST'; ELSEIF vRestTicketsPacking THEN SET vPosition = 'SHARED'; ELSE SET vPosition = 'MID'; END IF; ELSE SET vPosition = 'MID'; END IF; RETURN vPosition; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `ticketPositionInPathkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `ticketPositionInPathkk`(vTicketId INT) RETURNS varchar(10) CHARSET utf8 BEGIN DECLARE vRestTicketsMaxOrder INT; DECLARE vRestTicketsMinOrder INT; DECLARE vRestTicketsPacking INT; DECLARE vMyProductionOrder INT; DECLARE vPosition VARCHAR(10) DEFAULT 'MID'; DECLARE vMyPath INT; DECLARE vMyWarehouse INT; DECLARE PACKING_ORDER INT; DECLARE vExpeditionsCount INT; DECLARE vIsValenciaPath BOOLEAN DEFAULT FALSE; SELECT `order` INTO PACKING_ORDER FROM state WHERE code = 'PACKING'; SELECT path, warehouse, IFNULL(productionOrder,0) INTO vMyPath, vMyWarehouse, vMyProductionOrder FROM ticket t LEFT JOIN ticketState ts on ts.ticket = t.id WHERE id = vTicketId; SELECT (ag.`name` = 'VN_VALENCIA') INTO vIsValenciaPath FROM vn2008.Rutas r JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia JOIN vn2008.agency ag on ag.agency_id = a.agency_id WHERE r.Id_Ruta = vMyPath; IF vIsValenciaPath THEN -- Rutas Valencia SELECT COUNT(*) INTO vExpeditionsCount FROM expedition e JOIN ticket t ON t.id = e.ticket WHERE t.path = vMyPath; SELECT MAX(productionOrder), MIN(productionOrder) INTO vRestTicketsMaxOrder, vRestTicketsMinOrder FROM ticket t LEFT JOIN ticketState ts on t.id = ts.ticket WHERE t.path = vMyPath AND t.warehouse = vMyWarehouse AND t.id != vTicketid; SELECT COUNT(*) INTO vRestTicketsPacking FROM ticket t LEFT JOIN ticketState ts on t.id = ts.ticket WHERE productionOrder = PACKING_ORDER AND t.path = vMyPath AND t.warehouse = vMyWarehouse AND t.id != vTicketid; IF vExpeditionsCount = 1 THEN SET vPosition = 'FIRST'; ELSEIF vRestTicketsMinOrder > PACKING_ORDER THEN SET vPosition = 'LAST'; ELSEIF vRestTicketsPacking THEN SET vPosition = 'SHARED'; ELSE SET vPosition = 'MID'; END IF; ELSE SET vPosition = 'MID'; END IF; RETURN vPosition; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `workerIsBoss` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `workerIsBoss`(vUserId INT) RETURNS int(11) BEGIN /** * Comprueba por jerarquía si el trabajador actual es jefe * de un trabajador en concreto. * * @param vUserId Id del trabajador que se desea comprobar. * @return Revuelve verdadero si es jefe del empleado por escala jerárquica. */ DECLARE vWorkerId INT; DECLARE vBossId INT; SELECT id INTO vWorkerId FROM vn.worker WHERE userFk = vUserId; IF vWorkerId IS NULL THEN CALL util.throw('USER_NOT_FOUND'); END IF; DROP TEMPORARY TABLE IF EXISTS tCheckedWorker; CREATE TEMPORARY TABLE tCheckedWorker (PRIMARY KEY (workerFk)) ENGINE = MEMORY SELECT id workerFk FROM worker LIMIT 0; LOOP SELECT bossFk INTO vBossId FROM vn.worker WHERE id = vWorkerId; IF (SELECT COUNT(*) FROM tCheckedWorker WHERE workerFk = vBossId) THEN CALL util.throw('INFINITE_LOOP'); END IF; IF vBossId = vWorkerId THEN RETURN FALSE; ELSEIF vBossId = vn.getWorker() THEN RETURN TRUE; ELSE INSERT INTO tCheckedWorker VALUES (vWorkerId); SET vWorkerId = vBossId; END IF; END LOOP; DROP TEMPORARY TABLE tCheckedWorker; RETURN FALSE; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `agencyListAvailable` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `agencyListAvailable`(vDate DATE, vAddress INT) BEGIN /** * Devuelve la lista de almacenes disponibles y la fecha de * envío desde cada uno. * * @param vDate Fecha de recepción de mercancía * @param vAddress Id consignatario, %NULL para recogida * @return travel_tree Lista de almacenes disponibles */ DECLARE vMaxDays INT DEFAULT DATEDIFF(vDate, CURDATE()); DECLARE vWday TINYINT DEFAULT WEEKDAY(vDate); DECLARE vHour TINYINT DEFAULT HOUR(NOW()); DECLARE vProvince INT; SELECT provinceFk INTO vProvince FROM address WHERE id = vAddress; DROP TEMPORARY TABLE IF EXISTS tmp.agencyAvailable; CREATE TEMPORARY TABLE tmp.agencyAvailable (INDEX (agencyFk)) ENGINE = MEMORY SELECT agencyFk, warehouseFk FROM agencyHour h WHERE (provinceFk = vProvince OR provinceFk IS NULL) AND (weekDay = vWday OR weekDay IS NULL) AND (substractDay < vMaxDays OR (substractDay = vMaxDays AND maxHour > vHour)); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `clean` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `clean`() BEGIN DECLARE vDateShort DATETIME; SET vDateShort = TIMESTAMPADD(MONTH, -2, CURDATE()); DELETE FROM vn.dailyTaskLog WHERE created < vDateShort; INSERT INTO vn.dailyTaskLog(state) VALUES('clean START'); DELETE FROM vn.message WHERE sendDate < vDateShort; DELETE FROM vn.messageInbox WHERE sendDate < vDateShort; DELETE FROM vn.messageInbox WHERE sendDate < vDateShort; INSERT INTO vn.dailyTaskLog(state) VALUES('clean END'); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `clientFreeze` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `clientFreeze`() BEGIN IF day(CURDATE()) IN (10,20,30) THEN UPDATE vn.client c JOIN bi.defaulters d ON d.client = c.id AND d.date = CURDATE() JOIN vn.config ON TRUE SET c.isFreezed = TRUE WHERE d.amount > config.defaultersMaxAmount; END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `copyComponentsFromSaleList` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `copyComponentsFromSaleList`(vTargetTicketFk INT) BEGIN /* Copy sales and components to the target ticket * * ¡¡¡¡ Requires tmp.saleList(saleFk, itemFk, quantity, concept, price, discount, orden) !!!!! * * param VTargetTicketFk id del ticket a rellenar */ INSERT INTO vn.sale(ticketFk, itemFk, quantity,concept,price,discount) SELECT vTargetTicketFk, itemFk, quantity,concept,price,discount FROM tmp.saleList ORDER BY orden; SET @order = 0; DROP TEMPORARY TABLE IF EXISTS tmp.newSaleList; CREATE TEMPORARY TABLE tmp.newSaleList SELECT id as saleFk, @order := @order + 1 as orden FROM vn.sale WHERE ticketFk = vTargetTicketFk ORDER BY saleFk; INSERT INTO vn.saleComponent(saleFk,componentFk,value) SELECT ns.saleFk, sc.componentFk, sc.value FROM vn.saleComponent sc JOIN tmp.saleList s ON s.saleFk = sc.saleFk JOIN tmp.newSaleList ns ON ns.orden = s.orden; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `createExternalWorkerkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `createExternalWorkerkk`( vFirstName VARCHAR(50), vSurname1 VARCHAR(50), vSurname2 VARCHAR(50), vUser VARCHAR(20), vPassword VARCHAR(50), vWorkerCode VARCHAR(3) ) BEGIN DECLARE vUserId INT; DECLARE vWorkerPako INT DEFAULT 2; DECLARE vSurnames VARCHAR(100); INSERT INTO account.user(name,password,role) SELECT vUser,MD5(vPassword),1; SET vUserId = LAST_INSERT_ID(); /* INSERT INTO vn.worker(firstName,name,bossFk,workerCode,user_id) SELECT vFirstName,CONCAT(vSurname1,' ',vSurname2),2,vWorkerCode,vUser; */ IF vSurname2 IS NULL THEN SET vSurnames = vSurname1; ELSE SET vSurnames = CONCAT(vSurname1, ' ', vSurname2); END IF; INSERT INTO vn2008.Trabajadores(Nombre, Apellidos, boss, CodigoTrabajador, user_id) SELECT vFirstName, vSurnames, vWorkerPako, vWorkerCode, vUserId; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `entryConverter` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `entryConverter`(vEntry INT) BEGIN DECLARE vWarehouseIn INT; DECLARE vWarehouseOut INT; DECLARE vTravel INT; DECLARE done BOOL DEFAULT FALSE; DECLARE vId_Entrada INT; DECLARE vId_Article INT; DECLARE vEtiquetas INT; DECLARE vId_Cubo VARCHAR(10); DECLARE vPacking INT; DECLARE vGrouping INT; DECLARE vCantidad INT; DECLARE vCostefijo DECIMAL(10,3); DECLARE vPortefijo DECIMAL(10,3); DECLARE vEmbalajefijo DECIMAL(10); DECLARE vComisionfija DECIMAL(10,3); DECLARE vCaja INT; DECLARE vNicho VARCHAR(5); DECLARE vTarifa1 DECIMAL(10,2); DECLARE vTarifa2 DECIMAL(10,2); DECLARE vTarifa3 DECIMAL(10,2); DECLARE vPVP DECIMAL(10,2); DECLARE vCompra INT; DECLARE rs CURSOR FOR SELECT b.Id_Entrada, b.Id_Article, b.Etiquetas, b.Id_Cubo, b.Packing, b.grouping, b.Cantidad, b.Costefijo, b.Portefijo, b.Embalajefijo, b.Comisionfija, b.caja, b.Nicho, b.Tarifa1, b.Tarifa2, b.Tarifa3, b.PVP FROM vn2008.Compres b JOIN vn.itemConversor ic ON ic.espItemFk = b.Id_Article WHERE Id_Entrada = vEntry; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; SELECT warehouseInFk, warehouseOutFk, tr.id INTO vWarehouseIn, vWarehouseOut, vTravel FROM travel tr JOIN entry e ON e.travelFk = tr.id WHERE e.id = vEntry; UPDATE travel SET warehouseInFk = vWarehouseOut, warehouseOutFk = vWarehouseIn WHERE id = vTravel; UPDATE vn2008.Compres c LEFT JOIN vn.itemConversor ic ON ic.espItemFk = c.Id_Article SET Etiquetas = 0, Cantidad = 0 WHERE c.Id_Entrada = vEntry AND ic.espItemFk IS NULL; OPEN rs; DELETE FROM vn2008.Compres WHERE Id_Entrada = vEntry; FETCH rs INTO vId_Entrada, vId_Article, vEtiquetas, vId_Cubo, vPacking, vGrouping, vCantidad, vCostefijo, vPortefijo, vEmbalajefijo, vComisionfija, vCaja, vNicho, vTarifa1, vTarifa2, vTarifa3, vPVP; WHILE NOT done DO -- Primero la linea original con las cantidades invertidas INSERT INTO vn2008.Compres ( Id_Entrada, Id_Article, Etiquetas, Id_Cubo, Packing, grouping, Cantidad, Costefijo, Portefijo, Embalajefijo, Comisionfija, caja, Nicho, Tarifa1, Tarifa2, Tarifa3, PVP ) VALUES ( vId_Entrada, vId_Article, - vEtiquetas, vId_Cubo, vPacking, vGrouping, - vCantidad, vCostefijo, vPortefijo, vEmbalajefijo, vComisionfija, vCaja, vNicho, vTarifa1, vTarifa2, vTarifa3, vPVP); -- Ahora la linea nueva, con el item genérico INSERT INTO vn2008.Compres ( Id_Entrada, Id_Article, Etiquetas, Id_Cubo, Packing, grouping, Cantidad, Costefijo, Portefijo, Embalajefijo, Comisionfija, caja, Nicho, Tarifa1, Tarifa2, Tarifa3, PVP ) SELECT vId_Entrada, genItemFk as Id_Article, vEtiquetas, vId_Cubo, vPacking, vGrouping, vCantidad, vCostefijo, vPortefijo, vEmbalajefijo, vComisionfija, vCaja, vNicho, vTarifa1, vTarifa2, vTarifa3, vPVP FROM itemConversor WHERE espItemFk = vId_Article; SELECT LAST_INSERT_ID() INTO vCompra; REPLACE vn2008.Compres_mark(Id_Compra,`comment`) SELECT vCompra, vId_Article; FETCH rs INTO vId_Entrada, vId_Article, vEtiquetas, vId_Cubo, vPacking, vGrouping, vCantidad, vCostefijo, vPortefijo, vEmbalajefijo, vComisionfija, vCaja, vNicho, vTarifa1, vTarifa2, vTarifa3, vPVP; END WHILE; CLOSE rs; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `getDebtKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `getDebtKk`(vDate DATE) BEGIN /** * Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list * * @deprecated usar vn.clientGetDebt * @table tmp.client_list * @param vDate Fecha maxima de los registros * @treturn tmp.risk */ DECLARE vDateIni DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(CURDATE()) - 5, CURDATE()); DECLARE vDateEnd DATETIME; DECLARE MAX_RISK_ALLOWED INT DEFAULT 200; SET vDateEnd = TIMESTAMP(IFNULL(vDate, CURDATE()), '23:59:59'); DROP TEMPORARY TABLE IF EXISTS tmp.clientList2; CREATE TEMPORARY TABLE tmp.clientList2 (PRIMARY KEY (Id_Cliente)) ENGINE = MEMORY SELECT * FROM tmp.client_list; DROP TEMPORARY TABLE IF EXISTS tmp.clientList3; CREATE TEMPORARY TABLE tmp.clientList3 (PRIMARY KEY (Id_Cliente)) ENGINE = MEMORY SELECT * FROM tmp.client_list; DROP TEMPORARY TABLE IF EXISTS vn2008.ticket_tmp; CREATE TEMPORARY TABLE vn2008.ticket_tmp (INDEX (ticket_id)) ENGINE = MEMORY SELECT id ticket_id, cl.Id_Cliente FROM ticket t JOIN tmp.clientList2 cl ON t.clientFk = cl.Id_Cliente WHERE refFk IS NULL AND shipped BETWEEN vDateIni AND vDateEnd; CALL vn2008.ticket_total; DROP TEMPORARY TABLE IF EXISTS tmp.risk; CREATE TEMPORARY TABLE tmp.risk (PRIMARY KEY (Id_Cliente)) ENGINE = MEMORY SELECT Id_Cliente, SUM(amount) risk FROM vn2008.Clientes c JOIN ( SELECT customer_id, SUM(amount) amount FROM bi.customer_risk cr JOIN tmp.client_list on tmp.client_list.Id_Cliente = cr.customer_id GROUP BY customer_id UNION ALL SELECT Id_Cliente, SUM(Entregado) FROM vn2008.Recibos JOIN tmp.clientList2 using(Id_Cliente) WHERE Fechacobro > vDateIni GROUP BY Id_Cliente UNION ALL SELECT t.Id_Cliente, total FROM vn2008.ticket_total tt JOIN vn2008.ticket_tmp t ON tt.ticket_id = t.ticket_id UNION ALL SELECT t.clientFk customer_id, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) FROM hedera.tpvTransaction t JOIN tmp.clientList3 l ON l.Id_Cliente = t.clientFk WHERE t.receiptFk IS NULL AND t.status = 'ok' GROUP BY t.clientFk ) t ON c.Id_Cliente = t.customer_id WHERE c.activo != FALSE GROUP BY c.Id_Cliente; DROP TEMPORARY TABLE vn2008.ticket_tmp, vn2008.ticket_total, tmp.clientList2, tmp.clientList3; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `getItemVisibleAvailable` */; ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `getItemVisibleAvailable`(IN vItem INT,IN vDate DATE,IN vWarehouse TINYINT,IN isForcedToRecalculate BOOLEAN) BEGIN DECLARE vCacheVisibleCalculated INTEGER; DECLARE vCacheAvailableCalculated INTEGER; CALL cache.visible_refresh(vCacheVisibleCalculated, isForcedToRecalculate, vWarehouse); CALL cache.available_refresh(vCacheAvailableCalculated, isForcedToRecalculate, vWarehouse, vDate); SELECT a.Id_Article, a.Article, a.Medida, a.Tallos, a.caja, O.Abreviatura as origen, a.Color, tipo_id, an.Nicho, a.Categoria, p.`name` as producer, v.visible, av.available FROM vn2008.Articles a LEFT JOIN vn2008.Articles_nicho an ON a.Id_Article = an.Id_Article AND an.warehouse_id = vWarehouse LEFT JOIN vn2008.Origen O ON O.id = a.id_origen LEFT JOIN vn2008.producer p ON p.producer_id = a.producer_id LEFT JOIN cache.visible v ON (vItem IS NULL OR v.item_id = vItem) AND v.calc_id = vCacheVisibleCalculated LEFT JOIN cache.available av ON (vItem IS NULL OR av.item_id = vItem) AND av.calc_id = vCacheAvailableCalculated WHERE (vItem IS NULL OR a.Id_Article = vItem); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceCorrectedSalekk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceCorrectedSalekk`(vInvoiceOut INT) BEGIN /* Devuelve los registros de la factura en cuestion, para preparar la factura rectificativa * * param vInvoiceOutId Referencia de la factura emitida, tal como se ve en el ticket * */ SELECT s.id, s.itemFk, s.quantity, s.price, s.discount FROM sale s JOIN ticket t ON t.id = s.ticketFk WHERE t.invoice = vInvoiceOut; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceExpenceMake` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceExpenceMake`(IN vInvoice INT) BEGIN /* Inserta las partidas de gasto correspondientes a la factura * REQUIERE tabla ticketToInvoice * * @param vInvoice Numero de factura * */ DELETE FROM invoiceOutExpence WHERE invoiceOutFk = vInvoice; INSERT INTO invoiceOutExpence( invoiceOutFk, expenceFk, amount ) SELECT vInvoice, expenceFk, SUM(ROUND(quantity * price * (100 - discount)/100,2)) amount FROM ticketToInvoice t JOIN sale s ON s.ticketFk = t.id JOIN item i ON i.id = s.itemFk GROUP BY i.expenceFk HAVING amount != 0; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceFromAddress` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceFromAddress`(vMaxTicketDate DATETIME,vAddress INT,vCompany INT) BEGIN DECLARE vMinDateTicket DATE DEFAULT TIMESTAMPADD(MONTH, -3, CURDATE()); SET vMaxTicketDate = vn2008.DAYEND(vMaxTicketDate); DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; CREATE TEMPORARY TABLE `ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY SELECT Id_Ticket id FROM vn2008.Tickets WHERE (Fecha BETWEEN vMinDateTicket AND vMaxTicketDate) AND Id_Consigna = vAddress AND Factura IS NULL AND empresa_id = vCompany; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceFromClient` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceFromClient`(vMaxTicketDate DATETIME, vClient INT, vCompany INT) BEGIN DECLARE vMinDateTicket DATE DEFAULT TIMESTAMPADD(YEAR, -3, CURDATE()); SET vMaxTicketDate = vn2008.DAYEND(vMaxTicketDate); DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; CREATE TEMPORARY TABLE `ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY SELECT Id_Ticket id FROM vn2008.Tickets WHERE Id_Cliente = vClient AND Factura IS NULL AND empresa_id = vCompany AND (Fecha BETWEEN vMinDateTicket AND vMaxTicketDate) ; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceFromTicket` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceFromTicket`(IN vTicket INT) BEGIN DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; CREATE TEMPORARY TABLE `ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY SELECT id FROM vn.ticket WHERE id = vTicket AND refFk IS NULL; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingCommon` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingCommon`(vInvoiceInId INT, OUT vSerialNumber INT) BEGIN DROP TEMPORARY TABLE IF EXISTS newInvoiceIn; CREATE TEMPORARY TABLE newInvoiceIn SELECT i.*, YEAR(i.booked) datedYear, -- CONCAT('s/fra',RIGHT(i.supplierRef,8)) concept, CONCAT('s/fra',RIGHT(i.supplierRef,8),':',LEFT(s.name, 10)) conceptWithSupplier, (cc.id = c.id) isSameCountry, cit.id invoicesCount FROM invoiceIn i JOIN cplusInvoiceType472 cit ON cit.id = i.cplusInvoiceType472Fk JOIN supplier s ON s.id = i.supplierFk JOIN country c ON c.id = s.countryFk JOIN supplier sc ON sc.id = i.companyFk JOIN country cc ON cc.id = sc.countryFk WHERE i.id = vInvoiceInId; DROP TEMPORARY TABLE IF EXISTS newSupplier; CREATE TEMPORARY TABLE newSupplier SELECT s.*, REPLACE(s.account,' ','') supplierAccount, IF(c.CEE < 2, TRUE, FALSE) isUeeMember FROM supplier s JOIN newInvoiceIn n JOIN country c ON c.id = s.countryFk WHERE s.id = n.supplierFk; IF (SELECT isActive FROM newSupplier) = 0 THEN CALL util.throw('INACTIVE_PROVIDER'); END IF; SELECT IFNULL(MAX(i.serialNumber) + 1,1) INTO vSerialNumber FROM invoiceIn i JOIN newInvoiceIn n WHERE i.serial LIKE n.serial AND YEAR(i.booked) = n.datedYear AND i.companyFk = n.companyFk GROUP BY i.companyFk; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingExtra` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingExtra`(vInvoiceInId INT) BEGIN DECLARE vBookNumber,vSerialNumber INT; CALL invoiceInBookingCommon(vInvoiceInId,vSerialNumber); SELECT MAX(ASIEN) + 1 INTO vBookNumber FROM vn2008.XDiario; -- Actualizacion de la fecha de contabilizado y de operacion de las importaciones UPDATE invoiceInEntry iie JOIN invoiceIn ii ON ii.id = iie.invoiceInFk JOIN invoiceInAwb iia ON iia.invoiceInFk = iie.invoiceInAwbFk JOIN awb a ON a.id = iia.awbFk SET ii.isBooked = TRUE, ii.booked = IFNULL(ii.booked,a.booked), ii.operated = IFNULL(ii.operated,a.operated), ii.issued = IFNULL(ii.issued,a.issued), ii.bookEntried = IFNULL(ii.bookEntried,a.bookEntried) WHERE iie.invoiceInAwbFk = vInvoiceInId; -- Extracomunitarias gasto contra proveedor/acreedor INSERT INTO vn2008.XDiario ( ASIEN, FECHA, SUBCTA, CONTRA, EURODEBE, CONCEPTO, CAMBIO, DEBEME, NFACTICK, empresa_id ) SELECT vBookNumber ASIEN, IFNULL(a.bookEntried, n.bookEntried) FECHA, iit.expenceFk SUBCTA, s.account CONTRA, ROUND(SUM(iit.taxableBase) * (iie.percentage / 100),2) EURODEBE, CONCAT('COMPRA s/fra ',i.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, SUM(iit.taxableBase) / SUM(iit.foreignValue) CAMBIO, ROUND(SUM(iit.foreignValue) * (iie.percentage / 100),2) DEBEME, n.invoicesCount NFACTICK, n.companyFk empresa_id FROM newInvoiceIn n JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = n.id JOIN invoiceInTax iit ON iit.invoiceInFk = iie.invoiceInFk JOIN invoiceIn i ON i.id = iit.invoiceInFk JOIN supplier s ON s.id = i.supplierFk LEFT JOIN invoiceInAwb iia ON iia.invoiceInFk = n.id LEFT JOIN awb a ON a.id = iia.awbFk WHERE iie.percentage GROUP BY i.id; -- Extracomunitarias proveedor contra gasto INSERT INTO vn2008.XDiario ( ASIEN, FECHA, SUBCTA, CONTRA, EUROHABER, CONCEPTO, CAMBIO, HABERME, NFACTICK, empresa_id ) SELECT vBookNumber ASIEN, IFNULL(a.bookEntried, n.bookEntried) FECHA, s.account SUBCTA, iit.expenceFk CONTRA, ROUND(SUM(iit.taxableBase) * (iie.percentage / 100),2) EUROHABER, CONCAT('COMPRA s/fra ',i.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, SUM(iit.taxableBase) / SUM(iit.foreignValue) CAMBIO, SUM(iit.foreignValue) HABERME, n.invoicesCount NFACTICK, n.companyFk empresa_id FROM newInvoiceIn n JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = n.id JOIN invoiceInTax iit ON iit.invoiceInFk = iie.invoiceInFk JOIN invoiceIn i ON i.id = iit.invoiceInFk JOIN supplier s ON s.id = i.supplierFk LEFT JOIN invoiceInAwb iia ON iia.invoiceInFk = n.id LEFT JOIN awb a ON a.id = iia.awbFk WHERE iie.percentage GROUP BY i.id; -- Iva Importacion pendiente INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONCEPTO, EUROHABER,-- EURODEBE SERIE, empresa_id) SELECT vBookNumber, a.bookEntried, '4700000999', n.conceptWithSupplier, ROUND(SUM(iii.amount * (tc.rate/100)),2) eurohaber, n.serial, n.companyFk FROM newInvoiceIn n JOIN invoiceInIntrastat iii ON n.id = iii.invoiceInFk JOIN intrastat ii ON ii.id = iii.intrastatFk JOIN taxCode tc ON tc.id = ii.taxCodeFk JOIN invoiceInAwb iia ON iia.invoiceInFk = iii.invoiceInFk JOIN awb a ON a.id = iia.awbFk HAVING eurohaber IS NOT NULL; -- Linea iva importacion extracomunitaria SET @cont:=1; SET @total:=0; INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EURODEBE, BASEEURO, CONCEPTO, FACTURA, IVA, AUXILIAR, SERIE, FECHA_EX, FECHA_OP, FACTURAEX, NFACTICK, L340, LDIFADUAN, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, TERIDNIF, TERNIF, TERNOM, empresa_id, FECREGCON ) SELECT vBookNumber ASIEN, x.FECHA, x.SUBCTA, x.CONTRA, IF (n.isSameCountry OR NOT s.isUeeMember, x.EURODEBE, NULL ) EURODEBE, x.BASEEURO, x.CONCEPTO, vSerialNumber FACTURA, x.IVA, '*' AUXILIAR, x.SERIE, x.FECHA_EX, x.FECHA_OP, x.dua FACTURAEX, n.invoicesCount NFACTICK, IF(@total:=@total + x.EURODEBE AND @cont:=@cont + 1 ,1,1) L340, TRUE LDIFADUAN, x.TIPOCLAVE, n.cplusTaxBreakFk TIPOEXENCI, n.cplusSubjectOpFk TIPONOSUJE, 5 TIPOFACT, n.cplusRectificationTypeFk TIPORECTIF, x.TERIDNIF, x.TERNIF, x.TERNOM, n.companyFk, IFNULL(x.FECREGCON,n.booked) FECREGCON FROM newInvoiceIn n JOIN newSupplier s JOIN ( SELECT -- CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) CONCAT('COMPRA s/fra ',ii.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, tc.code SUBCTA, s.account CONTRA, tc.rate IVA, ROUND(sum(b.buyingValue * b.quantity / intraSub.intrastatSum * taxSub.amount)*(tc.rate/100),2) EURODEBE, ROUND(sum(b.buyingValue * b.quantity / intraSub.intrastatSum * taxSub.amount),2) BASEEURO, ii.serial SERIE, e.supplierFk, iia.dua, iis.cplusTerIdNifFk TERIDNIF, s.nif AS TERNIF, s.name AS TERNOM, ii.booked FECREGCON, ii.cplusTrascendency472Fk TIPOCLAVE, a.issued FECHA_EX, a.operated FECHA_OP, a.bookEntried FECHA FROM invoiceInAwb iia JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = iia.invoiceInFk JOIN awb a ON a.id = iia.awbFk JOIN invoiceIn ii ON ii.id = iie.invoiceInFk JOIN invoiceInSerial iis ON iis.code = ii.serial JOIN buy b ON b.entryFk = iie.entryFk JOIN item i ON i.id = b.itemFk JOIN ( SELECT i.intrastatFk, sum(b.buyingValue * b.quantity) as intrastatSum FROM buy b JOIN item i ON i.id = b.itemFk JOIN invoiceInEntry iie ON iie.entryFk = b.entryFk JOIN invoiceInAwb iia ON iia.invoiceInFk = iie.invoiceInAwbFk JOIN awb aw ON aw.id =iia.awbFk WHERE iie.percentage AND iia.invoiceInFk = vInvoiceInId GROUP BY i.intrastatFk ) intraSub ON intraSub.intrastatFk = i.intrastatFk JOIN ( SELECT iii.intrastatFk, iii.amount, intr.taxCodeFk FROM invoiceInIntrastat iii JOIN intrastat intr ON intr.id = iii.intrastatFk WHERE iii.invoiceInFk = vInvoiceInId ) taxSub ON taxSub.intrastatFk = i.intrastatFk JOIN taxCode tc ON tc.id = taxSub.taxCodeFk JOIN entry e ON e.id = iie.entryFk JOIN supplier s ON s.id = e.supplierFk WHERE iie.invoiceInAwbFk = vInvoiceInId AND iie.percentage GROUP BY e.supplierFk, taxSub.taxCodeFk ) x GROUP BY x.supplierFk, x.IVA; /*UPDATE newInvoiceIn n JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = vInvoiceInId JOIN invoiceIn ii ON ii.id = iie.invoiceInFk SET ii.isBooked = TRUE, ii.booked = IFNULL(ii.booked,n.booked), ii.operated = IFNULL(ii.operated,n.operated), ii.issued = IFNULL(ii.issued,n.issued);*/ END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingkk`(vInvoiceInId INT) BEGIN /* OBSOLETO usar invoiceInBookingMain o invoiceInBookingExtra */ DECLARE vSerialNumber, vBookNumber, vBookNumberPlus1 INT; DECLARE vTotalAmount DECIMAL(10,2); DROP TEMPORARY TABLE IF EXISTS newInvoiceIn; CREATE TEMPORARY TABLE newInvoiceIn SELECT i.*, YEAR(i.booked) datedYear, -- CONCAT('s/fra',RIGHT(i.supplierRef,8)) concept, CONCAT('s/fra',RIGHT(i.supplierRef,8),':',LEFT(s.name, 10)) conceptWithSupplier, (cc.id = c.id) isSameCountry, cit.id invoicesCount FROM invoiceIn i JOIN cplusInvoiceType472 cit ON cit.id = i.cplusInvoiceType472Fk JOIN supplier s ON s.id = i.supplierFk JOIN country c ON c.id = s.countryFk JOIN supplier sc ON sc.id = i.companyFk JOIN country cc ON cc.id = sc.countryFk WHERE i.id = vInvoiceInId; DROP TEMPORARY TABLE IF EXISTS newSupplier; CREATE TEMPORARY TABLE newSupplier SELECT s.*, REPLACE(s.account,' ','') supplierAccount, IF(c.CEE < 2, TRUE, FALSE) isUeeMember FROM supplier s JOIN newInvoiceIn n JOIN country c ON c.id = s.countryFk WHERE s.id = n.supplierFk; IF (SELECT isActive FROM newSupplier) = 0 THEN CALL util.throw('INACTIVE_PROVIDER'); END IF; SELECT IFNULL(MAX(i.serialNumber) + 1,1) INTO vSerialNumber FROM invoiceIn i JOIN newInvoiceIn n WHERE i.serial LIKE n.serial AND YEAR(i.booked) = n.datedYear AND i.companyFk = n.companyFk GROUP BY i.companyFk; SELECT MAX(ASIEN) + 1 INTO vBookNumber FROM vn2008.XDiario; SET vBookNumberPlus1 = vBookNumber + 1; SELECT SUM(iit.taxableBase * IF(i.serial = 'R', 1 +(tc.rate/100),1)) INTO vTotalAmount FROM invoiceIn i JOIN invoiceInTax iit ON iit.invoiceInFk = i.id JOIN taxCode tc ON iit.taxCodeFk = tc.id WHERE i.id = vInvoiceInId; -- Apunte del proveedor INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, EUROHABER, CONCEPTO, NFACTICK, empresa_id) SELECT vBookNumber, n.booked, s.supplierAccount, vTotalAmount, n.conceptWithSupplier, n.invoicesCount, n.companyFk FROM newInvoiceIn n JOIN newSupplier s; -- ----------------------------------------------------------- Linea de Gastos INSERT INTO vn2008.XDiario ( ASIEN, FECHA, SUBCTA, CONTRA, EURODEBE, EUROHABER, CONCEPTO, NFACTICK, empresa_id ) SELECT vBookNumber ASIEN, n.booked FECHA, if( e.isWithheld, LPAD(RIGHT(s.supplierAccount ,5),10,iit.expenceFk), iit.expenceFk ) SUBCTA, s.supplierAccount CONTRA, if( e.isWithheld, NULL, ABS(ROUND(SUM(iit.taxableBase),2)) ) EURODEBE, if( e.isWithheld, ABS(ROUND(SUM(iit.taxableBase),2)), NULL ) EUROHABER, n.conceptWithSupplier CONCEPTO, n.invoicesCount NFACTICK, n.companyFk empresa_id FROM newInvoiceIn n JOIN newSupplier s JOIN invoiceInTax iit ON iit.invoiceInFk = n.id JOIN taxCode tc ON tc.id = iit.taxCodeFk JOIN expence e ON e.id = iit.expenceFk AND e.taxTypeFk = tc.taxTypeFk WHERE iit.expenceFk != 5660000002 GROUP BY iit.expenceFk; -- Extracomunitarias gasto contra proveedor/acreedor INSERT INTO vn2008.XDiario ( ASIEN, FECHA, SUBCTA, CONTRA, EURODEBE, CONCEPTO, NFACTICK, empresa_id ) SELECT vBookNumberPlus1 ASIEN, IFNULL(a.booked, n.booked) FECHA, iit.expenceFk SUBCTA, s.account CONTRA, ROUND(SUM(iit.taxableBase) * (iie.percentage / 100),2) EURODEBE, CONCAT('COMPRA s/fra ',i.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, n.invoicesCount NFACTICK, n.companyFk empresa_id FROM newInvoiceIn n JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = n.id JOIN invoiceInTax iit ON iit.invoiceInFk = iie.invoiceInFk JOIN invoiceIn i ON i.id = iit.invoiceInFk JOIN supplier s ON s.id = i.supplierFk LEFT JOIN invoiceInAwb iia ON iia.invoiceInFk = n.id LEFT JOIN awb a ON a.id = iia.awbFk WHERE iie.percentage GROUP BY i.id; -- Extracomunitarias proveedor contra gasto INSERT INTO vn2008.XDiario ( ASIEN, FECHA, SUBCTA, CONTRA, EUROHABER, CONCEPTO, NFACTICK, empresa_id ) SELECT vBookNumberPlus1 ASIEN, IFNULL(a.booked, n.booked) FECHA, s.account SUBCTA, iit.expenceFk CONTRA, ROUND(SUM(iit.taxableBase) * (iie.percentage / 100),2) EUROHABER, CONCAT('COMPRA s/fra ',i.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, n.invoicesCount NFACTICK, n.companyFk empresa_id FROM newInvoiceIn n JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = n.id JOIN invoiceInTax iit ON iit.invoiceInFk = iie.invoiceInFk JOIN invoiceIn i ON i.id = iit.invoiceInFk JOIN supplier s ON s.id = i.supplierFk LEFT JOIN invoiceInAwb iia ON iia.invoiceInFk = n.id LEFT JOIN awb a ON a.id = iia.awbFk WHERE iie.percentage GROUP BY i.id; -- -------------------------------------------------------------------- -- ------- Lineas de IVA --------------- -- -------------------------------------------------------------------- INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EURODEBE, BASEEURO, CONCEPTO, FACTURA, IVA, AUXILIAR, SERIE, TIPOOPE, FECHA_EX, FECHA_OP, NFACTICK, FACTURAEX, L340, LRECT349, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, TERIDNIF, TERNIF, TERNOM, FECREGCON, empresa_id ) SELECT vBookNumber ASIEN, n.booked FECHA, tc.code SUBCTA, s.supplierAccount CONTRA, SUM(ROUND(tc.rate/100*it.taxableBase + 0.0001,2)) EURODEBE, SUM(it.taxableBase) BASEEURO, GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, vSerialNumber FACTURA, tc.rate IVA, IF(isUeeMember AND eWithheld.id IS NULL,'','*') AUXILIAR, n.serial SERIE, tt.TIPOOPE, n.issued FECHA_EX, n.operated FECHA_OP, n.invoicesCount NFACTICK, n.supplierRef FACTURAEX, TRUE L340, (isSameCountry OR NOT isUeeMember) LRECT349, n.cplusTrascendency472Fk TIPOCLAVE, n.cplusTaxBreakFk TIPOEXENCI, n.cplusSubjectOpFk TIPONOSUJE, n.cplusInvoiceType472Fk TIPOFACT, n.cplusRectificationTypeFk TIPORECTIF, iis.cplusTerIdNifFk TERIDNIF, s.nif AS TERNIF, s.name AS TERNOM, n.booked FECREGCON, n.companyFk FROM newInvoiceIn n JOIN newSupplier s JOIN invoiceInTax it ON n.id = it.invoiceInFk JOIN taxCode tc ON tc.id = it.taxCodeFk JOIN taxType tt ON tt.id = tc.taxTypeFk JOIN invoiceInSerial iis ON iis.code = tt.serial JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk LEFT JOIN (SELECT eWithheld.id FROM invoiceInTax hold JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld WHERE hold.invoiceInFk = 58262 LIMIT 1 ) eWithheld ON TRUE WHERE tc.type != '-' AND tc.isActive GROUP BY tc.rate; -- Linea iva inversor sujeto pasivo INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EUROHABER, BASEEURO, CONCEPTO, FACTURA, IVA, AUXILIAR, SERIE, TIPOOPE, FECHA_EX, FECHA_OP, NFACTICK, FACTURAEX, L340, LRECT349, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, TERIDNIF, TERNIF, TERNOM, empresa_id ) SELECT vBookNumber ASIEN, n.booked FECHA, tcLink.code SUBCTA, s.supplierAccount CONTRA, ROUND(tcLink.rate/100*SUM(it.taxableBase) + 0.0001,2) EUROHABER, ROUND(SUM(it.taxableBase),2) BASEEURO, GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, vSerialNumber FACTURA, tcLink.rate IVA, '*' AUXILIAR, n.serial SERIE, tt.TIPOOPE, n.issued FECHA_EX, n.operated FECHA_OP, n.invoicesCount NFACTICK, n.supplierRef FACTURAEX, FALSE L340, (isSameCountry OR NOT isUeeMember) LRECT349, 1 TIPOCLAVE, n.cplusTaxBreakFk TIPOEXENCI, n.cplusSubjectOpFk TIPONOSUJE, n.cplusInvoiceType472Fk TIPOFACT, n.cplusRectificationTypeFk TIPORECTIF, iis.cplusTerIdNifFk TERIDNIF, s.nif AS TERNIF, s.name AS TERNOM, n.companyFk FROM newInvoiceIn n JOIN newSupplier s JOIN invoiceInTax it ON n.id = it.invoiceInFk JOIN taxCode tc ON tc.id = it.taxCodeFk JOIN taxType tt ON tt.id = tc.taxTypeFk JOIN invoiceInSerial iis ON iis.code = tt.serial JOIN taxCode tcLink ON tcLink.linkFk = tc.linkFk AND tc.id != tcLink.id JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk WHERE tc.isActive GROUP BY tcLink.rate, e.id; -- Iva Importacion pendiente INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONCEPTO, EUROHABER,-- EURODEBE SERIE, empresa_id) SELECT vBookNumberPlus1, a.booked, '4700000999', n.conceptWithSupplier, ROUND(SUM(iii.amount * (tc.rate/100)),2) eurohaber, n.serial, n.companyFk FROM newInvoiceIn n JOIN invoiceInIntrastat iii ON n.id = iii.invoiceInFk JOIN intrastat ii ON ii.id = iii.intrastatFk JOIN taxCode tc ON tc.id = ii.taxCodeFk JOIN invoiceInAwb iia ON iia.invoiceInFk = iii.invoiceInFk JOIN awb a ON a.id = iia.awbFk HAVING eurohaber IS NOT NULL; -- Linea iva importacion extracomunitaria SET @cont:=1; SET @total:=0; SET @base:=2; INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EURODEBE, BASEEURO, CONCEPTO, FACTURA, IVA, AUXILIAR, SERIE, FECHA_EX, FECHA_OP, FACTURAEX, NFACTICK, L340, LDIFADUAN, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, TERIDNIF, TERNIF, TERNOM, empresa_id, FECREGCON ) SELECT vBookNumberPlus1 ASIEN, x.FECHA, x.SUBCTA, x.CONTRA, IF (n.isSameCountry OR NOT s.isUeeMember, x.EURODEBE, NULL ) EURODEBE, x.BASEEURO, x.CONCEPTO, vSerialNumber FACTURA, x.IVA, '*' AUXILIAR, x.SERIE, x.FECHA_EX, x.FECHA_OP, x.dua FACTURAEX, n.invoicesCount NFACTICK, IF(@total:=@total + x.EURODEBE AND @cont:=@cont + 1 ,1,1) L340, TRUE LDIFADUAN, x.TIPOCLAVE, n.cplusTaxBreakFk TIPOEXENCI, n.cplusSubjectOpFk TIPONOSUJE, 5 TIPOFACT, n.cplusRectificationTypeFk TIPORECTIF, x.TERIDNIF, x.TERNIF, x.TERNOM, n.companyFk, IFNULL(x.FECREGCON,n.booked) FECREGCON FROM newInvoiceIn n JOIN newSupplier s JOIN ( SELECT -- CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) CONCAT('COMPRA s/fra ',ii.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, tc.code SUBCTA, s.account CONTRA, tc.rate IVA, ROUND(sum(b.buyingValue * b.quantity / intraSub.intrastatSum * taxSub.amount)*(tc.rate/100),2) EURODEBE, ROUND(sum(b.buyingValue * b.quantity / intraSub.intrastatSum * taxSub.amount),2) BASEEURO, ii.serial SERIE, e.supplierFk, iia.dua, iis.cplusTerIdNifFk TERIDNIF, s.nif AS TERNIF, s.name AS TERNOM, ii.booked FECREGCON, ii.cplusTrascendency472Fk TIPOCLAVE, a.issued FECHA_EX, a.operated FECHA_OP, a.booked FECHA FROM invoiceInAwb iia JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = iia.invoiceInFk JOIN awb a ON a.id = iia.awbFk JOIN invoiceIn ii ON ii.id = iie.invoiceInFk JOIN invoiceInSerial iis ON iis.code = ii.serial JOIN buy b ON b.entryFk = iie.entryFk JOIN item i ON i.id = b.itemFk JOIN ( SELECT i.intrastatFk, sum(b.buyingValue * b.quantity) as intrastatSum FROM buy b JOIN item i ON i.id = b.itemFk JOIN invoiceInEntry iie ON iie.entryFk = b.entryFk JOIN invoiceInAwb iia ON iia.invoiceInFk = iie.invoiceInAwbFk JOIN awb aw ON aw.id =iia.awbFk WHERE iie.percentage AND iia.invoiceInFk = vInvoiceInId GROUP BY i.intrastatFk ) intraSub ON intraSub.intrastatFk = i.intrastatFk JOIN ( SELECT iii.intrastatFk, iii.amount, intr.taxCodeFk FROM invoiceInIntrastat iii JOIN intrastat intr ON intr.id = iii.intrastatFk WHERE iii.invoiceInFk = vInvoiceInId ) taxSub ON taxSub.intrastatFk = i.intrastatFk JOIN taxCode tc ON tc.id = taxSub.taxCodeFk JOIN entry e ON e.id = iie.entryFk JOIN supplier s ON s.id = e.supplierFk WHERE iie.invoiceInAwbFk = vInvoiceInId AND iie.percentage GROUP BY e.supplierFk, taxSub.taxCodeFk ) x GROUP BY x.supplierFk, x.IVA; -- Actualizacion de la fecha de contabilizado y de operacion de las importaciones UPDATE newInvoiceIn n JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = vInvoiceInId JOIN invoiceIn ii ON ii.id = iie.invoiceInFk SET ii.booked = IFNULL(ii.booked,n.booked), ii.operated = IFNULL(ii.operated,n.issued); -- Actualización del registro original UPDATE invoiceIn SET serialNumber = vSerialNumber, isBooked = TRUE WHERE id = vInvoiceInId; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingMain` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingMain`(vInvoiceInId INT) BEGIN DECLARE vTotalAmount,vTotalAmountDivisa DECIMAL(10,2); DECLARE vBookNumber,vSerialNumber INT; DECLARE vRate DECIMAL(10,4); CALL invoiceInBookingCommon(vInvoiceInId,vSerialNumber); SELECT SUM(iit.taxableBase * IF(i.serial = 'R', 1 +(tc.rate/100),1)), SUM(iit.foreignValue * IF(i.serial = 'R', 1 +(tc.rate/100),1)), iit.taxableBase/iit.foreignValue INTO vTotalAmount, vTotalAmountDivisa, vRate FROM newInvoiceIn i JOIN invoiceInTax iit ON iit.invoiceInFk = i.id JOIN taxCode tc ON iit.taxCodeFk = tc.id; SELECT MAX(ASIEN) + 1 INTO vBookNumber FROM vn2008.XDiario; -- Apunte del proveedor INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, EUROHABER, CONCEPTO, CAMBIO, HABERME, NFACTICK, CLAVE, empresa_id) SELECT vBookNumber, n.bookEntried, s.supplierAccount, vTotalAmount, n.conceptWithSupplier, vRate, vTotalAmountDivisa, n.invoicesCount, vInvoiceInId, n.companyFk FROM newInvoiceIn n JOIN newSupplier s; -- ----------------------------------------------------------- Linea de Gastos INSERT INTO vn2008.XDiario ( ASIEN, FECHA, SUBCTA, CONTRA, EURODEBE, EUROHABER, CONCEPTO, CAMBIO, DEBEME, HABERME, NFACTICK, empresa_id ) SELECT vBookNumber ASIEN, n.bookEntried FECHA, if( e.isWithheld, LPAD(RIGHT(s.supplierAccount,5),10,iit.expenceFk), iit.expenceFk ) SUBCTA, s.supplierAccount CONTRA, if( e.isWithheld, NULL, ABS(ROUND(SUM(iit.taxableBase),2)) ) EURODEBE, if( e.isWithheld, ABS(ROUND(SUM(iit.taxableBase),2)), NULL ) EUROHABER, n.conceptWithSupplier CONCEPTO, vRate, if( e.isWithheld, NULL, ABS(ROUND(SUM(iit.foreignValue),2)) ) DEBEME, if( e.isWithheld, ABS(ROUND(SUM(iit.foreignValue),2)), NULL ) HABERME, n.invoicesCount NFACTICK, n.companyFk empresa_id FROM newInvoiceIn n JOIN newSupplier s JOIN invoiceInTax iit ON iit.invoiceInFk = n.id JOIN taxCode tc ON tc.id = iit.taxCodeFk JOIN expence e ON e.id = iit.expenceFk AND e.taxTypeFk = tc.taxTypeFk WHERE iit.expenceFk != 5660000002 GROUP BY iit.expenceFk; -- -------------------------------------------------------------------- -- ------- Lineas de IVA --------------- -- -------------------------------------------------------------------- INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EURODEBE, BASEEURO, CONCEPTO, FACTURA, IVA, AUXILIAR, SERIE, TIPOOPE, FECHA_EX, FECHA_OP, NFACTICK, FACTURAEX, L340, LRECT349, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, TERIDNIF, TERNIF, TERNOM, FECREGCON, empresa_id ) SELECT vBookNumber ASIEN, n.bookEntried FECHA, tc.code SUBCTA, s.supplierAccount CONTRA, SUM(ROUND(tc.rate/100*it.taxableBase + 0.0001,2)) EURODEBE, SUM(it.taxableBase) BASEEURO, GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, vSerialNumber FACTURA, tc.rate IVA, IF(isUeeMember AND eWithheld.id IS NULL,'','*') AUXILIAR, n.serial SERIE, tt.TIPOOPE, n.issued FECHA_EX, n.operated FECHA_OP, n.invoicesCount NFACTICK, n.supplierRef FACTURAEX, TRUE L340, (isSameCountry OR NOT isUeeMember) LRECT349, n.cplusTrascendency472Fk TIPOCLAVE, n.cplusTaxBreakFk TIPOEXENCI, n.cplusSubjectOpFk TIPONOSUJE, n.cplusInvoiceType472Fk TIPOFACT, n.cplusRectificationTypeFk TIPORECTIF, iis.cplusTerIdNifFk TERIDNIF, s.nif AS TERNIF, s.name AS TERNOM, n.booked FECREGCON, n.companyFk FROM newInvoiceIn n JOIN newSupplier s JOIN invoiceInTax it ON n.id = it.invoiceInFk JOIN taxCode tc ON tc.id = it.taxCodeFk JOIN taxType tt ON tt.id = tc.taxTypeFk JOIN invoiceInSerial iis ON iis.code = tt.serial JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk LEFT JOIN (SELECT eWithheld.id FROM invoiceInTax hold JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld WHERE hold.invoiceInFk = 58262 LIMIT 1 ) eWithheld ON TRUE WHERE tc.type != '-' AND tc.isActive GROUP BY tc.rate; -- Linea iva inversor sujeto pasivo INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EUROHABER, BASEEURO, CONCEPTO, FACTURA, IVA, AUXILIAR, SERIE, TIPOOPE, FECHA_EX, FECHA_OP, NFACTICK, FACTURAEX, L340, LRECT349, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, TERIDNIF, TERNIF, TERNOM, empresa_id ) SELECT vBookNumber ASIEN, n.bookEntried FECHA, tcLink.code SUBCTA, s.supplierAccount CONTRA, ROUND(tcLink.rate/100*SUM(it.taxableBase) + 0.0001,2) EUROHABER, ROUND(SUM(it.taxableBase),2) BASEEURO, GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, vSerialNumber FACTURA, tcLink.rate IVA, '*' AUXILIAR, n.serial SERIE, tt.TIPOOPE, n.issued FECHA_EX, n.operated FECHA_OP, n.invoicesCount NFACTICK, n.supplierRef FACTURAEX, FALSE L340, (isSameCountry OR NOT isUeeMember) LRECT349, 1 TIPOCLAVE, n.cplusTaxBreakFk TIPOEXENCI, n.cplusSubjectOpFk TIPONOSUJE, n.cplusInvoiceType472Fk TIPOFACT, n.cplusRectificationTypeFk TIPORECTIF, iis.cplusTerIdNifFk TERIDNIF, s.nif AS TERNIF, s.name AS TERNOM, n.companyFk FROM newInvoiceIn n JOIN newSupplier s JOIN invoiceInTax it ON n.id = it.invoiceInFk JOIN taxCode tc ON tc.id = it.taxCodeFk JOIN taxType tt ON tt.id = tc.taxTypeFk JOIN invoiceInSerial iis ON iis.code = tt.serial JOIN taxCode tcLink ON tcLink.link = tc.link AND tc.id != tcLink.id JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk WHERE tc.isActive GROUP BY tcLink.rate, e.id; -- Actualización del registro original UPDATE invoiceIn ii JOIN newInvoiceIn ni ON ii.id = ni.id SET ii.serialNumber = vSerialNumber, ii.isBooked = TRUE; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingMainkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingMainkk`(vInvoiceInId INT) BEGIN DECLARE vTotalAmount DECIMAL(10,2); DECLARE vBookNumber,vSerialNumber INT; CALL invoiceInBookingCommon(vInvoiceInId,vSerialNumber); SELECT SUM(iit.taxableBase * IF(i.serial = 'R', 1 +(tc.rate/100),1)) INTO vTotalAmount FROM newInvoiceIn i JOIN invoiceInTax iit ON iit.invoiceInFk = i.id JOIN taxCode tc ON iit.taxCodeFk = tc.id; SELECT MAX(ASIEN) + 1 INTO vBookNumber FROM vn2008.XDiario; -- Apunte del proveedor INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, EUROHABER, CONCEPTO, NFACTICK, empresa_id) SELECT vBookNumber, n.bookEntried, s.supplierAccount, vTotalAmount, n.conceptWithSupplier, n.invoicesCount, n.companyFk FROM newInvoiceIn n JOIN newSupplier s; -- ----------------------------------------------------------- Linea de Gastos INSERT INTO vn2008.XDiario ( ASIEN, FECHA, SUBCTA, CONTRA, EURODEBE, EUROHABER, CONCEPTO, NFACTICK, empresa_id ) SELECT vBookNumber ASIEN, n.bookEntried FECHA, if( e.isWithheld, LPAD(RIGHT(s.supplierAccount ,5),10,iit.expenceFk), iit.expenceFk ) SUBCTA, s.supplierAccount CONTRA, if( e.isWithheld, NULL, ABS(ROUND(SUM(iit.taxableBase),2)) ) EURODEBE, if( e.isWithheld, ABS(ROUND(SUM(iit.taxableBase),2)), NULL ) EUROHABER, n.conceptWithSupplier CONCEPTO, n.invoicesCount NFACTICK, n.companyFk empresa_id FROM newInvoiceIn n JOIN newSupplier s JOIN invoiceInTax iit ON iit.invoiceInFk = n.id JOIN taxCode tc ON tc.id = iit.taxCodeFk JOIN expence e ON e.id = iit.expenceFk AND e.taxTypeFk = tc.taxTypeFk WHERE iit.expenceFk != 5660000002 GROUP BY iit.expenceFk; -- -------------------------------------------------------------------- -- ------- Lineas de IVA --------------- -- -------------------------------------------------------------------- INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EURODEBE, BASEEURO, CONCEPTO, FACTURA, IVA, AUXILIAR, SERIE, TIPOOPE, FECHA_EX, FECHA_OP, NFACTICK, FACTURAEX, L340, LRECT349, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, TERIDNIF, TERNIF, TERNOM, FECREGCON, empresa_id ) SELECT vBookNumber ASIEN, n.bookEntried FECHA, tc.code SUBCTA, s.supplierAccount CONTRA, SUM(ROUND(tc.rate/100*it.taxableBase + 0.0001,2)) EURODEBE, SUM(it.taxableBase) BASEEURO, GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, vSerialNumber FACTURA, tc.rate IVA, IF(isUeeMember AND eWithheld.id IS NULL,'','*') AUXILIAR, n.serial SERIE, tt.TIPOOPE, n.issued FECHA_EX, n.operated FECHA_OP, n.invoicesCount NFACTICK, n.supplierRef FACTURAEX, TRUE L340, (isSameCountry OR NOT isUeeMember) LRECT349, n.cplusTrascendency472Fk TIPOCLAVE, n.cplusTaxBreakFk TIPOEXENCI, n.cplusSubjectOpFk TIPONOSUJE, n.cplusInvoiceType472Fk TIPOFACT, n.cplusRectificationTypeFk TIPORECTIF, iis.cplusTerIdNifFk TERIDNIF, s.nif AS TERNIF, s.name AS TERNOM, n.booked FECREGCON, n.companyFk FROM newInvoiceIn n JOIN newSupplier s JOIN invoiceInTax it ON n.id = it.invoiceInFk JOIN taxCode tc ON tc.id = it.taxCodeFk JOIN taxType tt ON tt.id = tc.taxTypeFk JOIN invoiceInSerial iis ON iis.code = tt.serial JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk LEFT JOIN (SELECT eWithheld.id FROM invoiceInTax hold JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld WHERE hold.invoiceInFk = 58262 LIMIT 1 ) eWithheld ON TRUE WHERE tc.type != '-' AND tc.isActive GROUP BY tc.rate; -- Linea iva inversor sujeto pasivo INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EUROHABER, BASEEURO, CONCEPTO, FACTURA, IVA, AUXILIAR, SERIE, TIPOOPE, FECHA_EX, FECHA_OP, NFACTICK, FACTURAEX, L340, LRECT349, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, TERIDNIF, TERNIF, TERNOM, empresa_id ) SELECT vBookNumber ASIEN, n.bookEntried FECHA, tcLink.code SUBCTA, s.supplierAccount CONTRA, ROUND(tcLink.rate/100*SUM(it.taxableBase) + 0.0001,2) EUROHABER, ROUND(SUM(it.taxableBase),2) BASEEURO, GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, vSerialNumber FACTURA, tcLink.rate IVA, '*' AUXILIAR, n.serial SERIE, tt.TIPOOPE, n.issued FECHA_EX, n.operated FECHA_OP, n.invoicesCount NFACTICK, n.supplierRef FACTURAEX, FALSE L340, (isSameCountry OR NOT isUeeMember) LRECT349, 1 TIPOCLAVE, n.cplusTaxBreakFk TIPOEXENCI, n.cplusSubjectOpFk TIPONOSUJE, n.cplusInvoiceType472Fk TIPOFACT, n.cplusRectificationTypeFk TIPORECTIF, iis.cplusTerIdNifFk TERIDNIF, s.nif AS TERNIF, s.name AS TERNOM, n.companyFk FROM newInvoiceIn n JOIN newSupplier s JOIN invoiceInTax it ON n.id = it.invoiceInFk JOIN taxCode tc ON tc.id = it.taxCodeFk JOIN taxType tt ON tt.id = tc.taxTypeFk JOIN invoiceInSerial iis ON iis.code = tt.serial JOIN taxCode tcLink ON tcLink.linkFk = tc.linkFk AND tc.id != tcLink.id JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk WHERE tc.isActive GROUP BY tcLink.rate, e.id; -- Actualización del registro original UPDATE invoiceIn ii JOIN newInvoiceIn ni ON ii.id = ni.id SET ii.serialNumber = vSerialNumber, ii.isBooked = TRUE; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceMakeByClient` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceMakeByClient`(vClientFk INT, vSerial CHAR(1), vShipped DATE, vCompanyFk INT, OUT vInvoiceId INT) BEGIN /** * Factura un ticket * @param vTicketFk Id del ticket * @param vSerial Serie de factura * @return Id factura */ CALL invoiceFromClient(vShipped, vClientFk, vCompanyFk); CALL invoiceOutMake(vSerial, CURDATE(), vInvoiceId); IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN CALL invoiceOutBooking(vInvoiceId); INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(1, 3, vInvoiceId); END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceMakeByTicket` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceMakeByTicket`(vTicketFk INT, vSerial CHAR(1), OUT vInvoiceId INT) BEGIN /** * Factura un ticket * @param vTicketFk Id del ticket * @param vSerial Serie de factura * @return Id factura */ CALL invoiceFromTicket(vTicketFk); CALL invoiceOutMake(vSerial, CURDATE(), vInvoiceId); IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN CALL invoiceOutBooking(vInvoiceId); INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(1, 3, vInvoiceId); END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutAgain` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutAgain`(IN vInvoiceRef VARCHAR(15)) BEGIN /* Para tickets ya facturados, vuelve a repetir el proceso de facturación. * * @param vInvoice Numero de factura */ DECLARE vInvoice INT; DECLARE vCountry INT; DECLARE vTaxArea VARCHAR(15); DECLARE vSpainCountryCode INT DEFAULT 1; SELECT id INTO vInvoice FROM invoiceOut WHERE ref = vInvoiceRef; UPDATE invoiceOut SET pdf = 0 WHERE id = vInvoice; SELECT s.countryFk INTO vCountry FROM supplier s JOIN invoiceOut io ON io.companyFk = s.id WHERE io.id = vInvoice; SELECT IF(a.isEqualizated AND c.countryFk = vSpainCountryCode AND i.taxAreaFk = 'NATIONAL', 'EQU', i.taxAreaFk) INTO vTaxArea FROM invoiceOutSerial i JOIN invoiceOut io JOIN ticket t ON t.refFk = io.ref JOIN address a ON a.id = t.addressFk JOIN client c ON c.id = t.clientFk WHERE io.id = vInvoice AND i.code = invoiceSerial(io.clientFk,io.companyFk,'R') LIMIT 1; DROP TEMPORARY TABLE IF EXISTS ticketToInvoice; CREATE TEMPORARY TABLE ticketToInvoice SELECT id FROM ticket WHERE refFk = vInvoiceRef; CALL invoiceExpenceMake(vInvoice); CALL invoiceTaxMake(vInvoice,vCountry,vTaxArea); UPDATE invoiceOut io JOIN ( SELECT SUM(amount) AS total FROM invoiceOutExpence WHERE invoiceOutFk = vInvoice ) base JOIN ( SELECT SUM(vat) AS total FROM invoiceOutTax WHERE invoiceOutFk = vInvoice ) vat SET io.amount = base.total + vat.total WHERE io.id = vInvoice; CALL vn.invoiceOutBooking(vInvoice); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutAgainDateRange` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutAgainDateRange`(IN vFirstDate DATE, IN vLastDate DATE) BEGIN DECLARE done BOOL DEFAULT FALSE; DECLARE vInvoice INT; DECLARE vInvoiceRef VARCHAR(15); DECLARE vContador INT DEFAULT 0; DECLARE rs CURSOR FOR SELECT id, ref FROM vn.invoiceOut WHERE issued BETWEEN vFirstDate AND vLastDate AND booked IS NULL; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN rs; FETCH rs INTO vInvoice, vInvoiceRef; WHILE NOT done DO CALL vn.invoiceOutAgain(vInvoiceRef); FETCH rs INTO vInvoice, vInvoiceRef; SET vContador = vContador + 1; IF vContador MOD 50 = 0 THEN SELECT CONCAT(vContador, ' de momento') AS FACTURAS_ASENTADAS; END IF; END WHILE; CLOSE rs; SELECT CONCAT(vContador, ' total') AS FACTURAS_ASENTADAS; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutBooking` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutBooking`(IN vInvoice INT) BEGIN /* Asienta la factura emitida * * param vInvoice factura_id */ DECLARE vBookNumber INT; DECLARE vExpenceConcept VARCHAR(50); DECLARE isUEENotSpain INT DEFAULT 1; DECLARE vSpain INT DEFAULT 1; DECLARE vOldBookNumber INT; SELECT ASIEN INTO vOldBookNumber FROM vn2008.XDiario x JOIN vn.invoiceOut io ON io.id = vInvoice WHERE x.SERIE = io.serial AND x.FACTURA = RIGHT(io.ref, LENGTH(io.ref) - 1) LIMIT 1; DELETE FROM vn2008.XDiario WHERE ASIEN = vOldBookNumber; DROP TEMPORARY TABLE IF EXISTS rs; CREATE TEMPORARY TABLE rs SELECT c.accountingAccount AS clientBookingAccount, io.amount as totalAmount, CONCAT('n/fra ', io.ref) as simpleConcept, CONCAT('n/fra ', io.ref, ' ', c.name) as Concept, io.serial AS SERIE, io.issued AS FECHA_EX, opDate.FECHA_OP, io.issued AS FECHA, 1 AS NFACTICK, IF(ic.correctingFk,'D','') AS TIPOOPE, io.cplusTrascendency477Fk AS TIPOCLAVE, io.cplusTaxBreakFk AS TIPOEXENCI, io.cplusSubjectOpFk AS TIPONOSUJE, io.cplusInvoiceType477Fk AS TIPOFACT, ic.cplusRectificationTypeFk AS TIPORECTIF, io.companyFk, RIGHT(io.ref, LENGTH(io.ref) - 1) AS invoiceNum, IF(ct.politicalCountryFk = vSpain, 1, IF(ct.CEE = isUEENotSpain,2,4)) AS TERIDNIF, CONCAT(IF(ct.CEE = isUEENotSpain,ct.code,''),c.fi) AS TERNIF, c.socialName AS TERNOM, ior.serial AS SERIE_RT, RIGHT(ior.ref, LENGTH(ior.ref) - 1) AS FACTU_RT, ior.issued AS FECHA_RT, IF(ior.id,TRUE,FALSE) AS RECTIFICA FROM invoiceOut io JOIN ( SELECT GREATEST(MAX(shipped), TIMESTAMPADD(DAY,-15,io.issued)) as FECHA_OP FROM ticket t JOIN invoiceOut io ON io.ref = t.refFk WHERE io.id = vInvoice ) opDate JOIN invoiceOutSerial ios ON ios.code = io.serial JOIN client c ON c.id = io.clientFk JOIN country ct ON ct.id = c.countryFk LEFT JOIN invoiceCorrection ic ON ic.correctingFk = io.id LEFT JOIN invoiceOut ior ON ior.id = ic.correctedFk WHERE io.id = vInvoice; SELECT MAX(ASIEN) + 1 INTO vBookNumber FROM vn2008.XDiario; -- Linea del cliente INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, EURODEBE, CONCEPTO, FECHA_EX, FECHA_OP, empresa_id ) SELECT vBookNumber AS ASIEN, rs.FECHA, rs.clientBookingAccount AS SUBCTA, rs.totalAmount AS EURODEBE, rs.simpleConcept AS CONCEPTO, rs.FECHA_EX, rs.FECHA_OP, rs.companyFk AS empresa_id FROM rs; -- Lineas de gasto INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EUROHABER, CONCEPTO, FECHA_EX, FECHA_OP, empresa_id ) SELECT vBookNumber AS ASIEN, rs.FECHA, ioe.expenceFk AS SUBCTA, rs.clientBookingAccount AS CONTRA, ioe.amount AS EUROHABER, rs.Concept AS CONCEPTO, rs.FECHA_EX, rs.FECHA_OP, rs.companyFk AS empresa_id FROM rs JOIN invoiceOutExpence ioe WHERE ioe.invoiceOutFk = vInvoice; SELECT GROUP_CONCAT(`name` SEPARATOR ',') INTO vExpenceConcept FROM expence e JOIN invoiceOutExpence ioe ON ioe.expenceFk = e.id WHERE ioe.invoiceOutFk = vInvoice; -- Lineas de IVA INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EUROHABER, BASEEURO, CONCEPTO, FACTURA, IVA, RECEQUIV, AUXILIAR, SERIE, SERIE_RT, FACTU_RT, RECTIFICA, FECHA_RT, FECHA_OP, FECHA_EX, TIPOOPE, NFACTICK, TERIDNIF, TERNIF, TERNOM, L340, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, empresa_id ) SELECT vBookNumber AS ASIEN, rs.FECHA, iot.pgcFk AS SUBCTA, rs.clientBookingAccount AS CONTRA, iot.vat AS EUROHABER, iot.taxableBase AS BASEEURO, CONCAT(vExpenceConcept,' : ',rs.Concept) AS CONCEPTO, rs.invoiceNum AS FACTURA, IF(pe2.equFk,0,pgc.rate) AS IVA, IF(pe2.equFk,0,pgce.rate) AS RECEQUIV, IF(pgc.mod347,'','*') AS AUXILIAR, rs.SERIE, rs.SERIE_RT, rs.FACTU_RT, rs.RECTIFICA, rs.FECHA_RT, rs.FECHA_OP, rs.FECHA_EX, rs.TIPOOPE, rs.NFACTICK, rs.TERIDNIF, rs.TERNIF, rs.TERNOM, pgc.mod340 AS L340, pgc.cplusTrascendency477Fk AS TIPOCLAVE, pgc.cplusTaxBreakFk as TIPOEXENCI, rs.TIPONOSUJE, rs.TIPOFACT, rs.TIPORECTIF, rs.companyFk AS empresa_id FROM rs JOIN invoiceOutTax iot JOIN pgc ON pgc.code = iot.pgcFk LEFT JOIN pgcEqu pe ON pe.vatFk = iot.pgcFk -- --------------- Comprueba si la linea es de iva con rec.equiv. asociado LEFT JOIN pgc pgce ON pgce.code = pe.equFk LEFT JOIN pgcEqu pe2 ON pe2.equFk = iot.pgcFk -- --------------- Comprueba si la linea es de rec.equiv. WHERE iot.invoiceOutFk = vInvoice; UPDATE invoiceOut SET booked = CURDATE() WHERE id = vInvoice; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutBookingkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutBookingkk`(IN vInvoice INT) BEGIN /* Asienta la factura emitida * * param vInvoice factura_id */ DECLARE vBookNumber INT; DECLARE vExpenceConcept VARCHAR(50); DECLARE isUEENotSpain INT DEFAULT 1; DECLARE vOldBookNumber INT; SELECT ASIEN INTO vOldBookNumber FROM vn2008.XDiario x JOIN vn.invoiceOut io ON io.id = vInvoice WHERE x.SERIE = io.serial AND x.FACTURA = RIGHT(io.ref, LENGTH(io.ref) - 1) LIMIT 1; DELETE FROM vn2008.XDiario WHERE ASIEN = vOldBookNumber; SELECT MAX(ASIEN) + 1 INTO vBookNumber FROM vn2008.XDiario; DROP TEMPORARY TABLE IF EXISTS rs; CREATE TEMPORARY TABLE rs SELECT c.accountingAccount AS clientBookingAccount, io.amount as totalAmount, CONCAT('n/fra ', io.ref) as simpleConcept, CONCAT('n/fra ', io.ref, ' ', c.name) as Concept, io.serial AS SERIE, io.issued AS FECHA_EX, opDate.FECHA_OP, io.issued AS FECHA, 1 AS NFACTICK, IF(ic.correctingFk,'D','') AS TIPOOPE, io.cplusTrascendency477Fk AS TIPOCLAVE, io.cplusTaxBreakFk AS TIPOEXENCI, io.cplusSubjectOpFk AS TIPONOSUJE, io.cplusInvoiceType477Fk AS TIPOFACT, ic.cplusRectificationTypeFk AS TIPORECTIF, io.companyFk, RIGHT(io.ref, LENGTH(io.ref) - 1) AS invoiceNum, IF(ct.CEE = 0, 1, IF(ct.CEE = isUEENotSpain,2,4)) AS TERIDNIF, CONCAT(IF(ct.CEE = isUEENotSpain,ct.code,''),c.fi) AS TERNIF, c.socialName AS TERNOM, ior.serial AS SERIE_RT, RIGHT(ior.ref, LENGTH(ior.ref) - 1) AS FACTU_RT, ior.issued AS FECHA_RT, IF(ior.id,TRUE,FALSE) AS RECTIFICA FROM invoiceOut io JOIN ( SELECT MAX(shipped) as FECHA_OP FROM ticket t JOIN invoiceOut io ON io.ref = t.refFk WHERE io.id = vInvoice ) opDate JOIN invoiceOutSerial ios ON ios.code = io.serial JOIN client c ON c.id = io.clientFk JOIN country ct ON ct.id = c.countryFk LEFT JOIN invoiceCorrection ic ON ic.correctingFk = io.id LEFT JOIN invoiceOut ior ON ior.id = ic.correctedFk WHERE io.id = vInvoice; -- Linea del cliente INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, EURODEBE, CONCEPTO, FECHA_EX, FECHA_OP, empresa_id ) SELECT vBookNumber AS ASIEN, rs.FECHA, rs.clientBookingAccount AS SUBCTA, rs.totalAmount AS EURODEBE, rs.simpleConcept AS CONCEPTO, rs.FECHA_EX, rs.FECHA_OP, rs.companyFk AS empresa_id FROM rs; -- Lineas de gasto INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EUROHABER, CONCEPTO, FECHA_EX, FECHA_OP, empresa_id ) SELECT vBookNumber AS ASIEN, rs.FECHA, ioe.expenceFk AS SUBCTA, rs.clientBookingAccount AS CONTRA, ioe.amount AS EUROHABER, rs.Concept AS CONCEPTO, rs.FECHA_EX, rs.FECHA_OP, rs.companyFk AS empresa_id FROM rs JOIN invoiceOutExpence ioe WHERE ioe.invoiceOutFk = vInvoice; SELECT GROUP_CONCAT(`name` SEPARATOR ',') INTO vExpenceConcept FROM expence e JOIN invoiceOutExpence ioe ON ioe.expenceFk = e.id WHERE ioe.invoiceOutFk = vInvoice; -- Lineas de IVA INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONTRA, EUROHABER, BASEEURO, CONCEPTO, FACTURA, IVA, RECEQUIV, AUXILIAR, SERIE, SERIE_RT, FACTU_RT, RECTIFICA, FECHA_RT, FECHA_OP, FECHA_EX, TIPOOPE, NFACTICK, TERIDNIF, TERNIF, TERNOM, L340, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, empresa_id ) SELECT vBookNumber AS ASIEN, rs.FECHA, iot.pgcFk AS SUBCTA, rs.clientBookingAccount AS CONTRA, iot.vat AS EUROHABER, iot.taxableBase AS BASEEURO, CONCAT(vExpenceConcept,' : ',rs.Concept) AS CONCEPTO, rs.invoiceNum AS FACTURA, IF(pe2.equFk,0,pgc.rate) AS IVA, IF(pe2.equFk,0,pgce.rate) AS RECEQUIV, IF(pgc.mod347,'','*') AS AUXILIAR, rs.SERIE, rs.SERIE_RT, rs.FACTU_RT, rs.RECTIFICA, rs.FECHA_RT, rs.FECHA_OP, rs.FECHA_EX, rs.TIPOOPE, rs.NFACTICK, rs.TERIDNIF, rs.TERNIF, rs.TERNOM, pgc.mod340 AS L340, pgc.cplusTrascendency477Fk AS TIPOCLAVE, pgc.cplusTaxBreakFk as TIPOEXENCI, rs.TIPONOSUJE, rs.TIPOFACT, rs.TIPORECTIF, rs.companyFk AS empresa_id FROM rs JOIN invoiceOutTax iot JOIN pgc ON pgc.code = iot.pgcFk LEFT JOIN pgcEqu pe ON pe.vatFk = iot.pgcFk -- --------------- Comprueba si la linea es de iva con rec.equiv. asociado LEFT JOIN pgc pgce ON pgce.code = pe.equFk LEFT JOIN pgcEqu pe2 ON pe2.equFk = iot.pgcFk -- --------------- Comprueba si la linea es de rec.equiv. WHERE iot.invoiceOutFk = vInvoice; UPDATE invoiceOut SET booked = CURDATE() WHERE id = vInvoice; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutBookingRange` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutBookingRange`() BEGIN /* Reasentar facturas */ DECLARE vInvoice INT; DECLARE vContador INT DEFAULT 0; DECLARE done BOOL DEFAULT FALSE; DECLARE rs CURSOR FOR SELECT io.id FROM invoiceOut io WHERE RIGHT(ref,7) BETWEEN 1724215 AND 1724224 AND serial = 'T'; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN rs; FETCH rs INTO vInvoice; WHILE NOT done DO CALL invoiceOutBooking(vInvoice); FETCH rs INTO vInvoice ; SET vContador = vContador + 1; IF vContador MOD 50 = 0 THEN SELECT CONCAT(vContador, ' de momento') AS FACTURAS_ASENTADAS; END IF; END WHILE; CLOSE rs; SELECT CONCAT(vContador, ' total') AS FACTURAS_ASENTADAS; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutDelete` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutDelete`(vRef VARCHAR(15)) BEGIN UPDATE ticket SET refFk = NULL WHERE refFk = vRef; DELETE FROM invoiceOut WHERE ref = vRef; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutFix_BI_RE_IVA` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutFix_BI_RE_IVA`() BEGIN DECLARE done BOOL DEFAULT FALSE; DECLARE vInvoice INT; DECLARE rs CURSOR FOR SELECT factura_id FROM vn2008.Facturas WHERE Importe != BI7 + BI16 + RE4 + RE1 + IVA7 + IVA16 AND Fecha >= '2017-07-01'; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN rs; FETCH rs INTO vInvoice; SELECT vInvoice, done; WHILE NOT done DO UPDATE invoiceOut io JOIN ( SELECT SUM(amount) AS total FROM invoiceOutExpence WHERE invoiceOutFk = vInvoice ) base JOIN ( SELECT SUM(vat) AS total FROM invoiceOutTax WHERE invoiceOutFk = vInvoice ) vat SET io.amount = base.total + vat.total WHERE io.id = vInvoice; UPDATE vn2008.Facturas SET BI16 = 0, BI7 = 0, RE1 = 0, RE4 = 0, IVA7 = 0, IVA16 = 0 WHERE factura_id = vInvoice; UPDATE vn2008.Facturas f JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id SET f.BI16 = iot.taxableBase, f.IVA16 = iot.vat WHERE f.factura_id = vInvoice AND iot.pgcFk IN ('4770000021' ,'4770000215', '4770000002','4771000000','4770000000','4770000020'); UPDATE vn2008.Facturas f JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id SET f.RE4 = iot.vat WHERE f.factura_id = vInvoice AND iot.pgcFk = '4770000521'; UPDATE vn2008.Facturas f JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id SET f.BI7 = iot.taxableBase, f.IVA7 = iot.vat WHERE f.factura_id = vInvoice AND iot.pgcFk IN ('4770000010' ,'4770000101'); UPDATE vn2008.Facturas f JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id SET f.RE1 = iot.vat WHERE f.factura_id = vInvoice AND iot.pgcFk = '4770000110'; FETCH rs INTO vInvoice; END WHILE; CLOSE rs; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutListByCompany` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutListByCompany`(vCompany INT, vStarted DATE, vEnded DATE) BEGIN SELECT c.socialName as RazonSocial, c.fi as NIF, io.ref as Factura, io.serial as Serie, io.issued as Fecha, io.amount as Importe, c.id as Id_Cliente, iot.taxableBase as Base, pgc.rate as Tipo, iot.vat as Cuota, pgc.name as Concepto FROM vn.invoiceOut io JOIN vn.invoiceOutTax iot ON iot.invoiceOutFk = io.id JOIN vn.client c ON c.id = io.clientFk JOIN vn.pgc ON pgc.code = iot.pgcFk WHERE io.companyFk = vCompany AND io.issued BETWEEN vStarted AND vEnded ORDER BY io.ref DESC; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutMake` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutMake`( vSerial VARCHAR(255), vInvoiceDate DATETIME, OUT vNewInvoiceId INT) BEGIN /* Creación de facturas emitidas. * REQUIERE previamente tabla ticketToInvoice. * * @param vSerial, vInvoiceDate, vCompany, vClient * * @return vNewInvoiceId */ DECLARE vSpainCountryCode INT DEFAULT 1; DECLARE vIsAnySaleToInvoice BOOL; DECLARE vCountry TINYINT DEFAULT 1; DECLARE vTaxArea VARCHAR(15); DECLARE vNewRef VARCHAR(255); DECLARE vWorker INT DEFAULT vn.getWorker(); DECLARE vCompany INT; DECLARE vClient INT; DECLARE vCplusStandardInvoiceTypeFk INT DEFAULT 1; DECLARE vCplusCorrectingInvoiceTypeFk INT DEFAULT 6; DECLARE vCplusSimplifiedInvoiceTypeFk INT DEFAULT 2; DECLARE vCorrectingSerial VARCHAR(1) DEFAULT 'R'; DECLARE vSimplifiedSerial VARCHAR(1) DEFAULT 'S'; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; RESIGNAL; END; SET vInvoiceDate = IFNULL(vInvoiceDate,CURDATE()); SELECT t.clientFk, t.companyFk INTO vClient, vCompany FROM ticketToInvoice tt JOIN ticket t ON t.id = tt.id LIMIT 1; SELECT countryFk INTO vCountry FROM supplier WHERE id = vCompany; SELECT IF(a.isEqualizated AND c.countryFk = vSpainCountryCode AND i.taxAreaFk = 'NATIONAL', 'EQU', i.taxAreaFk) INTO vTaxArea FROM invoiceOutSerial i JOIN ticketToInvoice tti JOIN ticket t ON t.id = tti.id JOIN address a ON a.id = t.addressFk JOIN client c ON c.id = t.clientFk WHERE i.code = invoiceSerial(t.clientFk,t.companyFk,'R') LIMIT 1; START TRANSACTION; -- Elimina tickets sense moviments /* UPDATE ticket t JOIN ticketToInvoice ti ON ti.id = t.id LEFT JOIN sale s ON s.ticketFk = ti.id LEFT JOIN expedition e ON e.ticketFk = t.id LEFT JOIN ticketPackaging tp ON tp.ticketFk = t.id SET t.shipped = '2000-02-01 00:00:00' WHERE s.ticketFk IS NULL AND e.ticketFk IS NULL AND e.ticketFk IS NULL; */ -- Eliminem de ticketToInvoice els tickets que no han de ser facturats DELETE ti.* FROM ticketToInvoice ti JOIN ticket t ON t.id = ti.id JOIN client c ON c.id = t.clientFk WHERE YEAR(t.shipped) < 2001 OR c.isTaxDataChecked = FALSE; SELECT SUM(quantity * price * (100 - discount)/100) INTO vIsAnySaleToInvoice FROM sale s JOIN ticketToInvoice t on t.id = s.ticketFk; IF vIsAnySaleToInvoice THEN -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial INSERT INTO invoiceOut ( ref, serial, issued, clientFk, dued, companyFk, cplusInvoiceType477Fk ) SELECT 1, vSerial, vInvoiceDate, vClient, getDueDate(vInvoiceDate, dueDay), vCompany, IF(vSerial = vCorrectingSerial, vCplusCorrectingInvoiceTypeFk, IF(vSerial = vSimplifiedSerial, vCplusSimplifiedInvoiceTypeFk, vCplusStandardInvoiceTypeFk)) FROM client WHERE id = vClient; SET vNewInvoiceId = LAST_INSERT_ID(); SELECT ref INTO vNewRef FROM invoiceOut WHERE id = vNewInvoiceId; UPDATE ticket t JOIN ticketToInvoice ti ON ti.id = t.id SET t.refFk = vNewRef; DROP TEMPORARY TABLE IF EXISTS tmp.updateInter; CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador FROM ticketToInvoice ti JOIN vn.ticketState ts ON ti.id = ts.ticket JOIN state s WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = vn.getAlert3State(ti.id); INSERT INTO vncontrol.inter(state_id,Id_Ticket,Id_Trabajador) SELECT * FROM tmp.updateInter; INSERT INTO ticketLog (action, userFk,originFk, description) SELECT 'UPDATE',account.userGetId(),ti.id, CONCAT('Crea factura ',vNewRef) FROM ticketToInvoice ti; CALL invoiceExpenceMake(vNewInvoiceId); CALL invoiceTaxMake(vNewInvoiceId,vCountry,vTaxArea); UPDATE invoiceOut io JOIN ( SELECT SUM(amount) AS total FROM invoiceOutExpence WHERE invoiceOutFk = vNewInvoiceId ) base JOIN ( SELECT SUM(vat) AS total FROM invoiceOutTax WHERE invoiceOutFk = vNewInvoiceId ) vat SET io.amount = base.total + vat.total WHERE io.id = vNewInvoiceId; END IF; DROP TEMPORARY TABLE `ticketToInvoice`; COMMIT; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutMakekk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutMakekk`( vSerial VARCHAR(255), vInvoiceDate DATETIME, OUT vNewInvoiceId INT) BEGIN /* Creación de facturas emitidas. * REQUIERE previamente tabla ticketToInvoice. * * @param vSerial, vInvoiceDate, vCompany, vClient * * @return vNewInvoiceId */ DECLARE vSpainCountryCode INT DEFAULT 1; DECLARE vIsAnySaleToInvoice BOOL; DECLARE vCountry TINYINT DEFAULT 1; DECLARE vTaxArea VARCHAR(15); DECLARE vNewRef VARCHAR(255); DECLARE vWorker INT DEFAULT vn.getWorker(); DECLARE vCompany INT; DECLARE vClient INT; DECLARE vCplusStandardInvoiceTypeFk INT DEFAULT 1; DECLARE vCplusCorrectingInvoiceTypeFk INT DEFAULT 6; DECLARE vCorrectingSerial VARCHAR(1) DEFAULT 'R'; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; RESIGNAL; END; SET vInvoiceDate = IFNULL(vInvoiceDate,CURDATE()); SELECT t.clientFk, t.companyFk INTO vClient, vCompany FROM ticketToInvoice tt JOIN ticket t ON t.id = tt.id LIMIT 1; SELECT countryFk INTO vCountry FROM supplier WHERE id = vCompany; SELECT IF(a.isEqualizated AND c.countryFk = vSpainCountryCode AND i.taxAreaFk = 'NATIONAL', 'EQU', i.taxAreaFk) INTO vTaxArea FROM invoiceOutSerial i JOIN ticketToInvoice tti JOIN ticket t ON t.id = tti.id JOIN address a ON a.id = t.addressFk JOIN client c ON c.id = t.clientFk WHERE i.code = invoiceSerial(t.clientFk,t.companyFk,'R') LIMIT 1; START TRANSACTION; -- Elimina tickets sense moviments /* UPDATE ticket t JOIN ticketToInvoice ti ON ti.id = t.id LEFT JOIN sale s ON s.ticketFk = ti.id LEFT JOIN expedition e ON e.ticketFk = t.id LEFT JOIN ticketPackaging tp ON tp.ticketFk = t.id SET t.shipped = '2000-02-01 00:00:00' WHERE s.ticketFk IS NULL AND e.ticketFk IS NULL AND e.ticketFk IS NULL; */ -- Eliminem de ticketToInvoice els tickets que no han de ser facturats DELETE ti.* FROM ticketToInvoice ti JOIN ticket t ON t.id = ti.id JOIN client c ON c.id = t.clientFk WHERE YEAR(t.shipped) < 2001 OR c.isTaxDataChecked = FALSE; SELECT SUM(quantity * price * (100 - discount)/100) INTO vIsAnySaleToInvoice FROM sale s JOIN ticketToInvoice t on t.id = s.ticketFk; IF vIsAnySaleToInvoice THEN -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial INSERT INTO invoiceOut ( ref, serial, issued, clientFk, dued, companyFk, cplusInvoiceType477Fk ) SELECT 1, vSerial, vInvoiceDate, vClient, getDueDate(vInvoiceDate, dueDay), vCompany, IF(vSerial = vCorrectingSerial, vCplusCorrectingInvoiceTypeFk, vCplusStandardInvoiceTypeFk) FROM client WHERE id = vClient; SET vNewInvoiceId = LAST_INSERT_ID(); SELECT ref INTO vNewRef FROM invoiceOut WHERE id = vNewInvoiceId; UPDATE ticket t JOIN ticketToInvoice ti ON ti.id = t.id SET t.refFk = vNewRef; DROP TEMPORARY TABLE IF EXISTS tmp.updateInter; CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador FROM ticketToInvoice ti JOIN vn.ticketState ts ON ti.id = ts.ticket JOIN state s WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = vn.getAlert3State(ti.id); INSERT INTO vncontrol.inter(state_id,Id_Ticket,Id_Trabajador) SELECT * FROM tmp.updateInter; INSERT INTO ticketLog (action, userFk,originFk, description) SELECT 'UPDATE',account.userGetId(),ti.id, CONCAT('Crea factura ',vNewRef) FROM ticketToInvoice ti; CALL invoiceExpenceMake(vNewInvoiceId); CALL invoiceTaxMake(vNewInvoiceId,vCountry,vTaxArea); UPDATE invoiceOut io JOIN ( SELECT SUM(amount) AS total FROM invoiceOutExpence WHERE invoiceOutFk = vNewInvoiceId ) base JOIN ( SELECT SUM(vat) AS total FROM invoiceOutTax WHERE invoiceOutFk = vNewInvoiceId ) vat SET io.amount = base.total + vat.total WHERE io.id = vNewInvoiceId; END IF; DROP TEMPORARY TABLE `ticketToInvoice`; COMMIT; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceOutTaxAndExpence` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutTaxAndExpence`() BEGIN /* Para tickets ya facturados, vuelve a repetir el proceso de facturación. * * @param vInvoice Numero de factura */ DECLARE vInvoice INT; DECLARE vInvoiceRef VARCHAR(15); DECLARE vCountry INT; DECLARE vTaxArea VARCHAR(15); DECLARE vContador INT DEFAULT 0; DECLARE done BOOL DEFAULT FALSE; DECLARE rs CURSOR FOR SELECT id,ref FROM invoiceOut io WHERE issued >= '2017-07-01' AND companyFk = 1381 AND io.amount IS NULL ; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN rs; FETCH rs INTO vInvoice ,vInvoiceRef; WHILE NOT done DO SELECT s.countryFk INTO vCountry FROM supplier s JOIN invoiceOut io ON io.companyFk = s.id WHERE io.id = vInvoice; SELECT IF(c.isEqualizated AND i.taxAreaFk = 'NATIONAL','EQU',i.taxAreaFk) INTO vTaxArea FROM invoiceOutSerial i JOIN invoiceOut io ON io.serial = i.code JOIN client c ON c.id = io.clientFk WHERE io.id = vInvoice; DROP TEMPORARY TABLE IF EXISTS ticketToInvoice; CREATE TEMPORARY TABLE ticketToInvoice SELECT id FROM ticket WHERE refFk = vInvoiceRef; CALL invoiceExpenceMake(vInvoice); CALL invoiceTaxMake(vInvoice,vCountry,vTaxArea); FETCH rs INTO vInvoice ,vInvoiceRef; SET vContador = vContador + 1; IF vContador MOD 50 = 0 THEN SELECT CONCAT(vContador, ' de momento') AS FACTURAS_ASENTADAS; END IF; END WHILE; CLOSE rs; SELECT CONCAT(vContador, ' total') AS FACTURAS_ASENTADAS; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceTaxMake` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceTaxMake`(IN vInvoice INT, IN vCountry INT, IN vTaxArea VARCHAR(15)) BEGIN /* Inserta los registros de iva de la factura emitida * REQUIERE tabla ticketToInvoice * * @param vInvoice Id de la factura */ DELETE FROM invoiceOutTax WHERE invoiceOutFk = vInvoice; INSERT INTO invoiceOutTax( invoiceOutFk, pgcFk, taxableBase, vat ) SELECT vInvoice, bp.pgcFk, SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2) ) taxableBase, SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2) ) * pgc.rate / 100 FROM ticketToInvoice t JOIN sale s ON s.ticketFk = t.id JOIN item i ON i.id = s.itemFk JOIN itemTaxCountry itc ON itc.itemFk = i.id AND itc.countryFk = vCountry JOIN bookingPlanner bp ON bp.countryFk = vCountry AND bp.taxAreaFk = vTaxArea AND bp.taxClassFk = itc.taxClassFk JOIN pgc ON pgc.code = bp.pgcFk GROUP BY pgc.code HAVING taxableBase != 0; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceTaxMakekk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceTaxMakekk`(IN vInvoice INT, IN vCountry INT, IN vTaxArea VARCHAR(15)) BEGIN /* Inserta los registros de iva de la factura emitida * REQUIERE tabla ticketToInvoice * * @param vInvoice Id de la factura */ DELETE FROM invoiceOutTax WHERE invoiceOutFk = vInvoice; INSERT INTO invoiceOutTax( invoiceOutFk, pgcFk, taxableBase, vat ) SELECT vInvoice, bp.pgcFk, SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2) ) taxableBase, SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2) ) * pgc.rate / 100 FROM ticketToInvoice t JOIN sale s ON s.ticketFk = t.id JOIN item i ON i.id = s.itemFk JOIN itemTaxCountry itc ON itc.itemFk = i.id AND itc.countryFk = vCountry JOIN bookingPlanner bp ON bp.countryFk = vCountry AND bp.taxAreaFk = vTaxArea AND bp.taxClassFk = itc.taxClassFk JOIN pgc ON pgc.code = bp.pgcFk GROUP BY pgc.code HAVING taxableBase != 0; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `itemTagArrangedUpdate` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `itemTagArrangedUpdate`(IN vItem BIGINT) BEGIN /** * Actualiza la tabla itemTagArranged * * @param vItem El Id_item de toda la vida. Si es cero, equivale a todos. **/ DELETE FROM itemTagArranged WHERE vItem IS NULL OR vItem = itemFk; INSERT INTO itemTagArranged(itemFk) SELECT id FROM item WHERE vItem IS NULL OR vItem = id; REPLACE itemTagArranged SELECT i.id, 'Medida' as tag1, LEFT(i.size,15) as val1, 'Color' as tag2, LEFT(ink.`name`,15) as val2, 'Categoria' as tag3, LEFT(i.category,15) as val3, 'Productor' as tag4, LEFT(p.`name`,15) as val4, 'Tallos' as tag5, i.stems as val5, 'Origen' as tag6, o.code as val6, i.description FROM item i LEFT JOIN itemTagged it ON it.itemFk = i.id LEFT JOIN ink on ink.id = i.inkFk JOIN origin o ON o.id = i.originFk LEFT JOIN producer p ON p.id = i.producerFk WHERE it.itemFk IS NULL AND (vItem IS NULL OR vItem = i.id); CALL itemTagUpdatePriority(vItem); UPDATE itemTagArranged ita JOIN itemTag it ON it.itemFk = ita.itemFk JOIN tag t ON t.id = it.tagFk SET tag1 = t.name, val1 = it.value WHERE it.priority = 1 AND (vItem IS NULL OR vItem = it.itemFk); UPDATE itemTagArranged ita JOIN itemTag it ON it.itemFk = ita.itemFk JOIN tag t ON t.id = it.tagFk SET tag2 = t.name, val2 = it.value WHERE it.priority = 2 AND (vItem IS NULL OR vItem = it.itemFk); UPDATE itemTagArranged ita JOIN itemTag it ON it.itemFk = ita.itemFk JOIN tag t ON t.id = it.tagFk SET tag3 = t.name, val3 = it.value WHERE it.priority = 3 AND (vItem IS NULL OR vItem = it.itemFk); UPDATE itemTagArranged ita JOIN itemTag it ON it.itemFk = ita.itemFk JOIN tag t ON t.id = it.tagFk SET tag4 = t.name, val4 = it.value WHERE it.priority = 4 AND (vItem IS NULL OR vItem = it.itemFk); UPDATE itemTagArranged ita JOIN itemTag it ON it.itemFk = ita.itemFk JOIN tag t ON t.id = it.tagFk SET tag5 = t.name, val5 = it.value WHERE it.priority = 5 AND (vItem IS NULL OR vItem = it.itemFk); UPDATE itemTagArranged ita JOIN itemTag it ON it.itemFk = ita.itemFk JOIN tag t ON t.id = it.tagFk SET tag6 = t.name, val6 = it.value WHERE it.priority = 6 AND (vItem IS NULL OR vItem = it.itemFk); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `itemTagUpdatePriority` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `itemTagUpdatePriority`(IN vItem INT) BEGIN /* * Recalcula las prioridades de articleTag * * @param vItem Id_Article. Si es 0, lo recalcula todo */ SET vItem = IFNULL(vItem,0); SET @p := 0; SET @a := 0; UPDATE itemTag a JOIN ( SELECT id, @p := IF(itemFk = @a, @p, 0) + 1 as NewPriority, @a := itemFk FROM itemTag WHERE vItem IS NULL OR vItem = itemFk ORDER BY itemFk, priority ) sub ON sub.id = a.id SET a.priority = NewPriority; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `itemTagUpdatePriority_launcher` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `itemTagUpdatePriority_launcher`() BEGIN CALL vn.itemTagUpdatePriority(0); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `logAdd` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `logAdd`(vOriginFk INT, vActionCode VARCHAR(45), vEntity VARCHAR(45), vDescription TEXT) BEGIN /** * Guarda las acciones realizadas por el usuario * * @param vOriginFk Id del registro de origen * @param vActionCode Código de la acción {insert | delete | update} * @param vEntity Nombre que hace referencia a la tabla. * @param descripcion Descripción de la acción realizada por el usuario */ DECLARE vTableName VARCHAR(45); SET vTableName = CONCAT(vEntity, 'Log'); SET @qryLog := CONCAT( 'INSERT INTO ', vTableName, ' (originFk, userFk, action, description)', ' VALUES (', vOriginFk, ', ', account.userGetId(), ', "', vActionCode, '", "', vDescription, '")' ); PREPARE stmt FROM @qryLog; EXECUTE stmt; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `logShow` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `logShow`(vOriginFk INT, vEntity VARCHAR(45)) BEGIN /** * Muestra las acciones realizadas por el usuario * * @param vOriginFk Id del registro de origen * @param vEntity Nombre que hace referencia a la tabla. */ DECLARE vTableName VARCHAR(45); SET vTableName = CONCAT(vEntity, 'Log'); SET @qryLog := CONCAT( 'SELECT ot.id, ot.originFk, ot.userFk, u.name, ot.action, ot.creationDate, ot.description FROM ', vTableName, ' AS ot', ' INNER JOIN account.user u ON u.id = ot.userFk', ' WHERE ot.originFk = ', vOriginFk, ' ORDER BY ot.creationDate DESC' ); PREPARE stmt FROM @qryLog; EXECUTE stmt; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `mergeTicketUnattended` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `mergeTicketUnattended`(IN vMainTicket INT(11), IN hasSameAgency BOOLEAN) BEGIN DECLARE isBilled BOOLEAN; DECLARE arrayTickets VARCHAR(255); SELECT Factura IS NOT NULL INTO isBilled FROM vn2008.Tickets WHERE Id_Ticket = vMainTicket; IF NOT isBilled THEN SELECT GROUP_CONCAT(distinct T.Id_Ticket) INTO arrayTickets FROM vn2008.Tickets T LEFT JOIN vn.ticketState ts ON T.Id_Ticket = ts.ticket JOIN vn2008.Tickets ticketOriginal ON ticketOriginal.Id_Ticket = vMainTicket AND T.empresa_id = ticketOriginal.empresa_id AND T.Id_Consigna = ticketOriginal.Id_Consigna AND DATE(T.Fecha) = DATE(ticketOriginal.Fecha) AND T.warehouse_id = ticketOriginal.warehouse_id AND IF(hasSameAgency <> 0,T.Id_Agencia = ticketOriginal.Id_Agencia,TRUE) LEFT JOIN vn.ticketState tsOriginal ON ticketOriginal.Id_Ticket = tsOriginal.ticket WHERE ts.alertLevel < 3 AND T.Factura IS NULL AND T.Anotadoencaja = FALSE AND T.Id_Ticket <> vMainTicket AND ts.alertLevel = tsOriginal.alertLevel; CALL mergeTicketWithArray(vMainTicket,arrayTickets); END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `mergeTicketWithArray` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `mergeTicketWithArray`(IN vMainTicket INT(11), IN arrayTickets VARCHAR(50)) BEGIN DECLARE isBilled BOOLEAN; DECLARE messageLog VARCHAR(50); DECLARE company INT; DECLARE messageForSplit VARCHAR(255); DECLARE vMainSplit INT; DECLARE worker INT(3); SELECT Factura IS NOT NULL INTO isBilled FROM vn2008.Tickets WHERE Id_Ticket = vMainTicket; IF NOT isBilled THEN SELECT Id_Trabajador INTO worker from vn2008.Trabajadores where user_id = account.userGetId(); IF worker IS NULL THEN SET worker = 20; END IF; DROP TEMPORARY TABLE IF EXISTS vn2008.Tickets_to_fusion; -- He usado el util.exec porque da error la variable strId_Tickets puesta dentro del IN() CALL util.exec(sql_printf(' CREATE TEMPORARY TABLE vn2008.Tickets_to_fusion SELECT Id_Ticket, Localizacion FROM vn2008.Tickets T WHERE Id_Ticket IN (%s);',arrayTickets)); INSERT INTO vn2008.ticket_observation (Id_Ticket,observation_type_id,text) SELECT vMainTicket,observation_type_id,CONCAT(' Ticket ', Id_Ticket, ':' , tco.text, '. ') FROM vn2008.Tickets_to_fusion tf INNER JOIN vn2008.ticket_observation tco USING(Id_Ticket) ON DUPLICATE KEY UPDATE `text` = CONCAT(ticket_observation.`text`,CONCAT(' Ticket ', VALUES(Id_Ticket), ':' , VALUES(`text`), '. ')); UPDATE vn2008.Movimientos M JOIN vn2008.Tickets_to_fusion USING(Id_Ticket) SET M.Id_Ticket = vMainTicket; UPDATE vn2008.expeditions M JOIN vn2008.Tickets_to_fusion t ON t.Id_Ticket = M.ticket_id SET M.ticket_id = vMainTicket; UPDATE vn.ticketPackaging tp JOIN vn2008.Tickets_to_fusion t ON t.Id_Ticket = tp.ticketFk SET tp.ticketFk = vMainTicket; UPDATE vn2008.Tickets SET Bultos = (SELECT COUNT(*) FROM vn2008.expeditions WHERE ticket_id = vMainTicket AND EsBulto) WHERE Id_Ticket = vMainTicket; UPDATE vn2008.Tickets JOIN vn2008.Tickets_to_fusion USING(Id_Ticket) SET Fecha = TIMESTAMPADD(YEAR,-1 * (YEAR(Fecha)-2000), Fecha); UPDATE vn2008.Tickets_dits ts JOIN vn2008.Tickets_to_fusion t USING(Id_Ticket) SET ts.Id_Ticket = vMainTicket; UPDATE vn2008.Tickets SET Localizacion = CONCAT(Tickets.Localizacion,' ',IFNULL((SELECT GROUP_CONCAT(Localizacion SEPARATOR ' ') FROM vn2008.Tickets_to_fusion),'')) WHERE Id_Ticket = vMainTicket; UPDATE vn2008.Splits s RIGHT JOIN vn2008.Tickets_to_fusion t USING(Id_Ticket) SET s.Id_Ticket = vMainTicket; IF (SELECT COUNT(*) FROM vn2008.Splits WHERE Id_Ticket=vMainTicket) > 1 THEN SELECT Id_Split INTO vMainSplit FROM vn2008.Splits WHERE Id_Ticket = vMainTicket LIMIT 1; SELECT group_concat(Notas,',') INTO messageForSplit FROM vn2008.Splits WHERE Id_Ticket = vMainTicket; UPDATE vn2008.Splits SET Notas = messageForSplit WHERE Id_Split=vMainSplit; UPDATE vn2008.Split_lines sl JOIN vn2008.Splits s USING (Id_Split) SET sl.Id_Split=vMainSplit WHERE Id_Ticket=vMainTicket; DELETE FROM vn2008.Splits WHERE Id_Ticket=vMainTicket AND Id_Split<>vMainSplit; END IF; SELECT GROUP_CONCAT(Id_Ticket SEPARATOR ',') into messageLog FROM vn2008.Tickets_to_fusion; CALL vn2008.Ditacio(vMainTicket,'Fusion','T',worker,messageLog,NULL); DELETE ts FROM vn2008.Tickets_state ts JOIN vn2008.Tickets_to_fusion t USING(Id_Ticket); /* UPDATE vncontrol.inter M JOIN vn2008.Tickets_to_fusion USING(Id_Ticket) SET M.Id_Ticket = vMainTicket; */ END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `nestAdd` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `nestAdd`(vScheme VARCHAR(45), vTable VARCHAR(45), vParentFk INT, vChild VARCHAR(45)) BEGIN DECLARE vSql TEXT; -- Check parent childs SET vSql = sql_printf(' SELECT COUNT(c.id) INTO @childs FROM %t.%t p LEFT JOIN %t.%t c ON c.lft BETWEEN p.lft AND p.rgt AND c.id != %v WHERE p.id = %v', vScheme, vTable, vScheme, vTable, vParentFk, vParentFk); SET @qrySql := vSql; PREPARE stmt FROM @qrySql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- Select left from last child IF @childs = 0 THEN SET vSql = sql_printf('SELECT lft INTO @vLeft FROM %t.%t WHERE id = %v', vScheme, vTable, vParentFk); SET @qrySql := vSql; ELSE SET vSql = sql_printf(' SELECT c.rgt INTO @vLeft FROM %t.%t p JOIN %t.%t c ON c.lft BETWEEN p.lft AND p.rgt WHERE p.id = %v ORDER BY c.lft DESC LIMIT 1', vScheme, vTable, vScheme, vTable, vParentFk); SET @qrySql := vSql; END IF; PREPARE stmt FROM @qrySql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- Update right SET vSql = sql_printf('UPDATE %t.%t SET rgt = rgt + 2 WHERE rgt > %v ORDER BY rgt DESC', vScheme, vTable, @vLeft); SET @qrySql := vSql; PREPARE stmt FROM @qrySql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET vSql = sql_printf('UPDATE %t.%t SET lft = lft + 2 WHERE lft > %v ORDER BY lft DESC', vScheme, vTable, @vLeft); SET @qrySql := vSql; PREPARE stmt FROM @qrySql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- Escape character SET vChild = REPLACE(vChild, "'", "\\'"); -- Add child SET vSql = sql_printf('INSERT INTO %t.%t (name, lft, rgt) VALUES (%v, %v, %v)', vScheme, vTable, vChild, @vLeft + 1, @vLeft + 2); SET @qrySql := vSql; PREPARE stmt FROM @qrySql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `nestLeave` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `nestLeave`(vScheme VARCHAR(45), vTable VARCHAR(45), vParentFk INT) BEGIN DECLARE vSql TEXT; DROP TEMPORARY TABLE IF EXISTS tmp.tree; SET vSql = sql_printf(' CREATE TEMPORARY TABLE tmp.tree ENGINE = MEMORY SELECT node.id, node.name, node.lft, node.rgt, node.depth, node.sons FROM %t.%t AS node, %t.%t AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.depth = parent.depth + 1 AND parent.id = %v GROUP BY node.id ORDER BY node.lft', vScheme, vTable, vScheme, vTable, vParentFk); SET @qrySql := vSql; PREPARE stmt FROM @qrySql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `nestTree` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `nestTree`( vSourceSchema VARCHAR(45), vSourceTable VARCHAR(45), vDestinationSchema VARCHAR(45), vDestinationTable VARCHAR(45)) BEGIN DECLARE vSql TEXT; SET vSql = sql_printf('DROP TABLE IF EXISTS %t.%t', vDestinationSchema, vDestinationTable); SET @qrySql := vSql; PREPARE stmt FROM @qrySql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET vSql = sql_printf(' CREATE TABLE %t.%t SELECT node.id, CONCAT( REPEAT(" ", 5 * (COUNT(parent.id) - 1)),UCASE(node.name)) name, node.lft, node.rgt, COUNT(parent.id) - 1 depth, CAST((node.rgt - node.lft - 1) / 2 as DECIMAL) as sons FROM %t.%t AS node, %t.%t AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.id ORDER BY node.lft', vDestinationSchema, vDestinationTable, vSourceSchema, vSourceTable, vSourceSchema, vSourceTable); SET @qrySql := vSql; PREPARE stmt FROM @qrySql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `noticeSend` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `noticeSend`(vCategoryKey VARCHAR(50), vSender INT, vRecipient INT, vBody TEXT) BEGIN DECLARE vCategoryId INT; DECLARE vIsEnabled TINYINT(1); -- Obtenemos los datos de la categoría SELECT c.id, c.isEnabled INTO vCategoryId, vIsEnabled FROM vn.noticeCategory c WHERE keyName = vCategoryKey; IF vn.noticeHasActive(vCategoryKey, vRecipient) AND vIsEnabled THEN INSERT INTO vn.noticeInbox (noticeCategoryFk, senderFk, recipientFk, body) VALUES (vCategoryId, vSender, vRecipient, vBody); SELECT vSender, vRecipient; END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `observationAdd` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `observationAdd`(vOriginFk INT, vTableCode VARCHAR(45), vDescription TEXT) BEGIN /** * Guarda las observaciones realizadas por el usuario * * @param vOriginFk Id del registro de origen * @param vTypeCode Código que referencia a la tabla. * @param descripcion Texto de la observacion */ DECLARE vTableName VARCHAR(45); SET vTableName = CONCAT(vTableCode,'Observation'); IF ISNULL(vTableName) THEN CALL util.throw('CODE_NOT_FOUND'); END IF; SET @qryLog := CONCAT( 'INSERT INTO ', vTableName, ' (originFk, userFk, description)', ' VALUES (', vOriginFk, ', ', account.userGetId(), ', "', vDescription, '")' ); PREPARE stmt FROM @qryLog; EXECUTE stmt; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `packageInvoicing` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `packageInvoicing`( IN vClient INT, IN vDate DATE, IN vCompany INT, IN vIsAllInvoiceable BOOLEAN, OUT vNewTicket INT(11) ) BEGIN DECLARE vGraceDays INT; DECLARE vDateStart DATE DEFAULT '2017-11-21'; DECLARE vIsInvoiceable BOOLEAN; DECLARE vWarehouse INT DEFAULT 13; DECLARE vAgenciaEmbalajes INT DEFAULT 628; DECLARE vComponentCost INT DEFAULT 28; DECLARE vGraceDate DATE; SET vGraceDays = IF(vIsAllInvoiceable,0,30); SET vGraceDate = TIMESTAMPADD(DAY, - vGraceDays, vDate); /* Clientes especiales: 3240 MADEFLOR 992 JAVIER FELIU */ IF vClient IN (992, 3240) THEN SET vGraceDays = 365; END IF; /* Fin clientes especiales */ DROP TEMPORARY TABLE IF EXISTS tmp.packageToInvoice; CREATE TEMPORARY TABLE tmp.packageToInvoice SELECT p.itemFk, tp.packagingFk, IF(tp.quantity < 0 OR t.shipped < vGraceDate, tp.quantity, 0) quantity, tp.ticketFk, p.price FROM ticketPackaging tp JOIN package p ON p.id = tp.packagingFk JOIN ticket t ON t.id = tp.ticketFk WHERE t.shipped BETWEEN vDateStart AND vDate AND t.clientFk = vClient; DROP TEMPORARY TABLE IF EXISTS tmp.packageToInvoicePositives; CREATE TEMPORARY TABLE tmp.packageToInvoicePositives SELECT itemFk, sum(quantity) as totalQuantity FROM tmp.packageToInvoice GROUP BY itemFk HAVING totalQuantity > 0; SELECT GREATEST(COUNT(*),vIsAllInvoiceable) INTO vIsInvoiceable FROM tmp.packageToInvoicePositives; IF vIsInvoiceable THEN CALL vn.ticketCreate(vClient, vDate, vWarehouse, vCompany, 0, vAgenciaEmbalajes, 0, vDate, vNewTicket); INSERT INTO ticketPackaging( ticketFk, packagingFk, quantity, pvp) SELECT vNewTicket, pti.packagingFk, - SUM(pti.quantity) AS totalQuantity, pti.price FROM tmp.packageToInvoice pti LEFT JOIN tmp.packageToInvoicePositives ptip ON pti.itemFk = ptip.itemFk WHERE ptip.itemFK IS NOT NULL OR vIsAllInvoiceable GROUP BY packagingFk HAVING totalQuantity; INSERT INTO sale( ticketFk, itemFk, concept, quantity, price ) SELECT vNewTicket, pti.itemFk, i.name as concept, sum(pti.quantity) as totalQuantity, pti.price FROM tmp.packageToInvoice pti JOIN item i ON i.id = pti.itemFk LEFT JOIN tmp.packageToInvoicePositives ptip ON pti.itemFk = ptip.itemFk WHERE ptip.itemFK IS NOT NULL OR vIsAllInvoiceable GROUP BY pti.itemFk HAVING totalQuantity; INSERT INTO saleComponent(saleFk, componentFk, value) SELECT id, vComponentCost, price FROM sale WHERE ticketFk = vNewTicket; END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `printTrolleyLabel` */; ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `printTrolleyLabel`(vTicket INT, vPrinter INT, vReport INT) BEGIN /** * Inserta en la cola de impresion una nueva etiqueta de carro, para el sacador * * @param vTicket Numero del ticket * @param vPrinter Numero de impresora * @param vReport Numero del informe **/ DECLARE vlabelCount INT DEFAULT 0; DECLARE PRIORITY INT DEFAULT 3; DECLARE vWorker INT; DECLARE vShipmentHour VARCHAR(10); SELECT getTicketTrolleyLabelCount(vTicket) INTO vLabelCount; SELECT getUser() INTO vWorker; SELECT CONCAT(getShipmentHour(vTicket),':00') INTO vShipmentHour; INSERT INTO printingQueue(printer , priority , report , `text` , worker , text2 , text3) VALUES (vPrinter , PRIORITY , vReport , vTicket , vWorker , vLabelCount , vShipmentHour); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `refund` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `refund`(IN vMainTicket INT, OUT vNewTicket INT) BEGIN DECLARE vCustomer MEDIUMINT; DECLARE vNewDate DATE; DECLARE vWarehouse TINYINT; DECLARE vCompany MEDIUMINT; DECLARE vAddress MEDIUMINT; DECLARE vRefundAgencyMode INT DEFAULT 23; SELECT clientFk, TIMESTAMPADD(DAY, 1,shipped), warehouseFk, companyFk, addressFk INTO vCustomer, vNewDate, vWarehouse, vCompany, vAddress FROM ticket WHERE id = vMainTicket; CALL ticketCreate(vCustomer, vNewDate, vWarehouse, vCompany, vAddress, vRefundAgencyMode,NULL,vNewDate,vNewTicket); INSERT INTO vn2008.Movimientos(Id_Ticket, Id_Article, Cantidad, Concepte, Preu, Descuento, PrecioFijado) SELECT vNewTicket, Id_Article, - Cantidad, Concepte, Preu, Descuento, TRUE FROM vn2008.Movimientos WHERE Id_Ticket = vMainTicket; SELECT vNewTicket; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `routeGateAsign` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `routeGateAsign`(vDevice VARCHAR(30), vRouteFk INT) BEGIN UPDATE routeGate SET displayText = NULL, routeFk = NULL, freeTickets = NULL, expeditions = NULL, scanned = NULL, flag = NULL, pallets = NULL, lastScanned = NULL WHERE routeFk = vRouteFk; UPDATE routeGate SET routeFk = vRouteFk WHERE deviceId = vDevice COLLATE utf8_general_ci; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `routeGateUpdate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `routeGateUpdate`() BEGIN UPDATE vn.routeGate rg LEFT JOIN vn.routesControl rc ON rg.routeFk = rc.routeFk LEFT JOIN vn.route r ON r.id = rg.routeFk LEFT JOIN vn2008.Agencias a ON a.Id_Agencia = r.agencyModeFk LEFT JOIN ( SELECT Id_Ruta, count(*) AS pedidosLibres FROM vn2008.Tickets t JOIN vn2008.Tickets_state ts ON t.Id_Ticket = ts.Id_Ticket JOIN vncontrol.inter i ON i.inter_id = ts.inter_id JOIN vn2008.state s ON i.state_id = s.id AND s.alert_level = 0 WHERE t.Fecha BETWEEN CURDATE() AND util.dayend(CURDATE()) AND Id_Ruta GROUP BY Id_Ruta ) t ON t.Id_Ruta = rg.routeFk SET rg.scanned = rc.scanned, rg.expeditions = rc.expeditions, rg.flag = a.flag, rg.freeTickets = t.pedidosLibres, rg.pallets = rc.pallets, rg.lastScanned = rc.lastScanned, rg.displayText = IF(rg.routeFk is null, rg.displayText, rg.routeFk MOD 1000); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `saleSplit` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `saleSplit`(IN vIdMovement BIGINT, IN vQuantity int) BEGIN DECLARE vId INT; DECLARE vCreated DATE; DECLARE vWarehouseId INT; DECLARE vCompanyId INT; DECLARE vAddressId INT; DECLARE vAgencyMode INT; DECLARE vNewTicketId BIGINT; DECLARE vNewSale BIGINT; DECLARE vLanded DATE; DECLARE vStarted DATETIME; DECLARE vEnded DATETIME; DECLARE vCurrentTicket INT; SELECT clientFk , shipped , warehouseFk , companyFk , addressFk , AgencyModeFk , Landed , t.id INTO vId , vCreated , vWarehouseId , vCompanyId , vAddressId , vAgencyMode , vLanded , vCurrentTicket FROM ticket t JOIN sale m on t.id = m.ticketFk WHERE m.id = vIdMovement; -- Busca un ticket existente que coincida con los parametros del nuevo pedido SET vStarted = TIMESTAMP(vCreated); SET vEnded = TIMESTAMP(vCreated, '23:59:59'); SELECT id INTO vNewTicketId FROM ticket t JOIN ticketState ts on t.id = ts.ticketFk WHERE vAddressId = t.addressFk AND vWarehouseId = t.warehouseFk AND vAgencyMode = t.AgencyModeFk AND vLanded <=> t.landed AND t.shipment BETWEEN vStarted AND vEnded -- uso BETWEEN para aprovechar el indice AND t.refFk IS NULL AND ts.alertLevel = 0 AND t.clientFk <> 1118 AND t.id <> vCurrentTicket LIMIT 1; IF vNewTicketId IS NULL THEN Call vn.ticketCreate( vId , vCreated , vWarehouseId , vCompanyId , vAddressId , vAgencyMode , NULL , vLanded , vNewTicketId); CALL vn2008.bionic_calc_ticket(vNewTicketId); ELSE UPDATE ticket SET landed = vLanded WHERE id = vNewTicketId; END IF; INSERT INTO vncontrol.inter(Id_Ticket, state_id) SELECT vNewTicketId, s.id FROM state s WHERE s.code = 'FIXING'; INSERT INTO sale(ticketFk, itemFk, concept, quantity, price, discount) SELECT vNewTicketId, itemFk, Concept, vQuantity, price, discount FROM sale WHERE id = vIdMovement; SELECT LAST_INSERT_ID() INTO vNewSale; INSERT INTO saleComponent(saleFk, componentFk, `value`) SELECT vNewSale, componentFk, `value` FROM saleComponent WHERE saleFk = vIdMovement; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `scanTreeCreate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `scanTreeCreate`() BEGIN CALL vn.nestTree( 'vn2008', 'scan', 'vn2008', 'scanTree'); ALTER TABLE vn2008.scanTree ADD COLUMN lastScanned DATETIME NULL, ADD COLUMN routeCount INT NULL, ADD COLUMN minRoute INT, ADD COLUMN maxRoute INT, ADD COLUMN scanned INT; UPDATE vn2008.scanTree st JOIN ( SELECT sl.scan_id, MAX(sl.odbc_date) lastScanned, COUNT(DISTINCT t.routeFk) routeCount, MIN(t.routeFk) mod 1000 as minRoute, MAX(t.routeFk) mod 1000 as maxRoute, COUNT(sl.scan_line_id) as scanned FROM vn2008.scan_line sl JOIN vn.expedition e ON e.id = sl.`code` JOIN vn.ticket t ON t.id = e.ticketFk WHERE t.routeFk GROUP BY sl.scan_id ) rs ON rs.scan_id = st.id SET st.lastScanned = rs.lastScanned, st.routeCount = rs.routeCount, st.minRoute = rs.minRoute, st.maxRoute = IF(rs.minRoute != rs.maxRoute, rs.maxRoute,NULL), st.scanned = rs.scanned; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `solunionRiskRequest` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `solunionRiskRequest`() BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.client_list; CREATE TEMPORARY TABLE tmp.client_list (PRIMARY KEY (Id_Cliente)) ENGINE = MEMORY SELECT * FROM (SELECT cc.client Id_Cliente, ci.grade FROM vn.creditClassification cc JOIN vn.creditInsurance ci ON cc.id = ci.creditClassification WHERE dateEnd IS NULL ORDER BY ci.creationDate DESC) t1 GROUP BY Id_Cliente; CALL vn2008.risk_vs_client_list(CURDATE()); SELECT c.Id_Cliente, c.Cliente, c.Credito credito_vn, c.creditInsurance solunion, cast(r.risk as DECIMAL(10,0)) riesgo_vivo, cast(c.creditInsurance - r.risk as decimal(10,0)) margen_vivo, f.Consumo consumo_anual, c.Vencimiento, ci.grade FROM vn2008.Clientes c JOIN tmp.risk r ON r.Id_Cliente = c.Id_Cliente JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente JOIN bi.facturacion_media_anual f ON c.Id_Cliente = f.Id_Cliente GROUP BY Id_cliente; DROP TEMPORARY TABLE IF EXISTS tmp.risk; DROP TEMPORARY TABLE IF EXISTS tmp.client_list; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `stockBuyed` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `stockBuyed`(vDate DATE) BEGIN DECLARE vVolume DECIMAL(10,2); DECLARE vWarehouse INT DEFAULT 7; CALL stockTraslation(vDate); SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; INSERT INTO stockBuyed(user, buyed, `date`) SELECT tr.user_id, SUM(0.6 * ( amount / c.packing ) * vn2008.cm3(Id_Compra))/vVolume buyed, vDate FROM tmp_item i JOIN vn2008.Articles a ON a.Id_Article = i.item_id JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id JOIN vn2008.reinos r ON r.id = t.reino_id JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = t.Id_Trabajador JOIN vn2008.t_item_last_buy ilb ON ilb.item_id = Id_Article AND ilb.warehouse_id = vWarehouse JOIN vn2008.Compres c ON c.Id_compra = ilb.buy_id WHERE r.display <> 0 GROUP BY tr.Id_Trabajador ON DUPLICATE KEY UPDATE buyed = VALUES(buyed); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `stockBuyedByWorker` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `stockBuyedByWorker`(vDate DATE, vWorker INT) BEGIN DECLARE vVolume DECIMAL(10,2); DECLARE vWarehouse INT DEFAULT 7; CALL stockTraslation(vDate); SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn2008.cm3(Id_Compra))/vVolume buyed FROM tmp_item i JOIN vn2008.Articles a ON a.Id_Article = i.item_id JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id JOIN vn2008.reinos r ON r.id = t.reino_id JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = t.Id_Trabajador JOIN vn2008.t_item_last_buy ilb ON ilb.item_id = a.Id_Article AND ilb.warehouse_id = vWarehouse JOIN vn2008.Compres c ON c.Id_compra = ilb.buy_id WHERE r.display <> 0 AND tr.user_id = vWorker; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `stockBuyedByWorkerTest` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `stockBuyedByWorkerTest`(vDate DATE, vWorker INT) BEGIN DECLARE vVolume DECIMAL(10,2); DECLARE vWarehouse INT DEFAULT 7; CALL stockTraslationTest(vDate); SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn2008.cm3(Id_Compra))/vVolume buyed FROM tmp.item i JOIN vn2008.Articles a ON a.Id_Article = i.item_id JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id JOIN vn2008.reinos r ON r.id = t.reino_id JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = t.Id_Trabajador JOIN vn2008.t_item_last_buy ilb ON ilb.item_id = a.Id_Article AND ilb.warehouse_id = vWarehouse JOIN vn2008.Compres c ON c.Id_compra = ilb.buy_id WHERE r.display <> 0 AND tr.user_id = vWorker; DROP TEMPORARY TABLE IF EXISTS tmp_item; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `stockTraslation` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `stockTraslation`(vDate DATE) BEGIN /** * Calcula el stock del vWarehouse desde FechaInventario hasta v_date sin tener en cuenta las salidas del mismo dia vDate para ver el transporte a reservar **/ DECLARE vWarehouse INT DEFAULT 7; DELETE FROM stockBuyed WHERE `date` = vDate; DROP TEMPORARY TABLE IF EXISTS tmp_item; CREATE TEMPORARY TABLE tmp_item (UNIQUE INDEX i USING HASH (item_id)) ENGINE = MEMORY SELECT item_id, SUM(amount) amount FROM vn2008.item_entry_in WHERE dat = vDate and vDate >= CURDATE() AND warehouse_id = vWarehouse GROUP BY item_id HAVING amount != 0; CALL `cache`.stock_refresh (FALSE); INSERT INTO tmp_item (item_id,amount) SELECT item_id,s.amount FROM `cache`.stock s WHERE warehouse_id = vWarehouse ON DUPLICATE KEY UPDATE amount = tmp_item.amount + VALUES(amount); CALL vn2008.item_last_buy_(vWarehouse,vDate); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `stockTraslationkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `stockTraslationkk`(vDate DATE) BEGIN /** * Calcula el stock del vWarehouse desde FechaInventario hasta v_date sin tener en cuenta las salidas del mismo dia vDate para ver el transporte a reservar **/ DECLARE vWarehouse INT DEFAULT 7; DELETE FROM stockBuyed WHERE `date` = vDate; DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item ( `item_id` INT, `amount` DECIMAL(10, 2) DEFAULT 0.00, PRIMARY KEY(item_id) ) ENGINE = MEMORY; IF vDate >= CURDATE() THEN INSERT INTO tmp.item SELECT item_id, SUM(amount) amount FROM vn2008.item_entry_in WHERE dat = vDate AND warehouse_id = vWarehouse GROUP BY item_id HAVING amount != 0; END IF; CALL `cache`.stock_refresh (FALSE); INSERT INTO tmp.item (item_id,amount) SELECT item_id,s.amount FROM `cache`.stock s WHERE warehouse_id = vWarehouse ON DUPLICATE KEY UPDATE amount = tmp.item.amount + VALUES(amount); CALL vn2008.item_last_buy_(vWarehouse,vDate); select * FROM tmp.item; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `stockTraslationTest` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `stockTraslationTest`(vDate DATE) BEGIN /** * Calcula el stock del vWarehouse desde FechaInventario hasta v_date sin tener en cuenta las salidas del mismo dia vDate para ver el transporte a reservar **/ DECLARE vWarehouse INT DEFAULT 7; DELETE FROM stockBuyed WHERE `date` = vDate; DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item ( `item_id` INT, `amount` DECIMAL(10, 2) DEFAULT 0.00, PRIMARY KEY(item_id) ) ENGINE = MEMORY; IF vDate >= CURDATE() THEN INSERT INTO tmp.item SELECT item_id, SUM(amount) amount FROM vn2008.item_entry_in WHERE dat = vDate AND warehouse_id = vWarehouse GROUP BY item_id HAVING amount != 0; END IF; CALL `cache`.stock_refresh (FALSE); INSERT INTO tmp.item (item_id,amount) SELECT item_id,s.amount FROM `cache`.stock s WHERE warehouse_id = vWarehouse ON DUPLICATE KEY UPDATE amount = tmp.item.amount + VALUES(amount); CALL vn2008.item_last_buy_(vWarehouse,vDate); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `taxGetRates` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `taxGetRates`(vTaxDate DATE) READS SQL DATA BEGIN /** * Calcula una tabla con el IVA aplicable para la fecha data. * * @param vTaxDate * @treturn tmp.taxGroup * @treturn tmp.taxTax */ SET vTaxDate = IFNULL(vTaxDate, CURDATE()); DROP TEMPORARY TABLE IF EXISTS tmp.taxClass, tmp.taxType; -- Calcula el tipo de IVA para cada clase en cada país. CREATE TEMPORARY TABLE tmp.taxClass (INDEX (countryFk, taxClassFk)) ENGINE = MEMORY SELECT * FROM ( SELECT t.countryFk, g.taxClassFk, c.type FROM vn.taxClassCode g JOIN vn.taxCode c ON c.id = g.taxCodeFk JOIN vn.taxType t ON t.id = c.taxTypeFk WHERE g.effectived <= vTaxDate ORDER BY g.effectived DESC ) t GROUP BY countryFk, taxClassFk; -- Calcula el impuesto para cada tipo de IVA en cada país. CREATE TEMPORARY TABLE tmp.taxType (INDEX (countryFk, type)) ENGINE = MEMORY SELECT * FROM ( SELECT t.countryFk, c.type, c.rate / 100 rate, c.equalizationTax / 100 equalizationTax FROM vn.taxCode c JOIN vn.taxType t ON t.id = c.taxTypeFk WHERE c.dated <= vTaxDate AND t.isAccrued ORDER BY c.dated DESC, c.equalizationTax DESC ) t GROUP BY countryFk, type; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketClosure` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosure`() BEGIN /** * Realiza el cierre de todos los * tickets de la table ticketClosure. */ DECLARE vDone BOOL; DECLARE vClientFk INT; DECLARE vTicketFk INT; DECLARE vIsTaxDataChecked BOOL; DECLARE vCompanyFk INT; DECLARE vShipped DATE; DECLARE vPriority INT DEFAULT 1; DECLARE vReportDeliveryNote INT DEFAULT 1; DECLARE vNewInvoiceId INT; DECLARE vIsUeeMember BOOL; DECLARE cur CURSOR FOR SELECT ticketFk FROM tmp.ticketClosure; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN RESIGNAL; END; INSERT INTO dailyTaskLog(state) VALUES('ticketClosure: START'); OPEN cur; proc: LOOP SET vDone = FALSE; FETCH cur INTO vTicketFk; IF vDone THEN LEAVE proc; END IF; -- ticketClosure start SELECT c.id, c.isTaxDataChecked, t.companyFk, t.shipped, co.isUeeMember INTO vClientFk, vIsTaxDataChecked, vCompanyFk, vShipped, vIsUeeMember FROM ticket t JOIN `client` c ON c.id = t.clientFk JOIN province p ON p.id = c.provinceFk JOIN country co ON co.id = p.countryFk WHERE t.id = vTicketFk; -- Fusión de ticket -- CALL mergeTicketUnattended(vTicketFk, TRUE); JGF 2017/12/04 INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity) (SELECT vTicketFk, p.id, COUNT(*) FROM expedition e JOIN package p ON p.itemFk = e.itemFk WHERE e.ticketFk = vTicketFk AND p.isPackageReturnable GROUP BY p.itemFk); -- No retornables o no catalogados INSERT INTO movement (item, ticket, concept, amount, price, priceFixed) (SELECT e.itemFk, vTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 FROM expedition e JOIN item i ON i.id = e.itemFk LEFT JOIN package p ON p.itemFk = i.id WHERE e.ticketFk = vTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0 AND getSpecialPrice(e.itemFk, vClientFk) > 0 GROUP BY e.itemFk); IF(vIsUeeMember = FALSE) THEN -- Facturacion rapida CALL ticketTrackingAdd(vTicketFk, 'DELIVERED', 20); -- Facturar si está contabilizado IF vIsTaxDataChecked THEN IF (SELECT clientTaxArea(vClientFk, vCompanyFk)) = 'NATIONAL' THEN CALL invoiceMakeByClient( vClientFk, (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')), vShipped, vCompanyFk, vNewInvoiceId); ELSE CALL invoiceMakeByTicket(vTicketFk, (SELECT invoiceSerial(vClientFk, vCompanyFk, 'R')), vNewInvoiceId); END IF; END IF; ELSE -- Albaran_print CALL ticketTrackingAdd(vTicketFk, (SELECT vn.getAlert3State(vTicketFk)), 20); INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(vPriority, vReportDeliveryNote, vTicketFk); END IF; -- ticketClosure end END LOOP; CLOSE cur; INSERT INTO dailyTaskLog(state) VALUES('ticketClosure: END'); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketClosureAgencyList` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureAgencyList`(vWarehouseFk INT, vDateTo DATE) BEGIN /** * Inserta los tickets de todos los almacenes en la tabla temporal * para ser cerrados. * * @param vWarehouseFk Id del almacén * @param vDate Fecha del cierre */ DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( SELECT t.id AS ticketFk FROM expedition e INNER JOIN ticket t ON t.id = e.ticketFk INNER JOIN tmp.ticketClosureAgencyList al ON al.agencyModeFk = t.agencyModeFk LEFT JOIN ticketState ts ON ts.ticketFk = t.id WHERE ts.alertLevel = 2 AND t.warehouseFk = vWarehouseFk AND DATE(t.shipped) BETWEEN DATE_ADD(vDateTo, INTERVAL -2 DAY) AND vDateTo AND t.refFk IS NULL GROUP BY e.ticketFk); DROP TEMPORARY TABLE tmp.ticketClosureAgencyList; CALL ticketClosure(); DROP TEMPORARY TABLE tmp.ticketClosure; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketClosureAgencyListAdd` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureAgencyListAdd`(vAgencyModeFk INT) BEGIN /** * Prepara un listado de agencias sobre los que se realizará el cierre. * Es necesario llamar al procedimiento por cada agencia. * * @param vAgencyModeFk Id almacén */ CREATE TEMPORARY TABLE IF NOT EXISTS tmp.ticketClosureAgencyList ( `agencyModeFk` INT, PRIMARY KEY(agencyModeFk)) ENGINE = MEMORY; INSERT INTO tmp.ticketClosureAgencyList(agencyModeFk) VALUES(vAgencyModeFk); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketClosurekk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosurekk`() BEGIN /** * Realiza el cierre de todos los * tickets de la table ticketClosure. */ DECLARE vDone BOOL; DECLARE vClientFk INT; DECLARE vCredit INT; DECLARE vPayMethod INT; DECLARE vTicketFk INT; DECLARE vIsToBeMailed BOOL; DECLARE vIsTaxDataChecked BOOL; DECLARE vCompanyFk INT; DECLARE vDeliveryMethod INT; DECLARE vAgencyFk INT; DECLARE vAgencyModeFk INT; DECLARE vWarehouseFk INT; DECLARE vShipped DATE; DECLARE vPayMethodCard INT DEFAULT 5; DECLARE vPriority INT DEFAULT 1; DECLARE vReportDeliveryNote INT DEFAULT 1; DECLARE vNewInvoiceId INT; DECLARE vHasToInvoice BOOL; DECLARE cur CURSOR FOR SELECT ticketFk FROM tmp.ticketClosure; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN RESIGNAL; END; INSERT INTO dailyTaskLog(state) VALUES('ticketClosure: START'); OPEN cur; proc: LOOP SET vDone = FALSE; FETCH cur INTO vTicketFk; IF vDone THEN LEAVE proc; END IF; -- ticketClosure start SELECT c.id, c.credit, c.paymentMethodFk, c.isToBeMailed, c.isTaxDataChecked, t.companyFk, IFNULL(aw.agencyType, a.deliveryMethod) AS deliveryMethod, a.id AS agencyFk, t.agencyModeFk, t.warehouseFk, t.shipped, c.hasToInvoice INTO vClientFk, vCredit, vPayMethod, vIsToBeMailed, vIsTaxDataChecked, vCompanyFk, vDeliveryMethod, vAgencyFk, vAgencyModeFk, vWarehouseFk, vShipped, vHasToInvoice FROM ticket t INNER JOIN `client` c ON c.id = t.clientFk LEFT JOIN agencyMode a ON a.id = t.agencyModeFk LEFT JOIN agencyWarehouse aw ON a.id = aw.agencyFk AND t.warehouseFk = aw.warehouseFk WHERE t.id = vTicketFk; -- Fusión de ticket CALL mergeTicketUnattended(vTicketFk, TRUE); INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity) (SELECT vTicketFk, p.id, COUNT(*) FROM expedition e JOIN package p ON p.itemFk = e.itemFk WHERE e.ticketFk = vTicketFk AND p.isPackageReturnable GROUP BY p.itemFk); -- No retornables o no catalogados INSERT INTO movement (item, ticket, concept, amount, price, priceFixed) (SELECT e.itemFk, vTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 FROM expedition e JOIN item i ON i.id = e.itemFk LEFT JOIN package p ON p.itemFk = i.id WHERE e.ticketFk = vTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0 GROUP BY e.itemFk); -- Albaran_print CALL ticketTrackingAdd(vTicketFk, (SELECT vn.getAlert3State(vTicketFk)), 20); INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(vPriority, vReportDeliveryNote, vTicketFk); IF((vCredit <= 1 OR vPayMethod = vPayMethodCard) AND vHasToInvoice <> FALSE) THEN -- Facturacion rapida CALL ticketTrackingAdd(vTicketFk, 'DELIVERED', 20); -- Facturar si está contabilizado IF vIsTaxDataChecked THEN IF (SELECT clientTaxArea(vClientFk, vCompanyFk)) = 'NATIONAL' THEN CALL invoiceMakeByClient( vClientFk, (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')), vShipped, vCompanyFk, vNewInvoiceId); ELSE CALL invoiceMakeByTicket(vTicketFk, (SELECT invoiceSerial(vClientFk, vCompanyFk, 'R')), vNewInvoiceId); END IF; END IF; ELSE -- Albaran_print CALL ticketTrackingAdd(vTicketFk, (SELECT vn.getAlert3State(vTicketFk)), 20); INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(vPriority, vReportDeliveryNote, vTicketFk); END IF; -- ticketClosure end END LOOP; CLOSE cur; INSERT INTO dailyTaskLog(state) VALUES('ticketClosure: END'); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketClosureMultiWarehouse` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureMultiWarehouse`(vDateTo DATE) BEGIN /** * Inserta los tickets de todos los almacenes en la tabla temporal * para ser cerrados. * * @param vDate Fecha del cierre */ DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( SELECT t.id AS ticketFk FROM expedition e INNER JOIN ticket t ON t.id = e.ticketFk INNER JOIN warehouse w ON w.id = t.warehouseFk AND hasComission LEFT JOIN ticketState ts ON ts.ticketFk = t.id WHERE ts.alertLevel = 2 AND DATE(t.shipped) BETWEEN DATE_ADD(vDateTo, INTERVAL -2 DAY) AND vDateTo AND t.refFk IS NULL GROUP BY e.ticketFk); CALL ticketClosure(); DROP TEMPORARY TABLE tmp.ticketClosure; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketClosureRoute` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureRoute`(vWarehouseFk INT, vRouteFk INT, vDateTo DATE) BEGIN /** * Inserta los tickets de la ruta en la tabla temporal * para ser cerrados. * * @param vWarehouseFk Almacén a cerrar * @param vRouteFk Ruta a cerrar * @param vDate Fecha del cierre */ DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( SELECT t.id AS ticketFk FROM expedition e INNER JOIN ticket t ON t.id = e.ticketFk LEFT JOIN ticketState ts ON ts.ticketFk = t.id WHERE ts.alertLevel = 2 AND t.warehouseFk = vWarehouseFk AND t.routeFk = vRouteFk AND DATE(t.shipped) BETWEEN DATE_ADD(vDateTo, INTERVAL -2 DAY) AND vDateTo AND t.refFk IS NULL GROUP BY e.ticketFk); CALL ticketClosure(); DROP TEMPORARY TABLE tmp.ticketClosure; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketClosureTicket` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureTicket`(vTicketFk INT) BEGIN /** * Inserta el ticket en la tabla temporal * para ser cerrado. * * @param vTicketFk Id del ticket */ DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( SELECT t.id AS ticketFk FROM expedition e INNER JOIN ticket t ON t.id = e.ticketFk LEFT JOIN ticketState ts ON ts.ticketFk = t.id WHERE ts.alertLevel = 2 AND t.id = vTicketFk AND t.refFk IS NULL GROUP BY e.ticketFk); CALL ticketClosure(); DROP TEMPORARY TABLE tmp.ticketClosure; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketClosureWarehouse` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureWarehouse`(vWarehouseFk INT, vDateTo DATE) BEGIN /** * Inserta los tickets del almacen en la tabla temporal * para ser cerrados. * * @param vWarehouseFk Almacén a cerrar * @param vDate Fecha del cierre */ DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; CREATE TEMPORARY TABLE ticketClosure ENGINE = MEMORY( SELECT t.id AS ticketFk FROM expedition e INNER JOIN ticket t ON t.id = e.ticketFk LEFT JOIN ticketState ts ON ts.ticketFk = t.id WHERE ts.alertLevel = 2 AND t.warehouseFk = vWarehouseFk AND DATE(t.shipped) BETWEEN DATE_ADD(vDateTo, INTERVAL -2 DAY) AND vDateTo AND t.refFk IS NULL GROUP BY e.ticketFk); CALL ticketClosure(); DROP TEMPORARY TABLE tmp.ticketClosure; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketCreate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketCreate`( vClientId INT ,vShipped DATE ,vWarehouseId INT ,vCompanyFk INT ,vAddressFk INT ,vAgencyType INT ,vRouteFk INT ,vlanded DATE ,OUT vNewTicket INT) BEGIN DECLARE vClientOrnamentales INT DEFAULT 5270; DECLARE vCompanyOrn INT DEFAULT 1381; DECLARE vProvinceName VARCHAR(255); SELECT p.name INTO vProvinceName FROM vn.client c JOIN province p ON p.id = c.provinceFk WHERE c.id = vClientId; IF vProvinceName IN ('SANTA CRUZ DE TENERIFE', 'LAS PALMAS DE GRAN CANARIA') AND vClientId <> vClientOrnamentales THEN SET vCompanyFk = vCompanyOrn; END IF; INSERT INTO vn2008.Tickets ( Id_Cliente, Fecha, Id_Consigna, Id_Agencia, Alias, warehouse_id, Id_Ruta, empresa_id, landing ) SELECT vClientId, vShipped, a.id, IF(vAgencyType,vAgencyType,a.agencyFk), a.nickname, vWarehouseId, IF(vRouteFk,vRouteFk,NULL), vCompanyFk, vlanded FROM address a JOIN agencyMode am ON am.id = a.agencyFk WHERE IF(vAddressFk, a.id = vAddressFk, a.isDefaultAddress != FALSE) AND a.clientFk = vClientId LIMIT 1; SET vNewTicket = LAST_INSERT_ID(); INSERT INTO ticketObservation(ticketFk, observationTypeFk, description) SELECT vNewTicket,ao.observationTypeFk, ao.description FROM addressObservation ao JOIN address a ON a.id = ao.addressFk WHERE a.clientFk = vClientId AND a.isDefaultAddress != FALSE; CALL logAdd(vNewTicket, 'insert', 'ticket', CONCAT('CREA EL TICKET', ' ', vNewTicket)); IF (SELECT isCreatedAsServed FROM vn.client WHERE id = vClientId ) <> FALSE THEN INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) SELECT id, vNewTicket, getWorker() FROM state WHERE `code` = 'DELIVERED'; END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketGetTax` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetTax`(vBillingDate DATE) READS SQL DATA BEGIN /** * Calcula la base imponible, el IVA y el recargo de equivalencia para * un conjunto de tickets. * * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular * @param vBillingDate Fecha de facturación * @treturn tmp.ticketTax Impuesto desglosado para cada ticket */ CALL vn.taxGetRates (vBillingDate); -- Calcula el IVA y el recargo desglosado para cada ticket. DROP TEMPORARY TABLE IF EXISTS tmp.ticketTax; CREATE TEMPORARY TABLE tmp.ticketTax (INDEX (ticketFk)) ENGINE = MEMORY SELECT t.ticketFk, t.type, t.taxBase, CAST(IF(t.hasTax, t.taxBase * x.rate, 0) AS DECIMAL(10,2)) tax, CAST(IF(t.hasEqualizationTax, t.taxBase * x.equalizationTax, 0) AS DECIMAL(10,2)) equalizationTax FROM ( SELECT i.ticketFk, g.countryFk, g.type ,SUM(CAST(m.quantity * m.price * (100 - m.discount) / 100 AS DECIMAL(10,2))) AS taxBase ,NOT(c.isVies AND p.countryFk <> c.countryFk) hasTax ,c.isEqualizated != FALSE AS hasEqualizationTax FROM tmp.ticket i JOIN vn.ticket t ON t.id = i.ticketFk JOIN vn.sale m ON m.ticketFk = t.id JOIN vn.item a ON a.id = m.itemFk JOIN vn.client c ON c.id = t.clientFk JOIN vn.supplier p ON p.id = t.companyFk JOIN tmp.taxClass g ON g.countryFk = p.countryFk AND g.taxClassFk = a.taxClassFk GROUP BY i.ticketFk, g.type ) t JOIN tmp.taxType x ON x.countryFk = t.countryFk AND x.type = t.type; DROP TEMPORARY TABLE tmp.taxClass, tmp.taxType; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketGetTaxkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetTaxkk`(vBillingDate DATE) READS SQL DATA BEGIN /** * Calcula la base imponible, el IVA y el recargo de equivalencia para * un conjunto de tickets. * * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular * @param vBillingDate Fecha de facturación * @treturn tmp.ticketTax Impuesto desglosado para cada ticket */ CALL vn.taxGetRates (vBillingDate); -- Calcula el IVA y el recargo desglosado para cada ticket. DROP TEMPORARY TABLE IF EXISTS tmp.ticketTax; CREATE TEMPORARY TABLE tmp.ticketTax (INDEX (ticketFk)) ENGINE = MEMORY SELECT t.ticketFk, t.type, t.taxBase, CAST(IF(t.hasTax, t.taxBase * x.rate, 0) AS DECIMAL(10,2)) tax, CAST(IF(t.hasEqualizationTax, t.taxBase * x.equalizationTax, 0) AS DECIMAL(10,2)) equalizationTax FROM ( SELECT i.ticketFk, g.countryFk, g.type ,SUM(CAST(m.quantity * m.price * (100 - m.discount) / 100 AS DECIMAL(10,2))) AS taxBase ,NOT(c.isVies AND p.countryFk <> c.countryFk) hasTax ,c.isEqualizated != FALSE AS hasEqualizationTax FROM tmp.ticket i JOIN vn.ticket t ON t.id = i.ticketFk JOIN vn.sale m ON m.ticketFk = t.id JOIN vn.item a ON a.id = m.itemFk JOIN vn.client c ON c.id = t.clientFk JOIN vn.supplier p ON p.id = t.companyFk JOIN tmp.taxClass g ON g.countryFk = p.countryFk AND g.taxClassFk = a.taxClassFk GROUP BY i.ticketFk, g.type ) t JOIN tmp.taxType x ON x.countryFk = t.countryFk AND x.type = t.type; DROP TEMPORARY TABLE tmp.taxClass, tmp.taxType; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketGetTotal` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetTotal`() READS SQL DATA BEGIN /** * Calcula el total con IVA para un conjunto de tickets. * * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular * @treturn tmp.ticketTotal Total para cada ticket */ CALL ticketGetTax (NULL); DROP TEMPORARY TABLE IF EXISTS tmp.ticketTotal; CREATE TEMPORARY TABLE tmp.ticketTotal (INDEX (ticketFk)) ENGINE = MEMORY SELECT ticketFk, SUM(taxBase + tax + equalizationTax) AS total FROM tmp.ticketTax GROUP BY ticketFk; DROP TEMPORARY TABLE tmp.ticketTax; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketGetTotalkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetTotalkk`() READS SQL DATA BEGIN /** * Calcula el total con IVA para un conjunto de tickets. * * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular * @treturn tmp.ticketTotal Total para cada ticket */ CALL ticketGetTax (NULL); DROP TEMPORARY TABLE IF EXISTS tmp.ticketTotal; CREATE TEMPORARY TABLE tmp.ticketTotal (INDEX (ticketFk)) ENGINE = MEMORY SELECT ticketFk, SUM(taxBase + tax + equalizationTax) AS total FROM tmp.ticketTax GROUP BY ticketFk; DROP TEMPORARY TABLE tmp.ticketTax; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByAddress` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByAddress`( vStarted DATE, vEnded DATETIME, vAddress INT, vCompany INT ) BEGIN SET vEnded = util.dayEnd(vEnded); DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; CREATE TEMPORARY TABLE vn.ticketToInvoice SELECT id FROM vn.ticket WHERE addressFk = vAddress AND companyFk = vCompany AND shipped BETWEEN vStarted AND vEnded AND refFk IS NULL; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByClient` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByClient`( vStarted DATE, vEnded DATETIME, vClient INT, vCompany INT ) BEGIN SET vEnded = util.dayEnd(vEnded); DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; CREATE TEMPORARY TABLE vn.ticketToInvoice SELECT id FROM vn.ticket WHERE clientFk = vClient AND companyFk = vCompany AND shipped BETWEEN vStarted AND vEnded AND refFk IS NULL; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByDate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByDate`( vStarted DATE, vEnded DATETIME, vClient INT, vCompany INT ) BEGIN SET vEnded = util.dayEnd(vEnded); DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; CREATE TEMPORARY TABLE vn.ticketToInvoice SELECT id FROM vn.ticket WHERE clientFk = vClient AND companyFk = vCompany AND shipped BETWEEN vStarted AND vEnded AND refFk IS NULL; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByRef` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByRef`(IN vInvoiceRef VARCHAR(15)) BEGIN /* Para tickets ya facturados, vuelve a repetir el proceso de facturación. * * @param vInvoiceRef Factura */ DECLARE vInvoice INT; DECLARE vCountry INT; DECLARE vTaxArea VARCHAR(15); DECLARE vSpainCountryCode INT DEFAULT 1; SELECT id INTO vInvoice FROM vn.invoiceOut WHERE ref = vInvoiceRef; SELECT s.countryFk INTO vCountry FROM vn.supplier s JOIN vn.invoiceOut io ON io.companyFk = s.id WHERE io.id = vInvoice; SELECT IF( c.isEqualizated AND c.countryFk = vSpainCountryCode AND i.taxAreaFk = 'NATIONAL', 'EQU', i.taxAreaFk ) INTO vTaxArea FROM vn.invoiceOutSerial i JOIN vn.invoiceOut io ON io.serial = i.code JOIN vn.client c ON c.id = io.clientFk WHERE io.id = vInvoice; DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; CREATE TEMPORARY TABLE vn.ticketToInvoice SELECT id FROM vn.ticket WHERE refFk = vInvoiceRef; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByTicketkk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByTicketkk`(vTicket INT) BEGIN DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; CREATE TEMPORARY TABLE vn.ticketToInvoice SELECT id FROM vn.ticket WHERE id = vTicket AND refFk IS NULL; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketTrackingAdd` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketTrackingAdd`(vTicketFk INT, vState VARCHAR(25) CHARSET UTF8, vWorkerFk INT) BEGIN /** * Inserta un registro de cambios en un ticket. * @param vTicketFk Id del ticket * @param vState Código del estado * @param vWorkerFk Id del trabajador */ INSERT INTO ticketTracking (stateFk, ticketFk, workerFk) SELECT s.id, vTicketFk, vWorkerFk FROM state s WHERE s.code = vState; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `workerCreateExternal` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `workerCreateExternal`( vFirstName VARCHAR(50), vSurname1 VARCHAR(50), vSurname2 VARCHAR(50), vUser VARCHAR(20), vPassword VARCHAR(50), vWorkerCode VARCHAR(3), vRole INT(2) ) BEGIN DECLARE vUserId INT; DECLARE vWorkerPako INT DEFAULT 2; DECLARE vSurnames VARCHAR(100); INSERT INTO account.user(name,password,role) SELECT vUser,MD5(vPassword),vRole; SET vUserId = LAST_INSERT_ID(); /* INSERT INTO vn.worker(firstName,name,bossFk,workerCode,user_id) SELECT vFirstName,CONCAT(vSurname1,' ',vSurname2),2,vWorkerCode,vUser; */ IF vSurname2 IS NULL THEN SET vSurnames = vSurname1; ELSE SET vSurnames = CONCAT(vSurname1, ' ', vSurname2); END IF; INSERT INTO vn2008.Trabajadores(Nombre, Apellidos, boss, CodigoTrabajador, user_id) SELECT vFirstName, vSurnames, vWorkerPako, vWorkerCode, vUserId; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `workerDisable` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `workerDisable`(vUserId int) BEGIN DELETE FROM account.account WHERE id = vUserId; UPDATE account.user SET role = 2 WHERE id = vUserId; UPDATE `client` SET credit = 0 WHERE id = vUserId; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `workingHours` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `workingHours`(username varchar(255), logon boolean) BEGIN DECLARE userid int(11); SELECT vn.getUserId(username) INTO userid; SELECT username, userid; IF userid IS NOT NULL THEN IF (logon) THEN CALL vn.workingHoursTimeIn(userid); ELSE CALL vn.workingHoursTimeOut(userid); END IF; END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `workingHoursTimeIn` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `workingHoursTimeIn`(vUserId INT(11)) BEGIN INSERT INTO vn.workingHours (timeIn, userId) VALUES (NOW(),vUserId); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `workingHoursTimeOut` */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `workingHoursTimeOut`(vUserId INT(11)) BEGIN UPDATE vn.workingHours SET timeOut = NOW() WHERE userId = vUserId AND DATE(timeIn) = CURDATE(); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `zoneNest` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `zoneNest`() BEGIN DECLARE vDone BOOL; DECLARE vParent INT DEFAULT 1; DECLARE vGeoFk INT; DECLARE vChildFk INT; DECLARE vChildName VARCHAR(45); DECLARE townCur CURSOR FOR SELECT p.geoFk, t.id, t.`name` FROM town t JOIN province p ON p.id = t.provinceFk WHERE t.id BETWEEN 30001 AND 40000; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; -- > Town cursor start OPEN townCur; townLoop: LOOP SET vDone = FALSE; FETCH townCur INTO vParent, vChildFk, vChildName; IF vDone THEN LEAVE townLoop; END IF; CALL nestAdd('vn', 'zoneNest', vParent, vChildName); -- Update town geoFk SET vGeoFk = LAST_INSERT_ID(); UPDATE town SET geoFk = vGeoFk WHERE id = vChildFk; END LOOP; CLOSE townCur; -- < Town cursor end END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2018-01-23 13:20:27