#6321 - Negative tickets #1945
|
@ -18,7 +18,7 @@ const opts = getopts(process.argv.slice(2), {
|
|||
let server;
|
||||
const PARALLEL = false;
|
||||
const SETUP_TIMEOUT = 15 * 60 * 1000;
|
||||
const SPEC_TIMEOUT = 30 * 11000;
|
||||
const SPEC_TIMEOUT = 30 * 1000;
|
||||
|
||||
process.on('exit', teardown);
|
||||
process.on('uncaughtException', onError);
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
-- Auto-generated SQL script #202401191358
|
||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
||||
VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee');
|
||||
|
||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
||||
VALUES ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee');
|
||||
|
||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
||||
VALUES ('Ticket','itemLackOrigin','WRITE','ALLOW','ROLE','employee');
|
|
@ -1,68 +0,0 @@
|
|||
DROP PROCEDURE IF EXISTS vn.item_getLack;
|
||||
|
||||
DELIMITER $$
|
||||
$$
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`(
|
||||
IN vForce BOOLEAN DEFAULT TRUE,
|
||||
IN vDays INT DEFAULT 2,
|
||||
IN vCustomWhere TEXT,
|
||||
)
|
||||
|
||||
BEGIN
|
||||
/**
|
||||
* Calcula una tabla con el máximo negativo visible para cada producto y almacen
|
||||
*
|
||||
* @param vForce Fuerza el recalculo del stock
|
||||
* @param vDays Numero de dias a considerar
|
||||
* @param vSearch Filtro items
|
||||
**/
|
||||
|
||||
CALL `cache`.stock_refresh(vForce);
|
||||
CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL);
|
||||
CALL item_getMinETD();
|
||||
CALL item_zoneClosure();
|
||||
|
||||
|
||||
SET @sqlQuery = CONCAT(`SELECT i.id itemFk,
|
||||
i.longName,
|
||||
w.id warehouseFk,
|
||||
p.`name` producer,
|
||||
i.`size`,
|
||||
i.category,
|
||||
w.name warehouse,
|
||||
SUM(IFNULL(sub.amount,0)) lack,
|
||||
i.inkFk,
|
||||
IFNULL(im.timed, util.midnight()) timed,
|
||||
IFNULL(izc.timed, util.midnight()) minTimed
|
||||
FROM (SELECT item_id,
|
||||
warehouse_id,
|
||||
amount
|
||||
FROM cache.stock
|
||||
WHERE amount > 0
|
||||
UNION ALL
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
amount
|
||||
FROM tmp.itemMinacum
|
||||
) sub
|
||||
JOIN warehouse w ON w.id = sub.warehouse_id
|
||||
JOIN item i ON i.id = sub.item_id
|
||||
LEFT JOIN producer p ON p.id = i.producerFk
|
||||
JOIN itemType it ON it.id = i.typeFk
|
||||
JOIN itemCategory ic ON ic.id = it.categoryFk
|
||||
LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id
|
||||
LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id
|
||||
WHERE w.isForTicket
|
||||
AND ic.display
|
||||
AND it.code != 'GEN'
|
||||
AND `,vCustomWhere,`
|
||||
GROUP BY i.id, w.id
|
||||
HAVING lack < 0;`);
|
||||
CALL `exec`(@sqlQuery);
|
||||
|
||||
DROP TEMPORARY TABLE tmp.itemMinacum;
|
||||
DROP TEMPORARY TABLE tmp.itemMinETD;
|
||||
DROP TEMPORARY TABLE tmp.itemZoneClosure;
|
||||
END
|
||||
$$
|
||||
DELIMITER ;
|
|
@ -1,80 +0,0 @@
|
|||
DROP PROCEDURE IF EXISTS vn.item_getLack;
|
||||
|
||||
DELIMITER $$
|
||||
$$
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`(
|
||||
IN vForce BOOLEAN DEFAULT TRUE,
|
||||
IN vDays INT DEFAULT 2,
|
||||
IN vId INT DEFAULT NULL,
|
||||
IN vLongname INT DEFAULT NULL,
|
||||
IN vSupplier VARCHAR DEFAULT NULL,
|
||||
IN vColor VARCHAR DEFAULT NULL,
|
||||
IN vSize INT DEFAULT NULL,
|
||||
IN vOrigen VARCHAR DEFAULT NULL,
|
||||
IN vLack INT DEFAULT NULL
|
||||
)
|
||||
|
||||
BEGIN
|
||||
/**
|
||||
* Calcula una tabla con el máximo negativo visible para cada producto y almacen
|
||||
*
|
||||
* @param vForce Fuerza el recalculo del stock
|
||||
* @param vDays Numero de dias a considerar
|
||||
* @param vSearch Filtro items
|
||||
**/
|
||||
|
||||
CALL `cache`.stock_refresh(vForce);
|
||||
CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL);
|
||||
CALL item_getMinETD();
|
||||
CALL item_zoneClosure();
|
||||
|
||||
|
||||
SELECT i.id itemFk,
|
||||
i.longName,
|
||||
w.id warehouseFk,
|
||||
p.`name` producer,
|
||||
i.`size`,
|
||||
i.category,
|
||||
w.name warehouse,
|
||||
SUM(IFNULL(sub.amount,0)) lack,
|
||||
i.inkFk,
|
||||
IFNULL(im.timed, util.midnight()) timed,
|
||||
IFNULL(izc.timed, util.midnight()) minTimed
|
||||
FROM (SELECT item_id,
|
||||
warehouse_id,
|
||||
amount
|
||||
FROM cache.stock
|
||||
WHERE amount > 0
|
||||
UNION ALL
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
amount
|
||||
FROM tmp.itemMinacum
|
||||
) sub
|
||||
JOIN warehouse w ON w.id = sub.warehouse_id
|
||||
JOIN item i ON i.id = sub.item_id
|
||||
LEFT JOIN producer p ON p.id = i.producerFk
|
||||
JOIN itemType it ON it.id = i.typeFk
|
||||
JOIN itemCategory ic ON ic.id = it.categoryFk
|
||||
LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id
|
||||
LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id
|
||||
WHERE w.isForTicket
|
||||
AND ic.display
|
||||
AND it.code != 'GEN'
|
||||
AND (vId IS NULL OR i.id = vId)
|
||||
AND (vLongname IS NULL OR i.longName = vLongname)
|
||||
AND (vSupplier IS NULL OR p.`name` LIKE CONCAT('%', vSupplier, '%'))
|
||||
AND (vColor IS NULL OR vColor = i.inkFk)
|
||||
AND (vSize IS NULL OR vSize = i.`size`)
|
||||
AND (vOrigen IS NULL OR vOrigen = w.name)
|
||||
AND (vLack IS NULL OR vLack = lack)
|
||||
|
||||
GROUP BY i.id, w.id
|
||||
HAVING lack < 0;
|
||||
|
||||
DROP TEMPORARY TABLE tmp.itemMinacum;
|
||||
DROP TEMPORARY TABLE tmp.itemMinETD;
|
||||
DROP TEMPORARY TABLE tmp.itemZoneClosure;
|
||||
END
|
||||
$$
|
||||
DELIMITER ;
|
|
@ -1,38 +0,0 @@
|
|||
SELECT
|
||||
s.id saleFk,
|
||||
st.code,
|
||||
t.id ticketFk,
|
||||
t.nickname,
|
||||
t.hour,
|
||||
s.quantity,
|
||||
ag.name,
|
||||
ts.alertLevel alertLevel,
|
||||
st.name stateName,
|
||||
st.id stateId,
|
||||
s.itemFk itemFk,
|
||||
al.code alertLevelCode,
|
||||
z.name,
|
||||
z.hour theoreticalhour,
|
||||
cn.isRookie,
|
||||
sc.saleClonedFk turno,
|
||||
tr.saleFk peticionCompra,
|
||||
t.hour minTimed
|
||||
FROM
|
||||
vn.sale s
|
||||
JOIN vn.ticket t ON t.id=s.ticketFk -- vn.ticket
|
||||
LEFT JOIN vn.zone z ON z.id = t.zoneFk -- vn.zone
|
||||
LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk -- AND zc.dated = DateValue(t.Fecha)
|
||||
JOIN vn.client c ON c.id=t.clientFk -- vn.client
|
||||
LEFT JOIN bs.clientNewBorn cn ON cn.clientFk=c.id
|
||||
JOIN vn.agencyMode agm ON agm.id=t.agencyModeFk -- vn.agencyMode
|
||||
JOIN vn.agency ag ON ag.id=agm.id -- vn.agencyMode
|
||||
JOIN vn.ticketState ts ON ts.ticketFk=t.id -- vn.sale
|
||||
LEFT JOIN vn.state st ON st.id=ts.state
|
||||
LEFT JOIN vn.alertLevel al ON al.id = st.alertLevel
|
||||
LEFT JOIN vn.saleCloned sc ON sc.saleClonedFk = s.id
|
||||
LEFT JOIN vn.ticketRequest tr ON tr.saleFk = s.id
|
||||
WHERE
|
||||
s.itemFk = ?
|
||||
AND t.landed >= util.VN_CURDATE()
|
||||
AND t.landed < INTERVAL util.VN_CURDATE() + INTERVAL ? + 1 DAY
|
||||
`,
|
|
@ -1,5 +1,5 @@
|
|||
/* eslint-disable no-console */
|
||||
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
|
||||
const {ParameterizedSQL} = require('loopback-connector');
|
||||
|
||||
module.exports = Self => {
|
||||
Self.remoteMethod('itemLackDetail', {
|
||||
description: 'Download a ticket delivery note document',
|
||||
jsegarra marked this conversation as resolved
Outdated
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const {ParameterizedSQL} = require('loopback-connector');
|
||||
|
||||
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
|
||||
module.exports = Self => {
|
||||
Self.remoteMethod('itemLackOrigin', {
|
||||
description: 'Insert ticket negative into negativeOrigin',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const {ParameterizedSQL} = require('loopback-connector');
|
||||
|
||||
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
|
||||
module.exports = Self => {
|
||||
Self.remoteMethod('negativeOrigin', {
|
||||
description: 'Insert ticket negative into negativeOrigin',
|
||||
|
|
|
@ -32,8 +32,7 @@ module.exports = Self => {
|
|||
tx = await Self.beginTransaction({});
|
||||
myOptions.transaction = tx;
|
||||
}
|
||||
// const conn = Self.dataSource.connector;
|
||||
// const stmts = [];
|
||||
|
||||
jsegarra marked this conversation as resolved
Outdated
jgallego
commented
quitar comentarios quitar comentarios
jsegarra
commented
Resuelto Resuelto
|
||||
try {
|
||||
const ticketsIds = tickets.map(({ticketFk}, index) => ticketFk);
|
||||
const ticketsCount = await Self.rawSql(`
|
||||
jgallego
commented
si el objetivo es contar tickets te sobraria la tabla sale, si el objetivo es contar tickets te sobraria la tabla sale,
si el objetivo es contar sales te sobraria la tabla ticket
|
||||
|
|
Loading…
Reference in New Issue
esta descripcion corresponde ?