refs #5914 refactor: getTaxBases
gitea/salix/pipeline/head There was a failure building this commit Details

This commit is contained in:
Alex Moreno 2024-01-03 12:19:28 +01:00
parent 121caee93a
commit ba26237998
6 changed files with 41 additions and 10 deletions

View File

@ -2,8 +2,8 @@ DELIMITER $$
$$ $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`getTaxBases`() CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`getTaxBases`()
BEGIN BEGIN
/**
/* Calcula y devuelve en número de bases imponibles postivas y negativas * Calcula y devuelve en número de bases imponibles postivas y negativas
* Requiere la tabla temporal tmp.ticketToInvoice(id) * Requiere la tabla temporal tmp.ticketToInvoice(id)
* *
* returns tmp.taxBases * returns tmp.taxBases
@ -21,10 +21,10 @@ BEGIN
CREATE TEMPORARY TABLE tmp.taxBases CREATE TEMPORARY TABLE tmp.taxBases
ENGINE = MEMORY ENGINE = MEMORY
SELECT SELECT
SUM(CASE WHEN taxableBase > 0 THEN 1 ELSE 0 END) as positive, SUM(taxableBase > 0) as positive,
SUM(CASE WHEN taxableBase < 0 THEN 1 ELSE 0 END) as negative SUM(taxableBase < 0) as negative
FROM( FROM(
SELECT SUM(taxableBase) as taxableBase SELECT SUM(taxableBase) taxableBase
FROM tmp.ticketTax FROM tmp.ticketTax
GROUP BY pgcFk GROUP BY pgcFk
) t; ) t;

View File

@ -4,7 +4,8 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`hasAnyPositiveBase`(
DETERMINISTIC DETERMINISTIC
BEGIN BEGIN
/* Calcula si existe alguna base imponible positiva /**
* Calcula si existe alguna base imponible positiva
* Requiere la tabla temporal tmp.ticketToInvoice(id) para getTaxBases() * Requiere la tabla temporal tmp.ticketToInvoice(id) para getTaxBases()
* *
* returns BOOLEAN * returns BOOLEAN
@ -15,7 +16,8 @@ BEGIN
CALL getTaxBases(); CALL getTaxBases();
SELECT positive INTO hasAnyPositiveBase SELECT positive INTO hasAnyPositiveBase
FROM tmp.taxBases; FROM tmp.taxBases
LIMIT 1;
DROP TEMPORARY TABLE DROP TEMPORARY TABLE
tmp.ticketTax, tmp.ticketTax,

View File

@ -4,7 +4,8 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`hasAnyNegativeBase`(
DETERMINISTIC DETERMINISTIC
BEGIN BEGIN
/* Calcula si existe alguna base imponible negativa /**
* Calcula si existe alguna base imponible negativa
* Requiere la tabla temporal tmp.ticketToInvoice(id) para getTaxBases() * Requiere la tabla temporal tmp.ticketToInvoice(id) para getTaxBases()
* *
* returns BOOLEAN * returns BOOLEAN
@ -15,7 +16,8 @@ BEGIN
CALL getTaxBases(); CALL getTaxBases();
SELECT negative INTO hasAnyNegativeBase SELECT negative INTO hasAnyNegativeBase
FROM tmp.taxBases; FROM tmp.taxBases
LIMIT 1;
DROP TEMPORARY TABLE DROP TEMPORARY TABLE
tmp.ticketTax, tmp.ticketTax,
@ -27,3 +29,4 @@ BEGIN
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -23,3 +23,4 @@ The following refund tickets have been created: "Se han creado los siguientes ti
Refund...: Abono... Refund...: Abono...
Transfer invoice to...: Transferir factura a... Transfer invoice to...: Transferir factura a...
Rectificative type: Tipo rectificativa Rectificative type: Tipo rectificativa
Invoice trasfered!: ¡Factura transferida!

View File

@ -71,7 +71,7 @@ module.exports = function(Self) {
group[addressFk].push(id); group[addressFk].push(id);
return group; return group;
}, {})) }, {}))
: [[ticketsIds]]; : [ticketsIds];
for (const ticketIds of ticketsByAddress) for (const ticketIds of ticketsByAddress)
invoicesIds.push(await createInvoice(ctx, companyId, ticketIds, invoiceCorrection, myOptions)); invoicesIds.push(await createInvoice(ctx, companyId, ticketIds, invoiceCorrection, myOptions));

View File

@ -121,4 +121,29 @@ describe('ticket canBeInvoiced()', () => {
throw e; throw e;
} }
}); });
it('should return falsy for a ticket has positiveBase', async() => {
const tx = await models.Ticket.beginTransaction({});
try {
const options = {transaction: tx};
await models.Ticket.rawSql(`
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketToInvoice
(PRIMARY KEY (id))
ENGINE = MEMORY
SELECT id
FROM vn.ticket
WHERE id IN (?)
`, [ticketId], options);
await models.Ticket.canBeInvoiced(ctx, [ticketId], true, options);
await tx.rollback();
} catch (e) {
error = e;
await tx.rollback();
}
expect(error.message).toEqual(`hasAnyPositiveBase`);
});
}); });