Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 3235-entry_summary
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
commit
1ba7f16ad3
|
@ -485,7 +485,8 @@ INSERT INTO `vn`.`invoiceOutSerial` (`code`, `description`, `isTaxed`, `taxAreaF
|
|||
VALUES
|
||||
('A', 'Global nacional', 1, 'NATIONAL', 0),
|
||||
('T', 'Española rapida', 1, 'NATIONAL', 0),
|
||||
('V', 'Intracomunitaria global', 0, 'CEE', 1);
|
||||
('V', 'Intracomunitaria global', 0, 'CEE', 1),
|
||||
('M', 'Múltiple nacional', 1, 'NATIONAL', 0);
|
||||
|
||||
INSERT INTO `vn`.`invoiceOut`(`id`, `serial`, `amount`, `issued`,`clientFk`, `created`, `companyFk`, `dued`, `booked`, `bankFk`, `hasPdf`)
|
||||
VALUES
|
||||
|
@ -795,25 +796,25 @@ INSERT INTO `vn`.`itemFamily`(`code`, `description`)
|
|||
('SER', 'Services'),
|
||||
('VT', 'Sales');
|
||||
|
||||
INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `isOnOffer`, `expenceFk`, `isBargain`, `comment`, `relevancy`, `image`, `subName`, `minPrice`, `stars`, `family`)
|
||||
INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenceFk`, `comment`, `relevancy`, `image`, `subName`, `minPrice`, `stars`, `family`)
|
||||
VALUES
|
||||
(1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 0, 2000000000, 0, NULL, 0, '1', NULL, 0, 1, 'VT'),
|
||||
(2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 0, 2000000000, 0, NULL, 0, '2', NULL, 0, 2, 'VT'),
|
||||
(3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 0, 4751000000, 0, NULL, 0, '3', NULL, 0, 5, 'VT'),
|
||||
(4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 1, 4751000000, 0, NULL, 0, '4', NULL, 0, 3, 'VT'),
|
||||
(5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 1, 4751000000, 0, NULL, 0, '5', NULL, 0, 3, 'VT'),
|
||||
(6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 0, 4751000000, 0, NULL, 0, '6', NULL, 0, 4, 'VT'),
|
||||
(7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 0, 4751000000, 0, NULL, 0, '7', NULL, 0, 4, 'VT'),
|
||||
(8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 0, 2000000000, 0, NULL, 0, '8', NULL, 0, 5, 'VT'),
|
||||
(9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 0, 2000000000, 0, NULL, 0, '9', NULL, 0, 4, 'VT'),
|
||||
(10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 0, 4751000000, 0, NULL, 0, '10', NULL, 0, 4, 'VT'),
|
||||
(11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 1, 4751000000, 0, NULL, 0, '11', NULL, 0, 4, 'VT'),
|
||||
(12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 1, 4751000000, 0, NULL, 0, '12', NULL, 0, 3, 'VT'),
|
||||
(13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 0, 4751000000, 0, NULL, 0, '13', NULL, 0, 2, 'VT'),
|
||||
(14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 0, 4751000000, 0, NULL, 0, '', NULL, 0, 4, 'VT'),
|
||||
(15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 0, 4751000000, 0, NULL, 0, '', NULL, 0, 0, 'EMB'),
|
||||
(16, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 0, 4751000000, 0, NULL, 0, '', NULL, 0, 0, 'EMB'),
|
||||
(71, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 1, 4751000000, 0, NULL, 0, '', NULL, 0, 0, 'VT');
|
||||
(1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'VT'),
|
||||
(2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT'),
|
||||
(3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT'),
|
||||
(4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT'),
|
||||
(5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT'),
|
||||
(6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT'),
|
||||
(7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT'),
|
||||
(8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT'),
|
||||
(9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT'),
|
||||
(10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT'),
|
||||
(11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT'),
|
||||
(12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT'),
|
||||
(13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 0, 2, 'VT'),
|
||||
(14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT'),
|
||||
(15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'),
|
||||
(16, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'),
|
||||
(71, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT');
|
||||
|
||||
-- Update the taxClass after insert of the items
|
||||
UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2
|
||||
|
@ -2232,8 +2233,8 @@ INSERT IGNORE INTO `vn`.`greugeConfig` (`id`, `freightPickUpPrice`) VALUES ('1',
|
|||
|
||||
INSERT INTO `vn`.`temperature`(`code`, `name`, `description`)
|
||||
VALUES
|
||||
('WARM', 'Warm', 'Warm'),
|
||||
('COOL', 'Cool', 'Cool');
|
||||
('warm', 'Warm', 'Warm'),
|
||||
('cool', 'Cool', 'Cool');
|
||||
|
||||
INSERT INTO `vn`.`thermograph`(`id`, `model`)
|
||||
VALUES
|
||||
|
|
|
@ -5,10 +5,11 @@ import {url as defaultURL} from './config';
|
|||
|
||||
export async function getBrowser() {
|
||||
const args = [
|
||||
'--no-sandbox',
|
||||
`--window-size=${ 1920 },${ 1080 }`,
|
||||
'--single-process',
|
||||
'--no-zygote'
|
||||
// '--disable-gpu'
|
||||
// '--no-sandbox',
|
||||
// '--single-process',
|
||||
// '--no-zygote',
|
||||
// '--disable-dev-shm-usage'
|
||||
// '--full-memory-crash-report',
|
||||
// '--unlimited-storage'
|
||||
|
@ -26,7 +27,7 @@ export async function getBrowser() {
|
|||
args,
|
||||
defaultViewport: null,
|
||||
headless: headless,
|
||||
slowMo: 0, // slow down by ms
|
||||
slowMo: 5, // slow down by ms
|
||||
// ignoreDefaultArgs: ['--disable-extensions'],
|
||||
// executablePath: '/usr/bin/google-chrome-stable',
|
||||
// executablePath: '/usr/bin/firefox-developer-edition',
|
||||
|
|
|
@ -38,7 +38,6 @@ describe('Item regularize path', () => {
|
|||
});
|
||||
|
||||
it('should open the regularize dialog and check the warehouse matches the local user settings', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.itemDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.itemDescriptor.moreMenuRegularizeButton);
|
||||
const result = await page.waitToGetProperty(selectors.itemDescriptor.regularizeWarehouse, 'value');
|
||||
|
@ -108,7 +107,6 @@ describe('Item regularize path', () => {
|
|||
});
|
||||
|
||||
it('should regularize the item once more', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.itemDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.itemDescriptor.moreMenuRegularizeButton);
|
||||
await page.write(selectors.itemDescriptor.regularizeQuantity, '100');
|
||||
|
|
|
@ -196,7 +196,6 @@ describe('Ticket Edit sale path', () => {
|
|||
});
|
||||
|
||||
it('should select the third sale and create a claim of it', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketSales.thirdSaleCheckbox);
|
||||
await page.waitToClick(selectors.ticketSales.moreMenu);
|
||||
await page.waitToClick(selectors.ticketSales.moreMenuCreateClaim);
|
||||
|
@ -355,7 +354,7 @@ describe('Ticket Edit sale path', () => {
|
|||
|
||||
it('should mark the first sale as reserved', async() => {
|
||||
await page.waitToClick(selectors.ticketSales.firstSaleCheckbox);
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
|
||||
await page.waitToClick(selectors.ticketSales.moreMenu);
|
||||
await page.waitToClick(selectors.ticketSales.moreMenuReserve);
|
||||
await page.closePopup();
|
||||
|
@ -366,7 +365,6 @@ describe('Ticket Edit sale path', () => {
|
|||
});
|
||||
|
||||
it('should unmark the first sale as reserved', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketSales.moreMenu);
|
||||
await page.waitToClick(selectors.ticketSales.moreMenuUnmarkReseved);
|
||||
await page.waitForClassPresent(selectors.ticketSales.firstSaleReservedIcon, 'ng-hide');
|
||||
|
|
|
@ -28,7 +28,6 @@ describe('Ticket descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should add the ticket to thursday turn using the descriptor more menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenuAddToTurn);
|
||||
await page.waitToClick(selectors.ticketDescriptor.thursdayButton);
|
||||
|
@ -64,7 +63,6 @@ describe('Ticket descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should add the ticket to saturday turn using the descriptor more menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenuAddToTurn);
|
||||
await page.waitToClick(selectors.ticketDescriptor.saturdayButton);
|
||||
|
|
|
@ -22,7 +22,6 @@ describe('Ticket descriptor path', () => {
|
|||
});
|
||||
|
||||
it(`should update the shipped hour using the descriptor menu`, async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenuChangeShippedHour);
|
||||
await page.pickTime(selectors.ticketDescriptor.changeShippedHour, '08:15');
|
||||
|
@ -66,7 +65,6 @@ describe('Ticket descriptor path', () => {
|
|||
|
||||
describe('Restore ticket', () => {
|
||||
it('should restore the ticket using the descriptor menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenuRestoreTicket);
|
||||
await page.waitToClick(selectors.ticketDescriptor.acceptDialog);
|
||||
|
@ -84,7 +82,6 @@ describe('Ticket descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should open the add stowaway dialog', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitForFunction(() => {
|
||||
let element = document.querySelector('vn-ticket-descriptor-menu');
|
||||
return element.$ctrl.canShowStowaway === true;
|
||||
|
@ -117,7 +114,6 @@ describe('Ticket descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should delete the stowaway', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
|
||||
await page.waitForContentLoaded();
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenuDeleteStowawayButton);
|
||||
|
@ -149,7 +145,6 @@ describe('Ticket descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should invoice the ticket using the descriptor menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
|
||||
await page.waitForContentLoaded();
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenuMakeInvoice);
|
||||
|
@ -181,9 +176,7 @@ describe('Ticket descriptor path', () => {
|
|||
|
||||
describe('SMS', () => {
|
||||
it('should send the payment SMS using the descriptor menu', async() => {
|
||||
await page.waitForTimeout(2000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
|
||||
await page.waitForContentLoaded();
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenuPaymentSMS);
|
||||
await page.waitForSelector(selectors.ticketDescriptor.SMStext);
|
||||
await page.waitPropertyLength(selectors.ticketDescriptor.SMStext, 'value', 128);
|
||||
|
@ -194,7 +187,6 @@ describe('Ticket descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should send the import SMS using the descriptor menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
|
||||
await page.waitForContentLoaded();
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenuSendImportSms);
|
||||
|
|
|
@ -62,7 +62,6 @@ describe('Ticket create path', () => {
|
|||
});
|
||||
|
||||
it('should make the previously created ticket the stowaway of the current ticket', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenuAddStowaway);
|
||||
await page.waitToClick(selectors.ticketDescriptor.addStowawayDialogFirstTicket);
|
||||
|
@ -72,7 +71,6 @@ describe('Ticket create path', () => {
|
|||
});
|
||||
|
||||
it('should delete the current ticket', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.ticketDescriptor.moreMenuDeleteTicket);
|
||||
await page.waitToClick(selectors.ticketDescriptor.acceptDialog);
|
||||
|
|
|
@ -17,7 +17,6 @@ describe('Ticket create from client path', () => {
|
|||
});
|
||||
|
||||
it('should click the create simple ticket on the descriptor menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.clientDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.clientDescriptor.simpleTicketButton);
|
||||
await page.waitForState('ticket.create');
|
||||
|
|
|
@ -18,7 +18,6 @@ describe('InvoiceIn descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should clone the invoiceIn using the descriptor more menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.invoiceInDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.invoiceInDescriptor.moreMenuCloneInvoiceIn);
|
||||
await page.waitToClick(selectors.invoiceInDescriptor.acceptButton);
|
||||
|
@ -32,7 +31,6 @@ describe('InvoiceIn descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should delete the cloned invoiceIn using the descriptor more menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.invoiceInDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.invoiceInDescriptor.moreMenuDeleteInvoiceIn);
|
||||
await page.waitToClick(selectors.invoiceInDescriptor.acceptButton);
|
||||
|
|
|
@ -38,7 +38,6 @@ describe('InvoiceOut descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should delete the invoiceOut using the descriptor more menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.invoiceOutDescriptor.moreMenu);
|
||||
await page.waitToClick(selectors.invoiceOutDescriptor.moreMenuDeleteInvoiceOut);
|
||||
await page.waitToClick(selectors.invoiceOutDescriptor.acceptDeleteButton);
|
||||
|
|
|
@ -16,9 +16,7 @@ describe('InvoiceOut manual invoice path', () => {
|
|||
});
|
||||
|
||||
it('should open the manual invoice form', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.invoiceOutIndex.createInvoice);
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.invoiceOutIndex.createManualInvoice);
|
||||
await page.waitForSelector(selectors.invoiceOutIndex.manualInvoiceForm);
|
||||
});
|
||||
|
@ -46,7 +44,6 @@ describe('InvoiceOut manual invoice path', () => {
|
|||
});
|
||||
|
||||
it('should now open the manual invoice form', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.invoiceOutIndex.createInvoice);
|
||||
await page.waitToClick(selectors.invoiceOutIndex.createManualInvoice);
|
||||
await page.waitForSelector(selectors.invoiceOutIndex.manualInvoiceForm);
|
||||
|
|
|
@ -34,7 +34,6 @@ describe('Travel descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should be redirected to the create entry view', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.travelDescriptor.dotMenu);
|
||||
await page.waitToClick(selectors.travelDescriptor.dotMenuAddEntry);
|
||||
await page.waitForState('entry.create');
|
||||
|
@ -90,7 +89,6 @@ describe('Travel descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should be redirected to the create travel when using the clone option of the dot menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.travelDescriptor.dotMenu);
|
||||
await page.waitToClick(selectors.travelDescriptor.dotMenuClone);
|
||||
await page.respondToDialog('accept');
|
||||
|
@ -116,7 +114,6 @@ describe('Travel descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should atempt to clone the travel and its entries using the descriptor menu but receive an error', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.travelDescriptor.dotMenu);
|
||||
await page.waitToClick(selectors.travelDescriptor.dotMenuCloneWithEntries);
|
||||
await page.waitToClick(selectors.travelDescriptor.acceptClonation);
|
||||
|
|
|
@ -17,7 +17,6 @@ describe('Zone descriptor path', () => {
|
|||
});
|
||||
|
||||
it('should eliminate the zone using the descriptor option', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.zoneDescriptor.menu);
|
||||
await page.waitToClick(selectors.zoneDescriptor.deleteZone);
|
||||
await page.respondToDialog('accept');
|
||||
|
|
|
@ -91,7 +91,6 @@ describe('Account create and basic data path', () => {
|
|||
});
|
||||
|
||||
it('should activate the account using the descriptor menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.accountDescriptor.menuButton);
|
||||
await page.waitToClick(selectors.accountDescriptor.activateAccount);
|
||||
await page.waitToClick(selectors.accountDescriptor.acceptButton);
|
||||
|
@ -139,7 +138,6 @@ describe('Account create and basic data path', () => {
|
|||
|
||||
describe('Set password', () => {
|
||||
it('should set the password using the descriptor menu', async() => {
|
||||
await page.waitForTimeout(1000); // initialization of functionality takes about 1000ms to work
|
||||
await page.waitToClick(selectors.accountDescriptor.menuButton);
|
||||
await page.waitToClick(selectors.accountDescriptor.setPassword);
|
||||
await page.write(selectors.accountDescriptor.newPassword, 'quantum.crypt0graphy');
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
icon="menu"
|
||||
class="show-menu"
|
||||
ng-if="$ctrl.leftMenu"
|
||||
ng-click="$ctrl.leftMenu.show()">
|
||||
ng-click="$ctrl.leftMenu.toggle()">
|
||||
</vn-icon-button>
|
||||
<div class="side start">
|
||||
<a class="logo" ui-sref="home" title="{{'Home' | translate}}">
|
||||
|
|
|
@ -48,6 +48,10 @@ vn-layout {
|
|||
.show-menu {
|
||||
display: none;
|
||||
}
|
||||
& > .show-menu {
|
||||
margin-right: 5px;
|
||||
display: block
|
||||
}
|
||||
.vn-button {
|
||||
color: inherit;
|
||||
font-size: 1.05rem;
|
||||
|
@ -71,6 +75,10 @@ vn-layout {
|
|||
& > .main-view {
|
||||
padding-left: $menu-width;
|
||||
}
|
||||
|
||||
&.shown > .main-view {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
&.right-menu {
|
||||
& > vn-topbar > .end {
|
||||
|
@ -85,6 +93,8 @@ vn-layout {
|
|||
}
|
||||
& > .main-view {
|
||||
padding-top: $topbar-height;
|
||||
|
||||
transition: padding-left 200ms ease-out;
|
||||
}
|
||||
ui-view {
|
||||
& > * {
|
||||
|
@ -134,7 +144,8 @@ vn-layout {
|
|||
& > vn-topbar {
|
||||
left: 0;
|
||||
}
|
||||
& > .main-view {
|
||||
& > .main-view,
|
||||
&.shown > .main-view {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,12 +52,18 @@ export default class SideMenu extends Component {
|
|||
this.hide();
|
||||
}
|
||||
|
||||
toggle() {
|
||||
if (this.shown) this.hide();
|
||||
else this.show();
|
||||
}
|
||||
|
||||
show() {
|
||||
if (this.shown) return;
|
||||
this.shown = true;
|
||||
this.handler = e => this.onEscape(e);
|
||||
this.$window.addEventListener('keydown', this.handler);
|
||||
this.stateHandler = this.$transitions.onStart({}, t => this.onTransition(t));
|
||||
this.layout.element.classList.add('shown');
|
||||
}
|
||||
|
||||
hide() {
|
||||
|
@ -65,6 +71,7 @@ export default class SideMenu extends Component {
|
|||
this.$window.removeEventListener('keydown', this.handler);
|
||||
this.stateHandler();
|
||||
this.shown = false;
|
||||
this.layout.element.classList.remove('shown');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,16 +14,20 @@ vn-side-menu > .menu {
|
|||
box-shadow: 0 1px 3px $color-shadow;
|
||||
overflow: auto;
|
||||
top: $topbar-height;
|
||||
transition: transform 200ms ease-out;
|
||||
|
||||
&.left {
|
||||
left: 0;
|
||||
left: 0
|
||||
}
|
||||
&.right {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
&.shown {
|
||||
transform: translateZ(0) translateX(-$menu-width);
|
||||
}
|
||||
|
||||
@media screen and (max-width: $mobile-width) {
|
||||
transition: transform 200ms ease-out;
|
||||
z-index: 15;
|
||||
top: 0;
|
||||
|
||||
|
|
|
@ -41,14 +41,6 @@
|
|||
"type": "string",
|
||||
"description": "Description"
|
||||
},
|
||||
"isOnOffer": {
|
||||
"type": "boolean",
|
||||
"description": "Offer"
|
||||
},
|
||||
"isBargain": {
|
||||
"type": "boolean",
|
||||
"description": "Bargain"
|
||||
},
|
||||
"isActive": {
|
||||
"type": "boolean",
|
||||
"description": "Active"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import ngModule from '../../module';
|
||||
import Section from 'salix/components/section';
|
||||
import UserError from 'core/lib/user-error';
|
||||
|
||||
class Controller extends Section {
|
||||
constructor($element, $) {
|
||||
|
@ -56,7 +57,7 @@ class Controller extends Section {
|
|||
}
|
||||
|
||||
onAddThermographClick(event) {
|
||||
const defaultTemperature = 'COOL';
|
||||
const defaultTemperature = 'cool';
|
||||
const defaultModel = 'DISPOSABLE';
|
||||
|
||||
event.preventDefault();
|
||||
|
@ -72,6 +73,15 @@ class Controller extends Section {
|
|||
}
|
||||
|
||||
onNewThermographAccept() {
|
||||
const hasMissingField =
|
||||
!this.newThermograph.thermographId ||
|
||||
!this.newThermograph.warehouseId ||
|
||||
!this.newThermograph.temperatureFk ||
|
||||
!this.newThermograph.model;
|
||||
|
||||
if (hasMissingField)
|
||||
throw new UserError(`Some fields are invalid`);
|
||||
|
||||
return this.$http.post(`Thermographs/createThermograph`, this.newThermograph)
|
||||
.then(res => this.dms.thermographId = res.data.id);
|
||||
}
|
||||
|
|
|
@ -79,8 +79,24 @@ describe('Ticket', () => {
|
|||
});
|
||||
|
||||
describe('onNewThermographAccept()', () => {
|
||||
it('should set the created thermograph id on to the controller for the autocomplete to use it', () => {
|
||||
const response = {id: 'the created id'};
|
||||
it('should set the created thermograph data on to the controller for the autocomplete to use it', () => {
|
||||
const id = 'the created id';
|
||||
const warehouseId = 1;
|
||||
const temperatureId = 'cool';
|
||||
const model = 'my model';
|
||||
|
||||
controller.newThermograph = {
|
||||
thermographId: id,
|
||||
warehouseId: warehouseId,
|
||||
temperatureFk: temperatureId,
|
||||
model: model
|
||||
};
|
||||
const response = {
|
||||
id: id,
|
||||
warehouseId: warehouseId,
|
||||
temperatureFk: temperatureId,
|
||||
model: model
|
||||
};
|
||||
$httpBackend.when('POST', `Thermographs/createThermograph`).respond(response);
|
||||
controller.onNewThermographAccept();
|
||||
$httpBackend.flush();
|
||||
|
|
|
@ -190,8 +190,7 @@ module.exports = app => {
|
|||
try {
|
||||
await db.rawSql(`CALL vn.ticket_closeByTicket(?)`, [ticket.id]);
|
||||
|
||||
const hasToInvoice = ticket.hasToInvoice && ticket.hasDailyInvoice;
|
||||
if (!ticket.salesPersonFk || !ticket.isToBeMailed || hasToInvoice) continue;
|
||||
if (!ticket.salesPersonFk || !ticket.isToBeMailed) continue;
|
||||
|
||||
if (!ticket.recipient) {
|
||||
const body = `No se ha podido enviar el albarán <strong>${ticket.id}</strong>
|
||||
|
@ -206,6 +205,25 @@ module.exports = app => {
|
|||
continue;
|
||||
}
|
||||
|
||||
const hasToInvoice = ticket.hasToInvoice && ticket.hasDailyInvoice;
|
||||
if (hasToInvoice) {
|
||||
const invoiceId = await db.findValue(`
|
||||
SELECT io.id
|
||||
FROM ticket t
|
||||
JOIN invoiceOut io ON io.ref = t.refFk
|
||||
WHERE t.id = ?
|
||||
`, [ticket.id]);
|
||||
|
||||
const args = Object.assign({
|
||||
invoiceId: invoiceId,
|
||||
recipientId: ticket.clientFk,
|
||||
recipient: ticket.recipient,
|
||||
replyTo: ticket.salesPersonEmail
|
||||
}, reqArgs);
|
||||
|
||||
const email = new Email('invoice', args);
|
||||
await email.send();
|
||||
} else {
|
||||
const args = Object.assign({
|
||||
ticketId: ticket.id,
|
||||
recipientId: ticket.clientFk,
|
||||
|
@ -215,6 +233,7 @@ module.exports = app => {
|
|||
|
||||
const email = new Email('delivery-note-link', args);
|
||||
await email.send();
|
||||
}
|
||||
} catch (error) {
|
||||
// Domain not found
|
||||
if (error.responseCode == 450)
|
||||
|
|
Loading…
Reference in New Issue