hedera-web/back/common/models/order.js

80 lines
2.0 KiB
JavaScript

module.exports = Self => {
Self.remoteMethod('checkoutInfo', {
description: 'Get the checkout information for an order',
accessType: 'READ',
accepts: [
{
arg: 'id',
type: 'Number',
description: 'The order id'
}
],
returns: {
type: 'Object',
description: 'The checkout information',
root: true,
},
http: {
path: `/:id/checkoutInfo`,
verb: 'GET'
}
});
Self.checkoutInfo = async id => {
let $ = Self.app.models;
let order = await Self.findById(id, {
fields: ['taxableBase', 'tax', 'total', 'clientFk']
});
let {credit} = await $.Client.findById(order.clientFk, {
fields: ['credit']
});
let [{debt}] = await queryP(
`SELECT vn.clientGetDebt(?, CURDATE()) debt`,
[order.clientFk]
);
let bank = await $.MainAccountBank.findOne();
return {order, credit, debt, bank};
};
Self.remoteMethod('confirm', {
description: 'Confirms an order',
accessType: 'WRITE',
accepts: [
{
arg: 'id',
type: 'Number',
description: 'The order id'
}
],
returns: {
type: 'Boolean',
description: 'The confirm result',
root: true,
},
http: {
path: `/:id/confirm`,
verb: 'POST'
}
});
Self.confirm = async id => {
await queryP(`CALL hedera.order_confirm(?)`, [id]);
return true;
};
async function queryP(sql, params) {
return new Promise((resolve, reject) => {
Self.dataSource.connector.query(sql, params, (err, res) => {
if (err) return reject(err);
return resolve(res);
})
});
}
};