7152-devToTest_2414 #2228
|
@ -35,10 +35,17 @@ module.exports = Self => {
|
||||||
let html = `<strong>Motivo</strong>:<br/>${reason}<br/>`;
|
let html = `<strong>Motivo</strong>:<br/>${reason}<br/>`;
|
||||||
html += `<strong>Usuario</strong>:<br/>${ctx.req.accessToken.userId} ${emailUser.email}<br/>`;
|
html += `<strong>Usuario</strong>:<br/>${ctx.req.accessToken.userId} ${emailUser.email}<br/>`;
|
||||||
|
|
||||||
|
delete additionalData.backError.config.headers.Authorization;
|
||||||
|
const httpRequest = JSON.parse(additionalData?.httpRequest);
|
||||||
|
|
||||||
|
if (httpRequest)
|
||||||
|
delete httpRequest.config.headers.Authorization;
|
||||||
|
additionalData.httpRequest = httpRequest;
|
||||||
|
|
||||||
for (const data in additionalData)
|
for (const data in additionalData)
|
||||||
html += `<strong>${data}</strong>:<br/>${tryParse(additionalData[data])}<br/>`;
|
html += `<strong>${data}</strong>:<br/>${tryParse(additionalData[data])}<br/>`;
|
||||||
|
|
||||||
const subjectReason = JSON.parse(additionalData?.httpRequest)?.data?.error;
|
const subjectReason = httpRequest?.data?.error;
|
||||||
smtp.send({
|
smtp.send({
|
||||||
to: `${config.app.reportEmail}, ${emailUser.email}`,
|
to: `${config.app.reportEmail}, ${emailUser.email}`,
|
||||||
subject:
|
subject:
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
DELETE FROM `account`.`signInLog` where owner <> FALSE
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
DELETE FROM `account`.`signInLog` where owner <> FALSE;
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
DELETE FROM salix.ACL
|
||||||
|
WHERE model = 'WorkerTimeControl'
|
||||||
|
AND property IN ('*','addTime');
|
||||||
|
|
||||||
|
INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId)
|
||||||
|
VALUES
|
||||||
|
('WorkerTimeControl', 'addTimeEntry', 'WRITE', 'ALLOW', 'ROLE', 'employee'),
|
||||||
|
('WorkerTimeControl', 'deleteTimeEntry', 'WRITE', 'ALLOW', 'ROLE', 'employee'),
|
||||||
|
('WorkerTimeControl', 'updateTimeEntry', 'WRITE', 'ALLOW', 'ROLE', 'employee'),
|
||||||
|
('WorkerTimeControl', 'sendMail', 'WRITE', 'ALLOW', 'ROLE', 'employee'),
|
||||||
|
('WorkerTimeControl', 'updateWorkerTimeControlMail', 'WRITE', 'ALLOW', 'ROLE', 'employee'),
|
||||||
|
('WorkerTimeControl', 'weeklyHourRecordEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'),
|
||||||
|
('WorkerTimeControl', 'getMailStates', 'READ', 'ALLOW', 'ROLE', 'employee'),
|
||||||
|
('WorkerTimeControl', 'resendWeeklyHourEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee');
|
|
@ -0,0 +1 @@
|
||||||
|
ALTER TABLE `vn`.`item` DROP COLUMN stars;
|
|
@ -0,0 +1,74 @@
|
||||||
|
DELIMITER $$
|
||||||
|
$$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_canbePostponed`(vOriginDated DATE, vFutureDated DATE, vWarehouseFk INT)
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Devuelve un listado de tickets susceptibles de fusionarse con otros tickets en el futuro
|
||||||
|
*
|
||||||
|
* @param vOriginDated Fecha en cuestión
|
||||||
|
* @param vFutureDated Fecha en el futuro a sondear
|
||||||
|
* @param vWarehouseFk Identificador de vn.warehouse
|
||||||
|
*/
|
||||||
|
CREATE OR REPLACE TEMPORARY TABLE tmp.filter
|
||||||
|
(INDEX (id))
|
||||||
|
SELECT sv.ticketFk id,
|
||||||
|
sub2.id futureId,
|
||||||
|
GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) ipt,
|
||||||
|
CAST(sum(litros) AS DECIMAL(10,0)) liters,
|
||||||
|
CAST(count(*) AS DECIMAL(10,0)) `lines`,
|
||||||
|
st.name state,
|
||||||
|
sub2.iptd futureIpt,
|
||||||
|
sub2.state futureState,
|
||||||
|
t.clientFk,
|
||||||
|
t.warehouseFk,
|
||||||
|
ts.alertLevel,
|
||||||
|
t.shipped,
|
||||||
|
t.totalWithVat,
|
||||||
|
sub2.shipped futureShipped,
|
||||||
|
t.workerFk,
|
||||||
|
st.code stateCode,
|
||||||
|
sub2.code futureStateCode,
|
||||||
|
st.classColor,
|
||||||
|
sub2.classColor futureClassColor
|
||||||
|
FROM vn.saleVolume sv
|
||||||
|
JOIN vn.sale s ON s.id = sv.saleFk
|
||||||
|
JOIN vn.item i ON i.id = s.itemFk
|
||||||
|
JOIN vn.ticket t ON t.id = sv.ticketFk
|
||||||
|
JOIN vn.address a ON a.id = t.addressFk
|
||||||
|
JOIN vn.province p ON p.id = a.provinceFk
|
||||||
|
JOIN vn.country c ON c.id = p.countryFk
|
||||||
|
JOIN vn.ticketState ts ON ts.ticketFk = t.id
|
||||||
|
JOIN vn.state st ON st.id = ts.stateFk
|
||||||
|
JOIN vn.alertLevel al ON al.id = ts.alertLevel
|
||||||
|
LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT *
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
t.addressFk,
|
||||||
|
t.id,
|
||||||
|
t.shipped,
|
||||||
|
st.name state,
|
||||||
|
st.code,
|
||||||
|
st.classColor,
|
||||||
|
GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) iptd
|
||||||
|
FROM vn.ticket t
|
||||||
|
JOIN vn.ticketState ts ON ts.ticketFk = t.id
|
||||||
|
JOIN vn.state st ON st.id = ts.stateFk
|
||||||
|
JOIN vn.sale s ON s.ticketFk = t.id
|
||||||
|
JOIN vn.item i ON i.id = s.itemFk
|
||||||
|
WHERE t.shipped BETWEEN vFutureDated
|
||||||
|
AND util.dayend(vFutureDated)
|
||||||
|
AND t.warehouseFk = vWarehouseFk
|
||||||
|
GROUP BY t.id
|
||||||
|
) sub
|
||||||
|
GROUP BY sub.addressFk
|
||||||
|
) sub2 ON sub2.addressFk = t.addressFk AND t.id != sub2.id
|
||||||
|
WHERE t.shipped BETWEEN vOriginDated AND util.dayend(vOriginDated)
|
||||||
|
AND t.warehouseFk = vWarehouseFk
|
||||||
|
AND al.code = 'FREE'
|
||||||
|
AND tp.ticketFk IS NULL
|
||||||
|
GROUP BY sv.ticketFk
|
||||||
|
HAVING futureId;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE vn.productionConfig ADD itemPreviousDefaultSize int NULL COMMENT 'Altura por defecto para los artículos de previa';
|
||||||
|
UPDATE IGNORE vn.productionConfig SET itemPreviousDefaultSize = 40 WHERE id = 1;
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE vn.invoiceOutConfig
|
||||||
|
ADD IF NOT EXISTS refLen TINYINT UNSIGNED DEFAULT 5 NOT NULL COMMENT 'Invoice reference identifier length';
|
|
@ -4,17 +4,20 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceOut_beforeInse
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
/**
|
/**
|
||||||
|
* Generates the next reference for the invoice serial. There cannot be gaps
|
||||||
|
* between identifiers of the same serial!
|
||||||
|
*
|
||||||
* Reference format:
|
* Reference format:
|
||||||
* - 0: Serial [A-Z]
|
* {0} Invoice serial
|
||||||
* - 1: Sage company id
|
* {1} The company code
|
||||||
* - 2-3: Last two digits of issued year
|
* {2-3} Last two digits of issue year
|
||||||
* - 4-8: Autoincrement identifier
|
* {4-$} Autoincrement identifier
|
||||||
**/
|
*/
|
||||||
DECLARE vNewRef INT DEFAULT 0;
|
DECLARE vRef INT DEFAULT 0;
|
||||||
DECLARE vCompanyCode INT;
|
DECLARE vRefLen INT;
|
||||||
|
DECLARE vRefPrefix VARCHAR(255);
|
||||||
DECLARE vLastRef VARCHAR(255);
|
DECLARE vLastRef VARCHAR(255);
|
||||||
DECLARE vRefStr VARCHAR(255);
|
DECLARE vCompanyCode INT;
|
||||||
DECLARE vRefLen INT DEFAULT 5;
|
|
||||||
DECLARE vYearLen INT DEFAULT 2;
|
DECLARE vYearLen INT DEFAULT 2;
|
||||||
DECLARE vPrefixLen INT;
|
DECLARE vPrefixLen INT;
|
||||||
|
|
||||||
|
@ -23,36 +26,34 @@ BEGIN
|
||||||
WHERE id = NEW.companyFk;
|
WHERE id = NEW.companyFk;
|
||||||
|
|
||||||
IF vCompanyCode IS NULL THEN
|
IF vCompanyCode IS NULL THEN
|
||||||
CALL util.throw('sageCompanyNotDefined');
|
CALL util.throw('companyCodeNotDefined');
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
SELECT MAX(i.ref) INTO vLastRef
|
SELECT MAX(i.ref) INTO vLastRef
|
||||||
FROM invoiceOut i
|
FROM invoiceOut i
|
||||||
WHERE i.serial = NEW.serial
|
WHERE i.serial = NEW.serial
|
||||||
AND i.issued BETWEEN util.firstDayOfYear(NEW.issued) AND util.dayEnd(util.lastDayOfYear(NEW.issued))
|
AND i.issued BETWEEN util.firstDayOfYear(NEW.issued) AND util.lastDayOfYear(NEW.issued)
|
||||||
AND i.companyFk = NEW.companyFk;
|
AND i.companyFk = NEW.companyFk;
|
||||||
|
|
||||||
IF vLastRef IS NOT NULL THEN
|
IF vLastRef IS NOT NULL THEN
|
||||||
SET vPrefixLen = LENGTH(NEW.serial) + LENGTH(vCompanyCode) + vYearLen;
|
SET vPrefixLen = LENGTH(NEW.serial) + LENGTH(vCompanyCode) + vYearLen;
|
||||||
SET vRefLen = LENGTH(vLastRef) - vPrefixLen;
|
SET vRefLen = LENGTH(vLastRef) - vPrefixLen;
|
||||||
SET vRefStr = SUBSTRING(vLastRef, vPrefixLen + 1);
|
SET vRefPrefix = LEFT(vLastRef, vPrefixLen);
|
||||||
SET vNewRef = vRefStr + 1;
|
SET vRef = RIGHT(vLastRef, vRefLen);
|
||||||
|
|
||||||
IF LENGTH(vNewRef) > vRefLen THEN
|
|
||||||
CALL util.throw('refLenExceeded');
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
SET NEW.ref = CONCAT(
|
|
||||||
SUBSTRING(vLastRef, 1, vPrefixLen),
|
|
||||||
LPAD(vNewRef, LENGTH(vRefStr), '0')
|
|
||||||
);
|
|
||||||
ELSE
|
ELSE
|
||||||
SET NEW.ref = CONCAT(
|
SELECT refLen INTO vRefLen FROM invoiceOutConfig;
|
||||||
|
SET vRefPrefix = CONCAT(
|
||||||
NEW.serial,
|
NEW.serial,
|
||||||
vCompanyCode,
|
vCompanyCode,
|
||||||
RIGHT(YEAR(NEW.issued), vYearLen),
|
RIGHT(YEAR(NEW.issued), vYearLen)
|
||||||
LPAD(1, vRefLen, '0')
|
|
||||||
);
|
);
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
SET vRef = vRef + 1;
|
||||||
|
IF LENGTH(vRef) > vRefLen THEN
|
||||||
|
CALL util.throw('refIdLenExceeded');
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SET NEW.ref = CONCAT(vRefPrefix, LPAD(vRef, vRefLen, '0'));
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
|
@ -600,6 +600,9 @@ INSERT INTO `vn`.`taxArea` (`code`, `claveOperacionFactura`, `CodigoTransaccion`
|
||||||
('NATIONAL', 0, 1),
|
('NATIONAL', 0, 1),
|
||||||
('WORLD', 2, 15);
|
('WORLD', 2, 15);
|
||||||
|
|
||||||
|
INSERT INTO vn.invoiceOutConfig
|
||||||
|
SET parallelism = 8;
|
||||||
|
|
||||||
INSERT INTO `vn`.`invoiceOutSerial` (`code`, `description`, `isTaxed`, `taxAreaFk`, `isCEE`, `type`)
|
INSERT INTO `vn`.`invoiceOutSerial` (`code`, `description`, `isTaxed`, `taxAreaFk`, `isCEE`, `type`)
|
||||||
VALUES
|
VALUES
|
||||||
('A', 'Global nacional', 1, 'NATIONAL', 0, 'global'),
|
('A', 'Global nacional', 1, 'NATIONAL', 0, 'global'),
|
||||||
|
@ -623,9 +626,6 @@ UPDATE `vn`.`invoiceOut` SET ref = 'T3333333' WHERE id = 3;
|
||||||
UPDATE `vn`.`invoiceOut` SET ref = 'T4444444' WHERE id = 4;
|
UPDATE `vn`.`invoiceOut` SET ref = 'T4444444' WHERE id = 4;
|
||||||
UPDATE `vn`.`invoiceOut` SET ref = 'A1111111' WHERE id = 5;
|
UPDATE `vn`.`invoiceOut` SET ref = 'A1111111' WHERE id = 5;
|
||||||
|
|
||||||
INSERT INTO vn.invoiceOutConfig
|
|
||||||
SET parallelism = 8;
|
|
||||||
|
|
||||||
INSERT INTO `vn`.`invoiceOutTax` (`invoiceOutFk`, `taxableBase`, `vat`, `pgcFk`)
|
INSERT INTO `vn`.`invoiceOutTax` (`invoiceOutFk`, `taxableBase`, `vat`, `pgcFk`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 895.76, 89.58, 4722000010),
|
(1, 895.76, 89.58, 4722000010),
|
||||||
|
@ -929,25 +929,25 @@ INSERT INTO `vn`.`itemFamily`(`code`, `description`)
|
||||||
('VT', 'Sales');
|
('VT', 'Sales');
|
||||||
|
|
||||||
INSERT INTO `vn`.`item`(`id`, `typeFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenseFk`,
|
INSERT INTO `vn`.`item`(`id`, `typeFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenseFk`,
|
||||||
`comment`, `relevancy`, `image`, `subName`, `minPrice`, `stars`, `family`, `isFloramondo`, `genericFk`, `itemPackingTypeFk`, `hasMinPrice`, `packingShelve`, `weightByPiece`)
|
`comment`, `relevancy`, `image`, `subName`, `minPrice`, `family`, `isFloramondo`, `genericFk`, `itemPackingTypeFk`, `hasMinPrice`, `packingShelve`, `weightByPiece`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'EMB', 0, NULL, 'V', 0, 15,3),
|
(1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, 15,3),
|
||||||
(2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT', 0, NULL, 'H', 0, 10,2),
|
(2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, 10,2),
|
||||||
(3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT', 0, NULL, NULL, 0, 5,5),
|
(3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, 5,5),
|
||||||
(4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
(4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
||||||
(5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
(5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
||||||
(6, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
(6, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
||||||
(7, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
(7, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
||||||
(8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
(8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
||||||
(9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT', 1, NULL, NULL, 0, NULL,NULL),
|
(9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL,NULL),
|
||||||
(10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
(10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
||||||
(11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
(11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
||||||
(12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
(12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL),
|
||||||
(13, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 2, 'VT', 1, NULL, NULL, 1, NULL,NULL),
|
(13, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL,NULL),
|
||||||
(14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT', 1, NULL, NULL, 0, NULL,NULL),
|
(14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL,NULL),
|
||||||
(15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0, NULL, NULL, 0, NULL,NULL),
|
(15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL,NULL),
|
||||||
(16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0, NULL, NULL, 0, NULL,NULL),
|
(16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL,NULL),
|
||||||
(71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL);
|
(71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL);
|
||||||
|
|
||||||
-- Update the taxClass after insert of the items
|
-- Update the taxClass after insert of the items
|
||||||
UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2
|
UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2
|
||||||
|
|
|
@ -735,7 +735,7 @@ export default {
|
||||||
},
|
},
|
||||||
createStateView: {
|
createStateView: {
|
||||||
state: 'vn-autocomplete[ng-model="$ctrl.stateFk"]',
|
state: 'vn-autocomplete[ng-model="$ctrl.stateFk"]',
|
||||||
worker: 'vn-worker-autocomplete[ng-model="$ctrl.workerFk"]',
|
worker: 'vn-worker-autocomplete[ng-model="$ctrl.userFk"]',
|
||||||
saveStateButton: `button[type=submit]`
|
saveStateButton: `button[type=submit]`
|
||||||
},
|
},
|
||||||
claimsIndex: {
|
claimsIndex: {
|
||||||
|
|
|
@ -203,5 +203,6 @@
|
||||||
"Cannot past travels with entries": "Cannot past travels with entries",
|
"Cannot past travels with entries": "Cannot past travels with entries",
|
||||||
"The notification subscription of this worker cant be modified": "The notification subscription of this worker cant be modified",
|
"The notification subscription of this worker cant be modified": "The notification subscription of this worker cant be modified",
|
||||||
"It was not able to remove the next expeditions:": "It was not able to remove the next expeditions: {{expeditions}}",
|
"It was not able to remove the next expeditions:": "It was not able to remove the next expeditions: {{expeditions}}",
|
||||||
"Incorrect pin": "Incorrect pin."
|
"Incorrect pin": "Incorrect pin.",
|
||||||
|
"The notification subscription of this worker cant be modified": "The notification subscription of this worker cant be modified"
|
||||||
}
|
}
|
|
@ -112,7 +112,6 @@ module.exports = Self => {
|
||||||
i.value7,
|
i.value7,
|
||||||
i.tag8,
|
i.tag8,
|
||||||
i.value8,
|
i.value8,
|
||||||
i.stars,
|
|
||||||
tci.price,
|
tci.price,
|
||||||
tci.available,
|
tci.available,
|
||||||
w.lastName,
|
w.lastName,
|
||||||
|
|
|
@ -37,11 +37,6 @@
|
||||||
value="{{::item.value7}}">
|
value="{{::item.value7}}">
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
</div>
|
</div>
|
||||||
<vn-horizontal>
|
|
||||||
<vn-one>
|
|
||||||
<vn-rating ng-if="::item.stars"
|
|
||||||
ng-model="::item.stars"/>
|
|
||||||
</vn-one>
|
|
||||||
<vn-horizontal
|
<vn-horizontal
|
||||||
class="text-right text-caption alert vn-mr-xs"
|
class="text-right text-caption alert vn-mr-xs"
|
||||||
ng-if="::item.minQuantity">
|
ng-if="::item.minQuantity">
|
||||||
|
@ -54,7 +49,6 @@
|
||||||
</vn-one>
|
</vn-one>
|
||||||
{{::item.minQuantity}}
|
{{::item.minQuantity}}
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
</vn-horizontal>
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<vn-one>
|
<vn-one>
|
||||||
|
|
|
@ -17,18 +17,3 @@ columns:
|
||||||
agencyModeFk: agency
|
agencyModeFk: agency
|
||||||
routeFk: route
|
routeFk: route
|
||||||
zoneFk: zone
|
zoneFk: zone
|
||||||
name: name
|
|
||||||
beachFk: beach
|
|
||||||
ticketPacked: tickets packed
|
|
||||||
ticketFree: tickets free
|
|
||||||
ticketProduction: tickets production
|
|
||||||
packages: packages
|
|
||||||
note: note
|
|
||||||
dated: dated
|
|
||||||
dockFk: dock
|
|
||||||
priority: priority
|
|
||||||
etd: etd
|
|
||||||
expeditionTruckFk: truck
|
|
||||||
m3boxes: m3 boxes
|
|
||||||
bufferFk: buffer
|
|
||||||
isPickingAllowed: is picking allowed
|
|
|
@ -17,18 +17,3 @@ columns:
|
||||||
agencyModeFk: agencia
|
agencyModeFk: agencia
|
||||||
routeFk: ruta
|
routeFk: ruta
|
||||||
zoneFk: zona
|
zoneFk: zona
|
||||||
name: nombre
|
|
||||||
beachFk: playa
|
|
||||||
ticketPacked: tickets encajados
|
|
||||||
ticketFree: tickets libres
|
|
||||||
ticketProduction: tickets producción
|
|
||||||
packages: paquetes
|
|
||||||
note: nota
|
|
||||||
dated: fecha
|
|
||||||
dockFk: muelle
|
|
||||||
priority: prioridad
|
|
||||||
etd: etd
|
|
||||||
expeditionTruckFk: camión
|
|
||||||
m3boxes: m3 cajas
|
|
||||||
bufferFk: buffer
|
|
||||||
isPickingAllowed: está permitido recoger
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
name: routesMonitor
|
||||||
|
columns:
|
||||||
|
routeFk: route
|
||||||
|
name: name
|
||||||
|
beachFk: beach
|
||||||
|
ticketPacked: tickets packed
|
||||||
|
ticketFree: tickets free
|
||||||
|
ticketProduction: tickets production
|
||||||
|
packages: packages
|
||||||
|
note: note
|
||||||
|
dated: dated
|
||||||
|
dockFk: dock
|
||||||
|
m3: m3
|
||||||
|
priority: priority
|
||||||
|
etd: etd
|
||||||
|
expeditionTruckFk: truck
|
||||||
|
m3boxes: m3 boxes
|
||||||
|
bufferFk: buffer
|
||||||
|
isPickingAllowed: is picking allowed
|
|
@ -0,0 +1,19 @@
|
||||||
|
name: monitorRutas
|
||||||
|
columns:
|
||||||
|
routeFk: ruta
|
||||||
|
name: nombre
|
||||||
|
beachFk: playa
|
||||||
|
ticketPacked: tickets encajados
|
||||||
|
ticketFree: tickets libres
|
||||||
|
ticketProduction: tickets producción
|
||||||
|
packages: paquetes
|
||||||
|
note: nota
|
||||||
|
dated: fecha
|
||||||
|
dockFk: muelle
|
||||||
|
m3: m3
|
||||||
|
priority: prioridad
|
||||||
|
etd: etd
|
||||||
|
expeditionTruckFk: camión
|
||||||
|
m3boxes: m3 cajas
|
||||||
|
bufferFk: buffer
|
||||||
|
isPickingAllowed: está permitido recoger
|
|
@ -22,5 +22,8 @@
|
||||||
},
|
},
|
||||||
"Vehicle": {
|
"Vehicle": {
|
||||||
"dataSource": "vn"
|
"dataSource": "vn"
|
||||||
|
},
|
||||||
|
"RoutesMonitor": {
|
||||||
|
"dataSource": "vn"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
{
|
||||||
|
"name": "RoutesMonitor",
|
||||||
|
"base": "VnModel",
|
||||||
|
"mixins": {
|
||||||
|
"Loggable": true
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"mysql": {
|
||||||
|
"table": "routesMonitor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"routeFk": {
|
||||||
|
"type": "number",
|
||||||
|
"id": true,
|
||||||
|
"description": "Identifier"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"beachFk": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"ticketPacked": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"ticketFree": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"ticketProduction": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"packages": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"note": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"dated": {
|
||||||
|
"type": "date"
|
||||||
|
},
|
||||||
|
"dockFk": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"m3": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"priority": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"expeditionTruckFk": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"m3boxes": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"bufferFk": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"isPickingAllowed": {
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -84,7 +84,7 @@ module.exports = Self => {
|
||||||
arg: 'filter',
|
arg: 'filter',
|
||||||
type: 'object',
|
type: 'object',
|
||||||
description: `Filter defining where, order, offset, and limit - must be a JSON-encoded string`
|
description: `Filter defining where, order, offset, and limit - must be a JSON-encoded string`
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
returns: {
|
returns: {
|
||||||
type: ['object'],
|
type: ['object'],
|
||||||
|
|
|
@ -61,6 +61,9 @@
|
||||||
<th field="liters">
|
<th field="liters">
|
||||||
<span translate>Liters</span>
|
<span translate>Liters</span>
|
||||||
</th>
|
</th>
|
||||||
|
<th field="totalWithVat">
|
||||||
|
<span translate>Import</span>
|
||||||
|
</th>
|
||||||
<th shrink field="lines">
|
<th shrink field="lines">
|
||||||
<span translate>Available Lines</span>
|
<span translate>Available Lines</span>
|
||||||
</th>
|
</th>
|
||||||
|
@ -76,6 +79,7 @@
|
||||||
<th shrink field="futureState">
|
<th shrink field="futureState">
|
||||||
<span translate>State</span>
|
<span translate>State</span>
|
||||||
</th>
|
</th>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -148,6 +152,13 @@
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td>{{::ticket.liters}}</td>
|
<td>{{::ticket.liters}}</td>
|
||||||
|
<td>
|
||||||
|
<span
|
||||||
|
class="chip {{$ctrl.totalPriceColor(ticket.totalWithVat)}}"
|
||||||
|
title="{{$ctrl.totalPriceTitle(ticket.totalWithVat) | translate}}">
|
||||||
|
{{::(ticket.totalWithVat ? ticket.totalWithVat : 0) | currency: 'EUR': 2}}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
<td>{{::ticket.lines}}</td>
|
<td>{{::ticket.lines}}</td>
|
||||||
<td separator>
|
<td separator>
|
||||||
<span
|
<span
|
||||||
|
|
|
@ -21,6 +21,9 @@ export default class Controller extends Section {
|
||||||
{
|
{
|
||||||
field: 'futureShipped',
|
field: 'futureShipped',
|
||||||
searchable: false
|
searchable: false
|
||||||
|
}, {
|
||||||
|
field: 'totalWithVat',
|
||||||
|
searchable: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'state',
|
field: 'state',
|
||||||
|
@ -130,6 +133,17 @@ export default class Controller extends Section {
|
||||||
this.vnApp.showSuccess(this.$t('Success'));
|
this.vnApp.showSuccess(this.$t('Success'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
totalPriceColor(totalWithVat) {
|
||||||
|
return this.isLessThan50(totalWithVat) ? 'warning' : '';
|
||||||
|
}
|
||||||
|
|
||||||
|
totalPriceTitle(totalWithVat) {
|
||||||
|
return this.isLessThan50(totalWithVat) ? 'Less than 50€' : '';
|
||||||
|
}
|
||||||
|
|
||||||
|
isLessThan50(totalWithVat) {
|
||||||
|
return (parseInt(totalWithVat) > 0 && parseInt(totalWithVat) < 50);
|
||||||
|
}
|
||||||
|
|
||||||
exprBuilder(param, value) {
|
exprBuilder(param, value) {
|
||||||
switch (param) {
|
switch (param) {
|
||||||
|
@ -145,6 +159,8 @@ export default class Controller extends Section {
|
||||||
return {'ipt': {like: `%${value}%`}};
|
return {'ipt': {like: `%${value}%`}};
|
||||||
case 'futureIpt':
|
case 'futureIpt':
|
||||||
return {'futureIpt': {like: `%${value}%`}};
|
return {'futureIpt': {like: `%${value}%`}};
|
||||||
|
case 'totalWithVat':
|
||||||
|
return {'totalWithVat': value};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</vn-autocomplete>
|
</vn-autocomplete>
|
||||||
<vn-worker-autocomplete
|
<vn-worker-autocomplete
|
||||||
vn-one
|
vn-one
|
||||||
ng-model="$ctrl.workerFk">
|
ng-model="$ctrl.userFk">
|
||||||
</vn-worker-autocomplete>
|
</vn-worker-autocomplete>
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
</vn-card>
|
</vn-card>
|
||||||
|
|
|
@ -17,19 +17,19 @@ class Controller extends Section {
|
||||||
set stateFk(value) {
|
set stateFk(value) {
|
||||||
this.params.stateFk = value;
|
this.params.stateFk = value;
|
||||||
this.isPickerDesignedState = this.getIsPickerDesignedState(value);
|
this.isPickerDesignedState = this.getIsPickerDesignedState(value);
|
||||||
this.workerFk = window.localStorage.currentUserWorkerId;
|
this.userFk = window.localStorage.currentUserWorkerId;
|
||||||
}
|
}
|
||||||
|
|
||||||
get stateFk() {
|
get stateFk() {
|
||||||
return this.params.stateFk;
|
return this.params.stateFk;
|
||||||
}
|
}
|
||||||
|
|
||||||
set workerFk(value) {
|
set userFk(value) {
|
||||||
this.params.workerFk = value;
|
this.params.userFk = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
get workerFk() {
|
get userFk() {
|
||||||
return this.params.workerFk;
|
return this.params.userFk;
|
||||||
}
|
}
|
||||||
|
|
||||||
getPickerDesignedState() {
|
getPickerDesignedState() {
|
||||||
|
|
|
@ -29,11 +29,11 @@ describe('Ticket', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('workerFk setter', () => {
|
describe('userFk setter', () => {
|
||||||
it('should set params.workerFk', () => {
|
it('should set params.userFk', () => {
|
||||||
controller.workerFk = 1;
|
controller.userFk = 1;
|
||||||
|
|
||||||
expect(controller.params.workerFk).toEqual(1);
|
expect(controller.params.userFk).toEqual(1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ const UserError = require('vn-loopback/util/user-error');
|
||||||
module.exports = Self => {
|
module.exports = Self => {
|
||||||
Self.remoteMethodCtx('deleteTimeEntry', {
|
Self.remoteMethodCtx('deleteTimeEntry', {
|
||||||
description: 'Deletes a manual time entry for a worker if the user role is above the worker',
|
description: 'Deletes a manual time entry for a worker if the user role is above the worker',
|
||||||
accessType: 'READ',
|
accessType: 'WRITE',
|
||||||
accepts: [{
|
accepts: [{
|
||||||
arg: 'id',
|
arg: 'id',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<td id="outline" class="ellipsize">{{labelData.workerCode || '---'}}</td>
|
<td id="outline" class="ellipsize">{{labelData.workerCode || '---'}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id="outline" class="ellipsize">{{labelCount || labelData.labelCount || 0}}</td>
|
<td id="outline" class="ellipsize">{{labelData.labelCount || 0}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id="outline" class="ellipsize">{{labelData.code == 'V' ? (labelData.size || 0) + 'cm' : (labelData.volume || 0) + 'm³'}}</td>
|
<td id="outline" class="ellipsize">{{labelData.code == 'V' ? (labelData.size || 0) + 'cm' : (labelData.volume || 0) + 'm³'}}</td>
|
||||||
|
|
|
@ -18,9 +18,9 @@ module.exports = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async serverPrefetch() {
|
async serverPrefetch() {
|
||||||
|
await this.rawSql('SET @hasPrevia := 0');
|
||||||
let ticketIds;
|
let ticketIds;
|
||||||
const res = await this.rawSqlFromDef('tickets', [this.id]);
|
const res = await this.rawSqlFromDef('tickets', [this.id]);
|
||||||
|
|
||||||
if (res.length) {
|
if (res.length) {
|
||||||
ticketIds = [];
|
ticketIds = [];
|
||||||
for (const row of res)
|
for (const row of res)
|
||||||
|
|
|
@ -7,14 +7,16 @@ SELECT c.itemPackingTypeFk code,
|
||||||
cc.code color,
|
cc.code color,
|
||||||
t.clientFk,
|
t.clientFk,
|
||||||
CAST(SUM(sv.volume) AS DECIMAL(5, 2)) volume,
|
CAST(SUM(sv.volume) AS DECIMAL(5, 2)) volume,
|
||||||
MAX(i.`size`) `size`,
|
MAX(
|
||||||
|
IF(sgd.id, IFNULL(pc.itemPreviousDefaultSize, i.`size`), i.`size`)
|
||||||
|
) `size`,
|
||||||
w.code workerCode,
|
w.code workerCode,
|
||||||
TIME_FORMAT(t.shipped, '%H:%i') shippedHour,
|
TIME_FORMAT(t.shipped, '%H:%i') shippedHour,
|
||||||
TIME_FORMAT(zo.`hour`, '%H:%i') zoneHour,
|
TIME_FORMAT(zo.`hour`, '%H:%i') zoneHour,
|
||||||
DATE_FORMAT(t.shipped, '%d/%m/%y') shipped,
|
DATE_FORMAT(t.shipped, '%d/%m/%y') shipped,
|
||||||
tt.labelCount,
|
tt.labelCount,
|
||||||
t.nickName,
|
t.nickName,
|
||||||
COUNT(*) lineCount,
|
SUM(IF(sgd.id, IF(@hasPrevia, 0, @hasPrevia := 1), 1)) lineCount,
|
||||||
rm.routeFk
|
rm.routeFk
|
||||||
FROM vn.ticket t
|
FROM vn.ticket t
|
||||||
JOIN vn.ticketCollection tc ON tc.ticketFk = t.id
|
JOIN vn.ticketCollection tc ON tc.ticketFk = t.id
|
||||||
|
@ -33,6 +35,8 @@ SELECT c.itemPackingTypeFk code,
|
||||||
LEFT JOIN vn.`zone` zo ON t.zoneFk = zo.id
|
LEFT JOIN vn.`zone` zo ON t.zoneFk = zo.id
|
||||||
LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk
|
LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk
|
||||||
LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk
|
LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk
|
||||||
|
LEFT JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id
|
||||||
|
JOIN vn.productionConfig pc
|
||||||
WHERE t.id IN (?)
|
WHERE t.id IN (?)
|
||||||
GROUP BY t.id
|
GROUP BY t.id
|
||||||
ORDER BY cc.`code`;
|
ORDER BY cc.`code`
|
|
@ -7,7 +7,7 @@ module.exports = {
|
||||||
this.invoice = await this.findOneFromDef('invoice', [this.reference]);
|
this.invoice = await this.findOneFromDef('invoice', [this.reference]);
|
||||||
this.checkMainEntity(this.invoice);
|
this.checkMainEntity(this.invoice);
|
||||||
this.client = await this.findOneFromDef('client', [this.reference]);
|
this.client = await this.findOneFromDef('client', [this.reference]);
|
||||||
this.incoterms = await this.findOneFromDef('incoterms', [this.reference, this.reference, this.reference]);
|
this.incoterms = await this.findOneFromDef('incoterms', [this.reference, this.reference, this.reference, this.reference]);
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
reference: {
|
reference: {
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
SELECT
|
SELECT c.id,
|
||||||
c.id,
|
c.socialName,
|
||||||
c.socialName,
|
c.street postalAddress,
|
||||||
c.street AS postalAddress,
|
IF (ios.taxAreaFk IS NOT NULL, CONCAT(cty.code, c.fi), c.fi) fi,
|
||||||
IF (ios.taxAreaFk IS NOT NULL, CONCAT(cty.code, c.fi), c.fi) fi,
|
CONCAT(c.postcode, ' - ', c.city) postcodeCity
|
||||||
CONCAT(c.postcode, ' - ', c.city) postcodeCity
|
FROM vn.invoiceOut io
|
||||||
FROM vn.invoiceOut io
|
JOIN vn.client c ON c.id = io.clientFk
|
||||||
JOIN vn.client c ON c.id = io.clientFk
|
JOIN vn.country cty ON cty.id = c.countryFk
|
||||||
JOIN vn.country cty ON cty.id = c.countryFk
|
LEFT JOIN vn.invoiceOutSerial ios ON ios.code = io.serial
|
||||||
LEFT JOIN vn.invoiceOutSerial ios ON ios.code = io.serial
|
AND ios.taxAreaFk = 'CEE'
|
||||||
AND ios.taxAreaFk = 'CEE'
|
LEFT JOIN ticket t ON t.refFk = io.ref
|
||||||
LEFT JOIN ticket t ON t.refFk = io.ref
|
WHERE t.refFk = ?
|
||||||
WHERE t.refFk = ?
|
|
|
@ -1,38 +1,14 @@
|
||||||
SELECT io.issued,
|
SELECT pack.packages,
|
||||||
c.socialName,
|
|
||||||
c.street postalAddress,
|
|
||||||
c.fi,
|
|
||||||
io.clientFk,
|
|
||||||
c.postcode,
|
|
||||||
c.city,
|
|
||||||
io.companyFk,
|
|
||||||
io.ref,
|
|
||||||
tc.code,
|
|
||||||
s.concept,
|
|
||||||
s.quantity,
|
|
||||||
s.price,
|
|
||||||
s.discount,
|
|
||||||
s.ticketFk,
|
|
||||||
t.shipped,
|
|
||||||
t.refFk,
|
|
||||||
a.nickname,
|
|
||||||
s.itemFk,
|
|
||||||
s.id saleFk,
|
|
||||||
pm.name AS pmname,
|
|
||||||
sa.iban,
|
|
||||||
c.phone,
|
|
||||||
MAX(t.packages) packages,
|
|
||||||
a.incotermsFk,
|
a.incotermsFk,
|
||||||
ic.name incotermsName ,
|
ic.name incotermsName,
|
||||||
t.weight,
|
t.weight,
|
||||||
t.observations,
|
|
||||||
ca.fiscalName customsAgentName,
|
ca.fiscalName customsAgentName,
|
||||||
ca.street customsAgentStreet,
|
ca.street customsAgentStreet,
|
||||||
ca.nif customsAgentNif,
|
ca.nif customsAgentNif,
|
||||||
ca.phone customsAgentPhone,
|
ca.phone customsAgentPhone,
|
||||||
ca.email customsAgentEmail,
|
ca.email customsAgentEmail,
|
||||||
CAST(sub2.volume AS DECIMAL (10,2)) volume,
|
CAST(vol.volume AS DECIMAL (10,2)) volume,
|
||||||
sub3.intrastat
|
intr.intrastat
|
||||||
FROM vn.invoiceOut io
|
FROM vn.invoiceOut io
|
||||||
JOIN vn.supplier su ON su.id = io.companyFk
|
JOIN vn.supplier su ON su.id = io.companyFk
|
||||||
JOIN vn.client c ON c.id = io.clientFk
|
JOIN vn.client c ON c.id = io.clientFk
|
||||||
|
@ -42,26 +18,35 @@ SELECT io.issued,
|
||||||
LEFT JOIN vn.incoterms ic ON ic.code = a.incotermsFk
|
LEFT JOIN vn.incoterms ic ON ic.code = a.incotermsFk
|
||||||
LEFT JOIN vn.customsAgent ca ON ca.id = a.customsAgentFk
|
LEFT JOIN vn.customsAgent ca ON ca.id = a.customsAgentFk
|
||||||
JOIN vn.sale s ON s.ticketFk = t.id
|
JOIN vn.sale s ON s.ticketFk = t.id
|
||||||
JOIN (SELECT SUM(volume) volume
|
JOIN (
|
||||||
FROM vn.invoiceOut io
|
SELECT SUM(volume) volume, COUNT(*) packages
|
||||||
JOIN vn.ticket t ON t.refFk = io.ref
|
FROM vn.invoiceOut io
|
||||||
JOIN vn.saleVolume sv ON sv.ticketFk = t.id
|
JOIN vn.ticket t ON t.refFk = io.ref
|
||||||
WHERE t.refFk = ?
|
JOIN vn.saleVolume sv ON sv.ticketFk = t.id
|
||||||
) sub2 ON TRUE
|
WHERE t.refFk = ?
|
||||||
JOIN vn.itemTaxCountry itc ON itc.countryFk = su.countryFk AND itc.itemFk = s.itemFk
|
) vol
|
||||||
|
JOIN vn.itemTaxCountry itc ON itc.countryFk = su.countryFk
|
||||||
|
AND itc.itemFk = s.itemFk
|
||||||
JOIN vn.taxClass tc ON tc.id = itc.taxClassFk
|
JOIN vn.taxClass tc ON tc.id = itc.taxClassFk
|
||||||
JOIN vn.invoiceOutSerial ios ON ios.code = io.serial AND ios.taxAreaFk = 'WORLD'
|
JOIN vn.invoiceOutSerial ios ON ios.code = io.serial
|
||||||
|
AND ios.taxAreaFk = 'WORLD'
|
||||||
JOIN vn.country cty ON cty.id = c.countryFk
|
JOIN vn.country cty ON cty.id = c.countryFk
|
||||||
JOIN vn.payMethod pm ON pm.id = c .payMethodFk
|
JOIN vn.payMethod pm ON pm.id = c .payMethodFk
|
||||||
JOIN vn.company co ON co.id=io.companyFk
|
JOIN vn.company co ON co.id=io.companyFk
|
||||||
JOIN vn.supplierAccount sa ON sa.id=co.supplierAccountFk
|
JOIN vn.supplierAccount sa ON sa.id=co.supplierAccountFk
|
||||||
LEFT JOIN (SELECT GROUP_CONCAT(DISTINCT ir.description ORDER BY ir.description SEPARATOR '. ' ) as intrastat
|
JOIN (
|
||||||
FROM vn.ticket t
|
SELECT GROUP_CONCAT(DISTINCT ir.description ORDER BY ir.description SEPARATOR '. ' ) intrastat
|
||||||
JOIN vn.invoiceOut io ON io.ref = t.refFk
|
FROM vn.ticket t
|
||||||
JOIN vn.sale s ON t.id = s.ticketFk
|
JOIN vn.invoiceOut io ON io.ref = t.refFk
|
||||||
JOIN vn.item i ON i.id = s.itemFk
|
JOIN vn.sale s ON t.id = s.ticketFk
|
||||||
JOIN vn.intrastat ir ON ir.id = i.intrastatFk
|
JOIN vn.item i ON i.id = s.itemFk
|
||||||
WHERE t.refFk = ?
|
JOIN vn.intrastat ir ON ir.id = i.intrastatFk
|
||||||
)sub3 ON TRUE
|
WHERE t.refFk = ?
|
||||||
WHERE t.refFk = ?
|
) intr
|
||||||
|
JOIN (
|
||||||
|
SELECT SUM(packages) packages
|
||||||
|
FROM ticket
|
||||||
|
WHERE refFk = ?
|
||||||
|
) pack
|
||||||
|
WHERE t.refFk = ?
|
||||||
|
LIMIT 1
|
||||||
|
|
|
@ -1,18 +1,17 @@
|
||||||
SELECT
|
SELECT io.id,
|
||||||
io.id,
|
io.issued,
|
||||||
io.issued,
|
io.clientFk,
|
||||||
io.clientFk,
|
io.companyFk,
|
||||||
io.companyFk,
|
io.ref,
|
||||||
io.ref,
|
pm.code payMethodCode,
|
||||||
pm.code AS payMethodCode,
|
cny.code companyCode,
|
||||||
cny.code companyCode,
|
sa.iban,
|
||||||
sa.iban,
|
ios.footNotes
|
||||||
ios.footNotes
|
FROM invoiceOut io
|
||||||
FROM invoiceOut io
|
JOIN client c ON c.id = io.clientFk
|
||||||
JOIN client c ON c.id = io.clientFk
|
JOIN payMethod pm ON pm.id = c.payMethodFk
|
||||||
JOIN payMethod pm ON pm.id = c.payMethodFk
|
JOIN company cny ON cny.id = io.companyFk
|
||||||
JOIN company cny ON cny.id = io.companyFk
|
JOIN supplierAccount sa ON sa.id = cny.supplierAccountFk
|
||||||
JOIN supplierAccount sa ON sa.id = cny.supplierAccountFk
|
LEFT JOIN invoiceOutSerial ios ON ios.code = io.serial
|
||||||
LEFT JOIN invoiceOutSerial ios ON ios.code = io.serial
|
LEFT JOIN ticket t ON t.refFk = io.ref
|
||||||
LEFT JOIN ticket t ON t.refFk = io.ref
|
WHERE t.refFk = ?
|
||||||
WHERE t.refFk = ?
|
|
Loading…
Reference in New Issue