2019-03-26 13:27:08 +00:00
|
|
|
import ngModule from '../module';
|
2020-04-25 09:50:04 +00:00
|
|
|
import Descriptor from 'salix/components/descriptor';
|
2019-03-26 13:27:08 +00:00
|
|
|
|
2020-04-25 09:50:04 +00:00
|
|
|
class Controller extends Descriptor {
|
2019-03-26 13:27:08 +00:00
|
|
|
get invoiceOut() {
|
2020-04-30 10:48:52 +00:00
|
|
|
return this.entity;
|
2019-04-26 10:05:49 +00:00
|
|
|
}
|
|
|
|
|
2020-04-30 10:48:52 +00:00
|
|
|
set invoiceOut(value) {
|
|
|
|
this.entity = value;
|
2019-04-30 09:03:48 +00:00
|
|
|
}
|
|
|
|
|
2020-03-31 13:15:16 +00:00
|
|
|
deleteInvoiceOut() {
|
2020-04-30 10:48:52 +00:00
|
|
|
return this.$http.post(`InvoiceOuts/${this.id}/delete`)
|
2020-03-31 13:15:16 +00:00
|
|
|
.then(() => this.$state.go('invoiceOut.index'))
|
|
|
|
.then(() => this.vnApp.showSuccess(this.$t('InvoiceOut deleted')));
|
2019-04-26 10:05:49 +00:00
|
|
|
}
|
|
|
|
|
2020-03-31 13:15:16 +00:00
|
|
|
bookInvoiceOut() {
|
2020-04-30 10:48:52 +00:00
|
|
|
return this.$http.post(`InvoiceOuts/${this.invoiceOut.ref}/book`)
|
2020-03-31 13:15:16 +00:00
|
|
|
.then(() => this.$state.reload())
|
|
|
|
.then(() => this.vnApp.showSuccess(this.$t('InvoiceOut booked')));
|
2019-04-30 09:03:48 +00:00
|
|
|
}
|
2020-04-30 10:48:52 +00:00
|
|
|
|
2021-03-15 12:43:22 +00:00
|
|
|
createInvoicePdf() {
|
|
|
|
const invoiceId = this.invoiceOut.id;
|
|
|
|
return this.$http.post(`InvoiceOuts/${invoiceId}/createPdf`)
|
|
|
|
.then(() => {
|
|
|
|
const snackbarMessage = this.$t(
|
|
|
|
`The invoice PDF document has been regenerated`);
|
|
|
|
this.vnApp.showSuccess(snackbarMessage);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-05-29 09:10:58 +00:00
|
|
|
get filter() {
|
|
|
|
if (this.invoiceOut)
|
|
|
|
return JSON.stringify({refFk: this.invoiceOut.ref});
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2020-04-30 10:48:52 +00:00
|
|
|
loadData() {
|
|
|
|
const filter = {
|
|
|
|
include: [
|
|
|
|
{
|
|
|
|
relation: 'company',
|
|
|
|
scope: {
|
|
|
|
fields: ['id', 'code']
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
relation: 'client',
|
|
|
|
scope: {
|
|
|
|
fields: ['id', 'name']
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
};
|
|
|
|
|
|
|
|
return this.getData(`InvoiceOuts/${this.id}`, {filter})
|
|
|
|
.then(res => this.entity = res.data);
|
|
|
|
}
|
2021-07-19 10:31:09 +00:00
|
|
|
|
2021-09-20 11:59:57 +00:00
|
|
|
sendInvoice($data) {
|
2021-07-19 10:31:09 +00:00
|
|
|
return this.vnEmail.send('invoice', {
|
|
|
|
recipientId: this.invoiceOut.client.id,
|
2021-09-20 11:59:57 +00:00
|
|
|
recipient: $data.email,
|
2021-07-19 10:31:09 +00:00
|
|
|
invoiceId: this.id
|
|
|
|
});
|
|
|
|
}
|
2019-03-26 13:27:08 +00:00
|
|
|
}
|
|
|
|
|
2020-04-25 09:50:04 +00:00
|
|
|
ngModule.vnComponent('vnInvoiceOutDescriptor', {
|
2019-03-26 13:27:08 +00:00
|
|
|
template: require('./index.html'),
|
2020-04-25 09:50:04 +00:00
|
|
|
controller: Controller,
|
2019-03-26 13:27:08 +00:00
|
|
|
bindings: {
|
2020-04-25 09:50:04 +00:00
|
|
|
invoiceOut: '<'
|
|
|
|
}
|
2019-03-26 13:27:08 +00:00
|
|
|
});
|