fix: actulizada sql intrastat y se muestra solamente cuando toca
gitea/salix/pipeline/head There was a failure building this commit Details

This commit is contained in:
Vicent Llopis 2023-02-10 12:09:51 +01:00
parent d715f5ab7b
commit ac3faddac1
5 changed files with 72 additions and 27 deletions

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)
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">
<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.findValueFromDef(`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 != 'NATIONAL'
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` = ?
FROM (
SELECT i.intrastatFk code,
it.description,
CAST(SUM(ROUND((s.quantity * s.price * (100 - s.discount) / 100 ) , 2))AS DECIMAL(10, 2)) subtotal,
SUM(IFNULL(i.stems, 1) * s.quantity) 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 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
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 = ?
) sub
WHERE io.ref = ? AND ios.isCEE
ORDER BY sub.code;
) sub2
WHERE `description` IS NOT NULL;