fix: refs #7611 & ticket195937 incoterms #2613

Merged
robert merged 9 commits from 195937-icoterms into master 2024-06-25 05:58:31 +00:00
2 changed files with 32 additions and 53 deletions

View File

@ -9,7 +9,7 @@ module.exports = {
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 = this.incoterms =
await this.findOneFromDef('incoterms', [this.reference, this.reference, this.reference, this.reference]); await this.findOneFromDef('incoterms', [this.reference]);
if (!this.incoterms) if (!this.incoterms)
throw new UserError(`The address of the customer must have information about Incoterms and Customs Agent`); throw new UserError(`The address of the customer must have information about Incoterms and Customs Agent`);
}, },

View File

@ -1,52 +1,31 @@
SELECT pack.packages, WITH tickets AS(
a.incotermsFk, SELECT id, packages, addressFk, weight
ic.name incotermsName, FROM ticket
t.weight, WHERE refFk= ?
ca.fiscalName customsAgentName, ), volume AS(
ca.street customsAgentStreet, SELECT SUM(volume) volume
ca.nif customsAgentNif, FROM tickets t
ca.phone customsAgentPhone, JOIN vn.saleVolume sv ON sv.ticketFk = t.id
ca.email customsAgentEmail, ), intrastat AS(
CAST(vol.volume AS DECIMAL (10,2)) volume, SELECT GROUP_CONCAT(DISTINCT ir.description ORDER BY ir.description SEPARATOR '. ' ) intrastat
intr.intrastat FROM tickets t
FROM vn.invoiceOut io JOIN vn.sale s ON t.id = s.ticketFk
JOIN vn.supplier su ON su.id = io.companyFk JOIN vn.item i ON i.id = s.itemFk
JOIN vn.client c ON c.id = io.clientFk JOIN vn.intrastat ir ON ir.id = i.intrastatFk
LEFT JOIN vn.province p ON p.id = c.provinceFk )SELECT SUM(t.packages),
JOIN vn.ticket t ON t.refFk = io.ref a.incotermsFk,
JOIN vn.address a ON a.id = t.addressFk ic.name incotermsName,
JOIN vn.incoterms ic ON ic.code = a.incotermsFk MAX(t.weight) weight,
LEFT JOIN vn.customsAgent ca ON ca.id = a.customsAgentFk ca.fiscalName customsAgentName,
JOIN vn.sale s ON s.ticketFk = t.id ca.street customsAgentStreet,
JOIN ( ca.nif customsAgentNif,
SELECT SUM(volume) volume, COUNT(*) packages ca.phone customsAgentPhone,
FROM vn.invoiceOut io ca.email customsAgentEmail,
JOIN vn.ticket t ON t.refFk = io.ref CAST(v.volume AS DECIMAL (10,2)) volume,
JOIN vn.saleVolume sv ON sv.ticketFk = t.id i.intrastat
WHERE t.refFk = ? FROM tickets t
) vol JOIN vn.address a ON a.id = t.addressFk
JOIN vn.itemTaxCountry itc ON itc.countryFk = su.countryFk JOIN vn.incoterms ic ON ic.code = a.incotermsFk
AND itc.itemFk = s.itemFk LEFT JOIN vn.customsAgent ca ON ca.id = a.customsAgentFk
JOIN vn.taxClass tc ON tc.id = itc.taxClassFk JOIN volume v
JOIN vn.invoiceOutSerial ios ON ios.code = io.serial JOIN intrastat i
AND ios.taxAreaFk = 'WORLD'
JOIN vn.country cty ON cty.id = c.countryFk
JOIN vn.payMethod pm ON pm.id = c .payMethodFk
JOIN vn.company co ON co.id=io.companyFk
JOIN vn.supplierAccount sa ON sa.id=co.supplierAccountFk
JOIN (
SELECT GROUP_CONCAT(DISTINCT ir.description ORDER BY ir.description SEPARATOR '. ' ) intrastat
FROM vn.ticket t
JOIN vn.invoiceOut io ON io.ref = t.refFk
JOIN vn.sale s ON t.id = s.ticketFk
JOIN vn.item i ON i.id = s.itemFk
JOIN vn.intrastat ir ON ir.id = i.intrastatFk
WHERE t.refFk = ?
) intr
JOIN (
SELECT SUM(packages) packages
FROM ticket
WHERE refFk = ?
) pack
WHERE t.refFk = ?
LIMIT 1