8355-testToMaster #3336

Merged
alexm merged 241 commits from 8355-testToMaster into master 2025-01-07 06:44:57 +00:00
9 changed files with 59 additions and 48 deletions
Showing only changes of commit 1c51516aeb - Show all commits

View File

@ -1,15 +0,0 @@
CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `bi`.`rotacion`
AS SELECT `ic`.`itemFk` AS `Id_Article`,
`ic`.`warehouseFk` AS `warehouse_id`,
`ic`.`quantity` AS `total`,
`ic`.`rotation` AS `rotacion`,
`ic`.`cm3` AS `cm3`,
`ic`.`storage` AS `almacenaje`,
`ic`.`handling` AS `manipulacion`,
`ic`.`extraCharge` AS `auxiliar`,
`ic`.`wasted` AS `mermas`,
`ic`.`cm3delivery` AS `cm3reparto`,
`ic`.`grams` AS `grams`
FROM `vn`.`itemCost` `ic`

View File

@ -9,6 +9,10 @@ module.exports = Self => {
required: true,
description: 'The entry id',
http: {source: 'path'}
}, {
arg: 'showEntryLines',
type: 'boolean',
required: false
}
],
returns: [

View File

@ -47,8 +47,7 @@ module.exports = Self => {
for (const buy of buys) {
if (buy.stickers < 1) continue;
ctx.args.id = buy.id;
ctx.args.copies = buy.stickers;
ctx.args = {...ctx.args, id: buy.id, showEntryLines: true};
const pdfBuffer = await models.Entry.buyLabelSupplier(ctx, myOptions);
await merger.add(new Uint8Array(pdfBuffer[0]));
}

View File

@ -14,6 +14,12 @@ module.exports = Self => {
description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string',
http: {source: 'query'}
},
{
arg: 'id',
type: 'number',
description: 'The invoiceOut id',
http: {source: 'query'}
},
{
arg: 'search',
type: 'string',
@ -106,6 +112,8 @@ module.exports = Self => {
return {'i.created': value};
case 'clientFk':
return {'i.clientFk': value};
case 'id':
return {'i.id': value};
case 'fi':
return {'c.fi': value};
case 'amount':

View File

@ -88,6 +88,11 @@ module.exports = Self => {
arg: 'alertLevel',
type: 'number',
description: `The alert level of the tickets`
},
{
arg: 'countryFk',
type: 'number',
description: 'The country id filter'
}
],
returns: {
@ -182,6 +187,7 @@ module.exports = Self => {
t.totalWithVat,
io.id invoiceOutId,
a.provinceFk,
p.countryFk,
p.name province,
w.name warehouse,
am.name agencyMode,
@ -356,6 +362,7 @@ module.exports = Self => {
}
case 'agencyModeFk':
case 'warehouseFk':
case 'countryFk':
param = `f.${param}`;
return {[param]: value};
}

View File

@ -1,4 +1,3 @@
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
const buildFilter = require('vn-loopback/util/filter').buildFilter;
const mergeFilters = require('vn-loopback/util/filter').mergeFilters;
@ -112,45 +111,42 @@ module.exports = Self => {
let stmt;
stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.travel');
stmt = new ParameterizedSQL(
`CREATE TEMPORARY TABLE tmp.travel
`CREATE TEMPORARY TABLE tmp.travel
(INDEX (id))
ENGINE = MEMORY
SELECT
t.id,
SELECT t.id,
t.ref,
t.shipped,
t.landed,
t.kg,
am.id AS agencyModeFk,
am.name AS agencyModeName,
wo.id AS warehouseOutFk,
wo.name AS warehouseOutName,
w.name AS warehouseInFk,
w.name AS warehouseInName,
SUM(b.stickers) AS stickers,
s.id AS cargoSupplierFk,
s.nickname AS cargoSupplierNickname,
s.name AS supplierName,
CAST(SUM(b.weight * b.stickers) as DECIMAL(10,0)) as loadedKg,
am.id agencyModeFk,
am.name agencyModeName,
wo.id warehouseOutFk,
wo.name warehouseOutName,
w.name warehouseInFk,
w.name warehouseInName,
SUM(b.stickers) stickers,
s.id cargoSupplierFk,
s.nickname cargoSupplierNickname,
s.name supplierName,
CAST(SUM(b.weight * b.stickers) AS DECIMAL(10,0)) loadedKg,
CAST(
SUM(
vc.aerealVolumetricDensity *
b.stickers *
IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000
) as DECIMAL(10,0)
) as volumeKg,
GREATEST(
CAST(SUM(b.weight * b.stickers) AS INT),
CAST(
) AS DECIMAL(10,0)
) volumeKg,
CAST(
GREATEST(
SUM(b.weight * b.stickers) ,
SUM(vc.aerealVolumetricDensity *
b.stickers *
IF(pkg.volume,
pkg.volume,
pkg.width * pkg.depth * pkg.height
) / 1000000
) AS INT
)
/ t.kg * 100, 0) percentageKg
pkg.width * pkg.depth * pkg.height) / 1000000)
) / t.kg * 100 AS INT
) percentageKg
FROM travel t
LEFT JOIN supplier s ON s.id = t.cargoSupplierFk
LEFT JOIN entry e ON e.travelFk = t.id

View File

@ -86,7 +86,7 @@
<td>
<div class="cell">
<span class="lbl">{{$t('boxNum')}}</span>
{{`${buy.labelNum} / ${buy.maxLabelNum}`}}
{{getTotal(buy)}}
</div>
</td>
</tr>

View File

@ -9,7 +9,7 @@ module.exports = {
mixins: [vnReport],
async serverPrefetch() {
const buy = await models.Buy.findById(this.id, null);
this.buys = await this.rawSqlFromDef('buy', [buy.entryFk, buy.entryFk, buy.entryFk, this.id]);
this.buys = await this.rawSqlFromDef('buy', [buy.entryFk, buy.entryFk, buy.entryFk, this.id, this.id]);
const date = new Date();
this.weekNum = moment(date).isoWeek();
this.dayNum = moment(date).day();
@ -27,6 +27,11 @@ module.exports = {
height: 115,
});
return new XMLSerializer().serializeToString(svgNode);
},
getTotal(buy) {
return (this.showEntryLines) ?
`${buy.entryLabelNum} / ${buy.entryLabels}` :
`${buy.buyLabelNum} / ${buy.buyLabels}`;
}
},
props: {
@ -34,6 +39,10 @@ module.exports = {
type: Number,
required: true,
description: 'The entry id'
},
showEntryLines: {
type: Boolean,
required: false
}
}
};

View File

@ -10,7 +10,7 @@ WITH RECURSIVE numbers AS (
)
),
labels AS (
SELECT ROW_NUMBER() OVER(ORDER BY b.id, num.n) labelNum,
SELECT ROW_NUMBER() OVER(ORDER BY b.id, num.n) entryLabelNum,
i.name,
i.`size`,
i.category,
@ -33,6 +33,9 @@ labels AS (
WHERE b.entryFk = ?
AND num.n <= b.stickers
)
SELECT *, (SELECT SUM(stickers) FROM buy WHERE entryFk = ?) maxLabelNum
SELECT *,
ROW_NUMBER() OVER(ORDER BY entryLabelNum) buyLabelNum,
(SELECT SUM(stickers) FROM buy WHERE entryFk = ?) entryLabels,
(SELECT stickers FROM buy WHERE id = ?) buyLabels
FROM labels
WHERE id = ?