Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 4091-dms_clean
This commit is contained in:
commit
fc6e51e91f
|
@ -37102,6 +37102,7 @@ CREATE TABLE `ticket` (
|
|||
`zoneBonus` decimal(10,2) DEFAULT NULL,
|
||||
`totalWithVat` decimal(10,2) DEFAULT NULL COMMENT 'cache calculada del total con iva',
|
||||
`totalWithoutVat` decimal(10,2) DEFAULT NULL COMMENT 'cache calculada del total sin iva',
|
||||
`weight` decimal(10,2) DEFAULT NULL COMMENT 'En caso de informar, se utilizará su valor para calcular el peso de la factura',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `Id_Cliente` (`clientFk`),
|
||||
KEY `Id_Consigna` (`addressFk`),
|
||||
|
@ -37124,7 +37125,7 @@ CREATE TABLE `ticket` (
|
|||
CONSTRAINT `ticket_ibfk_9` FOREIGN KEY (`routeFk`) REFERENCES `route` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
|
||||
CONSTRAINT `tickets_fk11` FOREIGN KEY (`collectionFk__`) REFERENCES `collection` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
|
||||
CONSTRAINT `tickets_zone_fk` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON UPDATE CASCADE
|
||||
) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3750016 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||
|
@ -43264,6 +43265,40 @@ DELIMITER ;
|
|||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
|
||||
/*!50003 DROP FUNCTION IF EXISTS `invoiceOutAmount` */;
|
||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||
DELIMITER ;;
|
||||
CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceOut_getWeight`(vInvoice VARCHAR(15)) RETURNS decimal(10,2)
|
||||
READS SQL DATA
|
||||
BEGIN
|
||||
DECLARE vTotalWeight DECIMAL(10,2);
|
||||
|
||||
SELECT SUM(CAST(IFNULL(i.stems, 1) * s.quantity *
|
||||
IF(ic.grams, ic.grams, i.density * ic.cm3delivery / 1000)
|
||||
/ 1000 AS DECIMAL(10,2)))
|
||||
INTO vTotalWeight
|
||||
FROM ticket t
|
||||
JOIN sale s ON s.ticketFk = t.id
|
||||
JOIN item i ON i.id = s.itemFk
|
||||
JOIN itemCost ic ON ic.itemFk = i.id
|
||||
AND ic.warehouseFk = t.warehouseFk
|
||||
WHERE t.refFk = vInvoice
|
||||
AND i.intrastatFk ;
|
||||
|
||||
RETURN vTotalWeight;
|
||||
END ;;
|
||||
DELIMITER ;
|
||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
|
||||
/*!50003 DROP FUNCTION IF EXISTS `invoiceOut_getPath` */;
|
||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||
|
|
|
@ -61,7 +61,7 @@ module.exports = Self => {
|
|||
responseType: 'stream',
|
||||
params: {
|
||||
authorization: auth.id,
|
||||
invoiceId: id
|
||||
refFk: invoiceOut.ref
|
||||
}
|
||||
}).then(async response => {
|
||||
const issued = invoiceOut.issued;
|
||||
|
|
|
@ -84,7 +84,7 @@ class Controller extends Section {
|
|||
showCsvInvoice() {
|
||||
this.vnReport.showCsv('invoice', {
|
||||
recipientId: this.invoiceOut.client.id,
|
||||
invoiceId: this.id
|
||||
refFk: this.invoiceOut.ref
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -95,7 +95,7 @@ class Controller extends Section {
|
|||
return this.vnEmail.send('invoice', {
|
||||
recipientId: this.invoiceOut.client.id,
|
||||
recipient: $data.email,
|
||||
invoiceId: this.id
|
||||
refFk: this.invoiceOut.ref
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -106,14 +106,14 @@ class Controller extends Section {
|
|||
return this.vnEmail.sendCsv('invoice', {
|
||||
recipientId: this.invoiceOut.client.id,
|
||||
recipient: $data.email,
|
||||
invoiceId: this.id
|
||||
refFk: this.invoiceOut.ref
|
||||
});
|
||||
}
|
||||
|
||||
showExportationLetter() {
|
||||
this.vnReport.show('exportation', {
|
||||
recipientId: this.invoiceOut.client.id,
|
||||
invoiceId: this.id
|
||||
refFk: this.invoiceOut.ref
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,8 @@ describe('vnInvoiceOutDescriptorMenu', () => {
|
|||
let $httpParamSerializer;
|
||||
const invoiceOut = {
|
||||
id: 1,
|
||||
client: {id: 1101}
|
||||
client: {id: 1101},
|
||||
ref: 'T1111111'
|
||||
};
|
||||
|
||||
beforeEach(ngModule('invoiceOut'));
|
||||
|
@ -40,8 +41,8 @@ describe('vnInvoiceOutDescriptorMenu', () => {
|
|||
jest.spyOn(window, 'open').mockReturnThis();
|
||||
|
||||
const expectedParams = {
|
||||
invoiceId: invoiceOut.id,
|
||||
recipientId: invoiceOut.client.id
|
||||
recipientId: invoiceOut.client.id,
|
||||
refFk: invoiceOut.ref
|
||||
};
|
||||
const serializedParams = $httpParamSerializer(expectedParams);
|
||||
const expectedPath = `api/csv/invoice/download?${serializedParams}`;
|
||||
|
@ -84,9 +85,9 @@ describe('vnInvoiceOutDescriptorMenu', () => {
|
|||
|
||||
const $data = {email: 'brucebanner@gothamcity.com'};
|
||||
const expectedParams = {
|
||||
invoiceId: invoiceOut.id,
|
||||
recipient: $data.email,
|
||||
recipientId: invoiceOut.client.id
|
||||
recipientId: invoiceOut.client.id,
|
||||
refFk: invoiceOut.ref
|
||||
};
|
||||
const serializedParams = $httpParamSerializer(expectedParams);
|
||||
|
||||
|
@ -104,9 +105,9 @@ describe('vnInvoiceOutDescriptorMenu', () => {
|
|||
|
||||
const $data = {email: 'brucebanner@gothamcity.com'};
|
||||
const expectedParams = {
|
||||
invoiceId: invoiceOut.id,
|
||||
recipient: $data.email,
|
||||
recipientId: invoiceOut.client.id
|
||||
recipientId: invoiceOut.client.id,
|
||||
refFk: invoiceOut.ref
|
||||
};
|
||||
const serializedParams = $httpParamSerializer(expectedParams);
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ module.exports = {
|
|||
|
||||
if (invoiceOut) {
|
||||
const args = Object.assign({
|
||||
invoiceId: invoiceOut.id,
|
||||
refFk: invoiceOut.ref,
|
||||
recipientId: ticket.clientFk,
|
||||
recipient: ticket.recipient,
|
||||
replyTo: ticket.salesPersonEmail
|
||||
|
@ -118,7 +118,7 @@ module.exports = {
|
|||
|
||||
await db.rawSql(`
|
||||
INSERT INTO clientSample (clientFk, typeFk, companyFk) VALUES(?, ?, ?)
|
||||
`, [ticket.clientFk, sample.id, ticket.companyFk])
|
||||
`, [ticket.clientFk, sample.id, ticket.companyFk]);
|
||||
}
|
||||
} catch (error) {
|
||||
// Domain not found
|
||||
|
|
|
@ -7,13 +7,13 @@ const sqlPath = path.join(__dirname, 'sql');
|
|||
module.exports = async function(request, response, next) {
|
||||
try {
|
||||
const reqArgs = request.query;
|
||||
if (!reqArgs.invoiceId)
|
||||
throw new Error('The argument invoiceId is required');
|
||||
if (!reqArgs.refFk)
|
||||
throw new Error('The argument refFk is required');
|
||||
|
||||
const invoiceId = reqArgs.invoiceId;
|
||||
const sales = await db.rawSqlFromDef(`${sqlPath}/sales`, [invoiceId]);
|
||||
const refFk = reqArgs.refFk;
|
||||
const sales = await db.rawSqlFromDef(`${sqlPath}/sales`, [refFk]);
|
||||
const content = toCSV(sales);
|
||||
const fileName = `invoice_${invoiceId}.csv`;
|
||||
const fileName = `invoice_${refFk}.csv`;
|
||||
|
||||
response.setHeader('Content-type', 'text/csv');
|
||||
response.setHeader('Content-Disposition', `inline; filename="${fileName}"`);
|
||||
|
|
|
@ -8,22 +8,22 @@ const sqlPath = path.join(__dirname, 'sql');
|
|||
module.exports = async function(request, response, next) {
|
||||
try {
|
||||
const reqArgs = request.query;
|
||||
if (!reqArgs.invoiceId)
|
||||
throw new Error('The argument invoiceId is required');
|
||||
if (!reqArgs.refFk)
|
||||
throw new Error('The argument refFk is required');
|
||||
|
||||
const invoiceId = reqArgs.invoiceId;
|
||||
const invoice = await db.findOneFromDef(`${sqlPath}/invoice`, [invoiceId]);
|
||||
const sales = await db.rawSqlFromDef(`${sqlPath}/sales`, [invoiceId]);
|
||||
const refFk = reqArgs.refFk;
|
||||
const invoice = await db.findOneFromDef(`${sqlPath}/invoice`, [refFk]);
|
||||
const sales = await db.rawSqlFromDef(`${sqlPath}/sales`, [refFk]);
|
||||
|
||||
const args = Object.assign({
|
||||
invoiceId: (String(invoice.id)),
|
||||
refFk: invoice.refFk,
|
||||
recipientId: invoice.clientFk,
|
||||
recipient: invoice.recipient,
|
||||
replyTo: invoice.salesPersonEmail
|
||||
}, response.locals);
|
||||
|
||||
const content = toCSV(sales);
|
||||
const fileName = `invoice_${invoiceId}.csv`;
|
||||
const fileName = `invoice_${refFk}.csv`;
|
||||
const email = new Email('invoice', args);
|
||||
await email.send({
|
||||
overrideAttachments: true,
|
||||
|
|
|
@ -6,4 +6,5 @@ SELECT
|
|||
FROM invoiceOut io
|
||||
JOIN client c ON c.id = io.clientFk
|
||||
LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk
|
||||
WHERE io.id = ?
|
||||
LEFT JOIN ticket t ON t.refFk = io.ref
|
||||
WHERE t.refFk = ?
|
|
@ -31,5 +31,5 @@ FROM sale s
|
|||
AND itc.countryFk = s2.countryFk
|
||||
JOIN taxClass tc ON tc.id = itc.taxClassFk
|
||||
JOIN invoiceOut io ON io.ref = t.refFk
|
||||
WHERE io.id = ?
|
||||
WHERE t.refFk = ?
|
||||
ORDER BY s.ticketFk, s.created
|
|
@ -38,7 +38,7 @@ module.exports = async function(request, response, next) {
|
|||
connection.query('START TRANSACTION');
|
||||
|
||||
const args = Object.assign({
|
||||
invoiceId: invoiceOut.id,
|
||||
refFk: invoiceOut.ref,
|
||||
recipientId: invoiceOut.clientFk,
|
||||
recipient: invoiceOut.recipient,
|
||||
replyTo: invoiceOut.salesPersonEmail
|
||||
|
|
|
@ -5,11 +5,11 @@ const emailFooter = new Component('email-footer');
|
|||
module.exports = {
|
||||
name: 'invoice',
|
||||
async serverPrefetch() {
|
||||
this.invoice = await this.fetchInvoice(this.invoiceId);
|
||||
this.invoice = await this.fetchInvoice(this.refFk);
|
||||
},
|
||||
methods: {
|
||||
fetchInvoice(invoiceId) {
|
||||
return this.findOneFromDef('invoice', [invoiceId]);
|
||||
fetchInvoice(refFk) {
|
||||
return this.findOneFromDef('invoice', [refFk]);
|
||||
},
|
||||
},
|
||||
components: {
|
||||
|
@ -17,7 +17,7 @@ module.exports = {
|
|||
'email-footer': emailFooter.build()
|
||||
},
|
||||
props: {
|
||||
invoiceId: {
|
||||
refFk: {
|
||||
type: [Number, String],
|
||||
required: true
|
||||
}
|
||||
|
|
|
@ -4,4 +4,4 @@ SELECT
|
|||
FROM invoiceOut io
|
||||
JOIN ticket t ON t.refFk = io.ref
|
||||
JOIN client c ON c.id = io.clientFk
|
||||
WHERE io.id = ?
|
||||
WHERE t.refFk = ?
|
|
@ -5,14 +5,14 @@ const reportFooter = new Component('report-footer');
|
|||
module.exports = {
|
||||
name: 'exportation',
|
||||
async serverPrefetch() {
|
||||
this.invoice = await this.fetchInvoice(this.invoiceId);
|
||||
this.invoice = await this.fetchInvoice(this.refFk);
|
||||
|
||||
if (!this.invoice)
|
||||
throw new Error('Something went wrong');
|
||||
},
|
||||
methods: {
|
||||
fetchInvoice(invoiceId) {
|
||||
return this.findOneFromDef('invoice', [invoiceId]);
|
||||
fetchInvoice(refFk) {
|
||||
return this.findOneFromDef('invoice', [refFk]);
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
@ -27,7 +27,7 @@ module.exports = {
|
|||
'report-footer': reportFooter.build()
|
||||
},
|
||||
props: {
|
||||
invoiceId: {
|
||||
refFk: {
|
||||
type: [Number, String],
|
||||
required: true
|
||||
}
|
||||
|
|
|
@ -3,4 +3,5 @@ SELECT
|
|||
io.ref,
|
||||
io.issued
|
||||
FROM invoiceOut io
|
||||
WHERE io.id = ?
|
||||
LEFT JOIN ticket t ON t.refFk = io.ref
|
||||
WHERE t.refFk = ?
|
|
@ -5,9 +5,9 @@ const reportFooter = new Component('report-footer');
|
|||
module.exports = {
|
||||
name: 'invoice-incoterms',
|
||||
async serverPrefetch() {
|
||||
this.invoice = await this.fetchInvoice(this.invoiceId);
|
||||
this.client = await this.fetchClient(this.invoiceId);
|
||||
this.incoterms = await this.fetchIncoterms(this.invoiceId);
|
||||
this.invoice = await this.fetchInvoice(this.refFk);
|
||||
this.client = await this.fetchClient(this.refFk);
|
||||
this.incoterms = await this.fetchIncoterms(this.refFk);
|
||||
|
||||
if (!this.invoice)
|
||||
throw new Error('Something went wrong');
|
||||
|
@ -16,14 +16,14 @@ module.exports = {
|
|||
|
||||
},
|
||||
methods: {
|
||||
fetchInvoice(invoiceId) {
|
||||
return this.findOneFromDef('invoice', [invoiceId]);
|
||||
fetchInvoice(refFk) {
|
||||
return this.findOneFromDef('invoice', [refFk]);
|
||||
},
|
||||
fetchClient(invoiceId) {
|
||||
return this.findOneFromDef('client', [invoiceId]);
|
||||
fetchClient(refFk) {
|
||||
return this.findOneFromDef('client', [refFk]);
|
||||
},
|
||||
fetchIncoterms(invoiceId) {
|
||||
return this.findOneFromDef('incoterms', [invoiceId, invoiceId, invoiceId]);
|
||||
fetchIncoterms(refFk) {
|
||||
return this.findOneFromDef('incoterms', [refFk, refFk, refFk]);
|
||||
}
|
||||
},
|
||||
components: {
|
||||
|
@ -31,7 +31,7 @@ module.exports = {
|
|||
'report-footer': reportFooter.build()
|
||||
},
|
||||
props: {
|
||||
invoiceId: {
|
||||
refFk: {
|
||||
type: [Number, String],
|
||||
required: true
|
||||
}
|
||||
|
|
|
@ -9,4 +9,5 @@ FROM vn.invoiceOut io
|
|||
JOIN vn.country cty ON cty.id = c.countryFk
|
||||
LEFT JOIN vn.invoiceOutSerial ios ON ios.code = io.serial
|
||||
AND ios.taxAreaFk = 'CEE'
|
||||
WHERE io.id = ?
|
||||
LEFT JOIN ticket t ON t.refFk = io.ref
|
||||
WHERE t.refFk = ?
|
|
@ -51,7 +51,7 @@ SELECT io.issued,
|
|||
FROM vn.invoiceOut io
|
||||
JOIN vn.ticket t ON t.refFk = io.ref
|
||||
JOIN vn.saleVolume sv ON sv.ticketFk = t.id
|
||||
WHERE io.id = ?
|
||||
WHERE t.refFk = ?
|
||||
) sub2 ON TRUE
|
||||
JOIN vn.itemTaxCountry itc ON itc.countryFk = su.countryFk AND itc.itemFk = s.itemFk
|
||||
JOIN vn.taxClass tc ON tc.id = itc.taxClassFk
|
||||
|
@ -66,6 +66,7 @@ SELECT io.issued,
|
|||
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 io.id = ?
|
||||
WHERE t.refFk = ?
|
||||
)sub3 ON TRUE
|
||||
WHERE io.id = ?
|
||||
WHERE t.refFk = ?
|
||||
|
||||
|
|
|
@ -14,4 +14,5 @@ FROM invoiceOut io
|
|||
JOIN company cny ON cny.id = io.companyFk
|
||||
JOIN supplierAccount sa ON sa.id = cny.supplierAccountFk
|
||||
LEFT JOIN invoiceOutSerial ios ON ios.code = io.serial
|
||||
WHERE io.id = ?
|
||||
LEFT JOIN ticket t ON t.refFk = io.ref
|
||||
WHERE t.refFk = ?
|
|
@ -7,15 +7,15 @@ const invoiceIncoterms = new Report('invoice-incoterms');
|
|||
module.exports = {
|
||||
name: 'invoice',
|
||||
async serverPrefetch() {
|
||||
this.invoice = await this.fetchInvoice(this.invoiceId);
|
||||
this.client = await this.fetchClient(this.invoiceId);
|
||||
this.taxes = await this.fetchTaxes(this.invoiceId);
|
||||
this.intrastat = await this.fetchIntrastat(this.invoiceId);
|
||||
this.rectified = await this.fetchRectified(this.invoiceId);
|
||||
this.hasIncoterms = await this.fetchHasIncoterms(this.invoiceId);
|
||||
this.invoice = await this.fetchInvoice(this.refFk);
|
||||
this.client = await this.fetchClient(this.refFk);
|
||||
this.taxes = await this.fetchTaxes(this.refFk);
|
||||
this.intrastat = await this.fetchIntrastat(this.refFk);
|
||||
this.rectified = await this.fetchRectified(this.refFk);
|
||||
this.hasIncoterms = await this.fetchHasIncoterms(this.refFk);
|
||||
|
||||
const tickets = await this.fetchTickets(this.invoiceId);
|
||||
const sales = await this.fetchSales(this.invoiceId);
|
||||
const tickets = await this.fetchTickets(this.refFk);
|
||||
const sales = await this.fetchSales(this.refFk);
|
||||
|
||||
const map = new Map();
|
||||
|
||||
|
@ -65,29 +65,29 @@ module.exports = {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
fetchInvoice(invoiceId) {
|
||||
return this.findOneFromDef('invoice', [invoiceId]);
|
||||
fetchInvoice(refFk) {
|
||||
return this.findOneFromDef('invoice', [refFk]);
|
||||
},
|
||||
fetchClient(invoiceId) {
|
||||
return this.findOneFromDef('client', [invoiceId]);
|
||||
fetchClient(refFk) {
|
||||
return this.findOneFromDef('client', [refFk]);
|
||||
},
|
||||
fetchTickets(invoiceId) {
|
||||
return this.rawSqlFromDef('tickets', [invoiceId]);
|
||||
fetchTickets(refFk) {
|
||||
return this.rawSqlFromDef('tickets', [refFk]);
|
||||
},
|
||||
fetchSales(invoiceId) {
|
||||
return this.rawSqlFromDef('sales', [invoiceId, invoiceId]);
|
||||
fetchSales(refFk) {
|
||||
return this.rawSqlFromDef('sales', [refFk, refFk]);
|
||||
},
|
||||
fetchTaxes(invoiceId) {
|
||||
return this.rawSqlFromDef(`taxes`, [invoiceId]);
|
||||
fetchTaxes(refFk) {
|
||||
return this.rawSqlFromDef(`taxes`, [refFk]);
|
||||
},
|
||||
fetchIntrastat(invoiceId) {
|
||||
return this.rawSqlFromDef(`intrastat`, [invoiceId]);
|
||||
fetchIntrastat(refFk) {
|
||||
return this.rawSqlFromDef(`intrastat`, [refFk, refFk, refFk]);
|
||||
},
|
||||
fetchRectified(invoiceId) {
|
||||
return this.rawSqlFromDef(`rectified`, [invoiceId]);
|
||||
fetchRectified(refFk) {
|
||||
return this.rawSqlFromDef(`rectified`, [refFk]);
|
||||
},
|
||||
fetchHasIncoterms(invoiceId) {
|
||||
return this.findValueFromDef(`hasIncoterms`, [invoiceId]);
|
||||
fetchHasIncoterms(refFk) {
|
||||
return this.findValueFromDef(`hasIncoterms`, [refFk]);
|
||||
},
|
||||
saleImport(sale) {
|
||||
const price = sale.quantity * sale.price;
|
||||
|
@ -115,9 +115,8 @@ module.exports = {
|
|||
'invoice-incoterms': invoiceIncoterms.build()
|
||||
},
|
||||
props: {
|
||||
invoiceId: {
|
||||
type: [Number, String],
|
||||
required: true
|
||||
refFk: {
|
||||
type: String
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -9,4 +9,5 @@ FROM vn.invoiceOut io
|
|||
JOIN vn.country cty ON cty.id = c.countryFk
|
||||
LEFT JOIN vn.invoiceOutSerial ios ON ios.code = io.serial
|
||||
AND ios.taxAreaFk = 'CEE'
|
||||
WHERE io.id = ?
|
||||
LEFT JOIN vn.ticket t ON t.refFk = io.ref
|
||||
WHERE t.refFk = ?
|
|
@ -3,6 +3,6 @@ SELECT IF(incotermsFk IS NULL, FALSE, TRUE) AS hasIncoterms
|
|||
JOIN invoiceOut io ON io.ref = t.refFk
|
||||
JOIN client c ON c.id = t.clientFk
|
||||
JOIN address a ON a.id = t.addressFk
|
||||
WHERE io.id = ?
|
||||
WHERE t.refFk = ?
|
||||
AND IF(c.hasToinvoiceByAddress = FALSE, c.defaultAddressFk, TRUE)
|
||||
LIMIT 1
|
|
@ -1,18 +1,22 @@
|
|||
SELECT
|
||||
ir.id AS code,
|
||||
ir.description AS description,
|
||||
CAST(SUM(IFNULL(i.stems,1) * s.quantity) AS DECIMAL(10,2)) as stems,
|
||||
CAST(SUM(IF(sv.physicalWeight, sv.physicalWeight, i.density * sub.cm3delivery/1000000)) AS DECIMAL(10,2)) netKg,
|
||||
CAST(SUM((s.quantity * s.price * (100 - s.discount) / 100 )) AS DECIMAL(10,2)) AS subtotal
|
||||
FROM vn.sale s
|
||||
LEFT JOIN (SELECT ic.itemFk, ic.cm3, ic.cm3delivery
|
||||
FROM vn.itemCost ic
|
||||
WHERE ic.cm3
|
||||
GROUP BY ic.itemFk) sub ON s.itemFk = sub.itemFk
|
||||
LEFT JOIN vn.saleVolume sv ON sv.saleFk = s.id
|
||||
LEFT JOIN vn.ticket t ON t.id = s.ticketFk
|
||||
LEFT JOIN vn.invoiceOut io ON io.ref = t.refFk
|
||||
LEFT JOIN vn.item i ON i.id = s.itemFk
|
||||
ir.id code,
|
||||
ir.description description,
|
||||
CAST(SUM(IFNULL(i.stems, 1) * s.quantity) AS DECIMAL(10,2)) stems,
|
||||
CAST(SUM(CAST(IFNULL(i.stems, 1) * s.quantity * IF(ic.grams, ic.grams, i.density * ic.cm3delivery / 1000) / 1000 AS DECIMAL(10,2)) *
|
||||
IF(sub.weight, sub.weight / vn.invoiceOut_getWeight(?), 1)) AS DECIMAL(10,2)) netKg,
|
||||
CAST(SUM((s.quantity * s.price * (100 - s.discount) / 100 )) AS DECIMAL(10,2)) subtotal
|
||||
FROM vn.ticket t
|
||||
JOIN vn.sale s ON s.ticketFk = t.id
|
||||
JOIN vn.item i ON i.id = s.itemFk
|
||||
JOIN vn.itemCost ic ON ic.itemFk = i.id AND ic.warehouseFk = t.warehouseFk
|
||||
JOIN vn.intrastat ir ON ir.id = i.intrastatFk
|
||||
WHERE io.id = ?
|
||||
GROUP BY i.intrastatFk;
|
||||
LEFT JOIN (
|
||||
SELECT t2.weight
|
||||
FROM vn.ticket t2
|
||||
WHERE refFk = ? AND weight
|
||||
LIMIT 1
|
||||
) sub ON TRUE
|
||||
WHERE t.refFk = ?
|
||||
AND i.intrastatFk
|
||||
GROUP BY i.intrastatFk
|
||||
ORDER BY i.intrastatFk;
|
|
@ -13,4 +13,5 @@ FROM invoiceOut io
|
|||
JOIN company cny ON cny.id = io.companyFk
|
||||
JOIN supplierAccount sa ON sa.id = cny.supplierAccountFk
|
||||
LEFT JOIN invoiceOutSerial ios ON ios.code = io.serial
|
||||
WHERE io.id = ?
|
||||
LEFT JOIN ticket t ON t.refFk = io.ref
|
||||
WHERE t.refFk = ?
|
|
@ -6,4 +6,5 @@ SELECT
|
|||
FROM vn.invoiceCorrection ic
|
||||
JOIN vn.invoiceOut io ON io.id = ic.correctedFk
|
||||
JOIN vn.invoiceCorrectionType ict ON ict.id = ic.invoiceCorrectionTypeFk
|
||||
where ic.correctingFk = ?
|
||||
LEFT JOIN ticket t ON t.refFk = io.ref
|
||||
WHERE t.refFk = ?
|
|
@ -37,7 +37,7 @@ SELECT
|
|||
JOIN vn.itemTaxCountry itc ON itc.countryFk = su.countryFk
|
||||
AND itc.itemFk = s.itemFk
|
||||
JOIN vn.taxClass tc ON tc.id = itc.taxClassFk
|
||||
WHERE io.id = ?
|
||||
WHERE t.refFk = ?
|
||||
UNION ALL
|
||||
SELECT
|
||||
io.ref,
|
||||
|
@ -69,4 +69,4 @@ SELECT
|
|||
JOIN vn.company co ON co.id = io.companyFk
|
||||
JOIN vn.supplierAccount sa ON sa.id = co.supplierAccountFk
|
||||
JOIN vn.taxClass tc ON tc.id = ts.taxClassFk
|
||||
WHERE io.id = ?
|
||||
WHERE t.refFk = ?
|
|
@ -7,5 +7,6 @@ SELECT
|
|||
JOIN pgc ON pgc.code = iot.pgcFk
|
||||
LEFT JOIN pgcEqu pe ON pe.equFk = pgc.code
|
||||
JOIN invoiceOut io ON io.id = iot.invoiceOutFk
|
||||
WHERE invoiceOutFk = ?
|
||||
LEFT JOIN ticket t ON t.refFk = io.ref
|
||||
WHERE t.refFk = ?
|
||||
ORDER BY iot.id
|
|
@ -4,5 +4,5 @@ SELECT
|
|||
t.nickname
|
||||
FROM invoiceOut io
|
||||
JOIN ticket t ON t.refFk = io.ref
|
||||
WHERE io.id = ?
|
||||
WHERE t.refFk = ?
|
||||
ORDER BY t.shipped
|
Loading…
Reference in New Issue