Merge branch 'test' into dev
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
commit
127842a705
|
@ -9,6 +9,10 @@ module.exports = Self => {
|
||||||
required: true,
|
required: true,
|
||||||
description: 'The entry id',
|
description: 'The entry id',
|
||||||
http: {source: 'path'}
|
http: {source: 'path'}
|
||||||
|
}, {
|
||||||
|
arg: 'showEntryLines',
|
||||||
|
type: 'boolean',
|
||||||
|
required: false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
returns: [
|
returns: [
|
||||||
|
|
|
@ -47,8 +47,7 @@ module.exports = Self => {
|
||||||
|
|
||||||
for (const buy of buys) {
|
for (const buy of buys) {
|
||||||
if (buy.stickers < 1) continue;
|
if (buy.stickers < 1) continue;
|
||||||
ctx.args.id = buy.id;
|
ctx.args = {...ctx.args, id: buy.id, showEntryLines: true};
|
||||||
ctx.args.copies = buy.stickers;
|
|
||||||
const pdfBuffer = await models.Entry.buyLabelSupplier(ctx, myOptions);
|
const pdfBuffer = await models.Entry.buyLabelSupplier(ctx, myOptions);
|
||||||
await merger.add(new Uint8Array(pdfBuffer[0]));
|
await merger.add(new Uint8Array(pdfBuffer[0]));
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,12 @@ module.exports = Self => {
|
||||||
description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string',
|
description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string',
|
||||||
http: {source: 'query'}
|
http: {source: 'query'}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
arg: 'id',
|
||||||
|
type: 'number',
|
||||||
|
description: 'The invoiceOut id',
|
||||||
|
http: {source: 'query'}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
arg: 'search',
|
arg: 'search',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
|
@ -106,6 +112,8 @@ module.exports = Self => {
|
||||||
return {'i.created': value};
|
return {'i.created': value};
|
||||||
case 'clientFk':
|
case 'clientFk':
|
||||||
return {'i.clientFk': value};
|
return {'i.clientFk': value};
|
||||||
|
case 'id':
|
||||||
|
return {'i.id': value};
|
||||||
case 'fi':
|
case 'fi':
|
||||||
return {'c.fi': value};
|
return {'c.fi': value};
|
||||||
case 'amount':
|
case 'amount':
|
||||||
|
|
|
@ -88,6 +88,11 @@ module.exports = Self => {
|
||||||
arg: 'alertLevel',
|
arg: 'alertLevel',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
description: `The alert level of the tickets`
|
description: `The alert level of the tickets`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arg: 'countryFk',
|
||||||
|
type: 'number',
|
||||||
|
description: 'The country id filter'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
returns: {
|
returns: {
|
||||||
|
@ -182,6 +187,7 @@ module.exports = Self => {
|
||||||
t.totalWithVat,
|
t.totalWithVat,
|
||||||
io.id invoiceOutId,
|
io.id invoiceOutId,
|
||||||
a.provinceFk,
|
a.provinceFk,
|
||||||
|
p.countryFk,
|
||||||
p.name province,
|
p.name province,
|
||||||
w.name warehouse,
|
w.name warehouse,
|
||||||
am.name agencyMode,
|
am.name agencyMode,
|
||||||
|
@ -356,6 +362,7 @@ module.exports = Self => {
|
||||||
}
|
}
|
||||||
case 'agencyModeFk':
|
case 'agencyModeFk':
|
||||||
case 'warehouseFk':
|
case 'warehouseFk':
|
||||||
|
case 'countryFk':
|
||||||
param = `f.${param}`;
|
param = `f.${param}`;
|
||||||
return {[param]: value};
|
return {[param]: value};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
|
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
|
||||||
const buildFilter = require('vn-loopback/util/filter').buildFilter;
|
const buildFilter = require('vn-loopback/util/filter').buildFilter;
|
||||||
const mergeFilters = require('vn-loopback/util/filter').mergeFilters;
|
const mergeFilters = require('vn-loopback/util/filter').mergeFilters;
|
||||||
|
@ -112,45 +111,42 @@ module.exports = Self => {
|
||||||
let stmt;
|
let stmt;
|
||||||
stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.travel');
|
stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.travel');
|
||||||
stmt = new ParameterizedSQL(
|
stmt = new ParameterizedSQL(
|
||||||
`CREATE TEMPORARY TABLE tmp.travel
|
`CREATE TEMPORARY TABLE tmp.travel
|
||||||
(INDEX (id))
|
(INDEX (id))
|
||||||
ENGINE = MEMORY
|
ENGINE = MEMORY
|
||||||
SELECT
|
SELECT t.id,
|
||||||
t.id,
|
|
||||||
t.ref,
|
t.ref,
|
||||||
t.shipped,
|
t.shipped,
|
||||||
t.landed,
|
t.landed,
|
||||||
t.kg,
|
t.kg,
|
||||||
am.id AS agencyModeFk,
|
am.id agencyModeFk,
|
||||||
am.name AS agencyModeName,
|
am.name agencyModeName,
|
||||||
wo.id AS warehouseOutFk,
|
wo.id warehouseOutFk,
|
||||||
wo.name AS warehouseOutName,
|
wo.name warehouseOutName,
|
||||||
w.name AS warehouseInFk,
|
w.name warehouseInFk,
|
||||||
w.name AS warehouseInName,
|
w.name warehouseInName,
|
||||||
SUM(b.stickers) AS stickers,
|
SUM(b.stickers) stickers,
|
||||||
s.id AS cargoSupplierFk,
|
s.id cargoSupplierFk,
|
||||||
s.nickname AS cargoSupplierNickname,
|
s.nickname cargoSupplierNickname,
|
||||||
s.name AS supplierName,
|
s.name supplierName,
|
||||||
CAST(SUM(b.weight * b.stickers) as DECIMAL(10,0)) as loadedKg,
|
CAST(SUM(b.weight * b.stickers) AS DECIMAL(10,0)) loadedKg,
|
||||||
CAST(
|
CAST(
|
||||||
SUM(
|
SUM(
|
||||||
vc.aerealVolumetricDensity *
|
vc.aerealVolumetricDensity *
|
||||||
b.stickers *
|
b.stickers *
|
||||||
IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000
|
IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000
|
||||||
) as DECIMAL(10,0)
|
) AS DECIMAL(10,0)
|
||||||
) as volumeKg,
|
) volumeKg,
|
||||||
GREATEST(
|
CAST(
|
||||||
CAST(SUM(b.weight * b.stickers) AS INT),
|
GREATEST(
|
||||||
CAST(
|
SUM(b.weight * b.stickers) ,
|
||||||
SUM(vc.aerealVolumetricDensity *
|
SUM(vc.aerealVolumetricDensity *
|
||||||
b.stickers *
|
b.stickers *
|
||||||
IF(pkg.volume,
|
IF(pkg.volume,
|
||||||
pkg.volume,
|
pkg.volume,
|
||||||
pkg.width * pkg.depth * pkg.height
|
pkg.width * pkg.depth * pkg.height) / 1000000)
|
||||||
) / 1000000
|
) / t.kg * 100 AS INT
|
||||||
) AS INT
|
) percentageKg
|
||||||
)
|
|
||||||
/ t.kg * 100, 0) percentageKg
|
|
||||||
FROM travel t
|
FROM travel t
|
||||||
LEFT JOIN supplier s ON s.id = t.cargoSupplierFk
|
LEFT JOIN supplier s ON s.id = t.cargoSupplierFk
|
||||||
LEFT JOIN entry e ON e.travelFk = t.id
|
LEFT JOIN entry e ON e.travelFk = t.id
|
||||||
|
|
|
@ -86,7 +86,7 @@
|
||||||
<td>
|
<td>
|
||||||
<div class="cell">
|
<div class="cell">
|
||||||
<span class="lbl">{{$t('boxNum')}}</span>
|
<span class="lbl">{{$t('boxNum')}}</span>
|
||||||
{{`${buy.labelNum} / ${buy.maxLabelNum}`}}
|
{{getTotal(buy)}}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -9,7 +9,7 @@ module.exports = {
|
||||||
mixins: [vnReport],
|
mixins: [vnReport],
|
||||||
async serverPrefetch() {
|
async serverPrefetch() {
|
||||||
const buy = await models.Buy.findById(this.id, null);
|
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();
|
const date = new Date();
|
||||||
this.weekNum = moment(date).isoWeek();
|
this.weekNum = moment(date).isoWeek();
|
||||||
this.dayNum = moment(date).day();
|
this.dayNum = moment(date).day();
|
||||||
|
@ -27,6 +27,11 @@ module.exports = {
|
||||||
height: 115,
|
height: 115,
|
||||||
});
|
});
|
||||||
return new XMLSerializer().serializeToString(svgNode);
|
return new XMLSerializer().serializeToString(svgNode);
|
||||||
|
},
|
||||||
|
getTotal(buy) {
|
||||||
|
return (this.showEntryLines) ?
|
||||||
|
`${buy.entryLabelNum} / ${buy.entryLabels}` :
|
||||||
|
`${buy.buyLabelNum} / ${buy.buyLabels}`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
@ -34,6 +39,10 @@ module.exports = {
|
||||||
type: Number,
|
type: Number,
|
||||||
required: true,
|
required: true,
|
||||||
description: 'The entry id'
|
description: 'The entry id'
|
||||||
|
},
|
||||||
|
showEntryLines: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,7 +10,7 @@ WITH RECURSIVE numbers AS (
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
labels 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.name,
|
||||||
i.`size`,
|
i.`size`,
|
||||||
i.category,
|
i.category,
|
||||||
|
@ -33,6 +33,9 @@ labels AS (
|
||||||
WHERE b.entryFk = ?
|
WHERE b.entryFk = ?
|
||||||
AND num.n <= b.stickers
|
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
|
FROM labels
|
||||||
WHERE id = ?
|
WHERE id = ?
|
Loading…
Reference in New Issue