72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
|
const strftime = require('strftime');
|
||
|
const database = require(`${appPath}/lib/database`);
|
||
|
const UserException = require(`${appPath}/lib/exceptions/userException`);
|
||
|
|
||
|
module.exports = {
|
||
|
name: 'rpt-receipt',
|
||
|
/* serverPrefetch() {
|
||
|
console.log(arguments);
|
||
|
return new Promise(accept => {
|
||
|
this.client = this.getReceipt();
|
||
|
});
|
||
|
}, */
|
||
|
async asyncData(ctx, params) {
|
||
|
Object.assign(this, this.methods);
|
||
|
|
||
|
const [[client]] = await this.fetchClient(params.receiptFk);
|
||
|
const [[receipt]] = await this.fetchReceipt(params.receiptFk);
|
||
|
|
||
|
if (!receipt)
|
||
|
throw new UserException('No receipt data found');
|
||
|
|
||
|
return {client, receipt};
|
||
|
},
|
||
|
created() {
|
||
|
if (this.client.locale)
|
||
|
this.$i18n.locale = this.client.locale;
|
||
|
|
||
|
const embeded = [];
|
||
|
this.files.map(file => {
|
||
|
embeded[file] = `file://${__dirname + file}`;
|
||
|
});
|
||
|
this.embeded = embeded;
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
files: ['/assets/images/signature.png']
|
||
|
};
|
||
|
},
|
||
|
methods: {
|
||
|
fetchClient(receiptFk) {
|
||
|
return database.pool.query(
|
||
|
`SELECT
|
||
|
c.id,
|
||
|
c.socialName,
|
||
|
u.lang locale
|
||
|
FROM receipt r
|
||
|
JOIN client c ON c.id = r.clientFk
|
||
|
JOIN account.user u ON u.id = c.id
|
||
|
WHERE r.id = ?`, [receiptFk]);
|
||
|
},
|
||
|
fetchReceipt(receiptFk) {
|
||
|
return database.pool.query(
|
||
|
`SELECT
|
||
|
r.id,
|
||
|
r.amountPaid,
|
||
|
r.amountUnpaid,
|
||
|
r.payed,
|
||
|
r.companyFk
|
||
|
FROM receipt r
|
||
|
JOIN client c ON c.id = r.clientFk
|
||
|
WHERE r.id = ?`, [receiptFk]);
|
||
|
}
|
||
|
/* dated: () => {
|
||
|
return strftime('%d-%m-%Y', new Date());
|
||
|
}, */
|
||
|
},
|
||
|
components: {
|
||
|
'report-header': require('../report-header'),
|
||
|
'report-footer': require('../report-footer'),
|
||
|
},
|
||
|
};
|