This commit is contained in:
parent
6c3cea56aa
commit
a81e705251
|
@ -1 +1,2 @@
|
||||||
INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (162, 'InvoiceOut', 'delete', 'WRITE', 'ALLOW', 'ROLE', 'invoicing');
|
INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (162, 'InvoiceOut', 'delete', 'WRITE', 'ALLOW', 'ROLE', 'invoicing');
|
||||||
|
INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (163, 'InvoiceOut', 'book', 'WRITE', 'ALLOW', 'ROLE', 'invoicing');
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
|
||||||
|
module.exports = Self => {
|
||||||
|
Self.remoteMethod('book', {
|
||||||
|
description: 'Book a invoiceOut',
|
||||||
|
accessType: 'WRITE',
|
||||||
|
accepts: {
|
||||||
|
arg: 'ref',
|
||||||
|
type: 'string',
|
||||||
|
required: true,
|
||||||
|
description: 'The invoiceOut ref',
|
||||||
|
http: {source: 'path'}
|
||||||
|
},
|
||||||
|
returns: {
|
||||||
|
type: 'object',
|
||||||
|
root: true
|
||||||
|
},
|
||||||
|
http: {
|
||||||
|
path: `/:ref/book`,
|
||||||
|
verb: 'POST'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Self.book = async ref => {
|
||||||
|
return Self.rawSql(`CALL vn.invoiceOutAgain(?)`, [ref]);
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,32 @@
|
||||||
|
const app = require('vn-loopback/server/server');
|
||||||
|
|
||||||
|
describe('invoiceOut book()', () => {
|
||||||
|
const invoiceOutId = 5;
|
||||||
|
let invoiceOutRef;
|
||||||
|
let OriginalInvoiceOut;
|
||||||
|
let updatedInvoiceOut;
|
||||||
|
afterAll(async done => {
|
||||||
|
updatedInvoiceOut.updateAttributes({booked: OriginalInvoiceOut.booked, hasPdf: OriginalInvoiceOut.hasPdf});
|
||||||
|
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should check that invoice out booked is untainted', async() => {
|
||||||
|
const invoiceOut = await app.models.InvoiceOut.findById(invoiceOutId);
|
||||||
|
|
||||||
|
expect(invoiceOut.booked).toBeNull();
|
||||||
|
expect(invoiceOut.hasPdf).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it(`should confirm the book property have been updated`, async() => {
|
||||||
|
OriginalInvoiceOut = await app.models.InvoiceOut.findById(invoiceOutId);
|
||||||
|
invoiceOutRef = OriginalInvoiceOut.ref;
|
||||||
|
|
||||||
|
await app.models.InvoiceOut.book(invoiceOutRef);
|
||||||
|
|
||||||
|
updatedInvoiceOut = await app.models.InvoiceOut.findById(invoiceOutId);
|
||||||
|
|
||||||
|
expect(updatedInvoiceOut.booked).toEqual(jasmine.any(Object));
|
||||||
|
expect(updatedInvoiceOut.hasPdf).toBeFalsy();
|
||||||
|
});
|
||||||
|
});
|
|
@ -4,4 +4,5 @@ module.exports = Self => {
|
||||||
require('../methods/invoiceOut/download')(Self);
|
require('../methods/invoiceOut/download')(Self);
|
||||||
require('../methods/invoiceOut/regenerate')(Self);
|
require('../methods/invoiceOut/regenerate')(Self);
|
||||||
require('../methods/invoiceOut/delete')(Self);
|
require('../methods/invoiceOut/delete')(Self);
|
||||||
|
require('../methods/invoiceOut/book')(Self);
|
||||||
};
|
};
|
||||||
|
|
|
@ -58,3 +58,8 @@
|
||||||
on-response="$ctrl.deleteInvoiceOut(response)"
|
on-response="$ctrl.deleteInvoiceOut(response)"
|
||||||
question="Are you sure you want to delete this invoice?">
|
question="Are you sure you want to delete this invoice?">
|
||||||
</vn-confirm>
|
</vn-confirm>
|
||||||
|
<vn-confirm
|
||||||
|
vn-id="bookConfirmation"
|
||||||
|
on-response="$ctrl.bookInvoiceOut(response)"
|
||||||
|
question="Are you sure you want to book this invoice?">
|
||||||
|
</vn-confirm>
|
|
@ -11,7 +11,8 @@ class Controller {
|
||||||
this.aclService = aclService;
|
this.aclService = aclService;
|
||||||
this.moreOptions = [
|
this.moreOptions = [
|
||||||
{callback: this.showInvoiceOutPdf, name: 'Show invoice out PDF'},
|
{callback: this.showInvoiceOutPdf, name: 'Show invoice out PDF'},
|
||||||
{callback: this.showDeleteInvoiceOutDialog, name: 'Delete InvoiceOut', acl: 'invoicing'}
|
{callback: this.showDeleteInvoiceOutDialog, name: 'Delete InvoiceOut', acl: 'invoicing'},
|
||||||
|
{callback: this.showBookInvoiceOutDialog, name: 'Book invoice', acl: 'invoicing'}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,6 +61,10 @@ class Controller {
|
||||||
this.$scope.deleteConfirmation.show();
|
this.$scope.deleteConfirmation.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
showBookInvoiceOutDialog() {
|
||||||
|
this.$scope.bookConfirmation.show();
|
||||||
|
}
|
||||||
|
|
||||||
deleteInvoiceOut(response) {
|
deleteInvoiceOut(response) {
|
||||||
if (response === 'ACCEPT') {
|
if (response === 'ACCEPT') {
|
||||||
const query = `/invoiceOut/api/InvoiceOuts/${this.invoiceOut.id}/delete`;
|
const query = `/invoiceOut/api/InvoiceOuts/${this.invoiceOut.id}/delete`;
|
||||||
|
@ -70,6 +75,16 @@ class Controller {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bookInvoiceOut(response) {
|
||||||
|
if (response === 'ACCEPT') {
|
||||||
|
const query = `/invoiceOut/api/InvoiceOuts/${this.invoiceOut.ref}/book`;
|
||||||
|
this.$http.post(query).then(() => {
|
||||||
|
this.vnApp.showSuccess(this.$translate.instant('InvoiceOut booked'));
|
||||||
|
this.$state.go('invoiceOut.index');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
set quicklinks(value = {}) {
|
set quicklinks(value = {}) {
|
||||||
this._quicklinks = Object.assign(value, this._quicklinks);
|
this._quicklinks = Object.assign(value, this._quicklinks);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,3 +6,6 @@ Show invoice out PDF: Ver factura emitida en PDF
|
||||||
Delete InvoiceOut: Borrar factura
|
Delete InvoiceOut: Borrar factura
|
||||||
InvoiceOut deleted: Factura eliminada
|
InvoiceOut deleted: Factura eliminada
|
||||||
Are you sure you want to delete this invoice?: Estas seguro de eliminar esta factura?
|
Are you sure you want to delete this invoice?: Estas seguro de eliminar esta factura?
|
||||||
|
Book invoice: Asentar factura
|
||||||
|
InvoiceOut booked: Factura asentada
|
||||||
|
Are you sure you want to book this invoice?: Estas seguro de querer asentar esta factura?
|
Loading…
Reference in New Issue