fix: refs #7346 invoiceSerial

This commit is contained in:
Guillermo Bonet 2024-09-04 14:09:31 +02:00
parent a8cc3f496f
commit 212e8d1a03
2 changed files with 41 additions and 45 deletions

View File

@ -1,5 +1,9 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(15)) CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`invoiceSerial`(
vClientFk INT,
vCompanyFk INT,
vType CHAR(15)
)
RETURNS char(2) CHARSET utf8mb3 COLLATE utf8mb3_general_ci RETURNS char(2) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
DETERMINISTIC DETERMINISTIC
BEGIN BEGIN
@ -9,10 +13,11 @@ BEGIN
* *
* @param vClientFk Id del cliente * @param vClientFk Id del cliente
* @param vCompanyFk Id de la empresa * @param vCompanyFk Id de la empresa
* @param vType Tipo de factura ['global','multiple','quick'] * @param vType Tipo de factura (vn.invoiceOutSerial.type[ENUM])
* @return vSerie de la factura * @return vSerie de la factura
*/ */
DECLARE vTaxArea VARCHAR(25) COLLATE utf8mb3_general_ci; DECLARE vTaxArea VARCHAR(25) COLLATE utf8mb3_general_ci;
DECLARE vTransactionCode INT(2);
DECLARE vSerie CHAR(2); DECLARE vSerie CHAR(2);
IF (SELECT hasInvoiceSimplified FROM client WHERE id = vClientFk) THEN IF (SELECT hasInvoiceSimplified FROM client WHERE id = vClientFk) THEN
@ -23,9 +28,15 @@ BEGIN
FROM client FROM client
WHERE id = vClientFk; WHERE id = vClientFk;
SELECT code INTO vSerie SELECT CodigoTransaccion INTO vTransactionCode
FROM invoiceOutSerial FROM taxArea
WHERE `type` = vType AND taxAreaFk = vTaxArea; WHERE code = vTaxArea;
SELECT ios.code INTO vSerie
FROM invoiceOutSerial ios
JOIN taxArea ta ON ta.code = ios.taxAreaFk
WHERE ios.`type` = vType
AND ta.CodigoTransaccion = vTransactionCode;
RETURN vSerie; RETURN vSerie;
END$$ END$$

View File

@ -13,23 +13,20 @@ 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, 'M'); await Self.app.models.InvoiceOut.getSerial(ticket.clientFk, ticket.companyFk, ticket.addressFk, 'multiple');
await Self.rawSql( await Self.rawSql(
`CALL vn.ticket_closeByTicket(?)`, `CALL vn.ticket_closeByTicket(?)`,
[ticket.id], [ticket.id],
{userId} {userId}
); );
const [invoiceOut] = await Self.rawSql( const [invoiceOut] = await Self.rawSql(`
`
SELECT io.id, io.ref, io.serial, cny.code companyCode, io.issued SELECT io.id, io.ref, io.serial, cny.code companyCode, io.issued
FROM ticket t FROM ticket t
JOIN invoiceOut io ON io.ref = t.refFk JOIN invoiceOut io ON io.ref = t.refFk
JOIN company cny ON cny.id = io.companyFk JOIN company cny ON cny.id = io.companyFk
WHERE t.id = ? WHERE t.id = ?
`, `, [ticket.id]);
[ticket.id],
);
const mailOptions = { const mailOptions = {
overrideAttachments: true, overrideAttachments: true,
@ -104,17 +101,14 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
} }
// Incoterms authorization // Incoterms authorization
const [{firstOrder}] = await Self.rawSql( const [{firstOrder}] = await Self.rawSql(`
`
SELECT COUNT(*) as firstOrder SELECT COUNT(*) as firstOrder
FROM ticket t FROM ticket t
JOIN client c ON c.id = t.clientFk JOIN client c ON c.id = t.clientFk
WHERE t.clientFk = ? WHERE t.clientFk = ?
AND NOT t.isDeleted AND NOT t.isDeleted
AND c.isVies AND c.isVies
`, `, [ticket.clientFk]);
[ticket.clientFk],
);
if (firstOrder == 1) { if (firstOrder == 1) {
const args = { const args = {
@ -129,26 +123,17 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
const email = new Email('incoterms-authorization', args); const email = new Email('incoterms-authorization', args);
await email.send(); await email.send();
const [sample] = await Self.rawSql( const [sample] = await Self.rawSql(`
`SELECT id SELECT id
FROM sample FROM sample
WHERE code = 'incoterms-authorization' WHERE code = 'incoterms-authorization'
`, `);
);
await Self.rawSql( await Self.rawSql(`
`
INSERT INTO clientSample (clientFk, typeFk, companyFk) VALUES(?, ?, ?) INSERT INTO clientSample (clientFk, typeFk, companyFk) VALUES(?, ?, ?)
`, `, [ticket.clientFk, sample.id, ticket.companyFk], {userId});
[ticket.clientFk, sample.id, ticket.companyFk],
{userId},
);
} }
} catch (error) { } catch (error) {
await Self.rawSql(`
INSERT INTO util.debug (variable, value)
VALUES ('invoicingTicketError', ?)
`, [ticket.id + ' - ' + error]);
// Domain not found // Domain not found
if (error.responseCode == 450) { if (error.responseCode == 450) {
await invalidEmail(ticket); await invalidEmail(ticket);