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>
</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> <h2>{{$t('intrastat')}}</h2>
<table class="column-oriented"> <table class="column-oriented">
<thead> <thead>

View File

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