Merge pull request 'fix: refs #7404 filter an rounding issues' (!3196) from 7404-fix-stockBoughtDetailFilter into master
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
Reviewed-on: #3196 Reviewed-by: Alex Moreno <alexm@verdnatura.es>
This commit is contained in:
commit
5f3b1ff601
|
@ -59,7 +59,7 @@ proc: BEGIN
|
|||
|
||||
INSERT INTO stockBought(workerFk, bought, dated)
|
||||
SELECT tb.workerFk,
|
||||
ROUND(GREATEST(tb.bought - IFNULL(ts.sold, 0), 0), 1),
|
||||
ROUND(GREATEST(tb.bought - IFNULL(ts.sold, 0), 0), 2),
|
||||
vDated
|
||||
FROM tStockBought tb
|
||||
LEFT JOIN tStockSold ts ON ts.workerFk = tb.workerFk;
|
||||
|
|
|
@ -6,6 +6,9 @@ module.exports = Self => {
|
|||
arg: 'workerFk',
|
||||
type: 'number',
|
||||
description: 'The id for a buyer',
|
||||
}, {
|
||||
arg: 'filter',
|
||||
type: 'object',
|
||||
},
|
||||
{
|
||||
arg: 'dated',
|
||||
|
@ -23,7 +26,7 @@ module.exports = Self => {
|
|||
}
|
||||
});
|
||||
|
||||
Self.getStockBought = async(workerFk, dated = Date.vnNew()) => {
|
||||
Self.getStockBought = async(workerFk, filter, dated = Date.vnNew()) => {
|
||||
const models = Self.app.models;
|
||||
const today = Date.vnNew();
|
||||
dated.setHours(0, 0, 0, 0);
|
||||
|
@ -31,7 +34,7 @@ module.exports = Self => {
|
|||
|
||||
await models.StockBought.rawSql(`CALL vn.stockBought_calculate(?)`, [dated]);
|
||||
|
||||
const filter = {
|
||||
const defaultFilter = {
|
||||
where: {dated},
|
||||
include: [
|
||||
{
|
||||
|
@ -53,6 +56,6 @@ module.exports = Self => {
|
|||
|
||||
if (workerFk) filter.where.workerFk = workerFk;
|
||||
|
||||
return models.StockBought.find(filter);
|
||||
return models.StockBought.find({...filter, ...defaultFilter});
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
|
||||
module.exports = Self => {
|
||||
Self.remoteMethod('getStockBoughtDetail', {
|
||||
description: 'Returns the detail of stock bought for a given date and a worker',
|
||||
|
@ -12,6 +13,9 @@ module.exports = Self => {
|
|||
type: 'string',
|
||||
description: 'The date to filter',
|
||||
required: true,
|
||||
}, {
|
||||
arg: 'filter',
|
||||
type: 'object',
|
||||
}
|
||||
],
|
||||
returns: {
|
||||
|
@ -24,11 +28,10 @@ module.exports = Self => {
|
|||
}
|
||||
});
|
||||
|
||||
Self.getStockBoughtDetail = async(workerFk, dated) => {
|
||||
const models = Self.app.models;
|
||||
Self.getStockBoughtDetail = async(workerFk, dated, filter, options) => {
|
||||
const conn = Self.dataSource.connector;
|
||||
const myOptions = {};
|
||||
let tx;
|
||||
let result;
|
||||
|
||||
if (typeof options == 'object')
|
||||
Object.assign(myOptions, options);
|
||||
|
@ -39,8 +42,10 @@ module.exports = Self => {
|
|||
}
|
||||
|
||||
try {
|
||||
await models.StockBought.rawSql(`CALL vn.item_calculateStock(?)`, [dated], myOptions);
|
||||
result = await Self.rawSql(
|
||||
const stmts = [];
|
||||
stmts.push(new ParameterizedSQL(`CALL vn.item_calculateStock(?)`, [dated]));
|
||||
|
||||
const query = new ParameterizedSQL(
|
||||
`SELECT b.entryFk entryFk,
|
||||
i.id itemFk,
|
||||
i.name itemName,
|
||||
|
@ -61,11 +66,17 @@ module.exports = Self => {
|
|||
JOIN volumeConfig vc
|
||||
WHERE ic.display
|
||||
AND w.id = ?`,
|
||||
[workerFk], myOptions
|
||||
[workerFk]
|
||||
);
|
||||
await Self.rawSql(`DROP TEMPORARY TABLE tmp.item, tmp.buyUltimate;`, [], myOptions);
|
||||
|
||||
stmts.push(query.merge(conn.makeSuffix(filter)));
|
||||
|
||||
stmts.push(new ParameterizedSQL(`DROP TEMPORARY TABLE tmp.item, tmp.buyUltimate`));
|
||||
|
||||
const sql = ParameterizedSQL.join(stmts, ';');
|
||||
const result = await conn.executeStmt(sql, myOptions);
|
||||
if (tx) await tx.commit();
|
||||
return result;
|
||||
return result[1];
|
||||
} catch (e) {
|
||||
await tx.rollback();
|
||||
throw e;
|
||||
|
|
Loading…
Reference in New Issue