#6942 toUnbook #2135

Merged
jorgep merged 46 commits from 6942-improveInvoiceIn into dev 2024-05-29 07:03:35 +00:00
3 changed files with 86 additions and 1 deletions
Showing only changes of commit 5a11e9ac76 - Show all commits

View File

@ -76,6 +76,12 @@
},
"enlazadoSage": {
"type": "boolean"
},
"enlazado": {
"type": "boolean"
},
"CLAVE": {
"type": "number"
}
jorgep marked this conversation as resolved Outdated

El campo CLAVE está en mayúsculas en la base de datos

El campo CLAVE está en mayúsculas en la base de datos
Outdated
Review

Li pots fer un rename per a que nosaltres ho gastem normal.
En ticket.json hi ha un exemple:

 "updated": {
            "type": "date",
            "mysql": {
                "columnName": "created"
            }
        },
Li pots fer un rename per a que nosaltres ho gastem normal. En ticket.json hi ha un exemple: ``` "updated": { "type": "date", "mysql": { "columnName": "created" } }, ```
},
"relations": {

View File

@ -0,0 +1,78 @@
module.exports = Self => {
Self.remoteMethodCtx('toUnbook', {
description: 'To unbook the invoiceIn',
accessType: 'WRITE',
accepts: {
arg: 'id',
type: 'number',
required: true,
description: 'The invoiceIn id',
http: {source: 'path'}
},
returns: {
type: 'object',
root: true
},
http: {
path: '/:id/toUnbook',
verb: 'POST'
}
});
Self.toUnbook = async(ctx, id, options) => {
let tx;
const models = Self.app.models;
const myOptions = {userId: ctx.req.accessToken.userId};
if (typeof options == 'object')
Object.assign(myOptions, options);
if (!myOptions.transaction) {
tx = await Self.beginTransaction({});
myOptions.transaction = tx;
}
try {
let isLinked;
let accountingEntries;
let {'ASIEN': bookEntry} = await models.Xdiario.findOne({
fields: ['ASIEN'],
where: {
and: [
{'CLAVE': id},
{enlazado: 0},
{enlazadoSage: 0}
]
}
}, myOptions);
jorgep marked this conversation as resolved
Review

El numero de ocurrencias de bookEntry.ASIEN es medio-alto.
Propongo crear una variable representativa de este valor y reemplazar donde toque.
Otro enfoque puede ser que en el if, reemplazar bookEntry.ASIEN porque ya es true

El numero de ocurrencias de bookEntry.ASIEN es medio-alto. Propongo crear una variable representativa de este valor y reemplazar donde toque. Otro enfoque puede ser que en el if, reemplazar bookEntry.ASIEN porque ya es true
Review

Me parece bien.

Me parece bien.
if (bookEntry) {
jgallego marked this conversation as resolved Outdated
Outdated
Review

@jgallego veus be la logica?

@jgallego veus be la logica?

esta ok

esta ok
accountingEntries = await models.Xdiario.count({ASIEN: bookEntry}, myOptions);
await models.Xdiario.destroyAll({where: {ASIEN: bookEntry}}, myOptions);
} else {
const linkedBookEntry = await models.Xdiario.findOne({
fields: ['ASIEN'],
where: {
CLAVE: id,
and: [{or: [{enlazado: true, enlazadoSage: true}]}]
}
}, myOptions);
bookEntry = linkedBookEntry?.ASIEN;
isLinked = true;
}
if (tx) await tx.commit();
return {
isLinked,
bookEntry,
accountingEntries
};
} catch (e) {
if (tx) await tx.rollback();
throw e;
}
};
};

View File

@ -10,6 +10,7 @@ module.exports = Self => {
require('../methods/invoice-in/invoiceInEmail')(Self);
require('../methods/invoice-in/getSerial')(Self);
require('../methods/invoice-in/corrective')(Self);
require('../methods/invoice-in/toUnbook')(Self);
Self.rewriteDbError(function(err) {
if (err.code === 'ER_ROW_IS_REFERENCED_2' && err.sqlMessage.includes('vehicleInvoiceIn'))