#6276 createNewWarehouse methods migrated from silex to salix #1850

Merged
jorgep merged 158 commits from 6276-createNewWarehouse into dev 2024-03-06 11:32:11 +00:00
3 changed files with 76 additions and 1 deletions
Showing only changes of commit 40236fdb7b - Show all commits

View File

@ -0,0 +1,74 @@
module.exports = Self => {
Self.remoteMethod('makeMulti', {
description: 'Add a record or update it if it already exists.',
accessType: 'WRITE',
accepts: [{
arg: 'shelvingFk',
type: 'number',
required: true,
},
{
arg: 'items',
type: ['number'],
required: true,
description: 'array of item foreign keys'
},
{
arg: 'warehouseFk',
type: 'number',
required: true
}],
http: {
path: `/makeMulti`,
verb: 'POST'
}
});
Self.makeMulti = async(shelvingFk, items, warehouseFk, options) => {
const myOptions = {};
let tx;
if (typeof options == 'object')
Object.assign(myOptions, options);
if (!myOptions.transaction) {
tx = await Self.beginTransaction({});
myOptions.transaction = tx;
}
const discardItems = [];
try {
for (let item of items) {
if (!discardItems.includes(item)) {
let quantity = items.reduce((acc, cur) => {
return acc + (cur === item ? 1 : 0);
}, 0);
discardItems.push(item);
let [result] = await Self.rawSql('SELECT vn.itemPacking(?, ?)', [item, warehouseFk]);
let packing;
if (result) packing = Object.values(result)[0];
if (!packing) packing = 1;
jorgep marked this conversation as resolved Outdated

crear un redmine para refactorizar esto y el proc itemShelving_add
aqui no tendria que ponerse un 1 en el codigo, sino que sino hay se le pase null al proc, y ya seria el proc internamente el que lo gestiona, de hecho el codigo esta.
además no hay que multiplicar aqui por la cantidad tampoco, que se el pase las etiquetas, y el procedimiento que es el que sabe el vPacking que lo multiplique, este método quedaria mas simple.

crear un redmine para refactorizar esto y el proc itemShelving_add aqui no tendria que ponerse un 1 en el codigo, sino que sino hay se le pase null al proc, y ya seria el proc internamente el que lo gestiona, de hecho el codigo esta. además no hay que multiplicar aqui por la cantidad tampoco, que se el pase las etiquetas, y el procedimiento que es el que sabe el vPacking que lo multiplique, este método quedaria mas simple.

Tarea creada: https://redmine.verdnatura.es/issues/6776 y una rama añadida con el back creado.

Tarea creada: https://redmine.verdnatura.es/issues/6776 y una rama añadida con el back creado.
quantity = quantity * packing;
await Self.rawSql('CALL vn.itemShelving_add(?, ?, ?, NULL, NULL, ?, ?)',
[shelvingFk,
jorgep marked this conversation as resolved Outdated
Outdated
Review

En salix para poder loggear los cambios en CALLs hace falta que el myOptions tenga el userId

En salix para poder loggear los cambios en CALLs hace falta que el myOptions tenga el userId

https://redmine.verdnatura.es/issues/6776 se ha pasado este procedimiento a esta tarea. lo añado ahí para que quien la coja lo tenga puesto.

https://redmine.verdnatura.es/issues/6776 se ha pasado este procedimiento a esta tarea. lo añado ahí para que quien la coja lo tenga puesto.
item,
quantity,
packing,
warehouseFk]
);
}
}
if (tx) await tx.commit();
} catch (e) {
if (tx) await tx.rollback();
throw e;
}
};
};

View File

@ -1,4 +1,5 @@
module.exports = Self => {
require('../methods/item-shelving/deleteItemShelvings')(Self);
require('../methods/item-shelving/getInventory')(Self);
require('../methods/item-shelving/makeMulti')(Self);
};

View File

@ -1,6 +1,6 @@
{
"name": "ItemShelving",
"base": "Loggable",
"base": "VnModel",
"options": {
"mysql": {
"table": "itemShelving"