This commit is contained in:
parent
15d6c9a65b
commit
3b14c7cd23
|
@ -62,6 +62,7 @@ async function test() {
|
||||||
jasmine.jasmine.DEFAULT_TIMEOUT_INTERVAL = 90000;
|
jasmine.jasmine.DEFAULT_TIMEOUT_INTERVAL = 90000;
|
||||||
jasmine.exitOnCompletion = true;
|
jasmine.exitOnCompletion = true;
|
||||||
}
|
}
|
||||||
|
jasmine.jasmine.DEFAULT_TIMEOUT_INTERVAL = 90000;
|
||||||
|
|
||||||
const backSpecs = [
|
const backSpecs = [
|
||||||
'./back/**/*[sS]pec.js',
|
'./back/**/*[sS]pec.js',
|
||||||
|
|
|
@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticketPositionInPath
|
||||||
RETURNS varchar(10) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
|
RETURNS varchar(10) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
|
||||||
DETERMINISTIC
|
DETERMINISTIC
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
DECLARE vRestTicketsMaxOrder INT;
|
DECLARE vRestTicketsMaxOrder INT;
|
||||||
DECLARE vRestTicketsMinOrder INT;
|
DECLARE vRestTicketsMinOrder INT;
|
||||||
DECLARE vRestTicketsPacking INT;
|
DECLARE vRestTicketsPacking INT;
|
||||||
|
@ -15,7 +15,9 @@ BEGIN
|
||||||
DECLARE vExpeditionsCount INT;
|
DECLARE vExpeditionsCount INT;
|
||||||
DECLARE vIsValenciaPath BOOLEAN DEFAULT FALSE;
|
DECLARE vIsValenciaPath BOOLEAN DEFAULT FALSE;
|
||||||
|
|
||||||
SELECT `order`
|
|
||||||
|
|
||||||
|
SELECT `order`
|
||||||
INTO PACKING_ORDER
|
INTO PACKING_ORDER
|
||||||
FROM state
|
FROM state
|
||||||
WHERE code = 'PACKING';
|
WHERE code = 'PACKING';
|
||||||
|
@ -26,7 +28,7 @@ SELECT t.routeFk, t.warehouseFk, IFNULL(ts.productionOrder,0)
|
||||||
LEFT JOIN ticketState ts on ts.ticketFk = t.id
|
LEFT JOIN ticketState ts on ts.ticketFk = t.id
|
||||||
WHERE t.id = vTicketId;
|
WHERE t.id = vTicketId;
|
||||||
|
|
||||||
SELECT (ag.`name` = 'VN_VALENCIA')
|
SELECT (ag.`name` = 'VN_VALENCIA')
|
||||||
INTO vIsValenciaPath
|
INTO vIsValenciaPath
|
||||||
FROM vn2008.Rutas r
|
FROM vn2008.Rutas r
|
||||||
JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia
|
JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia
|
||||||
|
@ -40,7 +42,7 @@ IF vIsValenciaPath THEN -- Rutas Valencia
|
||||||
FROM expedition e
|
FROM expedition e
|
||||||
JOIN ticket t ON t.id = e.ticketFk
|
JOIN ticket t ON t.id = e.ticketFk
|
||||||
WHERE t.routeFk = vMyPath;
|
WHERE t.routeFk = vMyPath;
|
||||||
|
|
||||||
SELECT MAX(ts.productionOrder), MIN(ts.productionOrder)
|
SELECT MAX(ts.productionOrder), MIN(ts.productionOrder)
|
||||||
INTO vRestTicketsMaxOrder, vRestTicketsMinOrder
|
INTO vRestTicketsMaxOrder, vRestTicketsMinOrder
|
||||||
FROM ticket t
|
FROM ticket t
|
||||||
|
@ -49,7 +51,7 @@ IF vIsValenciaPath THEN -- Rutas Valencia
|
||||||
AND t.warehouseFk = vMyWarehouse
|
AND t.warehouseFk = vMyWarehouse
|
||||||
AND t.id != vTicketid;
|
AND t.id != vTicketid;
|
||||||
|
|
||||||
SELECT COUNT(*)
|
SELECT COUNT(*)
|
||||||
INTO vRestTicketsPacking
|
INTO vRestTicketsPacking
|
||||||
FROM ticket t
|
FROM ticket t
|
||||||
LEFT JOIN ticketState ts on t.id = ts.ticketFk
|
LEFT JOIN ticketState ts on t.id = ts.ticketFk
|
||||||
|
|
|
@ -5,7 +5,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`item_getVisible
|
||||||
vType INT,
|
vType INT,
|
||||||
vPrefix VARCHAR(255))
|
vPrefix VARCHAR(255))
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets visible items of the specified type at specified date.
|
* Gets visible items of the specified type at specified date.
|
||||||
*
|
*
|
||||||
|
@ -14,7 +14,7 @@ BEGIN
|
||||||
* @param vType The type id
|
* @param vType The type id
|
||||||
* @param vPrefix The article prefix to filter or %NULL for all
|
* @param vPrefix The article prefix to filter or %NULL for all
|
||||||
* @return tmp.itemVisible Visible items
|
* @return tmp.itemVisible Visible items
|
||||||
*/
|
*/
|
||||||
DECLARE vPrefixLen SMALLINT;
|
DECLARE vPrefixLen SMALLINT;
|
||||||
DECLARE vFilter VARCHAR(255) DEFAULT NULL;
|
DECLARE vFilter VARCHAR(255) DEFAULT NULL;
|
||||||
DECLARE vDateInv DATE DEFAULT vn.getInventoryDate();
|
DECLARE vDateInv DATE DEFAULT vn.getInventoryDate();
|
||||||
|
@ -23,13 +23,13 @@ BEGIN
|
||||||
GET DIAGNOSTICS CONDITION 1
|
GET DIAGNOSTICS CONDITION 1
|
||||||
@message = MESSAGE_TEXT;
|
@message = MESSAGE_TEXT;
|
||||||
CALL vn.mail_insert(
|
CALL vn.mail_insert(
|
||||||
'cau@verdnatura.es',
|
'cau@verdnatura.es',
|
||||||
NULL,
|
NULL,
|
||||||
CONCAT('hedera.item_getVisible error: ', @message),
|
CONCAT('hedera.item_getVisible error: ', @message),
|
||||||
CONCAT(
|
CONCAT(
|
||||||
'warehouse: ', IFNULL(vWarehouse, ''),
|
'warehouse: ', IFNULL(vWarehouse, ''),
|
||||||
', Fecha:', IFNULL(vDate, ''),
|
', Fecha:', IFNULL(vDate, ''),
|
||||||
', tipo: ', IFNULL(vType,''),
|
', tipo: ', IFNULL(vType,''),
|
||||||
', prefijo: ', IFNULL(vPrefix,'')));
|
', prefijo: ', IFNULL(vPrefix,'')));
|
||||||
RESIGNAL;
|
RESIGNAL;
|
||||||
END;
|
END;
|
||||||
|
@ -108,7 +108,7 @@ BEGIN
|
||||||
IF(p.depth > 0, p.depth, 0) depth, p.width, p.height,
|
IF(p.depth > 0, p.depth, 0) depth, p.width, p.height,
|
||||||
CEIL(s.quantity / t.packing) etiquetas
|
CEIL(s.quantity / t.packing) etiquetas
|
||||||
FROM vn.item i
|
FROM vn.item i
|
||||||
JOIN `filter` f ON f.itemFk = i.id
|
JOIN `filter` f ON f.itemFk = i.id
|
||||||
JOIN currentStock s ON s.itemFk = i.id
|
JOIN currentStock s ON s.itemFk = i.id
|
||||||
LEFT JOIN tmp t ON t.itemFk = i.id
|
LEFT JOIN tmp t ON t.itemFk = i.id
|
||||||
LEFT JOIN vn.packaging p ON p.id = t.packagingFk
|
LEFT JOIN vn.packaging p ON p.id = t.packagingFk
|
||||||
|
@ -187,7 +187,7 @@ BEGIN
|
||||||
END;
|
END;
|
||||||
|
|
||||||
-- Carga los datos del pedido
|
-- Carga los datos del pedido
|
||||||
SELECT o.date_send, o.address_id, o.note, a.clientFk,
|
SELECT o.date_send, o.address_id, o.note, a.clientFk,
|
||||||
o.company_id, o.agency_id, c.isTaxDataChecked
|
o.company_id, o.agency_id, c.isTaxDataChecked
|
||||||
INTO vDelivery, vAddress, vNotes, vClientId,
|
INTO vDelivery, vAddress, vNotes, vClientId,
|
||||||
vCompanyId, vAgencyModeId, vIsTaxDataChecked
|
vCompanyId, vAgencyModeId, vIsTaxDataChecked
|
||||||
|
@ -256,7 +256,7 @@ BEGIN
|
||||||
WHERE o.id = vSelf
|
WHERE o.id = vSelf
|
||||||
AND t.refFk IS NULL
|
AND t.refFk IS NULL
|
||||||
AND tp.ticketFk IS NULL
|
AND tp.ticketFk IS NULL
|
||||||
AND IFNULL(tls.alertLevel,0) = 0
|
AND IFNULL(tls.alertLevel,0) = 0
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
|
|
||||||
-- Crea el ticket en el caso de no existir uno adecuado
|
-- Crea el ticket en el caso de no existir uno adecuado
|
||||||
|
@ -572,7 +572,7 @@ BEGIN
|
||||||
JOIN state s
|
JOIN state s
|
||||||
WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = getAlert3State(ti.id);
|
WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = getAlert3State(ti.id);
|
||||||
|
|
||||||
INSERT INTO ticketTracking(stateFk,ticketFk,workerFk)
|
INSERT INTO ticketTracking(stateFk,ticketFk,userFk)
|
||||||
SELECT * FROM tmp.updateInter;
|
SELECT * FROM tmp.updateInter;
|
||||||
|
|
||||||
CALL invoiceExpenseMake(vNewInvoiceId);
|
CALL invoiceExpenseMake(vNewInvoiceId);
|
||||||
|
@ -696,7 +696,7 @@ DELIMITER ;
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingRadar`(vSectorFk INT)
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingRadar`(vSectorFk INT)
|
||||||
proc:BEGIN
|
proc:BEGIN
|
||||||
|
|
||||||
DECLARE vCalcVisibleFk INT;
|
DECLARE vCalcVisibleFk INT;
|
||||||
DECLARE vCalcAvailableFk INT;
|
DECLARE vCalcAvailableFk INT;
|
||||||
DECLARE hasFatherSector BOOLEAN;
|
DECLARE hasFatherSector BOOLEAN;
|
||||||
|
@ -704,17 +704,17 @@ proc:BEGIN
|
||||||
DECLARE vWarehouseFk INT DEFAULT 0;
|
DECLARE vWarehouseFk INT DEFAULT 0;
|
||||||
DECLARE vSonSectorFk INT;
|
DECLARE vSonSectorFk INT;
|
||||||
DECLARE vWorkerFk INT;
|
DECLARE vWorkerFk INT;
|
||||||
|
|
||||||
SELECT s.workerFk
|
SELECT s.workerFk
|
||||||
INTO vWorkerFk
|
INTO vWorkerFk
|
||||||
FROM vn.sector s
|
FROM vn.sector s
|
||||||
WHERE s.id = vSectorFk;
|
WHERE s.id = vSectorFk;
|
||||||
|
|
||||||
SELECT w.id, s.warehouseFk INTO vBuyerFk, vWarehouseFk
|
SELECT w.id, s.warehouseFk INTO vBuyerFk, vWarehouseFk
|
||||||
FROM vn.worker w
|
FROM vn.worker w
|
||||||
JOIN vn.sector s ON s.code = w.code
|
JOIN vn.sector s ON s.code = w.code
|
||||||
WHERE s.id = vSectorFk;
|
WHERE s.id = vSectorFk;
|
||||||
|
|
||||||
SELECT s.id INTO vSectorFk
|
SELECT s.id INTO vSectorFk
|
||||||
FROM vn.sector s
|
FROM vn.sector s
|
||||||
WHERE s.warehouseFk = vWarehouseFk
|
WHERE s.warehouseFk = vWarehouseFk
|
||||||
|
@ -723,21 +723,21 @@ proc:BEGIN
|
||||||
SELECT COUNT(*) INTO hasFatherSector
|
SELECT COUNT(*) INTO hasFatherSector
|
||||||
FROM vn.sector
|
FROM vn.sector
|
||||||
WHERE sonFk = vSectorFk;
|
WHERE sonFk = vSectorFk;
|
||||||
|
|
||||||
SELECT warehouseFk, sonFk INTO vWarehouseFk, vSonSectorFk
|
SELECT warehouseFk, sonFk INTO vWarehouseFk, vSonSectorFk
|
||||||
FROM vn.sector
|
FROM vn.sector
|
||||||
WHERE id = vSectorFk;
|
WHERE id = vSectorFk;
|
||||||
|
|
||||||
CALL cache.visible_refresh(vCalcVisibleFk, TRUE, vWarehouseFk);
|
CALL cache.visible_refresh(vCalcVisibleFk, TRUE, vWarehouseFk);
|
||||||
CALL cache.available_refresh(vCalcAvailableFk, FALSE, vWarehouseFk, util.VN_CURDATE());
|
CALL cache.available_refresh(vCalcAvailableFk, FALSE, vWarehouseFk, util.VN_CURDATE());
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.itemShelvingRadar;
|
DROP TEMPORARY TABLE IF EXISTS tmp.itemShelvingRadar;
|
||||||
|
|
||||||
IF hasFatherSector THEN
|
IF hasFatherSector THEN
|
||||||
CREATE TEMPORARY TABLE tmp.itemShelvingRadar
|
CREATE TEMPORARY TABLE tmp.itemShelvingRadar
|
||||||
(PRIMARY KEY (itemFk))
|
(PRIMARY KEY (itemFk))
|
||||||
ENGINE = MEMORY
|
ENGINE = MEMORY
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM (
|
FROM (
|
||||||
SELECT iss.itemFk,
|
SELECT iss.itemFk,
|
||||||
i.longName,
|
i.longName,
|
||||||
|
@ -756,9 +756,9 @@ proc:BEGIN
|
||||||
LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = vCalcVisibleFk
|
LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = vCalcVisibleFk
|
||||||
WHERE vSectorFk IN (iss.sectorFk, s.sonFk)
|
WHERE vSectorFk IN (iss.sectorFk, s.sonFk)
|
||||||
GROUP BY iss.itemFk
|
GROUP BY iss.itemFk
|
||||||
|
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
|
||||||
SELECT v.item_id,
|
SELECT v.item_id,
|
||||||
i.longName,
|
i.longName,
|
||||||
i.size,
|
i.size,
|
||||||
|
@ -768,7 +768,7 @@ proc:BEGIN
|
||||||
0 downstairs,
|
0 downstairs,
|
||||||
IF(it.isPackaging, NULL, v.visible) visible,
|
IF(it.isPackaging, NULL, v.visible) visible,
|
||||||
vSectorFk as sectorFk
|
vSectorFk as sectorFk
|
||||||
FROM cache.visible v
|
FROM cache.visible v
|
||||||
JOIN vn.item i on i.id = v.item_id
|
JOIN vn.item i on i.id = v.item_id
|
||||||
JOIN vn.itemType it ON it.id = i.typeFk AND vBuyerFk IN (0,it.workerFk)
|
JOIN vn.itemType it ON it.id = i.typeFk AND vBuyerFk IN (0,it.workerFk)
|
||||||
LEFT JOIN vn.itemShelvingStock iss ON iss.itemFk = v.item_id AND iss.warehouseFk = vWarehouseFk
|
LEFT JOIN vn.itemShelvingStock iss ON iss.itemFk = v.item_id AND iss.warehouseFk = vWarehouseFk
|
||||||
|
@ -777,8 +777,8 @@ proc:BEGIN
|
||||||
AND iss.itemFk IS NULL
|
AND iss.itemFk IS NULL
|
||||||
AND it.isInventory
|
AND it.isInventory
|
||||||
) sub GROUP BY itemFk;
|
) sub GROUP BY itemFk;
|
||||||
|
|
||||||
SELECT ishr.*,
|
SELECT ishr.*,
|
||||||
CAST(visible - upstairs - downstairs AS DECIMAL(10,0)) AS nicho,
|
CAST(visible - upstairs - downstairs AS DECIMAL(10,0)) AS nicho,
|
||||||
CAST(downstairs - IFNULL(notPickedYed,0) AS DECIMAL(10,0)) as pendiente
|
CAST(downstairs - IFNULL(notPickedYed,0) AS DECIMAL(10,0)) as pendiente
|
||||||
FROM tmp.itemShelvingRadar ishr
|
FROM tmp.itemShelvingRadar ishr
|
||||||
|
@ -795,7 +795,7 @@ proc:BEGIN
|
||||||
ELSE
|
ELSE
|
||||||
CREATE TEMPORARY TABLE tmp.itemShelvingRadar
|
CREATE TEMPORARY TABLE tmp.itemShelvingRadar
|
||||||
(PRIMARY KEY (itemFk))
|
(PRIMARY KEY (itemFk))
|
||||||
ENGINE = MEMORY
|
ENGINE = MEMORY
|
||||||
SELECT iss.itemFk,
|
SELECT iss.itemFk,
|
||||||
0 `hour`,
|
0 `hour`,
|
||||||
0 `minute`,
|
0 `minute`,
|
||||||
|
@ -807,7 +807,7 @@ proc:BEGIN
|
||||||
IFNULL(a.available,0) available,
|
IFNULL(a.available,0) available,
|
||||||
IFNULL(v.visible - iss.visible,0) dayEndVisible,
|
IFNULL(v.visible - iss.visible,0) dayEndVisible,
|
||||||
IFNULL(v.visible - iss.visible,0) firstNegative,
|
IFNULL(v.visible - iss.visible,0) firstNegative,
|
||||||
IFNULL(v.visible - iss.visible,0) itemPlacementVisible,
|
IFNULL(v.visible - iss.visible,0) itemPlacementVisible,
|
||||||
IFNULL(i.minimum * b.packing,0) itemPlacementSize,
|
IFNULL(i.minimum * b.packing,0) itemPlacementSize,
|
||||||
ips.onTheWay,
|
ips.onTheWay,
|
||||||
iss.visible itemShelvingStock,
|
iss.visible itemShelvingStock,
|
||||||
|
@ -821,20 +821,20 @@ proc:BEGIN
|
||||||
LEFT JOIN cache.available a ON a.item_id = iss.itemFk AND a.calc_id = vCalcAvailableFk
|
LEFT JOIN cache.available a ON a.item_id = iss.itemFk AND a.calc_id = vCalcAvailableFk
|
||||||
LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = vCalcVisibleFk
|
LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = vCalcVisibleFk
|
||||||
LEFT JOIN (SELECT itemFk, sum(saldo) as onTheWay
|
LEFT JOIN (SELECT itemFk, sum(saldo) as onTheWay
|
||||||
FROM vn.itemPlacementSupplyList
|
FROM vn.itemPlacementSupplyList
|
||||||
WHERE saldo > 0
|
WHERE saldo > 0
|
||||||
GROUP BY itemFk
|
GROUP BY itemFk
|
||||||
) ips ON ips.itemFk = i.id
|
) ips ON ips.itemFk = i.id
|
||||||
WHERE IFNULL(iss.sectorFk,0) IN (0, vSectorFk)
|
WHERE IFNULL(iss.sectorFk,0) IN (0, vSectorFk)
|
||||||
OR iss.sectorFk = vSectorFk;
|
OR iss.sectorFk = vSectorFk;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.itemOutTime;
|
DROP TEMPORARY TABLE IF EXISTS tmp.itemOutTime;
|
||||||
CREATE TEMPORARY TABLE tmp.itemOutTime
|
CREATE TEMPORARY TABLE tmp.itemOutTime
|
||||||
SELECT *,SUM(amount) quantity
|
SELECT *,SUM(amount) quantity
|
||||||
FROM
|
FROM
|
||||||
(SELECT item_id itemFk,
|
(SELECT item_id itemFk,
|
||||||
amount,
|
amount,
|
||||||
IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`)) as hours,
|
IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`)) as hours,
|
||||||
IF(MINUTE(t.shipped), MINUTE(t.shipped), MINUTE(z.`hour`)) as minutes
|
IF(MINUTE(t.shipped), MINUTE(t.shipped), MINUTE(z.`hour`)) as minutes
|
||||||
FROM vn2008.item_out io
|
FROM vn2008.item_out io
|
||||||
JOIN tmp.itemShelvingRadar isr ON isr.itemFk = io.item_id
|
JOIN tmp.itemShelvingRadar isr ON isr.itemFk = io.item_id
|
||||||
|
@ -842,23 +842,23 @@ proc:BEGIN
|
||||||
JOIN vn.ticketState ts on ts.ticketFk = io.ticketFk
|
JOIN vn.ticketState ts on ts.ticketFk = io.ticketFk
|
||||||
JOIN vn.state s ON s.id = ts.stateFk
|
JOIN vn.state s ON s.id = ts.stateFk
|
||||||
LEFT JOIN vn.zone z ON z.id = t.zoneFk
|
LEFT JOIN vn.zone z ON z.id = t.zoneFk
|
||||||
LEFT JOIN (SELECT DISTINCT saleFk
|
LEFT JOIN (SELECT DISTINCT saleFk
|
||||||
FROM vn.saleTracking st
|
FROM vn.saleTracking st
|
||||||
WHERE st.created > util.VN_CURDATE()
|
WHERE st.created > util.VN_CURDATE()
|
||||||
AND st.isChecked
|
AND st.isChecked
|
||||||
) stPrevious ON `stPrevious`.`saleFk` = io.saleFk
|
) stPrevious ON `stPrevious`.`saleFk` = io.saleFk
|
||||||
WHERE t.warehouseFk = vWarehouseFk
|
WHERE t.warehouseFk = vWarehouseFk
|
||||||
AND s.isPicked = 0
|
AND s.isPicked = 0
|
||||||
AND NOT io.Reservado
|
AND NOT io.Reservado
|
||||||
AND stPrevious.saleFk IS NULL
|
AND stPrevious.saleFk IS NULL
|
||||||
AND io.dat >= util.VN_CURDATE()
|
AND io.dat >= util.VN_CURDATE()
|
||||||
AND io.dat < util.VN_CURDATE() + INTERVAL 1 DAY
|
AND io.dat < util.VN_CURDATE() + INTERVAL 1 DAY
|
||||||
) sub
|
) sub
|
||||||
GROUP BY itemFk, hours, minutes;
|
GROUP BY itemFk, hours, minutes;
|
||||||
|
|
||||||
INSERT INTO tmp.itemShelvingRadar (itemFk)
|
INSERT INTO tmp.itemShelvingRadar (itemFk)
|
||||||
SELECT itemFk FROM tmp.itemOutTime
|
SELECT itemFk FROM tmp.itemOutTime
|
||||||
ON DUPLICATE KEY UPDATE dayEndVisible = dayEndVisible + quantity,
|
ON DUPLICATE KEY UPDATE dayEndVisible = dayEndVisible + quantity,
|
||||||
firstNegative = if (firstNegative < 0, firstNegative, firstNegative + quantity),
|
firstNegative = if (firstNegative < 0, firstNegative, firstNegative + quantity),
|
||||||
`hour` = ifnull(if (firstNegative > 0 , `hour`, hours),0),
|
`hour` = ifnull(if (firstNegative > 0 , `hour`, hours),0),
|
||||||
`minute` = ifnull(if (firstNegative > 0, `minute`, minutes),0);
|
`minute` = ifnull(if (firstNegative > 0, `minute`, minutes),0);
|
||||||
|
@ -878,7 +878,7 @@ proc:BEGIN
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tmp.itemShelvingRadar;
|
DROP TEMPORARY TABLE tmp.itemShelvingRadar;
|
||||||
|
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
||||||
|
@ -892,13 +892,13 @@ BEGIN
|
||||||
/**
|
/**
|
||||||
* @vItemFk item a buscar
|
* @vItemFk item a buscar
|
||||||
* @vWarehouseFk almacen donde buscar
|
* @vWarehouseFk almacen donde buscar
|
||||||
* @vDate Si la fecha es null, muestra el histórico desde el inventario.
|
* @vDate Si la fecha es null, muestra el histórico desde el inventario.
|
||||||
* Si la fecha no es null, muestra histórico desde la fecha pasada.
|
* Si la fecha no es null, muestra histórico desde la fecha pasada.
|
||||||
*/
|
*/
|
||||||
DECLARE vDateInventory DATETIME;
|
DECLARE vDateInventory DATETIME;
|
||||||
|
|
||||||
IF vDate IS NULL THEN
|
IF vDate IS NULL THEN
|
||||||
SELECT inventoried INTO vDateInventory
|
SELECT inventoried INTO vDateInventory
|
||||||
FROM config;
|
FROM config;
|
||||||
ELSE
|
ELSE
|
||||||
SELECT mockUtcTime INTO vDateInventory
|
SELECT mockUtcTime INTO vDateInventory
|
||||||
|
@ -924,7 +924,7 @@ BEGIN
|
||||||
inventorySupplierFk INT(10)
|
inventorySupplierFk INT(10)
|
||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO tItemDiary
|
INSERT INTO tItemDiary
|
||||||
SELECT tr.landed shipped,
|
SELECT tr.landed shipped,
|
||||||
b.quantity `in`,
|
b.quantity `in`,
|
||||||
NULL `out`,
|
NULL `out`,
|
||||||
|
@ -945,14 +945,14 @@ BEGIN
|
||||||
JOIN entry e ON e.id = b.entryFk
|
JOIN entry e ON e.id = b.entryFk
|
||||||
JOIN travel tr ON tr.id = e.travelFk
|
JOIN travel tr ON tr.id = e.travelFk
|
||||||
JOIN supplier s ON s.id = e.supplierFk
|
JOIN supplier s ON s.id = e.supplierFk
|
||||||
JOIN state st ON st.`code` = IF( tr.landed < util.VN_CURDATE()
|
JOIN state st ON st.`code` = IF( tr.landed < util.VN_CURDATE()
|
||||||
OR (util.VN_CURDATE() AND tr.isReceived),
|
OR (util.VN_CURDATE() AND tr.isReceived),
|
||||||
'DELIVERED',
|
'DELIVERED',
|
||||||
'FREE')
|
'FREE')
|
||||||
JOIN entryConfig ec
|
JOIN entryConfig ec
|
||||||
WHERE tr.landed >= vDateInventory
|
WHERE tr.landed >= vDateInventory
|
||||||
AND vWarehouseFk = tr.warehouseInFk
|
AND vWarehouseFk = tr.warehouseInFk
|
||||||
AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
|
AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
|
||||||
AND b.itemFk = vItemFk
|
AND b.itemFk = vItemFk
|
||||||
AND e.isExcludedFromAvailable = FALSE
|
AND e.isExcludedFromAvailable = FALSE
|
||||||
AND e.isRaid = FALSE
|
AND e.isRaid = FALSE
|
||||||
|
@ -978,14 +978,14 @@ BEGIN
|
||||||
JOIN travel tr ON tr.id = e.travelFk
|
JOIN travel tr ON tr.id = e.travelFk
|
||||||
JOIN warehouse w ON w.id = tr.warehouseOutFk
|
JOIN warehouse w ON w.id = tr.warehouseOutFk
|
||||||
JOIN supplier s ON s.id = e.supplierFk
|
JOIN supplier s ON s.id = e.supplierFk
|
||||||
JOIN state st ON st.`code` = IF(tr.shipped < util.VN_CURDATE()
|
JOIN state st ON st.`code` = IF(tr.shipped < util.VN_CURDATE()
|
||||||
OR (tr.shipped = util.VN_CURDATE() AND tr.isReceived),
|
OR (tr.shipped = util.VN_CURDATE() AND tr.isReceived),
|
||||||
'DELIVERED',
|
'DELIVERED',
|
||||||
'FREE')
|
'FREE')
|
||||||
JOIN entryConfig ec
|
JOIN entryConfig ec
|
||||||
WHERE tr.shipped >= vDateInventory
|
WHERE tr.shipped >= vDateInventory
|
||||||
AND vWarehouseFk = tr.warehouseOutFk
|
AND vWarehouseFk = tr.warehouseOutFk
|
||||||
AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
|
AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
|
||||||
AND b.itemFk = vItemFk
|
AND b.itemFk = vItemFk
|
||||||
AND e.isExcludedFromAvailable = FALSE
|
AND e.isExcludedFromAvailable = FALSE
|
||||||
AND w.isFeedStock = FALSE
|
AND w.isFeedStock = FALSE
|
||||||
|
@ -1014,12 +1014,12 @@ BEGIN
|
||||||
JOIN client c ON c.id = t.clientFk
|
JOIN client c ON c.id = t.clientFk
|
||||||
JOIN clientType ct ON ct.id = c.clientTypeFk
|
JOIN clientType ct ON ct.id = c.clientTypeFk
|
||||||
JOIN state st2 ON st2.`code` = IF(t.shipped < util.VN_CURDATE(),
|
JOIN state st2 ON st2.`code` = IF(t.shipped < util.VN_CURDATE(),
|
||||||
'DELIVERED',
|
'DELIVERED',
|
||||||
IF (t.shipped > util.dayEnd(util.VN_CURDATE()),
|
IF (t.shipped > util.dayEnd(util.VN_CURDATE()),
|
||||||
'FREE',
|
'FREE',
|
||||||
IFNULL(ts.code, 'FREE')))
|
IFNULL(ts.code, 'FREE')))
|
||||||
LEFT JOIN state stPrep ON stPrep.`code` = 'PREPARED'
|
LEFT JOIN state stPrep ON stPrep.`code` = 'PREPARED'
|
||||||
LEFT JOIN saleTracking stk ON stk.saleFk = s.id
|
LEFT JOIN saleTracking stk ON stk.saleFk = s.id
|
||||||
AND stk.stateFk = stPrep.id
|
AND stk.stateFk = stPrep.id
|
||||||
LEFT JOIN claimBeginning cb ON s.id = cb.saleFk
|
LEFT JOIN claimBeginning cb ON s.id = cb.saleFk
|
||||||
WHERE t.shipped >= vDateInventory
|
WHERE t.shipped >= vDateInventory
|
||||||
|
@ -1035,7 +1035,7 @@ BEGIN
|
||||||
`out` DESC;
|
`out` DESC;
|
||||||
|
|
||||||
IF vDate IS NULL THEN
|
IF vDate IS NULL THEN
|
||||||
|
|
||||||
SET @a := 0;
|
SET @a := 0;
|
||||||
SET @currentLineFk := 0;
|
SET @currentLineFk := 0;
|
||||||
SET @shipped := '';
|
SET @shipped := '';
|
||||||
|
@ -1050,9 +1050,9 @@ BEGIN
|
||||||
`in` invalue,
|
`in` invalue,
|
||||||
`out`,
|
`out`,
|
||||||
@a := @a + IFNULL(`in`, 0) - IFNULL(`out`, 0) balance,
|
@a := @a + IFNULL(`in`, 0) - IFNULL(`out`, 0) balance,
|
||||||
@currentLineFk := IF (@shipped < util.VN_CURDATE()
|
@currentLineFk := IF (@shipped < util.VN_CURDATE()
|
||||||
OR (@shipped = util.VN_CURDATE() AND (isPicked OR a.`code` >= 'ON_PREPARATION')),
|
OR (@shipped = util.VN_CURDATE() AND (isPicked OR a.`code` >= 'ON_PREPARATION')),
|
||||||
lineFk,
|
lineFk,
|
||||||
@currentLineFk) lastPreparedLineFk,
|
@currentLineFk) lastPreparedLineFk,
|
||||||
isTicket,
|
isTicket,
|
||||||
lineFk,
|
lineFk,
|
||||||
|
@ -1084,32 +1084,32 @@ BEGIN
|
||||||
0 clientType,
|
0 clientType,
|
||||||
0 claimFk
|
0 claimFk
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT shipped,
|
SELECT shipped,
|
||||||
alertlevel,
|
alertlevel,
|
||||||
stateName,
|
stateName,
|
||||||
origin,
|
origin,
|
||||||
reference,
|
reference,
|
||||||
clientFk,
|
clientFk,
|
||||||
name, `in`,
|
name, `in`,
|
||||||
`out`,
|
`out`,
|
||||||
@a := @a + IFNULL(`in`, 0) - IFNULL(`out`, 0),
|
@a := @a + IFNULL(`in`, 0) - IFNULL(`out`, 0),
|
||||||
0,
|
0,
|
||||||
isTicket,
|
isTicket,
|
||||||
lineFk,
|
lineFk,
|
||||||
isPicked,
|
isPicked,
|
||||||
clientType,
|
clientType,
|
||||||
claimFk
|
claimFk
|
||||||
FROM tItemDiary
|
FROM tItemDiary
|
||||||
WHERE shipped >= vDate;
|
WHERE shipped >= vDate;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tItemDiary;
|
DROP TEMPORARY TABLE tItemDiary;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`productionControl`(
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`productionControl`(
|
||||||
vWarehouseFk INT,
|
vWarehouseFk INT,
|
||||||
vScopeDays INT
|
vScopeDays INT
|
||||||
)
|
)
|
||||||
proc: BEGIN
|
proc: BEGIN
|
||||||
|
@ -1210,7 +1210,7 @@ proc: BEGIN
|
||||||
LEFT JOIN parking pk ON pk.id = tp.parkingFk
|
LEFT JOIN parking pk ON pk.id = tp.parkingFk
|
||||||
WHERE t.warehouseFk = vWarehouseFk
|
WHERE t.warehouseFk = vWarehouseFk
|
||||||
AND dm.code IN ('AGENCY', 'DELIVERY', 'PICKUP');
|
AND dm.code IN ('AGENCY', 'DELIVERY', 'PICKUP');
|
||||||
|
|
||||||
UPDATE tmp.productionBuffer pb
|
UPDATE tmp.productionBuffer pb
|
||||||
JOIN (
|
JOIN (
|
||||||
SELECT pb.ticketFk, GROUP_CONCAT(p.code) previaParking
|
SELECT pb.ticketFk, GROUP_CONCAT(p.code) previaParking
|
||||||
|
@ -1218,12 +1218,12 @@ proc: BEGIN
|
||||||
JOIN sale s ON s.ticketFk = pb.ticketFk
|
JOIN sale s ON s.ticketFk = pb.ticketFk
|
||||||
JOIN saleGroupDetail sgd ON sgd.saleFk = s.id
|
JOIN saleGroupDetail sgd ON sgd.saleFk = s.id
|
||||||
JOIN saleGroup sg ON sg.id = sgd.saleGroupFk
|
JOIN saleGroup sg ON sg.id = sgd.saleGroupFk
|
||||||
JOIN parking p ON p.id = sg.parkingFk
|
JOIN parking p ON p.id = sg.parkingFk
|
||||||
GROUP BY pb.ticketFk
|
GROUP BY pb.ticketFk
|
||||||
) t ON t.ticketFk = pb.ticketFk
|
) t ON t.ticketFk = pb.ticketFk
|
||||||
SET pb.previaParking = t.previaParking;
|
SET pb.previaParking = t.previaParking;
|
||||||
|
|
||||||
-- Problemas por ticket
|
-- Problemas por ticket
|
||||||
ALTER TABLE tmp.productionBuffer
|
ALTER TABLE tmp.productionBuffer
|
||||||
CHANGE COLUMN `problem` `problem` VARCHAR(255),
|
CHANGE COLUMN `problem` `problem` VARCHAR(255),
|
||||||
ADD COLUMN `collectionH` INT,
|
ADD COLUMN `collectionH` INT,
|
||||||
|
@ -1380,20 +1380,409 @@ BEGIN
|
||||||
|
|
||||||
SET NEW.editorFk = account.myUser_getId();
|
SET NEW.editorFk = account.myUser_getId();
|
||||||
|
|
||||||
IF NEW.freightItemFk IS NOT NULL THEN
|
IF NEW.freightItemFk IS NOT NULL THEN
|
||||||
|
|
||||||
UPDATE ticket SET packages = nz(packages) + 1 WHERE id = NEW.ticketFk;
|
UPDATE ticket SET packages = nz(packages) + 1 WHERE id = NEW.ticketFk;
|
||||||
|
|
||||||
SELECT IFNULL(MAX(counter),0) +1 INTO intcounter
|
SELECT IFNULL(MAX(counter),0) +1 INTO intcounter
|
||||||
FROM expedition e
|
FROM expedition e
|
||||||
INNER JOIN ticket t1 ON e.ticketFk = t1.id
|
INNER JOIN ticket t1 ON e.ticketFk = t1.id
|
||||||
LEFT JOIN ticketState ts ON ts.ticketFk = t1.id
|
LEFT JOIN ticketState ts ON ts.ticketFk = t1.id
|
||||||
INNER JOIN ticket t2 ON t2.addressFk = t1.addressFk AND DATE(t2.shipped) = DATE(t1.shipped)
|
INNER JOIN ticket t2 ON t2.addressFk = t1.addressFk AND DATE(t2.shipped) = DATE(t1.shipped)
|
||||||
AND t1.warehouseFk = t2.warehouseFk
|
AND t1.warehouseFk = t2.warehouseFk
|
||||||
WHERE t2.id = NEW.ticketFk AND ts.alertLevel < 3 AND t1.companyFk = t2.companyFk
|
WHERE t2.id = NEW.ticketFk AND ts.alertLevel < 3 AND t1.companyFk = t2.companyFk
|
||||||
AND t1.agencyModeFk = t2.agencyModeFk;
|
AND t1.agencyModeFk = t2.agencyModeFk;
|
||||||
|
|
||||||
SET NEW.`counter` = intcounter;
|
SET NEW.`counter` = intcounter;
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_recalcComponent`(vOption INT)
|
||||||
|
proc: BEGIN
|
||||||
|
/**
|
||||||
|
* Este procedimiento recalcula los componentes de un conjunto de sales,
|
||||||
|
* eliminando los componentes existentes e insertandolos de nuevo
|
||||||
|
*
|
||||||
|
* @param vOption si no se quiere forzar llamar con NULL
|
||||||
|
* @table tmp.recalculateSales (id)
|
||||||
|
*/
|
||||||
|
DECLARE vShipped DATE;
|
||||||
|
DECLARE vWarehouseFk SMALLINT;
|
||||||
|
DECLARE vAgencyModeFk INT;
|
||||||
|
DECLARE vAddressFk INT;
|
||||||
|
DECLARE vTicketFk INT;
|
||||||
|
DECLARE vLanded DATE;
|
||||||
|
DECLARE vIsEditable BOOLEAN;
|
||||||
|
DECLARE vZoneFk INTEGER;
|
||||||
|
DECLARE vDone BOOL DEFAULT FALSE;
|
||||||
|
|
||||||
|
DECLARE vCur CURSOR FOR
|
||||||
|
SELECT DISTINCT s.ticketFk
|
||||||
|
FROM tmp.recalculateSales rs
|
||||||
|
JOIN vn.sale s ON s.id = rs.id;
|
||||||
|
|
||||||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||||
|
|
||||||
|
OPEN vCur;
|
||||||
|
|
||||||
|
l: LOOP
|
||||||
|
SET vDone = FALSE;
|
||||||
|
FETCH vCur INTO vTicketFk;
|
||||||
|
|
||||||
|
IF vDone THEN
|
||||||
|
LEAVE l;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SELECT (hasToRecalcPrice OR ts.alertLevel IS NULL) AND t.refFk IS NULL,
|
||||||
|
t.zoneFk,
|
||||||
|
t.warehouseFk,
|
||||||
|
t.shipped,
|
||||||
|
t.addressFk,
|
||||||
|
t.agencyModeFk,
|
||||||
|
t.landed
|
||||||
|
INTO vIsEditable,
|
||||||
|
vZoneFk,
|
||||||
|
vWarehouseFk,
|
||||||
|
vShipped,
|
||||||
|
vAddressFk,
|
||||||
|
vAgencyModeFk,
|
||||||
|
vLanded
|
||||||
|
FROM ticket t
|
||||||
|
LEFT JOIN ticketState ts ON t.id = ts.ticketFk
|
||||||
|
LEFT JOIN alertLevel al ON al.id = ts.alertLevel
|
||||||
|
WHERE t.id = vTicketFk;
|
||||||
|
|
||||||
|
CALL zone_getLanded(vShipped, vAddressFk, vAgencyModeFk, vWarehouseFk, TRUE);
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT TRUE FROM tmp.zoneGetLanded LIMIT 1) THEN
|
||||||
|
CALL util.throw(CONCAT('There is no zone for these parameters ', vTicketFk));
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF vLanded IS NULL OR vZoneFk IS NULL THEN
|
||||||
|
|
||||||
|
UPDATE ticket t
|
||||||
|
SET t.landed = (SELECT landed FROM tmp.zoneGetLanded LIMIT 1)
|
||||||
|
WHERE t.id = vTicketFk AND t.landed IS NULL;
|
||||||
|
|
||||||
|
IF vZoneFk IS NULL THEN
|
||||||
|
SELECT zoneFk INTO vZoneFk FROM tmp.zoneGetLanded LIMIT 1;
|
||||||
|
UPDATE ticket t
|
||||||
|
SET t.zoneFk = vZoneFk
|
||||||
|
WHERE t.id = vTicketFk AND t.zoneFk IS NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tmp.zoneGetLanded;
|
||||||
|
|
||||||
|
-- rellena la tabla buyUltimate con la ultima compra
|
||||||
|
CALL buyUltimate (vWarehouseFk, vShipped);
|
||||||
|
|
||||||
|
CREATE OR REPLACE TEMPORARY TABLE tmp.sale
|
||||||
|
(PRIMARY KEY (saleFk)) ENGINE = MEMORY
|
||||||
|
SELECT s.id saleFk, vWarehouseFk warehouseFk
|
||||||
|
FROM sale s
|
||||||
|
JOIN tmp.recalculateSales rs ON s.id = rs.id
|
||||||
|
WHERE s.ticketFk = vTicketFk;
|
||||||
|
|
||||||
|
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketLot
|
||||||
|
SELECT vWarehouseFk warehouseFk, NULL available, s.itemFk, bu.buyFk, vZoneFk zoneFk
|
||||||
|
FROM sale s
|
||||||
|
JOIN tmp.recalculateSales rs ON s.id = rs.id
|
||||||
|
LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
|
||||||
|
WHERE s.ticketFk = vTicketFk
|
||||||
|
GROUP BY s.itemFk;
|
||||||
|
|
||||||
|
CALL catalog_componentPrepare();
|
||||||
|
CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk);
|
||||||
|
|
||||||
|
IF vOption IS NULL THEN
|
||||||
|
SET vOption = IF(vIsEditable, 1, 6);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
CALL ticketComponentUpdateSale(vOption);
|
||||||
|
CALL catalog_componentPurge();
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tmp.buyUltimate;
|
||||||
|
DROP TEMPORARY TABLE tmp.sale;
|
||||||
|
|
||||||
|
END LOOP;
|
||||||
|
CLOSE vCur;
|
||||||
|
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOut_new`(
|
||||||
|
vSerial VARCHAR(255),
|
||||||
|
vInvoiceDate DATE,
|
||||||
|
vTaxArea VARCHAR(25),
|
||||||
|
OUT vNewInvoiceId INT)
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Creación de facturas emitidas.
|
||||||
|
* requiere previamente tabla tmp.ticketToInvoice(id).
|
||||||
|
*
|
||||||
|
* @param vSerial serie a la cual se hace la factura
|
||||||
|
* @param vInvoiceDate fecha de la factura
|
||||||
|
* @param vTaxArea tipo de iva en relacion a la empresa y al cliente
|
||||||
|
* @param vNewInvoiceId id de la factura que se acaba de generar
|
||||||
|
* @return vNewInvoiceId
|
||||||
|
*/
|
||||||
|
DECLARE vIsAnySaleToInvoice BOOL;
|
||||||
|
DECLARE vIsAnyServiceToInvoice BOOL;
|
||||||
|
DECLARE vNewRef VARCHAR(255);
|
||||||
|
DECLARE vWorker INT DEFAULT account.myUser_getId();
|
||||||
|
DECLARE vCompanyFk INT;
|
||||||
|
DECLARE vInterCompanyFk INT;
|
||||||
|
DECLARE vClientFk INT;
|
||||||
|
DECLARE vCplusStandardInvoiceTypeFk INT DEFAULT 1;
|
||||||
|
DECLARE vCplusCorrectingInvoiceTypeFk INT DEFAULT 6;
|
||||||
|
DECLARE vCplusSimplifiedInvoiceTypeFk INT DEFAULT 2;
|
||||||
|
DECLARE vCorrectingSerial VARCHAR(1) DEFAULT 'R';
|
||||||
|
DECLARE vSimplifiedSerial VARCHAR(1) DEFAULT 'S';
|
||||||
|
DECLARE vNewInvoiceInFk INT;
|
||||||
|
DECLARE vIsInterCompany BOOL DEFAULT FALSE;
|
||||||
|
DECLARE vIsCEESerial BOOL DEFAULT FALSE;
|
||||||
|
DECLARE vIsCorrectInvoiceDate BOOL;
|
||||||
|
DECLARE vMaxShipped DATE;
|
||||||
|
DECLARE vDone BOOL;
|
||||||
|
DECLARE vTicketFk INT;
|
||||||
|
DECLARE vCursor CURSOR FOR
|
||||||
|
SELECT id
|
||||||
|
FROM tmp.ticketToInvoice;
|
||||||
|
|
||||||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||||
|
|
||||||
|
SET vInvoiceDate = IFNULL(vInvoiceDate, util.VN_CURDATE());
|
||||||
|
|
||||||
|
SELECT t.clientFk,
|
||||||
|
t.companyFk,
|
||||||
|
MAX(DATE(t.shipped)),
|
||||||
|
DATE(vInvoiceDate) >= invoiceOut_getMaxIssued(
|
||||||
|
vSerial,
|
||||||
|
t.companyFk,
|
||||||
|
YEAR(vInvoiceDate))
|
||||||
|
INTO vClientFk,
|
||||||
|
vCompanyFk,
|
||||||
|
vMaxShipped,
|
||||||
|
vIsCorrectInvoiceDate
|
||||||
|
FROM tmp.ticketToInvoice tt
|
||||||
|
JOIN ticket t ON t.id = tt.id;
|
||||||
|
|
||||||
|
IF(vMaxShipped > vInvoiceDate) THEN
|
||||||
|
CALL util.throw("Invoice date can't be less than max date");
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NOT vIsCorrectInvoiceDate THEN
|
||||||
|
CALL util.throw('Exists an invoice with a previous date');
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
-- Eliminem de tmp.ticketToInvoice els tickets que no han de ser facturats
|
||||||
|
DELETE ti.*
|
||||||
|
FROM tmp.ticketToInvoice ti
|
||||||
|
JOIN ticket t ON t.id = ti.id
|
||||||
|
JOIN sale s ON s.ticketFk = t.id
|
||||||
|
JOIN item i ON i.id = s.itemFk
|
||||||
|
JOIN supplier su ON su.id = t.companyFk
|
||||||
|
JOIN client c ON c.id = t.clientFk
|
||||||
|
LEFT JOIN itemTaxCountry itc ON itc.itemFk = i.id AND itc.countryFk = su.countryFk
|
||||||
|
WHERE (YEAR(t.shipped) < 2001 AND t.isDeleted)
|
||||||
|
OR c.isTaxDataChecked = FALSE
|
||||||
|
OR t.isDeleted
|
||||||
|
OR c.hasToInvoice = FALSE
|
||||||
|
OR itc.id IS NULL;
|
||||||
|
|
||||||
|
SELECT SUM(s.quantity * s.price * (100 - s.discount)/100) <> 0
|
||||||
|
INTO vIsAnySaleToInvoice
|
||||||
|
FROM tmp.ticketToInvoice t
|
||||||
|
JOIN sale s ON s.ticketFk = t.id;
|
||||||
|
|
||||||
|
SELECT COUNT(*) > 0 INTO vIsAnyServiceToInvoice
|
||||||
|
FROM tmp.ticketToInvoice t
|
||||||
|
JOIN ticketService ts ON ts.ticketFk = t.id;
|
||||||
|
|
||||||
|
IF (vIsAnySaleToInvoice OR vIsAnyServiceToInvoice)
|
||||||
|
AND (vCorrectingSerial = vSerial OR NOT hasAnyNegativeBase())
|
||||||
|
THEN
|
||||||
|
|
||||||
|
-- el trigger añade el siguiente Id_Factura correspondiente a la vSerial
|
||||||
|
INSERT INTO invoiceOut(
|
||||||
|
ref,
|
||||||
|
serial,
|
||||||
|
issued,
|
||||||
|
clientFk,
|
||||||
|
dued,
|
||||||
|
companyFk,
|
||||||
|
siiTypeInvoiceOutFk
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
1,
|
||||||
|
vSerial,
|
||||||
|
vInvoiceDate,
|
||||||
|
vClientFk,
|
||||||
|
getDueDate(vInvoiceDate, dueDay),
|
||||||
|
vCompanyFk,
|
||||||
|
IF(vSerial = vCorrectingSerial,
|
||||||
|
vCplusCorrectingInvoiceTypeFk,
|
||||||
|
IF(vSerial = vSimplifiedSerial,
|
||||||
|
vCplusSimplifiedInvoiceTypeFk,
|
||||||
|
vCplusStandardInvoiceTypeFk))
|
||||||
|
FROM client
|
||||||
|
WHERE id = vClientFk;
|
||||||
|
|
||||||
|
SET vNewInvoiceId = LAST_INSERT_ID();
|
||||||
|
|
||||||
|
SELECT `ref`
|
||||||
|
INTO vNewRef
|
||||||
|
FROM invoiceOut
|
||||||
|
WHERE id = vNewInvoiceId;
|
||||||
|
|
||||||
|
OPEN vCursor;
|
||||||
|
l: LOOP
|
||||||
|
SET vDone = FALSE;
|
||||||
|
FETCH vCursor INTO vTicketFk;
|
||||||
|
|
||||||
|
IF vDone THEN
|
||||||
|
LEAVE l;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
CALL ticket_recalc(vTicketFk, vTaxArea);
|
||||||
|
|
||||||
|
END LOOP;
|
||||||
|
CLOSE vCursor;
|
||||||
|
|
||||||
|
UPDATE ticket t
|
||||||
|
JOIN tmp.ticketToInvoice ti ON ti.id = t.id
|
||||||
|
SET t.refFk = vNewRef;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp.updateInter;
|
||||||
|
CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY
|
||||||
|
SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador
|
||||||
|
FROM tmp.ticketToInvoice ti
|
||||||
|
LEFT JOIN ticketState ts ON ti.id = ts.ticketFk
|
||||||
|
JOIN state s
|
||||||
|
WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = getAlert3State(ti.id);
|
||||||
|
|
||||||
|
INSERT INTO ticketTracking(stateFk,ticketFk,userFk)
|
||||||
|
SELECT * FROM tmp.updateInter;
|
||||||
|
|
||||||
|
CALL invoiceExpenseMake(vNewInvoiceId);
|
||||||
|
CALL invoiceTaxMake(vNewInvoiceId,vTaxArea);
|
||||||
|
|
||||||
|
UPDATE invoiceOut io
|
||||||
|
JOIN (
|
||||||
|
SELECT SUM(amount) total
|
||||||
|
FROM invoiceOutExpense
|
||||||
|
WHERE invoiceOutFk = vNewInvoiceId
|
||||||
|
) base
|
||||||
|
JOIN (
|
||||||
|
SELECT SUM(vat) total
|
||||||
|
FROM invoiceOutTax
|
||||||
|
WHERE invoiceOutFk = vNewInvoiceId
|
||||||
|
) vat
|
||||||
|
SET io.amount = base.total + vat.total
|
||||||
|
WHERE io.id = vNewInvoiceId;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tmp.updateInter;
|
||||||
|
|
||||||
|
SELECT COUNT(*), id
|
||||||
|
INTO vIsInterCompany, vInterCompanyFk
|
||||||
|
FROM company
|
||||||
|
WHERE clientFk = vClientFk;
|
||||||
|
|
||||||
|
IF (vIsInterCompany) THEN
|
||||||
|
|
||||||
|
INSERT INTO invoiceIn(supplierFk, supplierRef, issued, companyFk)
|
||||||
|
SELECT vCompanyFk, vNewRef, vInvoiceDate, vInterCompanyFk;
|
||||||
|
|
||||||
|
SET vNewInvoiceInFk = LAST_INSERT_ID();
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp.ticket;
|
||||||
|
CREATE TEMPORARY TABLE tmp.ticket
|
||||||
|
(KEY (ticketFk))
|
||||||
|
ENGINE = MEMORY
|
||||||
|
SELECT id ticketFk
|
||||||
|
FROM tmp.ticketToInvoice;
|
||||||
|
|
||||||
|
CALL `ticket_getTax`('NATIONAL');
|
||||||
|
|
||||||
|
SET @vTaxableBaseServices := 0.00;
|
||||||
|
SET @vTaxCodeGeneral := NULL;
|
||||||
|
|
||||||
|
INSERT INTO invoiceInTax(invoiceInFk, taxableBase, expenseFk, taxTypeSageFk, transactionTypeSageFk)
|
||||||
|
SELECT vNewInvoiceInFk,
|
||||||
|
@vTaxableBaseServices,
|
||||||
|
sub.expenseFk,
|
||||||
|
sub.taxTypeSageFk,
|
||||||
|
sub.transactionTypeSageFk
|
||||||
|
FROM (
|
||||||
|
SELECT @vTaxableBaseServices := SUM(tst.taxableBase) taxableBase,
|
||||||
|
i.expenseFk,
|
||||||
|
i.taxTypeSageFk,
|
||||||
|
i.transactionTypeSageFk,
|
||||||
|
@vTaxCodeGeneral := i.taxClassCodeFk
|
||||||
|
FROM tmp.ticketServiceTax tst
|
||||||
|
JOIN invoiceOutTaxConfig i ON i.taxClassCodeFk = tst.code
|
||||||
|
WHERE i.isService
|
||||||
|
HAVING taxableBase
|
||||||
|
) sub;
|
||||||
|
|
||||||
|
INSERT INTO invoiceInTax(invoiceInFk, taxableBase, expenseFk, taxTypeSageFk, transactionTypeSageFk)
|
||||||
|
SELECT vNewInvoiceInFk,
|
||||||
|
SUM(tt.taxableBase) - IF(tt.code = @vTaxCodeGeneral,
|
||||||
|
@vTaxableBaseServices, 0) taxableBase,
|
||||||
|
i.expenseFk,
|
||||||
|
i.taxTypeSageFk ,
|
||||||
|
i.transactionTypeSageFk
|
||||||
|
FROM tmp.ticketTax tt
|
||||||
|
JOIN invoiceOutTaxConfig i ON i.taxClassCodeFk = tt.code
|
||||||
|
WHERE !i.isService
|
||||||
|
GROUP BY tt.pgcFk
|
||||||
|
HAVING taxableBase
|
||||||
|
ORDER BY tt.priority;
|
||||||
|
|
||||||
|
CALL invoiceInDueDay_calculate(vNewInvoiceInFk);
|
||||||
|
|
||||||
|
SELECT COUNT(*) INTO vIsCEESerial
|
||||||
|
FROM invoiceOutSerial
|
||||||
|
WHERE code = vSerial;
|
||||||
|
|
||||||
|
IF vIsCEESerial THEN
|
||||||
|
|
||||||
|
INSERT INTO invoiceInIntrastat (
|
||||||
|
invoiceInFk,
|
||||||
|
intrastatFk,
|
||||||
|
amount,
|
||||||
|
stems,
|
||||||
|
countryFk,
|
||||||
|
net)
|
||||||
|
SELECT
|
||||||
|
vNewInvoiceInFk,
|
||||||
|
i.intrastatFk,
|
||||||
|
SUM(CAST((s.quantity * s.price * (100 - s.discount) / 100 ) AS DECIMAL(10, 2))),
|
||||||
|
SUM(CAST(IFNULL(i.stems, 1) * s.quantity AS DECIMAL(10, 2))),
|
||||||
|
su.countryFk,
|
||||||
|
CAST(SUM(IFNULL(i.stems, 1)
|
||||||
|
* s.quantity
|
||||||
|
* IF(ic.grams, ic.grams, IFNULL(i.weightByPiece, 0)) / 1000) AS DECIMAL(10, 2))
|
||||||
|
FROM sale s
|
||||||
|
JOIN ticket t ON s.ticketFk = t.id
|
||||||
|
JOIN supplier su ON su.id = t.companyFk
|
||||||
|
JOIN item i ON i.id = s.itemFk
|
||||||
|
LEFT JOIN itemCost ic ON ic.itemFk = i.id AND ic.warehouseFk = t.warehouseFk
|
||||||
|
WHERE t.refFk = vNewRef
|
||||||
|
GROUP BY i.intrastatFk;
|
||||||
|
|
||||||
|
END IF;
|
||||||
|
DROP TEMPORARY TABLE tmp.ticket;
|
||||||
|
DROP TEMPORARY TABLE tmp.ticketAmount;
|
||||||
|
DROP TEMPORARY TABLE tmp.ticketTax;
|
||||||
|
DROP TEMPORARY TABLE tmp.ticketServiceTax;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
DROP TEMPORARY TABLE `tmp`.`ticketToInvoice`;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
|
@ -40,16 +40,19 @@ FROM (
|
||||||
CREATE OR REPLACE DEFINER=`root`@`localhost`
|
CREATE OR REPLACE DEFINER=`root`@`localhost`
|
||||||
SQL SECURITY DEFINER
|
SQL SECURITY DEFINER
|
||||||
VIEW `vn`.`ticketStateToday`
|
VIEW `vn`.`ticketStateToday`
|
||||||
AS SELECT `ts`.`ticketFk` AS `ticket`,
|
AS
|
||||||
`ts`.`state` AS `state`,
|
SELECT
|
||||||
`ts`.`productionOrder` AS `productionOrder`,
|
`ts`.`ticketFk` AS `ticket`,
|
||||||
`ts`.`alertLevel` AS `alertLevel`,
|
`ts`.`state` AS `state`,
|
||||||
`ts`.`userFk` AS `worker`,
|
`ts`.`productionOrder` AS `productionOrder`,
|
||||||
`ts`.`code` AS `code`,
|
`ts`.`alertLevel` AS `alertLevel`,
|
||||||
`ts`.`updated` AS `updated`,
|
`ts`.`userFk` AS `worker`,
|
||||||
`ts`.`isPicked` AS `isPicked`
|
`ts`.`code` AS `code`,
|
||||||
FROM (
|
`ts`.`updated` AS `updated`,
|
||||||
`vn`.`ticketState` `ts`
|
`ts`.`isPicked` AS `isPicked`
|
||||||
JOIN `vn`.`ticket` `t` ON(`t`.`id` = `ts`.`ticketFk`)
|
FROM
|
||||||
)
|
`vn`.`ticketState` `ts`
|
||||||
WHERE `t`.`shipped` BETWEEN `util`.`VN_CURDATE`() AND `MIDNIGHT`(`util`.`VN_CURDATE`())
|
JOIN `vn`.`ticket` `t` ON `t`.`id` = `ts`.`ticketFk`
|
||||||
|
WHERE
|
||||||
|
`t`.`shipped` BETWEEN `util`.`VN_CURDATE`() AND `util`.`VN_CURDATE`() + INTERVAL 1 DAY;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue