5000-invoiceOut.global-invoicing #1322

Merged
carlosap merged 62 commits from 5000-invoiceOut.global-invoicing into dev 2023-03-14 10:00:40 +00:00
5 changed files with 72 additions and 27 deletions
Showing only changes of commit 4754dc7bda - Show all commits

View File

@ -0,0 +1,30 @@
DROP FUNCTION IF EXISTS `vn`.`invoiceOut_getWeight`;
DELIMITER $$
$$
CREATE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceOut_getWeight`(vInvoice VARCHAR(15)) RETURNS decimal(10,2)

esta variable cal deixar clar que no es vInvoice ni vSelf, sino vInvoiceRef

esta variable cal deixar clar que no es vInvoice ni vSelf, sino vInvoiceRef
READS SQL DATA
BEGIN
/**
* Calcula el peso de una factura emitida
*
* @param vInvoice Id de la factura
* @return vTotalWeight peso de la factura
*/
DECLARE vTotalWeight DECIMAL(10,2);
SELECT SUM(CAST(IFNULL(i.stems, 1)
* s.quantity
* IF(ic.grams, ic.grams, IFNULL(i.weightByPiece, 0)) / 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 ;

View File

@ -203,7 +203,7 @@
</div>
</div>
</div>
<div class="size100 no-page-break" v-if="intrastat.length > 0">
<div class="size100 no-page-break" v-if="hasIntrastat.taxAreaFk != 'NATIONAL'">
<h2>{{$t('intrastat')}}</h2>
<table class="column-oriented">
<thead>

View File

@ -10,7 +10,8 @@ module.exports = {
this.checkMainEntity(this.invoice);
this.client = await this.findOneFromDef('client', [this.reference]);
this.taxes = await this.rawSqlFromDef(`taxes`, [this.reference]);
this.intrastat = await this.rawSqlFromDef(`intrastat`, [this.reference, this.reference, this.reference]);
[this.hasIntrastat] = await this.rawSqlFromDef(`hasIntrastat`, [this.reference]);
this.intrastat = await this.rawSqlFromDef(`intrastat`, [this.reference, this.reference, this.reference, this.reference]);
this.rectified = await this.rawSqlFromDef(`rectified`, [this.reference]);
this.hasIncoterms = await this.findValueFromDef(`hasIncoterms`, [this.reference]);

View File

@ -0,0 +1,4 @@
SELECT taxAreaFk
FROM vn.invoiceOutSerial ios
JOIN vn.invoiceOut io ON io.serial = ios.code
WHERE io.ref = ?;

View File

@ -1,26 +1,36 @@
SELECT *
FROM invoiceOut io
JOIN invoiceOutSerial ios ON io.serial = ios.code
JOIN(
SELECT ir.id code,
ir.description,
iii.stems,
iii.net netKg,
iii.amount subtotal
FROM vn.invoiceInIntrastat iii
LEFT JOIN vn.invoiceIn ii ON ii.id = iii.invoiceInFk
LEFT JOIN vn.invoiceOut io ON io.ref = ii.supplierRef
LEFT JOIN vn.intrastat ir ON ir.id = iii.intrastatFk
WHERE io.`ref` = ?
UNION ALL
SELECT NULL code,
'Servicios' description,
0 stems,
0 netKg,
IF(CAST(SUM((ts.quantity * ts.price)) AS DECIMAL(10,2)), CAST(SUM((ts.quantity * ts.price)) AS DECIMAL(10,2)), 0) subtotal
FROM vn.ticketService ts
JOIN vn.ticket t ON ts.ticketFk = t.id
WHERE t.refFk = ?
) sub
WHERE io.ref = ? AND ios.isCEE
ORDER BY sub.code;
FROM (
SELECT i.intrastatFk code,
it.description,
SUM(CAST((s.quantity * s.price * (100 - s.discount) / 100 ) AS DECIMAL(10, 2))) subtotal,
SUM(CAST(IFNULL(i.stems, 1) * s.quantity AS DECIMAL(10, 2))) stems,
CAST(SUM(IFNULL(i.stems, 1)
* s.quantity
* IF(ic.grams, ic.grams, IFNULL(i.weightByPiece, 0)) / 1000)
* IF(sub.totalWeight, sub.totalWeight / vn.invoiceOut_getWeight(?), 1)
AS DECIMAL(10,2)) netKg
FROM sale s
JOIN ticket t ON s.ticketFk = t.id
JOIN supplier su ON su.id = t.companyFk
JOIN item i ON i.id = s.itemFk
JOIN intrastat it ON it.id = i.intrastatFk
LEFT JOIN itemCost ic ON ic.itemFk = i.id AND ic.warehouseFk = t.warehouseFk
LEFT JOIN (
SELECT SUM(weight)totalWeight
FROM vn.ticket
WHERE refFk = ?
AND weight
) sub ON TRUE
WHERE t.refFk =?
GROUP BY i.intrastatFk
UNION ALL
SELECT NULL ,
IF((SUM((ts.quantity * ts.price))), 'Servicios', NULL),
IFNULL(CAST(SUM((ts.quantity * ts.price)) AS DECIMAL(10,2)), 0),
0 ,
0
FROM vn.ticketService ts
JOIN vn.ticket t ON ts.ticketFk = t.id
WHERE t.refFk = ?
) sub2
WHERE `description` IS NOT NULL;