Import buys
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
parent
411053bbec
commit
c092bf58b4
|
@ -2175,3 +2175,12 @@ INSERT INTO `hedera`.`image`(`collectionFk`, `name`)
|
||||||
INSERT INTO `hedera`.`imageCollectionSize`(`id`, `collectionFk`,`width`, `height`)
|
INSERT INTO `hedera`.`imageCollectionSize`(`id`, `collectionFk`,`width`, `height`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 4, 160, 160);
|
(1, 4, 160, 160);
|
||||||
|
|
||||||
|
INSERT INTO `vn`.`rateConfig`(`rate0`, `rate1`, `rate2`, `rate3`)
|
||||||
|
VALUES
|
||||||
|
(36, 31, 25, 21);
|
||||||
|
|
||||||
|
INSERT INTO `vn`.`rate`(`dated`, `warehouseFk`, `rate0`, `rate1`, `rate2`, `rate3`)
|
||||||
|
VALUES
|
||||||
|
(DATE_ADD(CURDATE(), INTERVAL -1 YEAR), 1, 10, 15, 20, 25),
|
||||||
|
(CURDATE(), 1, 12, 17, 22, 27);
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
|
||||||
|
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
|
||||||
module.exports = Self => {
|
module.exports = Self => {
|
||||||
Self.remoteMethodCtx('import', {
|
Self.remoteMethodCtx('import', {
|
||||||
description: 'Imports the buys from a JSON file',
|
description: 'Imports the buys from a JSON file',
|
||||||
|
@ -9,6 +11,16 @@ module.exports = Self => {
|
||||||
description: 'The entry id',
|
description: 'The entry id',
|
||||||
http: {source: 'path'}
|
http: {source: 'path'}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
arg: 'ref',
|
||||||
|
type: 'string',
|
||||||
|
description: 'The buyed boxes ids',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arg: 'observation',
|
||||||
|
type: 'string',
|
||||||
|
description: 'The observation',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
arg: 'buys',
|
arg: 'buys',
|
||||||
type: ['Object'],
|
type: ['Object'],
|
||||||
|
@ -25,10 +37,14 @@ module.exports = Self => {
|
||||||
});
|
});
|
||||||
|
|
||||||
Self.import = async(ctx, id) => {
|
Self.import = async(ctx, id) => {
|
||||||
|
const conn = Self.dataSource.connector;
|
||||||
const args = ctx.args;
|
const args = ctx.args;
|
||||||
const models = Self.app.models;
|
const models = Self.app.models;
|
||||||
|
|
||||||
const entry = await models.Entry.findById(id);
|
const entry = await models.Entry.findById(id);
|
||||||
|
await entry.updateAttributes({
|
||||||
|
observation: args.notes
|
||||||
|
});
|
||||||
|
|
||||||
const buys = [];
|
const buys = [];
|
||||||
for (let buy of args.buys) {
|
for (let buy of args.buys) {
|
||||||
|
@ -44,6 +60,23 @@ module.exports = Self => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
await models.Buy.create(buys);
|
const createdBuys = await models.Buy.create(buys);
|
||||||
|
const buyIds = createdBuys.map(buy => buy.id);
|
||||||
|
|
||||||
|
/* let stmts = [];
|
||||||
|
let stmt;
|
||||||
|
|
||||||
|
stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc');
|
||||||
|
stmt = new ParameterizedSQL(
|
||||||
|
`CREATE TEMPORARY TABLE tmp.buyRecalc
|
||||||
|
(INDEX (id))
|
||||||
|
ENGINE = MEMORY
|
||||||
|
SELECT ? AS id`, [buyIds]);
|
||||||
|
|
||||||
|
stmts.push(stmt);
|
||||||
|
stmts.push('CALL buy_recalcPrices()');
|
||||||
|
|
||||||
|
const sql = ParameterizedSQL.join(stmts, ';');
|
||||||
|
await conn.executeStmt(sql); */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,13 +2,18 @@ module.exports = Self => {
|
||||||
Self.remoteMethod('importPreview', {
|
Self.remoteMethod('importPreview', {
|
||||||
description: '',
|
description: '',
|
||||||
accessType: 'READ',
|
accessType: 'READ',
|
||||||
accepts: {
|
accepts: [{
|
||||||
arg: 'id',
|
arg: 'id',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
required: true,
|
required: true,
|
||||||
description: 'The entry id',
|
description: 'The entry id',
|
||||||
http: {source: 'path'}
|
http: {source: 'path'}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
arg: 'buys',
|
||||||
|
type: ['Object'],
|
||||||
|
description: 'The buys',
|
||||||
|
}],
|
||||||
returns: {
|
returns: {
|
||||||
type: ['Object'],
|
type: ['Object'],
|
||||||
root: true
|
root: true
|
||||||
|
@ -19,7 +24,17 @@ module.exports = Self => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Self.importPreview = async id => {
|
Self.importPreview = async(id, buys) => {
|
||||||
|
const models = Self.app.models;
|
||||||
|
for (let buy of buys) {
|
||||||
|
const packaging = await models.Packaging.findOne({
|
||||||
|
fields: ['id'],
|
||||||
|
where: {volume: {gte: buy.volume}},
|
||||||
|
order: 'volume ASC'
|
||||||
|
});
|
||||||
|
buy.packageFk = packaging.id;
|
||||||
|
}
|
||||||
|
|
||||||
return buys;
|
return buys;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,4 +3,5 @@ module.exports = Self => {
|
||||||
require('../methods/entry/getEntry')(Self);
|
require('../methods/entry/getEntry')(Self);
|
||||||
require('../methods/entry/getBuys')(Self);
|
require('../methods/entry/getBuys')(Self);
|
||||||
require('../methods/entry/import')(Self);
|
require('../methods/entry/import')(Self);
|
||||||
|
require('../methods/entry/importPreview')(Self);
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"notes": {
|
"notes": {
|
||||||
"type": "String"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"isConfirmed": {
|
"isConfirmed": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
|
|
|
@ -59,8 +59,8 @@
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-textarea
|
<vn-textarea
|
||||||
vn-one
|
vn-one
|
||||||
label="Notes"
|
label="Observation"
|
||||||
ng-model="$ctrl.import.description">
|
ng-model="$ctrl.import.observation">
|
||||||
</vn-textarea>
|
</vn-textarea>
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
|
@ -90,7 +90,7 @@
|
||||||
<th translate center>Packing</th>
|
<th translate center>Packing</th>
|
||||||
<th translate center>Grouping</th>
|
<th translate center>Grouping</th>
|
||||||
<th translate center>Buying value</th>
|
<th translate center>Buying value</th>
|
||||||
<th translate center>Package</th>
|
<th translate center>Box</th>
|
||||||
<th translate center>Volume</th>
|
<th translate center>Volume</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -125,7 +125,16 @@
|
||||||
</vn-chip>
|
</vn-chip>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<td>{{::buy.buyingValue | currency: 'EUR':2}}</td>
|
<td>{{::buy.buyingValue | currency: 'EUR':2}}</td>
|
||||||
<td center title="{{::buy.packageFk | dashIfEmpty}}">{{::buy.packageFk | dashIfEmpty}}</td>
|
<td center title="{{::buy.packageFk | dashIfEmpty}}">
|
||||||
|
<vn-autocomplete
|
||||||
|
vn-one
|
||||||
|
url="Packagings"
|
||||||
|
show-field="id"
|
||||||
|
value-field="id"
|
||||||
|
where="{isBox: true}"
|
||||||
|
ng-model="buy.packageFk">
|
||||||
|
</vn-autocomplete>
|
||||||
|
</td>
|
||||||
<td center title="{{::buy.volume}}">{{::buy.volume | number}}</td>
|
<td center title="{{::buy.volume}}">{{::buy.volume | number}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -30,7 +30,7 @@ class Controller extends Section {
|
||||||
|
|
||||||
this.$.$applyAsync(() => {
|
this.$.$applyAsync(() => {
|
||||||
this.import.invoice = invoice.id_invoice;
|
this.import.invoice = invoice.id_invoice;
|
||||||
this.import.description = invoice.tx_awb;
|
this.import.observation = invoice.tx_awb;
|
||||||
|
|
||||||
const boxes = invoice.boxes;
|
const boxes = invoice.boxes;
|
||||||
const buys = [];
|
const buys = [];
|
||||||
|
@ -48,7 +48,13 @@ class Controller extends Section {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.import.buys = buys;
|
|
||||||
|
const params = {buys};
|
||||||
|
const query = `Entries/${this.entry.id}/importPreview`;
|
||||||
|
this.$http.get(query, {params}).then(res => {
|
||||||
|
this.import.buys = res.data;
|
||||||
|
});
|
||||||
|
// this.import.buys = buys;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue