Merge branch 'dev' into 7346
This commit is contained in:
commit
f21c292e20
|
@ -24,6 +24,10 @@ module.exports = Self => {
|
|||
arg: 'lang',
|
||||
type: 'string',
|
||||
description: 'The user lang'
|
||||
}, {
|
||||
arg: 'twoFactor',
|
||||
type: 'string',
|
||||
description: 'The user twoFactor'
|
||||
}
|
||||
],
|
||||
http: {
|
||||
|
@ -32,8 +36,8 @@ module.exports = Self => {
|
|||
}
|
||||
});
|
||||
|
||||
Self.updateUser = async(ctx, id, name, nickname, email, lang) => {
|
||||
Self.updateUser = async(ctx, id, name, nickname, email, lang, twoFactor) => {
|
||||
await Self.userSecurity(ctx, id);
|
||||
await Self.upsertWithWhere({id}, {name, nickname, email, lang});
|
||||
await Self.upsertWithWhere({id}, {name, nickname, email, lang, twoFactor});
|
||||
};
|
||||
};
|
||||
|
|
|
@ -101,9 +101,10 @@ module.exports = function(Self) {
|
|||
const headers = httpRequest.headers;
|
||||
const origin = headers.origin;
|
||||
|
||||
const defaultHash = '/reset-password?access_token=$token$';
|
||||
const defaultHash = '!/reset-password?access_token=$token$';
|
||||
const recoverHashes = {
|
||||
hedera: 'verificationToken=$token$'
|
||||
hedera: '!verificationToken=$token$',
|
||||
lilium: '/resetPassword?access_token=$token$'
|
||||
};
|
||||
|
||||
const app = info.options?.app;
|
||||
|
@ -115,7 +116,7 @@ module.exports = function(Self) {
|
|||
const params = {
|
||||
recipient: info.email,
|
||||
lang: user.lang,
|
||||
url: origin + '/#!' + recoverHash
|
||||
url: origin + '/#' + recoverHash
|
||||
};
|
||||
|
||||
const options = Object.assign({}, info.options);
|
||||
|
|
|
@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `salix`.`ACL_afterDelete`
|
|||
AFTER DELETE ON `ACL`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO ACL
|
||||
INSERT INTO ACLLog
|
||||
SET `action` = 'delete',
|
||||
`changedModel` = 'Acl',
|
||||
`changedModelId` = OLD.id,
|
||||
|
|
|
@ -189,7 +189,7 @@ BEGIN
|
|||
SELECT * FROM sales
|
||||
UNION ALL
|
||||
SELECT * FROM orders
|
||||
ORDER BY shipped,
|
||||
ORDER BY shipped DESC,
|
||||
(inventorySupplierFk = entityId) DESC,
|
||||
alertLevel DESC,
|
||||
isTicket,
|
||||
|
|
|
@ -4,7 +4,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_cloneWeekly`
|
|||
vDateTo DATE
|
||||
)
|
||||
BEGIN
|
||||
DECLARE vIsDone BOOL;
|
||||
DECLARE vLanding DATE;
|
||||
DECLARE vShipment DATE;
|
||||
DECLARE vWarehouseFk INT;
|
||||
|
@ -15,10 +14,17 @@ BEGIN
|
|||
DECLARE vAgencyModeFk INT;
|
||||
DECLARE vNewTicket INT;
|
||||
DECLARE vYear INT;
|
||||
DECLARE vSalesPersonFK INT;
|
||||
DECLARE vItemPicker INT;
|
||||
DECLARE vObservationSalesPersonFk INT
|
||||
DEFAULT (SELECT id FROM observationType WHERE code = 'salesPerson');
|
||||
DECLARE vObservationItemPickerFk INT
|
||||
DEFAULT (SELECT id FROM observationType WHERE code = 'itemPicker');
|
||||
DECLARE vEmail VARCHAR(255);
|
||||
DECLARE vIsDuplicateMail BOOL;
|
||||
DECLARE vSubject VARCHAR(100);
|
||||
DECLARE vMessage TEXT;
|
||||
DECLARE vDone BOOL;
|
||||
|
||||
DECLARE rsTicket CURSOR FOR
|
||||
DECLARE vTickets CURSOR FOR
|
||||
SELECT tt.ticketFk,
|
||||
t.clientFk,
|
||||
t.warehouseFk,
|
||||
|
@ -31,20 +37,14 @@ BEGIN
|
|||
JOIN tmp.time ti
|
||||
WHERE WEEKDAY(ti.dated) = tt.weekDay;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vIsDone = TRUE;
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
CALL `util`.`time_generate`(vDateFrom,vDateTo);
|
||||
CALL `util`.`time_generate`(vDateFrom, vDateTo);
|
||||
|
||||
OPEN rsTicket;
|
||||
myLoop: LOOP
|
||||
BEGIN
|
||||
DECLARE vSalesPersonEmail VARCHAR(150);
|
||||
DECLARE vIsDuplicateMail BOOL;
|
||||
DECLARE vSubject VARCHAR(150);
|
||||
DECLARE vMessage TEXT;
|
||||
|
||||
SET vIsDone = FALSE;
|
||||
FETCH rsTicket INTO
|
||||
OPEN vTickets;
|
||||
l: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH vTickets INTO
|
||||
vTicketFk,
|
||||
vClientFk,
|
||||
vWarehouseFk,
|
||||
|
@ -53,11 +53,11 @@ BEGIN
|
|||
vAgencyModeFk,
|
||||
vShipment;
|
||||
|
||||
IF vIsDone THEN
|
||||
LEAVE myLoop;
|
||||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
-- busca si el ticket ya ha sido clonado
|
||||
-- Busca si el ticket ya ha sido clonado
|
||||
IF EXISTS (SELECT TRUE FROM ticket tOrig
|
||||
JOIN sale saleOrig ON tOrig.id = saleOrig.ticketFk
|
||||
JOIN saleCloned sc ON sc.saleOriginalFk = saleOrig.id
|
||||
|
@ -67,7 +67,7 @@ BEGIN
|
|||
AND tClon.isDeleted = FALSE
|
||||
AND DATE(tClon.shipped) = vShipment)
|
||||
THEN
|
||||
ITERATE myLoop;
|
||||
ITERATE l;
|
||||
END IF;
|
||||
|
||||
IF vAgencyModeFk IS NULL THEN
|
||||
|
@ -107,15 +107,15 @@ BEGIN
|
|||
priceFixed,
|
||||
isPriceFixed)
|
||||
SELECT vNewTicket,
|
||||
saleOrig.itemFk,
|
||||
saleOrig.concept,
|
||||
saleOrig.quantity,
|
||||
saleOrig.price,
|
||||
saleOrig.discount,
|
||||
saleOrig.priceFixed,
|
||||
saleOrig.isPriceFixed
|
||||
FROM sale saleOrig
|
||||
WHERE saleOrig.ticketFk = vTicketFk;
|
||||
itemFk,
|
||||
concept,
|
||||
quantity,
|
||||
price,
|
||||
discount,
|
||||
priceFixed,
|
||||
isPriceFixed
|
||||
FROM sale
|
||||
WHERE ticketFk = vTicketFk;
|
||||
|
||||
INSERT IGNORE INTO saleCloned(saleOriginalFk, saleClonedFk)
|
||||
SELECT saleOriginal.id, saleClon.id
|
||||
|
@ -152,15 +152,7 @@ BEGIN
|
|||
attenderFk,
|
||||
vNewTicket
|
||||
FROM ticketRequest
|
||||
WHERE ticketFk =vTicketFk;
|
||||
|
||||
SELECT id INTO vSalesPersonFK
|
||||
FROM observationType
|
||||
WHERE code = 'salesPerson';
|
||||
|
||||
SELECT id INTO vItemPicker
|
||||
FROM observationType
|
||||
WHERE code = 'itemPicker';
|
||||
WHERE ticketFk = vTicketFk;
|
||||
|
||||
INSERT INTO ticketObservation(
|
||||
ticketFk,
|
||||
|
@ -168,7 +160,7 @@ BEGIN
|
|||
description)
|
||||
VALUES(
|
||||
vNewTicket,
|
||||
vSalesPersonFK,
|
||||
vObservationSalesPersonFk,
|
||||
CONCAT('turno desde ticket: ',vTicketFk))
|
||||
ON DUPLICATE KEY UPDATE description =
|
||||
CONCAT(ticketObservation.description,VALUES(description),' ');
|
||||
|
@ -178,16 +170,17 @@ BEGIN
|
|||
description)
|
||||
VALUES(
|
||||
vNewTicket,
|
||||
vItemPicker,
|
||||
vObservationItemPickerFk,
|
||||
'ATENCION: Contiene lineas de TURNO')
|
||||
ON DUPLICATE KEY UPDATE description =
|
||||
CONCAT(ticketObservation.description,VALUES(description),' ');
|
||||
|
||||
IF (vLanding IS NULL) THEN
|
||||
|
||||
SELECT e.email INTO vSalesPersonEmail
|
||||
IF vLanding IS NULL THEN
|
||||
SELECT IFNULL(d.notificationEmail, e.email) INTO vEmail
|
||||
FROM client c
|
||||
JOIN account.emailUser e ON e.userFk = c.salesPersonFk
|
||||
LEFT JOIN workerDepartment wd ON wd.workerFk = c.salesPersonFk
|
||||
LEFT JOIN department d ON d.id = wd.departmentFk
|
||||
WHERE c.id = vClientFk;
|
||||
|
||||
SET vSubject = CONCAT('Turnos - No se ha podido clonar correctamente el ticket ',
|
||||
|
@ -199,20 +192,21 @@ BEGIN
|
|||
|
||||
SELECT COUNT(*) INTO vIsDuplicateMail
|
||||
FROM mail
|
||||
WHERE receiver = vSalesPersonEmail
|
||||
WHERE receiver = vEmail
|
||||
AND subject = vSubject;
|
||||
|
||||
IF NOT vIsDuplicateMail THEN
|
||||
CALL mail_insert(vSalesPersonEmail, NULL, vSubject, vMessage);
|
||||
CALL mail_insert(vEmail, NULL, vSubject, vMessage);
|
||||
END IF;
|
||||
CALL ticket_setState(vNewTicket, 'FIXING');
|
||||
ELSE
|
||||
CALL ticketCalculateClon(vNewTicket, vTicketFk);
|
||||
END IF;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
CLOSE rsTicket;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.time, tmp.zoneGetLanded;
|
||||
CLOSE vTickets;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS
|
||||
tmp.time,
|
||||
tmp.zoneGetLanded;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`host_beforeInsert`
|
||||
BEFORE INSERT ON `host`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -4,5 +4,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`host_beforeUpdate`
|
|||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET new.updated = util.VN_NOW();
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE vn.productionConfig
|
||||
DROP COLUMN scannableCodeType,
|
||||
DROP COLUMN scannablePreviusCodeType;
|
|
@ -0,0 +1 @@
|
|||
DROP TABLE bi.Greuges_comercial_detail;
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE vn.host ADD editorFk int(10) unsigned DEFAULT NULL NULL;
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE vn.item
|
||||
ADD CONSTRAINT item_itemPackingType_FK FOREIGN KEY (itemPackingTypeFk)
|
||||
REFERENCES vn.itemPackingType(code) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
@ -0,0 +1,9 @@
|
|||
ALTER TABLE hedera.tpvMerchantEnable
|
||||
DROP FOREIGN KEY tpvMerchantEnable_ibfk_1,
|
||||
DROP PRIMARY KEY,
|
||||
ADD CONSTRAINT tpvMerchantEnable_pk PRIMARY KEY (merchantFk),
|
||||
ADD CONSTRAINT tpvMerchantEnable_tpvMerchant_FK
|
||||
FOREIGN KEY (merchantFk)
|
||||
REFERENCES hedera.tpvMerchant(id)
|
||||
ON DELETE RESTRICT
|
||||
ON UPDATE CASCADE;
|
|
@ -0,0 +1,7 @@
|
|||
name: time control
|
||||
columns:
|
||||
direction: direction
|
||||
isSendMail: sent mail
|
||||
logExclude: excluded log
|
||||
manual: manual
|
||||
timed: timed
|
|
@ -0,0 +1,7 @@
|
|||
name: control horario
|
||||
columns:
|
||||
direction: dirección
|
||||
isSendMail: correo enviado
|
||||
logExclude: registro excluido
|
||||
manual: manual
|
||||
timed: fichada
|
|
@ -10,14 +10,10 @@
|
|||
</td>
|
||||
<td colspan="2" id="shipped">{{dashIfEmpty(labelData.shipped)}}</td>
|
||||
</tr>
|
||||
<tr v-if="labelData?.qrData">
|
||||
<tr>
|
||||
<td rowspan="3"><img :src="labelData.qrData" class="qr"/></td>
|
||||
<td id="outline" class="ellipsize">{{dashIfEmpty(labelData.workerCode)}}</td>
|
||||
</tr>
|
||||
<tr v-else>
|
||||
<td rowspan="3"><div v-html="getBarcode(labelData.ticketFk)" class="basrcode"></div></td>
|
||||
<td id="outline" class="ellipsize">{{dashIfEmpty(labelData.workerCode)}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="outline" class="ellipsize">{{labelCount || labelData.labelCount || 0}}</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
const {DOMImplementation, XMLSerializer} = require('xmldom');
|
||||
const vnReport = require('../../../core/mixins/vn-report.js');
|
||||
const {toDataURL} = require('qrcode');
|
||||
const jsBarcode = require('jsbarcode');
|
||||
|
||||
module.exports = {
|
||||
name: 'collection-label',
|
||||
|
@ -30,11 +28,8 @@ module.exports = {
|
|||
|
||||
const labels = await this.rawSqlFromDef('labelsData', [ticketIds]);
|
||||
|
||||
const [{scannableCodeType}] = await this.rawSqlFromDef('barcodeType');
|
||||
if (scannableCodeType === 'qr') {
|
||||
for (const labelData of labels)
|
||||
labelData.qrData = await this.getQr(labelData?.ticketFk, labelData?.workerFk);
|
||||
}
|
||||
|
||||
this.labelsData = labels;
|
||||
this.checkMainEntity(this.labelsData);
|
||||
|
@ -50,20 +45,6 @@ module.exports = {
|
|||
});
|
||||
return toDataURL(QRdata, {margin: 0});
|
||||
},
|
||||
getBarcode(id) {
|
||||
const xmlSerializer = new XMLSerializer();
|
||||
const document = new DOMImplementation().createDocument('http://www.w3.org/1999/xhtml', 'html', null);
|
||||
const svgNode = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||
|
||||
jsBarcode(svgNode, id, {
|
||||
xmlDocument: document,
|
||||
format: 'code128',
|
||||
displayValue: false,
|
||||
width: 3.8,
|
||||
height: 115,
|
||||
});
|
||||
return xmlSerializer.serializeToString(svgNode);
|
||||
},
|
||||
getVertical(labelData) {
|
||||
let value;
|
||||
if (labelData.collectionFk) {
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
SELECT scannableCodeType
|
||||
FROM productionConfig
|
||||
LIMIT 1
|
Loading…
Reference in New Issue