From edb29c7ceded6c9eac5a9827fd199d4e9f052084 Mon Sep 17 00:00:00 2001 From: "SAMBA\\bernat" Date: Mon, 18 Dec 2017 14:59:39 +0100 Subject: [PATCH] updated localDb01Structure.sql for vn.client and vn2008.client --- services/db/localDB01Structure.sql | 4910 +++++++++------------------- 1 file changed, 1477 insertions(+), 3433 deletions(-) diff --git a/services/db/localDB01Structure.sql b/services/db/localDB01Structure.sql index 3606d2c6d..284b417dd 100644 --- a/services/db/localDB01Structure.sql +++ b/services/db/localDB01Structure.sql @@ -1,4 +1,4 @@ --- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64) +-- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64) -- -- Host: 127.0.0.1 Database: vncontrol -- ------------------------------------------------------ @@ -254,6 +254,10 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +-- +-- Dumping events for database 'vncontrol' +-- + -- -- Dumping routines for database 'vncontrol' -- @@ -821,6 +825,10 @@ CREATE TABLE `value` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FV130916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Dumping events for database 'edi' +-- + -- -- Dumping routines for database 'edi' -- @@ -868,20 +876,17 @@ CREATE DEFINER=`root`@`%` PROCEDURE `batchNew`( ,vPackage INT ) BEGIN -/** - * Añade un nuevo lote, genera su código de barras y - * inserta/actualiza el registro en la tabla #vn2008.buy_edi - */ + DECLARE vEdi INT; DECLARE vRewriteKop INT DEFAULT NULL; DECLARE vBarcode CHAR(15) DEFAULT NULL; DECLARE vIsDuplicated BOOLEAN DEFAULT FALSE; DECLARE vUpdateExistent BOOLEAN DEFAULT FALSE; - DECLARE CONTINUE HANDLER FOR 1062 -- ER_DUP_KEY + DECLARE CONTINUE HANDLER FOR 1062 SET vIsDuplicated = TRUE; - -- Genera el código de barras + IF vAgj != 0 AND vAgj IS NOT NULL THEN @@ -897,7 +902,7 @@ BEGIN ); END IF; - -- Reescribe el parámetro kop + IF vKop IS NULL THEN @@ -911,7 +916,7 @@ BEGIN SET vKop = IFNULL(vRewriteKop, vKop); - -- Inserta el nuevo EKT + INSERT INTO vn2008.buy_edi SET barcode = IFNULL(vBarcode, barcode) @@ -947,8 +952,8 @@ BEGIN ,package = vPackage; - -- Si el EKT está duplicado y el que habia en la tabla era uno - -- provisional, lo actualiza con los nuevos valores. + + IF NOT vIsDuplicated THEN @@ -1005,7 +1010,7 @@ BEGIN WHERE id = vEdi; END IF; - -- Registra el lote + INSERT INTO batch SET message_id = vMessage @@ -1036,14 +1041,14 @@ BEGIN DECLARE vPackage INT; DECLARE vIsLot BOOLEAN; - -- Carga los datos necesarios del EKT + SELECT ref, qty, package INTO vRef, vQty, vPackage FROM vn2008.buy_edi e LEFT JOIN item i ON e.ref = i.id WHERE e.id = vEdi; - -- Inserta el cubo si no existe + IF vPackage = 800 THEN @@ -1067,7 +1072,7 @@ BEGIN END IF; END IF; - -- Intenta obtener el artículo en base a los atributos holandeses + INSERT IGNORE INTO item_track SET item_id = vRef; @@ -1097,7 +1102,7 @@ BEGIN AND c.Id_Article < 170000 ORDER BY l.now DESC, c.Id_Compra ASC LIMIT 1; - -- Determina si el articulo se vende por lotes + IF vItem THEN @@ -1107,7 +1112,7 @@ BEGIN WHERE a.Id_Article = vItem AND t.`transaction`; - -- Si el articulo se vende por lotes se inserta un nuevo artículo + IF vIsLot THEN @@ -1144,7 +1149,7 @@ BEGIN END IF; END IF; - -- Inserta la compra asociada al EKT + INSERT INTO vn2008.Compres ( @@ -1201,12 +1206,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `messageNew`( ,OUT vMessageId INT ) BEGIN -/** - * Registra un correo electronico. - * - * @param vMailId Message-ID del correo electrónico - * @param vSender Id del correo electrónio del remitente - */ + DECLARE vSenderId INT; SELECT id INTO vSenderId FROM mail @@ -1266,20 +1266,17 @@ CREATE DEFINER=`root`@`%` PROCEDURE `__batch_new`( ,v_package INT ) BEGIN -/** - * Añade un nuevo lote, genera su código de barras y - * inserta/actualiza el registro en la tabla #vn2008.buy_edi - **/ + DECLARE v_edi INT; DECLARE v_barcode CHAR(15) DEFAULT NULL; DECLARE v_is_duplicated BOOLEAN DEFAULT FALSE; DECLARE v_update_existent BOOLEAN DEFAULT FALSE; - DECLARE CONTINUE HANDLER FOR 1062 -- ER_DUP_KEY + DECLARE CONTINUE HANDLER FOR 1062 SET v_is_duplicated = TRUE; - -- Genera el código de barras + IF v_agj != 0 AND v_agj IS NOT NULL THEN @@ -1300,7 +1297,7 @@ BEGIN SELECT default_kop INTO v_kop FROM config; END IF; - -- Inserta el nuevo EKT + INSERT INTO vn2008.buy_edi SET barcode = IFNULL(v_barcode, barcode) @@ -1335,8 +1332,8 @@ BEGIN ,package = v_package; - -- Si el EKT está duplicado y el que habia en la tabla era uno - -- provisional, lo actualiza con los nuevos valores. + + IF NOT v_is_duplicated THEN @@ -1392,7 +1389,7 @@ BEGIN WHERE id = v_edi; END IF; - -- Registra el lote + INSERT INTO batch SET message_id = v_message @@ -1423,14 +1420,14 @@ BEGIN DECLARE v_package INT; DECLARE v_is_lot BOOLEAN; - -- Carga los datos necesarios del EKT + SELECT ref, qty, package INTO v_ref, v_qty, v_package FROM vn2008.buy_edi e LEFT JOIN item i ON e.ref = i.id WHERE e.id = v_edi; - -- Inserta el cubo si no existe + IF v_package = 800 THEN @@ -1454,7 +1451,7 @@ BEGIN END IF; END IF; - -- Intenta obtener el artículo en base a los atributos holandeses + INSERT IGNORE INTO item_track SET item_id = v_ref; @@ -1484,7 +1481,7 @@ BEGIN AND c.Id_Article < 170000 ORDER BY l.now DESC, c.Id_Compra ASC LIMIT 1; - -- Determina si el articulo se vende por lotes + IF v_item THEN @@ -1494,7 +1491,7 @@ BEGIN WHERE a.Id_Article = v_item AND t.`transaction`; - -- Si el articulo se vende por lotes se inserta un nuevo artículo + IF v_is_lot THEN @@ -1531,7 +1528,7 @@ BEGIN END IF; END IF; - -- Inserta la compra asociada al EKT + INSERT INTO vn2008.Compres ( @@ -1588,12 +1585,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `__message_new`( ,OUT v_message_id INT ) BEGIN -/** - * Registra un correo electronico. - * - * @param v_mail_id Message-ID del correo electrónico - * @param v_sender Id del correo electrónio del remitente - **/ + DECLARE v_sender_id INT; @@ -1646,7 +1638,7 @@ CREATE TABLE `Agencias` ( PRIMARY KEY (`Id_Agencia`), KEY `Agencias` (`Agencia`), KEY `Vista` (`Vista`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1982,7 +1974,7 @@ DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Articles_nichoBeforeInsert` BEFORE INSERT ON `Articles_nicho` FOR EACH ROW BEGIN - -- XXX: Intenta localizar al usuario que introduce BIO en esta tabla. + IF NEW.nicho IS NOT NULL AND NEW.nicho LIKE '%BIO%' THEN @@ -2044,7 +2036,7 @@ DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Articles_nichoBeforeUpdate` BEFORE UPDATE ON `Articles_nicho` FOR EACH ROW BEGIN - -- XXX: Intenta localizar al usuario que introduce BIO en esta tabla. + IF NOT (NEW.nicho <=> OLD.nicho) AND NEW.nicho LIKE '%BIO%' THEN @@ -2377,7 +2369,7 @@ CREATE TABLE `Clientes` ( `cplusTerIdNifFk` int(11) NOT NULL DEFAULT '1', `isCreatedAsServed` tinyint(1) DEFAULT '0', `hasInvoiceSimplified` tinyint(1) DEFAULT '0', - + `iban` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id_cliente`), UNIQUE KEY `IF` (`if`), KEY `Id_Trabajador` (`Id_Trabajador`), @@ -2402,7 +2394,7 @@ CREATE TABLE `Clientes` ( CONSTRAINT `canal_nuevo_cliente` FOREIGN KEY (`chanel_id`) REFERENCES `chanel` (`chanel_id`) ON UPDATE CASCADE, CONSTRAINT `clientes_fk_6` FOREIGN KEY (`cplusTerIdNifFk`) REFERENCES `vn`.`cplusTerIdNif` (`id`) ON UPDATE CASCADE, CONSTRAINT `tipos_de_cliente` FOREIGN KEY (`clientes_tipo_id`) REFERENCES `clientes_tipo` (`clientes_tipo_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=13 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 */ ; @@ -2477,7 +2469,7 @@ BEGIN DECLARE vEmployee INT; DECLARE vText VARCHAR(255) DEFAULT NULL; - -- Comprueba que el formato de los teléfonos es válido + IF !(NEW.telefono <=> OLD.telefono) THEN CALL pbx.phoneIsValid (NEW.telefono); @@ -2491,7 +2483,7 @@ BEGIN CALL pbx.phoneIsValid (NEW.fax); END IF; - -- Actualiza el crédito + SELECT Id_Trabajador INTO vEmployee FROM Trabajadores WHERE user_id = account.userGetId(); @@ -2508,7 +2500,7 @@ BEGIN Id_Trabajador = vEmployee; END IF; - -- Avisar al comercial si ha llegado la documentación sepa/core + IF NEW.sepavnl AND !OLD.sepavnl THEN SET vText = 'Sepa de VNL'; @@ -2831,7 +2823,7 @@ DELIMITER ;; JOIN travel T ON T.id = E.travel_id WHERE E.Id_Entrada = NEW.Id_Entrada; - -- Actualiza el volumen unitario + REPLACE bi.rotacion(Id_Article, warehouse_id, cm3) VALUES (NEW.Id_ARticle, vWarehouse, vn2008.cm3_unidad(NEW.Id_Compra)); @@ -3062,7 +3054,7 @@ CREATE TABLE `Consignatarios` ( CONSTRAINT `Consignatarios_ibfk_4` FOREIGN KEY (`Id_Agencia`) REFERENCES `Agencias` (`Id_Agencia`) ON UPDATE CASCADE, CONSTRAINT `Consignatarios_postcode` FOREIGN KEY (`postcode_id`) REFERENCES `postcodeKK` (`postcode_id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `address_customer_id` FOREIGN KEY (`Id_cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=33 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 */ ; @@ -3181,7 +3173,7 @@ BEGIN END IF; END IF; - -- Recargos de equivalencia distintos implican facturacion por consignatario + IF NEW.isEqualizated != OLD.isEqualizated THEN IF @@ -3861,14 +3853,14 @@ CREATE TABLE `Facturas` ( DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `FacturasBeforeInsert` BEFORE INSERT ON `Facturas` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one + BEGIN DECLARE v_Id_Factura_serie CHAR(9) DEFAULT '0000001'; DECLARE v_Id_Factura INT; DECLARE max_id, intLast, intProv INT; - -- Evitamos la generacion de nuevas facturas tras el cese de actividad de EFL + IF NEW.empresa_id = 792 AND NEW.Fecha > '2012-12-20' THEN SET NEW.empresa_id = 791; END IF; @@ -3887,7 +3879,7 @@ BEGIN WHERE Serie LIKE NEW.Serie AND ((Year(NEW.Fecha) = Year(Fecha) AND length(Id_Factura) > 6 - AND empresa_id = NEW.empresa_id) /*OR (NEW.Serie LIKE 'B' AND length(Id_Factura) > 7)*/ ); + AND empresa_id = NEW.empresa_id) ); ELSE @@ -3895,7 +3887,7 @@ BEGIN SELECT CONCAT(digito_factura,RIGHT(YEAR(CURDATE()),1),'00001') INTO v_Id_Factura_serie FROM empresa WHERE id = NEW.empresa_id; -/*Primer digito la empresa, segundo el año, despues la numeracion correlativa con 5 digitos*/ + END IF; @@ -3906,33 +3898,7 @@ SET NEW.Id_Factura = v_Id_Factura_serie; -/* - IF intProv > 0 THEN -- No contabiliza bien las facturas holandesas - INSERT INTO recibida(proveedor_id,fecha,sref,empresa_id) - VALUES (NEW.empresa_id,NEW.Fecha,NEW.Id_Factura,intProv); - - SELECT LAST_INSERT_ID() INTO intLast; - - IF NEW.BI7 > 0 THEN - INSERT INTO recibida_iva(recibida_id,iva_id,bi,gastos_id) - VALUES(intLast,57,NEW.BI7,'6001000000'); - END IF; - - IF NEW.BI16 > 0 THEN - INSERT INTO recibida_iva(recibida_id,iva_id,bi,gastos_id) - VALUES(intLast,58,NEW.BI16,'6001000000'); - END IF; - - INSERT INTO recibida_vencimiento(recibida_id,fecha,banco_id,cantidad) - SELECT intLast,TIMESTAMPADD(DAY,15,NEW.Fecha),3117,SUM((1 + (IVA / 100)) * bi) - FROM recibida r INNER JOIN recibida_iva ri ON r.id = ri.recibida_id - INNER JOIN iva_codigo AS i ON ri.iva_id=i.id INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id - LEFT JOIN (SELECT recibida_id, SUM(cantidad) cantidad FROM recibida_vencimiento rv WHERE rv.recibida_id = intLast - GROUP BY recibida_id) t ON t.recibida_id = r.id WHERE r.id = intLast ; - UPDATE recibida SET contabilizada = 0 WHERE id = intLast; - UPDATE recibida SET contabilizada = 1 WHERE id = intLast; - END IF; -*/ + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -4942,14 +4908,14 @@ DELIMITER ;; BEGIN IF IFNULL(NEW.gestdoc_id,0) <> IFNULL(OLD.gestdoc_id,0) AND NEW.gestdoc_id > 0 THEN - -- JGF 09/09/14 cuando se añade un gestdoc a una ruta, se le asigna automagicamente a todos sus Tickets - -- Inserta el gestdoc en todos los tickets de la ruta + + INSERT INTO tickets_gestdoc(Id_Ticket,gestdoc_id) SELECT Id_Ticket, NEW.gestdoc_id FROM Tickets WHERE Id_Ruta = NEW.Id_Ruta ON DUPLICATE KEY UPDATE gestdoc_id = NEW.gestdoc_id; - -- Update del firmado + UPDATE Tickets t JOIN tickets_gestdoc tg ON t.Id_Ticket = tg.Id_Ticket SET Firmado = 1 WHERE t.Id_Ruta = NEW.Id_Ruta; END IF; @@ -5207,25 +5173,7 @@ DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `TicketsBeforeInsert` BEFORE INSERT ON `Tickets` FOR EACH ROW BEGIN -/* - DECLARE strEspecif VARCHAR(255); - DECLARE intId_Agencia INTEGER; - DECLARE auxprovince INTEGER; - DECLARE intemp INTEGER; - -- Si el cliente es de Canarias se le asigna la empresa ORN - - SELECT province_id INTO auxprovince - FROM Consignatarios WHERE Id_Consigna = NEW.Id_Consigna; - - IF (auxprovince = 49 OR auxprovince = 33) AND NEW.Id_Cliente <> 5270 THEN - SET intemp = 1381; - END IF; - - IF intemp THEN - SET NEW.empresa_id = intemp; - END IF; - */ END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -5244,24 +5192,7 @@ DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`TicketsAfterInsert` AFTER INSERT ON `vn2008`.`Tickets` FOR EACH ROW BEGIN - /* - DECLARE vEmployee INT; - - SELECT Id_Trabajador INTO vEmployee - FROM Trabajadores WHERE user_id = account.userGetId(); - - IF vEmployee IS NULL THEN - SET vEmployee = 20; - END IF; - - IF NEW.Id_Cliente = 400 OR NEW.Id_Cliente = 200 - THEN - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT id, NEW.Id_Ticket, vEmployee - FROM state - WHERE `code` = 'DELIVERED'; - END IF; - */ + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -5292,7 +5223,7 @@ BEGIN SET vEmployee = 20; END IF; - -- Comprobación de VIES + IF NEW.empresa_id <> OLD.empresa_id THEN SELECT CEE INTO vIsCee @@ -5492,7 +5423,7 @@ CREATE TABLE `Tipos` ( /*!50003 SET sql_mode = '' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `Tipos_bu` BEFORE UPDATE ON `Tipos` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one + BEGIN DECLARE strCOD VARCHAR(40); @@ -6117,7 +6048,7 @@ CREATE TABLE `agency` ( KEY `agencias_alias_idx` (`warehouse_alias_id`), CONSTRAINT `agency_ibfk_1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `agency_ibfk_2` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=7 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 */ ; @@ -7312,7 +7243,7 @@ CREATE TABLE `client_observation` ( KEY `Id_Cliente` (`Id_Cliente`), CONSTRAINT `client_observation_ibfk_1` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `client_observation_ibfk_2` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8089,7 +8020,7 @@ CREATE TABLE `expeditions` ( DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `expeditionsBeforeInsert` BEFORE INSERT ON `expeditions` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one + BEGIN DECLARE intcounter INT; @@ -8122,7 +8053,7 @@ DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`expeditionsBeforeUpdate` BEFORE UPDATE ON `vn2008`.`expeditions` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one + BEGIN IF NEW.counter <> OLD.counter THEN IF (SELECT COUNT(*) FROM expeditions e @@ -8179,7 +8110,7 @@ BEGIN UPDATE Tickets SET Bultos = (SELECT COUNT(counter)-1 FROM expeditions WHERE ticket_id = OLD.ticket_id and EsBulto) WHERE Id_Ticket = OLD.ticket_id; INSERT INTO Tickets_dits (idaccion_dits,Id_Trabajador,Id_Ticket,value_old,value_new) - SELECT 133/*Borra expedition*/ ,trabajador,OLD.ticket_id,CONCAT(OLD.odbc_date,',Bultos:',OLD.counter,',Embalaje:',OLD.EsBulto),user() + SELECT 133 ,trabajador,OLD.ticket_id,CONCAT(OLD.odbc_date,',Bultos:',OLD.counter,',Embalaje:',OLD.EsBulto),user() FROM Tickets WHERE Id_Ticket = OLD.ticket_id ; @@ -8366,7 +8297,7 @@ BEGIN SET NEW.orden = IFNULL(intORD,1) ; END IF; --- Marca Firmado a uno cada vez que se escanea un Ticket de forma que desaparezca del TNAC JGF 27/08/13 + IF NEW.gesttip_id = 14 THEN UPDATE Tickets SET Firmado = 1 WHERE Id_Ticket = NEW.sref; END IF; @@ -9000,7 +8931,7 @@ CREATE TABLE `movement_label` ( /*!50003 SET sql_mode = '' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `movement_label_au` AFTER UPDATE ON `movement_label` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one + IF NEW.stem >= (SELECT Cantidad FROM Movimientos WHERE Id_Movimiento = NEW.Id_Movimiento) THEN UPDATE Movimientos SET OK = 1 WHERE Id_Movimiento = NEW.Id_Movimiento; END IF */;; @@ -9169,7 +9100,7 @@ CREATE TABLE `pago` ( /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pago_bi` BEFORE INSERT ON `pago` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one + BEGIN DECLARE cuenta_banco,cuenta_proveedor DOUBLE; DECLARE max_asien INT; @@ -9177,10 +9108,10 @@ BEGIN - -- PAK 10/02/15 No se asientan los pagos directamente, salvo en el caso de las cajas de CASH + SELECT (cash = 1) INTO bolCASH FROM Bancos WHERE Bancos.Id_Banco = NEW.id_banco ; - IF bolCASH THEN -- AND NEW.id_pago <> 1 + IF bolCASH THEN SELECT Cuenta INTO cuenta_banco FROM Bancos WHERE Id_Banco = NEW.id_banco; SELECT Cuenta INTO cuenta_proveedor FROM Proveedores WHERE Id_Proveedor=NEW.id_proveedor; @@ -10002,7 +9933,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `recibida_bu` BEFORE UPDATE ON `recibida` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one + BEGIN DECLARE cta_proveed VARCHAR(10); @@ -10021,347 +9952,7 @@ BEGIN SET NEW.num_recibida = NULL; SET NEW.contabilizada = FALSE ; END IF; -/* -IF NEW.contabilizada = 1 AND OLD.contabilizada = 0 AND NEW.fecha < '2017-07-01' THEN - SELECT rate INTO dblRefRate FROM reference_rate WHERE date = (SELECT MAX(date) FROM reference_rate - WHERE date <= (SELECT t.shipment FROM - recibida_entrada re - INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada - LEFT JOIN travel t ON t.id = e.travel_id - WHERE re.awb_recibida = NEW.id GROUP BY re.awb_recibida)); - - SELECT rate INTO dblRefMin FROM reference_min WHERE date=(SELECT MAX(date) FROM reference_min - WHERE date<=(SELECT t.shipment FROM - recibida_entrada re - INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada - LEFT JOIN travel t ON t.id = e.travel_id - WHERE re.awb_recibida = NEW.id GROUP BY re.awb_recibida)); - - -- IF dblRefMin < dblRefRate THEN - -- SET dblRef = dblRefRate; - -- ELSE - -- SET dblRef =dblRefMin; - -- END IF; - SELECT IFNULL(MAX(r.num_recibida) + 1,1) INTO v_num_recibida FROM recibida r - WHERE r.serie LIKE NEW.serie - AND YEAR(r.fecha) = YEAR(NEW.fecha) - AND r.empresa_id = NEW.empresa_id GROUP BY r.empresa_id; - - SET NEW.num_recibida = IFNULL(v_num_recibida,1); - SELECT REPLACE(cuenta,' ','') INTO cta_proveed FROM Proveedores WHERE Id_Proveedor=NEW.proveedor_id; - - INSERT INTO XDiario(ASIEN,FECHA,SUBCTA,CONTRA,CONCEPTO,EURODEBE, EUROHABER,BASEEURO, SERIE,FACTURA,IVA,DOCUMENTO, - L340,LRECT349,TIPOOPE,AUXILIAR,empresa_id,LDIFADUAN) -SELECT a,NEW.fecha,subcta,contra,concepto,eurodebe,eurohaber,baseeuro,serie,NEW.sref,iva, - (SELECT CONCAT(serie,'/', LPAD(v_num_recibida,5,'0'))),l340,LRECT349,TIPOOPE,AUXILIAR,NEW.empresa_id,LDIFADUAN - FROM - - (SELECT MAX(ASIEN) + 1 as a FROM XDiario) t - - INNER JOIN - - ( - - SELECT *,NEW.serie,0 LDIFADUAN FROM - - (SELECT CONCAT('s/fra',RIGHT(sref,8),':',LEFT(Proveedor, 10)) concepto FROM Proveedores - - INNER JOIN recibida ON Id_Proveedor = proveedor_id WHERE id = NEW.id) t4 - - INNER JOIN( - -- Linea del proveedor/acreedor - SELECT subcta,'' contra,eurodebe,ROUND(SUM(eurohaber) + 0.0001,2) eurohaber,baseeuro,0 iva, l340,LRECT349,TIPOOPE,'' AUXILIAR - - FROM ( - - SELECT cta_proveed subcta, - - NULL eurodebe, ROUND((1+(iva/100)*(r.serie = 'R'))*SUM(bi),2) eurohaber, NULL baseeuro,ri.recibida_id, 0 l340,0 LRECT349,' ' TIPOOPE - - FROM recibida r - - INNER JOIN recibida_iva ri ON ri.recibida_id = r.id INNER JOIN iva_codigo ic ON ri.iva_id = ic.id - - INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id - INNER JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id - - WHERE r.id = NEW.id GROUP BY iva) t - - GROUP BY recibida_id - - UNION ALL - -- Linea de iva - SELECT ic.codigo,cta_proveed contra, - - ROUND(iva/100*SUM(ri.bi) + 0.0001,2) eurodebe, NULL eurohaber, - - ROUND(SUM(ri.bi),2) baseeuro,iva, 1 l340,(NOT ((p.pais_id <> p2.pais_id) AND pa.CEE < 2)) LRECT349,TIPOOPE, - IF(pa.CEE < 2 AND ri2.gastos_id IS NULL,'','*') AUXILIAR - FROM recibida r - - INNER JOIN recibida_iva ri ON ri.recibida_id = r.id - - LEFT JOIN recibida_iva ri2 ON ri2.recibida_id = r.id AND ri2.gastos_id LIKE '4751______' - - INNER JOIN iva_codigo ic ON ri.iva_id = ic.id - - INNER JOIN iva_tipo it ON it.id = ic.iva_tipo_id - - INNER JOIN Gastos g ON ri.gastos_id = g.Id_Gasto AND g.iva_tipo_id = ic.iva_tipo_id - - INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id - - INNER JOIN Paises pa ON p.pais_id = pa.Id - - INNER JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id - - INNER JOIN Paises pa2 ON p2.pais_id = pa2.Id - WHERE r.id = NEW.id AND ic.tipo <> '-' AND link GROUP BY iva - -- JGF 2016-05-05 g.conbase - UNION ALL - -- Linea iva inversor sujeto pasivo - SELECT ic2.codigo,cta_proveed contra, - - NULL eurodebe, ROUND(ic2.iva/100*SUM(bi) + 0.0001,2) eurohaber, - - ROUND(SUM(bi),2) baseeuro,ic2.iva, 1 l340,0 LRECT349,TIPOOPE,'*' AUXILIAR - - FROM recibida r - - INNER JOIN recibida_iva ri ON ri.recibida_id = r.id - - INNER JOIN iva_codigo ic ON ri.iva_id = ic.id - - INNER JOIN iva_codigo ic2 ON ic2.link = ic.link AND ic.id <> ic2.id - - INNER JOIN iva_tipo it ON ic.iva_tipo_id = it.id - - WHERE r.id = NEW.id AND ic2.link GROUP BY ic2.iva - - UNION ALL - -- Linea de Gastos - SELECT if(gastos_id LIKE '4751______',LPAD(RIGHT(cta_proveed ,5),10,gastos_id),gastos_id),cta_proveed , - - if(gastos_id LIKE '4751______',NULL,ABS(ROUND(SUM(bi),2))) , - - if(gastos_id LIKE '4751______',ABS(ROUND(SUM(bi),2)),NULL) , - - NULL ,0, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR - - FROM recibida r - - INNER JOIN recibida_iva ri ON ri.recibida_id = r.id - - INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id - - WHERE r.id = NEW.id AND gastos_id <> 5660000002 GROUP BY gastos_id - - UNION ALL - -- Iva Importacion pendiente - -- JGF 17/02/15 cambia la forma de declarar este tipo de importaciones, sólo afecta a transitarios - SELECT '4700000999',NULL,NULL ,ROUND(SUM(importe * (iva/100)),2),NULL ,0, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR - - FROM recibida r - JOIN recibida_intrastat ri ON r.id = ri.recibida_id - JOIN Intrastat i ON i.Codintrastat = ri.Codintrastat - JOIN iva_codigo ic ON ic.id = i.iva_codigo_id - WHERE ri.recibida_id = NEW.id GROUP BY ri.recibida_id - - ) t2 - - UNION ALL - - - -- Extracomunitarias gasto contra proveedor/acreedor - SELECT CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) concepto ,gastos_id,cuenta, - - ROUND(SUM(bi)/IF(r.serie='W' AND ri.divisa IS NULL,dblRefRate,1)* (re.percentage / 100),2),NULL ,IF( @a:=@a+1 ,NULL,NULL) ,0, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR,r.serie,0 LDIFADUAN - - FROM recibida_entrada re - - INNER JOIN recibida_iva ri ON re.recibida_id = ri.recibida_id - - INNER JOIN recibida r ON r.id = ri.recibida_id - - INNER JOIN Proveedores p ON p.Id_Proveedor = r.proveedor_id - - INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada - - LEFT JOIN travel t ON t.id = e.travel_id - - INNER JOIN (SELECT @a:=0,@cont:=1,@total:=0,@base:=2) t1 - - WHERE re.awb_recibida = NEW.id AND re.percentage GROUP BY r.id - -UNION ALL - - -- Extracomunitarias proveedor contra gasto - SELECT CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) concepto ,p.cuenta subcta,gastos_id, - - NULL eurodebe, ROUND((1+(iva/100)*(r.serie = 'R'))*SUM(bi)/IF(r.serie='W' AND ri.divisa IS NULL,dblRefRate,1)* (re.percentage / 100),2) eurohaber, - - NULL baseeuro,0 iva, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR,r.serie,0 LDIFADUAN - -- antes sols iva - FROM recibida_entrada re - - INNER JOIN recibida_iva ri ON re.recibida_id = ri.recibida_id - - INNER JOIN recibida r ON r.id = ri.recibida_id - - INNER JOIN iva_codigo ic ON ri.iva_id = ic.id - - INNER JOIN Proveedores p ON Id_Proveedor = r.proveedor_id - - INNER JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id - - WHERE re.awb_recibida = NEW.id AND re.percentage GROUP BY r.id - -UNION ALL - - -- Linea de iva adquisicion - SELECT CONCAT('ADQUI. INTRA FRA ',sref),ic.codigo,p.cuenta contra, - - ROUND(iva/100*SUM(ri.importe) + 0.0001,2) eurodebe, NULL eurohaber, - - ROUND(SUM(ri.importe),2) baseeuro,iva, 1 l340,1 LRECT349,TIPOOPE,'' AUXILIAR,r.serie,0 LDIFADUAN - - FROM awb_recibida ar - - JOIN awb a ON ar.awb_id = a.id - - JOIN iva_codigo ic ON a.iva_id = ic.id - - JOIN iva_tipo it ON ic.iva_tipo_id = it.id - - JOIN Proveedores p ON a.transitario_id = p.Id_Proveedor - - JOIN recibida_intrastat ri ON ri.recibida_id = ar.recibida_id - - JOIN recibida r ON r.id = ri.recibida_id - - JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id - - WHERE ar.recibida_id = NEW.id AND (p.pais_id <> p2.pais_id) - GROUP BY iva - - UNION ALL - - -- Linea de iva adquisicion - SELECT CONCAT('ADQUI. INTRA FRA ',sref),ic2.codigo,p.cuenta contra, - - NULL eurodebe, ROUND(ic2.iva/100*SUM(ri.importe) + 0.0001,2) eurohaber, - - ROUND(SUM(ri.importe),2) baseeuro,ic2.iva, 1 l340,0 LRECT349, TIPOOPE,'' AUXILIAR,r.serie,0 LDIFADUAN - - FROM awb_recibida ar - - JOIN awb a ON ar.awb_id = a.id - - JOIN iva_codigo ic ON a.iva_id = ic.id - - JOIN iva_codigo ic2 ON ic2.link = ic.link AND ic.id <> ic2.id - - JOIN iva_tipo it ON ic.iva_tipo_id = it.id - - JOIN Proveedores p ON a.transitario_id = p.Id_Proveedor - - JOIN recibida_intrastat ri ON ri.recibida_id = ar.recibida_id - - JOIN recibida r ON r.id = ar.recibida_id - - JOIN Proveedores p1 ON p1.Id_Proveedor = r.proveedor_id - - JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id - - WHERE ar.recibida_id = NEW.id AND (p.pais_id <> p2.pais_id) GROUP BY ic2.iva - - UNION ALL - -- Linea iva importacion - SELECT concepto,subcta,Cuenta, - IF (NOT ((ppais_id <> p2pais_id) AND CEE < 2), - - eurodebe - ,NULL)eurodebe,eurohaber,baseeuro, iva, - IF(@total:=@total+eurodebe ,0,0) l340, 0 LRECT349, - IF(@cont:=@cont+1,'','') TIPOOPE,'*' AUXILIAR,serie,1 LDIFADUAN FROM ( - - SELECT CONCAT('COMPRA FRA ',p.Proveedor) concepto,ic2.codigo subcta,p.Cuenta,ic2.iva, - ROUND(sum(costefijo * Cantidad / sub1.costetotal * sub2.importe)*(ic2.iva/100),2) eurodebe,NULL eurohaber, -- JGF 17/02/15 canvie 0.21 per ic.iva - ROUND(sum(costefijo * Cantidad / sub1.costetotal * sub2.importe),2) baseeuro,r.serie,pa.CEE,pa.Id_Paisreal ppais_id, - p2.pais_id p2pais_id,SUM(sub3.SumIntrastat *(ic2.iva/100)) SumIntrastat, p.Id_Proveedor,Codintrastat - - FROM awb_recibida ar - - JOIN recibida_entrada re ON ar.recibida_id = re.awb_recibida - - JOIN Compres c ON c.Id_Entrada = re.Id_Entrada - - INNER JOIN Articles a ON a.Id_Article = c.Id_Article - - INNER JOIN ( - - SELECT a.Codintrastat, sum(c.costefijo * c.Cantidad) as costetotal - - FROM Compres c - - JOIN Articles a ON a.Id_Article = c.Id_Article - - JOIN recibida_entrada re ON re.Id_Entrada = c.Id_Entrada - - JOIN awb_recibida ar ON ar.recibida_id = re.awb_recibida - - JOIN awb aw ON ar.awb_id = aw.id - - WHERE ar.recibida_id = NEW.id AND re.percentage - - GROUP BY a.Codintrastat - - ) sub1 USING(Codintrastat) - - INNER JOIN ( - - SELECT Codintrastat,ri.importe, i.iva_codigo_id - - FROM recibida_intrastat ri - JOIN Intrastat i USING(Codintrastat) - - WHERE ri.recibida_id = NEW.id - - ) sub2 USING(Codintrastat) - - INNER JOIN ( - - SELECT SUM(ri.importe) SumIntrastat - - FROM recibida_intrastat ri - - WHERE ri.recibida_id = NEW.id - - ) sub3 - - JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada - - JOIN Proveedores p ON p.Id_Proveedor = e.Id_Proveedor - - JOIN Paises pa ON p.pais_id = pa.Id - - JOIN recibida r ON r.id = re.recibida_id - - JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id - - JOIN iva_codigo ic2 ON ic2.id = sub2.iva_codigo_id -- JGF 15/04/15 nou canvi llei (Ali) - - WHERE re.awb_recibida = NEW.id AND re.percentage - -- canvie el cta_proveed like '___1______' per cero cuidao en les van de put - - GROUP BY p.Id_Proveedor, sub2.iva_codigo_id - -) t3 GROUP BY Id_Proveedor, iva)t4; - --- linea que estava a l'ultim WHERE -END IF; -*/ END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -11486,7 +11077,7 @@ DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `travelBeforeInsert` BEFORE INSERT ON `travel` FOR EACH ROW BEGIN - -- Evita fechas absurdas + IF NEW.landing < TIMESTAMPADD(YEAR, -10, CURDATE()) OR NEW.shipment < TIMESTAMPADD(YEAR, -10, CURDATE()) @@ -11514,13 +11105,13 @@ DELIMITER ;; BEGIN DECLARE trabajador INT; - -- Volem permetre dates iguals de eixida i arribada per al magatzems filiats en warehouse_tree + IF NEW.landing < NEW.shipment THEN SET NEW.shipment = NEW.landing; END IF; - -- Evita fechas absurdas + IF NEW.landing < TIMESTAMPADD(YEAR,-10, CURDATE()) OR NEW.shipment < TIMESTAMPADD(YEAR,-10,CURDATE()) @@ -11528,14 +11119,14 @@ BEGIN SET NEW.landing = NULL; END IF; - -- Ditacio para averiguar cuando se marca como delivered = true los travels, pues aparecen por la mañana sin explicacion + IF ABS(NEW.delivered) > ABS(OLD.delivered) THEN SELECT Id_Trabajador into trabajador from Trabajadores where user_id = account.userGetId(); INSERT INTO travel_dits (idaccion_dits,Id_Trabajador,Id_Ticket,value_old,value_new) - VALUES (89/*Cambia delivered*/ ,IFNULL(trabajador,20),NEW.id,OLD.delivered,CONCAT(NEW.delivered,' desde ' ,user())); + VALUES (89 ,IFNULL(trabajador,20),NEW.id,OLD.delivered,CONCAT(NEW.delivered,' desde ' ,user())); END IF; END */;; DELIMITER ; @@ -13097,6 +12688,10 @@ CREATE TABLE `zones` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Zonas de reparto'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Dumping events for database 'vn2008' +-- + -- -- Dumping routines for database 'vn2008' -- @@ -13124,15 +12719,15 @@ DECLARE strSambaNombre VARCHAR(30); samba:BEGIN proc:BEGIN - -- IF (boolCrearSamba) THEN - -- SELECT Id_Cliente_Interno INTO intId_Cliente FROM Trabajadores WHERE Nombre=strNombre and Apellidos=strApellidos; - -- SELECT CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),'.',intId_Cliente) INTO strPassword; - -- LEAVE proc; - -- END IF; --- Tabla Clientes + + + + + + SELECT COUNT(*) INTO intId_Cliente FROM Clientes WHERE `IF`=strDni; IF (intId_Cliente=0) THEN - -- SELECT IFNULL(province_id,1) INTO intprovince_id FROM province WHERE `name`=strProvincia; + SELECT MAX(Id_Cliente)+1 INTO intId_Cliente FROM Clientes WHERE Id_Cliente<999999; INSERT INTO Clientes (Id_Cliente,Cliente,Domicilio,`IF`,Telefono,province_id,Poblacion,CodPostal,RazonSocial,Contacto,Oficial,Descuento) @@ -13144,7 +12739,7 @@ END IF; SELECT CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),'.',intId_Cliente) INTO strPassword; --- Tabla Trabajadores + IF (SELECT COUNT(*) FROM Trabajadores WHERE Nombre=strNombre AND Apellidos=strApellidos)=0 THEN IF strCodTrabajador IS NULL THEN @@ -13162,13 +12757,13 @@ IF (SELECT COUNT(*) FROM Trabajadores WHERE Nombre=strNombre AND Apellidos=strAp ELSE SET RETORNO="CodigoTrabajador Existente"; END IF; - -- LEAVE SAMBA; -END; -- PROC + +END; + + --- Tabla Account, lo crea como usuario y en samba --- Obtengo el nombre sin espacios SET strSambaNombre = REPLACE(strNombre,' ',''); -IF (SELECT COUNT(*) FROM account.user WHERE `name`=convert(strNombre USING utf8) COLLATE utf8_general_ci)>0 THEN -- Si existe cojo la inicial del nombre+1º apellido +IF (SELECT COUNT(*) FROM account.user WHERE `name`=convert(strNombre USING utf8) COLLATE utf8_general_ci)>0 THEN SELECT CONCAT(LEFT(strNombre,1),CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),intId_Cliente)) INTO strSambaNombre; END IF; @@ -13186,7 +12781,7 @@ END IF; REPLACE INTO account.mailAliasAccount(mailAlias, account) VALUES (48,intId_Cliente); -END; -- samba +END; RETURN RETORNO; END ;; @@ -13219,15 +12814,15 @@ DECLARE strSambaNombre VARCHAR(30); samba:BEGIN proc:BEGIN - -- IF (boolCrearSamba) THEN - -- SELECT Id_Cliente_Interno INTO intId_Cliente FROM Trabajadores WHERE Nombre=strNombre and Apellidos=strApellidos; - -- SELECT CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),'.',intId_Cliente) INTO strPassword; - -- LEAVE proc; - -- END IF; --- Tabla Clientes + + + + + + SELECT COUNT(*) INTO intId_Cliente FROM Clientes WHERE `IF`=strDni; IF (intId_Cliente=0) THEN - -- SELECT IFNULL(province_id,1) INTO intprovince_id FROM province WHERE `name`=strProvincia; + SELECT MAX(Id_Cliente)+1 INTO intId_Cliente FROM Clientes WHERE Id_Cliente<999999; INSERT INTO Clientes (Id_Cliente,Cliente,Domicilio,`IF`,Telefono,province_id,Poblacion,CodPostal,RazonSocial,Contacto,Oficial,Descuento) @@ -13239,7 +12834,7 @@ END IF; SELECT CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),'.',intId_Cliente) INTO strPassword; --- Tabla Trabajadores + IF (SELECT COUNT(*) FROM Trabajadores WHERE Nombre=strNombre AND Apellidos=strApellidos)=0 THEN IF strCodTrabajador IS NULL THEN @@ -13257,13 +12852,13 @@ IF (SELECT COUNT(*) FROM Trabajadores WHERE Nombre=strNombre AND Apellidos=strAp ELSE SET RETORNO="CodigoTrabajador Existente"; END IF; - -- LEAVE SAMBA; -END; -- PROC + +END; + + --- Tabla Account, lo crea como usuario y en samba --- Obtengo el nombre sin espacios SET strSambaNombre = REPLACE(strNombre,' ',''); -IF (SELECT COUNT(*) FROM account.user WHERE `name`=convert(strNombre USING utf8) COLLATE utf8_general_ci)>0 THEN -- Si existe cojo la inicial del nombre+1º apellido +IF (SELECT COUNT(*) FROM account.user WHERE `name`=convert(strNombre USING utf8) COLLATE utf8_general_ci)>0 THEN SELECT CONCAT(LEFT(strNombre,1),CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),intId_Cliente)) INTO strSambaNombre; END IF; @@ -13281,7 +12876,7 @@ END IF; REPLACE INTO account.mailAliasAccount(mailAlias, account) VALUES (48,intId_Cliente); -END; -- samba +END; RETURN RETORNO; END ;; @@ -13383,14 +12978,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `Averiguar_ComercialCliente`(v_customer INT, v_date DATE) RETURNS varchar(3) CHARSET utf8 DETERMINISTIC BEGIN -/** - * Dado un id cliente y una fecha, devuelve su comercial. - * Para más información ir a Averiguar_ComercialCliente_Id() - * - * @param v_customer El id del cliente - * @param v_date Fecha a comprobar - * @return El código del comercial para la fecha dada - **/ + DECLARE v_employee CHAR(3); DECLARE v_salesperson INT; @@ -13421,20 +13009,12 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `Averiguar_ComercialCliente_Id`(v_customer INT, v_date DATE) RETURNS int(11) DETERMINISTIC BEGIN -/** - * Dado un id cliente y una fecha, devuelve su comercial para ese dia, teniendo - * en cuenta la jerarquía de las tablas: 1º la de sharingclient, 2º la de - * sharingcart y tercero la de clientes. - * - * @param v_customer El id del cliente - * @param v_date Fecha a comprobar - * @return El id del comercial para la fecha dada - **/ + DECLARE v_salesperson INT DEFAULT NULL; DECLARE v_substitute INT DEFAULT NULL; DECLARE v_loop BOOLEAN; - -- Obtiene el comercial original y el de sharingclient + SELECT c.Id_Trabajador, s.Id_Trabajador INTO v_salesperson, v_substitute @@ -13446,7 +13026,7 @@ BEGIN ORDER BY s.id LIMIT 1; - -- Si no hay ninguno en sharingclient busca en sharingcart + IF v_substitute IS NOT NULL THEN @@ -13507,14 +13087,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `Averiguar_ComercialCliente_IdTicket`(v_ticket INT) RETURNS varchar(3) CHARSET utf8 DETERMINISTIC BEGIN -/** - * Dado un id ticket, devuelve su comercial. - * Para más información ir a Averiguar_ComercialCliente_Id() - * - * @param v_customer El id del cliente - * @param v_date Fecha a comprobar - * @return El código del comercial para la fecha dada - **/ + DECLARE v_customer INT; DECLARE v_date DATE; @@ -13542,14 +13115,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `Averiguar_ComercialCliente_IdTicket_Id`(v_ticket INT) RETURNS int(11) DETERMINISTIC BEGIN -/** - * Dado un id ticket, devuelve su comercial. - * Para más información ir a Averiguar_ComercialCliente_Id() - * - * @param v_customer El id del cliente - * @param v_date Fecha a comprobar - * @return El id del comercial para la fecha dada - **/ + DECLARE v_customer INT; DECLARE v_date DATE; @@ -13577,7 +13143,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `Averiguar_Comprador`(idARTICLE INT) RETURNS varchar(3) CHARSET utf8 BEGIN --- Devuelve la abreviatura del comprador del articulo + DECLARE buyer VARCHAR(3); @@ -13651,18 +13217,18 @@ BEGIN SELECT Id_Cliente INTO vCustomer FROM Consignatarios WHERE Id_Consigna = vConsigna; - -- Recobro + SELECT ROUND(LEAST(recobro,0.25), 3) INTO vRecovery FROM bi.claims_ratio WHERE Id_Cliente = vCustomer AND recobro > 0.009; - -- Componente de maná automático, en función del maná acumulado por el comercial. + SELECT ROUND(prices_modifier_rate, 3) INTO vMana FROM Clientes c JOIN bs.mana_spellers ms ON c.Id_Trabajador = ms.Id_Trabajador WHERE ms.prices_modifier_activated AND c.Id_Cliente = vCustomer; - -- Reparto + SELECT COEFICIENTE_DE_INFLACION_GENERAL * ROUND( vM3 @@ -13675,8 +13241,8 @@ BEGIN JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = vWarehouse AND ap.province_id = c.province_id JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = vAgencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = vWarehouse; - -- Modificacion de precio por dia de preparacion del pedido - -- No aplicada + + SET vCost = ((vRetailedPrice - vPort) / ( 1 + (vRecovery + vMana))) - vMargin; @@ -13743,12 +13309,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `buyingAbsoluteCost`(vCompra BIGINT) RETURNS int(11) BEGIN -/** - * Devuelve el coste completo de una compra - * - * @param vCompra Id_Compra a calcular - * @return Suma de los 4 componentes del coste - */ + DECLARE vCost DOUBLE; @@ -13967,8 +13528,7 @@ BEGIN END IF; IF idART > 6000000 THEN - /*SELECT Id_Article INTO idchecked - FROM Compres WHERE Id_Compra = idART;*/ + SET idchecked = CAST(idART AS SIGNED); ELSE SET idchecked = CAST(idART AS SIGNED); @@ -14150,15 +13710,7 @@ CREATE DEFINER=`root`@`%` FUNCTION `getBouquetId`( vColour VARCHAR(5) ) RETURNS int(11) BEGIN -/** - * De vuelve el ID del ramo. Si no existe uno parecido, lo crea. - * - * @param vName Nombre del artículo - * @param vType Tipo de flor/planta - * @param vSize Tamaño del ramo - * @param vColour Color del ramo - * @return ID del ramo - */ + DECLARE bouquetId INT(11); CALL vn2008.createBouquet(vName, vType, vSize, vColour, @vItem); @@ -14329,7 +13881,7 @@ DECLARE n DOUBLE; select ROUND(intUNIDADES / (sum(MEDIA) / count(media)),2) into n from ( select *, unidades / neto MEDIA FROM intrastat_data WHERE intrastat_id = intINSTRASTAT and neto and unidades > 0 ORDER BY odbc_date DESC limit 50) t; --- JGF 01/06 per a evitar Kg en negatiu + RETURN n/2; END ;; @@ -14590,51 +14142,7 @@ BEGIN RETURN dblprice; -/* - DECLARE intId_Agencia INT; - DECLARE int_agency_id SMALLINT; - DECLARE int_province_id SMALLINT; - DECLARE bolCOD71 TINYINT(1); - DECLARE intPorte DOUBLE DEFAULT -1; - DECLARE dayofweek TINYINT(1) default 0; - DECLARE suplemento DOUBLE DEFAULT 9.41; - DECLARE strCodPostal VARCHAR(5); - DECLARE intWarehouse_id SMALLINT; - DECLARE dbldescuento DOUBLE DEFAULT 0; - DECLARE intVista TINYINT(1); - DECLARE dblvolumen DOUBLE; - SET @porte := 0; - SELECT a.agency_id, t.Id_Agencia, cod71, Porte,c.CODPOSTAL,t.warehouse_id,c.province_id,cli.Descuento,IFNULL(ag.Vista,a.Vista), por_volumen - INTO int_agency_id,intId_Agencia, bolCOD71,intPorte,strCodPostal,intWarehouse_id,int_province_id,dbldescuento,intVista,dblvolumen - FROM Tickets t - JOIN Consignatarios c USING(Id_Consigna) - JOIN Agencias a ON t.Id_Agencia = a.Id_Agencia - JOIN agency agn ON agn.agency_id = a.agency_id - JOIN Clientes cli on c.Id_Cliente=cli.Id_Cliente - LEFT JOIN agency_warehouse ag ON ag.agency_id = a.agency_id - WHERE Id_Ticket = intId_Ticket limit 1; - - - - - IF bolCOD71 THEN - - IF intId_Agencia = 47 THEN -- Si es viaxpress - SELECT price INTO dblprice FROM Agencias_zonas az INNER JOIN viaxpress USING(zona) - WHERE Id_Agencia = 47 AND codigo_postal = strCodPostal AND az.warehouse_id = intWarehouse_id; - ELSE - SELECT price INTO dblprice FROM Agencias_zonas az - WHERE Id_Agencia = intId_Agencia AND 71 = Id_Article AND az.warehouse_id = intWarehouse_id - AND zona = (SELECT zona FROM Agencias_province - WHERE warehouse_id = intWarehouse_id AND agency_id = int_agency_id and province_id = int_province_id); - END IF; - - ELSE - SELECT 0 INTO dblprice; - END IF; - - */ END ;; @@ -14681,11 +14189,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `risk`(datMax DATE, intCustomer INT) RETURNS decimal(10,2) BEGIN -/** - * Deprecated - * - * Utilizar vn.clientGetDebt - **/ + DECLARE decRisk DECIMAL(10,2) DEFAULT 0; @@ -14712,31 +14216,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `semana`(datFec DATETIME) RETURNS int(11) DETERMINISTIC BEGIN - /* DECLARE intWeek TINYINT DEFAULT WEEK(datFec, 1); - DECLARE intYear SMALLINT DEFAULT YEAR(datFec); - - --- La funcio week dona un error en els primers dies del any --- Por convención, consideraremos que el año tiene siempre 52 semanas, y la 53 se incorpora a la 1 del año siguiente. --- Mysql week function smells, so ... - - IF intWeek > 52 THEN - - SET intWeek = 1; - - IF MONTH(datFec) = 12 THEN - - SET intYear = intYear + 1; - - SET intWeek = 1; - - - END IF; - - END IF; - - RETURN intYear * 100 + intWeek; -*/ + RETURN vnperiod(datFec); @@ -14760,11 +14240,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `shipmentDay`(landingDay INT, intervalDays INT) RETURNS int(11) BEGIN -/* PAK 01/09/16 -* -* Devuelve el weekday resultante de restar al landingDay los dias de intervalDays -* -*/ + DECLARE resultDay INT; @@ -15044,11 +14520,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `ticket_volumen_encajado`(idT INT) RETURNS decimal(10,1) BEGIN -/* Devuelve el volumen estimado de un pedido, en cajas -* -* idT Numero de ticket -* -*/ + DECLARE vVolumenCajaM3 DOUBLE; @@ -15081,23 +14553,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `ticket_volumen_en_cajas`(idT INT) RETURNS decimal(10,1) BEGIN -/* Devuelve el volumen estimado de un pedido, en cajas -* -* idT Numero de ticket -* -* - - DECLARE vVolumenCajaM3 DOUBLE; - DECLARE vTicketVolumenEnCajas DECIMAL(10,1); - DECLARE CAJA VARCHAR(10) DEFAULT '94'; - - SELECT Volumen/1000000 INTO vVolumenCajaM3 FROM Cubos WHERE Id_Cubo = CAJA; - - SET vTicketVolumenEnCajas = ticket_volumen(idT) / vVolumenCajaM3; - - RETURN vTicketVolumenEnCajas; -*/ RETURN 1; END ;; DELIMITER ; @@ -15132,7 +14588,7 @@ BEGIN DECLARE v_subaccount VARCHAR(12); DECLARE v_asiento INT DEFAULT NULL; - -- Inserta el registro en cajas + INSERT INTO Cajas SET @@ -15146,7 +14602,7 @@ BEGIN ,Numero = v_number ,empresa_id = v_company; - -- Inserta los asientos contables + SELECT Cuenta INTO v_account FROM Bancos WHERE Id_Banco = v_bank; @@ -15164,11 +14620,11 @@ BEGIN ,v_amount ,0 ,0 - ,NULL -- Serie - ,NULL -- Factura - ,NULL -- IVA - ,NULL -- Recargo - ,FALSE -- Auxiliar + ,NULL + ,NULL + ,NULL + ,NULL + ,FALSE ,v_company ); DO asiento @@ -15181,11 +14637,11 @@ BEGIN ,0 ,v_amount ,0 - ,NULL -- Serie - ,NULL -- Factura - ,NULL -- IVA - ,NULL -- Recargo - ,FALSE -- Auxiliar + ,NULL + ,NULL + ,NULL + ,NULL + ,FALSE ,v_company ); @@ -15229,7 +14685,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `ubicator_cabecaja`(x SMALLINT,y SMALLINT,z SMALLINT,w SMALLINT,d SMALLINT,h SMALLINT) RETURNS tinyint(1) BEGIN -IF ((y>d) OR (x>w) OR (z>h)) THEN -- si no cabe alguna de las medidas en la balda. +IF ((y>d) OR (x>w) OR (z>h)) THEN RETURN FALSE; END IF; RETURN TRUE; @@ -15457,7 +14913,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `abono`(IN idT MEDIUMINT, IN idUSER SMALLINT) BEGIN --- OBSOLETO USAR vn.refund() + DECLARE idC MEDIUMINT; DECLARE newFEC DATE; DECLARE idWH TINYINT; @@ -15547,9 +15003,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `accumulatorsReadingDateUpdate`() BEGIN -/* Actualiza los valores de la tabla en función de la cotización del EUR/USD -* -*/ + UPDATE accumulatorsReadingDate a JOIN @@ -15598,7 +15052,7 @@ BEGIN WHEN '1000Tj-20' THEN ((CAST(stems AS SIGNED) - 20000)/1000) + (min_value / value) WHEN '1000Tj-10' THEN ((CAST(stems AS SIGNED) - 10000)/1000) + (min_value / value) WHEN '100GW' THEN peso/100 - WHEN 'AWB' THEN 1 -- No action + WHEN 'AWB' THEN 1 WHEN 'FB' THEN hb/2 WHEN 'GW' THEN peso WHEN 'TW' THEN GREATEST(peso,volume_weight) @@ -15788,7 +15242,7 @@ BEGIN LEFT JOIN v_descuadre_porte v ON v.Id_Ticket = t.Id_Ticket WHERE t.Id_Cliente <> 4712 AND t.Id_Cliente <> 450 - GROUP BY zd.date,Id_Consigna,warehouse_id,zd.Id_Agencia -- HAVING Difer > 0.5 OR Difer < -0.5 jgf 2015-08-18 + GROUP BY zd.date,Id_Consigna,warehouse_id,zd.Id_Agencia ORDER BY v.diferencia; END IF; END ;; @@ -15823,11 +15277,11 @@ BEGIN ,Agencia VARCHAR(30) ,Bultos INT DEFAULT 0 ,Faltan INT DEFAULT 0 - /*,Prioridad VARCHAR(15) DEFAULT ''*/ + ) ENGINE=MEMORY; - -- Insertamos los tickets que ya tienen la linea de portes + INSERT INTO agenVOL(Id_Agencia, Agencia, Id_Ticket, Bultos) SELECT a.Id_Agencia, name , Id_Ticket, sum(Cantidad) Bultos @@ -15837,12 +15291,12 @@ BEGIN JOIN agency ag USING(agency_id) JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id WHERE Concepte LIKE '%porte%' - AND wj.warehouse_alias_id = 1 -- El 1 equivale a Silla (SillaFV-SillaPCA) + AND wj.warehouse_alias_id = 1 AND Fecha BETWEEN v_start AND v_end AND Vista = 1 GROUP BY Id_Ticket; - -- Insertamos los tickets que ya tienen expediciones, que fallaran si se repite la clave primaria. + INSERT INTO agenVOL(Id_Agencia, Agencia, Id_Ticket, Bultos) SELECT a.Id_Agencia, name, ticket_id, COUNT(ticket_id) @@ -15852,12 +15306,12 @@ BEGIN JOIN agency ag ON ag.agency_id = a.agency_id JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id WHERE t.Fecha BETWEEN v_start AND v_end - AND wj.warehouse_alias_id = 1 -- El 1 equivale a Silla (SillaFV-SillaPCA) + AND wj.warehouse_alias_id = 1 AND Vista = 1 GROUP BY ticket_id ON DUPLICATE KEY UPDATE Bultos = Bultos; - -- Adivinamos el futuro + INSERT INTO agenVOL(Id_Agencia, Agencia, Id_Ticket, Faltan) SELECT a.Id_Agencia, name, Id_Ticket, 1 as Faltan FROM Tickets t @@ -15867,29 +15321,20 @@ BEGIN JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id WHERE Fecha BETWEEN v_start AND v_end AND Bultos = 0 AND expeditions_id IS NULL AND EtiquetasEmitidas = 0 - AND wj.warehouse_alias_id = 1 -- JGF 18/12/14 El 1 equivale a Silla (SillaFV-SillaPCA) + AND wj.warehouse_alias_id = 1 AND Vista = 1 GROUP BY Id_Ticket ON DUPLICATE KEY UPDATE Faltan = Faltan + 1; - -- Matizamos la urgencia para ZELERIS - /* - UPDATE agenVOL a - JOIN Tickets t USING(Id_Ticket) - JOIN Clientes c USING(Id_Cliente) - JOIN Agencias agen ON agen.Id_Agencia = t.Id_Agencia - JOIN agency ag ON ag.agency_id = agen.agency_id - JOIN Agencias_province ap ON ag.agency_id = ap.province_id - JOIN province p ON p.province_id = ap.province_id - SET a.Prioridad = IF(p.name IN ('VALENCIA','MURCIA','MADRID','BARCELONA','GIRONA','ALICANTE','CASTELLON'), 'LENTA','RAPIDA') - WHERE ag.name LIKE 'zeleris';*/ + + - SELECT agen.agency_id, name Agencia, COUNT(Id_Ticket) expediciones, SUM(Bultos) Bultos, SUM(Faltan) Faltan/*, Prioridad*/ + SELECT agen.agency_id, name Agencia, COUNT(Id_Ticket) expediciones, SUM(Bultos) Bultos, SUM(Faltan) Faltan FROM agenVOL a JOIN Agencias agen USING(Id_Agencia) JOIN agency ag USING(agency_id) - GROUP BY ag.agency_id/*, Prioridad*/ ; + GROUP BY ag.agency_id ; DROP TEMPORARY TABLE IF EXISTS agenVOL; END ;; @@ -16007,9 +15452,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `articleTagUpdatePriority_kk`(IN vItem INT) BEGIN -/* -* DEPRECATED -*/ + CALL vn.itemTagUpdatePriority(vItem); @@ -16037,7 +15480,7 @@ BEGIN SELECT available AS minimo FROM tmp_item WHERE item_id = id_single; --- ixen totes les linies en lloc d'una sola + DROP TEMPORARY TABLE IF EXISTS tmp_item; END ;; DELIMITER ; @@ -16057,11 +15500,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `article_inventory_warehouses`(vDate DATE) proc: BEGIN -/** - * Recalcula los inventarios de todos los almacenes. - * - * @param vDate Fecha de los nuevos inventarios - */ + DECLARE vWh INT; DECLARE vDone BOOL; DECLARE vEntryId INT; @@ -16107,11 +15546,11 @@ proc: BEGIN SELECT LAST_INSERT_ID() INTO vEntryId; - -- Inserta el visible + CALL inventario_multiple_inventarios (vWh, vDateTime); - -- Inserta Last_buy_id + ALTER TABLE article_inventory ADD buy_id INT; @@ -16190,7 +15629,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `article_minacum`(IN v_wh TINYINT, IN v_date_ini DATETIME, IN v_range INT) BEGIN - -- Cálculo del mínimo acumulado + DECLARE v_date DATE DEFAULT v_date_ini; DECLARE v_date_end DATETIME; @@ -16198,7 +15637,7 @@ BEGIN SET v_date_ini = TIMESTAMP(DATE(v_date_ini), '00:00:00'); SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, v_range, v_date_ini),'23:59:59'); - -- CALL item_travel (v_wh, v_date_ini); + DROP TEMPORARY TABLE IF EXISTS article_minacum; CREATE TEMPORARY TABLE article_minacum @@ -16278,7 +15717,7 @@ BEGIN JOIN tmp t ON ai.article_id = t.Id_Article SET ai.buy_id = t.Id_Compra; - -- Los valores de hoy + TRUNCATE TABLE tmp; @@ -16336,10 +15775,8 @@ BEGIN JOIN warehouse W ON W.id = travel.warehouse_id WHERE travel.landing BETWEEN datINV AND date_ AND IF(wh = 0, W.comisionantes, wh = travel.warehouse_id) - /*AND Compres.Novincular = FALSE - AND Entradas.Id_Proveedor <> 4 - AND Entradas.Inventario = FALSE*/ - -- jgf 2017/03/06 en la comparativa no trau el dia de caducitat + + AND Entradas.Redada = FALSE ORDER BY article_id, bdate DESC @@ -16467,7 +15904,7 @@ proc: BEGIN CALL vn2008.item_stock (vWarehouseLanding, v_date, NULL); - -- Calcula algunos parámetros necesarios + SET v_date_ini = TIMESTAMP(v_date, '00:00:00'); SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, 4, v_date), '23:59:59'); @@ -16477,7 +15914,7 @@ proc: BEGIN SELECT SUBTIME(NOW(), reserve_time) INTO v_reserve_date FROM hedera.order_config; - -- Calcula el ultimo dia de vida para cada producto + DROP TEMPORARY TABLE IF EXISTS item_range; CREATE TEMPORARY TABLE item_range @@ -16494,7 +15931,7 @@ proc: BEGIN AND NOT e.Redada GROUP BY Id_Article; - -- Tabla con el ultimo dia de last_buy para cada producto que hace un replace de la anterior + CALL item_last_buy_(vWarehouseShipment,curdate()); @@ -16515,7 +15952,7 @@ proc: BEGIN DROP TEMPORARY TABLE item_range_copy; - -- Replica la tabla item_range para poder usarla varias veces en la misma consulta + DROP TEMPORARY TABLE IF EXISTS item_range_copy1; CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; @@ -16545,7 +15982,7 @@ proc: BEGIN INSERT INTO item_range_copy5 SELECT * FROM item_range_copy1; - -- Calcula el ATP + DROP TEMPORARY TABLE IF EXISTS availableTraslate; CREATE TEMPORARY TABLE availableTraslate @@ -16639,7 +16076,7 @@ proc: BEGIN CALL vn2008.item_stock (vWarehouseLanding, v_date, NULL); - -- Calcula algunos parámetros necesarios + SET v_date_ini = TIMESTAMP(v_date, '00:00:00'); SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, 4, v_date), '23:59:59'); @@ -16649,7 +16086,7 @@ proc: BEGIN SELECT SUBTIME(NOW(), reserve_time) INTO v_reserve_date FROM hedera.order_config; - -- Calcula el ultimo dia de vida para cada producto + DROP TEMPORARY TABLE IF EXISTS item_range; CREATE TEMPORARY TABLE item_range @@ -16678,7 +16115,7 @@ proc: BEGIN GROUP BY Id_Article; - -- Tabla con el ultimo dia de last_buy para cada producto que hace un replace de la anterior + CALL item_last_buy_(vWarehouseShipment,curdate()); @@ -16709,7 +16146,7 @@ proc: BEGIN DROP TEMPORARY TABLE item_range_copy; - -- Replica la tabla item_range para poder usarla varias veces en la misma consulta + DROP TEMPORARY TABLE IF EXISTS item_range_copy1; CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; @@ -16739,7 +16176,7 @@ proc: BEGIN INSERT INTO item_range_copy5 SELECT * FROM item_range_copy1; - -- Calcula el ATP + SELECT item_id, stock,'tmp_item' FROM vn2008.tmp_item; @@ -16834,7 +16271,7 @@ proc: BEGIN CALL vn2008.item_stock (vWarehouseLanding, v_date, NULL); - -- Calcula algunos parámetros necesarios + SET v_date_ini = TIMESTAMP(v_date, '00:00:00'); SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, 4, v_date), '23:59:59'); @@ -16844,7 +16281,7 @@ proc: BEGIN SELECT SUBTIME(NOW(), reserve_time) INTO v_reserve_date FROM hedera.order_config; - -- Calcula el ultimo dia de vida para cada producto + DROP TEMPORARY TABLE IF EXISTS item_range; CREATE TEMPORARY TABLE item_range @@ -16861,13 +16298,13 @@ proc: BEGIN AND NOT e.Redada GROUP BY Id_Article; - -- Tabla con el ultimo dia de last_buy para cada producto que hace un replace de la anterior + SELECT vWarehouseShipment; CALL item_last_buy_(vWarehouseShipment,v_date); - SELECT *,'last_buy' FROM t_item_last_buy t ; -- WHERE t.item_id = 41576; + SELECT *,'last_buy' FROM t_item_last_buy t ; SELECT * FROM item_range t WHERE t.item_id = 41576; DROP TEMPORARY TABLE IF EXISTS item_range_copy; @@ -16895,7 +16332,7 @@ proc: BEGIN DROP TEMPORARY TABLE item_range_copy; - -- Replica la tabla item_range para poder usarla varias veces en la misma consulta + DROP TEMPORARY TABLE IF EXISTS item_range_copy1; CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; @@ -16927,7 +16364,7 @@ proc: BEGIN INSERT INTO item_range_copy5 SELECT * FROM item_range_copy1; - -- Calcula el ATP + SELECT ti.item_id, stock FROM vn2008.tmp_item ti JOIN item_range ir ON ir.item_id = ti.item_id ; @@ -17064,7 +16501,7 @@ DECLARE vStartingDate DATE DEFAULT '2015-01-01'; DECLARE vStartingYear INT DEFAULT 2015; --- Solicitamos la tabla tmp.nest, como base para el balance + CALL nest_tree(strTABLE,intGAP, FALSE); DROP TEMPORARY TABLE IF EXISTS tmp.balance; @@ -17099,7 +16536,7 @@ IF NOT vInterGroupSalesIncluded THEN END IF; --- Se calculan las facturas que intervienen, para luego poder servir el desglose desde aqui + DROP TEMPORARY TABLE IF EXISTS tmp.balance_desglose; CREATE TEMPORARY TABLE tmp.balance_desglose SELECT er.empresa_id as receptora_id @@ -17144,7 +16581,7 @@ DELETE FROM tmp.balance_desglose --- Ahora el balance + SET v_sql = sql_printf ( ' ALTER TABLE tmp.balance @@ -17162,7 +16599,7 @@ SET v_sql = sql_printf ( CALL sql_query (v_sql); --- Añadimos los gastos, para facilitar el formulario + UPDATE tmp.balance b JOIN vn2008.balance_nest_tree bnt on bnt.id = b.id @@ -17172,7 +16609,7 @@ JOIN (SELECT Id_Gasto, Gasto SET b.Id_Gasto = g.Id_Gasto , b.Gasto = g.Gasto; --- Rellenamos los valores de primer nivel, los que corresponden a los gastos simples + WHILE intYEARS > 0 DO @@ -17198,7 +16635,7 @@ WHILE intYEARS > 0 DO END WHILE; --- Añadimos las ventas + SET v_sql = sql_printf ( @@ -17235,7 +16672,7 @@ END WHILE; CALL sql_query (v_sql); --- Ventas intra grupo + IF NOT vInterGroupSalesIncluded THEN SELECT lft, rgt @@ -17250,7 +16687,7 @@ IF NOT vInterGroupSalesIncluded THEN END IF; --- Rellenamos el valor de los padres con la suma de los hijos + DROP TEMPORARY TABLE IF EXISTS tmp.balance_aux; CREATE TEMPORARY TABLE tmp.balance_aux SELECT * FROM tmp.balance; @@ -17315,12 +16752,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_`( v_consigna INT, v_agencia INT) BEGIN -/** - * Calcula el disponible para un conjunto de almacenes y fechas - * devueltos por el procedimiento travel_tree() - * - * @table t_bionic_available Tabla con los ids de cache - **/ + DECLARE v_available_calc INT; DECLARE v_shipment DATE; @@ -17332,7 +16764,7 @@ BEGIN DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - -- Establecemos los almacenes y las fechas que van a entrar al disponible + SELECT agency_id INTO v_agency_id FROM Agencias WHERE Id_Agencia = v_agencia; @@ -17398,7 +16830,7 @@ ENGINE = INNODB; --- Arreglos + SET minMED = IFNULL(minMED,0); SET minMED = IF(minMED = 0,0.01, minMED); @@ -17409,7 +16841,7 @@ SET minPVP = IF(minPVP = 0, 0.01, minPVP); SET maxPVP = IFNULL(maxPVP,9990); SET maxPVP = IF(maxPVP = 0, 9990, maxPVP); --- ARTICLE + SET strART = TRIM(strART); @@ -17485,7 +16917,7 @@ ELSE CALL sql_query (v_sql); END IF; --- SELECT Id_Article, Article, Medida FROM Articles join articlelist using(Id_Article); + END ;; DELIMITER ; @@ -17503,15 +16935,11 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = '' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_items_`(v_date DATE, -- fecha de recepcion de mercancia +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_items_`(v_date DATE, v_consigna INT, v_agencia INT) BEGIN -/** - * Crea una tabla con los identificadores de los articulos disponibles. - * - * @table t_bionic_available_items - **/ + CALL bionic_available_ (v_date, v_consigna, v_agencia); DROP TEMPORARY TABLE IF EXISTS t_bionic_available_items; @@ -17565,16 +16993,11 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_types_`( - v_date DATE, -- fecha de recepcion de mercancia + v_date DATE, v_consigna INT, v_agencia INT) BEGIN -/** - * Calcula los tipos disponibles para un conjunto de almacenes - * y fechas devueltos por el procedimiento travel_tree() - * - * @table t_bionic_available_types Tabla con los tipos disponibles - **/ + CALL bionic_available_(v_date, v_consigna, v_agencia); @@ -17587,7 +17010,7 @@ BEGIN JOIN Articles a ON c.item_id = a.Id_Article JOIN Tipos t ON t.tipo_id = a.tipo_id JOIN t_bionic_available ba ON c.calc_id = ba.calc_id - WHERE c.available > 0 -- JGF 2016-03-23 en el bionic no apareixen negatius, els tipos que no continguen disponible, tampoc els volem mostrar + WHERE c.available > 0 AND t.Orden != 0 GROUP BY t.tipo_id; @@ -17608,15 +17031,15 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_types_filter`(IN v_date DATE, -- fecha de recepcion de mercancia +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_types_filter`(IN v_date DATE, IN v_consigna INT, IN v_agencia INT, IN v_filter TEXT) BEGIN - -- @return Table t_bionic_available_types - -- Este procedimiento devuelve una tabla t_bionic_available_types - -- que debe de ser borrar por quien la llame, y se conecta con la tabla articlelist - -- que tambien hay que eliminar + + + + DECLARE v_sql TEXT; DECLARE v_list TEXT; @@ -17625,7 +17048,7 @@ BEGIN SET v_filter = IFNULL(v_filter,' TRUE'); CALL bionic_available_(v_date, v_consigna, v_agencia); - -- Inroducimos los valores en una tabla temporal + DROP TEMPORARY TABLE IF EXISTS t_bionic_available_types; CALL check_table_existence('articlelist'); @@ -17678,7 +17101,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc`( - v_date DATE, -- fecha de recepcion de mercancia + v_date DATE, v_consigna INT, v_agencia INT) proc: BEGIN @@ -17698,21 +17121,21 @@ proc: BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; - -- Establecemos los almacenes y las fechas que van a entrar al dispo_multi + SELECT agency_id INTO v_agency_id FROM vn2008.Agencias WHERE Id_Agencia = v_agencia; SELECT Id_Cliente INTO v_customer FROM vn2008.Consignatarios WHERE Id_Consigna = v_consigna; CALL vn2008.travel_tree(v_date,v_consigna, v_agency_id); - -- creamos la tabla temporal que almacenara los lotes (antigua cache.bionic) + CREATE TEMPORARY TABLE tmp.bionic_lot LIKE template_bionic_lot; OPEN cur; l: LOOP - -- Comprovamos que quedan registros en el cursor + SET done = FALSE; FETCH cur INTO v_wh, v_shipment; IF done THEN @@ -17778,9 +17201,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_clon`(IN v_ticket BIGINT) BEGIN -/* -Este procedimiento "rebioniza" una linea, eliminando los componentes existentes e insertandolos de nuevo -*/ + DECLARE v_shipment DATE; DECLARE v_customer INT; DECLARE v_wh SMALLINT; @@ -17801,7 +17222,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes CREATE TEMPORARY TABLE travel_tree ENGINE = MEMORY SELECT v_wh warehouse_id, v_shipment Fecha_envio, v_landing Fecha_recepcion; - CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra + CALL item_last_buy_ (v_wh, v_shipment); DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; CREATE TEMPORARY TABLE tmp.bionic_lot @@ -17813,7 +17234,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes CALL bionic_calc_component(v_consigna,v_agencia); - -- Bionizamos lineas con Preu = 0 + DROP TEMPORARY TABLE IF EXISTS tmp.movement; CREATE TEMPORARY TABLE tmp.movement (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY @@ -17821,7 +17242,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes JOIN Tickets t on t.Id_Ticket = m.Id_Ticket WHERE m.Id_Ticket = v_ticket AND Preu = 0; CALL bionic_movement_update(1); - -- Bionizamos lineas con Preu > 0 + DROP TEMPORARY TABLE IF EXISTS tmp.movement; CREATE TEMPORARY TABLE tmp.movement (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY @@ -17837,7 +17258,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes WHERE Id_Ticket = v_ticket; END IF; - -- Log + call Ditacio(v_ticket ,'Bioniza Ticket' ,'T' @@ -17845,7 +17266,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes , 'proc bionic_calc_clon' , NULL); - -- Limpieza + DROP TEMPORARY TABLE t_item_last_buy; END ;; DELIMITER ; @@ -17866,9 +17287,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_clonkk`(IN v_ticket BIGINT) BEGIN -/* -Este procedimiento "rebioniza" una linea, eliminando los componentes existentes e insertandolos de nuevo -*/ + DECLARE v_shipment DATE; DECLARE v_customer INT; DECLARE v_wh SMALLINT; @@ -17888,7 +17307,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes CREATE TEMPORARY TABLE travel_tree ENGINE = MEMORY SELECT v_wh warehouse_id, v_shipment Fecha_envio, v_landing Fecha_recepcion; - CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra + CALL item_last_buy_ (v_wh, v_shipment); DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; CREATE TEMPORARY TABLE tmp.bionic_lot @@ -17900,7 +17319,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes CALL bionic_calc_component(v_consigna,v_agencia); - -- Bionizamos lineas con Preu = 0 + DROP TEMPORARY TABLE IF EXISTS tmp.movement; CREATE TEMPORARY TABLE tmp.movement (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY @@ -17908,7 +17327,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes JOIN Tickets t on t.Id_Ticket = m.Id_Ticket WHERE m.Id_Ticket = v_ticket AND Preu = 0; CALL bionic_movement_update(1); - -- Bionizamos lineas con Preu > 0 + DROP TEMPORARY TABLE IF EXISTS tmp.movement; CREATE TEMPORARY TABLE tmp.movement (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY @@ -17917,7 +17336,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes CALL bionic_movement_update(6); - -- Log + call Ditacio(v_ticket ,'Bioniza Ticket' ,'T' @@ -17925,7 +17344,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes , 'proc bionic_calc_clon' , NULL); - -- Limpieza + DROP TEMPORARY TABLE t_item_last_buy; END ;; DELIMITER ; @@ -17944,7 +17363,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_component`( - -- v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, v_agencia INT) proc: BEGIN @@ -17953,7 +17372,7 @@ proc: BEGIN DECLARE COEFICIENTE_DE_INFLACION_GENERAL INT DEFAULT 1.3; DECLARE DENSIDAD_MINIMA_PESO_VOLUMETRICO INT DEFAULT 167; DECLARE VOLUMEN_CAJA_VERDNATURA BIGINT DEFAULT 138000; - -- DECLARE vValorEmbolsado DOUBLE DEFAULT 0.04; + SELECT Id_Cliente INTO v_customer FROM Consignatarios WHERE Id_Consigna = v_consigna; SET @rate2 := 0; @@ -17987,15 +17406,15 @@ proc: BEGIN ) t GROUP BY item_id, warehouse_id ) pf ON pf.item_id = b.item_id AND pf.warehouse_id = b.warehouse_id - -- descartamos articulos con coste menor de 0.01 + WHERE Costefijo + Portefijo + Embalajefijo + Comisionfija > 0.01 AND r.display <> 0; - -- Creamos la tabla tmp.bionic_component + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component; CREATE TEMPORARY TABLE tmp.bionic_component LIKE template_bionic_component; - -- Componentes del precio, valores absolutos + INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) SELECT b.warehouse_id, b.item_id, 29, rate_3 - Costefijo - Portefijo - Embalajefijo - Comisionfija FROM t_bionic_temp b @@ -18006,7 +17425,7 @@ proc: BEGIN FROM t_bionic_temp b JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; - -- Ahora los valores en funcion de la base + DROP TEMPORARY TABLE IF EXISTS t_components_base; @@ -18015,7 +17434,7 @@ proc: BEGIN FROM tmp.bionic_component bc GROUP BY bc.item_id,warehouse_id; - -- La ratio se calcula teniendo en cuenta el valor de las reclamaciones y el saldo de greuge + INSERT INTO tmp.bionic_component SELECT cb.warehouse_id, item_id, 17, ROUND(base * LEAST(recobro,0.25), 3) @@ -18023,7 +17442,7 @@ proc: BEGIN JOIN bi.claims_ratio ON Id_Cliente = v_customer WHERE recobro > 0.009; - -- PAK 2016-08-31 Componente de maná automático, en función del maná acumulado por el comercial. + INSERT INTO tmp.bionic_component SELECT cb.warehouse_id, item_id, 39, ROUND(base * prices_modifier_rate, 3) as manaAuto @@ -18034,18 +17453,11 @@ proc: BEGIN HAVING manaAuto <> 0 ; -/* - -- Vendedor variable - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, Id_Componente, IFNULL(ROUND(base * tax,4), 0) - FROM t_components_base cb - JOIN bi.tarifa_componentes - WHERE tarifa_componentes_series_id = 2 and IFNULL(tax, 0) > 0; - */ + --- ******* Inicio Bloque para componentes con tarifa_class diferente de NULL - -- Descuento por ultimas unidades + + INSERT INTO tmp.bionic_component SELECT cb.warehouse_id, b.item_id, Id_Componente, GREATEST(IFNULL(ROUND(base * tax,4), 0), b.min_price - b.rate_3) FROM t_components_base cb @@ -18054,7 +17466,7 @@ proc: BEGIN LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id WHERE Id_Componente = 32 AND tax <> 0 AND b.min_price < b.rate_3 AND PrecioEspecial IS NULL; - -- Incremento por paquete suelto + INSERT INTO tmp.bionic_component SELECT b.warehouse_id, b.item_id, 22, rate_2 - rate_3 FROM t_bionic_temp b @@ -18062,9 +17474,9 @@ proc: BEGIN LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id WHERE PrecioEspecial IS NULL; --- ******* Fin Bloque para componentes con tarifa_class diferente de NULL - -- Reparto + + INSERT INTO tmp.bionic_component SELECT b.warehouse_id , b.item_id @@ -18086,7 +17498,7 @@ proc: BEGIN LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id HAVING cost <> 0; --- Reparto bonificado + INSERT INTO tmp.bionic_component SELECT b.warehouse_id , b.item_id @@ -18110,11 +17522,11 @@ proc: BEGIN JOIN vn2008.travel_tree t ON t.warehouse_id = awb.warehouse_id AND weekday(t.Fecha_recepcion) = awb.weekDay HAVING cost <> 0; --- PAK 12-05-2015 - -- EMBOLSADO + + IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = v_consigna) THEN - -- IF v_consigna IN (13690, 3402, 5661, 4233) THEN + INSERT INTO tmp.bionic_component SELECT b.warehouse_id, b.item_id, 38, ap.packagingValue cost @@ -18124,8 +17536,8 @@ proc: BEGIN END IF; - -- JGF 14-08-2015 - -- Modificacion de precio por dia de preparacion del pedido + + INSERT INTO tmp.bionic_component SELECT cb.warehouse_id, cb.item_id, 14, cb.base * (IFNULL(pe.percentage,pp.percentage)/100) FROM t_components_base cb @@ -18134,13 +17546,13 @@ proc: BEGIN LEFT JOIN vn2008.preparation_exception pe ON pe.exception_day = tt.Fecha_envio AND cb.warehouse_id = IFNULL(pe.warehouse_id,cb.warehouse_id) WHERE IFNULL(pe.percentage,pp.percentage); - -- Creamos la tabla tmp.bionic_component_copy por que mysql no puede reabrir una tabla temporal + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component_copy; CREATE TEMPORARY TABLE tmp.bionic_component_copy SELECT * FROM tmp.bionic_component; - -- JGF 19-01-2016 - -- Precios especiales + + INSERT INTO tmp.bionic_component SELECT b.warehouse_id, b.item_id, 10, pe.PrecioEspecial - SUM(cost) sum_cost FROM tmp.bionic_component_copy b @@ -18150,7 +17562,7 @@ proc: BEGIN GROUP BY b.item_id, b.warehouse_id HAVING ABS(sum_cost) > 0.001; - -- Lotes + DROP TEMPORARY TABLE IF EXISTS t_component_sum; CREATE TEMPORARY TABLE t_component_sum (INDEX (item_id, warehouse_id)) @@ -18160,8 +17572,8 @@ proc: BEGIN JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente GROUP BY b.item_id, b.warehouse_id, t.tarifa_class; - -- ***** Inicia Modifica t_bionic_rate las diferentes tarifas - -- Tarifa por unidad minima + + DROP TEMPORARY TABLE IF EXISTS t_bionic_rate; CREATE TEMPORARY TABLE t_bionic_rate ENGINE = MEMORY @@ -18172,7 +17584,7 @@ proc: BEGIN WHERE IFNULL(cs.tarifa_class,1) = 1 AND box < 2 AND (packing > grouping or box = 0) GROUP BY warehouse_id, item_id; - -- Tarifa por caja + INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, grouping, price) SELECT b.warehouse_id, item_id, 2 rate, packing grouping, SUM(sum_cost) price @@ -18181,7 +17593,7 @@ proc: BEGIN WHERE available IS NULL OR (IFNULL(cs.tarifa_class,2) = 2 AND packing > 0 AND available >= packing) GROUP BY warehouse_id, item_id; - -- Tarifa para toda la cantidad disponible + INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, grouping, price) SELECT b.warehouse_id, item_id, 3 rate, available grouping, SUM(sum_cost) price @@ -18190,7 +17602,7 @@ proc: BEGIN WHERE IFNULL(cs.tarifa_class,3) = 3 GROUP BY warehouse_id, item_id; - -- ***** Fin Modifica t_bionic_rate las diferentes tarifas + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; CREATE TEMPORARY TABLE tmp.bionic_price @@ -18208,7 +17620,7 @@ proc: BEGIN ENGINE = MEMORY SELECT * FROM travel_tree; - -- Limpieza + DROP TEMPORARY TABLE travel_tree; DROP TEMPORARY TABLE t_bionic_temp; @@ -18233,7 +17645,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_component_beta`( - -- v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, v_agencia INT) proc: BEGIN @@ -18242,7 +17654,7 @@ proc: BEGIN DECLARE COEFICIENTE_DE_INFLACION_GENERAL INT DEFAULT 1.3; DECLARE DENSIDAD_MINIMA_PESO_VOLUMETRICO INT DEFAULT 167; DECLARE VOLUMEN_CAJA_VERDNATURA BIGINT DEFAULT 138000; - -- DECLARE vValorEmbolsado DOUBLE DEFAULT 0.04; + SELECT Id_Cliente INTO v_customer FROM Consignatarios WHERE Id_Consigna = v_consigna; SET @rate2 := 0; @@ -18276,15 +17688,15 @@ proc: BEGIN ) t GROUP BY item_id, warehouse_id ) pf ON pf.item_id = b.item_id AND pf.warehouse_id = b.warehouse_id - -- descartamos articulos con coste menor de 0.01 + WHERE Costefijo + Portefijo + Embalajefijo + Comisionfija > 0.01 AND r.display <> 0; - -- Creamos la tabla tmp.bionic_component + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component; CREATE TEMPORARY TABLE tmp.bionic_component LIKE template_bionic_component; - -- Componentes del precio, valores absolutos + INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) SELECT b.warehouse_id, b.item_id, 29, rate_3 - Costefijo - Portefijo - Embalajefijo - Comisionfija FROM t_bionic_temp b @@ -18295,7 +17707,7 @@ proc: BEGIN FROM t_bionic_temp b JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; - -- Ahora los valores en funcion de la base + DROP TEMPORARY TABLE IF EXISTS t_components_base; @@ -18304,7 +17716,7 @@ proc: BEGIN FROM tmp.bionic_component bc GROUP BY bc.item_id,warehouse_id; - -- La ratio se calcula teniendo en cuenta el valor de las reclamaciones y el saldo de greuge + INSERT INTO tmp.bionic_component SELECT cb.warehouse_id, item_id, 17, ROUND(base * LEAST(recobro,0.25), 3) @@ -18312,7 +17724,7 @@ proc: BEGIN JOIN bi.claims_ratio ON Id_Cliente = v_customer WHERE recobro > 0.009; - -- PAK 2016-08-31 Componente de maná automático, en función del maná acumulado por el comercial. + INSERT INTO tmp.bionic_component SELECT cb.warehouse_id, item_id, 39, ROUND(base * prices_modifier_rate, 3) as manaAuto @@ -18323,18 +17735,11 @@ proc: BEGIN HAVING manaAuto <> 0 ; -/* - -- Vendedor variable - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, Id_Componente, IFNULL(ROUND(base * tax,4), 0) - FROM t_components_base cb - JOIN bi.tarifa_componentes - WHERE tarifa_componentes_series_id = 2 and IFNULL(tax, 0) > 0; - */ + --- ******* Inicio Bloque para componentes con tarifa_class diferente de NULL - -- Descuento por ultimas unidades + + INSERT INTO tmp.bionic_component SELECT cb.warehouse_id, b.item_id, Id_Componente, GREATEST(IFNULL(ROUND(base * tax,4), 0), b.min_price - b.rate_3) FROM t_components_base cb @@ -18343,7 +17748,7 @@ proc: BEGIN LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id WHERE Id_Componente = 32 AND tax <> 0 AND b.min_price < b.rate_3 AND PrecioEspecial IS NULL; - -- Incremento por paquete suelto + INSERT INTO tmp.bionic_component SELECT b.warehouse_id, b.item_id, 22, rate_2 - rate_3 FROM t_bionic_temp b @@ -18351,9 +17756,9 @@ proc: BEGIN LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id WHERE PrecioEspecial IS NULL; --- ******* Fin Bloque para componentes con tarifa_class diferente de NULL - -- Reparto + + INSERT INTO tmp.bionic_component SELECT b.warehouse_id , b.item_id @@ -18375,7 +17780,7 @@ proc: BEGIN LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id HAVING cost <> 0; --- Reparto bonificado + INSERT INTO tmp.bionic_component SELECT b.warehouse_id , b.item_id @@ -18399,11 +17804,11 @@ proc: BEGIN JOIN vn2008.travel_tree t ON t.warehouse_id = awb.warehouse_id AND weekday(t.Fecha_recepcion) = awb.weekDay HAVING cost <> 0; --- PAK 12-05-2015 - -- EMBOLSADO + + IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = v_consigna) THEN - -- IF v_consigna IN (13690, 3402, 5661, 4233) THEN + INSERT INTO tmp.bionic_component SELECT b.warehouse_id, b.item_id, 38, ap.packagingValue cost @@ -18413,8 +17818,8 @@ proc: BEGIN END IF; - -- JGF 14-08-2015 - -- Modificacion de precio por dia de preparacion del pedido + + INSERT INTO tmp.bionic_component SELECT cb.warehouse_id, cb.item_id, 14, cb.base * (IFNULL(pe.percentage,pp.percentage)/100) FROM t_components_base cb @@ -18423,13 +17828,13 @@ proc: BEGIN LEFT JOIN vn2008.preparation_exception pe ON pe.exception_day = tt.Fecha_envio AND cb.warehouse_id = IFNULL(pe.warehouse_id,cb.warehouse_id) WHERE IFNULL(pe.percentage,pp.percentage); - -- Creamos la tabla tmp.bionic_component_copy por que mysql no puede reabrir una tabla temporal + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component_copy; CREATE TEMPORARY TABLE tmp.bionic_component_copy SELECT * FROM tmp.bionic_component; - -- JGF 19-01-2016 - -- Precios especiales + + INSERT INTO tmp.bionic_component SELECT b.warehouse_id, b.item_id, 10, pe.PrecioEspecial - SUM(cost) sum_cost FROM tmp.bionic_component_copy b @@ -18442,7 +17847,7 @@ proc: BEGIN - -- Lotes + DROP TEMPORARY TABLE IF EXISTS t_component_sum; CREATE TEMPORARY TABLE t_component_sum (INDEX (item_id, warehouse_id)) @@ -18452,8 +17857,8 @@ proc: BEGIN JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente GROUP BY b.item_id, b.warehouse_id, t.tarifa_class; - -- ***** Inicia Modifica t_bionic_rate las diferentes tarifas - -- Tarifa por unidad minima + + DROP TEMPORARY TABLE IF EXISTS t_bionic_rate; CREATE TEMPORARY TABLE t_bionic_rate ENGINE = MEMORY @@ -18464,7 +17869,7 @@ proc: BEGIN WHERE IFNULL(cs.tarifa_class,1) = 1 AND box < 2 AND (packing > grouping or box = 0) GROUP BY warehouse_id, item_id; - -- Tarifa por caja + INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, grouping, price) SELECT b.warehouse_id, item_id, 2 rate, packing grouping, SUM(sum_cost) price @@ -18473,7 +17878,7 @@ proc: BEGIN WHERE available IS NULL OR (IFNULL(cs.tarifa_class,2) = 2 AND packing > 0 AND available >= packing) GROUP BY warehouse_id, item_id; - -- Tarifa para toda la cantidad disponible + INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, grouping, price) SELECT b.warehouse_id, item_id, 3 rate, available grouping, SUM(sum_cost) price @@ -18482,7 +17887,7 @@ proc: BEGIN WHERE IFNULL(cs.tarifa_class,3) = 3 GROUP BY warehouse_id, item_id; - -- ***** Fin Modifica t_bionic_rate las diferentes tarifas + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; CREATE TEMPORARY TABLE tmp.bionic_price @@ -18500,7 +17905,7 @@ proc: BEGIN ENGINE = MEMORY SELECT * FROM travel_tree; - -- Limpieza + DROP TEMPORARY TABLE travel_tree; DROP TEMPORARY TABLE t_bionic_temp; @@ -18527,11 +17932,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_date`(v_ticket INT) proc: BEGIN -/** - * Este procedimiento asigna la fecha de llegada correcta a un ticket. - * - * @param v_ticket Id del ticket - **/ + DECLARE v_shipment DATE; DECLARE v_agency_id INT; DECLARE v_wh SMALLINT; @@ -18550,12 +17951,7 @@ proc: BEGIN @d := TIMESTAMPADD(DAY, subtract_day, v_shipment), @w := WEEKDAY(@d), IF(week_day IS NOT NULL, TIMESTAMPADD(DAY, (week_day - @w) + IF(@w > week_day, 7, 0), @d), @d) landing -/* - TIMESTAMPADD(DAY, - IFNULL(IF(WEEKDAY(@vdate) > week_day, 7, 0) + week_day - WEEKDAY(@vdate), - subtract_day) - CAST(subtract_day AS DECIMAL), - @vdate) landing -*/ + FROM agency_hour WHERE warehouse_id = v_wh AND (province_id = v_province OR province_id IS NULL) @@ -18589,9 +17985,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_movement`(IN v_id_mov BIGINT ) proc: BEGIN -/* -Este procedimiento bioniza una linea de movimiento -*/ + DECLARE v_shipment DATE; DECLARE v_customer INT; DECLARE v_wh SMALLINT; @@ -18633,7 +18027,7 @@ Este procedimiento bioniza una linea de movimiento CREATE TEMPORARY TABLE travel_tree ENGINE = MEMORY SELECT v_wh warehouse_id, v_shipment Fecha_envio, v_landing Fecha_recepcion; - CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra + CALL item_last_buy_ (v_wh, v_shipment); DELETE FROM t_item_last_buy WHERE item_id != v_id_article; DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; @@ -18651,9 +18045,9 @@ Este procedimiento bioniza una linea de movimiento (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY SELECT Id_Movimiento,v_wh warehouse_id FROM Movimientos m WHERE m.Id_Movimiento = v_id_mov; - CALL bionic_movement_update(IF(v_ticket_free,1,6)); -- si el ticket esta facturado, respeta los precios + CALL bionic_movement_update(IF(v_ticket_free,1,6)); - -- Log + call Ditacio(v_ticket ,'Bioniza Linea' ,'T' @@ -18661,7 +18055,7 @@ Este procedimiento bioniza una linea de movimiento , 'proc bionic_calc_movement ' , v_id_mov); - -- Limpieza + DROP TEMPORARY TABLE t_item_last_buy; END ;; @@ -18683,9 +18077,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_movement_ok`(IN v_ticket BIGINT) BEGIN -/* -Este procedimiento "rebioniza" una linea, eliminando los componentes existentes e insertandolos de nuevo -*/ + DECLARE v_shipment DATE; DECLARE v_customer INT; DECLARE v_wh SMALLINT; @@ -18705,7 +18097,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes CREATE TEMPORARY TABLE travel_tree ENGINE = MEMORY SELECT v_wh warehouse_id, v_shipment Fecha_envio, v_landing Fecha_recepcion; - CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra + CALL item_last_buy_ (v_wh, v_shipment); DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; CREATE TEMPORARY TABLE tmp.bionic_lot @@ -18723,7 +18115,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes SELECT Id_Movimiento, v_wh warehouse_id FROM Movimientos m WHERE m.Id_Ticket = v_ticket; CALL bionic_movement_update(1); - -- Log + call Ditacio(v_ticket ,'Bioniza Lineas OK' ,'T' @@ -18731,7 +18123,7 @@ Este procedimiento "rebioniza" una linea, eliminando los componentes existentes , 'proc bionic_calc_movement_ok ' , NULL); - -- Limpieza + DROP TEMPORARY TABLE t_item_last_buy; END ;; DELIMITER ; @@ -18769,18 +18161,18 @@ proc: BEGIN SELECT Id_Cliente INTO vCustomer FROM Consignatarios WHERE Id_Consigna = vConsigna; - -- Recobro + SELECT ROUND(LEAST(recobro,0.25), 3) INTO vRecovery FROM bi.claims_ratio WHERE Id_Cliente = vCustomer AND recobro > 0.009; - -- Componente de maná automático, en función del maná acumulado por el comercial. + SELECT ROUND(prices_modifier_rate, 3) INTO vMana FROM Clientes c JOIN bs.mana_spellers ms ON c.Id_Trabajador = ms.Id_Trabajador WHERE ms.prices_modifier_activated AND c.Id_Cliente = vCustomer; - -- Reparto + SELECT COEFICIENTE_DE_INFLACION_GENERAL * ROUND( vM3 @@ -18793,8 +18185,8 @@ proc: BEGIN JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = vWarehouse AND ap.province_id = c.province_id JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = vAgencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = vWarehouse; - -- Modificacion de precio por dia de preparacion del pedido - -- No aplicada + + SET vCost = ((vRetailedPrice - vPort) / ( 1 + (vRecovery + vMana))) - vMargin; @@ -18818,9 +18210,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_ticket`(IN v_ticket BIGINT ) proc: BEGIN -/* -Este procedimiento trata de "rebionizar" un ticket, eliminando los componentes existentes e insertandolos de nuevo -*/ + DECLARE v_shipment DATE; DECLARE v_customer INT; DECLARE v_wh SMALLINT; @@ -18837,10 +18227,7 @@ Este procedimiento trata de "rebionizar" un ticket, eliminando los componentes e FROM Tickets t LEFT JOIN vn.ticketState ts ON t.Id_Ticket = ts.ticket WHERE t.Id_Ticket = v_ticket; - /*SELECT (EtiquetasEmitidas or PedidoImpreso or Firmado or nz(Factura)) = FALSE - INTO v_ticket_free - FROM Tickets - WHERE Id_Ticket = v_ticket;*/ + REPLACE order_Tickets(order_id, Id_Ticket) VALUES(48, v_ticket); @@ -18852,7 +18239,7 @@ Este procedimiento trata de "rebionizar" un ticket, eliminando los componentes e CREATE TEMPORARY TABLE travel_tree ENGINE = MEMORY SELECT v_wh warehouse_id, v_shipment Fecha_envio, v_landing Fecha_recepcion; - CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra + CALL item_last_buy_ (v_wh, v_shipment); DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; CREATE TEMPORARY TABLE tmp.bionic_lot @@ -18871,7 +18258,7 @@ Este procedimiento trata de "rebionizar" un ticket, eliminando los componentes e FROM Movimientos m where m.Id_Ticket = v_ticket; - CALL bionic_movement_update(IF(v_ticket_free,1,6)); -- si el ticket esta facturado, respeta los precios + CALL bionic_movement_update(IF(v_ticket_free,1,6)); IF v_landing IS NULL THEN @@ -18882,8 +18269,8 @@ Este procedimiento trata de "rebionizar" un ticket, eliminando los componentes e WHERE Id_Ticket = v_ticket; END IF; - -- Limpieza - -- DROP TEMPORARY TABLE t_item_last_buy; + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -18955,7 +18342,7 @@ DELIMITER ; /*!50003 SET sql_mode = '' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_order`( - v_date DATE, -- fecha de recepcion de mercancia + v_date DATE, v_consigna INT, v_agencia INT, v_order INT) @@ -18986,7 +18373,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_ticket`( - v_date DATE, -- fecha de recepcion de mercancia + v_date DATE, v_consigna INT, v_agencia INT, v_ticket INT) @@ -19021,7 +18408,7 @@ BEGIN CALL bionic_calc_component ( v_consigna, v_agencia); - -- para recuperar el shipment en caso de que se necesite + SET @shipment = v_shipment; DROP TEMPORARY TABLE tmp.bionic_lot; @@ -19047,7 +18434,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_type`( - v_date DATE, -- fecha de recepcion de mercancia + v_date DATE, v_consigna INT, v_agencia INT, v_type INT) @@ -19086,16 +18473,14 @@ CREATE DEFINER=`root`@`%` PROCEDURE `bionic_make_update`( ,d_landing DATE ,i_option INT) BEGIN -/** - * Ejecuta los cambios en el ticket, en los movimientos y en los componentes. - */ + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; RESIGNAL; END; - -- Cambios en el ticket + START TRANSACTION; @@ -19109,7 +18494,7 @@ BEGIN WHERE t.Id_Ticket = i_ticket; - -- La opcion 8 es No realizar modificaciones en los precios + IF i_option <> 8 THEN @@ -19143,56 +18528,50 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_movement_update`(i_option INT) BEGIN -/** - * A partir de la tabla tmp.movement, crea los Movimientos_componentes - * y modifica el campo Preu de la tabla Movimientos - * - * @param i_option integer tipo de actualizacion - * @param table tmp.movement tabla memory con el campo Id_Movimiento, warehouse_id - **/ + DECLARE intComponent INT; DECLARE bolRENUEVA_COMPONENTES BOOLEAN; DECLARE bolRESPETA_PRECIOS BOOLEAN; CASE i_option - WHEN 1 THEN -- caso normal + WHEN 1 THEN SET bolRENUEVA_COMPONENTES = TRUE; SET bolRESPETA_PRECIOS = FALSE; WHEN 2 THEN - SET intComponent = 17; -- greuge al client + SET intComponent = 17; SET bolRENUEVA_COMPONENTES = TRUE; SET bolRESPETA_PRECIOS = TRUE; WHEN 3 THEN - SET intComponent = 37; -- convertir en maná + SET intComponent = 37; SET bolRENUEVA_COMPONENTES = TRUE; SET bolRESPETA_PRECIOS = TRUE; WHEN 4 THEN - SET intComponent = 34; -- greuge contra la cartera del producto + SET intComponent = 34; SET bolRENUEVA_COMPONENTES = TRUE; SET bolRESPETA_PRECIOS = TRUE; WHEN 5 THEN - SET intComponent = 35; -- greuge contra la cartera del comprador + SET intComponent = 35; SET bolRENUEVA_COMPONENTES = TRUE; SET bolRESPETA_PRECIOS = TRUE; WHEN 6 THEN - SET intComponent = 36; -- descuadre para la empresa + SET intComponent = 36; SET bolRENUEVA_COMPONENTES = TRUE; SET bolRESPETA_PRECIOS = TRUE; WHEN 7 THEN - -- Insertamos el 80% para el coste + REPLACE INTO vn2008.Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) SELECT m.Id_Movimiento,28, round(((m.Preu * (100 - m.Descuento) /100 ) - SUM(IFNULL(mc.Valor,0))) * 0.8 ,3) FROM Movimientos m @@ -19200,7 +18579,7 @@ BEGIN LEFT JOIN Movimientos_componentes mc ON mc.Id_Movimiento = m.Id_Movimiento AND mc.Id_Componente NOT IN (28,29) GROUP BY m.Id_Movimiento; - -- Insertamos el 20% para el margen + REPLACE INTO vn2008.Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) SELECT m.Id_Movimiento,29, round(((m.Preu * (100 - m.Descuento) /100 ) - SUM(IFNULL(mc.Valor,0))) * 0.2 ,3) FROM Movimientos m @@ -19212,12 +18591,12 @@ BEGIN SET bolRESPETA_PRECIOS = FALSE; WHEN 8 THEN - -- Eliminamos todos los componentes exceptos los propios de la tarifa para no perderla + DELETE mc.* FROM tmp.movement mo JOIN Movimientos_componentes mc ON mo.Id_Movimiento = mc.Id_Movimiento; - -- Insertamos el 100% para el coste Tipo 78 (Genérico) + REPLACE INTO vn2008.Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) SELECT m.Id_Movimiento,28, round(((m.Preu * (100 - m.Descuento) /100 )) ,3) FROM Movimientos m @@ -19226,7 +18605,7 @@ BEGIN SET bolRENUEVA_COMPONENTES = FALSE; SET bolRESPETA_PRECIOS = FALSE; - WHEN 9 THEN -- PAK 2017-02-06 caso especial de artículos cuyo precio se pone a mano, como los portes + WHEN 9 THEN SET bolRENUEVA_COMPONENTES = TRUE; SET bolRESPETA_PRECIOS = TRUE; @@ -19235,14 +18614,14 @@ BEGIN IF bolRENUEVA_COMPONENTES THEN - -- Eliminamos todos los componentes exceptos los propios de la tarifa para no perderla + DELETE mc.* FROM tmp.movement mo JOIN Movimientos_componentes mc ON mo.Id_Movimiento = mc.Id_Movimiento JOIN tarifa_componentes tc ON tc.Id_Componente = mc.Id_Componente WHERE tc.is_renewable = TRUE; - -- Insertamos los componentes actuales + REPLACE INTO Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) SELECT m.Id_Movimiento, bc.component_id, bc.cost FROM Movimientos m @@ -19267,7 +18646,7 @@ BEGIN ELSE - -- Cambios en movimientos. + UPDATE Movimientos m JOIN Articles a on a.Id_Article = m.Id_Article JOIN Tipos tp on tp.tipo_id = a.tipo_id @@ -19276,9 +18655,9 @@ BEGIN JOIN tmp.movement m ON m.Id_Movimiento = mc.Id_Movimiento GROUP BY mc.Id_Movimiento) mc ON mc.Id_Movimiento = m.Id_Movimiento SET m.Preu = sum_valor - WHERE Tipo != 'Portes'; -- PAK 2017-02-06 + WHERE Tipo != 'Portes'; - -- Insertamos descuento, si lo hay + REPLACE INTO Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) SELECT m.Id_Movimiento, 21, m.Preu * (100 -m.Descuento) / 100 - sum(Valor) v_valor @@ -19290,7 +18669,7 @@ BEGIN END IF; - -- Fija el Costfixat + UPDATE Movimientos m JOIN (SELECT SUM(mc.Valor) sum_valor,mc.Id_Movimiento @@ -19302,8 +18681,8 @@ BEGIN SET m.CostFixat = sum_valor, PrecioFijado = 1; - -- PAK 2017-02-06 - -- Familia PORTES, un unico componente de porte + + DELETE mc.* FROM Movimientos_componentes mc @@ -19314,32 +18693,16 @@ BEGIN WHERE Tipo = 'Portes'; INSERT INTO Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) - SELECT m.Id_Movimiento, 15, preu -- Reparto + SELECT m.Id_Movimiento, 15, preu FROM Movimientos m JOIN tmp.movement mo ON mo.Id_Movimiento = m.Id_Movimiento JOIN Articles a ON a.Id_Article = m.Id_Article JOIN Tipos tp ON tp.tipo_id = a.tipo_id WHERE Tipo = 'Portes' AND preu > 0; - -- PAK 2017-09-27 - -- Tipos con un unico componente de coste - /* - DELETE mc.* - FROM Movimientos_componentes mc - JOIN tmp.movement mo ON mo.Id_Movimiento = mc.Id_Movimiento - JOIN Movimientos m on m.Id_Movimiento = mc.Id_Movimiento - JOIN Articles a ON a.Id_Article = m.Id_Article - JOIN Tipos tp ON tp.tipo_id = a.tipo_id - WHERE tp.hasComponents = FALSE; + - INSERT INTO Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) - SELECT m.Id_Movimiento, 28, preu -- Coste - FROM Movimientos m - JOIN tmp.movement mo ON mo.Id_Movimiento = m.Id_Movimiento - JOIN Articles a ON a.Id_Article = m.Id_Article - JOIN Tipos tp ON tp.tipo_id = a.tipo_id - WHERE tp.hasComponents = FALSE; -*/ + END ;; DELIMITER ; @@ -19439,7 +18802,7 @@ DECLARE rs CURSOR FOR SELECT DISTINCT t.Id_Ticket FROM ( - -- Movimientos que no coincide la suma de los componentes con el precio + select t.Id_Ticket, IFNULL(sum(Valor),0) - (Preu * (100 - m.Descuento)/100) as Diferencia, NULL as Nothing from vn2008.Tickets t join vn2008.Movimientos m on t.Id_Ticket = m.Id_Ticket @@ -19454,7 +18817,7 @@ select t.Id_Ticket, IFNULL(sum(Valor),0) - (Preu * (100 - m.Descuento)/100) as having ABS(Diferencia) > 1 OR (Diferencia IS NULL) UNION ALL - -- Movimientos sin componente de coste + SELECT t.Id_Ticket, NULL, NULL FROM Tickets t LEFT JOIN @@ -19473,7 +18836,7 @@ UNION ALL AND t.Fecha between datSTART and datEND_Midnight UNION ALL - -- Movimientos sin porte en tickets con agencia que SI que deberia de llevar + SELECT m.Id_Ticket, count(Id_Movimiento) as Lineas_totales, Lineas_conPorte FROM Movimientos m JOIN Articles a on a.Id_Article = m.Id_Article @@ -19743,7 +19106,7 @@ BEGIN AND warehouse_id IN (0,i_wh) GROUP BY item_id ) pf ON pf.item_id = A.Id_Article; - -- JGF 02/02/15 canvie CURDATE() per IFNULL(date_,CURDATE()) + DROP TEMPORARY TABLE `entry_label`; DROP TEMPORARY TABLE `buy_label_source`; @@ -19766,20 +19129,15 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `buy_scan`(v_barcode VARCHAR(255), v_labels INT) BEGIN -/** - * Marca una compra de subasta como escaneada. - * - * @param v_barcode Código de compra de una etiqueta de subasta - * @param v_labels Cantidad escaneada - **/ + DECLARE v_edi INT; DECLARE v_buy INT; DECLARE v_item INT; DECLARE v_do_photo BOOL; - -- Aun no se sabe como obtener el número de serie de transacción de - -- las compras realizadas a través de un reloj, por lo que se establece - -- siempre a '01' + + + IF SUBSTR(v_barcode, 3, 2) != '99' THEN SET v_barcode = CONCAT(LEFT(v_barcode, 12), '010'); @@ -19867,13 +19225,13 @@ BEGIN START TRANSACTION; - -- Obtiene los datos de la compra + SELECT Id_Article, Packing, Cantidad INTO v_item, v_packing, v_remaining FROM Compres WHERE Id_Compra = v_buy; - -- Crea splits de los tickets + DROP TEMPORARY TABLE IF EXISTS tmp.split; CREATE TEMPORARY TABLE tmp.split @@ -19921,14 +19279,14 @@ BEGIN CLOSE cur; - -- Crea los movimientos de almacén a silla + CALL buy_transfer (v_buy, v_fv_entry, v_pca_entry); UPDATE Compres SET dispatched = Vida * Packing WHERE Id_Compra = v_buy; - -- Devuelve los splits creados + DROP TEMPORARY TABLE IF EXISTS tmp.aux; CREATE TEMPORARY TABLE tmp.aux @@ -19955,7 +19313,7 @@ BEGIN SELECT * FROM tmp.aux; - -- Limpia y confirma cambios + DROP TEMPORARY TABLE tmp.split, @@ -20010,12 +19368,12 @@ BEGIN ), C.Comisionfija = @CF:= ROUND(IFNULL(E.comision * C.Costefijo / 100,0),3), C.Embalajefijo = @EF:= IF(CB.Retornable != 0, 0, ROUND(IFNULL( CB.Valor / C.Packing ,0),3)), - C.Tarifa3 = @t3:= IF(TC.t3 = 0, C.Costefijo,ROUND((C.Costefijo + @CF + @EF + @PF) / ((100 - TC.t3 - TP.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0 + C.Tarifa3 = @t3:= IF(TC.t3 = 0, C.Costefijo,ROUND((C.Costefijo + @CF + @EF + @PF) / ((100 - TC.t3 - TP.promo ) /100) ,2)), C.Tarifa2 = @t2:= ROUND(@t3 * (1 + ( (TC.t2 - TC.t3)/100) ),2), C.Tarifa2 = IF(@t2 <= @t3, @t3 , @t2) WHERE C.Id_Compra = v_buy; - IF v_wh = 42 -- Canarias + IF v_wh = 42 THEN UPDATE Compres SET Tarifa2 = Tarifa3 @@ -20074,7 +19432,7 @@ LIMIT 1; C.Embalajefijo = @EF:= IF(CB.Retornable != 0, 0, ROUND(IFNULL( CB.Valor / C.Packing ,0),3)), - C.Tarifa3 = @t3:= IF(TC.t3 = 0, C.Costefijo,ROUND((C.Costefijo + @CF + @EF + @PF) / ((100 - TC.t3 - TP.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0 + C.Tarifa3 = @t3:= IF(TC.t3 = 0, C.Costefijo,ROUND((C.Costefijo + @CF + @EF + @PF) / ((100 - TC.t3 - TP.promo ) /100) ,2)), C.Tarifa2 = @t2:= round(@t3 * (1 + ( (TC.t2 - TC.t3)/100) ),2), @@ -20086,7 +19444,7 @@ LIMIT 1; CASE wh_id - WHEN 41 THEN -- Canarias + WHEN 41 THEN UPDATE Compres SET Tarifa2 = Tarifa3 @@ -20131,8 +19489,8 @@ DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN rs; FETCH rs INTO strAWB; --- drop temporary table if exists killme; --- create temporary table killme select strAWB, now() as fecha, 0; + + WHILE NOT done DO @@ -20212,14 +19570,14 @@ BEGIN ROUND(IFNULL(((AG.m3 * @cm3:= cm3_2(C.Id_Cubo, C.Id_Article)) / 1000000) / C.Packing,0),3) ), - -- jgf 2015-08-14 canvie este procediment per a que coincidisca en el buy_tarifas - -- ROUND(IFNULL(((m3i * @cm3:= ( TP.density / 167 ) * cm3_2(C.Id_Cubo, C.Id_Article)) / 1000000) / C.Packing,0),3), + + C.Comisionfija = @CF:= ROUND(IFNULL(E.comision * C.Costefijo / 100,0),3), C.Embalajefijo = @EF:= IF(CB.Retornable != 0, 0, ROUND(IFNULL( CB.Valor / C.Packing ,0),3)), - C.Tarifa3 = @t3:= IF(TC.t3 = 0, C.Costefijo,ROUND((C.Costefijo + @CF + @EF + @PF) / ((100 - TC.t3 - TP.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0 + C.Tarifa3 = @t3:= IF(TC.t3 = 0, C.Costefijo,ROUND((C.Costefijo + @CF + @EF + @PF) / ((100 - TC.t3 - TP.promo ) /100) ,2)), C.Tarifa2 = @t2:= round(@t3 * (1 + ( (TC.t2 - TC.t3)/100)),2), @@ -20230,7 +19588,7 @@ BEGIN CASE wh_id - WHEN 41 THEN -- Canarias + WHEN 41 THEN UPDATE Compres SET Tarifa2 = Tarifa3 @@ -20421,7 +19779,7 @@ BEGIN WHERE C.Id_Compra = idCOMPRA; - IF wh_id = 41 THEN -- Canarias + IF wh_id = 41 THEN UPDATE Compres SET Tarifa2 = Tarifa3 @@ -20502,14 +19860,14 @@ BEGIN DECLARE v_date DATE; DECLARE v_wh INT; - -- Obtiene fecha de llegada y almacén entrante + SELECT landing, warehouse_id INTO v_date , v_wh FROM travel TR JOIN Entradas E ON TR.id = E.travel_id WHERE Id_Entrada = v_entry; - -- Prepara una tabla con las tarifas aplicables en funcion de la fecha y el almacén + DROP TEMPORARY TABLE IF EXISTS tblTARIFAS; CREATE TEMPORARY TABLE tblTARIFAS @@ -20531,7 +19889,7 @@ BEGIN ) sub2 LIMIT 1; - -- pak 22/09/2015 + UPDATE bi.rotacion r JOIN Compres c ON c.Id_Article = r.Id_Article @@ -20556,10 +19914,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `buy_transfer`(v_buy INT, v_fv_entry INT, v_pca_entry INT) proc: BEGIN -/** - * Traslada la cantidad restante de una compra de Holanda - * al almacén de Silla. - **/ + DECLARE v_wh INT; DECLARE v_entry INT; DECLARE v_fv INT; @@ -20567,7 +19922,7 @@ proc: BEGIN DECLARE v_item INT; DECLARE v_holland_wh INT DEFAULT 7; - -- Comprueba que es mercancía que llega al almacén de Holanda + SELECT t.warehouse_id, tp.FV INTO v_wh, v_fv FROM Compres c @@ -20581,7 +19936,7 @@ proc: BEGIN LEAVE proc; END IF; - -- Calcula a que almacén de Silla debe transladar la mercancía + SET v_entry = IF(v_fv, v_fv_entry, v_pca_entry); SET v_entry = IFNULL(v_entry, IFNULL(v_pca_entry, v_fv_entry)); @@ -20590,7 +19945,7 @@ proc: BEGIN LEAVE proc; END IF; - -- Calcula la cantidad a trasladar + SELECT Id_Article INTO v_item FROM Compres WHERE Id_Compra = v_buy; @@ -20625,7 +19980,7 @@ proc: BEGIN LEAVE proc; END IF; - -- Crea la nueva línea de compra con el translado + INSERT INTO Compres ( Id_Article, Etiquetas, Cantidad, Id_Entrada, @@ -21015,14 +20370,7 @@ BEGIN DECLARE v_date6 DATE; DECLARE strtable varchar(15) DEFAULT NULL; DECLARE done BIT DEFAULT 0; - /* - DECLARE cursor_table CURSOR FOR SELECT TABLE_NAME - FROM information_schema.TABLES - WHERE TABLE_NAME LIKE 'b20%' - AND TABLE_SCHEMA = 'vn2008'; - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; - DECLARE CONTINUE HANDLER FOR 1051 SET done = 0; -*/ + SET v_date = TIMESTAMPADD(MONTH, -2, CURDATE()); SET v_date18 = TIMESTAMPADD(MONTH, -18,CURDATE()); SET v_date8 = TIMESTAMPADD(DAY, -8,CURDATE()); @@ -21030,15 +20378,15 @@ BEGIN INSERT INTO vn2008.daily_task_log(consulta) VALUES('clean START'); - -- + DELETE FROM cdr WHERE calldate < v_date; DELETE FROM Monitoring WHERE ODBC_TIME < v_date; DELETE FROM Conteo WHERE Fecha < v_date; DELETE FROM XDiario WHERE FECHA < v_date OR FECHA IS NULL; DELETE FROM mail WHERE DATE_ODBC < v_date; - -- - -- DELETE FROM Cajas WHERE CajaFecha < v_date18; + + DELETE rr FROM Recibos_recorded rr JOIN Recibos r ON rr.Id_Recibos = r.Id WHERE r.Fechacobro < v_date; SELECT MAX(idTickets_dits) @@ -21047,7 +20395,7 @@ BEGIN WHERE ODBC_DATE < v_date; DELETE FROM Tickets_dits WHERE idTickets_dits <= @id; - -- DELETE FROM Tickets_dits WHERE ODBC_DATE < v_date; + DELETE FROM expeditions WHERE odbc_date < v_date18; DELETE FROM expeditions_deleted WHERE odbc_date < v_date18; DELETE FROM Entradas_dits WHERE ODBC_DATE < v_date18; @@ -21074,13 +20422,13 @@ BEGIN WHERE odbc_date < v_date18; DELETE FROM vncontrol.inter WHERE inter_id <= @id; - -- DELETE FROM vncontrol.inter WHERE odbc_date < v_date18; + DELETE FROM Entradas_dits WHERE ODBC_DATE < v_date; DELETE FROM Ordenes WHERE datTICKET < v_date18 AND datTICKET <> '2000-01-01'; DELETE FROM cyc_declaration WHERE Fecha < v_date18; DELETE FROM vn.message WHERE sendDate < v_date; DELETE FROM travel_reserve WHERE odbc_date < v_date; - -- DELETE FROM syslog.systemevents WHERE odbc_date < v_date8; + DELETE FROM daily_task_log WHERE odbc_date < v_date; DELETE FROM bi.Greuge_Evolution WHERE Fecha < v_date AND weekday(Fecha) != 1; DELETE mc FROM Movimientos_checked mc JOIN Movimientos m ON mc.Id_Movimiento = m.Id_Movimiento WHERE m.odbc_date < v_date; @@ -21094,7 +20442,7 @@ BEGIN JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada JOIN travel t ON t.id = e.travel_id WHERE t.landing <= v_date; - -- + DELETE FROM vn2008.scan WHERE odbc_date < v_date6 AND id <> 1; SET v_date = TIMESTAMPADD(YEAR, 2000 - YEAR(v_date), v_date); @@ -21115,24 +20463,9 @@ BEGIN AND re.Id_Entrada IS NULL; END IF; - /* - OPEN cursor_table; - FETCH cursor_table INTO strtable; - REPEAT - IF NOT done THEN - CALL vn2008.sql_query (sql_printf ( - 'DROP TABLE IF EXISTS %t' - ,strtable - )); - END IF; - FETCH cursor_table INTO strtable; - UNTIL done - END REPEAT; + - CLOSE cursor_table; - */ - - -- Tickets vacios PAK 17/05/2016 + UPDATE Tickets t JOIN @@ -21145,7 +20478,7 @@ AND t.Fecha between '2016-01-01' and util.yesterday()) sub using(Id_Ticket) SET t.Fecha = TIMESTAMPADD(YEAR, 2000 - year(CURDATE()), t.Fecha); - -- Tickets Nulos PAK 11/10/2016 + UPDATE vn2008.Tickets @@ -21153,7 +20486,7 @@ SET t.Fecha = TIMESTAMPADD(YEAR, 2000 - year(CURDATE()), t.Fecha); WHERE Id_Cliente = 31 AND empresa_id != 965; - -- Equipos duplicados + DELETE w.* FROM vn2008.workerTeam w JOIN (SELECT id, team, user, COUNT(*) - 1 as duplicated @@ -21232,7 +20565,7 @@ BEGIN FROM bi.calidad_parametros JOIN Clientes; - -- Valoramos del 0 al 5 su consumo + REPLACE INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) SELECT Id_Cliente, 1, IF(Consumo > 5, 5, Consumo) @@ -21244,36 +20577,30 @@ BEGIN group by Id_Cliente) sub; - -- Incrementamos dos puntos a los de giro bancario, y restamos uno a los de pago contado/contrareembolso + REPLACE INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) - SELECT Id_Cliente, 3, CASE pay_met_id WHEN 4 -- giro + SELECT Id_Cliente, 3, CASE pay_met_id WHEN 4 THEN 2 - WHEN 1 -- contado + WHEN 1 THEN -1 - WHEN 5 -- tarjeta + WHEN 5 THEN 1 - WHEN 7 -- tarjeta + WHEN 7 THEN 1 - WHEN 6 -- contrareembolso + WHEN 6 THEN -1 ELSE 0 END FROM Clientes; - /* Incrementamos a los que tengan reclamaciones 0%, 2 puntos - 1%, 1 punto - 2% 0 puntos - 3% -3 puntos - 4% - 6 puntos - 5% - 9 puntos - */ + REPLACE INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) SELECT Id_Cliente, 2, CASE nz(Ratio) @@ -21286,7 +20613,7 @@ BEGIN END FROM bi.claims_ratio ; - -- Ahora les ponemos un punto a los que compran por la web mas del 50% de sus pedidos + REPLACE INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) SELECT Id_Cliente, 4, Webs @@ -21298,12 +20625,12 @@ BEGIN FROM Tickets_dits WHERE idaccion_dits = 84 AND ODBC_DATE >= TIMESTAMPADD(DAY,-30,CURDATE())) sub USING(Id_Ticket) - WHERE Fecha > '2001-01-01' AND Id_Agencia <> 23 -- ni tickets borrados, ni abonos cuentan + WHERE Fecha > '2001-01-01' AND Id_Agencia <> 23 GROUP BY Id_Cliente HAVING Webs > 0.5) sub2; - -- Marcamos con un 11 a los clientes recien nacidos, para protegerlos + REPLACE INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) SELECT Id_Cliente, 5, 11 @@ -21314,7 +20641,7 @@ BEGIN GROUP BY Id_Cliente HAVING Inicio >= TIMESTAMPADD(DAY,-30,CURDATE())) sub ; - -- Ahora actualizamos la tabla Clientes + UPDATE Clientes JOIN @@ -21327,8 +20654,8 @@ BEGIN calidad = IF(valoracion > 11, 11, valoracion); IF DAY(CURDATE()) = 1 THEN - -- Y de paso, desactivamos a los que hace tiempo que no compran.alter - -- JGF Sólo desctivamos a los clientes que no han comprado en los dos ultimos meses + + UPDATE account.user u SET active = 0 @@ -21540,7 +20867,7 @@ BEGIN SELECT 'Greuges' as Grupo, sum(g.Importe) as Mana FROM vn2008.Greuges g JOIN vn2008.Clientes c using(Id_Cliente) - WHERE g.Greuges_type_id = 3 -- Maná + WHERE g.Greuges_type_id = 3 AND g.Fecha > '2016-01-01' AND c.Id_Cliente = vClient; @@ -21596,7 +20923,7 @@ BEGIN WHERE year = vYear AND week = vWeek AND WEEKDAY(date) = vWeekDay; - -- busca si el ticket ya ha sido clonado + IF (select count(*) FROM Tickets t JOIN ticket_observation tob ON t.Id_Ticket = tob.Id_Ticket WHERE Id_Consigna = vConsignatario AND Fecha = vShipment AND tob.text LIKE CONCAT('%',vTicket,'%')) = 0 THEN @@ -21663,8 +20990,8 @@ BEGIN DECLARE cuenta_cliente BIGINT; DECLARE max_asien INT; - -- XDIARIO - -- No se asientan los cobros directamente, salvo en el caso de las cajas de CASH + + SELECT (cash = 1) INTO bolCASH FROM Bancos WHERE Bancos.Id_Banco = idCAJA; IF bolCASH THEN @@ -21685,7 +21012,7 @@ BEGIN END IF; - -- CAJERA + INSERT INTO Cajas(Id_Trabajador , Id_Banco @@ -21711,7 +21038,7 @@ BEGIN - -- RECIBO + INSERT INTO Recibos(Entregado ,Fechacobro ,Id_Trabajador @@ -21772,16 +21099,16 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `comercial_caducado`() BEGIN --- Este procedimiento le pasa los clientes al jefe de ventas cuando llevan dos meses inactivos -IF day(CURDATE()) = 5 then -- solo se ejecuta los dias 5 de cada mes + +IF day(CURDATE()) = 5 then Update Clientes join ( Select c.Id_Cliente from Clientes c - join jerarquia j on j.worker_id = c.Id_Trabajador -- este filtro es para que solo toque los de los comerciales + join jerarquia j on j.worker_id = c.Id_Trabajador join ( @@ -21810,16 +21137,16 @@ IF day(CURDATE()) = 5 then -- solo se ejecuta los dias 5 de cada mes ) tic_vivos on tic_vivos.Id_Cliente = c.Id_Cliente - where c.Created < CURDATE() - INTERVAL 2 MONTH -- este filtro respeta a los recien nacidos.... - and j.boss_id = 87 -- sólo afecta a los comerciales de Alfredo - and f.Id_Cliente is null -- comprueba que no tenga facturas en los dos ultimos meses - and sindeuda.Saldo < 10 -- sólo cambia a los clientes con deuda escasa o nula - and tic_vivos.Id_Cliente is null -- si tiene tickets vivos, lo respeta + where c.Created < CURDATE() - INTERVAL 2 MONTH + and j.boss_id = 87 + and f.Id_Cliente is null + and sindeuda.Saldo < 10 + and tic_vivos.Id_Cliente is null ) sub using(Id_Cliente) - set Id_Trabajador = 87 ;-- Alfredo Giner; + set Id_Trabajador = 87 ; end if; @@ -21968,19 +21295,19 @@ SELECT cc.Id_Article FROM clientcom cc JOIN clientcom_periods ccp using(period) --- La parte del inventario + LEFT JOIN article_inventory i ON i.article_id = cc.Id_Article LEFT JOIN Compres CM ON i.buy_id = CM.Id_Compra LEFT JOIN Entradas E USING(Id_Entrada) LEFT JOIN Proveedores P ON P.Id_Proveedor = E.Id_Proveedor --- Ahora la parte de los vendedores + JOIN Clientes C ON C.Id_Cliente = cc.Id_Cliente JOIN Trabajadores T1 ON C.Id_Trabajador = T1.Id_Trabajador LEFT JOIN jerarquia J ON J.worker_id = T1.Id_Trabajador JOIN Trabajadores JF ON JF.Id_Trabajador = J.boss_id --- JOIN Trabajadores JF ON T1.Id_Trabajador = JF.boss JGF propuesta para sustituir por las dos lineas superiores --- Ahora la parte de los compradores + + JOIN Articles A ON A.Id_Article = cc.Id_Article JOIN Origen O ON O.id = A.id_origen JOIN Tintas TT ON TT.Id_Tinta = A.Color @@ -22132,19 +21459,19 @@ SELECT cc.Id_Article FROM clientcom cc JOIN clientcom_periods ccp using(period) --- La parte del inventario + LEFT JOIN article_inventory i ON i.article_id = cc.Id_Article LEFT JOIN Compres CM ON i.buy_id = CM.Id_Compra LEFT JOIN Entradas E USING(Id_Entrada) LEFT JOIN Proveedores P ON P.Id_Proveedor = E.Id_Proveedor --- Ahora la parte de los vendedores + JOIN Clientes C ON C.Id_Cliente = cc.Id_Cliente JOIN Trabajadores T1 ON C.Id_Trabajador = T1.Id_Trabajador LEFT JOIN jerarquia J ON J.worker_id = T1.Id_Trabajador JOIN Trabajadores JF ON JF.Id_Trabajador = J.boss_id --- JOIN Trabajadores JF ON T1.Id_Trabajador = JF.boss JGF propuesta para sustituir por las dos lineas superiores --- Ahora la parte de los compradores + + JOIN Articles A ON A.Id_Article = cc.Id_Article JOIN Origen O ON O.id = A.id_origen JOIN Tintas TT ON TT.Id_Tinta = A.Color @@ -22245,9 +21572,9 @@ BEGIN DECLARE corrector INT; DECLARE w1, w2, w3, w4, w5, w6, w7 INT; DECLARE y1, y2, y3, y4, y5, y6, y7 INT; - DECLARE wperiod INT;-- DECLARE ws, ys INT; -- PAK 11/01/2016 + DECLARE wperiod INT; DECLARE i INT DEFAULT 0; - DECLARE lastCOMP BIGINT; -- Almacena el ultimo valor del Periodo + DECLARE lastCOMP BIGINT; DECLARE strFILTRO VARCHAR(255) DEFAULT 'TRUE'; IF i_filtro THEN @@ -22263,10 +21590,10 @@ BEGIN IF i_wh = NULL THEN SET i_wh = 0; END IF; - -- JGF 2015-04-16 cambio -21 por -22 para que la semana cuente de domingo a sabado + SET date_cyear_ini = TIMESTAMP(DATE(TIMESTAMPADD(DAY, -22 - WEEKDAY(v_date), v_date)), '00:00:00'); SET date_cyear_end = TIMESTAMP(DATE(TIMESTAMPADD(DAY, (7 * week_count) -1, date_cyear_ini)), '23:59:59'); - -- Eliminamos el calculo del inventario para fechas en el pasado + CALL article (); @@ -22308,8 +21635,8 @@ BEGIN REPEAT SET i = i + 1; - SET wperiod = vnperiod(TIMESTAMPADD(DAY, 7*(i - 1), date_cyear_ini)); -- PAK 11/01/2016 - INSERT INTO wtable(cy, ly) VALUES(wperiod, wperiod - 100); -- VALUES( ys * 100 + ws, (ys -1) * 100 + ws); -- PAK 11/01/2016 + SET wperiod = vnperiod(TIMESTAMPADD(DAY, 7*(i - 1), date_cyear_ini)); + INSERT INTO wtable(cy, ly) VALUES(wperiod, wperiod - 100); UNTIL i = 7 END REPEAT; @@ -22326,7 +21653,7 @@ BEGIN SET cyear = YEAR(date_cyear_ini); - -- Genera una tabla con los datos del año pasado. + DROP TEMPORARY TABLE IF EXISTS last_year; CREATE TEMPORARY TABLE last_year @@ -22356,7 +21683,7 @@ BEGIN AND IF(i_wh = 0, W.is_comparative, i_wh = warehouse_id) GROUP BY Id_Article; - -- Genera una tabla con los datos de este año. + DROP TEMPORARY TABLE IF EXISTS cur_year; CREATE TEMPORARY TABLE cur_year @@ -22400,13 +21727,13 @@ BEGIN GROUP BY A.Id_Article, week ) t GROUP BY Id_Article; - -- Genera la tabla con la comparativa. + DROP TEMPORARY TABLE IF EXISTS remcom; SET strFILTRO = REPLACE(strFILTRO, 'Id_Article','A.Id_Article'); SET strFILTRO = REPLACE(strFILTRO, 'tipo_id','tp.tipo_id'); - -- select * from article_inventory; + CALL sql_query (sql_printf ( 'CREATE TEMPORARY TABLE remcom @@ -22464,11 +21791,11 @@ BEGIN CHANGE COLUMN `lweek7` `lweek7` INT NOT NULL; SELECT * FROM remcom; - -- Destruye las tablas temporales creadas. + DROP TEMPORARY TABLE last_year; DROP TEMPORARY TABLE cur_year; - -- DROP TEMPORARY TABLE article_inventory; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -22504,9 +21831,9 @@ BEGIN DECLARE corrector INT; DECLARE w1, w2, w3, w4, w5, w6, w7 INT; DECLARE y1, y2, y3, y4, y5, y6, y7 INT; - DECLARE wperiod INT;-- DECLARE ws, ys INT; -- PAK 11/01/2016 + DECLARE wperiod INT; DECLARE i INT DEFAULT 0; - DECLARE lastCOMP BIGINT; -- Almacena el ultimo valor del Periodo + DECLARE lastCOMP BIGINT; DECLARE strFILTRO VARCHAR(255) DEFAULT 'TRUE'; IF i_filtro THEN @@ -22522,10 +21849,10 @@ BEGIN IF i_wh = NULL THEN SET i_wh = 0; END IF; - -- JGF 2015-04-16 cambio -21 por -22 para que la semana cuente de domingo a sabado + SET date_cyear_ini = TIMESTAMP(DATE(TIMESTAMPADD(DAY, -22 - WEEKDAY(v_date), v_date)), '00:00:00'); SET date_cyear_end = TIMESTAMP(DATE(TIMESTAMPADD(DAY, (7 * week_count) -1, date_cyear_ini)), '23:59:59'); - -- Eliminamos el calculo del inventario para fechas en el pasado + CALL article (); @@ -22567,8 +21894,8 @@ BEGIN REPEAT SET i = i + 1; - SET wperiod = vnperiod(TIMESTAMPADD(DAY, 7*(i - 1), date_cyear_ini)); -- PAK 11/01/2016 - INSERT INTO wtable(cy, ly) VALUES(wperiod, wperiod - 100); -- VALUES( ys * 100 + ws, (ys -1) * 100 + ws); -- PAK 11/01/2016 + SET wperiod = vnperiod(TIMESTAMPADD(DAY, 7*(i - 1), date_cyear_ini)); + INSERT INTO wtable(cy, ly) VALUES(wperiod, wperiod - 100); UNTIL i = 7 END REPEAT; @@ -22585,7 +21912,7 @@ BEGIN SET cyear = YEAR(date_cyear_ini); - -- Genera una tabla con los datos del año pasado. + DROP TEMPORARY TABLE IF EXISTS last_year; CREATE TEMPORARY TABLE last_year @@ -22615,7 +21942,7 @@ BEGIN AND IF(i_wh = 0, W.is_comparative, i_wh = warehouse_id) GROUP BY Id_Article; - -- Genera una tabla con los datos de este año. + DROP TEMPORARY TABLE IF EXISTS cur_year; CREATE TEMPORARY TABLE cur_year @@ -22659,13 +21986,13 @@ BEGIN GROUP BY A.Id_Article, week ) t GROUP BY Id_Article; - -- Genera la tabla con la comparativa. + DROP TEMPORARY TABLE IF EXISTS remcom; SET strFILTRO = REPLACE(strFILTRO, 'Id_Article','A.Id_Article'); SET strFILTRO = REPLACE(strFILTRO, 'tipo_id','tp.tipo_id'); - -- select * from article_inventory; + CALL sql_query (sql_printf ( 'CREATE TEMPORARY TABLE remcom @@ -22724,7 +22051,7 @@ BEGIN CHANGE COLUMN `lweek7` `lweek7` INT NOT NULL; SELECT * FROM remcom; - -- Destruye las tablas temporales creadas. + DROP TEMPORARY TABLE last_year; DROP TEMPORARY TABLE cur_year; @@ -22764,9 +22091,9 @@ BEGIN DECLARE corrector INT; DECLARE w1, w2, w3, w4, w5, w6, w7 INT; DECLARE y1, y2, y3, y4, y5, y6, y7 INT; - DECLARE wperiod INT;-- DECLARE ws, ys INT; -- PAK 11/01/2016 + DECLARE wperiod INT; DECLARE i INT DEFAULT 0; - DECLARE lastCOMP BIGINT; -- Almacena el ultimo valor del Periodo + DECLARE lastCOMP BIGINT; DECLARE strFILTRO VARCHAR(255) DEFAULT 'TRUE'; IF i_filtro THEN @@ -22782,10 +22109,10 @@ BEGIN IF i_wh = NULL THEN SET i_wh = 0; END IF; - -- JGF 2015-04-16 cambio -21 por -22 para que la semana cuente de domingo a sabado + SET date_cyear_ini = TIMESTAMP(DATE(TIMESTAMPADD(DAY, -22 - WEEKDAY(v_date), v_date)), '00:00:00'); SET date_cyear_end = TIMESTAMP(DATE(TIMESTAMPADD(DAY, (7 * week_count) -1, date_cyear_ini)), '23:59:59'); - -- Eliminamos el calculo del inventario para fechas en el pasado + CALL article (); @@ -22827,8 +22154,8 @@ BEGIN REPEAT SET i = i + 1; - SET wperiod = vnperiod(TIMESTAMPADD(DAY, 7*(i - 1), date_cyear_ini)); -- PAK 11/01/2016 - INSERT INTO wtable(cy, ly) VALUES(wperiod, wperiod - 100); -- VALUES( ys * 100 + ws, (ys -1) * 100 + ws); -- PAK 11/01/2016 + SET wperiod = vnperiod(TIMESTAMPADD(DAY, 7*(i - 1), date_cyear_ini)); + INSERT INTO wtable(cy, ly) VALUES(wperiod, wperiod - 100); UNTIL i = 7 END REPEAT; @@ -22845,7 +22172,7 @@ BEGIN SET cyear = YEAR(date_cyear_ini); - -- Genera una tabla con los datos del año pasado. + DROP TEMPORARY TABLE IF EXISTS last_year; CREATE TEMPORARY TABLE last_year @@ -22875,7 +22202,7 @@ BEGIN AND IF(i_wh = 0, W.is_comparative, i_wh = warehouse_id) GROUP BY Id_Article; - -- Genera una tabla con los datos de este año. + DROP TEMPORARY TABLE IF EXISTS cur_year; CREATE TEMPORARY TABLE cur_year @@ -22919,13 +22246,13 @@ BEGIN GROUP BY A.Id_Article, week ) t GROUP BY Id_Article; - -- Genera la tabla con la comparativa. + DROP TEMPORARY TABLE IF EXISTS remcom; SET strFILTRO = REPLACE(strFILTRO, 'Id_Article','A.Id_Article'); SET strFILTRO = REPLACE(strFILTRO, 'tipo_id','tp.tipo_id'); - -- select * from article_inventory; + CALL sql_query (sql_printf ( 'CREATE TEMPORARY TABLE remcom @@ -22983,7 +22310,7 @@ BEGIN CHANGE COLUMN `lweek7` `lweek7` INT NOT NULL; SELECT * FROM remcom; - -- Destruye las tablas temporales creadas. + DROP TEMPORARY TABLE last_year; DROP TEMPORARY TABLE cur_year; @@ -23230,11 +22557,11 @@ BEGIN AND t.Fecha BETWEEN CURDATE() AND vEndingDate AND m.Cantidad > 0; - -- Hora limite de preparación + CALL production_buffer_set_priority; - -- Entradas + INSERT INTO tmp.production_buffer( Fecha, @@ -23299,7 +22626,7 @@ BEGIN DECLARE vDate DATE; DECLARE vCodintrastat INT(11); - -- COMPROBAMOS SI EXISTE UN ARTÍCULO IGUAL. + SELECT Id_Article INTO vItem FROM @@ -23312,14 +22639,14 @@ BEGIN AND Color = vColour LIMIT 1; - -- SI NO EXISTE CREAMOS UNO NUEVO + IF vItem IS NULL THEN - -- OBTENER EL ID ENTRE 161000 Y 169000 DEL SIGUIENTE ARTÍCULO + SELECT (IF(MAX(Id_Article) IS NULL, 161000, (MAX(Id_Article) + 1))) INTO vItem FROM Articles WHERE Id_Article BETWEEN 161000 AND 169000; - -- INSERTAR EL ARTÍCULO + INSERT INTO Articles(Id_Article, Article, tipo_id, Medida, color, id_origen) VALUES ( vItem, @@ -23369,14 +22696,14 @@ BEGIN DECLARE vPassword VARCHAR(50); DECLARE vUsername VARCHAR(50) CHARSET utf8; -############################################################################## -#### GENERAR CLIENTE -############################################################################## + + + - -- Comprobar si existe un cliente con el mismo DNI. + SELECT Id_cliente INTO vClient FROM vn2008.Clientes WHERE `if` = vDNI; - -- Si no existe el cliente creamos uno nuevo. + IF vClient IS NULL THEN SELECT (MAX(Id_Cliente) + 1) INTO vClient FROM Clientes WHERE Id_Cliente < 999999; @@ -23385,49 +22712,49 @@ BEGIN SELECT vClient, Concat('TR ', vName, ' ', vCognames), vAddress, vDNI, vPhone, vProvince, vTown, vPostalCode, CONCAT(vCognames, ' ', vName), vName, 1, 3, vPostalCode, 4, 5, 300; END IF; -############################################################################## -#### GENERAR USUARIO -############################################################################## + + + SET vUsername = LCASE(CONCAT(REPLACE(vName, ' ', ''), LEFT(vCognames, 1), MID(vCognames, (LOCATE(' ', vCognames) + 1), 1))); - -- Generar nombre de usuario hasta que haya uno disponible. + WHILE (SELECT COUNT(*) FROM account.user WHERE `name`= vUsername) DO SET vUsername = CONCAT(vUsername, (FLOOR(RAND() * 100))); END WHILE; SET vPassword = CONCAT(IF(INSTR(vCognames,' ') = 0, vCognames, LEFT(vCognames, INSTR(vCognames,' ') - 1)), '.' , vClient); - -- Comprobamos si existe un usuario con el mismo ID de cliente. + IF NOT (SELECT COUNT(*) FROM account.user where id = vClient) THEN - -- Alta del usuario. + INSERT INTO account.user (id, role, `name`, `password`, active) VALUES (vClient, 1, LCASE(vUsername), MD5(LCASE(vPassword)), 1); SET vUser = vClient; INSERT INTO account.account (id, lastchange, `expire`) values (vClient, CURRENT_DATE(), CURRENT_DATE()); ELSE - -- Alta del usuario. + INSERT INTO account.user (role, `name`, `password`, active) VALUES (1, LCASE(vUsername), MD5(LCASE(vPassword)), 1); SET vUser = LAST_INSERT_ID(); INSERT INTO account.account (id, lastchange ,`expire`) values (vUser, CURRENT_DATE(), CURRENT_DATE()); END IF; -############################################################################## -#### GENERAR TRABAJADOR -############################################################################## + + + SET vWorkerCode = CONCAT(LEFT(vName, 1), LEFT(vCognames, 1), MID(vCognames, (LOCATE(' ', vCognames) + 1), 1)); - -- Generar código de trabajador hasta que haya uno disponible. + IF (SELECT COUNT(*) FROM Trabajadores WHERE CodigoTrabajador = vWorkerCode) THEN SET vWorkerCode = "001"; END IF; - -- Comprobamos si ya existe un trabajador con el mismo DNI. + IF NOT (SELECT COUNT(*) FROM Trabajadores WHERE dni = vDNI) THEN - -- Alta en la tabla trabajadores. + INSERT INTO Trabajadores (CodigoTrabajador, Nombre, Apellidos, `Password`, dni, empresa_id, user_id, boss, DniExpiration) VALUES (vWorkerCode, vName, vCognames, LCASE(vPassword), vDNI, vCompany, vUser, vEmployeeBoss, VDniExpiration); @@ -23436,16 +22763,16 @@ BEGIN UPDATE Trabajadores SET user_id = vUser WHERE dni = vDNI; END IF; -############################################################################## -#### REENVIO EMAIL -############################################################################## + + + IF vMail IS NOT NULL AND NOT (SELECT COUNT(*) FROM account.mailForward WHERE forwardTo = vMail) THEN INSERT INTO account.mailForward (account, forwardTo) VALUES (vUser, vMail); UPDATE Trabajadores SET email = CONCAT(vUsername, '@verdnatura.es') WHERE user_id = vUser; END IF; - -- Devolver información generada + SELECT vUser, vWorker, vPassword, vUsername; END ;; DELIMITER ; @@ -23894,7 +23221,7 @@ BEGIN ,Faltan INT DEFAULT 0 ); - -- Insertamos los tickets que ya tienen la linea de portes + INSERT INTO zeleVOL(Provincia, Id_Ticket, Bultos) SELECT p.name, t.Id_Ticket, sum(m.Cantidad) @@ -23905,12 +23232,12 @@ BEGIN JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id WHERE m.Id_Article = 71 - AND wj.warehouse_alias_id = 1 -- El 1 equivale a Silla (SillaFV-SillaPCA) + AND wj.warehouse_alias_id = 1 AND t.Fecha BETWEEN v_start AND v_end AND a.agency_id = agency_id GROUP BY p.name, Id_Ticket; - -- Insertamos los tickets que ya tienen expediciones, que fallaran si se repite la clave primaria. + INSERT INTO zeleVOL(Provincia, Id_Ticket, Bultos) SELECT p.name, e.ticket_id, COUNT(e.ticket_id) @@ -23921,12 +23248,12 @@ BEGIN JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id WHERE e.odbc_date BETWEEN v_start AND v_end - AND wj.warehouse_alias_id = 1 -- El 1 equivale a Silla (SillaFV-SillaPCA) + AND wj.warehouse_alias_id = 1 AND a.agency_id = agency_id GROUP BY p.name, ticket_id ON DUPLICATE KEY UPDATE Bultos = Bultos; - -- Por encajar + INSERT INTO zeleVOL(Provincia, Id_Ticket, Faltan) SELECT province, Id_Ticket, COUNT(Id_Ticket) as Faltan @@ -23941,14 +23268,14 @@ BEGIN LEFT JOIN expeditions e ON t.Id_Ticket = e.ticket_id JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id WHERE Fecha BETWEEN v_start AND v_end - AND wj.warehouse_alias_id = 1 -- El 1 equivale a Silla (SillaFV-SillaPCA) + AND wj.warehouse_alias_id = 1 AND a.agency_id = agency_id AND (Bultos = 0 AND expeditions_id IS NULL AND EtiquetasEmitidas = 0) GROUP BY p.name, Id_Ticket ) sub GROUP BY province ON DUPLICATE KEY UPDATE Faltan = Faltan; - -- Mostramos el resultado + SELECT Provincia, COUNT(Id_Ticket) expediciones, SUM(Bultos) Bultos, SUM(Faltan) Prevision FROM zeleVOL @@ -23974,11 +23301,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `dif_porte`(IN datFEC DATE) BEGIN -/* Calcula los greuges de porte que no coinciden con lo esperado -/ -/ -/ -*/ + drop temporary table if exists tmp.bionic_porte; @@ -24076,7 +23399,7 @@ proc_label:BEGIN ORDER BY CHAR_LENGTH(accion) DESC LIMIT 1; - IF @intidaccion IS null THEN -- idaccion genèric per a evitar errors en cas de no existir + IF @intidaccion IS null THEN SET @intidaccion = 103; END IF; @@ -24169,14 +23492,14 @@ SET txt = CONCAT(txt, '

Muchas gracias por su confianza

', '

'); --- Envío del email + IF emptyList = 0 THEN SELECT CONCAT(`e-mail`,',pako@verdnatura.es') INTO MyMailTo FROM Clientes WHERE Id_Cliente = v_Client_Id AND `e-mail`>''; - IF v_Client_Id = 7818 THEN -- LOEWE + IF v_Client_Id = 7818 THEN SET MyMailTo = 'isabel@elisabethblumen.com,emunozca@loewe.es,pako@verdnatura.es'; @@ -24508,27 +23831,27 @@ BEGIN DECLARE vEntry INT; DECLARE vBucket VARCHAR(10); - -- seleccionamos travel + SELECT id, Id_Entrada INTO vTravel, vEntry FROM travel t LEFT JOIN Entradas e ON t.id = e.travel_id WHERE t.landing = vInOutDate AND t.shipment = vInOutDate AND t.warehouse_id_out = vShipmentWarehouse AND t.warehouse_id = vLandingWarehouse AND agency_id = 15 LIMIT 1; - -- creamos el travel si es necesario + IF NOT IFNULL(vTravel,0) THEN INSERT INTO travel (shipment, landing, warehouse_id, warehouse_id_out, agency_id) VALUES (vInOutDate, vInOutDate, vLandingWarehouse, vShipmentWarehouse, 15); SELECT LAST_INSERT_ID() INTO vTravel; END IF; - -- creamos la Entrada si es necesario + IF NOT IFNULL(vEntry,0) THEN INSERT INTO Entradas (Id_Proveedor, travel_id) - VALUES (13, vTravel); -- proveedor 'MOVIMIENTO ALMACEN' + VALUES (13, vTravel); SELECT LAST_INSERT_ID() INTO vEntry; END IF; - -- creamos el cubo si es necesario + SELECT Id_Cubo INTO vBucket FROM Cubos WHERE Volumen = vVolume LIMIT 1; IF NOT IFNULL(vBucket,'') > '' THEN @@ -24579,14 +23902,14 @@ BEGIN SELECT warehouse_id, Fecha, Fecha INTO vShipmentWarehouse, vShipmentDate, vLandingDate FROM Tickets WHERE Id_Ticket = vTicket; - -- seleccionamos travel + SELECT id, Id_Entrada INTO vTravel, vEntry FROM travel t LEFT JOIN Entradas e ON t.id = e.travel_id WHERE t.landing = vLandingDate AND t.shipment = vShipmentDate AND t.warehouse_id_out = vShipmentWarehouse AND t.warehouse_id = vLandingWarehouse AND agency_id = 15 LIMIT 1; - -- creamos el travel si es necesario + IF vTravel IS NULL THEN select vLandingDate; INSERT INTO travel (shipment, landing, warehouse_id, warehouse_id_out, agency_id) @@ -24594,10 +23917,10 @@ BEGIN SELECT LAST_INSERT_ID() INTO vTravel; END IF; - -- creamos la Entrada si es necesario + IF vEntry IS NULL THEN INSERT INTO Entradas (Id_Proveedor, travel_id) - VALUES (13, vTravel); -- proveedor 'MOVIMIENTO ALMACEN' + VALUES (13, vTravel); SELECT LAST_INSERT_ID() INTO vEntry; END IF; @@ -24651,28 +23974,28 @@ BEGIN DECLARE vEntry INT; DECLARE vBucket VARCHAR(10); - -- seleccionamos travel + SELECT id, Id_Entrada INTO vTravel, vEntry FROM travel t LEFT JOIN Entradas e ON t.id = e.travel_id WHERE t.landing = vInOutDate AND t.shipment = vInOutDate AND t.warehouse_id_out = vShipmentWarehouse AND t.warehouse_id = vLandingWarehouse AND agency_id = 15 LIMIT 1; - -- creamos el travel si es necesario + IF NOT vTravel THEN INSERT INTO travel (shipment, landing, warehouse_id, warehouse_id_out, agency_id) VALUES (vShipmentDate, vLandingDate, vLandingWarehouse, vLandingWarehouse, 15); SELECT LAST_INSERT_ID() INTO vTravel; END IF; - -- creamos la Entrada si es necesario + IF NOT vEntry THEN INSERT INTO Entradas (Id_Proveedor, travel_id) - VALUES (13, vTravel); -- proveedor 'MOVIMIENTO ALMACEN' + VALUES (13, vTravel); SELECT LAST_INSERT_ID() INTO vEntry; END IF; - -- creamos el cubo si es necesario + SELECT Id_Cubo INTO vBucket FROM Cubos WHERE Volumen = vVolume LIMIT 1; IF vBucket IS NULL THEN INSERT INTO Cubos (Id_Cubo, Volumen) @@ -24717,9 +24040,9 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `envios_masivos`(IN idTICKET INT, IN IdCONSIGNA_DESDE INT, IN IdCONSIGNA_HASTA INT) BEGIN --- Se trata de clonar el ticket semilla para todos los consignatarios del rango, con los movimientos que contenga --- Insertamos los tickets + + INSERT INTO Tickets(Id_Consigna, Id_Cliente, warehouse_id, Fecha, Alias, Tipo, Id_Trabajador, empresa_id, Id_Agencia) SELECT c.Id_Consigna, t.Id_Cliente, t.warehouse_id, t.Fecha, c.Consignatario, t.Tipo, t.Id_Trabajador, t.empresa_id, t.Id_Agencia @@ -24729,7 +24052,7 @@ WHERE Id_Ticket = idTICKET AND c.Id_Consigna BETWEEN IdCONSIGNA_DESDE AND IdCONSIGNA_HASTA; --- Insertamos los movimientos + INSERT INTO Movimientos(Id_Article, Concepte, Cantidad, Preu, PrecioFijado, Id_Ticket) SELECT Id_Article, Concepte, Cantidad, Preu, TRUE , t.Id_Ticket @@ -25113,7 +24436,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `f10_no_vincular`(lngEntrada INTEGER) BEGIN DECLARE datFecha DATE DEFAULT CURDATE(); --- Modifica el NoVincular si hay dos entradas con el mismo Packing y el mismo Id_Articulo + DROP TEMPORARY TABLE IF EXISTS f10_no_vincular_; CREATE TEMPORARY TABLE IF NOT EXISTS f10_no_vincular_ SELECT c.Id_Entrada,c.Id_Compra,c.Id_Article, c.Novincular, c.Packing, be.pri @@ -25125,7 +24448,7 @@ BEGIN OR (c.Id_Entrada = 9200 AND be.ok <> FALSE) OR c.Id_Entrada = lngEntrada) AND Id_Article <> 90; - -- Modifica el NoVincular si hay dos entradas con el mismo Packing y el mismo Id_Articulo + DROP TEMPORARY TABLE IF EXISTS f10_mismo_Packing; CREATE TEMPORARY TABLE IF NOT EXISTS f10_mismo_Packing SELECT * FROM ( @@ -25144,7 +24467,7 @@ BEGIN OR (c.Id_Entrada = 9200 AND be.ok <> FALSE) OR c.Id_Entrada = lngEntrada); --- Modifica el Id_Articulo si hay dos entradas con packing y el mismo Id_Articulo + DROP TEMPORARY TABLE IF EXISTS f10_mismo_Articulo; CREATE TEMPORARY TABLE IF NOT EXISTS f10_mismo_Articulo SELECT Id_Article FROM ( @@ -25186,41 +24509,8 @@ SELECT C.calidad, LEFT(Article, 4) as Subtipo, barcode, 'ASEGURADO' AS asegurado, -/*CASE A.tipo_id -WHEN 75 THEN IF(M.Id_Article IN (120,2388,20100,16,10,130,104851,1,56,238,104850,104849,2),'RAMAJE',R.Reino) -WHEN 68 THEN IF(M.Id_Article IN (11539,10,14),'RAMAJE',R.Reino) -WHEN 69 THEN IF(M.Id_Article IN (41),'RAMAJE',R.Reino) -WHEN 72 THEN IF(M.Id_Article IN (238),'RAMAJE',R.Reino) -WHEN 2 THEN 'CYMBIDIUMS & ANTHURIUMS' -WHEN 122 THEN 'CYMBIDIUMS & ANTHURIUMS' -WHEN 12 THEN 'CYMBIDIUMS & ANTHURIUMS' -WHEN 13 THEN 'CYMBIDIUMS & ANTHURIUMS' -WHEN 14 THEN 'CYMBIDIUMS & ANTHURIUMS' -WHEN 15 THEN 'CYMBIDIUMS & ANTHURIUMS' -WHEN 71 THEN IF(LEFT(Article,2) = 'HC','Flor',R.Reino) -WHEN 19 THEN IF(LEFT(Article,3) IN ('HEL','GIN'),'CYMBIDIUMS & ANTHURIUMS',R.Reino) -WHEN 70 THEN IF(Article like '%red beauty%' or Article like '%clarinervium%','CYMBIDIUMS & ANTHURIUMS',R.Reino) -WHEN 86 THEN 'Flor' -ELSE R.Reino -END as*/ Reino, - /* -CASE A.tipo_id -WHEN 75 THEN IF(M.Id_Article IN (120,2388,20100,16,10,130,104851,1,56,238,104850,104849,2),-1,R.orden) -WHEN 68 THEN IF(M.Id_Article IN (11539,10,14),-1,R.orden) -WHEN 69 THEN IF(M.Id_Article IN (41),-1,R.orden) -WHEN 72 THEN IF(M.Id_Article IN (238),-1,R.orden) -WHEN 2 THEN 0 -WHEN 122 THEN 0 -WHEN 12 THEN 0 -WHEN 13 THEN 0 -WHEN 14 THEN 0 -WHEN 15 THEN 0 -WHEN 71 THEN IF(LEFT(Article,2) = 'HC',1,R.orden) -WHEN 19 THEN IF(LEFT(Article,3) IN ('HEL','GIN'),0,R.orden) -WHEN 70 THEN IF(Article like '%red beauty%' or Article like '%clarinervium%',0,R.orden) -WHEN 86 THEN 1 -ELSE R.orden -END as*/ R.orden, + Reino, + R.orden, CS.Consignatario, T.Id_Cliente, T.Id_Trabajador, @@ -25241,7 +24531,7 @@ END as*/ R.orden, T.Observaciones, Ag.Agencia Tipo, TR.CodigoTrabajador, - /*0 Seguro,*/ + M.OK, M.Reservado, A.Tallos, @@ -25258,14 +24548,14 @@ END as*/ R.orden, M.Id_Movimiento movement_id, lpad(ifnull(cooler_path_detail_id, an.Nicho),5,'0') as path, M.Descuento,M.Preu, mm.valor as Preparado, mm.original_quantity - , p.`name` producer, T.warehouse_id, CS.POBLACION -- JGF 2016-02-16 + , p.`name` producer, T.warehouse_id, CS.POBLACION FROM Tickets T LEFT JOIN Movimientos M USING(Id_Ticket) LEFT JOIN Articles A on A.Id_Article = M.Id_Article LEFT JOIN Articles_nicho an ON A.Id_Article = an.Id_Article AND an.warehouse_id = T.warehouse_id - LEFT JOIN producer p on p.producer_id = A.producer_id -- JGF 2016-02-16 + LEFT JOIN producer p on p.producer_id = A.producer_id LEFT JOIN cooler_path_detail c on left(an.Nicho,3) = pasillo LEFT JOIN Origen O ON A.id_origen = O.id LEFT JOIN Clientes C USING(Id_Cliente) @@ -25601,21 +24891,21 @@ DECLARE datFEC DATE; DECLARE intEMP INT; DECLARE intCLI_OLD INT; -/*Este procedure no funcionara correctament perque el strFactura ha de fer referencia al factura_id*/ + SELECT Importe, Fecha, empresa_id, Id_Cliente INTO dblIMPORTE, datFEC, intEMP, intCLI_OLD FROM Facturas WHERE Id_Factura = strFactura; --- Cambia la empresa de la factura + UPDATE Facturas SET empresa_id = 965, Id_Cliente = intCLI WHERE Id_Factura = strFactura; --- Cambia la empresa de los tickets + UPDATE Tickets SET empresa_id = 965, Id_Cliente = intCLI WHERE Factura = strFactura; --- Descuenta la cantidad del cliente antiguo + INSERT INTO Recibos(Id_Factura ,Entregado @@ -25633,7 +24923,7 @@ VALUES (strFactura ,intCLI_OLD ,intEMP); --- Carga el cobro en la cuenta del nuevo cliente + INSERT INTO Recibos(Id_Factura ,Entregado @@ -25748,7 +25038,7 @@ BEGIN DECLARE intCLI,intCLI2 INT DEFAULT 0; DECLARE datFEC,datFEC2,auxdatFEC DATE DEFAULT '2001-01-01'; DECLARE lngTIC, lngTIC2 BIGINT DEFAULT 0; -DECLARE intDiferencia INT DEFAULT 0; # Variable donde se colocará la diferencia de días entre dos fechas. +DECLARE intDiferencia INT DEFAULT 0; DECLARE done,EsPerdido bit DEFAULT 0; DECLARE intEstado TINYINT(2) DEFAULT 0; DECLARE intNuevo INT DEFAULT 1; @@ -25756,14 +25046,8 @@ DECLARE intPerdido INT DEFAULT 2; DECLARE intRecuperado INT DEFAULT 3; -# Añado una fecha de fin para que no tenga en cuenta los tickets del futuro. (and Fecha<=current_date()) -/* -DECLARE cursor1 CURSOR FOR SELECT Id_Ticket,ti.Id_Cliente,date_format(Fecha,'%Y-%m-%d') AS FormatoFecha -FROM vn2008.Tickets ti -WHERE DATE_FORMAT(Fecha,'%Y-%m-%d')>CAST(CONCAT(YEAR(CURDATE())-2,'-','01-01')AS DATE) -AND DATE_FORMAT(Fecha,'%Y-%m-%d')<=LAST_DAY(CAST(CONCAT(intAno, '-' , intMes,'-',01) AS DATE)) -ORDER BY ti.Id_Cliente,Fecha; -*/ + + DECLARE cursor1 CURSOR FOR SELECT Id_Ticket,fac.Id_Cliente,date_format(Fecha,'%Y-%m-%d') AS FormatoFecha FROM Facturas fac JOIN (SELECT Id_Ticket,Id_Cliente,Factura from Tickets ti where Factura is not null order by Fecha DESC,Id_Ticket DESC) sub1 @@ -25783,7 +25067,7 @@ CREATE TEMPORARY TABLE GC (Id_Ticket BIGINT,Fecha DATE,Id_Cliente int,Estado SMA OPEN cursor1; FETCH cursor1 INTO lngtIC,intCLI,datFEC; - # el primero registro es un cliente nuevo. + INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES(lngtIC,datFEC, intCLI,intNuevo); SET auxdatFEC=datFEC; @@ -25793,27 +25077,27 @@ OPEN cursor1; WHEN DONE THEN SET intDiferencia=DATEDIFF(CURRENT_DATE,datFEC2); WHEN intCLI=intCLI2 THEN SET intDiferencia=DATEDIFF(datFEC2,datFEC); - IF ((intEstado=2)) THEN -- es recuperado despues de haberse perdido - INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES (lngtIC2,datFEC2, intCLI,intRecuperado); # RECUPERADO + IF ((intEstado=2)) THEN + INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES (lngtIC2,datFEC2, intCLI,intRecuperado); SET intEstado=1; SET auxdatFEC=datFEC2; ELSE IF (intDiferencia >= intDiasPerdidos) THEN - -- IF (DATE_FORMAT(datFEC2,'%Y-%m')<>DATE_FORMAT(DATE_ADD(datFEC,INTERVAL intDiasPerdidos DAY),'%Y-%m')) AND (intEstado<2) THEN + INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES (0,DATE_ADD(auxdatFEC,INTERVAL intDiasPerdidos DAY), intCLI,intPerdido); - INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES (lngtIC2,datFEC2, intCLI,intRecuperado); # RECUPERADO + INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES (lngtIC2,datFEC2, intCLI,intRecuperado); SET intEstado=1,auxdatFEC=datFEC2; - -- ELSE - -- INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES (lngtIC2,datFEC2, intCLI,intPerdido); # PERDIDO - -- SET intEstado=2; # Lo marcamos como perdido - -- END IF; + + + + END IF; END IF; WHEN intCLI<>intCLI2 THEN SET intEstado=0; SET intDiferencia=DATEDIFF(CURRENT_DATE,datFEC); - INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES(lngtIC2,datFEC2, intCLI2,intNuevo); # NUEVO + INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES(lngtIC2,datFEC2, intCLI2,intNuevo); SET auxdatFEC=datFEC2; END CASE; SET datFEC=datFEC2; @@ -25825,7 +25109,7 @@ OPEN cursor1; CLOSE cursor1; - # inserto los registros de clientes sin ticket (Estado 4) + INSERT GC SELECT 0,'2000-01-01',Id_Cliente,4 FROM vn2008.Clientes @@ -26095,10 +25379,10 @@ BEGIN DECLARE datini,datfin,datiniaux,datfinaux DATE; DECLARE dblrate0,dblrate0aux,dblrate1,dblrate1aux,dblrate2,dblrate2aux,dblrate3,dblrate3aux DOUBLE DEFAULT 0; DECLARE boolBeforeStart TINYINT DEFAULT 1; - -- selecciona el primer bloque apartir de la mínima fecha que esta dentro del rango y la fecha de finalizar es posterior + SET datiniaux = NULL; SET datfinaux = NULL; - -- guarda en dblrate0aux el valor del valor del periode, a lo millor falla si no trau cap linea + SELECT IFNULL(rate_0,0), IFNULL(rate_1,0), IFNULL(rate_2,0), IFNULL(rate_3,0) INTO dblrate0aux,dblrate1aux,dblrate2aux,dblrate3aux FROM price_fixed WHERE date_start = id_datestart AND warehouse_id IN (0,id_wh) AND item_id = id_art; @@ -26118,22 +25402,22 @@ BEGIN ORDER BY date_start LIMIT 1; IF datini IS NOT NULL THEN - -- Inserta un registre(dia -1) + IF boolBeforeStart THEN INSERT INTO historicoprecio(date_start,rate_0,rate_1,rate_2,rate_3) VALUES(TIMESTAMPADD(DAY,-1,datini),dblrate0aux,dblrate1aux,dblrate2aux,dblrate3aux); SET boolBeforeStart = TRUE; END IF; - -- reiniciem els valors de les variables + SET datiniaux = NULL; SET datfinaux = NULL; - -- seleccionem el dia fins al qual dura el periode eliminant els dies que queden solapats + SELECT MIN(date_start) INTO datfinaux FROM price_fixed WHERE date_start > datini AND date_start < datfin AND date_end >= datfin AND warehouse_id IN (0,id_wh) AND item_id = id_art; - -- cridada recursiva per al periode(retallat si cal) inclós + CALL historicoprecio2 (id_art,id_wh,datini,IFNULL(datfinaux,datfin)); - -- anyadeix el valor que ha d'agafar el dia seguent d'acabar el periode actual. + IF datfinaux IS NULL THEN INSERT INTO historicoprecio(date_start,rate_0,rate_1,rate_2,rate_3) VALUES(TIMESTAMPADD(DAY,1,datfin),dblrate0aux,dblrate1aux,dblrate2aux,dblrate3aux), @@ -26148,7 +25432,7 @@ BEGIN END IF; UNTIL datini IS NULL END REPEAT; - -- inserta linea caso base + INSERT INTO historicoprecio(date_start,rate_0,rate_1,rate_2,rate_3) VALUES(id_datestart,dblrate0aux,dblrate1aux,dblrate2aux,dblrate3aux) ON DUPLICATE KEY UPDATE rate_0 = dblrate0,rate_1 = dblrate1,rate_2 = dblrate2,rate_3 = dblrate3; END ;; @@ -26188,7 +25472,7 @@ SET today = curdate(); E.Referencia as Referencia, E.Id_Entrada as id, TR.delivered as F5, 0 as Calidad - FROM Compres C -- mirar perque no entra en received + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) INNER JOIN travel TR ON TR.id = E.travel_id INNER JOIN Proveedores P USING (Id_Proveedor) @@ -26241,7 +25525,7 @@ SET today = curdate(); FROM historico_pasado WHERE Fecha < datfecha; - -- WHERE historico_pasado.Fecha < fecha_inv ; + SELECT p1.*, NULL as v_virtual FROM( @@ -26611,7 +25895,7 @@ from ( inner join Clientes cli on ti.Id_Cliente=cli.Id_Cliente inner join vn2008.Trabajadores on cli.Id_Trabajador=Trabajadores.Id_Trabajador where (date between date_add(dat_from,interval -1 year) and date_add(dat_to,interval -1 year)) - -- and cli.invoice + group by CodigoTrabajador,ti.Id_Cliente union all @@ -26628,7 +25912,7 @@ select CodigoTrabajador,cli.Id_Cliente,Cliente,0 ImporteAnt, inner join vn2008.Permisos perm on cli.Id_Trabajador=perm.Id_Trabajador inner join vn2008.Grupos grup on perm.Id_Grupo=grup.Id where ti.Fecha between dat_from and DAYEND(dat_to) - -- and cli.invoice + AND r.display <> 0 and (grup.Id in (6) or cli.Id_Trabajador in (20)) group by CodigoTrabajador,c.Id_Cliente,year(Fecha) @@ -26704,13 +25988,9 @@ BEGIN JOIN edi.supplier es ON es.supplier_id = be.pro WHERE c.Id_Compra = idCompra; - -- SELECT LAST_INSERT_ID() INTO last_insert; + - /* - IF last_insert > 0 THEN - UPDATE Articles a JOIN Compres c - ON a.Id_Article = c.Id_Article SET a.producer_id = last_insert WHERE c.Id_Compra = idCompra; - END IF;*/ + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -26749,7 +26029,7 @@ BEGIN --- PREVIO: Crear una tabla para filtrar los articulos que interesan + DROP TEMPORARY TABLE IF EXISTS article_selection; @@ -26774,9 +26054,9 @@ BEGIN ALTER TABLE article_selection ADD PRIMARY KEY(Id_Article); --- PRIMER PASO: Cálculo del inventario inicial, valorado + --- Averiguamos la fecha del inventario inmediatemente anterior a la fecha de inicio + SELECT landing INTO d_INV FROM travel TR @@ -26801,7 +26081,7 @@ ALTER TABLE article_selection ADD PRIMARY KEY(Id_Article); END IF; --- Ubicamos la fecha de inventario segun su posición relativa a la de inicio y a la de fin + IF d_INV <= d_START THEN @@ -26823,7 +26103,7 @@ END IF; DROP TEMPORARY TABLE IF EXISTS inv; --- Preparamos la tabla temporal que va a almacenar el valor y cantidad de productos + CREATE TEMPORARY TABLE inv (w_id SMALLINT, @@ -26835,7 +26115,7 @@ CREATE TEMPORARY TABLE inv ALTER TABLE inv ADD PRIMARY KEY USING HASH (w_id, Id_Article, Sector); -/************************** SECTOR INICIAL: 0 *****************************/ + CASE intCASE @@ -26855,7 +26135,7 @@ CASE intCASE END CASE; --- Inicializamos el inventario + INSERT INTO inv(w_id, Id_Article, Unidades,Valor) @@ -26875,7 +26155,7 @@ END CASE; AND TR.warehouse_id != TR.warehouse_id_out GROUP BY TR.warehouse_id, C.Id_Article; --- Se insertan las compras que llegan entre la fecha del inventario y la fecha inicial + INSERT INTO inv(w_id, Id_Article, Unidades, Valor) SELECT TR.warehouse_id, C.Id_Article, C.Cantidad * IF(bolREVERSE,-1,1), ifnull(C.Costefijo,0) + IFNULL(C.Embalajefijo,0) + IFNULL(C.Portefijo,0) + IFNULL(C.Comisionfija,0) @@ -26897,7 +26177,7 @@ END CASE; ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (C.Cantidad * IF(bolREVERSE,-1,1)) , Valor = IF(Costefijo > 0,ifnull(C.Costefijo,0) + IFNULL(C.Embalajefijo,0) + IFNULL(C.Portefijo,0) + IFNULL(C.Comisionfija,0),Valor); --- Se sacan las que salen + INSERT INTO inv(w_id, Id_Article, Unidades) SELECT TR.warehouse_id_out, C.Id_Article, C.Cantidad * IF(bolREVERSE,1,-1) @@ -26917,7 +26197,7 @@ END CASE; AND TR.warehouse_id != TR.warehouse_id_out ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (C.Cantidad * IF(bolREVERSE,1,-1)); --- Ahora las ventas + INSERT INTO inv(w_id, Id_Article, Unidades) SELECT w.id, M.Id_Article, M.Cantidad * IF(bolREVERSE,1,-1) @@ -26937,7 +26217,7 @@ END CASE; UPDATE inv SET Valor = inv.Unidades * Valor; -/************************** SECTOR ENTRADAS: 1 *****************************/ + SET i_SECTOR = 1; @@ -26947,7 +26227,7 @@ SET i_SECTOR = 1; --- Ahora vamos a incrementar en unidades y valor el producto recibido en el rango de fechas del procedimiento + INSERT INTO inv(Sector, w_id, Id_Article, Unidades, Valor) SELECT i_SECTOR, TR.warehouse_id, C.Id_Article, sum(C.Cantidad ) @@ -26971,11 +26251,11 @@ SET i_SECTOR = 1; -/************************** SECTOR SALIDAS: 2 *****************************/ + SET i_SECTOR = 2; --- Ahora vamos a restar en unidades y valor el producto que sale de los almacenes en el rango de fechas del procedimiento + INSERT INTO inv(Sector, w_id, Id_Article, Unidades, Valor) SELECT i_SECTOR, TR.warehouse_id_out, C.Id_Article, sum( -1 * C.Cantidad ) @@ -26998,7 +26278,7 @@ SET i_SECTOR = 2; -/******************** SECTOR VENTAS: 3 **************************************/ + SET i_SECTOR = 3; @@ -27033,13 +26313,7 @@ IF d_START >= '2015-10-01' THEN AND i_wh IN (0,T.warehouse_id) AND w.comisionantes AND reino_id != ID_REINO_OTROS - /* - AND ( - T.Id_Cliente != ID_CLIENTE_COMPLEMENTOS - OR - TP.Id_Trabajador != ID_TRABAJADOR_MARIBEL - ) - */ + GROUP BY T.warehouse_id, Id_Article; @@ -27087,19 +26361,13 @@ ELSE AND i_wh IN (0,T.warehouse_id) AND w.comisionantes AND reino_id != ID_REINO_OTROS - /* - AND ( - T.Id_Cliente != ID_CLIENTE_COMPLEMENTOS - OR - TP.Id_Trabajador != ID_TRABAJADOR_MARIBEL - ) - */ + GROUP BY T.warehouse_id, Id_Article; END IF; - -- Ventas del año anterior + DROP TEMPORARY TABLE IF EXISTS Ventas_Lastyear; @@ -27137,13 +26405,7 @@ END IF; AND i_wh IN (0,T.warehouse_id) AND w.comisionantes AND reino_id != ID_REINO_OTROS - /* - AND ( - T.Id_Cliente != ID_CLIENTE_COMPLEMENTOS - OR - TP.Id_Trabajador != ID_TRABAJADOR_MARIBEL - ) - */ + GROUP BY CodigoTrabajador, Id_Tipo; @@ -27151,7 +26413,7 @@ END IF; -/******************** SECTOR FINAL: 4 **************************************/ + SET i_SECTOR = 4; @@ -27174,9 +26436,9 @@ CASE intCASE END CASE; --- Ahora repetimos el proceso de inventario, para contabilizar el stock remanente. --- Inicializamos el inventario + + INSERT INTO inv(Sector, w_id, Id_Article, Unidades, Valor) @@ -27201,7 +26463,7 @@ END CASE; --- Se insertan las compras que llegan entre la fecha del inventario y la fecha inicial + INSERT INTO inv(Sector, w_id, Id_Article, Unidades, Valor) SELECT i_SECTOR, TR.warehouse_id, C.Id_Article, C.Cantidad * IF(bolREVERSE,-1,1), nz(Costefijo) + nz(Portefijo) + nz(Embalajefijo) + nz(Comisionfija) @@ -27223,7 +26485,7 @@ END CASE; ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (C.Cantidad * IF(bolREVERSE,-1,1)) , Valor = IF( nz(Costefijo) > 0,nz(Costefijo) + nz(Portefijo) + nz(Embalajefijo) + nz(Comisionfija),Valor); --- Se sacan las que salen + INSERT INTO inv(Sector, w_id, Id_Article, Unidades) SELECT i_SECTOR, TR.warehouse_id_out, C.Id_Article, C.Cantidad * IF(bolREVERSE,1,-1) @@ -27244,7 +26506,7 @@ END CASE; ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (C.Cantidad * IF(bolREVERSE,1,-1)); --- Ahora las ventas + INSERT INTO inv(Sector, w_id, Id_Article, Unidades) SELECT i_SECTOR, w.id, M.Id_Article, M.Cantidad * IF(bolREVERSE,1,-1) @@ -27260,13 +26522,13 @@ END CASE; AND reino_id != ID_REINO_OTROS ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (M.Cantidad * IF(bolREVERSE,1,-1)); --- Valoramos el inventario final + UPDATE inv SET Valor = inv.Unidades * Valor WHERE Sector =4; --- Resultado + DROP TEMPORARY TABLE IF EXISTS Margen_Desglose; @@ -27330,7 +26592,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `inventario_multiple`(IN wh TINYINT(2), IN date_ticket DATETIME) BEGIN --- DEPRECATED USAR cache.available_refresh + DECLARE date_order DATETIME; DECLARE date_end DATETIME DEFAULT CURDATE(); DECLARE date_aux DATE; @@ -27349,17 +26611,8 @@ BEGIN ADD `inventory` FLOAT(7,2) NOT NULL, ADD `visible` FLOAT(7,2) NOT NULL; - -- JGF 2015-02-19 Falla, el valor @camp es cero y falla Campanya - /* - SELECT - IF(@camp := DATEDIFF(campaign, date_ticket) BETWEEN 0 AND campaign_life, - TIMESTAMPADD(DAY, -campaign_life, campaign), - FechaInventario), - IF(@camp BETWEEN 0 AND campaign_life, - TIMESTAMP(campaign, '23:59:59'), - TIMESTAMP(TIMESTAMPADD(DAY, 15, date_ticket),'23:59:59')) - INTO date_start, date_end - FROM tblContadores;*/ + + SELECT FechaInventario,TIMESTAMP(TIMESTAMPADD(DAY, 15, date_ticket),'23:59:59') @@ -27370,7 +26623,7 @@ BEGIN SET date_order = TIMESTAMP(DATE(date_ticket), '00:00:00'); SET date_tomorrow = TIMESTAMPADD(DAY, 1, date_order); --- Inventario hasta dia antes del ticket + CALL item_stock(wh,date_ticket,NULL); INSERT INTO article_inventory (article_id,inventory,visible,available) @@ -27379,7 +26632,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp_item; --- Inventario ventas durante el dia del ticket + INSERT INTO article_inventory(article_id,visible) SELECT Id_Article, SUM(amount) AS Subtotal @@ -27451,7 +26704,7 @@ BEGIN visible = inventory + VALUES(visible); - -- Disponible en el futuro + CALL item_travel (wh, date_order); SET date_aux = DATE(date_order); @@ -27554,7 +26807,7 @@ proc: BEGIN DECLARE date_top DATETIME; DECLARE date_tomorrow DATETIME; - SET date_ticket = DATE(date_ticket); -- PAK + SET date_ticket = DATE(date_ticket); ALTER TABLE `article_inventory` ADD `avalaible` INT NOT NULL, @@ -27576,7 +26829,7 @@ proc: BEGIN SET date_tomorrow = TIMESTAMPADD(DAY, 1,date_ticket); SET date_top = TIMESTAMPADD(DAY, 1,date_end); - -- Calculo del inventario dia D a las 24:00 zulu + UPDATE article_inventory AI INNER JOIN @@ -27599,7 +26852,7 @@ proc: BEGIN SELECT Id_Article, Cantidad FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) LEFT JOIN travel TR ON E.travel_id = TR.id - JOIN warehouse W ON W.id = TR.warehouse_id -- PAK + JOIN warehouse W ON W.id = TR.warehouse_id WHERE TR.landing BETWEEN date_start AND date_ticket AND IF(wh = 0, W.is_comparative, wh =TR.warehouse_id) AND E.Inventario = 0 @@ -27633,7 +26886,7 @@ proc: BEGIN AI.sd = T2.Subtotal; - -- Calculo del visible + UPDATE article_inventory AI INNER JOIN ( @@ -27642,8 +26895,8 @@ proc: BEGIN SELECT Id_Article, Cantidad AS amount FROM Movimientos M JOIN Tickets T USING (Id_Ticket) - JOIN warehouse W ON W.id = T.warehouse_id -- PAK - WHERE Fecha >= date_ticket AND Fecha < date_tomorrow -- PAK + JOIN warehouse W ON W.id = T.warehouse_id + WHERE Fecha >= date_ticket AND Fecha < date_tomorrow AND (M.OK = 0 AND T.Etiquetasemitidas = 0 AND T.Factura IS NULL) AND IF(wh = 0, W.is_comparative, wh =T.warehouse_id) @@ -27653,7 +26906,7 @@ proc: BEGIN FROM Compres C JOIN Entradas E USING (Id_Entrada) JOIN travel TR ON E.travel_id = TR.id - JOIN warehouse W ON W.id = TR.warehouse_id -- PAK + JOIN warehouse W ON W.id = TR.warehouse_id WHERE TR.landing = date_ticket AND TR.received = 0 AND E.Inventario = 0 @@ -27682,7 +26935,7 @@ proc: BEGIN SET AI.visible = AI.visible + T2.Subtotal; - -- Calculo del disponible + CALL item_travel (wh, date_ticket); @@ -27706,7 +26959,7 @@ proc: BEGIN FROM Compres C JOIN Entradas E USING (Id_Entrada) JOIN travel TR ON E.travel_id = TR.id - JOIN warehouse W ON W.id = TR.warehouse_id -- PAK + JOIN warehouse W ON W.id = TR.warehouse_id WHERE TR.landing BETWEEN date_tomorrow AND date_end AND IF(wh = 0, W.is_comparative, wh =TR.warehouse_id) AND E.Inventario = 0 @@ -27772,7 +27025,7 @@ BEGIN ALTER TABLE article_inventory ADD visible FLOAT(7,2) NOT NULL; - -- Campaña + SELECT IF(@camp := DATEDIFF(campaign, date_ticket) BETWEEN 0 AND campaign_life , @@ -27841,7 +27094,7 @@ proc: BEGIN DECLARE i_avalaible INTEGER; DECLARE wh INTEGER; - SET date_ticket = DATE(date_ticket); -- PAK + SET date_ticket = DATE(date_ticket); ALTER TABLE `article_inventory` ADD `avalaible` INT NOT NULL, @@ -27863,7 +27116,7 @@ proc: BEGIN SET date_tomorrow = TIMESTAMPADD(DAY, 1,date_ticket); SET date_top = TIMESTAMPADD(DAY, 1,date_end); - -- Calculo del inventario dia D a las 24:00 zulu + UPDATE article_inventory AI INNER JOIN @@ -27878,7 +27131,7 @@ proc: BEGIN FROM Movimientos M JOIN Tickets T USING (Id_Ticket) - JOIN warehouse_joined wj ON T.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + JOIN warehouse_joined wj ON T.warehouse_id = wj.warehouse_id WHERE DATE(Fecha) BETWEEN date_start AND date_ticket AND wh_joined IN (wj.warehouse_alias_id, 0) UNION ALL @@ -27888,7 +27141,7 @@ proc: BEGIN FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) LEFT JOIN travel TR ON E.travel_id = TR.id - JOIN warehouse_joined wj ON TR.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + JOIN warehouse_joined wj ON TR.warehouse_id = wj.warehouse_id WHERE TR.landing BETWEEN date_start AND date_ticket AND wh_joined IN (wj.warehouse_alias_id, 0) @@ -27902,7 +27155,7 @@ proc: BEGIN JOIN Entradas E USING (Id_Entrada) JOIN travel TR ON E.travel_id = TR.id - JOIN warehouse_joined wj ON TR.warehouse_id_out = wj.warehouse_id -- JGF 15/12/14 + JOIN warehouse_joined wj ON TR.warehouse_id_out = wj.warehouse_id WHERE TR.shipment BETWEEN date_start AND date_ticket AND wh_joined IN (wj.warehouse_alias_id,0) AND E.Inventario = 0 @@ -27925,7 +27178,7 @@ proc: BEGIN SELECT avalaible INTO i_avalaible FROM article_inventory WHERE article_id = 21012; - -- Calculo del visible + UPDATE article_inventory AI INNER JOIN ( @@ -27935,8 +27188,8 @@ proc: BEGIN FROM Movimientos M JOIN Tickets T USING (Id_Ticket) - JOIN warehouse_joined wj ON T.warehouse_id = wj.warehouse_id -- JGF 15/12/14 - WHERE Fecha >= date_ticket AND Fecha < date_tomorrow -- PAK + JOIN warehouse_joined wj ON T.warehouse_id = wj.warehouse_id + WHERE Fecha >= date_ticket AND Fecha < date_tomorrow AND (M.OK = 0 AND T.Etiquetasemitidas = 0 AND T.Factura IS NULL) AND wh_joined IN (wj.warehouse_alias_id, 0) UNION ALL @@ -27946,7 +27199,7 @@ proc: BEGIN JOIN Entradas E USING (Id_Entrada) JOIN travel TR ON E.travel_id = TR.id - JOIN warehouse_joined wj ON TR.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + JOIN warehouse_joined wj ON TR.warehouse_id = wj.warehouse_id WHERE TR.landing = date_ticket AND TR.received = 0 @@ -27959,7 +27212,7 @@ proc: BEGIN SELECT Id_Article, Cantidad FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) LEFT JOIN travel TR ON E.travel_id = TR.id - JOIN warehouse_joined wj ON TR.warehouse_id_out = wj.warehouse_id -- JGF 15/12/14 + JOIN warehouse_joined wj ON TR.warehouse_id_out = wj.warehouse_id WHERE TR.shipment = date_ticket AND TR.delivered = 0 AND E.Inventario = 0 @@ -27975,7 +27228,7 @@ proc: BEGIN SET AI.visible = AI.visible + T2.Subtotal; - -- Calculo del disponible + SELECT IF(COUNT(warehouse_id),0,warehouse_id) INTO wh FROM warehouse_joined WHERE warehouse_alias_id = wh_joined; CALL item_travel (wh, date_ticket); @@ -27992,7 +27245,7 @@ proc: BEGIN JOIN Tickets T USING (Id_Ticket) - JOIN warehouse_joined wj ON T.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + JOIN warehouse_joined wj ON T.warehouse_id = wj.warehouse_id WHERE Fecha BETWEEN date_tomorrow AND date_end AND wh_joined IN (wj.warehouse_alias_id, 0) @@ -28003,7 +27256,7 @@ proc: BEGIN JOIN Entradas E USING (Id_Entrada) JOIN travel TR ON E.travel_id = TR.id - JOIN warehouse_joined wj ON TR.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + JOIN warehouse_joined wj ON TR.warehouse_id = wj.warehouse_id WHERE TR.landing BETWEEN date_tomorrow AND date_end AND wh_joined IN (wj.warehouse_alias_id, 0) @@ -28015,7 +27268,7 @@ proc: BEGIN JOIN Entradas E USING (Id_Entrada) JOIN travel TR ON E.travel_id = TR.id - JOIN warehouse_joined wj ON TR.warehouse_id_out = wj.warehouse_id -- JGF 15/12/14 + JOIN warehouse_joined wj ON TR.warehouse_id_out = wj.warehouse_id WHERE TR.shipment BETWEEN date_tomorrow AND date_end AND wh_joined IN (wj.warehouse_alias_id,0) AND E.Inventario = 0 @@ -28087,13 +27340,13 @@ BEGIN SET date_end = TIMESTAMP(TIMESTAMPADD(DAY, -1, date_ticket),'23:59:59'); - -- Utilizo el valor clave 4848 para days_max para aprovechar el procedimiento para el frmCamiones de eti + IF days_max = 4848 THEN set date_ticket = date_end; END IF; - -- Calculo del inventario dia D a las 24:00 + UPDATE article_inventory AI INNER JOIN ( @@ -28442,7 +27695,7 @@ END IF; AND A.tipo_id NOT IN (21,7) ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + (C.Cantidad * IF(bolREVERSE,-1,1)); --- SELECT * FROM inv WHERE Id_Article = 10067; + INSERT INTO inv(w_id, Id_Article, cantidad) SELECT TR.warehouse_id_out, C.Id_Article, C.Cantidad * IF(bolREVERSE,1,-1) @@ -28461,7 +27714,7 @@ END IF; --- SELECT * FROM inv WHERE Id_Article = 10067; + INSERT INTO inv(w_id, Id_Article, cantidad) SELECT w.id, M.Id_Article, M.Cantidad * IF(bolREVERSE,1,-1) @@ -28477,7 +27730,7 @@ END IF; AND A.tipo_id NOT IN (21,7) ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + M.Cantidad * IF(bolREVERSE,1,-1); --- SELECT * FROM inv WHERE Id_Article = 10067; + INSERT INTO inv(w_id, Id_Article, cantidad) SELECT w.id, M.Id_Article, M.Cantidad * IF(bolREVERSE,0,-1) @@ -28495,7 +27748,7 @@ END IF; AND A.tipo_id NOT IN (21,7) ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + M.Cantidad * IF(bolREVERSE,0,-1); --- SELECT * FROM inv WHERE Id_Article = 10067; + UPDATE inv JOIN ( SELECT * FROM @@ -28533,7 +27786,7 @@ WHERE inv.cantidad > 0; DELETE FROM inv WHERE Cantidad IS NULL or Cantidad <= 0 or total = 0; --- Incrementamos las cantidades para alcanzar el valor fijado al inicio + SELECT SUM(total) INTO inv_value FROM inv; UPDATE inv SET cantidad = ROUND(cantidad * inv_value_new / inv_value ,0); @@ -28549,7 +27802,7 @@ SELECT inv.*, Article, Medida, Id_Tipo,reino_id FROM inv JOIN Articles USING(Id_Article) JOIN Tipos TP USING(tipo_id) -where w_id IN (1,44, 5) -- JGF 2015-06-08 afegeix 41 a peticio de MAV +where w_id IN (1,44, 5) and total > 0 order by total desc; @@ -28583,9 +27836,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `inventory_refresh`() BEGIN -/** - * Recalcula los inventarios de todos los almacenes. - */ + INSERT INTO daily_task_log SET consulta = 'inventory_refresh-begin'; @@ -28681,13 +27932,13 @@ BEGIN AND Factura IS NULL ; END IF; --- Elimina tickets sense moviments + UPDATE Tickets INNER JOIN (SELECT COUNT(Movimientos.Id_Movimiento) AS num, ticket_invoice.ticket_id AS ticket_id FROM ticket_invoice LEFT JOIN Movimientos ON ticket_invoice.ticket_id = Movimientos.Id_Ticket GROUP BY ticket_invoice.ticket_id HAVING num = 0) counter ON Tickets.Id_Ticket = counter.ticket_id SET Tickets.Fecha = '1999-01-01 00:00:00'; - -- Eliminem els tickets que no han de ser facturats + DELETE ticket_invoice.* FROM ticket_invoice INNER JOIN Tickets ON ticket_invoice.ticket_id = Tickets.Id_Ticket INNER JOIN Clientes ON Tickets.Id_Cliente = Clientes.Id_cliente WHERE YEAR(Tickets.Fecha) < 2001 AND invoice; @@ -28750,7 +28001,7 @@ BEGIN SELECT Vencimiento INTO day_vec FROM Clientes WHERE Id_cliente = customer_id; SET date_vec = TIMESTAMPADD(DAY, day_vec, date_vec); - -- el trigger añade el siguiente Id_Factura correspondiente a la serie + INSERT INTO Facturas ( Id_Factura, @@ -28804,7 +28055,7 @@ BEGIN SELECT * FROM tmp.updateInter; INSERT INTO Tickets_dits (idaccion_dits,Id_Trabajador,Id_Ticket,value_old,value_new) - SELECT 111/*Factura serie*/ ,Id_Trabajador,ti.ticket_id,NULL,serie FROM ticket_invoice ti; + SELECT 111 ,Id_Trabajador,ti.ticket_id,NULL,serie FROM ticket_invoice ti; END IF; DROP TEMPORARY TABLE `iva_base`; @@ -28828,9 +28079,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `itemTagArrangedUpdate`(IN vItem BIGINT) BEGIN -/** - * DEPRECATED - **/ + CALL vn.itemTagArrangedUpdate(vItem); END ;; @@ -28872,9 +28121,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `itemTagUpdatePriority`(IN vItem INT) BEGIN -/* -* DEPRECATED -*/ + CALL vn.itemTagUpdatePriority(vItem); @@ -28896,7 +28143,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `item_buffer_tarifa_traveltreekk`(v_date DATE, v_consigna INT, v_agencia INT, i_order INT, v_wh SMALLINT) BEGIN - -- v_date fecha de recepcion de mercancia + DECLARE done TINYINT DEFAULT 0; DECLARE v_shipment DATE; @@ -28908,11 +28155,11 @@ BEGIN DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; - -- establecemos los almacenes y las fechas que van a entrar al dispo_multi + SELECT agency_id INTO v_agency_id FROM Agencias WHERE Id_Agencia = v_agencia; - -- Si pasamos un almacen significa que estamos recalculando el dispo y el precio para un ticket existente + IF v_wh = 0 THEN @@ -28931,7 +28178,7 @@ BEGIN SELECT v_wh, v_date, v_date; END IF; - -- Ejecutamos item_buffer_tarifa para cada registro del cursos, y almacenaremos los valores acumulados, para el buffer y para los componentes + OPEN cur1; FETCH cur1 INTO v_wh, v_shipment; @@ -28968,7 +28215,7 @@ BEGIN DO CALL item_buffer_tarifa(v_wh, v_shipment, v_consigna, FALSE, v_agencia); - -- eliminaremos PCA de Silla FV y viceversa + INSERT INTO buffer_multi(warehouse_id, Id_Article, visible, available, future, buy_inc, buy_last, buy_id, `fixed`, rate_0, rate_1, rate_2, rate_3, Packing, Grouping, Productor, caja, Origen, mark, `comment`, foto, Id_Tipo, Article) SELECT v_wh, id, visible, available, future, buy_inc, buy_last, buy_id, `fixed`, rate_0, rate_1, rate_2, rate_3, Packing, Grouping, Productor, bb.caja, Origen, mark, `comment`, A.Foto, A.tipo_id, A.Article @@ -29032,7 +28279,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `item_buffer_tarifa_traveltree_dupkk`( - v_date DATE, -- fecha de recepcion de mercancia + v_date DATE, v_consigna INT, v_agencia INT, i_order INT, @@ -29048,11 +28295,11 @@ BEGIN CALL cache.order_clean (i_order); - -- Establecemos los almacenes y las fechas que van a entrar al dispo_multi + SELECT agency_id INTO v_agency_id FROM Agencias WHERE Id_Agencia = v_agencia; - -- Si pasamos un almacen significa que estamos recalculando el dispo y el precio para un ticket existente + DROP TEMPORARY TABLE IF EXISTS travel_tree; @@ -29066,7 +28313,7 @@ BEGIN SELECT v_wh warehouse_id, v_date Fecha_envio; END IF; - -- Ejecutamos item_buffer_tarifa para cada registro del cursos, y almacenaremos los valores acumulados, para el buffer y para los componentes + OPEN cur; FETCH cur INTO v_wh, v_shipment; @@ -29075,7 +28322,7 @@ BEGIN DO CALL item_buffer_tarifa_dup (v_wh, v_shipment, v_consigna, FALSE, v_agencia); - -- Eliminaremos PCA de Silla FV y viceversa + INSERT INTO cache.order_stock ( order_id, warehouse_id, Id_Article, visible, available, future, buy_inc, buy_last, buy_id, `fixed`, rate_0, rate_1, rate_2, rate_3, Packing, Grouping, Productor, caja, Origen, mark, `comment`, foto, Id_Tipo, Article @@ -29192,7 +28439,7 @@ BEGIN ADD discount INT; - -- Lo primero, el precio normal, la ultima entrada para ese almacen + UPDATE item i JOIN Compres b ON i.buy_id = b.Id_Compra @@ -29207,7 +28454,7 @@ BEGIN END, i.discount = IF(c.Descuento BETWEEN 4 AND 100, c.Descuento, 0); - -- Precios fijados + UPDATE item i INNER JOIN Clientes c ON c.Id_cliente = v_customer @@ -29223,7 +28470,7 @@ BEGIN WHERE fp.warehouse_id IN (0,v_wh) AND date_ BETWEEN fp.date_start AND fp.date_end; - -- Precios especiales + UPDATE item i JOIN Clientes c ON c.Id_cliente = v_customer @@ -29231,14 +28478,14 @@ BEGIN SET i.price = p.PrecioEspecial, i.discount = 0; - -- Precio mínimo + UPDATE item i JOIN Articles a ON a.Id_Article = i.id JOIN Clientes c ON c.Id_cliente = v_customer SET i.price = IF(a.`Min` AND i.price < a.PVP, a.PVP,i.price); --- pak 14/9/14 provisional + END ;; DELIMITER ; @@ -29341,8 +28588,8 @@ BEGIN LEFT JOIN PreciosEspeciales p ON p.Id_Cliente = v_customer AND b.item_id = p.Id_Article WHERE b.available > 0 AND b.cache_id = v_cache; - -- ON be.compra_id = co.compra_id - -- Cliente Te gustan las flores + + IF NOT v_customer = 3064 THEN @@ -29390,7 +28637,7 @@ BEGIN INSERT INTO wh_father(wh) VALUES(v_wh); INSERT INTO wh_son(wh) VALUES(v_wh); - -- Sols es crea la variable @wh_son quan es crida desde traslado JGF 2015-01-30 + IF @wh_son THEN INSERT INTO wh_son(wh) VALUES(@wh_son); END IF; @@ -29424,12 +28671,12 @@ BEGIN DECLARE v_camp DATETIME; DECLARE b_fprice TINYINT; - -- selecciona tots els fills del @v_wh(actual) + DECLARE cur1 CURSOR FOR SELECT son FROM warehouse_tree_bidi WHERE father = v_wh AND son NOT IN (SELECT DISTINCT wh FROM wh_son); - -- selecciona tots els pares del v_wh(actual) + DECLARE cur2 CURSOR FOR SELECT father FROM warehouse_tree_bidi WHERE son = v_wh AND father NOT IN (SELECT DISTINCT wh FROM wh_father); @@ -29438,7 +28685,7 @@ BEGIN SELECT FechaInventario, TIMESTAMPADD(DAY, -campaign_life, campaign) INTO v_inv, v_camp FROM tblContadores LIMIT 1; - -- Crea una tabla amb el @v_wh + CALL hedera.sql_query (sql_printf('DROP TEMPORARY TABLE IF EXISTS %t;',v_wh)); CALL hedera.sql_query (sql_printf('create temporary table %t ( @@ -29446,16 +28693,16 @@ SELECT FechaInventario, TIMESTAMPADD(DAY, -campaign_life, campaign) amount DOUBLE(8,2) )ENGINE = MEMORY;' ,v_wh)); - -- Si es campanya fa el calcul del disponible senzill + IF v_camp >= v_date_cur AND v_camp <= v_date THEN SET v_date_cur = v_camp; ELSE OPEN cur1; FETCH cur1 INTO wh_cursor; - -- mentre queden fills.. + WHILE !done DO - -- calcula la data per a la cual calcular el disponible del fill + SELECT MIN(landing) INTO v_shipment_aux FROM travel t WHERE t.warehouse_id_out = v_wh @@ -29464,12 +28711,12 @@ SELECT FechaInventario, TIMESTAMPADD(DAY, -campaign_life, campaign) AND NOT t.delivered AND t.landing >= t.shipment; - -- afegeix en la taula wh_son el v_wh no tornar-lo a calcular + INSERT INTO wh_son(wh) VALUES (v_wh); - -- calcula del disponible del fill + CALL item_disp_virt1 (wh_cursor, v_shipment_aux, -1, id_single, v_cache); - -- Li resta al @v_wh els negatius dels fills + CALL hedera.sql_query (sql_printf ( 'INSERT INTO %t (article_id,amount) SELECT item_id ,available FROM vn2008.tmp_item WHERE available < 0 @@ -29484,43 +28731,43 @@ SELECT FechaInventario, TIMESTAMPADD(DAY, -campaign_life, campaign) SET v_shipment_aux = NULL; - -- si direccion < 0 sols mira fills, - -- si direccion > 0 mira pare i fills - -- si direccion = 0 mira pare i fills, a més es el cas base + + + IF direccion >= 0 THEN SET done = 0; OPEN cur2; FETCH cur2 INTO wh_cursor; - -- mentre queden pares.. + WHILE !done DO - -- calcula la data per a la cual calcular el disponible del pare + SELECT MAX(shipment) INTO v_shipment_aux FROM travel t WHERE t.warehouse_id_out = wh_cursor AND t.warehouse_id = v_wh AND t.delivered = 0 AND t.shipment >= CURDATE() AND t.landing <= v_date; - -- afegeix en la taula wh_son i wh_father el v_wh no tornar-lo a calcular + INSERT INTO wh_son(wh) VALUES (v_wh); INSERT INTO wh_father(wh) VALUES (v_wh); IF v_shipment_aux IS NOT NULL THEN - -- calcula el disponible per al pare + CALL item_disp_virt1(wh_cursor,v_shipment_aux,1, id_single, v_cache); - -- li suma al v_wh el disponible positiu del pare + CALL hedera.sql_query (sql_printf('INSERT INTO %t (article_id,amount) SELECT item_id ,available FROM vn2008.tmp_item WHERE available > 0 ON DUPLICATE KEY UPDATE amount = amount + VALUES(amount);',v_wh)); ELSE - -- travels provinents del pare després de FechaTicket + SELECT MIN(shipment) INTO v_shipment_aux FROM travel t WHERE t.warehouse_id_out = wh_cursor AND t.warehouse_id = v_wh AND t.delivered = 0 - AND t.shipment >= CURDATE() -- avans AND t.shipment > CURDATE() - AND t.landing >= v_date; -- avans AND t.landing >= v_date; 23/09/11 + AND t.shipment >= CURDATE() + AND t.landing >= v_date; CALL item_disp_virt1(wh_cursor,v_shipment_aux,2, id_single, v_cache); END IF; FETCH cur2 INTO wh_cursor; @@ -29530,17 +28777,17 @@ SELECT FechaInventario, TIMESTAMPADD(DAY, -campaign_life, campaign) END IF; END IF; - -- calcula el stock, que es igual al visible + CALL item_stock (v_wh, v_date,NULL); CALL item_stock_avail (v_wh, v_date,NULL,direccion); - -- Li afegeix al disponible simple del v_wh el virtual + CALL hedera.sql_query (sql_printf('INSERT INTO vn2008.tmp_item ( item_id, available) SELECT article_id, amount FROM %t ON DUPLICATE KEY UPDATE available = available + VALUES(available);',v_wh)); - -- si es el cas base + IF !direccion THEN IF v_date = curdate() THEN CALL item_stock_visible (v_wh,NULL); @@ -29636,7 +28883,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `item_last_buy_`(v_wh SMALLINT, v_date DATE) BEGIN - -- Ultima compra hasta hoy + CALL cache.last_buy_refresh (FALSE); @@ -29650,10 +28897,10 @@ BEGIN WHERE v_wh = warehouse_id OR v_wh IS NULL; - -- Ultima compra hasta @v_date + - -- CALL item_last_buy_from_interval (v_wh, CURDATE(), TIMESTAMPADD(DAY, 1, v_date)); JGF 2016-06-08 fallo: cogia un dia mas de lo solicitado + CALL item_last_buy_from_interval (v_wh, CURDATE(), v_date); REPLACE INTO t_item_last_buy @@ -29681,15 +28928,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `item_last_buy_from_interval`(v_wh SMALLINT, v_date_ini DATE, v_date_end DATE) BEGIN -/** - * Obtiene la ultima compra a partir de un intervalo - * de fechas dado. - * - * @param v_wh Id de almacen %NULL para todos los almacenes - * @param v_date_ini Fecha inicial - * @param v_date_end Fecha final - * @table tmp.item_last_buy_from_interval - **/ + @@ -29698,10 +28937,7 @@ BEGIN SET v_date_end = v_date_ini; END IF; - /* IF v_date_end < v_date_ini THEN - SET v_date_ini = TIMESTAMPADD(MONTH,-1,v_date_end); - END IF; -*/ + DROP TEMPORARY TABLE IF EXISTS tmp.item_last_buy_from_interval; CREATE TEMPORARY TABLE tmp.item_last_buy_from_interval ENGINE = MEMORY @@ -29756,9 +28992,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `item_stock`(v_wh SMALLINT, v_date DATETIME, v_item INT) BEGIN -/** - * Calcula el stock del v_wh desde FechaInventario hasta v_date - **/ + DECLARE n TINYINT; DECLARE v_diff TIME; @@ -29825,21 +29059,21 @@ BEGIN DECLARE query TEXT; DECLARE _son,_self TEXT; DECLARE _auxshipment, _auxlanding,fut DATE; - -- Selecciona tots els travels cap als fill ens els próxims 15 dies + DECLARE cur1 CURSOR FOR SELECT shipment,landing FROM travel WHERE warehouse_id_out = v_wh AND shipment BETWEEN TIMESTAMPADD(day,1,v_date) AND TIMESTAMPADD(day,15,v_date) AND warehouse_id = (SELECT son FROM warehouse_tree_bidi WHERE father = v_wh LIMIT 1) ORDER BY shipment; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; - -- selecciona els primers travels que arrivaran després de la v_date de cada warehouse + CALL item_travel (v_wh, v_date); SET expr = sql_printf ('dat BETWEEN DATE(%v) AND DATE(%v)' ,TIMESTAMP(v_date, '00:00:00') ,TIMESTAMP(TIMESTAMPADD(DAY, 15, v_date), '23:59:59') - /*,v_wh*/ + ); @@ -29857,7 +29091,7 @@ BEGIN SET expr2 = ''; SET _self = CONCAT(v_wh, 'virtual'); - -- crea una taula amb el nom del warehousevirtual + CALL hedera.sql_query (sql_printf('CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.%t ( item_id INT(11), @@ -29866,7 +29100,7 @@ BEGIN PRIMARY KEY(item_id,dat) ) ENGINE = MEMORY;',_self)); - -- si esta mirant els pares li añadeix el virtual que pot arrivar a conseguir + IF direccion >= 0 THEN SET expr2 = sql_printf (' UNION ALL SELECT item_id, dat, amount @@ -29878,8 +29112,8 @@ BEGIN ALTER TABLE tmp_item ADD future DATE; - /*jgf afegeix AND Reservado != 0 */ - -- calcula el mínim disponible fins a la próxima arrivada de mercancia + + SET query = sql_printf ( 'INSERT INTO tmp_item (item_id,available, future) SELECT item_id, SUM(amount) AS available,landing as future FROM ( @@ -29908,13 +29142,13 @@ SET query = sql_printf ( available = IFNULL(available,0) + VALUES(available)' , DATE(v_date) + 0, expr1, expr1, expr1, expr2 ); - -- JGF 22/10/14 - WHERE IFNULL(dt <= w.landing OR Id_Article > 170000, TRUE) - -- JGF 2015-03-31 ANTES WHERE IFNULL(dt <= w.landing OR Id_Article > 170000, TRUE) + + CALL sql_query (query); - -- si el v_wh es pare + IF (direccion > 0) THEN - -- crea una taula TEMPORAL per al fill + SELECT CONCAT(son,'virtual') A INTO _son FROM warehouse_tree_bidi WHERE father = v_wh LIMIT 1; CALL hedera.sql_query (sql_printf('CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.%t ( @@ -29926,7 +29160,7 @@ SET query = sql_printf ( ENGINE = MEMORY;',_son)); IF (direccion >= 2) THEN CALL sql_query (query); - SET query = sql_printf ( -- REPLACE en lugar de INSERT INTO PAK 20/11/14 + SET query = sql_printf ( 'REPLACE vn2008.%t (item_id,dat,amount) SELECT item_id,landing,available FROM tmp_item,travel WHERE shipment = DATE(%v) AND warehouse_id_out = %v AND available > 0 @@ -29956,7 +29190,7 @@ SET query = sql_printf ( ,expr4 ,v_wh ); - -- afegir entrades menys eixides desde l'ultim dia.. + SET query = sql_printf ( 'INSERT INTO vn2008.%t (item_id,dat,amount) SELECT item_id, %v, SUM(amount) AS available FROM ( @@ -29985,7 +29219,7 @@ SET query = sql_printf ( ON DUPLICATE KEY UPDATE amount = IFNULL(amount,0) + VALUES(amount) ',_son,DATE(_auxlanding)+0,DATE(_auxshipment)+0,expr5, expr5, expr5,_self,expr4); - -- JGF 07/07/14 - WHERE IFNULL(dt < w.landing , TRUE) + CALL sql_query (query); FETCH cur1 INTO _auxshipment,_auxlanding; END WHILE; @@ -30017,7 +29251,7 @@ BEGIN DECLARE _son,_self TEXT; DECLARE _auxshipment, _auxlanding,fut DATE; - -- Selecciona tots els viajes cap als fill ens els próxims 15 dies + DECLARE cur1 CURSOR FOR SELECT shipment,landing FROM travel @@ -30029,7 +29263,7 @@ BEGIN DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; - -- Selecciona els primers viajes que arrivaran després de la v_date de cada almacen + CALL item_travel (v_wh, v_date); @@ -30053,7 +29287,7 @@ BEGIN SET expr2 = ''; SET _self = CONCAT(v_wh, 'virtual'); - -- Crea una taula amb el nom del almacen virtual + CALL hedera.sql_query (sql_printf('CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.%t ( @@ -30064,7 +29298,7 @@ BEGIN ) ENGINE = MEMORY',_self)); - -- Si esta mirant els pares li añadeix el virtual que pot arrivar a conseguir + IF direccion >= 0 THEN @@ -30078,7 +29312,7 @@ BEGIN ALTER TABLE tmp_item ADD future DATE; - -- Calcula el mínim disponible fins a la próxima arrivada de mercancia + SET query = sql_printf ( 'INSERT INTO tmp_item (item_id, available, future) @@ -30114,11 +29348,11 @@ BEGIN ); CALL sql_query (query); - -- Si es el almacen padre + IF (direccion > 0) THEN - -- Crea una tabla temporar pare el hijo + SELECT CONCAT(son,'virtual') A INTO _son FROM warehouse_tree_bidi WHERE father = v_wh LIMIT 1; CALL hedera.sql_query (sql_printf( @@ -30173,7 +29407,7 @@ BEGIN ,v_wh ); - -- Afegir entrades menys eixides desde l'ultim dia + CALL sql_query (sql_printf ( 'INSERT INTO vn2008.%t (item_id,dat,amount) @@ -30248,9 +29482,7 @@ BEGIN AND (alertLevel > 1 OR ok != FALSE - /* AND (((ok != FALSE OR ready != FALSE OR invoice IS NOT NULL) - AND dat < v_tomorrow) - */ + OR Reservado != FALSE ) UNION ALL SELECT item_id, amount FROM item_entry_in @@ -30295,67 +29527,58 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS travel_top; DROP TEMPORARY TABLE IF EXISTS item_travel; - -- Crea una taula buida travel_top + CREATE TEMPORARY TABLE travel_top - (PRIMARY KEY (wh_in,wh_out,landing,shipment)) -- 28/1/15 JGF & PAK cuelgue dia 26 + (PRIMARY KEY (wh_in,wh_out,landing,shipment)) ENGINE = MEMORY SELECT 0 id, v_wh wh_in, v_wh wh_out, FALSE ok, v_date landing, v_date shipment; REPEAT SET v_travel = NULL; - -- Va seleccionant registres un a un + SELECT id, wh_out, shipment, landing INTO v_travel, v_wh_out, v_shipment, v_date_start FROM travel_top WHERE ok = FALSE LIMIT 1; - -- Marca el registre per a saber que esta revistat + UPDATE travel_top SET ok = TRUE WHERE id = v_travel; - -- Concatena travels + INSERT IGNORE INTO travel_top SELECT id, v_wh, warehouse_id_out, FALSE, IF(v_travel, v_date_start, landing), shipment FROM travel WHERE warehouse_id = v_wh_out - -- Canvia Javi 08/04/13 error que pasaba a les 06:00 del mati - -- AND IF(v_travel, landing <= v_shipment, landing > v_shipment) + + AND IF(v_travel, landing <= v_shipment, landing >= v_shipment) AND shipment >= CURDATE() AND delivered = FALSE; UNTIL v_travel IS NULL - END REPEAT;/* - select max_count; - SELECT * FROM travel_top;*/ + END REPEAT; DELETE FROM travel_top WHERE id = 0; -/* - SELECT TIMESTAMPADD(DAY, -campaign_life, campaign), campaign - INTO v_date_start, v_campaign FROM tblContadores;*/ - -- Agafa el travel que arriva primer per a cada warehouse + + CREATE TEMPORARY TABLE item_travel (KEY (wh)) ENGINE = MEMORY SELECT * FROM ( - SELECT wh_out wh,/* IF( - v_date BETWEEN v_date_start AND v_campaign - AND landing BETWEEN v_date_start AND v_campaign - ,TIMESTAMPADD(DAY, 1, v_campaign) - ,landing - ) */ landing + SELECT wh_out wh, landing FROM travel_top WHERE wh_out <> v_wh ORDER BY landing ) t GROUP BY wh; --- SELECT * FROM item_travel; + DROP TEMPORARY TABLE travel_top; END ;; DELIMITER ; @@ -30399,7 +29622,7 @@ BEGIN LIMIT 1; INSERT INTO travel_top - SELECT t.id, warehouse_id_out, shipment/*, FALSE*/ + SELECT t.id, warehouse_id_out, shipment FROM travel t WHERE warehouse_id = v_wh_out AND landing <= v_shipment @@ -30456,7 +29679,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS travel_top; DROP TEMPORARY TABLE IF EXISTS item_travel; - -- Crea una taula buida travel_top + CREATE TEMPORARY TABLE travel_top (PRIMARY KEY (id)) @@ -30466,17 +29689,17 @@ BEGIN REPEAT SET v_travel = NULL; - -- Va seleccionant registres un a un + SELECT id, wh_out, shipment, landing INTO v_travel, v_wh_out, v_shipment, v_date_start FROM travel_top WHERE ok = FALSE LIMIT 1; - -- Marca el registre per a saber que esta revistat + UPDATE travel_top SET ok = TRUE WHERE id = v_travel; - -- Concatena travels cap al pasat + INSERT IGNORE INTO travel_top SELECT id, v_wh, warehouse_id_out, FALSE, IF(v_travel, v_date_start, landing), shipment @@ -30494,7 +29717,7 @@ BEGIN SELECT TIMESTAMPADD(DAY, -campaign_life, campaign), campaign INTO v_date_start, v_campaign FROM tblContadores; - -- Agafa el travel que arriva primer per a cada warehouse + CREATE TEMPORARY TABLE item_travel (KEY (wh)) @@ -30543,14 +29766,14 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS travel_top; DROP TEMPORARY TABLE IF EXISTS item_travel; - -- Crea una taula buida travel_top + drop temporary table if exists travels_list; create temporary table travels_list (id integer, shipment date, landing date, warehouse_id int, warehouse_id_out int); CREATE TEMPORARY TABLE travel_top - -- (PRIMARY KEY (wh_in,wh_out,landing,shipment) ) + ENGINE = MEMORY SELECT 0 RODA, 0 ORDRE, 0 son_id, 0 id, v_wh wh_in, v_wh wh_out, FALSE ok, v_date landing, v_date shipment; @@ -30560,18 +29783,18 @@ BEGIN SET v_travel = -1; - -- Va seleccionant registres un a un + SELECT id, wh_out, shipment, landing INTO v_travel, v_wh_out, v_shipment, v_date_start FROM travel_top WHERE ok = FALSE LIMIT 1; - -- Marca el registre per a saber que esta revistat + UPDATE travel_top SET ok = TRUE WHERE id = v_travel; - -- Concatena travels + SET @ordre := 0; INSERT INTO travel_top @@ -30600,27 +29823,18 @@ UNTIL v_travel = -1 END REPEAT; - /* - select max_count; - SELECT * FROM travel_top;*/ + - /*DELETE FROM travel_top WHERE id = 0;*/ -/* - SELECT TIMESTAMPADD(DAY, -campaign_life, campaign), campaign - INTO v_date_start, v_campaign FROM tblContadores;*/ + - -- Agafa el travel que arriva primer per a cada warehouse + + CREATE TEMPORARY TABLE item_travel (KEY (wh)) ENGINE = MEMORY SELECT * FROM ( - SELECT wh_out wh,/* IF( - v_date BETWEEN v_date_start AND v_campaign - AND landing BETWEEN v_date_start AND v_campaign - ,TIMESTAMPADD(DAY, 1, v_campaign) - ,landing - ) */ landing + SELECT wh_out wh, landing FROM travel_top WHERE wh_out <> v_wh ORDER BY landing @@ -30741,7 +29955,7 @@ BEGIN DECLARE idT INT; -IF ASCII(str) between 48 and 57 THEN -- el chr(48) es el 0 y el chr(57) es el 9. De ese modo se comprueba si es un numero o un carácter de texto +IF ASCII(str) between 48 and 57 THEN SET idT = cast(str as signed); @@ -30783,7 +29997,7 @@ SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL SELECT c.Id_Cliente, Cliente, r.FechaCobro, r.odbc_date, NULL, 'cobro', NULL, NULL, - Entregado FROM Recibos r JOIN Clientes c using(Id_Cliente) - WHERE Id_Banco = 66 -- Caja de maná + WHERE Id_Banco = 66 AND c.Id_Trabajador = idT UNION ALL @@ -30795,7 +30009,7 @@ SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL SELECT c.Id_Cliente, Cliente, g.Fecha, g.odbc_date, NULL, Comentario, NULL, NULL, g.Importe FROM Greuges g JOIN Clientes c using(Id_Cliente) - WHERE Greuges_type_id = 3 -- Maná + WHERE Greuges_type_id = 3 AND c.Id_Trabajador = idT ) t1 ORDER BY FechaAccion DESC; @@ -30842,7 +30056,7 @@ LEFT JOIN JOIN Clientes c on c.Id_Cliente = cs.Id_Cliente JOIN Movimientos m using(Id_Ticket) JOIN Movimientos_componentes mc using(Id_Movimiento) - WHERE Id_Componente IN (39, 37) -- maná auto y maná + WHERE Id_Componente IN (39, 37) AND Fecha > MyFechaDesde UNION ALL @@ -30858,7 +30072,7 @@ LEFT JOIN SELECT c.Id_Trabajador, g.Importe FROM Greuges g JOIN Clientes c using(Id_Cliente) - WHERE Greuges_type_id = 3 -- Maná + WHERE Greuges_type_id = 3 AND Fecha > MyFechaDesde UNION ALL @@ -30896,15 +30110,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `massiveTicket`( IN dateFrom DATE, IN dateTo DATE, IN customerId INT, OUT newTicketId INT) BEGIN -/** - * Genera un nuevo ticket con los movimientos correspondientes a los parámetros - * - * @param dateFrom Fecha mínima para los tickets - * @param dateTo Fecha máxima para los tickets - * @param customerId Cliente - * - * @return newTicketId Nuevo numero de ticket - **/ + DECLARE inventoryWarehouse INT DEFAULT 13; DECLARE defaultCompany INT DEFAULT 442; @@ -30959,9 +30165,9 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `mensaje`(IN idREM INT, IN idDES INT, IN strMSG LONGTEXT) BEGIN -/*DECLARE lngLASTID BIGINT;*/ --- Caso sencillo + + INSERT INTO Mensajes(Mensaje, Fecha, Remitente, Destinatario) VALUES(strMSG, NOW(), idREM, idDES); @@ -31008,25 +30214,7 @@ SELECT DISTINCT Fecha FROM Tickets WHERE Fecha >= datFEC WHERE Id_Grupo = 6 GROUP BY Id_Trabajador, Fecha, Hora; -/* -SELECT Id_Trabajador, SUM(dur_in) dur_in, SUM(dur_out) dur_out, llamadas.Fecha,YEAR(llamadas.Fecha) `year`, -MONTH(llamadas.Fecha) `month`,WEEK(llamadas.Fecha,7) `week`, Hora, SUM(Recibidas) as Entrantes, SUM(Emitidas) as Salientes -FROM -( -SELECT Id_Trabajador, billsec dur_in, NULL dur_out, 1 as Recibidas, NULL as Emitidas, date(calldate) as Fecha, hour(calldate) as Hora -FROM Trabajadores T -INNER JOIN cdr C ON C.dstchannel LIKE CONCAT('%', T.extension, '%') -WHERE calldate >= CURDATE() -UNION ALL -SELECT Id_Trabajador,NULL dur_in, billsec dur_out, NULL as Recibidas, 1 as Emitidas, date(calldate), hour(calldate) -FROM Trabajadores T -INNER JOIN cdr C ON C.src = T.extension -WHERE calldate >= CURDATE() -) llamadas -INNER JOIN Permisos USING(Id_Trabajador) -WHERE Id_Grupo = 6 -GROUP BY Id_Trabajador, Fecha, Hora; -*/ + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -31090,7 +30278,7 @@ BEGIN JOIN Movimientos m using(Id_Ticket) WHERE Id_Movimiento = idMOV; - -- Busca un ticket existente que coincida con los parametros del nuevo pedido + SET v_start = TIMESTAMP(newFEC); SET v_end = TIMESTAMP(newFEC, '23:59:59'); @@ -31101,7 +30289,7 @@ BEGIN AND intWarehouse = t.warehouse_id AND intIdAgencia = t.Id_Agencia AND IFNULL(datLanding,-1) = IFNULL(t.Landing,-1) - AND t.Fecha BETWEEN v_start AND v_end -- uso BETWEEN para aprovechar el indice + AND t.Fecha BETWEEN v_start AND v_end AND t.Factura IS NULL AND t.Localizacion = 'RECHAZO' AND t.PedidoImpreso = 0 @@ -31427,15 +30615,15 @@ DECLARE v_sql TEXT; DROP TEMPORARY TABLE IF EXISTS tmp.nest; --- Se llama al procedimiento que genera el arbol + CALL nest_tree(strTABLE, intGAP, FALSE); --- Se añade un campo para el conteo de hojas + ALTER TABLE tmp.nest ADD leaves INT, ADD time DATETIME; --- Añadimos la hora + SET v_sql = sql_printf ( ' update tmp.nest n @@ -31448,7 +30636,7 @@ SET v_sql = sql_printf ( CALL sql_query (v_sql); --- Actualizamos el campo leaves para los nodos que tienen asociados + SET v_sql = sql_printf ( ' update tmp.nest n @@ -31468,7 +30656,7 @@ SET v_sql = sql_printf ( CALL sql_query (v_sql); --- Actualizamos todos los nodos con la suma de las hojas de los hijos + drop temporary table if exists tmp.nest2; create temporary table tmp.nest2 @@ -31531,7 +30719,7 @@ SELECT 0 as rgt, 0 as lft, 0 as wdt, 0 as frg, 0 as flf; - -- Averiguamos el ancho de la rama + SET v_sql = sql_printf ( ' UPDATE aux a JOIN %t t SET a.wdt = t.rgt - t.lft +1 @@ -31542,7 +30730,7 @@ SELECT 0 as rgt, 0 as lft, 0 as wdt, 0 as frg, 0 as flf; CALL sql_query (v_sql); --- Averiguamos la posicion del nuevo padre + SET v_sql = sql_printf ( ' UPDATE aux a JOIN %t t SET a.frg = t.rgt, a.flf = t.lft @@ -31556,7 +30744,7 @@ CALL sql_query (v_sql); SELECT wdt, frg, flf INTO myWidth, fatherRight, fatherLeft FROM aux; --- 1º Incrementamos los valores de todos los nodos a la derecha del punto de inserción (fatherRight) , para hacer sitio + SET v_sql = sql_printf ( @@ -31577,7 +30765,7 @@ SET v_sql = sql_printf ( CALL sql_query (v_sql); --- Es preciso recalcular los valores del nodo en el caso de que estuviera a la derecha del nuevo padre + SET v_sql = sql_printf ( ' @@ -31592,7 +30780,7 @@ CALL sql_query (v_sql); SELECT lft, rgt, frg - lft INTO myLeft, myRight, gap FROM aux; --- 2º Incrementamos el valor de todos los nodos a trasladar hasta alcanzar su nueva posicion + SET v_sql = sql_printf ( @@ -31615,7 +30803,7 @@ SET v_sql = sql_printf ( CALL sql_query (v_sql); --- 3º Restaremos a todos los nodos resultantes, a la derecha de la posicion arrancada el ancho de la rama escindida + SET v_sql = sql_printf ( ' UPDATE %t SET lft = lft - %v WHERE lft > %v ORDER BY lft; @@ -31666,7 +30854,7 @@ DROP TEMPORARY TABLE IF EXISTS tmp.nest_depth; DROP TEMPORARY TABLE IF EXISTS tmp.nest_depth_aux; --- Calculamos el nivel de profundidad para cada item + SET v_sql = sql_printf ( ' CREATE TEMPORARY TABLE tmp.nest_depth @@ -31693,13 +30881,13 @@ CREATE TEMPORARY TABLE tmp.nest_depth_aux SELECT * FROM tmp.nest_depth; --- Vamos a hacer consultas anidadas para obtener una consulta de dos entradas + DROP TEMPORARY TABLE IF EXISTS tmp.nest; DROP TEMPORARY TABLE IF EXISTS tmp.nest_aux; --- Primera tabla, con el nivel 0 + SET v_sql = sql_printf ( ' CREATE TEMPORARY TABLE tmp.nest @@ -31728,7 +30916,7 @@ SELECT * FROM tmp.nest; --- Bucle + WHILE v_current_depth <= v_max_depth DO @@ -31756,7 +30944,7 @@ WHILE v_current_depth <= v_max_depth DO CALL sql_query (v_sql); --- Actualizamos lft y rgt + SET v_sql = sql_printf ( ' UPDATE tmp.nest @@ -31783,7 +30971,7 @@ END WHILE; --- Eliminamos los campos duplicados + SET v_current_depth = 0; WHILE v_current_depth <= v_max_depth DO @@ -31818,7 +31006,7 @@ END WHILE; SELECT * FROM tmp.nest_aux; --- Limpieza + DROP TEMPORARY TABLE IF EXISTS tmp.nest_aux; DROP TEMPORARY TABLE IF EXISTS tmp.nest; DROP TEMPORARY TABLE IF EXISTS tmp.nest_depth_aux; @@ -31844,11 +31032,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `nest_sons_list`(IN intID INT, IN strTABLE V BEGIN -/* -Esta función devuelve un recordset con los ID de todos los nodos que cuelgan del nodo que se pasa como parámetro - -*/ DECLARE v_sql TEXT; @@ -31963,23 +31147,23 @@ BEGIN SELECT warehouse_id, Fecha, landing INTO vLandingWarehouse, vShipmentDate, vLandingDate FROM Tickets WHERE Id_Ticket = vTicket; - -- seleccionamos travel + SELECT id, Id_Entrada INTO vTravel, vEntry FROM travel t LEFT JOIN Entradas e ON t.id = e.travel_id WHERE t.landing = vLandingDate AND t.shipment = vShipmentDate AND t.warehouse_id_out = vLandingWarehouse AND t.warehouse_id = vWarehouse - AND t.delivered = FALSE ; -- agency ?? + AND t.delivered = FALSE ; - -- creamos el travel si es necesario + IF NOT vTravel THEN INSERT INTO travel (shipment, landing, warehouse_id, warehouse_id_out, agency_id) VALUES (vShipmentDate, vLandingDate, vLandingWarehouse, vShipmentWarehouse, a); SELECT LAST_INSERT_ID() INTO vTravel; END IF; - -- creamos la Entrada si es necesario + IF NOT vEntry THEN INSERT INTO Entradas (Id_Proveedor, travel_id) - VALUES (13, vTravel); -- proveedor 'MOVIMIENTO ALMACEN' + VALUES (13, vTravel); SELECT LAST_INSERT_ID() INTO vEntry; END IF; @@ -32089,18 +31273,14 @@ END; CALL bi.last_buy_id_add; INSERT INTO vn2008.daily_task_log(consulta) VALUES('last buy id END'); - /* JGF 2016-09-06 Quitado a peticion de AGS - SELECT SLEEP(1) INTO AUX; - CALL vn2008.comercial_caducado; - INSERT INTO vn2008.daily_task_log(consulta) VALUES('Comercial Caducado END'); - */ + SELECT SLEEP(1) INTO AUX; CALL bi.defaulting(curdate()); INSERT INTO vn2008.daily_task_log(consulta) VALUES('defaulting END'); INSERT INTO vn2008.Colas(Id_Informe,Id_Trabajador) VALUES (11,57); - -- Desactivacion de usuarios con contrato terminado + INSERT INTO vn2008.Colas(Id_Informe) VALUES (16); SELECT SLEEP(1) INTO AUX; @@ -32132,7 +31312,7 @@ END; INSERT INTO vn2008.daily_task_log(consulta) VALUES('comparativa add END'); SELECT SLEEP(1) INTO AUX; - call vn2008.recobro_credito(); -- PAK 12/01/2016 + call vn2008.recobro_credito(); INSERT INTO vn2008.daily_task_log(consulta) VALUES('recobro_credito END'); SELECT SLEEP(1) INTO AUX; @@ -32147,16 +31327,9 @@ END; CALL vn.itemTagUpdatePriority(0); INSERT INTO vn2008.daily_task_log(consulta) VALUES('articleTagUpdatePriority END'); - /* - CALL vn.invoiceOutAgainDateRange(util.yesterday(),util.yesterday()); - INSERT INTO vn2008.daily_task_log(consulta) VALUES('invoiceOutAgainDateRange END'); - */ - /* jgf posar quan estiga arreglat - SELECT SLEEP(1) INTO AUX; - CALL bi.primer_pedido_add; - INSERT INTO vn2008.daily_task_log(consulta) VALUES('primer_pedido_add END'); -*/ + + SELECT SLEEP(1) INTO AUX; INSERT INTO vn2008.daily_task_log(consulta) VALUES('finalitza el event vn2008.nightly_tasks'); @@ -32221,7 +31394,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `pay`(IN datFEC DATE BEGIN --- Registro en la tabla Cajas + INSERT INTO Cajas ( Concepto , Serie , Numero @@ -32247,7 +31420,7 @@ FROM Proveedores WHERE Id_Proveedor = idPROV; --- Registro en la tabla pago + INSERT INTO pago(fecha , id_proveedor , importe @@ -32335,7 +31508,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `portekk`(IN intId_Ticket INT,IN intbultos INT, IN intId_Article INT) BEGIN - -- Deprecated!! Usar la funcion porte en lugar de este procedure + DECLARE intId_Agencia INT; DECLARE int_agency_id SMALLINT; DECLARE int_province_id SMALLINT; @@ -32360,16 +31533,13 @@ BEGIN JOIN Clientes cli on c.Id_Cliente=cli.Id_Cliente LEFT JOIN agency_warehouse ag ON ag.agency_id = a.agency_id WHERE Id_Ticket = intId_Ticket limit 1; --- Fusionar con lo de arriba -/*SELECT IFNULL(MAX(counter),0) +1 INTO intcounter FROM expeditions e - INNER JOIN Tickets t1 ON e.ticket_id = t1.Id_Ticket - INNER JOIN Tickets t2 ON t2.Id_Consigna = t1.Id_Consigna AND DATE(t2.Fecha) = DATE(t1.Fecha) - WHERE t2.Id_Ticket = NEW.ticket_id AND t1.Etiquetasemitidas = FALSE AND t1.empresa_id = t2.empresa_id;*/ + + IF (intPorte >= 0 or dbldescuento BETWEEN 0 AND 1 ) THEN IF intPorte or base_ticket(intId_Ticket) < 50 THEN - SELECT IFNULL(intPorte,10)/intbultos price;/*en el cas dels tarifa 1 els cobren 10€ de ports*/ + SELECT IFNULL(intPorte,10)/intbultos price; ELSE SELECT 0 price; END IF; @@ -32380,7 +31550,7 @@ BEGIN SELECT IF(price * intbultos < 10 AND porte_minimo, 10 / intbultos, price) price FROM Agencias_zonas az WHERE zona = 1 AND Id_Agencia = intId_Agencia AND az.warehouse_id = intWarehouse_id; ELSE - IF intId_Agencia = 47 THEN -- Si es viaxpress + IF intId_Agencia = 47 THEN SELECT price price FROM Agencias_zonas az INNER JOIN viaxpress USING(zona) WHERE Id_Agencia = 47 AND codigo_postal = strCodPostal AND az.warehouse_id = intWarehouse_id; ELSE @@ -32395,7 +31565,7 @@ BEGIN ELSE SELECT 0 price; END IF; - ELSE -- Si es una agency con la columna por_volumen <> 0 calcula el porte por Volumen + ELSE CALL ticket_volumen(intId_Ticket); SELECT MAX(Porte_total)/intbultos price FROM ticket_volumen; @@ -32423,11 +31593,11 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `PortesDesdeTicketkk`( intTicket INTEGER) BEGIN - -- DEPRECATED! con el bionic esto ya no se usa + DECLARE done BIT DEFAULT 0; DECLARE v_date_ini,v_date_end DATE; - -- JGF 21/08/14 A partir de un intTicket se calcula lo que se ha cobrado en concepto de portes - -- restando la tarifa dos en esa fecha al valor del ticket + + DROP TEMPORARY TABLE IF EXISTS portes; IF (SELECT Descuento FROM Clientes c JOIN Tickets t ON t.Id_Cliente = c.Id_Cliente WHERE t.Id_Ticket = intTicket) BETWEEN 0 AND 1 THEN SELECT TIMESTAMPADD(MONTH,-12,Fecha),Fecha INTO v_date_ini,v_date_end FROM Tickets WHERE Id_Ticket = intTicket LIMIT 1; @@ -32465,9 +31635,9 @@ BEGIN Preu * (1 - (Descuento / 100)) * Cantidad diferencia,0 Tarifa2, Cantidad FROM Movimientos WHERE Id_Ticket= intTicket AND Id_Article = 71; END IF; - -- SELECT * FROM vn2008.portes; + - -- SELECT NULL, NULL, NULL, sum(diferencia) as Porte, NULL FROM portes p; + END ;; DELIMITER ; @@ -32728,9 +31898,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `production_buffer_problems`() BEGIN -/** - * Necesita la tabla tmp.ticket_list - */ + DECLARE vToday DATETIME; DECLARE vTomorrowMidnight DATETIME ; DECLARE vWarehouse INT; @@ -32771,7 +31939,7 @@ BEGIN CALL cache.visible_refresh (vVisibleCache, FALSE, vWarehouse); CALL cache.available_refresh (vAvailableCache, FALSE, vWarehouse, vDate); - -- El disponible es menor que 0 + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) SELECT tt.Id_Ticket, Article @@ -32791,7 +31959,7 @@ BEGIN AND NOT generic AND vWarehouse = t.warehouse_id; - -- El disponible es mayor que cero y la cantidad supera el visible, estando aun sin preparar + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) SELECT tt.Id_Ticket, CONCAT('RETRASO (', A.Id_Article, ') ', Article) FROM tmp.ticket_list tt @@ -32819,7 +31987,7 @@ BEGIN CLOSE vCursor; - -- Código 100 + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) SELECT DISTINCT tt.Id_Ticket, 'COD 100' @@ -32827,7 +31995,7 @@ BEGIN JOIN Movimientos m on m.Id_Ticket = tt.Id_Ticket WHERE Id_Article = 100; - -- Congelado + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) SELECT DISTINCT tt.Id_Ticket, 'CONGELADO' @@ -32836,7 +32004,7 @@ BEGIN JOIN Clientes c on c.Id_Cliente = t.Id_Cliente WHERE c.Congelado; - -- Riesgo + CALL risk_vs_client_list(CURDATE()); @@ -32848,18 +32016,8 @@ BEGIN JOIN tmp.risk r on r.Id_Cliente = t.Id_Cliente JOIN Clientes c on c.Id_Cliente = t.Id_Cliente WHERE r.risk > c.Credito + 10 - AND Vista != 3; -- para que las recogidas se preparen - /* - -- Saldo vencido - INSERT INTO tmp.buffer_problems(Id_Ticket, problem) - SELECT DISTINCT tt.Id_Ticket, 'SALDO VENCIDO' - FROM tmp.ticket_list tt - JOIN Tickets t on t.Id_Ticket = tt.Id_Ticket - JOIN Agencias a on t.Id_Agencia = a.Id_Agencia - JOIN bi.defaulters d ON d.client = t.Id_Cliente - WHERE d.amount > 200 AND d.date = CURDATE() - AND Vista != 3; -- para que las recogidas se preparen - */ + AND Vista != 3; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -32878,10 +32036,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `production_buffer_problemsOptimizado`() BEGIN -/* - * Necesita la tabla tmp.ticket_list - * - */ + DECLARE vWarehouse INT; DECLARE vDate DATE; DECLARE vAvailableCache INT; @@ -32905,14 +32060,14 @@ BEGIN ENGINE = MEMORY; - -- CONGELADO + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) SELECT DISTINCT tt.Id_Ticket, 'CONGELADO' FROM tmp.ticket_list tt JOIN Clientes c on c.Id_Cliente = tt.Id_Cliente WHERE c.Congelado; - -- eliminamos tickets con problemas para no volverlos a mirar + DROP TEMPORARY TABLE IF EXISTS tmp.ticketListFiltered; CREATE TEMPORARY TABLE tmp.ticketListFiltered @@ -32923,7 +32078,7 @@ BEGIN JOIN Clientes c on c.Id_Cliente = tt.Id_Cliente WHERE c.Congelado = 0; - -- RIESGO + CALL risk_vs_client_list(CURDATE()); @@ -32935,20 +32090,20 @@ BEGIN JOIN tmp.risk r on r.Id_Cliente = t.Id_Cliente JOIN Clientes c on c.Id_Cliente = t.Id_Cliente WHERE r.risk > c.Credito + 10 - AND Vista != 3; -- para que las recogidas se preparen + AND Vista != 3; + - -- eliminamos tickets con problemas para no volverlos a mirar DELETE tlf FROM tmp.ticketListFiltered tlf JOIN tmp.buffer_problems bf ON tlf.Id_Ticket = bf.Id_Ticket; - -- CODIGO 100 + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) SELECT DISTINCT tt.Id_Ticket, 'COD 100' FROM tmp.ticket_list tt JOIN Movimientos m on m.Id_Ticket = tt.Id_Ticket WHERE Id_Article = 100; - -- eliminamos tickets con problemas para no volverlos a mirar + DELETE tlf FROM tmp.ticketListFiltered tlf JOIN tmp.buffer_problems bf ON tlf.Id_Ticket = bf.Id_Ticket; @@ -32961,10 +32116,10 @@ BEGIN CALL cache.visible_refresh(vVisibleCache,FALSE,vWarehouse); CALL cache.available_refresh(vAvailableCache,FALSE,vWarehouse,vDate); - -- El disponible es menor que 0 + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) SELECT tt.Id_Ticket, Article - -- CONCAT(IF( M.Cantidad < IFNULL(v.visible,0) , 'NO HAY ','FALTARÁ ' ), Article) + FROM tmp.ticket_list tt JOIN Tickets t on t.Id_Ticket = tt.Id_Ticket LEFT JOIN vn2008.Movimientos M ON M.Id_Ticket = t.Id_Ticket @@ -32980,11 +32135,11 @@ BEGIN AND NOT generic AND vWarehouse = t.warehouse_id; - -- eliminamos tickets con problemas para no volverlos a mirar + DELETE tlf FROM tmp.ticketListFiltered tlf JOIN tmp.buffer_problems bf ON tlf.Id_Ticket = bf.Id_Ticket; - -- Amarillo: El disponible es mayor que cero y la cantidad supera el visible, estando aun sin preparar + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) SELECT tt.Id_Ticket, CONCAT('RETRASO ', Article) FROM tmp.ticket_list tt @@ -33030,7 +32185,7 @@ DECLARE currentDayOfWeek INT; SET currentDayOfWeek = weekday(curdate()); --- Sin provincia ni dia de envio + UPDATE tmp.production_buffer pb LEFT JOIN ( @@ -33049,7 +32204,7 @@ SET pb.Hora = IF(pb.Hora is null or pb.Hora = 0 or pb.Hora = 24,IFNULL(t.max_ho ,pb.Departure =IFNULL(t.max_hour,0); --- Agencias sin provincia, machacan lo anterior si coinciden + UPDATE tmp.production_buffer pb JOIN ( @@ -33073,7 +32228,7 @@ SET pb.Hora = IF(pb.Hora is null or pb.Hora = 0 or pb.Hora = 24,t.max_hour, pb. ; --- Agencias con provincia, se ejecuta para machacar lo anterior, si procede. + UPDATE tmp.production_buffer pb JOIN ( @@ -33098,13 +32253,8 @@ SET pb.Hora = IF(pb.Hora is null or pb.Hora = 0 or pb.Hora = 24,t.max_hour, pb.H ,pb.Departure = t.max_hour ; --- Pedidos del dia anterior son prioritarios -/* -UPDATE tmp.production_buffer pb -JOIN Tickets t ON t.Id_Ticket = pb.ticket -SET pb.Hora = 1 -WHERE t.Fecha < CURDATE(); -*/ + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -33174,7 +32324,7 @@ BEGIN AND a.Vista IN (1,2,3); - -- Líneas y volumen por ticket + UPDATE tmp.production_buffer pb JOIN ( @@ -33191,7 +32341,7 @@ BEGIN DELETE FROM tmp.production_buffer WHERE `lines`= 0; - -- Cajas + ALTER TABLE tmp.production_buffer ADD Cajas DOUBLE DEFAULT NULL; @@ -33211,7 +32361,7 @@ BEGIN ) sub ON sub.Id_Ticket = pb.Id_Ticket SET pb.Cajas = sub.Cajas; - -- Artificial, Seco y Preservado: Reino 4 + ALTER TABLE tmp.production_buffer ADD lineasArtificial INT DEFAULT NULL; @@ -33231,7 +32381,7 @@ BEGIN SET pb.lineasArtificial = sub.Lineas; - -- Problemas por ticket + UPDATE tmp.production_buffer pb JOIN ( @@ -33242,11 +32392,11 @@ BEGIN SET pb.problems = p.problems, pb.problem = p.problem; - -- Hora limite de preparación + CALL production_buffer_set_priority; - -- Entradas + INSERT INTO tmp.production_buffer( Fecha @@ -33276,11 +32426,11 @@ BEGIN AND c.shipment >= CURDATE() GROUP BY Id_Entrada; - -- Refresca la caché para el cierre dinámico de agencias + CALL cache.departure_timing; - -- Tickets de recogida + REPLACE tmp.production_buffer( Fecha @@ -33313,8 +32463,8 @@ BEGIN WHERE t.Fecha between TIMESTAMPADD(WEEK,-1,CURDATE()) AND dayend(TIMESTAMPADD(DAY,-1,CURDATE())) AND wp.warehouse_id = vWarehouseId; - -- DROP TEMPORARY TABLE tmp.ticket_list; - -- DROP TEMPORARY TABLE IF EXISTS tmp.risk; + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -33555,7 +32705,7 @@ GROUP BY id_proveedor, empresa_id GROUP BY Id_Proveedor, empresa_id ) sub_tot USING(Id_Proveedor, empresa_id) --- Saldo inmediato + LEFT JOIN ( @@ -33640,7 +32790,7 @@ BEGIN , PRIMARY KEY(proveedor_id, empresa_id, moneda_id)) ENGINE = MEMORY; - -- Calcula el saldo inicial y final de cada proveedor + INSERT INTO saldos_iniciales SELECT id_proveedor, empresa_id, sum(importe * isBeforeStarting) as saldo_inicial,sum(importe) saldo_final, moneda_id FROM ( @@ -33726,7 +32876,7 @@ BEGIN AND r.proveedor_id <> 567 ORDER BY id_proveedor, empresa_id, id_moneda, fecha, isPago DESC,id; - -- Ahora, calculamos el importe pendiente para cada recibo en orden descendente + SET @saldo:= 0.0; SET @prov := 0.0; SET @emp := 0.0; @@ -33736,7 +32886,7 @@ BEGIN UPDATE vencimientos_pendientes vp LEFT JOIN saldos_iniciales si ON vp.empresa_id = si.empresa_id AND vp.proveedor_id = si.proveedor_id AND vp.moneda_id = si.moneda_id - SET vp.saldo = @saldo:= (IF(@emp <> vp.empresa_id OR @prov <> vp.proveedor_id OR @moneda <> vp.moneda_id, IFNULL(si.saldo_inicial,0),@saldo) + vp.importe) -- si hay cambio de empresa o proveedor o moneda, el saldo se reinicia + SET vp.saldo = @saldo:= (IF(@emp <> vp.empresa_id OR @prov <> vp.proveedor_id OR @moneda <> vp.moneda_id, IFNULL(si.saldo_inicial,0),@saldo) + vp.importe) , vp.pendiente = @pendiente:= IF(@emp <> vp.empresa_id OR @prov <> vp.proveedor_id OR @moneda <> vp.moneda_id OR @day <> vp.fecha, vp.importe * (NOT isPago) , @pendiente + vp.importe) , vp.empresa_id = @emp:= vp.empresa_id , vp.proveedor_id = @prov:= vp.proveedor_id @@ -33913,16 +33063,16 @@ SELECT id_proveedor, empresa_id, sum(importe) as saldo, id_moneda as moneda_id DROP TEMPORARY TABLE vencimientos_pendientes_aux; - -- Ahora, al fin, calculamos el importe pendiente para cada recibo en orden descendente - -- Cogemos los valores del primer registro como semilla + + SELECT proveedor_id, empresa_id, saldo, moneda_id, 0 INTO @prov, @emp, @saldo, @moneda, @pend FROM vencimientos_pendientes WHERE id2 = 1; UPDATE vencimientos_pendientes - SET saldo = @saldo:= IF(@emp <> empresa_id OR @prov <>proveedor_id OR @moneda <> moneda_id,saldo,@saldo) -- si hay cambio de empresa o proveedor o moneda, el saldo se reinicia + SET saldo = @saldo:= IF(@emp <> empresa_id OR @prov <>proveedor_id OR @moneda <> moneda_id,saldo,@saldo) , pendiente = @pend:= IF(saldo >= importe AND saldo > 0, importe, saldo) , saldo = @saldo:= @saldo - @pend , empresa_id = @emp:= empresa_id @@ -34037,7 +33187,7 @@ BEGIN JOIN Proveedores P2 ON P2.Id_Proveedor = sub2.empresa_id - WHERE pm.deudaviva -- Cliente de perdidas no vale la pena revisarlo + WHERE pm.deudaviva HAVING ABS(Diferencia) > 0.05 @@ -34068,7 +33218,7 @@ DECLARE datSTART DATE; SET datSTART = FIRSTDAYOFYEAR(datFEC); SET datFEC = TIMESTAMP(datFEC,'23:59:59'); --- Creamos una tabla para almacenar las facturas del cliente, junto con el numero de veces que se repite. + DROP TEMPORARY TABLE IF EXISTS qFACTURAS; CREATE TEMPORARY TABLE qFACTURAS @@ -34084,7 +33234,7 @@ CREATE TEMPORARY TABLE qFACTURAS ENGINE = InnoDB ; --- Insertamos las facturas y los recibos de gestion. + INSERT INTO qFACTURAS SELECT Fecha, COUNT(*) as TPVcount, round(Importe,2) as Factura, 0 as Recibo, COUNT(*)as CPcount,round(Importe,2) as Debe, 0 as Haber, 1 as Control @@ -34097,7 +33247,7 @@ INSERT INTO qFACTURAS WHERE Id_Cliente = idC AND empresa_id = idE AND Fechacobro BETWEEN datSTART AND datFEC GROUP BY Fechacobro, round(Entregado,2); --- Insertamos los asientos de contabilidad, marcando con control = -1 las repetidas. + INSERT INTO qFACTURAS SELECT * FROM ( @@ -34113,14 +33263,14 @@ INSERT INTO qFACTURAS --- Eliminamos las repetidas --- DELETE FROM qFACTURAS WHERE Control = -1; --- Arreglamos las buenas + + + UPDATE qFACTURAS SET TPVcount = 0, Factura = 0, Recibo = 0 WHERE Control = 2; UPDATE qFACTURAS SET CPcount = 0, Debe = 0, Haber = 0 WHERE Control IN (1,3); --- Mostramos el resultado + SELECT *, @saldo := @saldo + TPVcount * (Factura + Recibo) - CPCount * ( Debe + Haber ) as Saldo FROM qFACTURAS JOIN (SELECT @saldo := 0) truqui ; @@ -34182,7 +33332,7 @@ BEGIN FROM pago WHERE Fecha BETWEEN datSTART AND datFEC AND conciliado - AND pay_met_id <> 18 -- Saldos iniciales + AND pay_met_id <> 18 ) G UNION ALL @@ -34239,7 +33389,7 @@ SET datFEC = TIMESTAMP(datFEC,'23:59:59'); SET datSTART = FIRSTDAYOFYEAR(datFEC); --- Creamos una tabla para almacenar las facturas del proveedor, junto con el numero de veces que se repite. + DROP TEMPORARY TABLE IF EXISTS qFACTURAS; CREATE TEMPORARY TABLE qFACTURAS @@ -34255,7 +33405,7 @@ CREATE TEMPORARY TABLE qFACTURAS ENGINE = InnoDB ; --- Insertamos las facturas y los pagos de gestion. + INSERT INTO qFACTURAS SELECT Fecha, COUNT(*) as TPVcount, round(Importe,2) as Factura @@ -34276,7 +33426,7 @@ INSERT INTO qFACTURAS AND conciliado GROUP BY Fecha, round(importe,2); --- Insertamos los asientos de contabilidad, marcando con control = -1 las repetidas + INSERT INTO qFACTURAS SELECT * FROM ( @@ -34292,14 +33442,14 @@ INSERT INTO qFACTURAS --- Eliminamos las repetidas + DELETE FROM qFACTURAS WHERE Control = -1; --- Arreglamos las buenas + UPDATE qFACTURAS SET TPVcount = 0, Factura = 0, Recibo = 0 WHERE Control = 2; UPDATE qFACTURAS SET CPcount = 0, Debe = 0, Haber = 0 WHERE Control IN (1,3); --- Mostramos el resultado + SELECT *, @saldo := @saldo + TPVcount * (Factura + Recibo) - CPcount * (Debe + Haber) as Saldo FROM qFACTURAS JOIN (SELECT @saldo := 0) truqui ; @@ -34362,7 +33512,7 @@ BEGIN FROM pago WHERE Fecha BETWEEN datSTART AND datFEC AND conciliado - AND pay_met_id <> 18 -- Saldos iniciales + AND pay_met_id <> 18 ) G UNION ALL @@ -34426,13 +33576,13 @@ BEGIN SET dateStart = TIMESTAMPADD(MONTH, -2, CURDATE()); SELECT TIMESTAMPADD(DAY, -1, today) INTO yesterday; - -- lo quitamos despues de campañaA + SELECT TIMESTAMP(TIMESTAMPADD(DAY, scopeDays, yesterday),'23:59:59') INTO maxDate; - -- SELECT TIMESTAMP(TIMESTAMPADD(DAY, 14, yesterday),'23:59:59') INTO maxDate; - -- Creamos una tabla con los Comerciales de los que se mostraran los tickets + + CALL subordinate(worker,TRUE); - -- Se genera una tabla con los tickets representados + DROP TEMPORARY TABLE IF EXISTS ticketRange; CREATE TEMPORARY TABLE ticketRange @@ -34479,14 +33629,7 @@ BEGIN INNER JOIN Tickets T USING(Id_Cliente) LEFT JOIN vn.ticketState tls on tls.ticket = T.Id_Ticket INNER JOIN workerTeamCollegues w ON w.collegueId = C.Id_Trabajador - /* - (SELECT Id_Trabajador - FROM Trabajadores t - JOIN account.user u ON u.id = t.user_id - JOIN workerTeam w on w.user = u.id - JOIN (SELECT team FROM workerTeam wt JOIN Trabajadores tr on tr.user_id = wt.user WHERE Id_Trabajador = worker) sub on sub.team = w.team - ) sub2 ON sub2.Id_Trabajador = C.Id_Trabajador - */ + WHERE Fecha >= yesterday AND Fecha <= maxDate AND T.Factura Is NULL AND IFNULL(tls.alertLevel,0) < 3 @@ -34494,7 +33637,7 @@ BEGIN IF (SELECT COUNT(*) FROM ticketRange) THEN - -- Generamos varias auxiliares (ya podian los de mysql haber solucionado esto) + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; CREATE TEMPORARY TABLE tmp.client_list @@ -34508,7 +33651,7 @@ BEGIN ENGINE = MEMORY SELECT Id_Cliente FROM tmp.client_list; - -- usar ticket_total crear ticket_tmp(ticket_id) + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; CREATE TEMPORARY TABLE `ticket_tmp` ENGINE = MEMORY @@ -34519,7 +33662,7 @@ BEGIN CALL ticket_total(); - -- Generamos otra tabla temporal con los Tickets_iva + DROP TEMPORARY TABLE IF EXISTS tt3; CREATE TEMPORARY TABLE tt3 @@ -34528,7 +33671,7 @@ BEGIN JOIN ticketRange tr ON tr.Id_Ticket = tt.ticket_id; - -- Generamos la lista de tickets y sus datos + DROP TEMPORARY TABLE IF EXISTS Radartest; @@ -34537,15 +33680,15 @@ BEGIN SELECT IF(C.Id_Trabajador = worker, 1, 0) as Propio, Credito, Riesgo, - -- Greuge, + T.Id_Ticket, T.warehouse_id as wh, T.Fecha, T.Alias, - -- T.Vista, + REPEAT(' ',50) as problem, T.Agencia Tipo, - -- C.Id_Trabajador, + T.workerId AS Id_Trabajador, T.Solucion, T.Localizacion, @@ -34569,7 +33712,7 @@ BEGIN 0 AS inacabable - -- (-1 < ifnull(order_id,-1)) as isbionic + FROM Tickets T LEFT JOIN vn.ticketState ts on ts.ticket = T.Id_Ticket @@ -34577,11 +33720,11 @@ BEGIN INNER JOIN tt3 ON tt3.ticket_id = T.Id_Ticket - -- LEFT JOIN (SELECT DISTINCT 1 as order_id, Id_Ticket FROM order_Tickets) o on o.Id_Ticket = T.Id_Ticket + INNER JOIN Agencias A ON A.Id_Agencia = T.Id_Agencia - -- WHERE T.Etiquetasemitidas = FALSE + GROUP BY T.Id_Ticket ) AS T ON T.Id_Cliente = C.Id_Cliente @@ -34611,7 +33754,7 @@ BEGIN ) AS Peligros ON Peligros.Id_Cliente = C.Id_Cliente ; - -- Actualizamos el Riesgo con los tickets futuros + set @cliente:= 0; SET @riesgo := 0; @@ -34681,14 +33824,14 @@ BEGIN SET dateStart = TIMESTAMPADD(MONTH, -2, CURDATE()); SELECT TIMESTAMPADD(DAY, -1, today) INTO yesterday; - -- lo quitamos despues de campañaA + SELECT TIMESTAMP(TIMESTAMPADD(DAY, scopeDays, yesterday),'23:59:59') INTO maxDate; - -- SELECT TIMESTAMP(TIMESTAMPADD(DAY, 14, yesterday),'23:59:59') INTO maxDate; - -- Creamos una tabla con los Comerciales de los que se mostraran los tickets + + CALL subordinate(worker,TRUE); - -- Se genera una tabla con los tickets representados + DROP TEMPORARY TABLE IF EXISTS ticketRange; CREATE TEMPORARY TABLE ticketRange @@ -34730,7 +33873,7 @@ BEGIN IF (SELECT COUNT(*) FROM ticketRange) THEN - -- Generamos varias auxiliares (ya podian los de mysql haber solucionado esto) + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; CREATE TEMPORARY TABLE tmp.client_list @@ -34744,7 +33887,7 @@ BEGIN ENGINE = MEMORY SELECT Id_Cliente FROM tmp.client_list; - -- usar ticket_total crear ticket_tmp(ticket_id) + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; CREATE TEMPORARY TABLE `ticket_tmp` ENGINE = MEMORY @@ -34756,7 +33899,7 @@ BEGIN CALL ticket_total(); - -- Generamos otra tabla temporal con los Tickets_iva + DROP TEMPORARY TABLE IF EXISTS tt3; CREATE TEMPORARY TABLE tt3 @@ -34765,7 +33908,7 @@ BEGIN JOIN ticketRange tr ON tr.Id_Ticket = tt.ticket_id; - -- Generamos la lista de tickets y sus datos + DROP TEMPORARY TABLE IF EXISTS Radartest; @@ -34774,15 +33917,15 @@ BEGIN SELECT IF(C.Id_Trabajador = worker, 1, 0) as Propio, Credito, Riesgo, - -- Greuge, + T.Id_Ticket, T.warehouse_id as wh, T.Fecha, T.Alias, - -- T.Vista, + REPEAT(' ',50) as problem, T.Agencia Tipo, - -- C.Id_Trabajador, + T.workerId AS Id_Trabajador, T.Solucion, T.Localizacion, @@ -34805,7 +33948,7 @@ BEGIN 0 AS inacabable - -- (-1 < ifnull(order_id,-1)) as isbionic + FROM Tickets T LEFT JOIN vn.ticketState ts on ts.ticket = T.Id_Ticket @@ -34813,11 +33956,11 @@ BEGIN INNER JOIN tt3 ON tt3.ticket_id = T.Id_Ticket - -- LEFT JOIN (SELECT DISTINCT 1 as order_id, Id_Ticket FROM order_Tickets) o on o.Id_Ticket = T.Id_Ticket + INNER JOIN Agencias A ON A.Id_Agencia = T.Id_Agencia - -- WHERE T.Etiquetasemitidas = FALSE + GROUP BY T.Id_Ticket ) AS T ON T.Id_Cliente = C.Id_Cliente @@ -34850,7 +33993,7 @@ BEGIN ; - -- Actualizamos el Riesgo con los tickets futuros + set @cliente:= 0; SET @riesgo := 0; @@ -34960,12 +34103,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `radar_negativos`(IN v_force BOOLEAN, IN intRANGE INT) BEGIN -/** - * Calcula una tabla con el máximo negativo visible para cada producto y almacen - * - * @param v_force Fuerza el recalculo del stock - * @param intRANGE Numero de dias a considerar -**/ + CALL `cache`.stock_refresh(v_force); SET @aid = NULL; @@ -35150,11 +34288,11 @@ BEGIN LEFT JOIN travel t ON t.id = e.travel_id WHERE re.awb_recibida = NEW_id GROUP BY re.awb_recibida)); - -- IF dblRefMin < dblRefRate THEN - -- SET dblRef = dblRefRate; - -- ELSE - -- SET dblRef =dblRefMin; - -- END IF; + + + + + SELECT IFNULL(MAX(r.num_recibida) + 1,1) INTO v_num_recibida FROM recibida r WHERE r.serie LIKE NEW_serie AND YEAR(r.fecha) = YEAR(NEW_fecha) @@ -35181,7 +34319,7 @@ SELECT a,NEW_fecha,subcta,contra,concepto,eurodebe,eurohaber,baseeuro,NEW_serie, INNER JOIN recibida ON Id_Proveedor = proveedor_id WHERE id = NEW_id) t4 INNER JOIN( - -- Linea del proveedor/acreedor + SELECT subcta,'' contra,eurodebe,ROUND(SUM(eurohaber) + 0.0001,2) eurohaber,baseeuro,0 iva, l340,LRECT349,TIPOOPE,'' AUXILIAR FROM ( @@ -35202,14 +34340,14 @@ SELECT a,NEW_fecha,subcta,contra,concepto,eurodebe,eurohaber,baseeuro,NEW_serie, GROUP BY recibida_id UNION ALL - -- Linea de iva + SELECT ic.codigo,cta_proveed contra, ROUND(iva/100*SUM(ri.bi) + 0.0001,2) eurodebe, NULL eurohaber, ROUND(SUM(ri.bi),2) baseeuro,iva, 1 l340,(NOT ((p.pais_id <> p2.pais_id) AND pa.CEE < 2)) LRECT349,TIPOOPE, - IF(pa2.CEE < 2 AND ri2.gastos_id IS NULL,'','*') AUXILIAR -- JGF 30-01-2014 IF(NOT ((p.pais_id <> p2.pais_id) AND pa.CEE < 2),'*','') -- ANTES '' AUXILIAR JGF < 30-01-2014 --- AND ri.gastos_id LIKE '4751______' + IF(pa2.CEE < 2 AND ri2.gastos_id IS NULL,'','*') AUXILIAR + FROM recibida r INNER JOIN recibida_iva ri ON ri.recibida_id = r.id @@ -35232,7 +34370,7 @@ SELECT a,NEW_fecha,subcta,contra,concepto,eurodebe,eurohaber,baseeuro,NEW_serie, WHERE r.id = NEW_id AND g.conbase AND link GROUP BY iva UNION ALL - -- Linea iva inversor sujeto pasivo + SELECT ic2.codigo,cta_proveed contra, NULL eurodebe, ROUND(ic2.iva/100*SUM(bi) + 0.0001,2) eurohaber, @@ -35252,7 +34390,7 @@ SELECT a,NEW_fecha,subcta,contra,concepto,eurodebe,eurohaber,baseeuro,NEW_serie, WHERE r.id = NEW_id AND ic2.link GROUP BY ic2.iva UNION ALL - -- Linea de Gastos + SELECT if(gastos_id LIKE '4751______',LPAD(RIGHT(cta_proveed ,4),10,gastos_id),gastos_id),cta_proveed , if(gastos_id LIKE '4751______',NULL,ABS(ROUND(SUM(bi),2))) , @@ -35274,7 +34412,7 @@ SELECT a,NEW_fecha,subcta,contra,concepto,eurodebe,eurohaber,baseeuro,NEW_serie, UNION ALL - -- Extracomunitarias gasto contra proveedor/acreedor + SELECT CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) concepto ,gastos_id,cuenta, ROUND(SUM(bi)/IF(r.serie='W',dblRefRate,1)* (re.percentage / 100),2),NULL ,IF( @a:=@a+1 ,NULL,NULL) ,0, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR,r.serie @@ -35297,13 +34435,13 @@ SELECT a,NEW_fecha,subcta,contra,concepto,eurodebe,eurohaber,baseeuro,NEW_serie, UNION ALL - -- Extracomunitarias proveedor contra gasto + SELECT CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) concepto ,p.cuenta subcta,gastos_id, NULL eurodebe, ROUND((1+(iva/100)*(r.serie = 'R'))*SUM(bi)/IF(r.serie='W',dblRefRate,1)* (re.percentage / 100),2) eurohaber, NULL baseeuro,0 iva, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR,r.serie - -- antes sols iva + FROM recibida_entrada re INNER JOIN recibida_iva ri ON re.recibida_id = ri.recibida_id @@ -35320,7 +34458,7 @@ UNION ALL UNION ALL - -- Linea de iva adquisicion + SELECT CONCAT('ADQUI. INTRA FRA ',sref),ic.codigo,p.cuenta contra, ROUND(iva/100*SUM(ri.importe) + 0.0001,2) eurodebe, NULL eurohaber, @@ -35348,7 +34486,7 @@ UNION ALL UNION ALL - -- Linea de iva adquisicion + SELECT CONCAT('ADQUI. INTRA FRA ',sref),ic2.codigo,p.cuenta contra, NULL eurodebe, ROUND(ic2.iva/100*SUM(ri.importe) + 0.0001,2) eurohaber, @@ -35378,7 +34516,7 @@ UNION ALL WHERE ar.recibida_id = NEW_id AND (p.pais_id <> p2.pais_id) GROUP BY ic2.iva UNION ALL - -- Linea iva importacion + SELECT concepto,subcta,Cuenta, IF (NOT ((ppais_id <> p2pais_id) AND CEE < 2), (IF(@cont<@a, @@ -35431,7 +34569,7 @@ UNION ALL ) sub2 USING(Codintrastat) - -- JOIN recibida_intrastat ri ON ar.awb_recibida = ri.recibida_id and ri.Codintrastat = sub1.Codintrastat + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada @@ -35450,12 +34588,12 @@ UNION ALL JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id WHERE re.awb_recibida = NEW_id AND re.percentage AND IF(cta_proveed like '___0______',ri.gastos_id = 5660000002,TRUE) - -- canvie el cta_proveed like '___1______' per cero cuidao en les van de put + GROUP BY p.Id_Proveedor - -- antes GROUP BY a.Codintrastat,Id_Entrada + ) t3)t4; @@ -35507,11 +34645,11 @@ BEGIN LEFT JOIN travel t ON t.id = e.travel_id WHERE re.awb_recibida = NEW_id GROUP BY re.awb_recibida)); - -- IF dblRefMin < dblRefRate THEN - -- SET dblRef = dblRefRate; - -- ELSE - -- SET dblRef =dblRefMin; - -- END IF; + + + + + SELECT IFNULL(MAX(r.num_recibida) + 1,1) INTO v_num_recibida FROM recibida r WHERE r.serie LIKE NEW_serie AND YEAR(r.fecha) = YEAR(NEW_fecha) @@ -35549,7 +34687,7 @@ SELECT CONCAT('COMPRA FRA ',p.Proveedor) concepto,ic.codigo subcta,p.Cuenta,ic.i left JOIN awb aw ON ar.awb_id = aw.id - WHERE ar.recibida_id = NEW_id AND re.percentage/*JGF 27/08/14*/ + WHERE ar.recibida_id = NEW_id AND re.percentage GROUP BY a.Codintrastat @@ -35565,7 +34703,7 @@ SELECT CONCAT('COMPRA FRA ',p.Proveedor) concepto,ic.codigo subcta,p.Cuenta,ic.i ) sub2 USING(Codintrastat) - -- JOIN recibida_intrastat ri ON ar.awb_recibida = ri.recibida_id and ri.Codintrastat = sub1.Codintrastat + left JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada @@ -35583,8 +34721,8 @@ SELECT CONCAT('COMPRA FRA ',p.Proveedor) concepto,ic.codigo subcta,p.Cuenta,ic.i left JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id - WHERE re.awb_recibida = NEW_id AND re.percentage/*JGF 27/08/14*/ AND IF(cta_proveed like '___0______',ri.gastos_id = 5660000002,TRUE) - -- canvie el cta_proveed like '___1______' per cero cuidao en les van de put + WHERE re.awb_recibida = NEW_id AND re.percentage AND IF(cta_proveed like '___0______',ri.gastos_id = 5660000002,TRUE) + GROUP BY p.Id_Proveedor; @@ -35709,7 +34847,7 @@ BEGIN INSERT INTO ticket_invoice (ticket_id) SELECT Id_Ticket FROM Tickets t WHERE Factura = Id_Factura; - -- Eliminem els tickets que no han de ser facturats + IF (SELECT COUNT(*) FROM ticket_invoice) > 0 THEN @@ -35894,14 +35032,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `risk`(v_date DATE, v_customer INT) BEGIN -/** - * Calcula el riesgo para uno o todos los clientes activos. - * - * @param v_date Fecha maxima de los registros - * @param v_customer Cliente a mostrar su riesgo, %NULL para todos - * - * @return table tmp.risk - **/ + DECLARE v_date_start DATETIME DEFAULT TIMESTAMPADD(MONTH, -33, CURDATE()); DECLARE v_date_end DATETIME; @@ -35973,14 +35104,9 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `risk_vs_client_list`(maxRiskDate DATE) BEGIN -/** - * Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list - * - * @param maxRiskDate Fecha maxima de los registros - * @return table tmp.risk - **/ + - -- DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, -40, CURDATE()); + DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(CURDATE()) - 5, CURDATE()); DECLARE endingDate DATETIME; DECLARE MAX_RISK_ALLOWED INT DEFAULT 200; @@ -36075,14 +35201,9 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `risk_vs_client_listbeta`(maxRiskDate DATE) BEGIN -/** - * Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list - * - * @param maxRiskDate Fecha maxima de los registros - * @return table tmp.risk - **/ + - -- DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, -40, CURDATE()); + DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(CURDATE()) - 5, CURDATE()); DECLARE endingDate DATETIME; DECLARE MAX_RISK_ALLOWED INT DEFAULT 200; @@ -36208,7 +35329,7 @@ Select cast(sum(Cantidad * vn2008.cm3_unidad(buy_id)) / 1000000 as decimal(5,1)) where t.Fecha between TIMESTAMPADD(DAY,-1,datSTART) and TIMESTAMPADD(DAY,-1,datEND) AND wp.agency_id IS NULL group by Agencia, Almacen, Fecha - -- JGF 2016-05-05 + UNION ALL Select cast(sum(Cantidad * vn2008.cm3_unidad(Id_Compra)) / 1000000 as decimal(5,1)) as m3 ,a.Agencia, w.name as Almacen, timestampadd(day,1,t.shipment) Fecha @@ -36272,7 +35393,7 @@ create table bi.saldos_bancos union all Select Id_Banco, NULL, importe, greatest(fecha,TIMESTAMPADD(DAY,1,CURDATE())),empresa_id from pago - where conciliado = FALSE /*fecha between CURDATE() and datEND*/ + where conciliado = FALSE union all Select Id_Banco, Entregado, NULL, greatest(Fechacobro,TIMESTAMPADD(DAY,1,CURDATE())),empresa_id from Recibos @@ -36348,11 +35469,11 @@ create table bi.saldos_bancos_pordia union all Select Id_Banco, NULL, importe, greatest(fecha,TIMESTAMPADD(DAY,1,CURDATE())),empresa_id from pago - where conciliado = FALSE /*fecha between CURDATE() and datEND*/ + where conciliado = FALSE union all Select Id_Banco, Entregado, NULL, greatest(Fechacobro,TIMESTAMPADD(DAY,1,CURDATE())),empresa_id from Recibos - where conciliado = FALSE -- Fechacobro between CURDATE() and datEND + where conciliado = FALSE union all Select IFNULL(Id_Banco,9999), Importe, NULL, Fecha,empresa_id from Saldos_Prevision @@ -36391,7 +35512,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `scan_rutas_view`() BEGIN -/* muestra las rutas agrupadas de los ultimos tres dias, así como una lista de los tickets sin enrutar, agrpados por agencia y fecha*/ + select Fecha, Id_Ruta, Matricula, sub.m3, CodigoTrabajador, Agencia, Bultos, w.name as Almacen from @@ -36542,7 +35663,7 @@ WHILE NOT done DO SELECT LAST_INSERT_ID() INTO vNewTicket; - -- SELECT vMyTicket, vNewTicket; SET done = 1; + UPDATE Movimientos m JOIN Articles a using(Id_Article) JOIN Tipos tp using(tipo_id) @@ -36632,7 +35753,7 @@ WHILE NOT done DO SELECT LAST_INSERT_ID() INTO vNewTicket; - -- SELECT vMyTicket, vNewTicket; SET done = 1; + UPDATE Movimientos m JOIN Compres c ON Id_Entrada IN (100461, 100929) AND c.Id_Article = m.Id_Article SET Id_Ticket = vNewTicket @@ -36726,7 +35847,7 @@ WHILE NOT done DO SELECT LAST_INSERT_ID() INTO vNewTicket; - -- SELECT vMyTicket, vNewTicket; SET done = 1; + UPDATE Movimientos m JOIN Articles a using(Id_Article) JOIN Tipos tp using(tipo_id) @@ -36846,7 +35967,7 @@ WHILE NOT done DO SELECT LAST_INSERT_ID() INTO vNewTicket; - -- SELECT vMyTicket, vNewTicket; SET done = 1; + UPDATE Movimientos m JOIN ( @@ -36925,7 +36046,7 @@ BEGIN FROM Trabajadores WHERE Id_Trabajador = idWORKER; - IF vCompanyId = 1381 THEN -- ORNAMENTALES + IF vCompanyId = 1381 THEN DROP TABLE IF EXISTS subordinate; CREATE TABLE subordinate @@ -36937,26 +36058,7 @@ BEGIN ELSE - /* PAK 23/05/2016 - Guardia de domingos - - Los domingos viene Fran a hacer de comercial y necesita ver todos los radares - - - - IF dayofweek(curdate()) = 1 and idWORKER = 43 then -- Domingo y Fran Natek - - DROP TABLE IF EXISTS subordinate; - - CREATE TABLE subordinate - (INDEX (Id_Trabajador)) ENGINE = MEMORY - SELECT Id_Trabajador,TRUE visited,0 boss - FROM Trabajadores; - - - else - */ IF CasoBase THEN SET @@max_sp_recursion_depth = 5 ; @@ -36979,21 +36081,16 @@ BEGIN END REPEAT; END IF; - /* - end if; - */ + END IF; IF idWorker = 2 THEN INSERT INTO subordinate(Id_Trabajador,visited,boss) VALUES (2,TRUE,2); - -- INSERT INTO subordinate(Id_Trabajador,visited,boss) VALUES (43,TRUE,2); + END IF; - /* - IF CasoBase THEN - SELECT * FROM subordinate; - END IF;*/ + END ;; DELIMITER ; @@ -37021,7 +36118,7 @@ BEGIN FROM Trabajadores WHERE Id_Trabajador = idWORKER; - IF vCompanyId = 1381 THEN -- ORNAMENTALES + IF vCompanyId = 1381 THEN DROP TABLE IF EXISTS subordinate; CREATE TABLE subordinate @@ -37033,26 +36130,7 @@ BEGIN ELSE - /* PAK 23/05/2016 - Guardia de domingos - - Los domingos viene Fran a hacer de comercial y necesita ver todos los radares - - - - IF dayofweek(curdate()) = 1 and idWORKER = 43 then -- Domingo y Fran Natek - - DROP TABLE IF EXISTS subordinate; - - CREATE TABLE subordinate - (INDEX (Id_Trabajador)) ENGINE = MEMORY - SELECT Id_Trabajador,TRUE visited,0 boss - FROM Trabajadores; - - - else - */ IF CasoBase THEN SET @@max_sp_recursion_depth = 5 ; @@ -37075,9 +36153,7 @@ BEGIN END REPEAT; END IF; - /* - end if; - */ + END IF; @@ -37085,10 +36161,7 @@ BEGIN INSERT INTO subordinate(Id_Trabajador) VALUES (2); END IF; - /* - IF CasoBase THEN - SELECT * FROM subordinate; - END IF;*/ + END ;; DELIMITER ; @@ -37156,7 +36229,7 @@ BEGIN UPDATE Clientes SET Credito = 0 - WHERE pay_met_id = 5 -- TARJETA + WHERE pay_met_id = 5 ; UPDATE credit @@ -37185,7 +36258,7 @@ BEGIN DECLARE datINI DATE; DECLARE datFIN DATE; - -- Seleccionamos la fecha minima/maxima del periodo que vamos a consultar + SELECT MIN(`date`) INTO datINI FROM vn2008.`time` t WHERE t.period = period; SELECT TIMESTAMP(MAX(`date`),'23:59:59') INTO datFIN FROM vn2008.`time` t WHERE t.period = period; @@ -37233,7 +36306,7 @@ BEGIN SELECT tipo_id INTO intTIPO FROM Articles WHERE Id_Article = idART; - -- Seleccionamos la fecha minima/maxima del periodo que vamos a consultar + SELECT MIN(`date`) INTO datINI FROM vn2008.`time` t WHERE t.period = period; SELECT TIMESTAMP(MAX(`date`),'23:59:59') INTO datFIN FROM vn2008.`time` t WHERE t.period = period; @@ -37288,14 +36361,8 @@ BEGIN --- Año 2014 -/* -IF datSTART = '2013-12-31' THEN - SET datSTART = '2013-12-30' ; -END IF; -*/ SET datEND = TIMESTAMPADD(DAY,7,datSTART); @@ -37510,7 +36577,7 @@ BEGIN JOIN travel TR ON TR.id = E.travel_id JOIN (SELECT Consignatario, Id_Consigna FROM Consignatarios WHERE Id_Cliente = IdCliente AND Predeterminada LIMIT 1) Consigna WHERE Id_Entrada = IdEntrada; - -- JOIN Agencias AG ON AG.Id_Agencia = TR.agency_id + SELECT LAST_INSERT_ID() INTO idTICKET; @@ -37548,7 +36615,7 @@ BEGIN DECLARE done BIT DEFAULT 0; DECLARE IdEntrada INT(10); --- Declaro el cursor para las entradas + DECLARE cursor_entradas CURSOR FOR SELECT Id_Entrada FROM Entradas E @@ -37590,15 +36657,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticket_iva`(billing_date DATE) BEGIN -/** - * Calcula la base imponible, el IVA y el recargo de equivalencia para - * un conjunto de tickets. - * - * @param table ticket_tmp(ticket_id) Tabla con el listado de tickets - * @param billing_date Fecha de facturación - * - * @return table ticket_iva - **/ + DECLARE clean CONDITION FOR SQLSTATE 'HY000'; DECLARE CONTINUE HANDLER FOR clean @@ -37612,7 +36671,7 @@ BEGIN SET billing_date = IFNULL(billing_date, CURDATE()); - -- Calcula el tipo de IVA para cada grupo en cada país. + CREATE TEMPORARY TABLE iva_group (INDEX idx USING HASH (Id_Pais, iva_group_id)) @@ -37627,7 +36686,7 @@ BEGIN ) t GROUP BY Id_Pais, iva_group_id; - -- Calcula el impuesto para cada tipo de IVA en cada país. + CREATE TEMPORARY TABLE iva_tax (INDEX idx USING HASH (Id_Pais, tipo)) @@ -37636,12 +36695,12 @@ BEGIN SELECT Id_Pais, tipo, iva * 0.01 AS iva, recargo * 0.01 AS re FROM iva_codigo JOIN iva_tipo t ON t.id = iva_tipo_id - WHERE Fecha <= billing_date -- AND iva jgf 2016-06-09 fallaba con los articulos exentos de iva + WHERE Fecha <= billing_date ORDER BY fecha DESC, recargo DESC ) t GROUP BY Id_Pais, tipo; - -- Calcula el IVA y el recargo desglosado para cada ticket. + CREATE TEMPORARY TABLE ticket_iva (INDEX idx USING HASH (ticket_id)) @@ -37689,7 +36748,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS `Locator`; --- usar ticket_total crear ticket_tmp(ticket_id) + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; CREATE TEMPORARY TABLE `ticket_tmp` ENGINE = MEMORY @@ -37712,13 +36771,12 @@ BEGIN LEFT JOIN Agencias a ON a.Id_Agencia = t1.Id_Agencia LEFT JOIN agency ag ON ag.agency_id = a.agency_id LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ - -- para pte recogida + LEFT JOIN warehouse w_out on w_out.id = t1.warehouse_id LEFT JOIN warehouse w ON w.id = wh_ LEFT JOIN warehouse_pickup wp on wp.agency_id = t1.Id_Agencia and wp.warehouse_id = wh_ - WHERE /*t1.Fecha BETWEEN TIMESTAMPADD(DAY,-5,DATE(date_)) AND TIMESTAMPADD(DAY,days,DATE(date_)) - AND */ IFNULL(aw.Vista,a.Vista) > 0 + WHERE IFNULL(aw.Vista,a.Vista) > 0 AND ((t1.Anotadoencaja = FALSE AND t1.Etiquetasemitidas = FALSE AND e.ticket_id IS NULL @@ -37818,14 +36876,14 @@ BEGIN SET Observaciones = CONCAT('F5 PERDIDO ',IFNULL(Observaciones,'')); - -- CODIGO 100 + UPDATE `Locator` JOIN Movimientos using(Id_Ticket) SET Observaciones = 'CODIGO 100' WHERE Id_Article = 100; - -- ENTRADAS + INSERT INTO `Locator`(Fecha_Simple, Id_Ticket, Agencia, Id_Cliente, Alias, PedidoImpreso, CodigoTrabajador, Fecha, Estado, Consignatario, Vista, PROVINCIA,Riesgo) SELECT DISTINCT v_compres.shipment AS Fecha_Simple, v_compres.Id_Entrada AS Id_Ticket, warehouse.name, v_compres.Id_Proveedor, v_compres.ref AS Alias, v_compres.Pedida AS PedidoImpreso, v_compres.Id_Trabajador AS CodigoTrabajador, v_compres.shipment AS Fecha, 0 AS problem, v_compres.ref AS Consignatario, 1, 'TRASLADO',0 @@ -37869,7 +36927,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS `Locator`; --- usar ticket_total crear ticket_tmp(ticket_id) + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; CREATE TEMPORARY TABLE `ticket_tmp` ENGINE = MEMORY @@ -37878,34 +36936,7 @@ BEGIN AND t.Fecha BETWEEN v_date_start AND v_date_future; CALL ticket_total(); - /* - DROP TEMPORARY TABLE IF EXISTS ticket_total2; - CREATE TEMPORARY TABLE `ticket_total2` - ENGINE = MEMORY - SELECT t.* FROM ticket_total t - LEFT JOIN Tickets t1 ON t1.Id_Ticket = t.ticket_id - LEFT JOIN Tickets_state ts ON ts.Id_Ticket = t1.Id_Ticket - LEFT JOIN vncontrol.inter i ON ts.inter_id = i.inter_id - LEFT JOIN state s ON s.id = i.state_id - LEFT JOIN expeditions e ON e.ticket_id = t.ticket_id - LEFT JOIN Agencias a ON a.Id_Agencia = t1.Id_Agencia - LEFT JOIN agency ag ON ag.agency_id = a.agency_id - LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ - -- para pte recogida - LEFT JOIN warehouse w_out on w_out.id = t1.warehouse_id - LEFT JOIN warehouse w ON w.id = wh_ - LEFT JOIN warehouse_pickup wp on wp.agency_id = t1.Id_Agencia and wp.warehouse_id = wh_ - - WHERE t1.Fecha BETWEEN TIMESTAMPADD(DAY,-5,DATE(date_)) AND TIMESTAMPADD(DAY,days,DATE(date_)) - AND IFNULL(aw.Vista,a.Vista) > 0 - AND ((t1.Anotadoencaja = FALSE - AND t1.Etiquetasemitidas = FALSE - AND e.ticket_id IS NULL - AND t1.warehouse_id = wh_ - AND IFNULL(s.order,0) < 2) - OR (ts.state_name = 'Pte Recogida' - AND wp.warehouse_id IS NOT NULL)); - */ + SELECT t.* FROM ticket_total t LEFT JOIN Tickets t1 ON t1.Id_Ticket = t.ticket_id LEFT JOIN Tickets_state ts ON ts.Id_Ticket = t1.Id_Ticket @@ -37915,7 +36946,7 @@ BEGIN LEFT JOIN Agencias a ON a.Id_Agencia = t1.Id_Agencia LEFT JOIN agency ag ON ag.agency_id = a.agency_id LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ - -- para pte recogida + LEFT JOIN warehouse w_out on w_out.id = t1.warehouse_id LEFT JOIN warehouse w ON w.id = wh_ LEFT JOIN warehouse_pickup wp on wp.agency_id = t1.Id_Agencia and wp.warehouse_id = wh_ @@ -37925,113 +36956,8 @@ BEGIN AND ((t1.Anotadoencaja = FALSE AND t1.Etiquetasemitidas = FALSE AND e.ticket_id IS NULL)); - /* AND t1.warehouse_id = wh_ - AND IFNULL(s.order,0) < 2) - OR (ts.state_name = 'Pte Recogida' - AND wp.warehouse_id IS NOT NULL))*/ - /* - DROP TEMPORARY TABLE IF EXISTS tmp.risk; - CREATE TEMPORARY TABLE tmp.risk - SELECT Id_Cliente, SUM(amount) risk - FROM Clientes c - JOIN ( - SELECT customer_id, SUM(amount) amount - FROM bi.customer_risk - GROUP BY customer_id - UNION ALL - SELECT Id_Cliente, SUM(Entregado) - FROM Recibos - WHERE Fechacobro > v_date_end - GROUP BY Id_Cliente - UNION ALL - SELECT t.Id_Cliente, SUM(total) - FROM ticket_total tt - JOIN Tickets t ON tt.ticket_id = t.Id_Ticket - WHERE t.Fecha <= v_date_end - GROUP BY t.Id_Cliente - UNION ALL - SELECT t.customer_id, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) - FROM hedera.tpv_transaction t - WHERE t.receipt_id IS NULL - AND t.status = 'ok' - GROUP BY t.customer_id - ) t ON c.Id_Cliente = t.customer_id - WHERE c.activo != FALSE - GROUP BY c.Id_Cliente; - - CREATE TEMPORARY TABLE `Locator` - ENGINE = MEMORY - SELECT Congelado, Credito, risk Riesgo, Greuge, T.*,IFNULL(state_name,'libre') AS Estado, - Codigotrabajador, DATE(T.Fecha) AS Fecha_Simple, Averiguar_ComercialCliente_IdTicket(T.Id_Ticket) AS Comercial,C.calidad,UCASE(LEFT(w_out.`name`,5)) w_out - FROM Clientes C - INNER JOIN - ( - SELECT - t.Id_Ticket, t.Id_Cliente, t.warehouse_id, t.Fecha, t.Alias, - NULL Notas, t.Factura, t.factura_id, t.Anotadoencaja, t.Id_Consigna, t.Id_Trabajador, - t.Observaciones, t.Firmado, t.Etiquetasemitidas, t.PedidoImpreso, t.Bultos, t.Localizacion, - t.Hora, t.odbc_date, t.blocked, t.Solucion, t.Id_Ruta, t.Prioridad, t.priority, - t.empresa_id, t.Id_Agencia, - CS.Consignatario, IFNULL(aw.Vista,a.Vista) Vista,a.Agencia, DATEFEC AS Hora_MAX , - SUM(IF(Movimientos.OK = 0, 1, 0)) AS `lines`, - tt.total AS Importe, - IF(reino_id IN (5, 1), 0,tt.total) AS Plantas, - 0 AS inacabable, - CS.CODPOSTAL, CS.POBLACION, p.name PROVINCIA, a.Vista VistaTicket,p.zone - - FROM Tickets t - JOIN ticket_total2 tt ON tt.ticket_id = t.Id_Ticket - INNER JOIN Consignatarios CS USING(Id_Consigna) - LEFT JOIN province p USING(province_id) - LEFT JOIN Movimientos USING(Id_Ticket) - LEFT JOIN Articles on Movimientos.Id_Article = Articles.Id_Article - LEFT JOIN Tipos using(tipo_id) - LEFT JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia - LEFT JOIN agency ag ON ag.agency_id = a.agency_id - LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ - - GROUP BY t.Id_Ticket - ) T USING(Id_Cliente) - LEFT JOIN Tickets_state ts ON ts.Id_Ticket = T.Id_Ticket - LEFT JOIN Trabajadores Tb ON Tb.Id_Trabajador = T.Id_Trabajador - LEFT JOIN tmp.risk as Peligros USING(Id_Cliente) - JOIN warehouse w_out on w_out.id = T.warehouse_id - LEFT JOIN - ( - SELECT Id_Cliente, SUM(Importe) AS Greuge FROM Greuges - GROUP BY Id_Cliente - ) AS Agravios USING(Id_Cliente); - - - ALTER TABLE `Locator` ADD PRIMARY KEY(Id_Ticket); - - UPDATE `Locator` JOIN - ( - SELECT d.Id_Ticket from Tickets_dits d - JOIN Tickets t using(Id_Ticket) - LEFT JOIN Agencias a using(Id_Agencia) - LEFT JOIN expeditions e on e.ticket_id = d.Id_Ticket - WHERE Fecha BETWEEN CURDATE() AND TIMESTAMP(curdate(),'23:59:59') - AND idaccion_dits = 18 AND ticket_id is null - AND t.warehouse_id = 1 - AND NOT Etiquetasemitidas - AND d.ODBC_DATE < TIMESTAMPADD(HOUR,-2, now()) - AND Vista in (1,2)) sub using(Id_Ticket) - SET Observaciones = CONCAT('F5 PERDIDO ',IFNULL(Observaciones,'')); - - - -- ENTRADAS - INSERT INTO `Locator`(Fecha_Simple, Id_Ticket, Agencia, Id_Cliente, Alias, PedidoImpreso, CodigoTrabajador, Fecha, Estado, Consignatario, Vista, PROVINCIA,Riesgo) - SELECT DISTINCT v_compres.shipment AS Fecha_Simple, v_compres.Id_Entrada AS Id_Ticket, warehouse.name, v_compres.Id_Proveedor, - v_compres.ref AS Alias, v_compres.Pedida AS PedidoImpreso, v_compres.Id_Trabajador AS CodigoTrabajador, v_compres.shipment AS Fecha, 0 AS problem, v_compres.ref AS Consignatario, 1, 'TRASLADO',0 - FROM v_compres - INNER JOIN warehouse ON v_compres.warehouse_id = warehouse.id - WHERE warehouse_id_out = wh_ AND v_compres.Confirmada = False - AND v_compres.shipment >= date_; - - - -*/ + + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; DROP TEMPORARY TABLE IF EXISTS ticket_total; DROP TEMPORARY TABLE IF EXISTS ticket_total2; @@ -38063,18 +36989,7 @@ BEGIN SELECT timeSTART, 'ARRANCA'; DROP TEMPORARY TABLE IF EXISTS `Locator`; -/* --- usar ticket_total crear ticket_tmp(ticket_id) - DROP TEMPORARY TABLE IF EXISTS ticket_tmp; - CREATE TEMPORARY TABLE `ticket_tmp` - (INDEX idx USING HASH (ticket_id)) - ENGINE = MEMORY - SELECT Id_Ticket ticket_id FROM Tickets t - WHERE t.Factura IS NULL - AND t.Fecha BETWEEN v_date_start AND v_date_future; - - CALL ticket_total(); - */ + DROP TEMPORARY TABLE IF EXISTS ticket_total; CREATE TEMPORARY TABLE ticket_total @@ -38202,7 +37117,7 @@ SET Observaciones = CONCAT('F5 PERDIDO ',IFNULL(Observaciones,'')); SELECT TIMEDIFF(NOW(), timeSTART), 'UPDATE'; --- ENTRADAS + INSERT INTO `Locator`(Fecha_Simple, Id_Ticket, Agencia, Id_Cliente, Alias, PedidoImpreso, CodigoTrabajador, Fecha, Estado, Consignatario, Vista, PROVINCIA,Riesgo) SELECT DISTINCT v_compres.shipment AS Fecha_Simple, v_compres.Id_Entrada AS Id_Ticket, warehouse.name, v_compres.Id_Proveedor, v_compres.ref AS Alias, v_compres.Pedida AS PedidoImpreso, v_compres.Id_Trabajador AS CodigoTrabajador, v_compres.shipment AS Fecha, 0 AS problem, v_compres.ref AS Consignatario, 1, 'TRASLADO',0 @@ -38212,7 +37127,7 @@ WHERE warehouse_id_out = wh_ AND v_compres.Confirmada = False AND v_compres.shipment >= date_; SELECT TIMEDIFF(NOW(), timeSTART), 'ENTRADAS'; --- TICKET PTE RECOGIDA + INSERT INTO `Locator`(Fecha_Simple , Id_Ticket , Agencia @@ -38236,7 +37151,7 @@ SELECT date(t.Fecha) , t.Id_Cliente , t.Alias , t.PedidoImpreso - , UCASE(LEFT(w_out.name,5)) as CodigoTrabajador -- es el almacen de origen + , UCASE(LEFT(w_out.name,5)) as CodigoTrabajador , t.Fecha , 0 as Estado , t.Alias @@ -38261,7 +37176,7 @@ JOIN order by odbc_date desc, state_id desc ) sub group by Id_Ticket - having state_id = 15 -- Pendiente de entrega + having state_id = 15 ) sub2 using(Id_Ticket); SELECT TIMEDIFF(NOW(), timeSTART), 'PTE RECOGIDA'; @@ -38298,7 +37213,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `ticket_new`( , IN datLANDING DATE , OUT newTICKET INT) BEGIN --- DEPRECATED usar ticketCreate + DECLARE boolaux TINYINT; SET boolaux = If(IdC = 200 Or IdC = 400 Or intTIPO = 23, True, False); @@ -38364,7 +37279,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `ticket_new_complet`( , IN idRUTA INT , OUT newTICKET INT) BEGIN --- DEPRECATED usar ticketCreate + DECLARE boolaux TINYINT; @@ -38426,7 +37341,7 @@ FROM vn2008.Movimientos m JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento) INNER JOIN bi.tarifa_componentes tc ON mc.Id_Componente = tc.Id_Componente WHERE m.Id_Ticket = idTICKET -AND tc.tarifa_componentes_series_id = 6; -- agencia +AND tc.tarifa_componentes_series_id = 6; @@ -38483,13 +37398,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticket_total`() BEGIN -/** - * Calcula el total con IVA de un conjunto de tickets. - * - * @param table ticket_tmp(ticket_id) Tabla con el listado de tickets - * - * @return table ticket_total - **/ + DROP TEMPORARY TABLE IF EXISTS ticket_total; @@ -38690,7 +37599,7 @@ BEGIN -#Vamos a calcular el porcentaje a incrementar las cantidades de las lineas de movimiento para inflar / desinflar la base final + DECLARE dblBASE_INICIAL DOUBLE DEFAULT 0; DECLARE dblBASE_FINAL DOUBLE DEFAULT 0; @@ -38705,11 +37614,11 @@ WHERE Id_Ticket = intIDTICKET; SET dblBASE_FINAL = dblBASE_INICIAL; -#Eliminamos lineas a 0 + DELETE FROM Movimientos WHERE Cantidad = 0 AND Id_Ticket = intIDTICKET; -# Vamos a ir probando incrementos paulatinos hasta que encontremos el que supera lo pedido, teniendo en cuenta el sentido del incremento + IF dblINCREMENTO < 0 THEN @@ -38787,7 +37696,7 @@ BEGIN CALL buy_tarifas_table(i_entrada); - -- Traslado en almacen origen + DROP TEMPORARY TABLE IF EXISTS buy_edi_temp; @@ -38916,7 +37825,7 @@ BEGIN CREATE INDEX tindex USING HASH ON Traslados (article_id); --- Inventario en el warehouse destino + IF dateShipment >= CURDATE() THEN CALL cache.visible_refresh(v_calc_visible, TRUE, warehouseLanding); @@ -38928,7 +37837,7 @@ BEGIN SET vis2 = v.visible, dis2 = a.available; END IF; --- --------------------------------------------- + SELECT t.*, @@ -38993,7 +37902,7 @@ BEGIN CALL buy_tarifas_table(i_entrada); - -- Traslado en almacen origen + DROP TEMPORARY TABLE IF EXISTS buy_edi_temp; @@ -39011,7 +37920,7 @@ BEGIN IF dateShipment >= CURDATE() THEN - -- CALL `cache`.available_refresh(v_calc_available, TRUE, warehouseShipment, dateShipment); + CALL availableTraslate(warehouseShipment, dateShipment,NULL); CALL `cache`.visible_refresh(v_calc_visible,TRUE,warehouseShipment); DROP TEMPORARY TABLE IF EXISTS tmp_item; @@ -39117,7 +38026,7 @@ BEGIN CREATE INDEX tindex USING HASH ON Traslados (article_id); --- Inventario en el warehouse destino + IF dateShipment >= CURDATE() THEN CALL cache.visible_refresh(v_calc_visible, TRUE, warehouseLanding); @@ -39132,7 +38041,7 @@ BEGIN SET vis2 = v.visible, dis2 = a.available; END IF; --- --------------------------------------------- + SELECT t.*, @@ -39196,7 +38105,7 @@ BEGIN CALL buy_tarifas_table(i_entrada); - -- Traslado en almacen origen + DROP TEMPORARY TABLE IF EXISTS buy_edi_temp; @@ -39215,7 +38124,7 @@ BEGIN IF dateShipment >= CURDATE() THEN CALL `cache`.available_refresh(v_calc_available, TRUE, warehouseShipment, dateShipment); - -- CALL `cache`.availableTraslate(warehouseShipment, dateShipment,NULL); + CALL `cache`.visible_refresh(v_calc_visible,TRUE,warehouseShipment); DROP TEMPORARY TABLE IF EXISTS tmp_item; CREATE TEMPORARY TABLE tmp_item (UNIQUE INDEX i USING HASH (item_id)) ENGINE = MEMORY @@ -39320,7 +38229,7 @@ BEGIN CREATE INDEX tindex USING HASH ON Traslados (article_id); --- Inventario en el warehouse destino + IF dateShipment >= CURDATE() THEN CALL cache.visible_refresh(v_calc_visible, TRUE, warehouseLanding); @@ -39332,7 +38241,7 @@ BEGIN SET vis2 = v.visible, dis2 = a.available; END IF; --- --------------------------------------------- + SELECT t.*, @@ -39422,7 +38331,7 @@ SET intEntrada = IF(intEntrada = 0, i_entrada_PCA + i_entrada_FV, intEntrada); select c_land.Id_Cubo,c_land.Packing,c_land.grouping,c_land.Costefijo,c_land.Comisionfija,c_land.Portefijo,c_land.caja,SUM(c_land.Etiquetas) Etiquetas,c_land.EmbalajeFijo, c_land.novincular,c_land.buy_edi_id,c_land.Id_Article,SUM(c_land.Cantidad) Cantidad from - -- Entradas que llegan a vnh + Compres c_land JOIN Entradas e_land ON c_land.Id_Entrada = e_land.Id_Entrada AND c_land.Id_Article = intArticle @@ -39431,21 +38340,21 @@ SET intEntrada = IF(intEntrada = 0, i_entrada_PCA + i_entrada_FV, intEntrada); JOIN Cubos cu ON cu.Id_Cubo = c_land.Id_Cubo WHERE - -- Entradas que llegan a vnh + (t_land.warehouse_id = 7 AND t_land.landing = CURDATE()) ) land - LEFT JOIN -- Entradas que salen de vnh + LEFT JOIN (SELECT SUM(c_ship.Etiquetas) Etiquetas,c_ship.Packing,SUM(c_ship.Cantidad) Cantidad FROM Compres c_ship LEFT JOIN Entradas e_ship ON c_ship.Id_Entrada = e_ship.Id_Entrada AND c_ship.Id_Article = intArticle LEFT JOIN travel t_ship ON t_ship.id = e_ship.travel_id WHERE t_ship.warehouse_id_out = 7 AND t_ship.shipment = CURDATE() - -- Entrada destino + ) ship ON TRUE JOIN Entradas e2 ON e2.Id_Entrada = intEntrada JOIN travel t ON t.id = e2.travel_id JOIN Agencias a ON t.agency_id = a.Id_Agencia - -- Ventas ese dia en VNH + LEFT JOIN (SELECT sum(Cantidad) as Ventas FROM Movimientos m @@ -39475,74 +38384,14 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `traslado_label_2`(IN i_compra INTEGER,IN i_entrada_FV INTEGER, IN i_entrada_PCA INTEGER, i_cantidad INTEGER) BEGIN --- PAK 2015-09-15 + DECLARE idARTICLE INT; SELECT Id_Article INTO idARTICLE FROM Compres WHERE Id_Compra = i_compra; call traslado_label_3(idARTICLE,i_entrada_FV,i_entrada_PCA); -/* -DECLARE i_entrada_shipment INTEGER; -DECLARE i_entrada_landing INTEGER; -DECLARE i_FV INTEGER; -SELECT c.Id_Entrada, FV INTO i_entrada_shipment, i_FV -FROM Compres c -JOIN Articles a ON a.Id_Article = c.Id_Article -JOIN Tipos tp ON tp.tipo_id = a.tipo_id -WHERE Id_Compra = i_compra; - -SET i_entrada_landing = IF(i_FV, i_entrada_FV,i_entrada_PCA); - -SET i_entrada_landing = IF(i_entrada_landing = 0, i_entrada_PCA + i_entrada_FV, i_entrada_landing); - -IF i_entrada_landing > 0 THEN - - CALL buy_tarifas_table(i_entrada_landing); - - INSERT INTO Compres (Id_Article, Etiquetas, Cantidad, Id_Entrada, Id_Cubo, Packing,grouping,caja, - Costefijo, Portefijo, Embalajefijo, Comisionfija, Productor, S3, S4, S2, novincular,k01,k02,k03,k04,buy_edi_id) - SELECT - Id_Article, - i_cantidad / Packing, - i_cantidad, - i_entrada_landing, - Id_Cubo, - Packing, - c.grouping, - c.caja, - @cost := ROUND(IFNULL(Costefijo, 0) + IFNULL(Comisionfija, 0) + IFNULL(Portefijo, 0), - 3) Costefij, - @porte := ROUND((@cm3:= cm3_2(Id_Cubo, Id_Article)) * a.m3 / 1000000 / Packing, - 3) Porte, - EmbalajeFijo AS Embalaje, - @comision := ROUND(Costefijo * e2.comision / 100, 3) Comision, - Productor, - S3, - S4, - S2, - novincular,c.k01,c.k02,c.k03,c.k04,c.buy_edi_id - FROM - Compres c - JOIN - Entradas e USING (Id_Entrada) - JOIN - Cubos cu USING (Id_Cubo) - JOIN - Entradas e2 ON e2.Id_Entrada = i_entrada_landing - JOIN - travel t ON t.id = e2.travel_id - JOIN - Agencias a ON t.agency_id = a.Id_Agencia - WHERE - Id_Compra = i_compra and i_cantidad; - - -CALL buy_tarifas(LAST_INSERT_ID()); - -END IF; -*/ END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -39561,7 +38410,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `traslado_label_3`(IN intArticle INTEGER,IN i_entrada_FV INTEGER, IN i_entrada_PCA INTEGER) BEGIN --- DEPRECATED usar traslado_label + DECLARE intEntrada INTEGER; DECLARE i_FV INTEGER; @@ -39601,7 +38450,7 @@ SET intEntrada = IF(intEntrada = 0, i_entrada_PCA + i_entrada_FV, intEntrada); select c_land.Id_Cubo,c_land.Packing,c_land.grouping,c_land.Costefijo,c_land.Comisionfija,c_land.Portefijo,c_land.caja,SUM(c_land.Etiquetas) Etiquetas,c_land.EmbalajeFijo, c_land.novincular,c_land.buy_edi_id,c_land.Id_Article,SUM(c_land.Cantidad) Cantidad from - -- Entradas que llegan a vnh + Compres c_land JOIN Entradas e_land ON c_land.Id_Entrada = e_land.Id_Entrada AND c_land.Id_Article = intArticle @@ -39610,21 +38459,21 @@ SET intEntrada = IF(intEntrada = 0, i_entrada_PCA + i_entrada_FV, intEntrada); JOIN Cubos cu ON cu.Id_Cubo = c_land.Id_Cubo WHERE - -- Entradas que llegan a vnh + (t_land.warehouse_id = 7 AND t_land.landing = CURDATE()) ) land - LEFT JOIN -- Entradas que salen de vnh + LEFT JOIN (SELECT SUM(c_ship.Etiquetas) Etiquetas,c_ship.Packing,SUM(c_ship.Cantidad) Cantidad FROM Compres c_ship LEFT JOIN Entradas e_ship ON c_ship.Id_Entrada = e_ship.Id_Entrada AND c_ship.Id_Article = intArticle LEFT JOIN travel t_ship ON t_ship.id = e_ship.travel_id WHERE t_ship.warehouse_id_out = 7 AND t_ship.shipment = CURDATE() - -- Entrada destino + ) ship ON TRUE JOIN Entradas e2 ON e2.Id_Entrada = intEntrada JOIN travel t ON t.id = e2.travel_id JOIN Agencias a ON t.agency_id = a.Id_Agencia - -- Ventas ese dia en VNH + LEFT JOIN (SELECT sum(Cantidad) as Ventas FROM Movimientos m @@ -39822,15 +38671,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `travel_tree`(vDate DATE, vAddress INT, vAgency 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 - * @param vAgency Id de subagencia - * @table travel_tree Lista de almacenes disponibles - */ + DECLARE vDone BOOL; DECLARE vWh SMALLINT; @@ -39850,7 +38691,7 @@ BEGIN ) ENGINE = MEMORY; - -- Establecemos los almacenes y las fechas que van a entrar + OPEN vCur; @@ -39905,14 +38746,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `travel_tree_list`(vAddress INT, vDate DATE) BEGIN -/** - * Devuelve el listado de agencias disponibles para la fecha - * y dirección pasadas. - * - * @param vAddress Id de dirección de envío, %NULL si es recogida - * @param vDate Fecha de recogida - * @table agency_list Listado de agencias disponibles - */ + DECLARE vAgency INT; DECLARE vDone BOOL DEFAULT FALSE; @@ -39977,14 +38811,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `travel_tree_shipment`(v_date DATE, v_consigna INT, v_agency INT, v_warehouse INT) BEGIN -/** - * Devuelve una tabla temporal con el dia de recepcion para v_date. - * - * @param v_date Fecha de preparacion de mercancia - * @param v_consigna Id de consignatario, %NULL para recogida - * @param v_agency Id agencia - * @table travel_tree_shipment Datos de recepción - */ + DROP TEMPORARY TABLE IF EXISTS travel_tree_shipment; CREATE TEMPORARY TABLE travel_tree_shipment ENGINE = MEMORY @@ -40095,9 +38922,9 @@ WHILE NOT done DO SELECT LAST_INSERT_ID() INTO myNuevaEntrada; INSERT INTO Compres(Id_Entrada, Id_Article, Cantidad, Costefijo, Portefijo, Embalajefijo, Novincular, Comisionfija, Etiquetas, Packing - ,grouping, caja, /*container_id, */ Nicho, Id_Cubo, Tarifa1,Tarifa2,Tarifa3, PVP, Productor) + ,grouping, caja, Nicho, Id_Cubo, Tarifa1,Tarifa2,Tarifa3, PVP, Productor) SELECT myNuevaEntrada, Id_Article, Cantidad, Costefijo, Portefijo, Embalajefijo, Novincular, Comisionfija, Etiquetas, Packing - ,grouping, caja,/* container_id, */ Nicho, Id_Cubo, Tarifa1,Tarifa2,Tarifa3, PVP, Productor + ,grouping, caja, Nicho, Id_Cubo, Tarifa1,Tarifa2,Tarifa3, PVP, Productor FROM Compres WHERE Id_Entrada = myEntrada; @@ -40192,13 +39019,8 @@ SELECT Id_Article article_id,SUM(Cantidad) amount FROM ( UNION ALL - -- JGF Error cuando se pedia para una fecha futura 30/06/14 - /*SELECT Id_Article,-Cantidad - FROM Compres c - JOIN Entradas e USING(Id_Entrada) - JOIN travel t ON t.id = e.travel_id - WHERE shipment BETWEEN date_inv AND timestampadd(DAY,-1,d_fecha) - AND warehouse_id_out = i_wh AND NOT Redada*/ + + SELECT Id_Article,-Cantidad FROM Compres c JOIN Entradas e USING(Id_Entrada) @@ -40207,13 +39029,9 @@ SELECT Id_Article article_id,SUM(Cantidad) amount FROM ( AND warehouse_id_out = i_wh AND NOT Redada AND delivered UNION ALL - -- JGF Error cuando se pedia para una fecha futura 30/06/14 + - /*SELECT Id_Article, -Cantidad - FROM Movimientos m - JOIN Tickets t USING(Id_Ticket) - WHERE Fecha BETWEEN date_inv AND timestampadd(DAY,-1,d_fecha) - AND warehouse_id = i_wh */ + SELECT Id_Article, -Cantidad FROM Movimientos m JOIN Tickets t USING(Id_Ticket) @@ -40223,10 +39041,9 @@ SELECT Id_Article article_id,SUM(Cantidad) amount FROM ( ) t GROUP BY article_id; -/* -SELECT * from stock_actual;*/ --- TEMPORARY + + CALL hedera.sql_query (sql_printf(' CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.tmp_ubicator_stock AS SELECT A.Id_Article,A.Article, T.Id_Cubo,IF(Z > 0,Z,0) as z,x,y, @@ -40286,15 +39103,15 @@ DECLARE intContador INT DEFAULT 1; WHERE W=int_X and D=int_Y and Id_Estanterias=intId_Estanterias and Id_Baldas=intId_Baldas and NumEstanterias=contId_Estanterias ORDER BY H DESC LIMIT 1; - WHILE (int_Z*intContador0) DO SET posZ=posZ+int_Z; - -- INSERT INTO Ubicator_Cajas - -- (Id_Estanterias,NumEtiquetas,W ,D,H ,Id_Cubo ,Id_Article,POSX,POSY,POSZ,Id_Article_aux ,Id_Baldas,modelo,Article,Medida) - -- VALUES (intId_Estanterias ,1,posX,posY,posZ,strId_Cubo ,intId_Article,0,0,0,0,intId_Baldas,strmodelo,'',int_Z); + + + INSERT INTO Ubicator_Cajas (Id_Estanterias,Id_Baldas,modelo,W ,D,H ,Id_Cubo,X,Y,Z,Medida,Id_Article,Article,numEstanterias) VALUES (intId_Estanterias,intId_Baldas,strmodelo,posX,posY,posZ,strId_Cubo,x_cubo,y_cubo,int_Z,null,intId_Article,'',contId_Estanterias); SET intnumcubosocup=intnumcubosocup+1; @@ -40317,8 +39134,8 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ubicator_ordenacion`(date DATE,boolORDALFA TINYINT(1), intWAREHOUSE INT,strFILTRO NVARCHAR(255), boolESAPILABLE TINYINT(1),boolESABIERTO TINYINT(1),intCmNichoExtra SMALLINT,inEstanteria SMALLINT,strOrdenacion varchar(255)) BEGIN --- Inicializo variables --- boolESABIERTO --> permite apilar las cajas de diferentes articulos (cerrada) para aprovechar el espacio. + + DECLARE intPOSX,intPOSY,intPOSZ,intSUMAH,intCMNICHO_EXTRA INT DEFAULT 0; DECLARE intId_Estanterias,intW,intD,intId_Baldas,intH,intEtiquetas, intX,intY,intZ,ReturnX,ReturnY,ReturnZ,Cantidad,intId_Baldas_aux INT DEFAULT 0; @@ -40331,34 +39148,31 @@ DECLARE strArticle VARCHAR(50); DECLARE boolCabeCaja,boolPasarZ,boolPasarX,boolNoNextRecord,fin BOOLEAN DEFAULT FALSE; DECLARE intMedida,intX_ant,intY_ant,IntZ_ant INT(10) DEFAULT 0; --- ejemplo: call ubicator_ordenacion(CURDATE(),false,1,'tipo_id = 2',TRUE,FALSE,2,1) --- Declaro el cursor para leer las estanterias y las baldas ordenadas por las baldas. (La primera es la de arriba). + + DECLARE cursor_estanterias CURSOR FOR SELECT Id_Estanterias,w,d,modelo,Id_Baldas,h FROM Estanterias INNER JOIN Baldas USING (Id_Estanterias) WHERE Id_Estanterias=inEstanteria ORDER BY Id_Estanterias,Id_Baldas; --- Declaro el cursor para leer el recorset de los cubos a colocar en las estanterias obteniendo las variables X,Y,Z del cubo. -DECLARE cursor_ubicator CURSOR FOR SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM ubicator_stock; - -- Creo la tabla temporal donde devuelvo la ordenación de las cajas. -DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; -- handler para el cursor de las estanterias y baldas +DECLARE cursor_ubicator CURSOR FOR SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM ubicator_stock; + + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; DROP TEMPORARY TABLE IF EXISTS Ubicator_Cajas; -/* - CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_Cajas (Id_Estanterias INT,Id_Baldas SMALLINT,modelo varchar(255), - W SMALLINT,D SMALLINT,H SMALLINT,Id_Cubo VARCHAR(10),X SMALLINT,Y SMALLINT,Z SMALLINT,Medida SMALLINT,Id_Article INT(11),Article varchar(50),NumEstanterias SMALLINT); -*/ + CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_Cajas(Id_Estanterias INT,Id_Baldas SMALLINT,modelo varchar(255), W SMALLINT,D SMALLINT,H SMALLINT,Id_Cubo VARCHAR(10),X SMALLINT,Y SMALLINT,Z SMALLINT,Medida SMALLINT, Id_Article INT(11),Article varchar(50),NumEstanterias SMALLINT,NumEtiquetas INT,POSX INT (11),POSY INT(11), POSZ INT(11),Id_Article_aux int(11)); --- Creo la tabla temporal donde voy a insertar las cajas que no caben en las estanterias. + DROP TEMPORARY TABLE IF EXISTS Ubicator_CajasNoCaben; CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_CajasNoCaben (Id_Cubo VARCHAR(10),Id_Estanteria SMALLINT); -CALL ubicator (intWAREHOUSE,date,strFILTRO); -- Ejecuto el procedimiento de stock para recorrer los articulos con las cajas. +CALL ubicator (intWAREHOUSE,date,strFILTRO); DROP TEMPORARY TABLE IF EXISTS ubicator_stock; @@ -40369,22 +39183,22 @@ PREPARE stmt1 FROM @SQL; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; - -- IF (boolORDALFA) THEN - -- CREATE TEMPORARY TABLE IF NOT EXISTS ubicator_stock SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,IF(Z=0,Medida,Z) Z,Article,Medida FROM tmp_ubicator_stock - -- ORDER BY Article,Medida; - -- ELSE - -- CREATE TEMPORARY TABLE IF NOT EXISTS ubicator_stock SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,IF(Z=0,Medida,Z) Z,Article,Medida FROM tmp_ubicator_stock - -- ORDER BY Id_Article; - -- END IF; --- Open Recordsets + + + + + + + + OPEN cursor_estanterias; OPEN cursor_ubicator; REPEAT FETCH cursor_estanterias INTO intId_Estanterias,intW,intD,strmodelo,intId_Baldas,intH; - IF (done) THEN -- Si llega a la ultima balda, empieza de nuevo. + IF (done) THEN CLOSE cursor_estanterias; SET done=FALSE; OPEN cursor_estanterias; @@ -40392,7 +39206,7 @@ REPEAT FETCH cursor_estanterias INTO intId_Estanterias,intW,intD,strmodelo,intId_Baldas,intH; END IF; - -- Obtengo la altura absoluta de la balda. + SELECT CASE WHEN (SUM(H)>=0) THEN SUM(H) ELSE 0 END As suma INTO intSUMAH FROM Baldas WHERE Id_Estanterias=intId_Estanterias and Baldas.Id_Baldas>intId_Baldas; @@ -40410,53 +39224,53 @@ REPEAT SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM ubicator_stock ORDER BY Id_Article; SET Cantidad=0; END IF; - -- SET Medida=intZ; - -- 1. Compruebo que cabe la caja en la estanteria + + SELECT ubicator_cabecaja(intX,intY,intZ,intW,intD,intH) INTO boolCabeCaja; - IF (NOT boolCabeCaja) THEN -- Compruebo si la caja cabe en la estanteria sino la coloco en una tabla temporal. + IF (NOT boolCabeCaja) THEN INSERT INTO Ubicator_CajasNoCaben (Id_Cubo,Id_Estanteria) VALUES (strId_Cubo,intId_Estanterias); SET Id_Article_aux=intId_Article,boolNoNextRecord=FALSE; ITERATE ITERACION; END IF; SET boolPasarX=FALSE,boolPasarZ=FALSE; - -- Inicializo el contador + REPEAT - SET Cantidad=Cantidad+1; -- Incremento el contador en 1 + SET Cantidad=Cantidad+1; IF (intId_Baldas_aux<>intId_Baldas) THEN SET intId_Baldas_aux=intId_Baldas; SET intPOSX=0,intPOSY=0,intPOSZ=0; END IF; - IF (boolESAPILABLE AND intPOSZ>0 AND intZ>0) THEN -- Es Apilable - IF (boolESABIERTO) THEN -- abierto - -- SET intPOSX=intPOSX+intCmNichoExtra,intPOSZ=0,intPOSY=0,Id_Article_aux=intId_Article; - IF (intId_Article=Id_Article_aux) THEN -- mismo articulo + IF (boolESAPILABLE AND intPOSZ>0 AND intZ>0) THEN + IF (boolESABIERTO) THEN + + IF (intId_Article=Id_Article_aux) THEN SET boolPasarX=FALSE,boolPasarZ=TRUE; SET intPOSX=intPOSX-intX; - ELSE -- distinto articulo + ELSE SET boolPasarX=TRUE,boolPasarZ=TRUE; SET intPOSY=intY,intPOSZ=intZ; SET Id_Article_aux=intId_Article; SET intPOSX=intPOSX+intCmNichoExtra; END IF; - ELSE -- cerrado - IF ((intZ=intZ_ant) AND (intY=intY_ant) AND (intX=intX_ant)) THEN -- tienen que ser del mismo tamaño + ELSE + IF ((intZ=intZ_ant) AND (intY=intY_ant) AND (intX=intX_ant)) THEN SET intPOSX=intPOSX-intX; SET boolPasarX=FALSE,boolPasarZ=FALSE; ELSE - CALL ubicator_calcularhuecosvacios (alturabalda,ReturnX,ReturnY,intZ_aux,intId_Estanterias,intId_Baldas,contId_Estanterias); -- Calculo las cajas vacias + CALL ubicator_calcularhuecosvacios (alturabalda,ReturnX,ReturnY,intZ_aux,intId_Estanterias,intId_Baldas,contId_Estanterias); SET intPOSY=intY,intPOSZ=intZ; SET boolPasarX=TRUE,boolPasarZ=TRUE; SET intPOSX=intPOSX+intCmNichoExtra; - END IF; -- article + END IF; END IF; - ELSE -- No apilable or posz<>0 + ELSE IF (NOT boolESAPILABLE AND boolESABIERTO) THEN SET boolPasarX=FALSE,boolPasarZ=FALSE; - -- @@@ cambio abierto no apilable - SET intPOSZ=0; -- no se puede subir en altura - IF (intId_Article<>Id_Article_aux and Id_Article_aux<>0) THEN -- cambio @@@vicente, añado id_Article_aux<>0 + + SET intPOSZ=0; + IF (intId_Article<>Id_Article_aux and Id_Article_aux<>0) THEN SET intPOSY=0; END IF; ELSE @@ -40464,30 +39278,30 @@ REPEAT SET intPOSY=intY,intPOSZ=intZ; END IF; - -- @@@@ cambio - IF (intPOSX>0) THEN -- SI ES EL PRIMER ELEMENTO (X=0) NO LE INCREMENTE LOS CM EXTRA DEL NICHO si la profundidad es menor no lo incrementa + + IF (intPOSX>0) THEN SET intPOSX=intPOSX+intCmNichoExtra; END IF; - END IF; -- apilable + END IF; Condicional:loop IF (NOT boolPasarX) THEN IF (NOT boolPasarZ) THEN - IF (intD-intPOSY>intY) THEN -- cabe de profundo + IF (intD-intPOSY>intY) THEN SET intPOSY=intPOSY+intY; - -- @@@@ULTIMO CAMBIO + IF (intPOSX>0) and (intId_Article=Id_Article_aux) THEN IF (intPOSX-intX-intCmNichoExtra<0) THEN SET intPOSX=0,boolNoNextRecord=TRUE,Cantidad=Cantidad-1; LEAVE ITERACION; END IF; - SET intPOSX=intPOSX-intX-intCmNichoExtra; -- cambio @@@vicente quito descomentando + SET intPOSX=intPOSX-intX-intCmNichoExtra; END IF; - -- @@@@ fin ultimo cambio + ELSE SET intPOSY=intY; END IF; - END IF; -- boolpasarz (depth) + END IF; IF (intH-intPOSZ>intZ) THEN SET intPOSZ=intPOSZ+intZ; @@ -40500,7 +39314,7 @@ REPEAT SET intPOSY=intY; SET intPOSX=intPOSX+intX+intCmNichoExtra; END IF; - END IF; -- boolpasarx + END IF; IF (intW-intPOSX>intX) THEN SET intPOSX=intPOSX+intX; @@ -40511,16 +39325,13 @@ REPEAT LEAVE Condicional; END loop Condicional; - SET ReturnX=intPOSX-intX; -- Anchura absoluta x del artículo - SET ReturnZ=intSUMAH+intPOSZ-intZ; -- Altura absoluta del cubo - SET ReturnY=intPOSY-intY; -- Profundidad absoluta del artículo + SET ReturnX=intPOSX-intX; + SET ReturnZ=intSUMAH+intPOSZ-intZ; + SET ReturnY=intPOSY-intY; SET boolPasarZ=FALSE,boolPasarX=FALSE; - /* - INSERT INTO Ubicator_Cajas (Id_Estanterias,Id_Baldas,modelo,W ,D,H ,Id_Cubo,X,Y,Z,Medida,Id_Article,Article,NumEstanterias) - VALUES (intId_Estanterias,intId_Baldas,strmodelo,ReturnX ,ReturnY,ReturnZ ,strId_Cubo,intX,intY,intZ,intMedida,intId_Article,strArticle,contId_Estanterias); - */ + INSERT INTO Ubicator_Cajas (Id_Estanterias,Id_Baldas,modelo,W ,D,H ,Id_Cubo,X,Y,Z,Medida,Id_Article,Article,NumEstanterias, NumEtiquetas,POSX,POSY,POSZ,Id_Article_aux) @@ -40528,7 +39339,7 @@ REPEAT intEtiquetas,intPOSX,intPOSY,intPOSZ,Id_Article_aux); SET Id_Article_aux=intId_Article,intZ_aux=intZ,boolNoNextRecord=FALSE; - -- Cambio + SET intZ_ant=intZ,intY_ant=intY,intX_ant=intX; UNTIL Cantidad=intEtiquetas END REPEAT; END WHILE ITERACION; @@ -40540,9 +39351,9 @@ UNTIL fin END REPEAT; CLOSE cursor_ubicator; CLOSE cursor_estanterias; --- select * from Ubicator_Cajas; --- select * from ubicator_stock; --- select * from Ubicator_CajasNoCaben; + + + END ;; @@ -40563,8 +39374,8 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ubicator_ordenacion_distrib`(date DATE,boolORDALFA TINYINT(1), intWAREHOUSE INT,strFILTRO NVARCHAR(255), boolESAPILABLE TINYINT(1),boolESABIERTO TINYINT(1),intCmNichoExtra SMALLINT,inEstant_distrib SMALLINT) BEGIN --- Inicializo variables --- boolESABIERTO --> permite apilar las cajas de diferentes articulos (cerrada) para aprovechar el espacio. + + DECLARE intPOSX,intPOSY,intPOSZ,intSUMAH,intCMNICHO_EXTRA INT DEFAULT 0; DECLARE intId_Estanterias,intW,intD,intId_Baldas,intH,intEtiquetas, intX,intY,intZ,ReturnX,ReturnY,ReturnZ,Cantidad,intId_Baldas_aux INT DEFAULT 0; @@ -40577,39 +39388,34 @@ DECLARE strArticle VARCHAR(50); DECLARE boolCabeCaja,boolPasarZ,boolPasarX,boolNoNextRecord,fin BOOLEAN DEFAULT FALSE; DECLARE intMedida,intX_ant,intY_ant,IntZ_ant ,intposinicial,intposfinal,auxintId_Estanterias,auxintposinicial,auxintposfinal,intnumdistrib,nestanterias INT(11) DEFAULT 0; --- ejemplo: call ubicator_ordenacion(CURDATE(),false,1,'tipo_id = 2',TRUE,FALSE,2,1) --- Declaro el cursor para leer las estanterias y las baldas ordenadas por las baldas. (La primera es la de arriba). + + DECLARE cursor_estanterias CURSOR FOR SELECT Id_Estanterias,w,d,modelo,Id_Baldas,h,posinicial,posfinal FROM Estanterias INNER JOIN Baldas USING (Id_Estanterias) INNER JOIN Estanterias_distri using (Id_Estanterias) WHERE IdEstanterias_distri=inEstant_distrib - -- AND Id_Estanterias>nestanterias + AND posinicial>auxintposinicial ORDER BY posinicial; --- Declaro el cursor para leer el recorset de los cubos a colocar en las estanterias obteniendo las variables X,Y,Z del cubo. -DECLARE cursor_ubicator CURSOR FOR SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM ubicator_stock; - -- Creo la tabla temporal donde devuelvo la ordenación de las cajas. -DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; -- handler para el cursor de las estanterias y baldas +DECLARE cursor_ubicator CURSOR FOR SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM ubicator_stock; + + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; DROP TEMPORARY TABLE IF EXISTS Ubicator_Cajas; CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_Cajas (Id_Estanterias INT,Id_Baldas SMALLINT,modelo varchar(255), W SMALLINT,D SMALLINT,H SMALLINT,Id_Cubo VARCHAR(10),X SMALLINT,Y SMALLINT,Z SMALLINT,Medida SMALLINT,Id_Article INT(11),Article varchar(50),NumEstanterias SMALLINT); - /* - CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_Cajas(Id_Estanterias INT,Id_Baldas SMALLINT,modelo varchar(255), - W SMALLINT,D SMALLINT,H SMALLINT,Id_Cubo VARCHAR(10),X SMALLINT,Y SMALLINT,Z SMALLINT,Medida SMALLINT, - Id_Article INT(11),Article varchar(50),NumEstanterias SMALLINT,NumEtiquetas INT,POSX INT (11),POSY INT(11), - POSZ INT(11),Id_Article_aux int(11)); - */ --- Creo la tabla temporal donde voy a insertar las cajas que no caben en las estanterias. + + DROP TEMPORARY TABLE IF EXISTS Ubicator_CajasNoCaben; CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_CajasNoCaben (Id_Cubo VARCHAR(10),Id_Estanteria SMALLINT); -CALL ubicator (intWAREHOUSE,date,strFILTRO); -- Ejecuto el procedimiento de stock para recorrer los articulos con las cajas. +CALL ubicator (intWAREHOUSE,date,strFILTRO); DROP TEMPORARY TABLE IF EXISTS ubicator_stock; IF (boolORDALFA) THEN @@ -40620,7 +39426,7 @@ ELSE ORDER BY Id_Article; END IF; --- Open Recordsets + OPEN cursor_estanterias; OPEN cursor_ubicator; SET contId_Estanterias=0; @@ -40637,7 +39443,7 @@ REPEAT SELECT DISTINCT posinicial-1 INTO auxintposinicial FROM Estanterias_distri WHERE Id_Estanterias=auxintId_Estanterias; - -- SET nestanterias=auxintId_Estanterias-1; + CLOSE cursor_estanterias; OPEN cursor_estanterias; @@ -40649,7 +39455,7 @@ REPEAT END IF; SET intnumdistrib=intnumdistrib+1; - IF (done) THEN -- Si llega a la ultima balda, empieza de nuevo. + IF (done) THEN IF (intnumdistrib=0) THEN SUM(H) ELSE 0 END As suma INTO intSUMAH FROM Baldas WHERE Id_Estanterias=intId_Estanterias and Baldas.Id_Baldas>intId_Baldas; @@ -40682,71 +39488,71 @@ REPEAT SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM ubicator_stock ORDER BY Id_Article; SET Cantidad=0; END IF; - -- SET Medida=intZ; - -- 1. Compruebo que cabe la caja en la estanteria + + SELECT ubicator_cabecaja(intX,intY,intZ,intW,intD,intH) INTO boolCabeCaja; - IF (NOT boolCabeCaja) THEN -- Compruebo si la caja cabe en la estanteria sino la coloco en una tabla temporal. + IF (NOT boolCabeCaja) THEN INSERT INTO Ubicator_CajasNoCaben (Id_Cubo,Id_Estanteria) VALUES (strId_Cubo,intId_Estanterias); SET Id_Article_aux=intId_Article,boolNoNextRecord=FALSE; ITERATE ITERACION; END IF; SET boolPasarX=FALSE,boolPasarZ=FALSE; - -- Inicializo el contador + REPEAT - SET Cantidad=Cantidad+1; -- Incremento el contador en 1 + SET Cantidad=Cantidad+1; IF (intId_Baldas_aux<>intId_Baldas) THEN SET intId_Baldas_aux=intId_Baldas; SET intPOSX=0,intPOSY=0,intPOSZ=0; END IF; - IF (boolESAPILABLE AND intPOSZ>0 AND intZ>0) THEN -- Es Apilable - IF (boolESABIERTO) THEN -- abierto - -- SET intPOSX=intPOSX+intCmNichoExtra,intPOSZ=0,intPOSY=0,Id_Article_aux=intId_Article; - IF (intId_Article=Id_Article_aux) THEN -- mismo articulo + IF (boolESAPILABLE AND intPOSZ>0 AND intZ>0) THEN + IF (boolESABIERTO) THEN + + IF (intId_Article=Id_Article_aux) THEN SET boolPasarX=FALSE,boolPasarZ=TRUE; SET intPOSX=intPOSX-intX; - ELSE -- distinto articulo + ELSE SET boolPasarX=TRUE,boolPasarZ=TRUE; SET intPOSY=intY,intPOSZ=intZ; SET Id_Article_aux=intId_Article; SET intPOSX=intPOSX+intCmNichoExtra; END IF; - ELSE -- cerrado - IF ((intZ=intZ_ant) AND (intY=intY_ant) AND (intX=intX_ant)) THEN -- tienen que ser del mismo tamaño + ELSE + IF ((intZ=intZ_ant) AND (intY=intY_ant) AND (intX=intX_ant)) THEN SET intPOSX=intPOSX-intX; SET boolPasarX=FALSE,boolPasarZ=FALSE; ELSE - CALL ubicator_calcularhuecosvacios (alturabalda,ReturnX,ReturnY,intZ_aux,intId_Estanterias,intId_Baldas,contId_Estanterias); -- Calculo las cajas vacias + CALL ubicator_calcularhuecosvacios (alturabalda,ReturnX,ReturnY,intZ_aux,intId_Estanterias,intId_Baldas,contId_Estanterias); SET intPOSY=intY,intPOSZ=intZ; SET boolPasarX=TRUE,boolPasarZ=TRUE; SET intPOSX=intPOSX+intCmNichoExtra; - END IF; -- article + END IF; END IF; - ELSE -- No apilable or posz<>0 + ELSE IF (NOT boolESAPILABLE AND boolESABIERTO) THEN SET boolPasarX=FALSE,boolPasarZ=FALSE; - -- @@@ cambio abierto no apilable - SET intPOSZ=0; -- no se puede subir en altura + + SET intPOSZ=0; ELSE SET boolPasarX=TRUE,boolPasarZ=TRUE; SET intPOSY=intY,intPOSZ=intZ; END IF; - IF (intPOSX>0) THEN -- SI ES EL PRIMER ELEMENTO (X=0) NO LE INCREMENTE LOS CM EXTRA DEL NICHO + IF (intPOSX>0) THEN SET intPOSX=intPOSX+intCmNichoExtra; END IF; - END IF; -- apilable + END IF; Condicional:loop IF (NOT boolPasarX) THEN IF (NOT boolPasarZ) THEN - IF (intD-intPOSY>intY) THEN -- cabe de profundo + IF (intD-intPOSY>intY) THEN SET intPOSY=intPOSY+intY; ELSE SET intPOSY=intY; END IF; - END IF; -- boolpasarz (depth) + END IF; IF (intH-intPOSZ>intZ) THEN SET intPOSZ=intPOSZ+intZ; @@ -40758,7 +39564,7 @@ REPEAT SET intPOSZ=intZ; SET intPOSY=intY, intPOSX=intPOSX+intX+intCmNichoExtra; END IF; - END IF; -- boolpasarx + END IF; IF (intW-intPOSX>intX) THEN SET intPOSX=intPOSX+intX; @@ -40769,22 +39575,17 @@ REPEAT LEAVE Condicional; END loop Condicional; - SET ReturnX=intPOSX-intX; -- Anchura absoluta x del artículo - SET ReturnZ=intSUMAH+intPOSZ-intZ; -- Altura absoluta del cubo - SET ReturnY=intPOSY-intY; -- Profundidad absoluta del artículo + SET ReturnX=intPOSX-intX; + SET ReturnZ=intSUMAH+intPOSZ-intZ; + SET ReturnY=intPOSY-intY; SET boolPasarZ=FALSE,boolPasarX=FALSE; INSERT INTO Ubicator_Cajas (Id_Estanterias,Id_Baldas,modelo,W ,D,H ,Id_Cubo,X,Y,Z,Medida,Id_Article,Article,NumEstanterias) VALUES (intId_Estanterias,intId_Baldas,strmodelo,ReturnX ,ReturnY,ReturnZ ,strId_Cubo,intX,intY,intZ,intMedida,intId_Article,strArticle,contId_Estanterias); - /* - INSERT INTO Ubicator_Cajas (Id_Estanterias,Id_Baldas,modelo,W ,D,H ,Id_Cubo,X,Y,Z,Medida,Id_Article,Article,NumEstanterias, - NumEtiquetas,POSX,POSY,POSZ,Id_Article_aux) - VALUES (intId_Estanterias,intId_Baldas,strmodelo,ReturnX ,ReturnY,ReturnZ ,strId_Cubo,intX,intY,intZ,intMedida,intId_Article,strArticle,contId_Estanterias, - intEtiquetas,intPOSX,intPOSY,intPOSZ,Id_Article_aux); - */ + SET Id_Article_aux=intId_Article,intZ_aux=intZ,boolNoNextRecord=FALSE; - -- Cambio + SET intZ_ant=intZ,intY_ant=intY,intX_ant=intX; UNTIL Cantidad=intEtiquetas END REPEAT; END WHILE ITERACION; @@ -40797,9 +39598,9 @@ UNTIL fin END REPEAT; CLOSE cursor_ubicator; CLOSE cursor_estanterias; --- select * from Ubicator_Cajas; --- select * from ubicator_stock; --- select * from Ubicator_CajasNoCaben; + + + END ;; @@ -40863,10 +39664,9 @@ SELECT Id_Article article_id,SUM(Cantidad) amount FROM ( ) t GROUP BY article_id; -/* -SELECT * from stock_actual;*/ --- TEMPORARY + + CALL hedera.sql_query (sql_printf(' CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.tmp_ubicator_stock AS SELECT A.Id_Article,A.Article, T.Id_Cubo,IF(Z > 0,Z,0) as z,x,y, @@ -40911,14 +39711,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `unary_delete`(v_node INT, v_delete bool) BEGIN -/** - * Borra un nodo. Se puede indicar si se quieren mantener los hijos. - * En este caso los hijos pasan al padre del nodo. - * Si no tiene padre, los hijos pasaran a ser padres. - * - * @v_node: Nodo que se quiere borrar. - * @v_delete: Se indica si se borran los nodos. - **/ + DECLARE v_parent INT; @@ -40955,12 +39748,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `unary_insert`(OUT v_unary INT, v_parent INT) BEGIN - /** - * Inserta un nuevo nodo. Se puede indicar el padre. - * - * @v_parent: Nodo padre. - * @v_unary: Id del nuevo nodo. - **/ + INSERT INTO unary(parent) VALUES(v_parent); @@ -40984,11 +39772,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `unary_leaves`(v_top INT) BEGIN -/** - * A partir de un nodo devuelve todos sus descendientes. - * - * @table tmp.tree Tabla con los ids de los nodos descendientes; - **/ + DECLARE v_count INT; DECLARE v_parent INT; DECLARE v_depth INT DEFAULT 0; @@ -41055,14 +39839,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `unary_scan_ident`(v_top INT, v_space INT) BEGIN -/** - * A partir de un nodo devuelve el id y el nombre del nodod y sus hijos. - * El nombre viene identado segun el numero de espacios multiplicado por la profundiad del nodo. - * - * v_top: Id del nodo padre. - * v_space: Spacios a dejar al identar, - * @table tmp.tree_ident Tabla con los ids de los nodos descendientes y su nombre identado; - **/ + DROP TEMPORARY TABLE IF EXISTS tmp.tree_ident; CALL tree_leaves(v_top); @@ -41094,13 +39871,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `unary_scan_insert`(v_name VARCHAR(45), v_parent INT, v_type VARCHAR(45)) BEGIN - /** - * Inserta un nuevo nodo de tipo unary_scan. Se puede indicar el padre. - * - * @v_name: Nombre del nodo. - * @v_parent: Nodo padre. - * @v_type: Tipo del nodo a crear. - **/ + DECLARE v_unary INT; @@ -41126,11 +39897,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `unary_tops`() BEGIN -/** - * Devuelve todos los nodos que no tienen padre. - * - * @table tmp.tree Tabla con los ids de los nodos que no tienen padre; - **/ + DROP TEMPORARY TABLE IF EXISTS tmp.tree; CREATE TEMPORARY TABLE tmp.tree @@ -41158,15 +39925,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `unary_update`(v_node INT, v_new_parent INT, v_move bool) BEGIN -/** - * Cambia el padre de un nodo. Se puede indicar si se quieren mover los hijos. - * En este caso los hijos pasan al padre del nodo. - * Si no tiene padre, los hijos pasaran a ser padres. - * - * @v_node: Nodo que se quiere mover. - * @v_new_parent: Padre al que se quiere mover el nodo. - * @v_move: Se indica si se mueven los nodos. - **/ + DECLARE v_parent INT; @@ -42477,6 +41236,10 @@ CREATE TABLE `variablesKK` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Dumping events for database 'bi' +-- + -- -- Dumping routines for database 'bi' -- @@ -42526,7 +41289,7 @@ BEGIN DECLARE vYear INT; DECLARE vWeek INT; - -- Almacen + SET vCurrentPeriod = IFNULL(vLastPeriod, vMinPeriod); @@ -42568,7 +41331,7 @@ BEGIN GROUP BY Almacen; END WHILE; - -- Reino + SET vCurrentPeriod = vMinPeriod; @@ -42610,7 +41373,7 @@ BEGIN GROUP BY reino; END WHILE; - -- Familia + SET vCurrentPeriod = vMinPeriod; @@ -42652,50 +41415,10 @@ BEGIN GROUP BY Familia; END WHILE; - -- Comprador - -- FIXME: Bucle infinito porque la tabla está vacía -/* - SET vCurrentPeriod = vMinPeriod; + + - WHILE vCurrentPeriod < vMaxPeriod - DO - SELECT IFNULL(MAX(periodo),vMinPeriod) INTO vPreviousPeriod - FROM bi.analisis_ventas_comprador_evolution - WHERE periodo < vMaxPeriod; - - SELECT MIN(period) INTO vCurrentPeriod - FROM vn2008.time - WHERE period > vPreviousPeriod; - - SET vYear = FLOOR(vCurrentPeriod / 100); - SET vWeek = vCurrentPeriod - (vYear * 100); - - DELETE FROM bi.analisis_ventas_comprador_evolution - WHERE Periodo = vCurrentPeriod; - - REPLACE bi.analisis_ventas_comprador_evolution(comprador, ventas, semana,año, periodo) - SELECT Comprador, sum(ventas) AS ventas, vWeek, vYear, vCurrentPeriod - FROM ( - SELECT Comprador, sum(Importe) AS ventas - FROM bi.analisis_ventas - WHERE vYear = Año - AND vWeek = Semana - GROUP BY Comprador - UNION ALL - SELECT Comprador, - sum(Importe) AS ventas - FROM bi.analisis_ventas - WHERE vYear - 1 = Año - AND vWeek = Semana - GROUP BY Comprador - UNION ALL - SELECT comprador, IFNULL(ventas,0) - FROM bi.analisis_ventas_comprador_evolution - WHERE Periodo = vPreviousPeriod - ) sub - GROUP BY Comprador; - END WHILE; -*/ - -- Provincia + SET vCurrentPeriod = vMinPeriod; @@ -42737,7 +41460,7 @@ BEGIN GROUP BY Provincia; END WHILE; - -- Vista + SET vCurrentPeriod = vMinPeriod; @@ -42779,7 +41502,7 @@ BEGIN GROUP BY Vista; END WHILE; - -- Vendedor + SET vCurrentPeriod = vMinPeriod; @@ -42920,15 +41643,15 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `call_add`() BEGIN -DECLARE datSTART DATETIME DEFAULT '2012-03-01'/*CURDATE()*/ ; --- control +DECLARE datSTART DATETIME DEFAULT '2012-03-01' ; + INSERT INTO vn2008.daily_task_log(consulta) VALUES('bi.call_add'); --- Seleccionamos la ultima fecha introducida + SELECT MAX(Fecha) INTO datSTART FROM `call`; --- Borramos todas las entradas del dia datSTART por si hubiese registros nuevos + DELETE FROM `call` WHERE Fecha = datSTART; INSERT INTO bi.`call`(CodTrabajadorCartera,CodTrabajadorTelefono,dur_in,dur_out,Fecha,`year`,`month`,`week`,`hour`,phone) @@ -42972,17 +41695,13 @@ BEGIN DECLARE vMonthToRefund INT DEFAULT 4; --- control + INSERT INTO vn2008.daily_task_log(consulta) VALUES('bi.claim_ratio_routine START'); -/* -* PAK 2015-11-20 -* Se trata de añadir a la tabla Greuges todos los -* cargos que luego vamos a utilizar para calcular el recobro -*/ --- descuentos comerciales COD 11 + + INSERT INTO vn2008.Greuges(Fecha, Id_Cliente, Comentario, Importe, Id_Ticket) SELECT Fecha, Id_Cliente, Concat('COD11 : ',Concepte), - round(Cantidad * @@ -43017,7 +41736,7 @@ UPDATE vn2008.Movimientos m AND Concepte NOT LIKE '$%' AND Fecha > '2014-01-01'; --- Reclamaciones demasiado sensibles + INSERT INTO vn2008.Greuges(Fecha, Id_Cliente, Comentario, Importe, Greuges_type_id,Id_Ticket) @@ -43035,7 +41754,7 @@ INSERT INTO vn2008.Greuges(Fecha, Id_Cliente, Comentario, AND ca.greuge = 0 AND cm.cl_est_id = 3; - -- Reclamaciones que pasan a Maná + INSERT INTO vn2008.Greuges(Fecha, Id_Cliente, Comentario, Importe , Greuges_type_id,Id_Ticket) @@ -43054,7 +41773,7 @@ INSERT INTO vn2008.Greuges(Fecha, Id_Cliente, Comentario, AND cm.cl_est_id = 3 AND cm.mana; - -- Marcamos para no repetir + UPDATE vn2008.cl_act ca JOIN vn2008.cl_main cm ON cm.id = ca.cl_main_id SET greuge = 1 @@ -43064,7 +41783,7 @@ UPDATE vn2008.cl_act ca --- Recobros + DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; CREATE TEMPORARY TABLE tmp.ticket_list @@ -43110,10 +41829,7 @@ UPDATE vn2008.Movimientos_componentes mc SET greuge = 1 WHERE Id_Componente = 17; -/* -* Recalculamos la ratio de las reclamaciones, que luego -* se va a utilizar en el recobro -*/ + DELETE FROM bi.claims_ratio; @@ -43136,7 +41852,7 @@ REPLACE bi.claims_ratio(Id_Cliente, Consumo, Reclamaciones, Ratio, recobro) ) claims ON claims.Id_Cliente = fm.Id_Cliente; --- Calculamos el porcentaje del recobro para añadirlo al precio de venta + UPDATE bi.claims_ratio cr JOIN ( SELECT Id_Cliente, nz(SUM(Importe)) AS Greuge @@ -43147,7 +41863,7 @@ UPDATE bi.claims_ratio cr SET recobro = GREATEST(0,round(nz(Greuge) / (nz(Consumo) * vMonthToRefund / 12 ) ,3)); --- control + INSERT INTO vn2008.daily_task_log(consulta) VALUES('bi.claim_ratio_routine END'); END ;; @@ -43219,10 +41935,10 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `comparativa_add`() BEGIN - DECLARE lastCOMP INT; # Se trata de una variable para almacenar el ultimo valor del Periodo + DECLARE lastCOMP INT; SELECT MAX(Periodo) INTO lastCOMP FROM vn2008.Comparativa; - -- Fijaremos las ventas con más de un mes de antiguedad en la tabla Comparativa + IF lastCOMP < vn2008.vnperiod(CURDATE())- 3 AND vn2008.vnweek(CURDATE()) > 3 THEN @@ -43265,7 +41981,7 @@ BEGIN DECLARE datINI DATETIME; DECLARE datFIN DATETIME; - -- Seleccionamos la fecha minima/maxima del periodo que vamos a consultar + SELECT MIN(`date`) INTO datINI FROM vn2008.`time` WHERE period = vn2008.vnperiod(dat_START); SELECT TIMESTAMP(MAX(`date`),'23:59:59') INTO datFIN FROM vn2008.`time` WHERE period = vn2008.vnperiod(dat_END); @@ -43336,7 +42052,7 @@ BEGIN SELECT t1.*, c.Cliente, w.workerCode, c.pay_met_id,c.Vencimiento FROM ( --- Filtramos aquellos clientes cuyo saldo se ha incrementado de ayer a hoy + select * from( select today.client, today.amount todayAmount, yesterday.amount yesterdayAmount, round(yesterday.amount - today.amount,2) as difference, defaulterSince from @@ -43388,7 +42104,7 @@ BEGIN WHERE f.Fecha >= '2016-01-01' AND f.Id_Cliente = vClient ORDER BY f.Fecha DESC; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - -- Control + INSERT INTO vn2008.daily_task_log(consulta) VALUES('defaulting'); @@ -43399,7 +42115,7 @@ BEGIN FROM bi.customerRiskOverdue GROUP BY customer_id; - -- marcamos si ha cambiado y heredamos la fecha defaulterSince + UPDATE bi.defaulters d JOIN ( SELECT * FROM( @@ -43485,7 +42201,7 @@ BEGIN WHERE f.Fecha >= '2016-01-01' AND f.Id_Cliente = vClient ORDER BY f.Fecha DESC; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; - -- Control + INSERT INTO vn2008.daily_task_log(consulta) VALUES('defaulting'); @@ -43496,7 +42212,7 @@ BEGIN FROM bi.customerRiskOverdue GROUP BY customer_id; - -- marcamos si ha cambiado y heredamos la fecha defaulterSince + UPDATE bi.defaulters d JOIN ( SELECT client, amount , defaulterSince FROM bi.defaulters @@ -43578,48 +42294,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `equaliza`(IN wh_id INT) BEGIN DECLARE datEQ DATETIME; -/* JGF 2017-03-20 cuelga el sistema -SELECT `date` INTO datEQ FROM bi.variables WHERE variable = IF(wh_id = 17,'eq_mcf','equalizator'); - - -IF TIMEDIFF(now(), datEQ) > '00:05:00' THEN - - UPDATE bi.Equalizator e - JOIN - ( - SELECT - Vista, - sum(1) as pedido, - sum(PedidoImpreso) as impreso, - sum(t.Factura IS NOT NULL - OR t.Etiquetasemitidas - OR nz(ticket_id) <> 0) as encajado - FROM - vn2008.Movimientos - JOIN - vn2008.Tickets t USING (Id_Ticket) - JOIN - vn2008.Agencias a ON t.Id_Agencia = a.Id_Agencia - JOIN - vn2008.Clientes C USING (Id_Cliente) - LEFT JOIN - (SELECT distinct - ticket_id - FROM - vn2008.expeditions e JOIN vn2008.Tickets t ON t.Id_Ticket = e.ticket_id WHERE Fecha >= curDate()) exp ON ticket_id = Id_Ticket - WHERE - invoice And Fecha >= curDate() - AND t.warehouse_id = wh_id - AND fecha < (TIMESTAMPADD(DAY, 1, CURDATE())) - GROUP BY Vista) sub using(Vista) - SET e.Pedido = sub.pedido, e.Impreso = sub.impreso, e.Encajado = sub.encajado; - - UPDATE bi.variables SET `date`= now() WHERE variable = IF(wh_id = 17,'eq_mcf','equalizator'); - - -END IF; -*/ END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -43639,7 +42314,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `facturacion_media_anual_update`() BEGIN --- control + INSERT INTO vn2008.daily_task_log(consulta) VALUES('bi.facturacion_media_anual_update'); TRUNCATE TABLE bi.facturacion_media_anual; @@ -43814,12 +42489,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `Greuge_Evolution_Add`() BEGIN - /* - - Inserta en la tabla Greuge_Evolution el saldo acumulado de cada cliente, así como las ventas acumuladas en los ultimos 365 dias - , para poder controlar su evolucion - - */ + @@ -43900,16 +42570,16 @@ BEGIN ; - -- Ahora calcularemos el greuge muerto - -- + + UPDATE bi.Greuge_Evolution ge JOIN maxInvoice using(Id_Cliente) SET FOSIL = GREUGE WHERE ge.Fecha = datFEC; - -- Recobro + UPDATE bi.Greuge_Evolution ge JOIN ( @@ -43920,7 +42590,7 @@ BEGIN JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento WHERE t.Fecha >= datFEC AND t.Fecha < datFEC_TOMORROW - AND mc.Id_Componente = 17 -- Recobro + AND mc.Id_Componente = 17 GROUP BY cs.Id_Cliente ) sub using(Id_Cliente) SET Recobro = Importe @@ -43958,14 +42628,14 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `last_buy_id_add`() BEGIN --- control --- INSERT INTO vn2008.daily_task_log(consulta) VALUES('bi.last_buy_id_add'); --- DELETE FROM bi.Last_buy_id; + + + TRUNCATE TABLE bi.Last_buy_id; --- Primero metemos las del futuro, por si no hay en el presente + INSERT INTO bi.Last_buy_id SELECT * FROM (SELECT @@ -43980,7 +42650,7 @@ INSERT INTO bi.Last_buy_id SELECT * FROM ORDER BY landing DESC) t1 GROUP BY Id_Article , warehouse_id; --- Ahora el presente machaca al futuro + REPLACE bi.Last_buy_id SELECT * FROM (SELECT @@ -44143,7 +42813,7 @@ BEGIN SET v_sql = sql_printf ('CREATE SCHEMA IF NOT EXISTS %t',strCacheSchema); CALL vn2008.sql_query (v_sql); - -- Insertamos en las tablas del cur1 + OPEN cur1; FETCH cur1 INTO strSquemaName,strTableName; WHILE NOT done DO @@ -44160,7 +42830,7 @@ BEGIN END WHILE; CLOSE cur1; - -- Insertamos en las tablas del cur2 + OPEN cur2; FETCH cur2 INTO strSquemaName,strTableName,strDateField; WHILE NOT done DO @@ -44181,24 +42851,24 @@ BEGIN END WHILE; CLOSE cur2; - -- Insertamos en las tablas del cur3 + OPEN cur3; SET done = 0; FETCH cur3 INTO strSquemaName,strTableName,strTableDependingOn; WHILE NOT done DO - -- Torna la columna per la qual vincular amb el seu pare + SELECT kcu.column_name INTO strFieldName FROM information_schema.key_column_usage kcu WHERE table_schema = CONVERT(strSquemaName USING utf8) COLLATE utf8_general_ci AND REFERENCED_TABLE_NAME = CONVERT(strTableDependingOn USING utf8) COLLATE utf8_general_ci AND table_name = CONVERT(strTableName USING utf8) COLLATE utf8_general_ci; - -- Torna la columna per la qual vincular amb el seu fill + SELECT kcu.column_name INTO strFieldDependingOn FROM information_schema.key_column_usage kcu - WHERE table_schema = CONVERT(strSquemaName USING utf8) COLLATE utf8_general_ci -- FIX mirar l'esquema del pare + WHERE table_schema = CONVERT(strSquemaName USING utf8) COLLATE utf8_general_ci AND constraint_name = 'PRIMARY' AND table_name = CONVERT(strTableDependingOn USING utf8) COLLATE utf8_general_ci; @@ -44219,22 +42889,22 @@ BEGIN CLOSE cur3; - -- Borramos en las tablas del cur4 que es igual que el dos pero en sentido descendente - -- para evitar errores con las foreign key + + OPEN cur4; SET done = 0; FETCH cur4 INTO strSquemaName,strTableName,strTableDependingOn; WHILE NOT done DO - -- Torna la columna per la qual vincular amb el seu pare + SELECT kcu.column_name INTO strFieldName FROM information_schema.key_column_usage kcu WHERE table_schema = CONVERT(strSquemaName USING utf8) COLLATE utf8_general_ci AND REFERENCED_TABLE_NAME = CONVERT(strTableDependingOn USING utf8) COLLATE utf8_general_ci AND table_name = CONVERT(strTableName USING utf8) COLLATE utf8_general_ci; - -- Torna la columna per la qual vincular amb el seu fill + SELECT kcu.column_name INTO strFieldDependingOn FROM information_schema.key_column_usage kcu WHERE table_schema = CONVERT(strSquemaName USING utf8) COLLATE utf8_general_ci @@ -44256,7 +42926,7 @@ BEGIN CLOSE cur4; - -- Borramos en las tablas del cur5 + OPEN cur5; SET done = 0; FETCH cur5 INTO strSquemaName,strTableName,strDateField; @@ -44368,10 +43038,10 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `rotacion_update`() BEGIN --- control + INSERT INTO vn2008.daily_task_log(consulta) VALUES('bi.rotation_update'); --- Sólo hace la consulta gorda los sábados de madrugada. Necesita casi dos horas. + IF DAY(CURDATE()) = 5 THEN @@ -44405,7 +43075,7 @@ DECLARE intLAPSO INT DEFAULT DATEDIFF(datEND,datSTART ); REPLACE bi.rotacion(Id_Article,warehouse_id,total,rotacion) - SELECT Id_Article, warehouse_id, Total, round((sum(Saldo_Ponderado)/Total),2) as rotacion -- round(avg(Saldo_Ponderado) / (Total / intLAPSO),1) as Rotacion + SELECT Id_Article, warehouse_id, Total, round((sum(Saldo_Ponderado)/Total),2) as rotacion FROM ( SELECT Id_Article, warehouse_id, @@ -44493,14 +43163,14 @@ DECLARE intLAPSO INT DEFAULT DATEDIFF(datEND,datSTART ); CALL vn2008.item_last_buy_(NULL,datSTART); - -- Añadimos el volumen por unidad de venta + update bi.rotacion r JOIN vn2008.t_item_last_buy b ON r.Id_Article = b.item_id AND r.warehouse_id = b.warehouse_id join vn2008.Compres ON Id_Compra = b.buy_id set cm3 = vn2008.cm3_2(Id_Cubo, r.Id_Article) / Packing where r.Id_Article between intART_DESDE and intART_HASTA; --- Añadimos el coste de almacenamiento y manipulacion + UPDATE bi.rotacion JOIN ( SELECT warehouse_id, sum(total*rotacion*cm3) as Operacion @@ -44536,7 +43206,7 @@ SET auxiliar = if(rotacion < 0,0,round(rotacion *cm3 * Coste_Auxiliar / Operacio WHERE Id_Article between intART_DESDE and intART_HASTA; --- Añadimos todos los productos de los que no tenemos histórico, con la media de su familia como valor por defecto + INSERT INTO bi.rotacion(Id_Article, warehouse_id, rotacion, cm3, almacenaje, manipulacion, auxiliar, mermas) SELECT a.Id_Article, warehouse_id, rotacion_m, cm3_m, alm_m, man_m, aux_m, merm_m @@ -44584,7 +43254,7 @@ WHILE intART_HASTA < 999999 DO END IF; REPLACE bi.rotacion(Id_Article,warehouse_id,total,rotacion) - SELECT Id_Article, warehouse_id, Total, round((sum(Saldo_Ponderado)/Total),2) as rotacion -- round(avg(Saldo_Ponderado) / (Total / intLAPSO),1) as Rotacion + SELECT Id_Article, warehouse_id, Total, round((sum(Saldo_Ponderado)/Total),2) as rotacion FROM ( SELECT Id_Article, warehouse_id, @@ -44770,9 +43440,9 @@ CREATE DEFINER=`root`@`%` PROCEDURE `ticket_add2kk`(intNUMDAYS INTEGER) BEGIN DECLARE datSTART,datEND DATETIME; --- Seleccionamos los tickets a tratar añadiendolos a la tabla bi.ticket - SET @@session.max_sp_recursion_depth=250; -- Habilito la recursión en mysql hasta un límite de 250. + + SET @@session.max_sp_recursion_depth=250; SET datSTART = TIMESTAMPADD(DAY, -intNUMDAYS, CURDATE()); @@ -44781,7 +43451,7 @@ DECLARE datSTART,datEND DATETIME; - -- Actualiza el valor de costfixat en Movimientos a efectos estadisticos + update vn2008.Movimientos m join ( @@ -44818,14 +43488,7 @@ set CostFixat = Cost; AND (reino_id <> 6 OR m.Id_Article IN (95,98)) GROUP BY t.Id_Ticket,tipo_id ; - /* - UPDATE bi.ticket - JOIN vn2008.Tickets using(Id_Ticket) - JOIN vn2008.Agencias using(Id_Agencia) - JOIN vn2008.agency_warehouse aw using(agency_id,warehouse_id) - SET `view` = aw.Vista - WHERE Tickets.Fecha BETWEEN datSTART AND datEND; - */ + @@ -44870,7 +43533,7 @@ SET bt.Id_Cliente = C.Id_Cliente WHERE Tickets.Id_Cliente = 31 AND bt.date >= datSTART; --- Almacena los tickets que comisionan, para consultas rapidas + truncate table bi.f_tvc; @@ -44886,7 +43549,7 @@ and w.comisionantes = TRUE; --- Quita las horas de los tickets del mes anterior + IF DAY(CURDATE()) = 15 THEN update vn2008.Tickets set Fecha = date(Fecha) @@ -44914,9 +43577,9 @@ BEGIN DECLARE datSTART DATETIME; DECLARE datEND DATETIME; --- Seleccionamos los tickets a tratar añadiendolos a la tabla bi.ticket - SET @@session.max_sp_recursion_depth=2500; -- Habilito la recursión en mysql hasta un límite de 2500. + + SET @@session.max_sp_recursion_depth=2500; SET datSTART = DATE(datFEC); SET datEND = TIMESTAMPADD(DAY,30,datSTART); @@ -45483,12 +44146,12 @@ SET character_set_client = utf8; 1 AS `created`, 1 AS `isToBeMailed`, 1 AS `contactChannelFk`, - 1 AS `hasSepavnl`, - 1 AS `hasCorevnl`, + 1 AS `hasSepaVnl`, + 1 AS `hasCoreVnl`, 1 AS `hasCoreVnh`, 1 AS `riskCalculated`, 1 AS `clientTypeFk`, - 1 AS `mail_address`, + 1 AS `mailAddress`, 1 AS `cplusTerIdNifFk`, 1 AS `hasToInvoiceByAddress`, 1 AS `isTaxDataChecked`, @@ -45600,7 +44263,7 @@ CREATE TABLE `config` ( `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 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -47860,6 +46523,10 @@ CREATE TABLE `zoneGeo` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Dumping events for database 'vn' +-- + -- -- Dumping routines for database 'vn' -- @@ -47876,17 +46543,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; 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()); @@ -47929,13 +46586,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `clientGetDebt`(vClient INT, vDate DATE) RETURNS decimal(10,2) BEGIN -/** - * Devuelve el saldo del cliente. - * - * @param vClient Id 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); @@ -48001,13 +46652,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `clientGetDebtKK`(vClient INT, vDate DATE) RETURNS decimal(10,2) BEGIN -/** - * Devuelve el saldo del cliente. - * - * @param vClient Id 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); @@ -48073,12 +46718,7 @@ DELIMITER ; 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; @@ -48120,7 +46760,7 @@ SELECT sum(mana) INTO vMana SELECT g.Importe FROM vn2008.Greuges g JOIN vn2008.Clientes c using(Id_Cliente) - WHERE g.Greuges_type_id = 3 -- Maná + WHERE g.Greuges_type_id = 3 AND g.Fecha > vFromDated AND c.Id_Cliente = vClient @@ -48146,14 +46786,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `clientTaxArea`(vClientFk INT, vCompanyFk 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; @@ -48208,7 +46841,7 @@ BEGIN SELECT getUser() INTO vWorker; CASE vDeliveryType - WHEN 1 THEN -- AGENCIAS + WHEN 1 THEN SELECT COUNT(*) INTO isWaitingForPickUp FROM vn2008.Tickets t JOIN vn2008.warehouse_pickup w ON w.agency_id = t.Id_Agencia @@ -48220,10 +46853,10 @@ BEGIN SET vCode = 'DELIVERED'; END IF; - WHEN 2 THEN -- REPARTO + WHEN 2 THEN SET vCode = 'ON_DELIVERY'; - ELSE -- MERCADO, OTROS + ELSE SET vCode = 'DELIVERED'; END CASE; RETURN vCode; @@ -48375,13 +47008,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; 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); @@ -48395,7 +47022,7 @@ BEGIN SELECT worker FROM `grant` g JOIN grantGroup gg ON g.group = gg.id WHERE gg.description = 'Comerciales' - AND worker != 2; -- PAKO + AND worker != 2; DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; @@ -48589,11 +47216,7 @@ 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; @@ -48714,21 +47337,13 @@ DELIMITER ; 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); SELECT clientTaxArea(vClientFk, vCompanyFk) INTO vArea; - -- Factura rápida + IF vType = 'R' THEN SELECT CASE vArea @@ -48740,7 +47355,7 @@ BEGIN THEN 'T' END INTO vSerie; - -- Factura multiple + ELSEIF vType = 'M' THEN SELECT CASE vArea @@ -48752,7 +47367,7 @@ BEGIN THEN 'M' END INTO vSerie; - -- Factura global + ELSEIF vType = 'G' THEN SELECT CASE vArea @@ -48833,13 +47448,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; 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(); @@ -48924,13 +47533,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; 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 @@ -49042,7 +47645,7 @@ SELECT (ag.`name` = 'VN_VALENCIA') JOIN vn2008.agency ag on ag.agency_id = a.agency_id WHERE r.Id_Ruta = vMyPath; -IF vIsValenciaPath THEN -- Rutas Valencia +IF vIsValenciaPath THEN SELECT COUNT(*) INTO vExpeditionsCount @@ -49134,7 +47737,7 @@ SELECT (ag.`name` = 'VN_VALENCIA') WHERE r.Id_Ruta = vMyPath; -IF vIsValenciaPath THEN -- Rutas Valencia +IF vIsValenciaPath THEN SELECT COUNT(*) INTO vExpeditionsCount @@ -49205,13 +47808,7 @@ DELIMITER ; 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; @@ -49264,14 +47861,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; 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 - * @table 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()); @@ -49314,15 +47904,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `agencyListForMethod`( vDate DATE, vAddress INT, vMethod VARCHAR(255)) BEGIN -/** - * Devuelve la lista de agencias disponibles para una forma - * de envío. - * - * @param vDate Fecha de recepción de mercancía - * @param vAddress Id consignatario, %NULL para recogida - * @param vMethod Código de la forma de envío - * @select Lista de agencias disponibles - */ + CALL agencyListAvailable (vDate, vAddress); SELECT DISTINCT m.id, m.description @@ -49411,12 +47993,7 @@ 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 @@ -49472,10 +48049,7 @@ BEGIN 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; - */ + INSERT INTO vn2008.Trabajadores(Nombre,Apellidos,boss,CodigoTrabajador,user_id) SELECT vFirstName,CONCAT(vSurname1,' ',vSurname2),vWorkerPako,vWorkerCode,vUserId; @@ -49590,7 +48164,7 @@ BEGIN WHILE NOT done DO - -- Primero la linea original con las cantidades invertidas + INSERT INTO vn2008.Compres ( Id_Entrada, @@ -49631,7 +48205,7 @@ BEGIN vTarifa3, vPVP); - -- Ahora la linea nueva, con el item genérico + INSERT INTO vn2008.Compres ( Id_Entrada, @@ -49724,14 +48298,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `getDebt`(vDate DATE) BEGIN -/** - * Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list - * - * @param vDate Fecha maxima de los registros - * @tmp.risk - * - * @return table tmp.risk - **/ + DECLARE vDateIni DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(CURDATE()) - 5, CURDATE()); DECLARE vDateEnd DATETIME; @@ -49819,14 +48386,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `getDebtkk`(vDate DATE) BEGIN -/** - * Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list - * - * @param vDate Fecha maxima de los registros - * @tmp.risk - * - * @return table tmp.risk - **/ + DECLARE vDateIni DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(CURDATE()) - 5, CURDATE()); DECLARE vDateEnd DATETIME; @@ -49953,11 +48513,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceCorrectedSale`(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 @@ -49991,12 +48547,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; 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; @@ -50139,7 +48690,7 @@ BEGIN 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 @@ -50188,7 +48739,7 @@ BEGIN JOIN taxCode tc ON iit.taxCodeFk = tc.id WHERE i.id = vInvoiceInId; - -- Apunte del proveedor + INSERT INTO vn2008.XDiario( ASIEN, @@ -50209,7 +48760,7 @@ BEGIN FROM newInvoiceIn n JOIN newSupplier s; - -- ----------------------------------------------------------- Linea de Gastos + INSERT INTO vn2008.XDiario ( ASIEN, FECHA, @@ -50251,7 +48802,7 @@ BEGIN WHERE iit.expenceFk != 5660000002 GROUP BY iit.expenceFk; - -- Extracomunitarias gasto contra proveedor/acreedor + INSERT INTO vn2008.XDiario ( ASIEN, FECHA, @@ -50281,7 +48832,7 @@ BEGIN WHERE iie.percentage GROUP BY i.id; - -- Extracomunitarias proveedor contra gasto + INSERT INTO vn2008.XDiario ( ASIEN, FECHA, @@ -50311,9 +48862,9 @@ BEGIN WHERE iie.percentage GROUP BY i.id; - -- -------------------------------------------------------------------- - -- ------- Lineas de IVA --------------- - -- -------------------------------------------------------------------- + + + INSERT INTO vn2008.XDiario( ASIEN, @@ -50391,7 +48942,7 @@ BEGIN AND tc.isActive GROUP BY tc.rate; - -- Linea iva inversor sujeto pasivo + INSERT INTO vn2008.XDiario( ASIEN, @@ -50463,14 +49014,14 @@ BEGIN WHERE tc.isActive GROUP BY tcLink.rate, e.id; - -- Iva Importacion pendiente + INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONCEPTO, - EUROHABER,-- EURODEBE + EUROHABER, SERIE, empresa_id) @@ -50491,7 +49042,7 @@ BEGIN HAVING eurohaber IS NOT NULL; - -- Linea iva importacion extracomunitaria + SET @cont:=1; SET @total:=0; @@ -50563,7 +49114,7 @@ BEGIN 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, @@ -50620,14 +49171,14 @@ BEGIN ) 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, @@ -50659,7 +49210,7 @@ BEGIN 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 @@ -50721,7 +49272,7 @@ BEGIN INTO vBookNumber FROM vn2008.XDiario; - -- Extracomunitarias gasto contra proveedor/acreedor + INSERT INTO vn2008.XDiario ( ASIEN, FECHA, @@ -50751,7 +49302,7 @@ BEGIN WHERE iie.percentage GROUP BY i.id; - -- Extracomunitarias proveedor contra gasto + INSERT INTO vn2008.XDiario ( ASIEN, FECHA, @@ -50781,14 +49332,14 @@ BEGIN WHERE iie.percentage GROUP BY i.id; - -- Iva Importacion pendiente + INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONCEPTO, - EUROHABER,-- EURODEBE + EUROHABER, SERIE, empresa_id) @@ -50808,7 +49359,7 @@ BEGIN JOIN awb a ON a.id = iia.awbFk HAVING eurohaber IS NOT NULL; - -- Linea iva importacion extracomunitaria + SET @cont:=1; SET @total:=0; @@ -50879,7 +49430,7 @@ BEGIN 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, @@ -50933,7 +49484,7 @@ BEGIN ) 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 @@ -50968,7 +49519,7 @@ BEGIN 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 @@ -51020,10 +49571,8 @@ BEGIN JOIN invoiceInTax iit ON iit.invoiceInFk = i.id JOIN taxCode tc ON iit.taxCodeFk = tc.id WHERE i.id = vInvoiceInId; - /* - select vSerialNumber,vBookNumber,vDocument,vTotalAmount; - */ - -- Apunte del proveedor + + INSERT INTO vn2008.XDiario( ASIEN, @@ -51044,7 +49593,7 @@ BEGIN FROM newInvoiceIn n JOIN newSupplier s; - -- ----------------------------------------------------------- Linea de Gastos + INSERT INTO vn2008.XDiario ( ASIEN, FECHA, @@ -51086,7 +49635,7 @@ BEGIN WHERE iit.expenceFk != 5660000002 GROUP BY iit.expenceFk; - -- Extracomunitarias gasto contra proveedor/acreedor + INSERT INTO vn2008.XDiario ( ASIEN, FECHA, @@ -51116,7 +49665,7 @@ BEGIN WHERE iie.percentage GROUP BY i.id; - -- Extracomunitarias proveedor contra gasto + INSERT INTO vn2008.XDiario ( ASIEN, FECHA, @@ -51146,9 +49695,9 @@ BEGIN WHERE iie.percentage GROUP BY i.id; - -- -------------------------------------------------------------------- - -- ------- Lineas de IVA --------------- - -- -------------------------------------------------------------------- + + + INSERT INTO vn2008.XDiario( ASIEN, @@ -51223,7 +49772,7 @@ BEGIN AND tc.isActive GROUP BY tc.rate; - -- Linea iva inversor sujeto pasivo + INSERT INTO vn2008.XDiario( ASIEN, @@ -51295,14 +49844,14 @@ BEGIN WHERE tc.isActive GROUP BY tcLink.rate, e.id; - -- Iva Importacion pendiente + INSERT INTO vn2008.XDiario( ASIEN, FECHA, SUBCTA, CONCEPTO, - EUROHABER,-- EURODEBE + EUROHABER, SERIE, empresa_id) @@ -51323,7 +49872,7 @@ BEGIN HAVING eurohaber IS NOT NULL; - -- Linea iva importacion extracomunitaria + SET @cont:=1; SET @total:=0; @@ -51395,7 +49944,7 @@ BEGIN 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, @@ -51452,14 +50001,14 @@ BEGIN ) 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, @@ -51499,7 +50048,7 @@ BEGIN JOIN invoiceInTax iit ON iit.invoiceInFk = i.id JOIN taxCode tc ON iit.taxCodeFk = tc.id; - -- Apunte del proveedor + INSERT INTO vn2008.XDiario( ASIEN, @@ -51520,7 +50069,7 @@ BEGIN FROM newInvoiceIn n JOIN newSupplier s; - -- ----------------------------------------------------------- Linea de Gastos + INSERT INTO vn2008.XDiario ( ASIEN, FECHA, @@ -51563,9 +50112,9 @@ BEGIN GROUP BY iit.expenceFk; - -- -------------------------------------------------------------------- - -- ------- Lineas de IVA --------------- - -- -------------------------------------------------------------------- + + + INSERT INTO vn2008.XDiario( ASIEN, @@ -51643,7 +50192,7 @@ BEGIN AND tc.isActive GROUP BY tc.rate; - -- Linea iva inversor sujeto pasivo + INSERT INTO vn2008.XDiario( ASIEN, @@ -51715,7 +50264,7 @@ BEGIN 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 @@ -51739,12 +50288,7 @@ DELIMITER ; 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); @@ -51770,12 +50314,7 @@ DELIMITER ; 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); @@ -51802,10 +50341,7 @@ 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; @@ -51826,20 +50362,7 @@ BEGIN FROM supplier s JOIN 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 invoiceOutSerial i - JOIN invoiceOut io ON io.serial = i.code - JOIN client c ON c.id = io.clientFk - WHERE io.id = vInvoice; - */ + SELECT IF(a.isEqualizated AND c.countryFk = vSpainCountryCode AND i.taxAreaFk = 'NATIONAL', @@ -51954,10 +50477,7 @@ 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); @@ -52021,7 +50541,7 @@ BEGIN LEFT JOIN invoiceOut ior ON ior.id = ic.correctedFk WHERE io.id = vInvoice; - -- Linea del cliente + INSERT INTO vn2008.XDiario( ASIEN, FECHA, @@ -52043,7 +50563,7 @@ BEGIN rs.companyFk AS empresa_id FROM rs; - -- Lineas de gasto + INSERT INTO vn2008.XDiario( ASIEN, FECHA, @@ -52075,7 +50595,7 @@ BEGIN JOIN invoiceOutExpence ioe ON ioe.expenceFk = e.id WHERE ioe.invoiceOutFk = vInvoice; - -- Lineas de IVA + INSERT INTO vn2008.XDiario( ASIEN, FECHA, @@ -52142,9 +50662,9 @@ BEGIN 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 pgcEqu pe ON pe.vatFk = iot.pgcFk 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. + LEFT JOIN pgcEqu pe2 ON pe2.equFk = iot.pgcFk WHERE iot.invoiceOutFk = vInvoice; UPDATE invoiceOut @@ -52171,8 +50691,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutBookingRange`() BEGIN -/* Reasentar facturas -*/ + DECLARE vInvoice INT; @@ -52367,13 +50886,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutMake`( 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; @@ -52418,7 +50931,7 @@ BEGIN 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 @@ -52427,7 +50940,7 @@ BEGIN INSERT INTO dailyTaskLog(state) VALUES('invoiceOutMake 1.1'); - -- Eliminem els tickets que no han de ser facturats + DELETE ti.* FROM ticketToInvoice ti JOIN ticket t ON t.id = ti.id @@ -52445,8 +50958,8 @@ BEGIN 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, @@ -52512,7 +51025,7 @@ BEGIN SET io.amount = base.total + vat.total WHERE io.id = vNewInvoiceId; INSERT INTO dailyTaskLog(state) VALUES('invoiceOutMake 2: START'); - -- Retrocompatibilidad. Borrar al cambiar el informe de facturas + UPDATE vn2008.Facturas f JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id SET f.BI16 = iot.taxableBase, f.IVA16 = iot.vat @@ -52562,10 +51075,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutTaxAndExpence`() BEGIN -/* Para tickets ya facturados, vuelve a repetir el proceso de facturación. -* -* @param vInvoice Numero de factura -*/ + @@ -52652,11 +51162,7 @@ DELIMITER ; 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; @@ -52705,11 +51211,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; 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 @@ -52807,11 +51309,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; 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); @@ -52871,14 +51369,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `logAdd`(vOriginFk INT, vActionCode VARCHAR(45), vTypeCode 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 vTypeCode Código que referencia a la tabla. - * @param descripcion Descripción de la acción realizada por el usuario - */ + DECLARE vTableName VARCHAR(45); SELECT logTableName INTO vTableName @@ -52914,12 +51405,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `logShow`(vOriginFk INT, vTypeCode VARCHAR(45)) BEGIN -/** - * Muestra las acciones realizadas por el usuario - * - * @param vOriginFk Id del registro de origen - * @param vTypeCode Código que referencia a la tabla. - */ + DECLARE vTableName VARCHAR(45); SELECT logTableName INTO vTableName @@ -53023,7 +51509,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS vn2008.Tickets_to_fusion; - -- He usado el sql_query porque da error la variable strId_Tickets puesta dentro del IN() + CALL hedera.sql_query(sql_printf(' CREATE TEMPORARY TABLE vn2008.Tickets_to_fusion SELECT Id_Ticket, Localizacion @@ -53078,11 +51564,7 @@ BEGIN 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 ;; @@ -53107,7 +51589,7 @@ 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 @@ -53136,13 +51618,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; 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'); @@ -53177,13 +51653,7 @@ ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; 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; @@ -53386,11 +51856,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; 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; @@ -53434,10 +51900,7 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosure`() BEGIN -/** - * Realiza el cierre de todos los - * tickets de la table ticketClosure. - */ + DECLARE vDone BOOL; DECLARE vClientFk INT; @@ -53468,11 +51931,11 @@ BEGIN DECLARE cur CURSOR FOR SELECT ticketFk FROM tmp.ticketClosure; - -- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - -- DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN - -- ROLLBACK; - -- RESIGNAL; - -- END; + + + + + INSERT INTO dailyTaskLog(state) VALUES('ticketClosure START'); @@ -53488,7 +51951,7 @@ BEGIN LEAVE proc; END IF; - -- ticketClosure start + INSERT INTO dailyTaskLog(state) VALUES(CONCAT('ticketClosure: ', vTicketFk, ' START')); SELECT 1; SELECT @@ -53520,11 +51983,11 @@ BEGIN LEFT JOIN agencyWarehouse aw ON a.id = aw.agencyFk AND t.warehouseFk = aw.warehouseFk WHERE t.id = vTicketFk; SELECT 2; - -- Fusión de ticket + CALL mergeTicketUnattended(vTicketFk, TRUE); IF vWarehouseFk = vWarehouseVnh OR vWareHouseFk = vWarehouseFloramondo THEN SELECT 2.2; - -- Número de expediciones con cubos retornables + SELECT COUNT(*) INTO vhasPackage FROM expedition e JOIN package p ON p.itemFk = e.itemFk @@ -53534,7 +51997,7 @@ BEGIN IF vhasPackage THEN - -- Si no existe un ticket de embalajes creamos uno, de lo contrario cogemos el actual + SELECT id INTO vNewPackageTicket FROM ticket WHERE companyFk = vCompanyCcs @@ -53548,7 +52011,7 @@ BEGIN CALL ticketCreate(vClientFk, CURDATE(), vWarehouseFk, vCompanyCcs, '', vAgencyPackage, '', DATE_ADD(CURDATE(), INTERVAL 1 DAY), vNewPackageTicket); END IF; SELECT 2.3; - -- Retornables van al ticket de la empresa CCs + INSERT INTO movement (item, ticket, concept, amount, price, priceFixed) (SELECT e.itemFk, vNewPackageTicket, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 FROM expedition e @@ -53559,7 +52022,7 @@ BEGIN END IF; - -- 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 @@ -53568,12 +52031,12 @@ BEGIN 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); ELSE - -- Inserción de los continentes: cajas, cubos... + INSERT INTO movement (item, ticket, concept, amount, price, priceFixed) (SELECT e.item, vTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 FROM expedition e @@ -53584,9 +52047,9 @@ BEGIN IF(vCredit <= 1 OR vCompanyFk = vCompanyBlk OR vPayMethod = vPayMethodCard) THEN SELECT 4; - -- Facturacion rapida + CALL ticketTrackingAdd(vTicketFk, 'DELIVERED', 20); - -- Facturar si está contabilizado + IF vIsTaxDataChecked THEN IF (SELECT clientTaxArea(vClientFk, vCompanyFk)) = 'NATIONAL' THEN @@ -53604,12 +52067,12 @@ BEGIN END IF; ELSE SELECT 5; - -- Albaran_print + CALL ticketTrackingAdd(vTicketFk, (SELECT vn.getAlert3State(vTicketFk)), 20); INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(vPriority, vReportDeliveryNote, vTicketFk); END IF; - -- ticketClosure end + INSERT INTO dailyTaskLog(state) VALUES(CONCAT('ticketClosure: ', vTicketFk, ' END')); END LOOP; @@ -53634,13 +52097,7 @@ DELIMITER ; 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; @@ -53681,12 +52138,7 @@ DELIMITER ; 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; @@ -53710,12 +52162,7 @@ DELIMITER ; 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; @@ -53753,14 +52200,7 @@ DELIMITER ; 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; @@ -53800,12 +52240,7 @@ 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; @@ -53842,13 +52277,7 @@ DELIMITER ; 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; @@ -54072,10 +52501,7 @@ 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; @@ -54158,12 +52584,7 @@ DELIMITER ; 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 ;; @@ -54306,7 +52727,7 @@ CREATE TABLE `ACL` ( `principalType` varchar(512) CHARACTER SET utf8 DEFAULT NULL, `principalId` varchar(512) CHARACTER SET utf8 DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -54915,9 +53336,13 @@ CREATE TABLE `user` ( `emailVerified` tinyint(1) DEFAULT NULL, `verificationToken` varchar(512) CHARACTER SET utf8 DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Dumping events for database 'salix' +-- + -- -- Dumping routines for database 'salix' -- @@ -54936,54 +53361,7 @@ BEGIN call vn2008.production_control_source(idWarehouse, scopeDays); - /* - DROP TEMPORARY TABLE IF EXISTS FakeProduction_tmp; - set @id=0; - - CREATE TEMPORARY TABLE FakeProduction_tmp - ENGINE=MEMORY AS - (select @id:=@id+1 as id, - tmp.Id_Ticket as ticketFk, - tmp.Id_Cliente as clientFk, - tmp.Alias as client, - tmp.Fecha as `date`, - tmp.Hora as hour, - tmp.POBLACION as city, - tmp.PROVINCIA as province, - tmp.province_id as provinceFk, - tmp.Agencia as agency, - tmp.agency_id as agencyFk, - tmp.lines, - tmp.m3, - tmp.problems, - tmp.problem, - tmp.state as stateFk, - t.Id_Trabajador as workerfk, - concat(t.Nombre, ' ', t.Apellidos) as worker, - tt.Id_Trabajador as salesPersonFk, - concat(tt.Nombre, ' ', tt.Apellidos) as salesPerson, - s.name as state, - tmp.Cajas as boxes, - tmp.Id_Ruta as routeFk - from tmp.production_buffer tmp - inner join vn2008.state s - on tmp.state = s.id - inner join vn2008.Trabajadores t - on tmp.CodigoTrabajador = t.CodigoTrabajador collate utf8_unicode_ci - inner join vn2008.Trabajadores tt - on tmp.Comercial = tt.CodigoTrabajador collate utf8_unicode_ci - ); - - DELETE FROM FakeProduction; - - INSERT INTO FakeProduction - SELECT * - FROM FakeProduction_tmp - WHERE routeFk IS NOT NULL - GROUP BY RouteFk - ORDER BY routeFk; - */ END ;; DELIMITER ; @@ -55345,6 +53723,10 @@ CREATE TABLE `ventas_contables` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Dumping events for database 'bs' +-- + -- -- Dumping routines for database 'bs' -- @@ -55361,11 +53743,7 @@ ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bancos_evolution_add`() BEGIN -/* -Inserta en la tabla bancos_evolution los saldos acumulados - -*/ DECLARE vCurrentDate DATE; @@ -55407,13 +53785,13 @@ SET vCurrentDate = vStartingDate; ,saldo_aux as saldo FROM bs.bancos_evolution - WHERE Fecha = TIMESTAMPADD(DAY,-1,vCurrentDate) -- los saldos acumulados del dia anterior + WHERE Fecha = TIMESTAMPADD(DAY,-1,vCurrentDate) UNION ALL SELECT c.Id_Banco, IFNULL(sum(Entrada),0) - ifnull(sum(Salida),0) as saldo FROM vn2008.Cajas c - JOIN vn2008.Bancos b using(Id_Banco) -- saldos de las cajas + JOIN vn2008.Bancos b using(Id_Banco) WHERE cash IN (0,3) AND Cajafecha = vCurrentDate AND (Serie = 'MB' OR cash = 3) @@ -55421,7 +53799,7 @@ SET vCurrentDate = vStartingDate; UNION ALL - SELECT id_banco, - importe -- pagos futuros + SELECT id_banco, - importe FROM vn2008.pago WHERE fecha = vCurrentDate AND fecha >= CURDATE() @@ -55429,14 +53807,14 @@ SET vCurrentDate = vStartingDate; UNION ALL - SELECT Id_Banco, Entregado -- cobros futuros + SELECT Id_Banco, Entregado FROM vn2008.Recibos WHERE Fechacobro = vCurrentDate AND Fechacobro > CURDATE() UNION ALL - SELECT sp.Id_Banco, Importe -- saldos de la tabla prevision + SELECT sp.Id_Banco, Importe FROM vn2008.Saldos_Prevision sp JOIN vn2008.Bancos b using(Id_Banco) WHERE cash IN (0,3) @@ -55447,12 +53825,12 @@ SET vCurrentDate = vStartingDate; )sub GROUP BY Id_Banco; - -- Utilizamos el saldo_auxiliar para calcular lo dispuesto en las polizas + UPDATE bs.bancos_evolution be SET saldo_aux = saldo; - -- Ahora actualizamos la quilla + UPDATE bs.bancos_evolution be LEFT JOIN ( @@ -55470,7 +53848,7 @@ SET vCurrentDate = vStartingDate; END WHILE; - -- Deuda + UPDATE bs.bancos_evolution be JOIN vn2008.Bancos using(Id_Banco) SET be.deuda = IF(cash = 3, be.saldo_aux, 0) @@ -55478,10 +53856,10 @@ SET vCurrentDate = vStartingDate; WHERE Fecha >= vStartingDate; - -- Liquidez + update bs.bancos_evolution set liquidez = saldo - quilla + deuda WHERE Fecha >= vStartingDate; - -- Disponibilidad + update bs.bancos_evolution set `disponibilidad ajena` = - quilla + deuda WHERE Fecha >= vStartingDate; END ;; @@ -55761,11 +54139,7 @@ ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `compradores_evolution_add`() BEGIN -/* -Inserta en la tabla compradores_evolution las ventas acumuladas en los ultimos 365 dias - -*/ DECLARE datFEC DATE; @@ -55790,12 +54164,12 @@ SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.compradores_evolution; SELECT Id_Trabajador , importe FROM bs.compradores_evolution - WHERE fecha = TIMESTAMPADD(DAY,-1,datFEC) -- las ventas acumuladas del dia anterior + WHERE fecha = TIMESTAMPADD(DAY,-1,datFEC) UNION ALL SELECT Id_Trabajador - , importe * IF(v.fecha < datFEC,-1,1) -- se restan las ventas del año anterior y se suman las del actual + , importe * IF(v.fecha < datFEC,-1,1) FROM bs.ventas v JOIN vn2008.Tipos tp using(tipo_id) WHERE fecha IN (datFEC, TIMESTAMPADD(DAY,-365,datFEC)) @@ -55832,11 +54206,7 @@ ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `fondo_evolution_add`() BEGIN -/* -Inserta en la tabla fondo_maniobra los saldos acumulados en los ultimos 365 dias - -*/ DECLARE datFEC DATE DEFAULT '2015-01-01'; @@ -55845,7 +54215,7 @@ SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.fondo_maniobra; WHILE datFEC < CURDATE() DO - -- esto solo sirve para no aburrirse mientras esperamos... + IF day(datFEC) mod 28 = 0 then SELECT datFEC; @@ -55920,11 +54290,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `manaCustomerFill_kk`() BEGIN -/* Rellena la tabla caché bs.manaCustomer desde 0 -* -* Utilizar para reconstruirla en caso de que se corrompa. -* -*/ + DECLARE vFromDated DATE; DECLARE vToDated DATETIME DEFAULT '2015-12-31 23:59:59'; @@ -55952,7 +54318,7 @@ WHILE NOT isDone DO JOIN vn2008.Consignatarios cs using(Id_Consigna) JOIN vn2008.Movimientos m using(Id_Ticket) JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento) - WHERE Id_Componente IN (39, 37) -- maná auto y maná + WHERE Id_Componente IN (39, 37) AND Fecha BETWEEN vFromDated AND vToDated GROUP BY cs.Id_Cliente ) t1 @@ -56217,17 +54583,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `nocturnEvent_Tickets_Bionizar`() BEGIN DECLARE MyDate DATE; -/* - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - GET DIAGNOSTICS CONDITION 2 @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; - SELECT CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto')); - INSERT INTO vn2008.mail (`to`,`subject`,`text`) VALUES ('jgallego@verdnatura.es', 'nocturnEvent_Tickets_Bionizar' ,CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto'))); - INSERT INTO vn2008.mail (`to`,`subject`,`text`) VALUES ('pako@verdnatura.es', 'nocturnEvent_Tickets_Bionizar' ,CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto'))); - -END; -*/ SET MyDate = timestampadd(week,-1,curdate()); @@ -56283,7 +54639,7 @@ WHERE time.year = intYEAR and time.month = intMONTH AND c.Id_Trabajador is not null GROUP BY c.Id_Trabajador; --- Ventas cedidas + UPDATE vendedores JOIN @@ -56302,7 +54658,7 @@ GROUP BY cc.Id_Trabajador_old SET comisionCedida = cedido, comision = comision - cedido WHERE año = intYEAR and mes = intMONTH; --- Ventas arrendadas + UPDATE vendedores JOIN @@ -56363,11 +54719,7 @@ ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_evolution_add`() BEGIN -/* -Inserta en la tabla compradores_evolution las ventas acumuladas en los ultimos 365 dias - -*/ DECLARE datFEC DATE; @@ -56392,12 +54744,12 @@ SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.vendedores_evolution; SELECT Id_Trabajador , importe FROM bs.vendedores_evolution - WHERE fecha = TIMESTAMPADD(DAY,-1,datFEC) -- las ventas acumuladas del dia anterior + WHERE fecha = TIMESTAMPADD(DAY,-1,datFEC) UNION ALL SELECT c.Id_Trabajador - , importe * IF(v.fecha < datFEC,-1,1) -- se restan las ventas del año anterior y se suman las del actual + , importe * IF(v.fecha < datFEC,-1,1) FROM bs.ventas v JOIN vn2008.Movimientos m using(Id_Movimiento) JOIN vn2008.Tickets t using(Id_Ticket) @@ -56457,7 +54809,7 @@ WHERE fecha between vStartingDate and datEND; WHILE vEndingDate <= datEND DO --- Ventes bioniques + SELECT vStartingDate,vEndingDate; INSERT INTO ventas(Id_Movimiento, importe, recargo, fecha, tipo_id, Id_Cliente, empresa_id) @@ -56494,12 +54846,7 @@ WHILE vEndingDate <= datEND DO GROUP BY mc.Id_Movimiento HAVING IFNULL(importe,0) <> 0 OR IFNULL(recargo,0) <> 0; -/* -UPDATE vn2008.Movimientos m -JOIN bs.ventas v ON v.Id_Movimiento = m.Id_Movimiento -SET m.Costfixat = IFNULL(round(v.importe/m.Cantidad,2),0) -WHERE v.fecha between vStartingDate and vEndingDate; -*/ + SET vStartingDate = TIMESTAMPADD(DAY,1, vStartingDate); SET vEndingDate = vn2008.dayend(vStartingDate); @@ -56554,14 +54901,7 @@ ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ventas_contables_add`(IN vYear INT, IN vMonth INT) BEGIN -/** - * Reemplaza las ventas contables. Es el origen de datos para el balance de Entradas - * - * @param vYear Año a reemplazar - * @param vMonth Mes a reemplazar - * - * - **/ + DECLARE TIPO_PATRIMONIAL INT DEFAULT 188; DELETE FROM bs.ventas_contables @@ -56896,7 +55236,7 @@ CREATE TABLE `role` ( `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Roles'; +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Roles'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -56972,7 +55312,7 @@ CREATE TABLE `user` ( KEY `role` (`role`), KEY `email` (`email`), CONSTRAINT `user_ibfk_2` FOREIGN KEY (`role`) REFERENCES `role` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global users'; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global users'; /*!40101 SET character_set_client = @saved_cs_client */; ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; @@ -57116,6 +55456,10 @@ SET character_set_client = utf8; 1 AS `recoverPass`*/; SET character_set_client = @saved_cs_client; +-- +-- Dumping events for database 'account' +-- + -- -- Dumping routines for database 'account' -- @@ -57133,12 +55477,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `toUnixDays`(vDate DATE) RETURNS int(11) DETERMINISTIC BEGIN -/** - * Devuelve el timestamp unix en días de una fecha. - * - * @param vData La fecha - * @return Unix timestamp en días - */ + RETURN UNIX_TIMESTAMP(vDate) DIV 86400; END ;; DELIMITER ; @@ -57161,11 +55500,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `userGetId`() RETURNS int(11) DETERMINISTIC BEGIN -/** - * Devuelve el identificador del usuario actual. - * - * @return El id del usuario - */ + DECLARE vUser INT DEFAULT NULL; SELECT user INTO vUser FROM userSession @@ -57197,14 +55532,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `userGetMysqlRole`(vUserName VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 BEGIN -/** - * A partir de un nombre de usuario devuelve el rol - * de MySQL asociado y con el que deberia autenticarse - * cuando se utilice sistemas de autenticación externos. - * - * @param vUserName El nombre de usuario - * @return El rol de MySQL asociado - */ + DECLARE vRole VARCHAR(255); SELECT CONCAT(IF(r.hasLogin, 'z-', ''), r.name) INTO vRole @@ -57234,14 +55562,10 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `userGetName`() RETURNS varchar(30) CHARSET utf8 DETERMINISTIC BEGIN -/** - * Devuelve el nombre del usuario actual. - * - * @return El nombre de usuario - */ + DECLARE vUser VARCHAR(30) DEFAULT NULL; - -- FIXME: Esta consulta bloquea la base de datos + SELECT userName INTO vUser FROM userSession WHERE connectionId = CONNECTION_ID(); @@ -57271,12 +55595,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `userGetNameFromId`(vId INT) RETURNS varchar(30) CHARSET utf8 BEGIN -/** - * Obtener nombre de usuari a partir de su id - * - * @param vId Id del usuario - * @return Nombre de usuario - */ + DECLARE vName VARCHAR(30); SELECT `name` INTO vName @@ -57305,12 +55624,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `userHasRole`(vRoleName VARCHAR(255)) RETURNS tinyint(1) DETERMINISTIC BEGIN -/** - * Comprueba si el usuario actual tiene asociado un rol. - * - * @param vRoleName Nombre del rol a comprobar - * @return %TRUE si tiene el rol, %FALSE en caso contrario - */ + DECLARE vRoleId INT; SELECT id INTO vRoleId @@ -57339,12 +55653,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `userHasRoleId`(vRoleId INT) RETURNS tinyint(1) DETERMINISTIC BEGIN -/** - * Comprueba si el usuario actual tiene asociado un rol. - * - * @param vRoleId Identificador del rol a comprobar - * @return %TRUE si tiene el rol, %FALSE en caso contrario - */ + DECLARE vHasRole BOOL DEFAULT FALSE; SELECT COUNT(*) > 0 INTO vHasRole @@ -57372,20 +55681,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `privSync`() proc: BEGIN -/** - * Sincroniza los permisos de los usuarios 'rol' de MySQL - * en base a la jerarquía de roles. Los usuarios rol resultantes - * de la mezcla de permisos serán nombrados singuiendo el patrón - * z-[nombre_rol]. - * - * Para que el procedimiento funcione debe de existir un usuario - * any@% que se usara como plantilla base. - * - * ¡Atención! Este procedimiento solo debe ser llamado cuando se - * modifiquen los privilegios de MySQL. Si se modifica la jerarquía - * de roles, se debe llamar al procedimiento roleSync() que llama a - * este internamente. - */ + DECLARE vTplUser VARCHAR(255) DEFAULT 'any'; DECLARE vHost VARCHAR(255) DEFAULT '%'; DECLARE vPrefix VARCHAR(2) DEFAULT 'z-'; @@ -57394,7 +55690,7 @@ proc: BEGIN DECLARE vTplHost VARCHAR(255); DECLARE vPrefixedLike VARCHAR(255); - -- Comprueba que el usuario plantilla existe + SELECT COUNT(*) > 0, `Host` INTO vTplExists, vTplHost @@ -57407,7 +55703,7 @@ proc: BEGIN SET MESSAGE_TEXT = 'TEMPLATE_USER_NOT_EXISTS'; END IF; - -- Borra todos los privilegios calculados + SET vPrefixedLike = CONCAT(vPrefix, '%'); @@ -57429,7 +55725,7 @@ proc: BEGIN DELETE FROM mysql.proxies_priv WHERE `Proxied_user` LIKE vPrefixedLike; - -- Tablas temporales + DROP TEMPORARY TABLE IF EXISTS tRole; CREATE TEMPORARY TABLE tRole @@ -57451,7 +55747,7 @@ proc: BEGIN JOIN roleRole rr ON rr.role = r.id JOIN role ri ON ri.id = rr.inheritsFrom; - -- Vueve a crear el usuario + INSERT INTO mysql.user ( `User`, @@ -57510,7 +55806,7 @@ proc: BEGIN CONCAT(prefixedRole, '@', vTplHost) FROM tRole; - -- Copia los privilegios globales del usuario + DROP TEMPORARY TABLE IF EXISTS tUserPriv; CREATE TEMPORARY TABLE tUserPriv @@ -57619,7 +55915,7 @@ proc: BEGIN DROP TEMPORARY TABLE tUserPriv; - -- Copia los privilegios a nivel de esquema + INSERT INTO mysql.db ( `User`, @@ -57674,7 +55970,7 @@ proc: BEGIN AND t.`Host`= vHost GROUP BY r.prefixedRole, t.`Db`; - -- Copia los privilegios a nivel de tabla + INSERT INTO mysql.tables_priv ( `User`, @@ -57701,7 +55997,7 @@ proc: BEGIN AND t.`Host`= vHost GROUP BY r.prefixedRole, t.`Db`, t.`Table_name`; - -- Copia los privilegios a nivel de columna + INSERT INTO mysql.columns_priv ( `User`, @@ -57726,7 +56022,7 @@ proc: BEGIN AND t.`Host`= vHost GROUP BY r.prefixedRole, t.`Db`, t.`Table_name`, t.`Column_name`; - -- Copia los privilegios de los procedimientos + INSERT IGNORE INTO mysql.procs_priv ( `User`, @@ -57752,7 +56048,7 @@ proc: BEGIN ON t.`User` = r.inheritsFrom AND t.`Host`= vHost; - -- Libera memoria + DROP TEMPORARY TABLE tRole, @@ -57779,13 +56075,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `roleGetDescendents`(vRole INT) BEGIN -/** - * Obtiene los identificadores de todos los subroles - * implementados por un rol (Incluido el mismo). - * - * @param vRole Identificador del rol - * @table tmp.role Subroles implementados por el rol - */ + DECLARE vIsRoot BOOL; DROP TEMPORARY TABLE IF EXISTS @@ -57822,7 +56112,7 @@ BEGIN UNTIL ROW_COUNT() <= 0 END REPEAT; - -- If it is root all the roles are added + SELECT COUNT(*) > 0 INTO vIsRoot FROM tmp.role @@ -57833,7 +56123,7 @@ BEGIN SELECT id FROM role; END IF; - -- Cleaning + DROP TEMPORARY TABLE parents, childs; @@ -57857,12 +56147,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `roleSync`() BEGIN -/** - * Sincroniza la tabla @roleRole con la jerarquía de roles - * actual. Este procedimiento debe ser llamado cada vez que - * se modifique la tabla @roleInherit para que los cambios - * realizados sobre esta sean efectivos. - */ + DECLARE vRoleId INT; DECLARE vDone BOOL; @@ -57914,14 +56199,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `userChangePassword`(vOldPassword VARCHAR(255), vPassword VARCHAR(255)) BEGIN -/** - * Cambia la contraseña del usuario actual,si el usuario se - * encuntra en modo restauración se ignorará la contraseña - * actual. - * - * @param vOldPassword Contraseña actual - * @param vPassword Nueva contraseña - */ + DECLARE vPasswordOk BOOL; SELECT `password` = MD5(vOldPassword) OR recoverPass @@ -57954,13 +56232,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `userCheckName`(vUserName VARCHAR(255)) BEGIN -/** - * Comprueba que el nombre de usuario reune los requisitos - * de sintaxis necesarios, en caso contrario lanza una - * excepción. - * El nombre de usuario solo debe contener letras minúsculas - * o, a partir del segundo carácter, números o subguiones. - **/ + IF vUserName NOT REGEXP '^[a-z0-9_]*$' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'INVALID_USER_NAME'; @@ -57985,12 +56257,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `userCheckPassword`(vPassword VARCHAR(255)) BEGIN -/** - * Comprueba si la contraseña cumple los requisitos de seguridad - * establecidos. Lanza una excepción si no se cumplen. - * - * @param vPassword Contraseña a comprobar - */ + DECLARE vChr CHAR(1); DECLARE vPasswordOk TINYINT; DECLARE vI TINYINT DEFAULT 1; @@ -58055,12 +56322,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `userLogin`(vUserName VARCHAR(255), vPassword VARCHAR(255)) BEGIN -/** - * Incicia sesión utilizando las credenciales del usuario. - * - * @param vUserName El nombre de usuario - * @param vPassword La contraseña del usuario - */ + DECLARE vUserId INT DEFAULT NULL; SELECT id INTO vUserId FROM user @@ -58096,14 +56358,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `userLoginWithName`(vUserName VARCHAR(255)) BEGIN -/** - * Incicia sesión utilizando únicamente el nombre del - * usuario. Este procedimiento esta pensado para el uso - * de los desarrolladores por lo que los usuarios normales - * no deberían tener permisos de ejecución sobre él. - * - * @param vUserName El nombre de usuario - */ + DECLARE vUserId INT DEFAULT NULL; SELECT id INTO vUserId FROM user @@ -58131,10 +56386,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `userLogout`() BEGIN -/** - * Cierra la sesión del usuario y limpia registros - * residuales. - */ + DECLARE vCleanTime DATETIME DEFAULT TIMESTAMPADD(MINUTE, -30, NOW()); @@ -58161,15 +56413,7 @@ ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `userSetPassword`(vUserName VARCHAR(255), vPassword VARCHAR(255)) BEGIN -/** - * Cambia la contraseña del usuario pasado como parámetro. - * Solo los administradores deberian de tener privilegios de - * ejecución sobre el procedimiento ya que no solicita la - * contraseña actual del usuario. - * - * @param vUserName Nombre de usuario - * @param vPassword Nueva contraseña - */ + CALL userCheckPassword (vPassword); UPDATE user SET @@ -58445,6 +56689,10 @@ CREATE TABLE `weekly_sales` ( ) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Dumping events for database 'cache' +-- + -- -- Dumping routines for database 'cache' -- @@ -58487,14 +56735,14 @@ proc: BEGIN LEAVE proc; END IF; - -- Limpia las caches antiguas + DELETE a FROM available a LEFT JOIN cache_calc c ON c.id = a.calc_id WHERE c.id IS NULL; - -- Calcula algunos parámetros necesarios + SET v_date_ini = TIMESTAMP(v_date, '00:00:00'); SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, 4, v_date), '23:59:59'); @@ -58504,7 +56752,7 @@ proc: BEGIN SELECT SUBTIME(NOW(), reserve_time) INTO v_reserve_date FROM hedera.order_config; - -- Calcula el ultimo dia de vida para cada producto + DROP TEMPORARY TABLE IF EXISTS item_range; CREATE TEMPORARY TABLE item_range @@ -58526,27 +56774,8 @@ proc: BEGIN JOIN vn2008.Articles a ON a.Id_Article = c.item_id JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id HAVING date_end >= v_date_ini OR date_end IS NULL; -/* - -- Tabla con el ultimo dia de precios fijados para cada producto que hace un replace de la anterior + - DROP TEMPORARY TABLE IF EXISTS item_range_copy; - CREATE TEMPORARY TABLE item_range_copy LIKE item_range; - INSERT INTO item_range_copy - SELECT * FROM item_range; - - REPLACE item_range - SELECT item_id, TIMESTAMP(date_end, '23:59:59') date_end FROM ( - SELECT p.item_id, p.date_end - FROM vn2008.price_fixed p - LEFT JOIN item_range_copy i USING(item_id) - WHERE IFNULL(i.date_end,v_date_ini) BETWEEN p.date_start AND p.date_end - AND warehouse_id IN (0, v_warehouse) - ORDER BY item_id, warehouse_id DESC, date_end DESC - ) t GROUP BY item_id; - - DROP TEMPORARY TABLE item_range_copy; -*/ - -- Replica la tabla item_range para poder usarla varias veces en la misma consulta DROP TEMPORARY TABLE IF EXISTS item_range_copy1; CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; @@ -58568,7 +56797,7 @@ proc: BEGIN INSERT INTO item_range_copy4 SELECT * FROM item_range; - -- Calcula el ATP + DELETE FROM available WHERE calc_id = v_calc; @@ -58671,9 +56900,9 @@ proc: BEGIN LEAVE proc; END IF; - -- Limpia las caches antiguas - IF TRUE -- GET_LOCK('available/clean', 1) + + IF TRUE THEN DELETE FROM available WHERE calc_id NOT IN ( SELECT cc.id @@ -58681,10 +56910,10 @@ proc: BEGIN JOIN cache_calc cc ON c.id = cc.cache_id WHERE c.`name` = 'available'); - -- DO RELEASE_LOCK('available/clean'); + END IF; - -- Calcula algunos parámetros necesarios + SET v_date_ini = TIMESTAMP(v_date, '00:00:00'); SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, 4, v_date), '23:59:59'); @@ -58694,7 +56923,7 @@ proc: BEGIN SELECT SUBTIME(NOW(), reserve_time) INTO v_reserve_date FROM hedera.order_config; - -- Calcula el ultimo dia de vida para cada producto + DROP TEMPORARY TABLE IF EXISTS item_range; CREATE TEMPORARY TABLE item_range @@ -58716,27 +56945,8 @@ proc: BEGIN JOIN vn2008.Articles a ON a.Id_Article = c.item_id JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id HAVING date_end >= v_date_ini OR date_end IS NULL; -/* - -- Tabla con el ultimo dia de precios fijados para cada producto que hace un replace de la anterior + - DROP TEMPORARY TABLE IF EXISTS item_range_copy; - CREATE TEMPORARY TABLE item_range_copy LIKE item_range; - INSERT INTO item_range_copy - SELECT * FROM item_range; - - REPLACE item_range - SELECT item_id, TIMESTAMP(date_end, '23:59:59') date_end FROM ( - SELECT p.item_id, p.date_end - FROM vn2008.price_fixed p - LEFT JOIN item_range_copy i USING(item_id) - WHERE IFNULL(i.date_end,v_date_ini) BETWEEN p.date_start AND p.date_end - AND warehouse_id IN (0, v_warehouse) - ORDER BY item_id, warehouse_id DESC, date_end DESC - ) t GROUP BY item_id; - - DROP TEMPORARY TABLE item_range_copy; -*/ - -- Replica la tabla item_range para poder usarla varias veces en la misma consulta DROP TEMPORARY TABLE IF EXISTS item_range_copy1; CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; @@ -58758,7 +56968,7 @@ proc: BEGIN INSERT INTO item_range_copy4 SELECT * FROM item_range; - -- Calcula el ATP + DELETE FROM available WHERE calc_id = v_calc; @@ -59056,7 +57266,7 @@ BEGIN DECLARE v_cache_name VARCHAR(255); DECLARE v_params VARCHAR(255); - -- Libera el bloqueo y actualiza la fecha de ultimo refresco. + UPDATE cache_calc cc JOIN cache c ON c.id = cc.cache_id SET @@ -59103,7 +57313,7 @@ proc: BEGIN SET v_params = IFNULL(v_params, ''); - -- Si el servidor se ha reiniciado invalida todos los calculos. + SELECT COUNT(*) > 0 INTO v_valid FROM cache_valid; @@ -59113,7 +57323,7 @@ proc: BEGIN INSERT INTO cache_valid (valid) VALUES (TRUE); END IF; - -- Obtiene un bloqueo exclusivo para que no haya problemas de concurrencia. + SET v_lock_id = CONCAT_WS('/', v_cache_name, v_params); @@ -59124,7 +57334,7 @@ proc: BEGIN LEAVE proc; END IF; - -- Comprueba si el calculo solicitado existe y esta actualizado. + SELECT c.id, ca.id, ca.expires INTO v_cache_id, v_calc, v_expires @@ -59133,7 +57343,7 @@ proc: BEGIN ON ca.cache_id = c.id AND ca.params = v_params COLLATE 'utf8_general_ci' WHERE c.name = v_cache_name COLLATE 'utf8_general_ci'; - -- Si existe una calculo valido libera el bloqueo y devuelve su identificador. + IF !v_refresh AND NOW() < v_expires THEN @@ -59142,7 +57352,7 @@ proc: BEGIN LEAVE proc; END IF; - -- Si el calculo no existe le crea una entrada en la tabla de calculos. + IF v_calc IS NULL THEN @@ -59164,7 +57374,7 @@ proc: BEGIN WHERE id = v_calc; END IF; - -- Si se debe recalcular mantiene el bloqueo y devuelve su identificador. + SET v_refresh = TRUE; END ;; @@ -59283,7 +57493,7 @@ OPEN rs; FETCH rs INTO rsDeparture, rsHoras , rsInicio; --- SELECT rsDeparture, rsHoras , rsInicio, myWarehouse; + WHILE NOT done DO @@ -59301,7 +57511,7 @@ WHILE NOT done DO FETCH rs INTO rsDeparture, rsHoras , rsInicio; - -- SELECT rsDeparture, rsHoras , rsInicio; + END IF; @@ -59532,7 +57742,7 @@ ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `equaliza`(wh_id INT) BEGIN - -- DEPRECATED usar equalizator_refesh + @@ -59560,57 +57770,7 @@ proc: BEGIN DECLARE datEQ DATETIME; DECLARE timDIF TIME; DECLARE v_calc INT; - /* JGF 2017-03-20 cuelga el sistema - CALL cache_calc_start (v_calc, v_refresh, 'equalizator', wh_id); - IF !v_refresh - THEN - LEAVE proc; - END IF; - - REPLACE equalizator (warehouse_id, Vista, Encajado, Impreso, Pedido) - SELECT - t.warehouse_id, - Vista, - sum(IF(t.Factura IS NOT NULL - OR t.Etiquetasemitidas - OR IFNULL(ticket_id,0), Cantidad * r.cm3, 0)) as encajado, - sum(IF(PedidoImpreso, Cantidad * r.cm3,0)) as impreso, - sum(Cantidad * r.cm3 ) as Pedido - FROM - vn2008.Movimientos m - JOIN - vn2008.Tickets t USING (Id_Ticket) - JOIN - bi.rotacion r on r.warehouse_id = t.warehouse_id and r.Id_Article = m.Id_Article - JOIN - vn2008.Agencias a ON t.Id_Agencia = a.Id_Agencia - JOIN - vn2008.Clientes C USING (Id_Cliente) - LEFT JOIN - (SELECT distinct - ticket_id - FROM - vn2008.expeditions e JOIN vn2008.Tickets t - ON t.Id_Ticket = e.ticket_id - WHERE Fecha >= curDate() - ) exp ON ticket_id = Id_Ticket - WHERE - invoice And Fecha >= curDate() - AND wh_id in (0,t.warehouse_id) - AND fecha < (TIMESTAMPADD(DAY, 1, CURDATE())) - GROUP BY t.warehouse_id, Vista; - - -- Reducimos las cantidades para que el grafico tenga sentido - - UPDATE equalizator SET - pedido = (pedido - (impreso - encajado) - encajado) / 1000000, - impreso = (impreso - encajado) / 1000000, - encajado = encajado / 1000000 - WHERE wh_id in (0,warehouse_id); - - CALL cache_calc_end (v_calc); - */ END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59647,7 +57807,7 @@ proc: BEGIN LEAVE proc; END IF; - -- Limpia las caches antiguas + DELETE FROM item_range WHERE calc_id NOT IN ( SELECT cc.id @@ -59655,13 +57815,13 @@ proc: BEGIN JOIN cache_calc cc ON c.id = cc.cache_id WHERE c.`name` = 'item_range'); - -- Calculos previos + CALL last_buy_refresh (FALSE); SET v_date_inv = vn2008.date_inv(); - -- Calcula el ultimo dia de vida para cada producto + DROP TEMPORARY TABLE IF EXISTS tmp.item_range; CREATE TEMPORARY TABLE tmp.item_range @@ -59686,7 +57846,7 @@ proc: BEGIN WHERE b.warehouse_id = v_warehouse HAVING date_end >= v_date OR date_end IS NULL; - -- Tabla con el ultimo dia de precios fijados para cada producto + DROP TEMPORARY TABLE IF EXISTS tmp.fix_range; CREATE TEMPORARY TABLE tmp.fix_range @@ -59700,7 +57860,7 @@ proc: BEGIN ORDER BY item_id, warehouse_id DESC, date_end DESC ) t GROUP BY item_id; - -- Calcula los rangos + DELETE FROM item_range WHERE calc_id = v_calc; @@ -59713,7 +57873,7 @@ proc: BEGIN ) t GROUP BY item_id; - -- Limpieza + DROP TEMPORARY TABLE tmp.item_range; DROP TEMPORARY TABLE tmp.fix_range; @@ -59739,13 +57899,7 @@ ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `last_buy_refresh`(v_refresh BOOL) proc: BEGIN -/** - * Crea o actualiza la cache con la última compra y fecha de cada - * artículo hasta ayer. Para obtener la última compra hasta una fecha - * determinada utilizar el procedimiento vn2008.item_last_buy_(). - * - * @param v_refresh %TRUE para forzar el recálculo de la cache - **/ + DECLARE v_calc INT; DECLARE v_date_ini DATE; DECLARE v_date_end DATE; @@ -59764,9 +57918,9 @@ proc: BEGIN LEAVE proc; END IF; - -- TODO: ¿Se puede usar la fecha del ultimo inventario? - SET v_date_ini = vn2008.date_inv();-- TIMESTAMPADD(DAY, -90, CURDATE()); - SET v_date_end = CURDATE(); -- TIMESTAMPADD(DAY, -1, CURDATE()); + + SET v_date_ini = vn2008.date_inv(); + SET v_date_end = CURDATE(); CALL vn2008.item_last_buy_from_interval (NULL, v_date_ini, v_date_end); @@ -59865,7 +58019,7 @@ proc:BEGIN SELECT MONTH(CURDATE()) INTO datMONTH; SELECT YEAR(CURDATE()) INTO datYEAR; - -- preparamos una tabla con los meses y años que interesan + DROP TEMPORARY TABLE IF EXISTS tmp.periods; CREATE TEMPORARY TABLE tmp.periods select distinct month, year(date) as year @@ -59874,12 +58028,12 @@ proc:BEGIN order by year desc, month desc limit 3; - -- borramos los datos para evitar flecos + DELETE s.* FROM bi.sales s join tmp.periods using(year,month); - -- insertamos las ventas de cada comercial + REPLACE bi.sales(Id_Trabajador, year, month, weight, boss_id) select v.Id_Trabajador, year, month, round(sum(total)) as weight, IFNULL(j.boss_id,20) from bi.v_ticket_total v @@ -59891,31 +58045,13 @@ proc:BEGIN - -- caso especial: Claudi ajuda a Josep a llegar a los 1200 euros de comision - /* - update bi.sales - set boss_aid = 34285 - weight - where Id_Trabajador = 378 - and year >= 2015 - and month > datmonth -2; - - update bi.sales s - join - (select year, month, boss_aid - from bi.sales - where Id_Trabajador = 378 - and year >= 2015 - and month > datmonth -2) sub using(year,month) - set s.boss_aid = s.boss_aid - sub.boss_aid - where Id_Trabajador = 208 - and year >= 2015 - and month > datmonth -2; - */ --- ahora, las comisiones + + + update bi.sales s set comision = weight * 0.029; @@ -59943,13 +58079,7 @@ ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `stock_refresh`(v_refresh BOOL) proc: BEGIN -/** - * Crea o actualiza la cache con el disponible hasta el día de - * ayer. Esta cache es usada como base para otros procedimientos - * como el cáculo del visible o del ATP. - * - * @param v_refresh %TRUE para forzar el recálculo de la cache - **/ + DECLARE v_calc INT; DECLARE v_date_inv DATE; DECLARE v_curdate DATE; @@ -60020,9 +58150,9 @@ proc: BEGIN LEAVE proc; END IF; - -- Limpia las caches antiguas - IF TRUE -- GET_LOCK('visible/clean', 1) + + IF TRUE THEN DELETE FROM visible WHERE calc_id NOT IN ( SELECT cc.id @@ -60030,10 +58160,10 @@ proc: BEGIN JOIN cache_calc cc ON c.id = cc.cache_id WHERE c.`name` = 'visible'); - -- DO RELEASE_LOCK('visible/clean'); + END IF; - -- Calculamos el stock hasta ayer + CALL `cache`.stock_refresh(false); @@ -60044,7 +58174,7 @@ proc: BEGIN SELECT item_id, amount stock, amount visible FROM `cache`.stock WHERE warehouse_id = v_warehouse; - -- Calculamos los movimientos confirmados de hoy + CALL vn2008.item_stock_visible(v_warehouse, NULL); @@ -60736,6 +58866,10 @@ CREATE TABLE `sipReg` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='SIP registrations'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Dumping events for database 'pbx' +-- + -- -- Dumping routines for database 'pbx' -- @@ -60754,9 +58888,9 @@ CREATE DEFINER=`root`@`%` FUNCTION `clientFromPhone`(vPhone VARCHAR(255)) RETURN BEGIN DECLARE vClient INT DEFAULT NULL; - -- SET vPhone = vPhone COLLATE 'utf8_unicode_ci'; - -- Searchs a customer associated to the phone number + + DROP TEMPORARY TABLE IF EXISTS tmp.customer; CREATE TEMPORARY TABLE tmp.customer @@ -62107,6 +60241,10 @@ CREATE TABLE `visitUser` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Dumping events for database 'hedera' +-- + -- -- Dumping routines for database 'hedera' -- @@ -62225,7 +60363,7 @@ BEGIN IF vMod THEN SET vAmount = vAmount + vGroup - vMod; - -- CALL util.warn ('ORDER_AMOUNT_ROUNDED'); + END IF; END IF; @@ -62248,14 +60386,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `order_get_total`(v_order INT) RETURNS double BEGIN -/** - * Obtiene el total de un pedido con el IVA y el recargo de - * equivalencia incluidos. - * - * @param v_order El identificador del pedido - * - * @return El total del pedido - **/ + DECLARE v_total DOUBLE; @@ -62286,13 +60417,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `userCheckRestPriv`(vMethodPath VARCHAR(255)) RETURNS tinyint(1) DETERMINISTIC BEGIN -/** - * Comprueba si el usuario actual tiene permiso para ejecutar - * un servicio REST. - * - * @param vMethodPath Ruta del servicio REST a ejecutar - * @return %TRUE si tiene permisos, %FALSE en caso contrario - **/ + DECLARE vRole INT DEFAULT NULL; SELECT role INTO vRole FROM restPriv @@ -62318,19 +60443,13 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `agency_list_from_date`(v_date DATE, v_address INT) BEGIN -/** - * Devuelve el listado de agencias disponibles para la fecha - * y dirección pasadas. - * - * @param v_date Fecha de recogida - * @address v_addres Id de dirección de envío, @NULL si es recogida - **/ + DECLARE v_agency INT; DECLARE v_done BOOLEAN; DECLARE cur CURSOR FOR SELECT agency_id FROM vn2008.agency; - -- WHERE IFNULL(warehouse_alias_id, 1) <> 28; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = TRUE; @@ -62354,9 +60473,9 @@ BEGIN CALL vn2008.travel_tree (v_date, v_address, v_agency); - -- No puedo usar IGNORE porque lanza un error 'invisible' + - INSERT /* IGNORE */ INTO t_agency + INSERT INTO t_agency SELECT a.Id_Agencia FROM vn2008.Agencias a JOIN vn2008.travel_tree t @@ -62383,13 +60502,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `basket_check`() BEGIN -/** - * Comprueba que la cesta esta creada y que su configuración es - * correcta. Si la configuración es correcta pero lleva mucho - * tiempo creada actualiza los precios y cantidades de los artículos. - * - * @select El id del pedido y el estado de la cesta - **/ + DECLARE v_order INT; DECLARE v_created DATETIME; DECLARE v_status VARCHAR(15) DEFAULT 'OK'; @@ -62435,14 +60548,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `basket_configure`( v_agency INT, v_address INT) BEGIN -/** - * Configura la cesta de la compra utilizando los parámetros - * pasados. Si los parámetros no son válidos devuelve un error. - * - * @param v_delivery Fecha de recogida - * @param v_agency Id de la agencia - * @param v_address Id de dirección de envío, @NULL si es recogida - **/ + DECLARE v_order INT; DECLARE v_company INT; DECLARE v_delivery_method_id INT; @@ -62869,11 +60975,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `customer_get_debt_by_company`() BEGIN -/** - * Calcula el saldo del cliente en cada empresa. - * - * @select Saldo desglosado por empresa - **/ + DECLARE v_date_ini DATETIME DEFAULT TIMESTAMP(DATE_FORMAT(TIMESTAMPADD(YEAR, -1, CURDATE()), '%Y-01-01')); DECLARE v_date_end DATETIME DEFAULT TIMESTAMP(CURDATE(), '23:59:59'); @@ -62939,12 +61041,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `formList`() BEGIN -/** - * Devuelve el listado de formularios web a los que tiene - * acceso el usuario actual. - * - * @table tmp.role Tabla con el listado de formularios - */ + SELECT f.id, f.path, f.description, f.parent FROM form f WHERE role_id IN (SELECT id FROM account.userRole) @@ -63205,11 +61302,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `item_available`() BEGIN -/** - * Genera una tabla con los ids de los articulos disponibles. - * - * @table tmp.item_available - **/ + DECLARE v_delivery DATE; DECLARE v_address INT; DECLARE v_agency INT; @@ -63400,11 +61493,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `order_check_config`(v_order INT) proc: BEGIN -/** - * Comprueba que la configuración del pedido es correcta. - * - * @param v_order Identificador del pedido - **/ + DECLARE v_delivery_method VARCHAR(45); DECLARE v_delivery DATE; DECLARE v_agency INT; @@ -63417,7 +61506,7 @@ BEGIN JOIN vn2008.Vistas v ON v.vista_id = o.delivery_method_id WHERE o.id = v_order; - -- Comprueba que se ha seleccionado una dirección + IF v_delivery_method IN ('AGENCY', 'DELIVERY') && v_address IS NULL @@ -63425,7 +61514,7 @@ BEGIN CALL util.throw ('ORDER_EMPTY_ADDRESS'); END IF; - -- Comprueba que la agencia es correcta + CALL agency_list_from_date (v_delivery, v_address); @@ -63456,12 +61545,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `order_confirm_bionic`(v_order INT) BEGIN -/** - * Confirma un pedido, creando cada uno de sus tickets en la fecha - * y almacén correspondientes. - * - * @param v_order Identificador del pedido - **/ + DECLARE v_ok BOOLEAN; DECLARE v_done BOOLEAN DEFAULT FALSE; DECLARE v_wh INT; @@ -63509,7 +61593,7 @@ BEGIN RESIGNAL; END; - -- Carga los datos del pedido + SELECT o.date_send, o.address_id, o.note, a.agency_id, o.confirmed INTO d_delivery, i_address, v_note, i_agency, b_confirmed @@ -63517,13 +61601,13 @@ BEGIN JOIN vn2008.Agencias a ON a.Id_Agencia = o.agency_id WHERE id = v_order; - -- Comprueba que el pedido no está confirmado + IF b_confirmed THEN CALL util.throw ('ORDER_ALREADY_CONFIRMED'); END IF; - -- Comprueba que el pedido no está vacío + SELECT COUNT(*) > 0 INTO v_ok FROM order_row WHERE order_id = v_order AND amount > 0; @@ -63532,11 +61616,11 @@ BEGIN CALL util.throw ('ORDER_EMPTY'); END IF; - -- Carga las fechas de salida de cada almacén + CALL vn2008.travel_tree (d_delivery, i_address, i_agency); - -- Trabajador que realiza la acción + SELECT Id_Trabajador INTO i_worker FROM vn2008.Trabajadores @@ -63546,7 +61630,7 @@ BEGIN SELECT employee_id INTO i_worker FROM order_config; END IF; - -- Crea los tickets del pedido + START TRANSACTION; @@ -63562,7 +61646,7 @@ BEGIN LEAVE tick_loop; END IF; - -- Busca un ticket existente que coincida con los parametros del nuevo pedido + SELECT Id_Ticket INTO v_ticket FROM vn2008.Tickets t @@ -63576,13 +61660,11 @@ BEGIN WHERE o.id = v_order AND t.Factura IS NULL AND IFNULL(tls.alertLevel,0) = 0 - /* AND t.PedidoImpreso = 0 - AND t.Etiquetasemitidas = 0 - AND vn2008.is_bionic(t.Id_Ticket) */ + AND t.Id_Cliente <> 1118 LIMIT 1; - -- Crea el ticket en el caso de no existir uno adecuado + IF v_ticket IS NULL THEN @@ -63598,7 +61680,7 @@ BEGIN SET v_ticket = LAST_INSERT_ID(); ELSE - -- UPDATE vn2008.Tickets SET Localizacion = CONCAT(Localizacion,'B+') WHERE Id_Ticket = v_ticket; + INSERT INTO vncontrol.inter(Id_Ticket, Id_Trabajador, state_id) VALUES(v_ticket, SYSTEM_WORKER, TICKET_FREE); @@ -63607,16 +61689,16 @@ BEGIN INSERT IGNORE INTO vn2008.order_Tickets (order_id, Id_Ticket) VALUES (v_order, v_ticket); - -- Añade las notas + IF v_note IS NOT NULL && v_note != '' THEN INSERT INTO vn2008.ticket_observation (Id_Ticket, observation_type_id, text) - VALUES (v_ticket, 4/*comercial*/ , v_note) + VALUES (v_ticket, 4 , v_note) ON DUPLICATE KEY UPDATE text = CONCAT(VALUES(text),'. ', text); END IF; - -- Añade los movimientos y sus componentes + OPEN cur_mov; @@ -63654,7 +61736,7 @@ BEGIN END LOOP; CLOSE cur_mov; - -- Fija el Costfixat + UPDATE vn2008.Movimientos m JOIN (SELECT SUM(mc.Valor) sum_valor,mc.Id_Movimiento @@ -63692,15 +61774,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `order_get_vat`(v_order INT) BEGIN -/** - * Calcula el IVA, y el recargo de equivalencia de un pedido - * desglosados por tipos. - * - * @param v_order El identificador del pedido - * - * @table t_order_vat Tabla con las bases imponibles, su - * IVA y su recargo de equivalencia. - **/ + DECLARE v_billing_date DATE DEFAULT CURDATE(); DECLARE clean CONDITION FOR SQLSTATE 'HY000'; @@ -63712,7 +61786,7 @@ BEGIN SIGNAL clean; - -- Calcula el tipo de IVA para cada grupo en cada país. + CREATE TEMPORARY TABLE t_vat_group (INDEX (country_id, vat_group_id)) @@ -63727,7 +61801,7 @@ BEGIN ) t GROUP BY country_id, vat_group_id; - -- Calcula el impuesto para cada tipo de IVA en cada país. + CREATE TEMPORARY TABLE t_vat_tax (INDEX (country_id, rate)) @@ -63743,7 +61817,7 @@ BEGIN ) t GROUP BY country_id, rate; - -- Calcula el IVA y el recargo desglosado. + DROP TEMPORARY TABLE IF EXISTS t_order_vat; CREATE TEMPORARY TABLE t_order_vat @@ -63940,12 +62014,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticket_list`() BEGIN -/** - * Devuelve los tickets del cliente del último mes, calculando - * el total de cada ticket. - * - * @select Listado de tickets - **/ + DROP TEMPORARY TABLE IF EXISTS vn2008.ticket_tmp; CREATE TEMPORARY TABLE vn2008.ticket_tmp (KEY (ticket_id)) @@ -64066,7 +62135,7 @@ BEGIN SET vReceipt = LAST_INSERT_ID(); SET vStatus = 'ok'; - -- Código redundante + DO vn2008.till_entry ( @@ -64199,16 +62268,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `transactionEnd`(vTransaction INT, vStatus VARCHAR(12)) BEGIN -/** - * Finaliza una transaccción estableciendo su estado a 'ok' o - * 'ko' en función de si esta se ha realizado correctamente. - * Este procedimiento debe ser llamado directamente por el cliente - * nada mas finalizar la transacción y solo tiene validez hasta que - * llega la notificacion definitiva desde el banco. - * - * @param vTransaction El identificador de la transacción - * @param vStatus El estado, 'ok' o 'ko' - **/ + IF vStatus IN ('ok', 'ko') THEN UPDATE tpv_transaction_view SET status = vStatus @@ -64232,17 +62292,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `transactionStart`(vAmount INT, vCompany INT) BEGIN -/** - * Inicia una nueva transacción con el TPV virtual, generando - * un identificador de transacción y devolviendo con un SELECT - * los parámetros que deben enviarse a la URL del servicio web - * del banco. - * - * @param vAmount Cantidad a pagar en céntimos - * @param vCompany El identificador de la empresa - * - * @select Los parámetros que deben pasarse al banco - **/ + DECLARE vTransaction CHAR(12); DECLARE vMerchant INT; @@ -64356,12 +62406,12 @@ BEGIN WHERE t.id = vOrder FOR UPDATE; - -- Elimina el recibo + DELETE FROM vn2008.Recibos WHERE Id = vReceipt LIMIT 1; - -- Elimina la entrada de cajas + DELETE FROM vn2008.Cajas WHERE Id_Banco = vBank @@ -64369,7 +62419,7 @@ BEGIN AND Entrada = vAmount LIMIT 1; - -- Elimina los asientos contables + SELECT Cuenta INTO vSubaccount FROM vn2008.Clientes WHERE Id_Cliente = vCustomer; @@ -64391,7 +62441,7 @@ BEGIN AND EURODEBE = vAmount LIMIT 1; - -- Actualiza la transaccion + UPDATE tpv_transaction SET response = NULL, status = 'started' @@ -64416,13 +62466,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `type_list`(v_realm INT) BEGIN -/** - * Devuelve los subtipos disponibles para el reino pasado - * utilizando la fecha, dirección y agencia de la cesta de - * la compra. - * - * @param v_realm Id del reino - **/ + DECLARE v_date DATE; DECLARE v_address INT; DECLARE v_agency INT; @@ -64473,7 +62517,7 @@ BEGIN DECLARE vAgentId INT DEFAULT NULL; DECLARE vAccessId INT DEFAULT NULL; - -- Registers the visit + IF vVisit IS NULL || (SELECT COUNT(*) FROM visit WHERE id = vVisit) = 0 THEN @@ -64487,7 +62531,7 @@ BEGIN AND (agent = vAgent OR (vAgent IS NULL AND agent IS NULL)) LIMIT 1; - -- Registers the user agent + IF vAgentId IS NULL THEN @@ -64510,7 +62554,7 @@ BEGIN WHERE id = vVisit; END IF; - -- Registers the user access + INSERT INTO visitAccess SET agent = vAgentId @@ -64525,7 +62569,7 @@ BEGIN WHERE id = vAgentId; END IF; - -- Returns the visit info + SELECT vVisit visit, vAccessId access; END ;; @@ -66448,7 +64492,7 @@ USE `vn`; /*!50001 SET collation_connection = utf8_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `client` AS select `c`.`id_cliente` AS `id`,`c`.`cliente` AS `name`,`c`.`if` AS `fi`,`c`.`razonSocial` AS `socialName`,`c`.`contacto` AS `contact`,`c`.`domicilio` AS `street`,`c`.`poblacion` AS `city`,`c`.`codPostal` AS `postcode`,`c`.`telefono` AS `phone`,`c`.`movil` AS `mobile`,`c`.`fax` AS `fax`,`c`.`real` AS `isRelevant`,`c`.`e-mail` AS `email`,`c`.`cc` AS `iban`,`c`.`vencimiento` AS `dueDay`,`c`.`Cuenta` AS `accountingAccount`,`c`.`RE` AS `isEqualizated`,`c`.`province_id` AS `provinceFk`,`c`.`invoice` AS `hasToInvoice`,`c`.`credito` AS `credit`,`c`.`Id_Pais` AS `countryFk`,`c`.`activo` AS `isActive`,`c`.`gestdoc_id` AS `gestdocFk`,`c`.`calidad` AS `quality`,`c`.`pay_met_id` AS `payMethodFk`,`c`.`created` AS `created`,`c`.`mail` AS `isToBeMailed`,`c`.`chanel_id` AS `contactChannelFk`,`c`.`sepaVnl` AS `hasSepavnl`,`c`.`coreVnl` AS `hasCorevnl`,`c`.`coreVnh` AS `hasCoreVnh`,`c`.`risk_calculated` AS `riskCalculated`,`c`.`clientes_tipo_id` AS `clientTypeFk`,`c`.`mail_address` AS `mail_address`,`c`.`cplusTerIdNifFk` AS `cplusTerIdNifFk`,`c`.`invoiceByAddress` AS `hasToInvoiceByAddress`,`c`.`contabilizado` AS `isTaxDataChecked`,`c`.`congelado` AS `isFreezed`,`c`.`creditInsurance` AS `creditInsurance`,`c`.`isCreatedAsServed` AS `isCreatedAsServed`,`c`.`hasInvoiceSimplified` AS `hasInvoiceSimplified`,`c`.`Id_Trabajador` AS `salesPersonFk`,`c`.`vies` AS `isVies`,`c`.`EYPBC` AS `eypbc` from `vn2008`.`Clientes` `c` */; +/*!50001 VIEW `client` AS select `c`.`id_cliente` AS `id`,`c`.`cliente` AS `name`,`c`.`if` AS `fi`,`c`.`razonSocial` AS `socialName`,`c`.`contacto` AS `contact`,`c`.`domicilio` AS `street`,`c`.`poblacion` AS `city`,`c`.`codPostal` AS `postcode`,`c`.`telefono` AS `phone`,`c`.`movil` AS `mobile`,`c`.`fax` AS `fax`,`c`.`real` AS `isRelevant`,`c`.`e-mail` AS `email`,`c`.`iban` AS `iban`,`c`.`vencimiento` AS `dueDay`,`c`.`Cuenta` AS `accountingAccount`,`c`.`RE` AS `isEqualizated`,`c`.`province_id` AS `provinceFk`,`c`.`invoice` AS `hasToInvoice`,`c`.`credito` AS `credit`,`c`.`Id_Pais` AS `countryFk`,`c`.`activo` AS `isActive`,`c`.`gestdoc_id` AS `gestdocFk`,`c`.`calidad` AS `quality`,`c`.`pay_met_id` AS `payMethodFk`,`c`.`created` AS `created`,`c`.`mail` AS `isToBeMailed`,`c`.`chanel_id` AS `contactChannelFk`,`c`.`sepaVnl` AS `hasSepaVnl`,`c`.`coreVnl` AS `hasCoreVnl`,`c`.`coreVnh` AS `hasCoreVnh`,`c`.`risk_calculated` AS `riskCalculated`,`c`.`clientes_tipo_id` AS `clientTypeFk`,`c`.`mail_address` AS `mailAddress`,`c`.`cplusTerIdNifFk` AS `cplusTerIdNifFk`,`c`.`invoiceByAddress` AS `hasToInvoiceByAddress`,`c`.`contabilizado` AS `isTaxDataChecked`,`c`.`congelado` AS `isFreezed`,`c`.`creditInsurance` AS `creditInsurance`,`c`.`isCreatedAsServed` AS `isCreatedAsServed`,`c`.`hasInvoiceSimplified` AS `hasInvoiceSimplified`,`c`.`Id_Trabajador` AS `salesPersonFk`,`c`.`vies` AS `isVies`,`c`.`EYPBC` AS `eypbc` from `vn2008`.`Clientes` `c` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -68864,4 +66908,4 @@ USE `hedera`; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2017-10-10 13:39:29 +-- Dump completed on 2017-12-18 14:16:38