diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js
index 9181e9d9c1..b19db24d77 100644
--- a/e2e/helpers/selectors.js
+++ b/e2e/helpers/selectors.js
@@ -285,21 +285,6 @@ export default {
clientMandate: {
firstMandateText: 'vn-client-mandate vn-card vn-table vn-tbody > vn-tr'
},
- clientBalance: {
- company: 'vn-client-balance-index vn-autocomplete[ng-model="$ctrl.companyId"]',
- newPaymentButton: `vn-float-button`,
- newPaymentBank: '.vn-dialog.shown vn-autocomplete[ng-model="$ctrl.bankFk"]',
- newPaymentAmount: '.vn-dialog.shown vn-input-number[ng-model="$ctrl.amountPaid"]',
- newDescription: 'vn-textfield[ng-model="$ctrl.receipt.description"]',
- deliveredAmount: '.vn-dialog vn-input-number[ng-model="$ctrl.deliveredAmount"]',
- refundAmount: '.vn-dialog vn-input-number[ng-model="$ctrl.amountToReturn"]',
- saveButton: '.vn-dialog.shown [response="accept"]',
- anyBalanceLine: 'vn-client-balance-index vn-tbody > vn-tr',
- firstLineBalance: 'vn-client-balance-index vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(8)',
- firstLineReference: 'vn-client-balance-index vn-tbody > vn-tr:nth-child(1) > vn-td-editable',
- firstLineReferenceInput: 'vn-client-balance-index vn-tbody > vn-tr:nth-child(1) > vn-td-editable > div > field > vn-textfield',
- compensationButton: 'vn-client-balance-index vn-icon-button[vn-dialog="send_compensation"]'
- },
webPayment: {
confirmFirstPaymentButton: 'vn-client-web-payment vn-tr:nth-child(1) vn-icon-button[icon="done_all"]',
firstPaymentConfirmed: 'vn-client-web-payment vn-tr:nth-child(1) vn-icon[icon="check"]'
@@ -841,15 +826,6 @@ export default {
landedDatePicker: 'vn-date-picker[label="Landed"]',
createButton: 'button[type=submit]'
},
- orderSummary: {
- id: 'vn-order-summary vn-one:nth-child(1) > vn-label-value:nth-child(1) span',
- alias: 'vn-order-summary vn-one:nth-child(1) > vn-label-value:nth-child(2) span',
- consignee: 'vn-order-summary vn-one:nth-child(2) > vn-label-value:nth-child(6) span',
- subtotal: 'vn-order-summary vn-one.taxes > p:nth-child(1)',
- vat: 'vn-order-summary vn-one.taxes > p:nth-child(2)',
- total: 'vn-order-summary vn-one.taxes > p:nth-child(3)',
- sale: 'vn-order-summary vn-tbody > vn-tr',
- },
orderCatalog: {
plantRealmButton: 'vn-order-catalog > vn-side-menu vn-icon[icon="icon-plant"]',
type: 'vn-order-catalog vn-autocomplete[data="$ctrl.itemTypes"]',
diff --git a/e2e/paths/02-client/14_balance.spec.js b/e2e/paths/02-client/14_balance.spec.js
index d3de842e30..b1c0f7eea8 100644
--- a/e2e/paths/02-client/14_balance.spec.js
+++ b/e2e/paths/02-client/14_balance.spec.js
@@ -1,6 +1,17 @@
import selectors from '../../helpers/selectors';
import getBrowser from '../../helpers/puppeteer';
+const $ = {
+ company: 'vn-client-balance-index vn-autocomplete[ng-model="$ctrl.companyId"]',
+ newPaymentButton: `vn-float-button`,
+ newPayment: '.vn-dialog.shown',
+ refundAmount: '.vn-dialog.shown [vn-name="amountToReturn"]',
+ saveButton: '.vn-dialog.shown [response="accept"]',
+ firstLineBalance: 'vn-client-balance-index vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(8)',
+ firstLineReference: 'vn-client-balance-index vn-tbody > vn-tr:nth-child(1) > vn-td-editable',
+ firstLineReferenceInput: 'vn-client-balance-index vn-tbody > vn-tr:nth-child(1) > vn-td-editable vn-textfield',
+};
+
describe('Client balance path', () => {
let browser;
let page;
@@ -18,125 +29,100 @@ describe('Client balance path', () => {
it('should now edit the local user config data', async() => {
await page.waitToClick(selectors.globalItems.userMenuButton);
await page.autocompleteSearch(selectors.globalItems.userLocalCompany, 'CCs');
- const message = await page.waitForSnackbar();
+ const companyMessage = await page.waitForSnackbar();
- expect(message.text).toContain('Data saved!');
- });
-
- it('should access to the balance section to check the data shown matches the local settings', async() => {
await page.accessToSection('client.card.balance.index');
- let result = await page.waitToGetProperty(selectors.clientBalance.company, 'value');
+ const company = await page.getValue($.company);
- expect(result).toEqual('CCs');
- });
-
- it('should now clear the user local settings', async() => {
await page.waitToClick(selectors.globalItems.userMenuButton);
await page.clearInput(selectors.globalItems.userConfigThirdAutocomplete);
const message = await page.waitForSnackbar();
- expect(message.text).toContain('Data saved!');
- });
-
- it('should reload the section', async() => {
await page.closePopup();
await page.reloadSection('client.card.balance.index');
+
+ expect(companyMessage.isSuccess).toBeTrue();
+ expect(company).toEqual('CCs');
+ expect(message.isSuccess).toBeTrue();
});
it('should create a new payment that clears the debt', async() => {
- await page.closePopup();
- await page.waitToClick(selectors.clientBalance.newPaymentButton);
- await page.autocompleteSearch(selectors.clientBalance.newPaymentBank, 'Cash');
- await page.clearInput(selectors.clientBalance.newDescription);
- await page.write(selectors.clientBalance.newDescription, 'Description');
- await page.waitToClick(selectors.clientBalance.saveButton);
+ await page.waitToClick($.newPaymentButton);
+ await page.fillForm($.newPayment, {
+ bank: 'Cash',
+ description: 'Description',
+ viewReceipt: false
+ });
+ await page.respondToDialog('accept');
const message = await page.waitForSnackbar();
- expect(message.text).toContain('Data saved!');
+ expect(message.isSuccess).toBeTrue();
});
- it('should edit the 1st line reference', async() => {
- await page.waitToClick(selectors.clientBalance.firstLineReference);
- await page.write(selectors.clientBalance.firstLineReferenceInput, 'Miscellaneous payment');
+ it('should edit the 1st line reference and check data', async() => {
+ await page.waitToClick($.firstLineReference);
+ await page.write($.firstLineReferenceInput, 'Miscellaneous payment');
await page.keyboard.press('Enter');
const message = await page.waitForSnackbar();
- expect(message.text).toContain('Data saved!');
- });
-
- it('should check balance is now 0, the reference was saved and the company is now VNL becouse the user local settings were removed', async() => {
await page.waitForSpinnerLoad();
- let company = await page
- .waitToGetProperty(selectors.clientBalance.company, 'value');
-
- let reference = await page
- .waitToGetProperty(selectors.clientBalance.firstLineReference, 'innerText');
-
- let firstBalanceLine = await page
- .waitToGetProperty(selectors.clientBalance.firstLineBalance, 'innerText');
+ let company = await page.getValue($.company);
+ let reference = await page.innerText($.firstLineReference);
+ let firstBalanceLine = await page.innerText($.firstLineBalance);
+ expect(message.isSuccess).toBeTrue();
expect(company).toEqual('VNL');
expect(reference).toEqual('Miscellaneous payment');
expect(firstBalanceLine).toContain('0.00');
});
- it('should create a new payment and check the cash comparison works correctly', async() => {
- const amountPaid = '100';
- const cashHanded = '500';
- const expectedRefund = '400';
-
- await page.waitToClick(selectors.clientBalance.newPaymentButton);
- await page.write(selectors.clientBalance.newPaymentAmount, amountPaid);
- await page.clearInput(selectors.clientBalance.newDescription);
- await page.write(selectors.clientBalance.newDescription, 'Payment');
- await page.write(selectors.clientBalance.deliveredAmount, cashHanded);
- const refund = await page.waitToGetProperty(selectors.clientBalance.refundAmount, 'value');
- await page.waitToClick(selectors.clientBalance.saveButton);
+ it('should create a new payment, check the cash comparison works correctly and balance value is -100', async() => {
+ await page.waitToClick($.newPaymentButton);
+ await page.fillForm($.newPayment, {
+ amountPaid: 100,
+ description: 'Payment',
+ deliveredAmount: 500,
+ viewReceipt: false
+ });
+ const refund = await page.getValue($.refundAmount);
+ await page.respondToDialog('accept');
const message = await page.waitForSnackbar();
- expect(refund).toEqual(expectedRefund);
- expect(message.text).toContain('Data saved!');
- });
-
- it('should check the balance value is now -100', async() => {
- let result = await page
- .waitToGetProperty(selectors.clientBalance.firstLineBalance, 'innerText');
+ const result = await page.innerText($.firstLineBalance);
+ expect(refund).toEqual('400');
+ expect(message.isSuccess).toBeTrue();
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);
+ await page.waitToClick($.newPaymentButton);
+ await page.fillForm($.newPayment, {
+ bank: 'Cash',
+ amountPaid: 1001,
+ description: 'Payment'
+ });
+ await page.waitToClick($.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() => {
+ it('should create a new payment that sets the balance back to negative value and check it', 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');
- await page.clearInput(selectors.clientBalance.newDescription);
- await page.write(selectors.clientBalance.newDescription, 'Description');
- await page.waitToClick(selectors.clientBalance.saveButton);
+ await page.waitToClick($.newPaymentButton);
+
+ await page.fillForm($.newPayment, {
+ bank: 'Pay on receipt',
+ amountPaid: -150,
+ description: 'Description'
+ });
+ await page.respondToDialog('accept');
const message = await page.waitForSnackbar();
- expect(message.text).toContain('Data saved!');
- });
-
- it('should check balance is now 50', async() => {
- let result = await page
- .waitToGetProperty(selectors.clientBalance.firstLineBalance, 'innerText');
+ const result = await page.innerText($.firstLineBalance);
+ expect(message.isSuccess).toBeTrue();
expect(result).toEqual('€50.00');
});
@@ -149,12 +135,9 @@ describe('Client balance path', () => {
await page.waitForState('client.index');
});
- it('should now search for the user Petter Parker', async() => {
+ it('should now search for the user Petter Parker not check the payment button is not present', async() => {
await page.accessToSearchResult('Petter Parker');
await page.accessToSection('client.card.balance.index');
- });
-
- it('should not be able to click the new payment button as it isnt present', async() => {
- await page.waitForSelector(selectors.clientBalance.newPaymentButton, {hidden: true});
+ await page.waitForSelector($.newPaymentButton, {hidden: true});
});
});
diff --git a/e2e/paths/02-client/23_send_compensation.spec.js b/e2e/paths/02-client/23_send_compensation.spec.js
index 6ec8936a8b..7ab2d0bac9 100644
--- a/e2e/paths/02-client/23_send_compensation.spec.js
+++ b/e2e/paths/02-client/23_send_compensation.spec.js
@@ -1,6 +1,11 @@
-import selectors from '../../helpers/selectors';
import getBrowser from '../../helpers/puppeteer';
+const $ = {
+ company: 'vn-client-balance-index vn-autocomplete[ng-model="$ctrl.companyId"]',
+ compensationButton: 'vn-client-balance-index vn-icon-button[vn-dialog="send_compensation"]',
+ saveButton: '.vn-dialog.shown [response="accept"]'
+};
+
describe('Client Send balance compensation', () => {
let browser;
let page;
@@ -17,9 +22,9 @@ describe('Client Send balance compensation', () => {
});
it(`should click on send compensation button`, async() => {
- await page.autocompleteSearch(selectors.clientBalance.company, 'VNL');
- await page.waitToClick(selectors.clientBalance.compensationButton);
- await page.waitToClick(selectors.clientBalance.saveButton);
+ await page.autocompleteSearch($.company, 'VNL');
+ await page.waitToClick($.compensationButton);
+ await page.waitToClick($.saveButton);
const message = await page.waitForSnackbar();
expect(message.text).toContain('Notification sent!');
diff --git a/e2e/paths/04-item/03_tax.spec.js b/e2e/paths/04-item/03_tax.spec.js
index 8b3b0f8b11..83f4e6bee5 100644
--- a/e2e/paths/04-item/03_tax.spec.js
+++ b/e2e/paths/04-item/03_tax.spec.js
@@ -53,12 +53,4 @@ describe('Item edit tax path', () => {
expect(firstVatType).toEqual('Reduced VAT');
});
-
- // # #2680 Undo changes button bugs
- xit(`should now click the undo changes button and see the form is restored`, async() => {
- await page.waitToClick(selectors.itemTax.undoChangesButton);
- const firstVatType = await page.waitToGetProperty(selectors.itemTax.firstClass, 'value');
-
- expect(firstVatType).toEqual('General VAT');
- });
});
diff --git a/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js b/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js
index 1b32040465..2c96467082 100644
--- a/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js
+++ b/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js
@@ -316,7 +316,7 @@ describe('Ticket Edit sale path', () => {
it('should confirm the transfered quantity is the correct one', async() => {
const result = await page.waitToGetProperty(selectors.ticketSales.secondSaleQuantityCell, 'innerText');
- expect(result).toContain('20');
+ expect(result).toContain('10');
});
it('should go back to the original ticket sales section', async() => {
@@ -425,20 +425,6 @@ describe('Ticket Edit sale path', () => {
expect(result).toBeFalsy();
});
- // tickets no longer update their totals instantly, a task performed ever 5-10 mins does it. disabled this test until it changes.
- xit('should update all sales discount', async() => {
- await page.closePopup();
- await page.waitToClick(selectors.ticketSales.moreMenu);
- await page.waitToClick(selectors.ticketSales.moreMenuUpdateDiscount);
- await page.waitForSelector(selectors.ticketSales.moreMenuUpdateDiscountInput);
- await page.type(selectors.ticketSales.moreMenuUpdateDiscountInput, '100');
- await page.keyboard.press('Enter');
- await page.waitForTextInElement(selectors.ticketSales.totalImport, '0.00');
- const result = await page.waitToGetProperty(selectors.ticketSales.totalImport, 'innerText');
-
- expect(result).toContain('0.00');
- });
-
it('should log in as Production role and go to a target ticket summary', async() => {
await page.loginAndModule('production', 'ticket');
await page.accessToSearchResult('13');
diff --git a/e2e/paths/05-ticket/18_index_payout.spec.js b/e2e/paths/05-ticket/18_index_payout.spec.js
index 220dacf61c..7e5201d11a 100644
--- a/e2e/paths/05-ticket/18_index_payout.spec.js
+++ b/e2e/paths/05-ticket/18_index_payout.spec.js
@@ -1,5 +1,10 @@
import selectors from '../../helpers/selectors.js';
import getBrowser from '../../helpers/puppeteer';
+const $ = {
+ newPayment: '.vn-dialog.shown',
+ anyBalanceLine: 'vn-client-balance-index vn-tbody > vn-tr',
+ firstLineReference: 'vn-client-balance-index vn-tbody > vn-tr:nth-child(1) > vn-td-editable'
+};
describe('Ticket index payout path', () => {
let browser;
@@ -8,17 +13,14 @@ describe('Ticket index payout path', () => {
beforeAll(async() => {
browser = await getBrowser();
page = browser.page;
+ await page.loginAndModule('administrative', 'ticket');
+ await page.waitForState('ticket.index');
});
afterAll(async() => {
await browser.close();
});
- it('should navigate to the ticket index', async() => {
- await page.loginAndModule('administrative', 'ticket');
- await page.waitForState('ticket.index');
- });
-
it('should check the second ticket from a client and 1 of another', async() => {
await page.waitToClick(selectors.globalItems.searchButton);
await page.waitToClick(selectors.ticketsIndex.thirdTicketCheckbox);
@@ -42,27 +44,27 @@ describe('Ticket index payout path', () => {
await page.waitForSelector(selectors.ticketsIndex.payoutCompany);
});
- it('should fill the company and bank to perform a payout', async() => {
- await page.autocompleteSearch(selectors.ticketsIndex.payoutCompany, 'VNL');
- await page.autocompleteSearch(selectors.ticketsIndex.payoutBank, 'cash');
- await page.write(selectors.clientBalance.newPaymentAmount, '100');
- await page.write(selectors.ticketsIndex.payoutDescription, 'Payment');
- await page.waitToClick(selectors.ticketsIndex.submitPayout);
+ it('should fill the company and bank to perform a payout and check a new balance line was entered', async() => {
+ await page.fillForm($.newPayment, {
+ company: 'VNL',
+ bank: 'cash',
+ amountPaid: 100,
+ description: 'Payment',
+ viewReceipt: false
+ });
+ await page.respondToDialog('accept');
const message = await page.waitForSnackbar();
- expect(message.text).toContain('Data saved!');
- });
-
- it('should navigate to the client balance section and check a new balance line was entered', async() => {
await page.waitToClick(selectors.globalItems.homeButton);
await page.selectModule('client');
await page.accessToSearchResult('1101');
await page.accessToSection('client.card.balance.index');
- await page.waitForSelector(selectors.clientBalance.anyBalanceLine);
- const count = await page.countElement(selectors.clientBalance.anyBalanceLine);
- const reference = await page.waitToGetProperty(selectors.clientBalance.firstLineReference, 'innerText');
+ await page.waitForSelector($.anyBalanceLine);
+ const count = await page.countElement($.anyBalanceLine);
+ const reference = await page.innerText($.firstLineReference);
+ expect(message.isSuccess).toBeTrue();
expect(count).toEqual(4);
- expect(reference).toContain('Cash, Albaran: 7, 8Payment');
+ expect(reference).toContain('Payment');
});
});
diff --git a/e2e/paths/07-order/01_summary.spec.js b/e2e/paths/07-order/01_summary.spec.js
index 922d5eeee5..9df481ef67 100644
--- a/e2e/paths/07-order/01_summary.spec.js
+++ b/e2e/paths/07-order/01_summary.spec.js
@@ -1,6 +1,15 @@
-import selectors from '../../helpers/selectors.js';
import getBrowser from '../../helpers/puppeteer';
+const $ = {
+ id: 'vn-order-summary vn-one:nth-child(1) > vn-label-value:nth-child(1) span',
+ alias: 'vn-order-summary vn-one:nth-child(1) > vn-label-value:nth-child(2) span',
+ consignee: 'vn-order-summary vn-one:nth-child(2) > vn-label-value:nth-child(6) span',
+ subtotal: 'vn-order-summary vn-one.taxes > p:nth-child(1)',
+ vat: 'vn-order-summary vn-one.taxes > p:nth-child(2)',
+ total: 'vn-order-summary vn-one.taxes > p:nth-child(3)',
+ sale: 'vn-order-summary vn-tbody > vn-tr',
+};
+
describe('Order summary path', () => {
let browser;
let page;
@@ -15,49 +24,23 @@ describe('Order summary path', () => {
await browser.close();
});
- it('should reach the order summary section', async() => {
+ it('should reach the order summary section and check data', async() => {
await page.waitForState('order.card.summary');
- });
- it('should check the summary contains the order id', async() => {
- const result = await page.waitToGetProperty(selectors.orderSummary.id, 'innerText');
+ const id = await page.innerText($.id);
+ const alias = await page.innerText($.alias);
+ const consignee = await page.innerText($.consignee);
+ const subtotal = await page.innerText($.subtotal);
+ const vat = await page.innerText($.vat);
+ const total = await page.innerText($.total);
+ const sale = await page.countElement($.sale);
- expect(result).toEqual('16');
- });
-
- it('should check the summary contains the order alias', async() => {
- const result = await page.waitToGetProperty(selectors.orderSummary.alias, 'innerText');
-
- expect(result).toEqual('Many places');
- });
-
- it('should check the summary contains the order consignee', async() => {
- const result = await page.waitToGetProperty(selectors.orderSummary.consignee, 'innerText');
-
- expect(result).toEqual('address 26 - Gotham (Province one)');
- });
-
- it('should check the summary contains the order subtotal', async() => {
- const result = await page.waitToGetProperty(selectors.orderSummary.subtotal, 'innerText');
-
- expect(result.length).toBeGreaterThan(1);
- });
-
- it('should check the summary contains the order vat', async() => {
- const result = await page.waitToGetProperty(selectors.orderSummary.vat, 'innerText');
-
- expect(result.length).toBeGreaterThan(1);
- });
-
- it('should check the summary contains the order total', async() => {
- const result = await page.waitToGetProperty(selectors.orderSummary.total, 'innerText');
-
- expect(result.length).toBeGreaterThan(1);
- });
-
- it('should check the summary contains the order sales', async() => {
- const result = await page.countElement(selectors.orderSummary.sale);
-
- expect(result).toBeGreaterThan(0);
+ expect(id).toEqual('16');
+ expect(alias).toEqual('Many places');
+ expect(consignee).toEqual('address 26 - Gotham (Province one)');
+ expect(subtotal.length).toBeGreaterThan(1);
+ expect(vat.length).toBeGreaterThan(1);
+ expect(total.length).toBeGreaterThan(1);
+ expect(sale).toBeGreaterThan(0);
});
});
diff --git a/e2e/paths/08-route/04_tickets.spec.js b/e2e/paths/08-route/04_tickets.spec.js
index 950e11d3e1..ccd5562c25 100644
--- a/e2e/paths/08-route/04_tickets.spec.js
+++ b/e2e/paths/08-route/04_tickets.spec.js
@@ -57,11 +57,4 @@ describe('Route tickets path', () => {
it('should now count how many tickets are in route to find one less', async() => {
await page.waitForNumberOfElements(selectors.routeTickets.anyTicket, 0);
});
-
- // #2862 updateVolume() route descriptor no actualiza volumen
- xit('should confirm the route volume on the descriptor has been updated by the changes made', async() => {
- const result = await page.waitToGetProperty(selectors.routeDescriptor.volume, 'innerText');
-
- expect(result).toEqual('0 / 50 m³');
- });
});
diff --git a/e2e/paths/12-entry/03_latestBuys.spec.js b/e2e/paths/12-entry/03_latestBuys.spec.js
index a73e12659f..9ec072912b 100644
--- a/e2e/paths/12-entry/03_latestBuys.spec.js
+++ b/e2e/paths/12-entry/03_latestBuys.spec.js
@@ -42,20 +42,6 @@ describe('Entry lastest buys path', () => {
expect(httpRequests.find(req => req.includes(('typeFk')))).toBeDefined();
});
- it('should filter by from date', async() => {
- await page.pickDate(selectors.entryLatestBuys.fromInput, new Date());
- await page.waitToClick(selectors.entryLatestBuys.chip);
-
- expect(httpRequests.find(req => req.includes(('from')))).toBeDefined();
- });
-
- it('should filter by to date', async() => {
- await page.pickDate(selectors.entryLatestBuys.toInput, new Date());
- await page.waitToClick(selectors.entryLatestBuys.chip);
-
- expect(httpRequests.find(req => req.includes(('to')))).toBeDefined();
- });
-
it('should filter by sales person', async() => {
await page.autocompleteSearch(selectors.entryLatestBuys.salesPersonInput, 'buyerNick');
await page.waitToClick(selectors.entryLatestBuys.chip);
diff --git a/front/core/components/popover/index.spec.js b/front/core/components/popover/index.spec.js
index dc6e3b23f2..4590a8e245 100644
--- a/front/core/components/popover/index.spec.js
+++ b/front/core/components/popover/index.spec.js
@@ -36,30 +36,6 @@ describe('Component vnPopover', () => {
expect(controller.emit).not.toHaveBeenCalledWith('open');
});
-
- // #1615 migrar karma a jest (this doesn't work anymore, needs fixing)
- xit(`should check that popover is visible into the screen`, () => {
- $parent.css({
- backgroundColor: 'red',
- position: 'absolute',
- width: '50px',
- height: '50px',
- top: '0',
- left: '100px'
- });
- controller.show($parent[0]);
-
- let rect = controller.popover.getBoundingClientRect();
- let style = controller.window.getComputedStyle(controller.element);
-
- expect(style.visibility).toEqual('visible');
- expect(style.display).not.toEqual('none');
-
- expect(0).toBeLessThanOrEqual(rect.top);
- expect(0).toBeLessThanOrEqual(rect.left);
- expect(controller.window.innerHeight).toBeGreaterThan(rect.bottom);
- expect(controller.window.innerWidth).toBeGreaterThan(rect.right);
- });
});
describe('hide()', () => {
diff --git a/loopback/locale/en.json b/loopback/locale/en.json
index ae0da8170c..cffedd8913 100644
--- a/loopback/locale/en.json
+++ b/loopback/locale/en.json
@@ -170,5 +170,6 @@
"comercialName": "Comercial",
"Added observation": "Added observation",
"Comment added to client": "Comment added to client",
- "This ticket is already a refund": "This ticket is already a refund"
+ "This ticket is already a refund": "This ticket is already a refund",
+ "A claim with that sale already exists": "A claim with that sale already exists"
}
\ No newline at end of file
diff --git a/modules/client/front/balance/create/index.html b/modules/client/front/balance/create/index.html
index 524b2b2efa..27b182c9ac 100644
--- a/modules/client/front/balance/create/index.html
+++ b/modules/client/front/balance/create/index.html
@@ -13,6 +13,7 @@