#6276 createNewWarehouse methods migrated from silex to salix #1850
|
@ -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
|
||||
quantity = quantity * packing;
|
||||
|
||||
await Self.rawSql('CALL vn.itemShelving_add(?, ?, ?, NULL, NULL, ?, ?)',
|
||||
[shelvingFk,
|
||||
jorgep marked this conversation as resolved
Outdated
alexm
commented
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
jorgep
commented
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;
|
||||
}
|
||||
};
|
||||
};
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "ItemShelving",
|
||||
"base": "Loggable",
|
||||
"base": "VnModel",
|
||||
"options": {
|
||||
"mysql": {
|
||||
"table": "itemShelving"
|
||||
|
|
Loading…
Reference in New Issue
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.