Merge branch 'dev' into 7905-getBuysCsv
gitea/salix/pipeline/pr-dev This commit looks good
Details
gitea/salix/pipeline/pr-dev This commit looks good
Details
This commit is contained in:
commit
d0eab064b7
|
@ -2,51 +2,58 @@ DELIMITER $$
|
||||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_recalcPrices`()
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_recalcPrices`()
|
||||||
BEGIN
|
BEGIN
|
||||||
/**
|
/**
|
||||||
* Recalcula los precios para las compras insertadas en tmp.buyRecalc
|
* Recalcula los precios para las compras insertadas en tmp.buyRecalc.
|
||||||
*
|
*
|
||||||
* @param tmp.buyRecalc (id)
|
* @param tmp.buyRecalc (id)
|
||||||
*/
|
*/
|
||||||
DECLARE vLanded DATE;
|
DECLARE vLanded DATE;
|
||||||
DECLARE vWarehouseFk INT;
|
DECLARE vWarehouseFk INT;
|
||||||
DECLARE vHasNotPrice BOOL;
|
|
||||||
DECLARE vBuyingValue DECIMAL(10,4);
|
|
||||||
DECLARE vPackagingFk VARCHAR(10);
|
|
||||||
DECLARE vIsWarehouseFloramondo BOOL;
|
DECLARE vIsWarehouseFloramondo BOOL;
|
||||||
|
DECLARE vDone BOOL;
|
||||||
|
DECLARE vTravels CURSOR FOR
|
||||||
|
SELECT t.landed, t.warehouseInFk, (w.code = 'flm')
|
||||||
|
FROM tmp.buyRecalc br
|
||||||
|
JOIN buy b ON b.id = br.id
|
||||||
|
JOIN entry e ON e.id = b.entryFk
|
||||||
|
JOIN travel t ON t.id = e.travelFk
|
||||||
|
JOIN warehouse w ON w.id = t.warehouseInFk
|
||||||
|
GROUP BY t.landed, t.warehouseInFk;
|
||||||
|
|
||||||
SELECT t.landed, t.warehouseInFk, (w.`name` = 'Floramondo')
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||||
INTO vLanded, vWarehouseFk, vIsWarehouseFloramondo
|
|
||||||
FROM tmp.buyRecalc br
|
|
||||||
JOIN buy b ON b.id = br.id
|
|
||||||
JOIN entry e ON e.id = b.entryFk
|
|
||||||
JOIN travel t ON t.id = e.travelFk
|
|
||||||
JOIN warehouse w ON w.id = t.warehouseInFk
|
|
||||||
LIMIT 1;
|
|
||||||
|
|
||||||
CALL rate_getPrices(vLanded, vWarehouseFk);
|
OPEN vTravels;
|
||||||
|
l: LOOP
|
||||||
|
SET vDone = FALSE;
|
||||||
|
FETCH vTravels INTO vLanded, vWarehouseFk, vIsWarehouseFloramondo;
|
||||||
|
|
||||||
UPDATE buy b
|
IF vDone THEN
|
||||||
JOIN tmp.buyRecalc br ON br.id = b.id AND (@buyId := b.id)
|
LEAVE l;
|
||||||
LEFT JOIN packaging p ON p.id = b.packagingFk
|
END IF;
|
||||||
JOIN item i ON i.id = b.itemFk
|
|
||||||
JOIN entry e ON e.id = b.entryFk
|
|
||||||
JOIN itemType it ON it.id = i.typeFk
|
|
||||||
JOIN travel tr ON tr.id = e.travelFk
|
|
||||||
JOIN agencyMode am ON am.id = tr.agencyModeFk
|
|
||||||
JOIN tmp.rate r
|
|
||||||
JOIN volumeConfig vc
|
|
||||||
SET b.freightValue = @PF:= IFNULL(((am.m3 * @m3:= item_getVolume(b.itemFk, b.packagingFk) / 1000000)
|
|
||||||
/ b.packing) * IF(am.hasWeightVolumetric, GREATEST(b.weight / @m3 / vc.aerealVolumetricDensity, 1), 1), 0),
|
|
||||||
b.comissionValue = @CF:= ROUND(IFNULL(e.commission * b.buyingValue / 100, 0), 3),
|
|
||||||
b.packageValue = @EF:= IF(vIsWarehouseFloramondo, 0, IFNULL(ROUND(IF(p.isPackageReturnable, p.returnCost / b.packing , p.`value` / b.packing), 3),0)),
|
|
||||||
b.price3 = @t3:= IF(r.rate3 = 0, b.buyingValue,ROUND((b.buyingValue + @CF + @EF + @PF) / ((100 - r.rate3 - it.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0
|
|
||||||
b.price2 = @t2:= round(@t3 * (1 + ((r.rate2 - r.rate3)/100)),2),
|
|
||||||
b.price2 = @t2:= IF(@t2 <= @t3,@t3 , @t2);
|
|
||||||
|
|
||||||
SELECT (b.buyingValue = b.price2), b.buyingValue, b.packagingFk
|
CALL rate_getPrices(vLanded, vWarehouseFk);
|
||||||
INTO vHasNotPrice, vBuyingValue, vPackagingFk
|
|
||||||
FROM vn.buy b
|
|
||||||
WHERE b.id = @buyId AND b.buyingValue <> 0.01;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tmp.rate;
|
UPDATE buy b
|
||||||
|
JOIN tmp.buyRecalc br ON br.id = b.id AND (@buyId := b.id)
|
||||||
|
LEFT JOIN packaging p ON p.id = b.packagingFk
|
||||||
|
JOIN item i ON i.id = b.itemFk
|
||||||
|
JOIN entry e ON e.id = b.entryFk
|
||||||
|
JOIN itemType it ON it.id = i.typeFk
|
||||||
|
JOIN travel tr ON tr.id = e.travelFk
|
||||||
|
JOIN agencyMode am ON am.id = tr.agencyModeFk
|
||||||
|
JOIN tmp.rate r
|
||||||
|
JOIN volumeConfig vc
|
||||||
|
SET b.freightValue = @PF:= IFNULL(((am.m3 * @m3:= item_getVolume(b.itemFk, b.packagingFk) / 1000000)
|
||||||
|
/ b.packing) * IF(am.hasWeightVolumetric, GREATEST(b.weight / @m3 / vc.aerealVolumetricDensity, 1), 1), 0),
|
||||||
|
b.comissionValue = @CF:= ROUND(IFNULL(e.commission * b.buyingValue / 100, 0), 3),
|
||||||
|
b.packageValue = @EF:= IF(vIsWarehouseFloramondo, 0, IFNULL(ROUND(IF(p.isPackageReturnable, p.returnCost / b.packing , p.`value` / b.packing), 3),0)),
|
||||||
|
b.price3 = @t3:= IF(r.rate3 = 0, b.buyingValue,ROUND((b.buyingValue + @CF + @EF + @PF) / ((100 - r.rate3 - it.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0
|
||||||
|
b.price2 = @t2:= round(@t3 * (1 + ((r.rate2 - r.rate3)/100)),2),
|
||||||
|
b.price2 = @t2:= IF(@t2 <= @t3,@t3 , @t2)
|
||||||
|
WHERE tr.landed = vLanded
|
||||||
|
AND tr.warehouseInFk = vWarehouseFk;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tmp.rate;
|
||||||
|
END LOOP;
|
||||||
|
CLOSE vTravels;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -138,9 +138,9 @@ module.exports = Self => {
|
||||||
? {'ii.id': value}
|
? {'ii.id': value}
|
||||||
: {'s.name': {like: `%${value}%`}};
|
: {'s.name': {like: `%${value}%`}};
|
||||||
case 'from':
|
case 'from':
|
||||||
return {'ii.created': {gte: value}};
|
return {'ii.issued': {gte: value}};
|
||||||
case 'to':
|
case 'to':
|
||||||
return {'ii.created': {lte: value}};
|
return {'ii.issued': {lte: value}};
|
||||||
case 'fi':
|
case 'fi':
|
||||||
return {'s.nif': value};
|
return {'s.nif': value};
|
||||||
case 'account':
|
case 'account':
|
||||||
|
@ -173,7 +173,6 @@ module.exports = Self => {
|
||||||
const stmt = new ParameterizedSQL(
|
const stmt = new ParameterizedSQL(
|
||||||
`SELECT
|
`SELECT
|
||||||
ii.id,
|
ii.id,
|
||||||
ii.serialNumber,
|
|
||||||
ii.serial,
|
ii.serial,
|
||||||
ii.issued,
|
ii.issued,
|
||||||
ii.isBooked,
|
ii.isBooked,
|
||||||
|
|
|
@ -27,10 +27,12 @@ module.exports = Self => {
|
||||||
|
|
||||||
const [result] = await Self.rawSql(`
|
const [result] = await Self.rawSql(`
|
||||||
SELECT iit.*,
|
SELECT iit.*,
|
||||||
SUM(iidd.amount) totalDueDay
|
SUM(iidd.amount) totalDueDay,
|
||||||
|
SUM(iidd.foreignValue) totalDueDayForeignValue
|
||||||
FROM vn.invoiceIn ii
|
FROM vn.invoiceIn ii
|
||||||
LEFT JOIN (
|
LEFT JOIN (
|
||||||
SELECT SUM(iit.taxableBase) totalTaxableBase,
|
SELECT SUM(iit.taxableBase) totalTaxableBase,
|
||||||
|
SUM(iit.foreignValue) totalTaxableBaseForeignValue,
|
||||||
CAST(
|
CAST(
|
||||||
SUM(IFNULL(iit.taxableBase * (1 + (ti.PorcentajeIva / 100)), iit.taxableBase))
|
SUM(IFNULL(iit.taxableBase * (1 + (ti.PorcentajeIva / 100)), iit.taxableBase))
|
||||||
AS DECIMAL(10, 2)
|
AS DECIMAL(10, 2)
|
||||||
|
|
|
@ -47,29 +47,6 @@ describe('InvoiceIn filter()', () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return the invoice in matching the serial number', async() => {
|
|
||||||
const tx = await models.InvoiceIn.beginTransaction({});
|
|
||||||
const options = {transaction: tx};
|
|
||||||
|
|
||||||
try {
|
|
||||||
const ctx = {
|
|
||||||
args: {
|
|
||||||
serialNumber: '1002',
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const result = await models.InvoiceIn.filter(ctx, {}, options);
|
|
||||||
|
|
||||||
expect(result.length).toEqual(1);
|
|
||||||
expect(result[0].serialNumber).toEqual(1002);
|
|
||||||
|
|
||||||
await tx.rollback();
|
|
||||||
} catch (e) {
|
|
||||||
await tx.rollback();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return the invoice in matching the account', async() => {
|
it('should return the invoice in matching the account', async() => {
|
||||||
const tx = await models.InvoiceIn.beginTransaction({});
|
const tx = await models.InvoiceIn.beginTransaction({});
|
||||||
const options = {transaction: tx};
|
const options = {transaction: tx};
|
||||||
|
@ -158,7 +135,7 @@ describe('InvoiceIn filter()', () => {
|
||||||
|
|
||||||
const result = await models.InvoiceIn.filter(ctx, {}, options);
|
const result = await models.InvoiceIn.filter(ctx, {}, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(5);
|
expect(result.length).toEqual(6);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -13,7 +13,7 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
|
||||||
const failedtickets = [];
|
const failedtickets = [];
|
||||||
for (const ticket of tickets) {
|
for (const ticket of tickets) {
|
||||||
try {
|
try {
|
||||||
await Self.app.models.InvoiceOut.getSerial(ticket.clientFk, ticket.companyFk, ticket.addressFk, 'multiple');
|
await Self.app.models.InvoiceOut.getSerial(ticket.clientFk, ticket.companyFk, ticket.addressFk, 'quick');
|
||||||
await Self.rawSql(
|
await Self.rawSql(
|
||||||
`CALL vn.ticket_closeByTicket(?)`,
|
`CALL vn.ticket_closeByTicket(?)`,
|
||||||
[ticket.id],
|
[ticket.id],
|
||||||
|
|
Loading…
Reference in New Issue