Merge pull request '3116-client_balance' (#768) from 3116-client_balance into dev
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
Reviewed-on: #768 Reviewed-by: Carlos Jimenez Ruiz <carlosjr@verdnatura.es>
This commit is contained in:
commit
e688e078ec
|
@ -25,6 +25,9 @@
|
|||
},
|
||||
"isAutoConciliated": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"maxAmount": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"acls": [{
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE vn.accountingType ADD maxAmount INT DEFAULT NULL NULL;
|
||||
|
||||
UPDATE vn.accountingType SET maxAmount = 1000 WHERE code = 'cash';
|
|
@ -7,7 +7,7 @@ ALTER TABLE `vn`.`zoneGeo` AUTO_INCREMENT = 1;
|
|||
ALTER TABLE `vn`.`ticket` AUTO_INCREMENT = 1;
|
||||
|
||||
INSERT INTO `salix`.`AccessToken` (`id`, `ttl`, `created`, `userId`)
|
||||
VALUES
|
||||
VALUES
|
||||
('TOTALLY_SECURE_TOKEN', '1209600', CURDATE(), 66);
|
||||
|
||||
|
||||
|
@ -154,16 +154,16 @@ INSERT INTO `vn`.`shelving` (`code`, `parkingFk`, `isPrinted`, `priority`, `park
|
|||
('GVC', '1', '0', '1', '0', '1106'),
|
||||
('HEJ', '2', '0', '1', '0', '1106');
|
||||
|
||||
INSERT INTO `vn`.`accountingType`(`id`, `description`, `receiptDescription`,`code`)
|
||||
INSERT INTO `vn`.`accountingType`(`id`, `description`, `receiptDescription`,`code`, `maxAmount`)
|
||||
VALUES
|
||||
(1, 'CC y Polizas de crédito', NULL, NULL),
|
||||
(2, 'Cash', 'Cash', 'cash'),
|
||||
(3, 'Credit card', 'Credit Card', 'creditCard'),
|
||||
(4, 'Finalcial lines', NULL, NULL),
|
||||
(5, 'Other products', NULL, NULL),
|
||||
(6, 'Loans', NULL, NULL),
|
||||
(7, 'Leasing', NULL, NULL),
|
||||
(8, 'Compensations', 'Compensations', 'compensation');
|
||||
(1, 'CC y Polizas de crédito', NULL, NULL, NULL),
|
||||
(2, 'Cash', 'Cash', 'cash', 1000),
|
||||
(3, 'Credit card', 'Credit Card', 'creditCard', NULL),
|
||||
(4, 'Finalcial lines', NULL, NULL, NULL),
|
||||
(5, 'Other products', NULL, NULL, NULL),
|
||||
(6, 'Loans', NULL, NULL, NULL),
|
||||
(7, 'Leasing', NULL, NULL, NULL),
|
||||
(8, 'Compensations', 'Compensations', 'compensation', NULL);
|
||||
|
||||
INSERT INTO `vn`.`bank`(`id`, `bank`, `account`, `cash`, `entityFk`, `isActive`, `currencyFk`)
|
||||
VALUES
|
||||
|
|
|
@ -105,7 +105,23 @@ describe('Client balance path', () => {
|
|||
expect(result).toContain('-€100.00');
|
||||
});
|
||||
|
||||
it('should create a new payment and check the cash exceeded the maximum', async() => {
|
||||
const amountPaid = '1001';
|
||||
|
||||
await page.closePopup();
|
||||
await page.waitToClick(selectors.clientBalance.newPaymentButton);
|
||||
await page.autocompleteSearch(selectors.clientBalance.newPaymentBank, 'Cash');
|
||||
await page.write(selectors.clientBalance.newPaymentAmount, amountPaid);
|
||||
await page.clearInput(selectors.clientBalance.newDescription);
|
||||
await page.write(selectors.clientBalance.newDescription, 'Payment');
|
||||
await page.waitToClick(selectors.clientBalance.saveButton);
|
||||
const message = await page.waitForSnackbar();
|
||||
|
||||
expect(message.text).toContain('Amount exceeded');
|
||||
});
|
||||
|
||||
it('should create a new payment that sets the balance back to the original negative value', async() => {
|
||||
await page.closePopup();
|
||||
await page.waitToClick(selectors.clientBalance.newPaymentButton);
|
||||
await page.autocompleteSearch(selectors.clientBalance.newPaymentBank, 'Pay on receipt');
|
||||
await page.overwrite(selectors.clientBalance.newPaymentAmount, '-150');
|
||||
|
|
|
@ -44,7 +44,8 @@
|
|||
label="Amount"
|
||||
ng-model="$ctrl.amountPaid"
|
||||
step="0.01"
|
||||
required="true">
|
||||
required="true"
|
||||
max="$ctrl.maxAmount">
|
||||
</vn-input-number>
|
||||
</vn-horizontal>
|
||||
<vn-horizontal>
|
||||
|
|
|
@ -61,8 +61,14 @@ class Controller extends Dialog {
|
|||
|
||||
if (value) {
|
||||
const accountingType = value.accountingType;
|
||||
this.receipt.description =
|
||||
if (this.originalDescription) {
|
||||
this.receipt.description =
|
||||
`${accountingType && accountingType.receiptDescription}, ${this.originalDescription}`;
|
||||
} else {
|
||||
this.receipt.description =
|
||||
`${accountingType && accountingType.receiptDescription}`;
|
||||
}
|
||||
this.maxAmount = accountingType && accountingType.maxAmount;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -123,6 +129,11 @@ class Controller extends Dialog {
|
|||
if (response !== 'accept')
|
||||
return super.responseHandler(response);
|
||||
|
||||
const exceededAmount = this.receipt.amountPaid > this.maxAmount;
|
||||
|
||||
if (this.bankSelection.accountingType.code == 'cash' && exceededAmount)
|
||||
return this.vnApp.showError(this.$t('Amount exceeded', {maxAmount: this.maxAmount}));
|
||||
|
||||
let receiptId;
|
||||
return this.$http.post(`Clients/${this.clientFk}/createReceipt`, this.receipt)
|
||||
.then(res => {
|
||||
|
|
|
@ -23,6 +23,7 @@ describe('Client', () => {
|
|||
clientFk: 1101,
|
||||
companyFk: 442
|
||||
};
|
||||
controller.bankSelection = {accountingType: {code: 'myCode'}};
|
||||
}));
|
||||
|
||||
describe('bankSelection() setter', () => {
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
View receipt: Ver recibo
|
||||
View receipt: Ver recibo
|
||||
Amount exceeded: Según ley contra el fraude no se puede recibir cobros por importe igual o superior a {{maxAmount}}
|
|
@ -6,7 +6,7 @@ class Controller extends Section {
|
|||
super($element, $);
|
||||
|
||||
const from = new Date();
|
||||
from.setDate(from.getDate());
|
||||
from.setDate(from.getDate() - 75);
|
||||
from.setHours(0, 0, 0, 0);
|
||||
|
||||
const to = new Date();
|
||||
|
|
Loading…
Reference in New Issue