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>
</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> <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.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.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 != 'NATIONAL'
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, CAST(SUM(ROUND((s.quantity * s.price * (100 - s.discount) / 100 ) , 2))AS DECIMAL(10, 2)) subtotal,
ir.description, SUM(IFNULL(i.stems, 1) * s.quantity) 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;