diff --git a/e2e/paths/09-invoice-out/01_summary.spec.js b/e2e/paths/09-invoice-out/01_summary.spec.js
deleted file mode 100644
index 09ac66ffce..0000000000
--- a/e2e/paths/09-invoice-out/01_summary.spec.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceOut summary path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('employee', 'invoiceOut');
- await page.accessToSearchResult('T1111111');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should reach the summary section', async() => {
- await page.waitForState('invoiceOut.card.summary');
- });
-
- it('should contain the company from which the invoice is emited', async() => {
- const result = await page.waitToGetProperty(selectors.invoiceOutSummary.company, 'innerText');
-
- expect(result).toEqual('Company VNL');
- });
-
- it('should contain the tax breakdown', async() => {
- const firstTax = await page.waitToGetProperty(selectors.invoiceOutSummary.taxOne, 'innerText');
- const secondTax = await page.waitToGetProperty(selectors.invoiceOutSummary.taxTwo, 'innerText');
-
- expect(firstTax).toContain('10%');
- expect(secondTax).toContain('21%');
- });
-
- it('should contain the tickets info', async() => {
- const firstTicket = await page.waitToGetProperty(selectors.invoiceOutSummary.ticketOne, 'innerText');
- const secondTicket = await page.waitToGetProperty(selectors.invoiceOutSummary.ticketTwo, 'innerText');
-
- expect(firstTicket).toContain('Bat cave');
- expect(secondTicket).toContain('Bat cave');
- });
-});
diff --git a/e2e/paths/09-invoice-out/02_descriptor.spec.js b/e2e/paths/09-invoice-out/02_descriptor.spec.js
deleted file mode 100644
index 5169345bcd..0000000000
--- a/e2e/paths/09-invoice-out/02_descriptor.spec.js
+++ /dev/null
@@ -1,137 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceOut descriptor path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('administrative', 'ticket');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- describe('as Administrative', () => {
- it('should search for tickets with an specific invoiceOut', async() => {
- await page.waitToClick(selectors.ticketsIndex.openAdvancedSearchButton);
- await page.clearInput(selectors.ticketsIndex.advancedSearchDaysOnward);
- await page.write(selectors.ticketsIndex.advancedSearchInvoiceOut, 'T2222222');
- await page.waitToClick(selectors.ticketsIndex.advancedSearchButton);
- await page.waitForState('ticket.card.summary');
- });
-
- it('should navigate to the invoiceOut index', async() => {
- await page.waitToClick(selectors.globalItems.applicationsMenuButton);
- await page.waitForSelector(selectors.globalItems.applicationsMenuVisible);
- await page.waitToClick(selectors.globalItems.invoiceOutButton);
- await page.waitForSelector(selectors.invoiceOutIndex.topbarSearch);
- await page.waitForState('invoiceOut.index');
- });
-
- it(`should click on the search result to access to the invoiceOut summary`, async() => {
- await page.accessToSearchResult('T2222222');
- await page.waitForState('invoiceOut.card.summary');
- });
-
- it('should delete the invoiceOut using the descriptor more menu', async() => {
- await page.waitToClick(selectors.invoiceOutDescriptor.moreMenu);
- await page.waitToClick(selectors.invoiceOutDescriptor.moreMenuDeleteInvoiceOut);
- await page.waitToClick(selectors.invoiceOutDescriptor.acceptDeleteButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('InvoiceOut deleted');
- });
-
- it('should have been relocated to the invoiceOut index', async() => {
- await page.waitForState('invoiceOut.index');
- });
-
- it(`should search for the deleted invouceOut to find no results`, async() => {
- await page.doSearch('T2222222');
- const nResults = await page.countElement(selectors.invoiceOutIndex.searchResult);
-
- expect(nResults).toEqual(0);
- });
-
- it('should navigate to the ticket index', async() => {
- await page.waitToClick(selectors.globalItems.applicationsMenuButton);
- await page.waitForSelector(selectors.globalItems.applicationsMenuVisible);
- await page.waitToClick(selectors.globalItems.ticketsButton);
- await page.waitForState('ticket.index');
- });
-
- it('should search now for tickets with an specific invoiceOut to find no results', async() => {
- await page.doSearch('T2222222');
- const nResults = await page.countElement(selectors.ticketsIndex.searchResult);
-
- expect(nResults).toEqual(0);
- });
-
- it('should now navigate to the invoiceOut index', async() => {
- await page.waitToClick(selectors.globalItems.applicationsMenuButton);
- await page.waitForSelector(selectors.globalItems.applicationsMenuVisible);
- await page.waitToClick(selectors.globalItems.invoiceOutButton);
- await page.waitForState('invoiceOut.index');
- });
-
- it(`should search and access to the invoiceOut summary`, async() => {
- await page.accessToSearchResult('T1111111');
- await page.waitForState('invoiceOut.card.summary');
- });
-
- it(`should check the invoiceOut is booked in the summary data`, async() => {
- await page.waitForTextInElement(selectors.invoiceOutSummary.bookedLabel, '/');
- const result = await page.waitToGetProperty(selectors.invoiceOutSummary.bookedLabel, 'innerText');
-
- expect(result.length).toBeGreaterThan(1);
- });
-
- it('should re-book the invoiceOut using the descriptor more menu', async() => {
- await page.waitToClick(selectors.invoiceOutDescriptor.moreMenu);
- await page.waitToClick(selectors.invoiceOutDescriptor.moreMenuBookInvoiceOut);
- await page.waitToClick(selectors.invoiceOutDescriptor.acceptBookingButton);
- const message = await page.waitForSnackbar();
-
- expect(message.text).toContain('InvoiceOut booked');
- });
-
- it(`should check the invoiceOut booked in the summary data`, async() => {
- let today = Date.vnNew();
-
- let day = today.getDate();
- if (day < 10) day = `0${day}`;
-
- let month = (today.getMonth() + 1);
- if (month < 10) month = `0${month}`;
-
- let expectedDate = `${day}/${month}/${today.getFullYear()}`;
-
- await page.waitForContentLoaded();
- const result = await page
- .waitToGetProperty(selectors.invoiceOutSummary.bookedLabel, 'innerText');
-
- expect(result).toEqual(expectedDate);
- });
- });
-
- describe('as salesPerson', () => {
- it(`should log in as salesPerson then go to the target invoiceOut summary`, async() => {
- await page.loginAndModule('salesPerson', 'invoiceOut');
- await page.accessToSearchResult('A1111111');
- });
-
- it(`should check the salesPerson role doens't see the book option in the more menu`, async() => {
- await page.waitToClick(selectors.invoiceOutDescriptor.moreMenu);
- await page.waitForSelector(selectors.invoiceOutDescriptor.moreMenuShowInvoiceOutPdf);
- await page.waitForSelector(selectors.invoiceOutDescriptor.moreMenuBookInvoiceOut, {hidden: true});
- });
-
- it(`should check the salesPerson role doens't see the delete option in the more menu`, async() => {
- await page.waitForSelector(selectors.invoiceOutDescriptor.moreMenuDeleteInvoiceOut, {hidden: true});
- });
- });
-});
diff --git a/e2e/paths/09-invoice-out/03_manualInvoice.spec.js b/e2e/paths/09-invoice-out/03_manualInvoice.spec.js
deleted file mode 100644
index a1856f1b1b..0000000000
--- a/e2e/paths/09-invoice-out/03_manualInvoice.spec.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceOut manual invoice path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('administrative', 'invoiceOut');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should create an invoice from a ticket', async() => {
- await page.waitToClick(selectors.invoiceOutIndex.createInvoice);
- await page.waitForSelector(selectors.invoiceOutIndex.manualInvoiceForm);
-
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceTicket, '15');
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceSerial, 'Global nacional');
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceTaxArea, 'national');
- await page.waitToClick(selectors.invoiceOutIndex.saveInvoice);
- const message = await page.waitForSnackbar();
-
- await page.waitForState('invoiceOut.card.summary');
-
- expect(message.text).toContain('Data saved!');
- });
-
- it(`should create another invoice from a client`, async() => {
- await page.waitToClick(selectors.globalItems.applicationsMenuButton);
- await page.waitForSelector(selectors.globalItems.applicationsMenuVisible);
- await page.waitToClick(selectors.globalItems.invoiceOutButton);
- await page.waitForSelector(selectors.invoiceOutIndex.topbarSearch);
- await page.waitForState('invoiceOut.index');
-
- await page.waitToClick(selectors.invoiceOutIndex.createInvoice);
- await page.waitForSelector(selectors.invoiceOutIndex.manualInvoiceForm);
-
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceClient, 'Petter Parker');
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceSerial, 'Global nacional');
- await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceTaxArea, 'national');
- await page.waitToClick(selectors.invoiceOutIndex.saveInvoice);
- const message = await page.waitForSnackbar();
-
- await page.waitForState('invoiceOut.card.summary');
-
- expect(message.text).toContain('Data saved!');
- });
-});
diff --git a/e2e/paths/09-invoice-out/04_globalInvoice.spec.js b/e2e/paths/09-invoice-out/04_globalInvoice.spec.js
deleted file mode 100644
index 64cddfa250..0000000000
--- a/e2e/paths/09-invoice-out/04_globalInvoice.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceOut global invoice path', () => {
- let browser;
- let page;
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('administrative', 'invoiceOut');
- await page.waitToClick('[icon="search"]');
- await page.waitForTimeout(1000); // index search needs time to return results
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- let invoicesBeforeOneClient;
- let now = Date.vnNew();
-
- it('should count the amount of invoices listed before globla invoces are made', async() => {
- invoicesBeforeOneClient = await page.countElement(selectors.invoiceOutIndex.searchResult);
-
- expect(invoicesBeforeOneClient).toBeGreaterThanOrEqual(4);
- });
-
- it('should create a global invoice for charles xavier today', async() => {
- await page.accessToSection('invoiceOut.global-invoicing');
- await page.waitToClick(selectors.invoiceOutGlobalInvoicing.oneClient);
- await page.autocompleteSearch(selectors.invoiceOutGlobalInvoicing.clientId, 'Charles Xavier');
- await page.pickDate(selectors.invoiceOutGlobalInvoicing.invoiceDate, now);
- await page.pickDate(selectors.invoiceOutGlobalInvoicing.maxShipped, now);
- await page.autocompleteSearch(selectors.invoiceOutGlobalInvoicing.printer, '1');
- await page.waitToClick(selectors.invoiceOutGlobalInvoicing.makeInvoice);
- await page.waitForTimeout(1000);
- });
-});
diff --git a/e2e/paths/09-invoice-out/05_negative_bases.spec.js b/e2e/paths/09-invoice-out/05_negative_bases.spec.js
deleted file mode 100644
index 43ced2115e..0000000000
--- a/e2e/paths/09-invoice-out/05_negative_bases.spec.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import getBrowser from '../../helpers/puppeteer';
-
-describe('InvoiceOut negative bases path', () => {
- let browser;
- let page;
- const httpRequests = [];
-
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- page.on('request', req => {
- if (req.url().includes(`InvoiceOuts/negativeBases`))
- httpRequests.push(req.url());
- });
- await page.loginAndModule('administrative', 'invoiceOut');
- await page.accessToSection('invoiceOut.negative-bases');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should show negative bases in a date range', async() => {
- const request = httpRequests.find(req =>
- req.includes(`from`) && req.includes(`to`));
-
- expect(request).toBeDefined();
- });
-});
diff --git a/modules/invoiceOut/front/card/index.html b/modules/invoiceOut/front/card/index.html
deleted file mode 100644
index a6f56f7755..0000000000
--- a/modules/invoiceOut/front/card/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
diff --git a/modules/invoiceOut/front/card/index.js b/modules/invoiceOut/front/card/index.js
deleted file mode 100644
index c443912d91..0000000000
--- a/modules/invoiceOut/front/card/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import ngModule from '../module';
-import ModuleCard from 'salix/components/module-card';
-
-class Controller extends ModuleCard {
- reload() {
- const filter = {
- fields: [
- 'id',
- 'ref',
- 'issued',
- 'serial',
- 'amount',
- 'clientFk',
- 'companyFk',
- 'hasPdf'
- ],
- include: [
- {
- relation: 'company',
- scope: {
- fields: ['id', 'code']
- }
- }, {
- relation: 'client',
- scope: {
- fields: ['id', 'socialName', 'name', 'email']
- }
- }
- ]
- };
-
- this.$http.get(`InvoiceOuts/${this.$params.id}`, {filter})
- .then(res => this.invoiceOut = res.data);
- }
-}
-
-ngModule.vnComponent('vnInvoiceOutCard', {
- template: require('./index.html'),
- controller: Controller
-});
-
diff --git a/modules/invoiceOut/front/card/index.spec.js b/modules/invoiceOut/front/card/index.spec.js
deleted file mode 100644
index 2a8d576dc2..0000000000
--- a/modules/invoiceOut/front/card/index.spec.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import './index.js';
-
-describe('vnInvoiceOut', () => {
- let controller;
- let $httpBackend;
- let data = {id: 1, name: 'fooName'};
-
- beforeEach(ngModule('invoiceOut'));
-
- beforeEach(inject(($componentController, _$httpBackend_, $stateParams) => {
- $httpBackend = _$httpBackend_;
-
- let $element = angular.element('
');
- controller = $componentController('vnInvoiceOutCard', {$element});
-
- $stateParams.id = data.id;
- $httpBackend.whenRoute('GET', 'InvoiceOuts/:id').respond(data);
- }));
-
- it('should request data and set it on the controller', () => {
- controller.reload();
- $httpBackend.flush();
-
- expect(controller.invoiceOut).toEqual(data);
- });
-});
-
diff --git a/modules/invoiceOut/front/descriptor/locale/es.yml b/modules/invoiceOut/front/descriptor/es.yml
similarity index 100%
rename from modules/invoiceOut/front/descriptor/locale/es.yml
rename to modules/invoiceOut/front/descriptor/es.yml
diff --git a/modules/invoiceOut/front/global-invoicing/index.html b/modules/invoiceOut/front/global-invoicing/index.html
deleted file mode 100644
index 3ece30862e..0000000000
--- a/modules/invoiceOut/front/global-invoicing/index.html
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
-
-
-
-
- Build packaging tickets
-
-
- {{'Invoicing client' | translate}} {{$ctrl.currentAddress.clientId}}
-
-
- Stopping process
-
-
- Ended process
-
-
-
-
- {{$ctrl.percentage | percentage: 0}}
- ({{$ctrl.addressNumber}} of {{$ctrl.nAddresses}})
-
-
- {{$ctrl.nPdfs}} of {{$ctrl.totalPdfs}}
- PDFs
-
-
-
-
-
-
-
-
- Id
- Client
- Address id
- Street
- Error
-
-
-
-
-
-
- {{::error.address.clientId}}
-
-
-
- {{::error.address.clientName}}
-
-
- {{::error.address.id}}
-
-
- {{::error.address.nickname}}
-
-
-
- {{::error.message}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/invoiceOut/front/global-invoicing/index.js b/modules/invoiceOut/front/global-invoicing/index.js
deleted file mode 100644
index 9a936611a1..0000000000
--- a/modules/invoiceOut/front/global-invoicing/index.js
+++ /dev/null
@@ -1,174 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import UserError from 'core/lib/user-error';
-import './style.scss';
-
-class Controller extends Section {
- $onInit() {
- const date = Date.vnNew();
- Object.assign(this, {
- maxShipped: new Date(date.getFullYear(), date.getMonth(), 0),
- clientsToInvoice: 'all',
- companyFk: this.vnConfig.companyFk,
- parallelism: 1
- });
-
- const params = {companyFk: this.companyFk};
- this.$http.get('InvoiceOuts/getInvoiceDate', {params})
- .then(res => {
- this.minInvoicingDate = res.data.issued ? new Date(res.data.issued) : null;
- this.invoiceDate = this.minInvoicingDate;
- });
-
- const filter = {fields: ['parallelism']};
- this.$http.get('InvoiceOutConfigs/findOne', {filter})
- .then(res => {
- if (res.data.parallelism)
- this.parallelism = res.data.parallelism;
- })
- .catch(res => {
- if (res.status == 404) return;
- throw res;
- });
- }
-
- makeInvoice() {
- this.invoicing = true;
- this.status = 'packageInvoicing';
- this.errors = [];
- this.addresses = null;
-
- try {
- if (this.clientsToInvoice == 'one' && !this.clientId)
- throw new UserError('Choose a valid client');
- if (!this.invoiceDate || !this.maxShipped)
- throw new UserError('Invoice date and the max date should be filled');
- if (this.invoiceDate < this.maxShipped)
- throw new UserError('Invoice date can\'t be less than max date');
- if (this.minInvoicingDate && this.invoiceDate.getTime() < this.minInvoicingDate.getTime())
- throw new UserError('Exists an invoice with a future date');
- if (!this.companyFk)
- throw new UserError('Choose a valid company');
- if (!this.printerFk)
- throw new UserError('Choose a valid printer');
-
- if (this.clientsToInvoice == 'all')
- this.clientId = undefined;
-
- const params = {
- invoiceDate: this.invoiceDate,
- maxShipped: this.maxShipped,
- clientId: this.clientId,
- companyFk: this.companyFk
- };
- this.$http.post(`InvoiceOuts/clientsToInvoice`, params)
- .then(res => {
- this.addresses = res.data;
- if (!this.addresses.length)
- throw new UserError(`There aren't tickets to invoice`);
-
- this.nRequests = 0;
- this.nPdfs = 0;
- this.totalPdfs = 0;
- this.addressIndex = 0;
- this.invoiceClient();
- })
- .catch(err => this.handleError(err));
- } catch (err) {
- this.handleError(err);
- }
- }
-
- handleError(err) {
- this.invoicing = false;
- this.status = null;
- throw err;
- }
-
- invoiceClient() {
- if (this.nRequests == this.parallelism || this.isInvoicing) return;
-
- if (this.addressIndex >= this.addresses.length || this.status == 'stopping') {
- if (this.nRequests) return;
- this.invoicing = false;
- this.status = 'done';
- return;
- }
-
- this.status = 'invoicing';
- const address = this.addresses[this.addressIndex];
- this.currentAddress = address;
- this.isInvoicing = true;
-
- const params = {
- clientId: address.clientId,
- addressId: address.id,
- invoiceDate: this.invoiceDate,
- maxShipped: this.maxShipped,
- companyFk: this.companyFk
- };
-
- this.$http.post(`InvoiceOuts/invoiceClient`, params)
- .then(res => {
- this.isInvoicing = false;
- if (res.data)
- this.makePdfAndNotify(res.data, address);
- this.invoiceNext();
- })
- .catch(res => {
- this.isInvoicing = false;
- if (res.status >= 400 && res.status < 500) {
- this.invoiceError(address, res);
- this.invoiceNext();
- } else {
- this.invoicing = false;
- this.status = 'done';
- throw new UserError(`Critical invoicing error, proccess stopped`);
- }
- });
- }
-
- invoiceNext() {
- this.addressIndex++;
- this.invoiceClient();
- }
-
- makePdfAndNotify(invoiceId, address) {
- this.nRequests++;
- this.totalPdfs++;
- const params = {printerFk: this.printerFk};
- this.$http.post(`InvoiceOuts/${invoiceId}/makePdfAndNotify`, params)
- .catch(res => {
- this.invoiceError(address, res, true);
- })
- .finally(() => {
- this.nPdfs++;
- this.nRequests--;
- this.invoiceClient();
- });
- }
-
- invoiceError(address, res, isWarning) {
- const message = res.data?.error?.message || res.message;
- this.errors.unshift({address, message, isWarning});
- }
-
- get nAddresses() {
- if (!this.addresses) return 0;
- return this.addresses.length;
- }
-
- get addressNumber() {
- return Math.min(this.addressIndex + 1, this.nAddresses);
- }
-
- get percentage() {
- const len = this.nAddresses;
- return Math.min(this.addressIndex, len) / len;
- }
-}
-
-ngModule.vnComponent('vnInvoiceOutGlobalInvoicing', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/invoiceOut/front/global-invoicing/index.spec.js b/modules/invoiceOut/front/global-invoicing/index.spec.js
deleted file mode 100644
index 056839b20a..0000000000
--- a/modules/invoiceOut/front/global-invoicing/index.spec.js
+++ /dev/null
@@ -1,74 +0,0 @@
-import './index';
-
-describe('InvoiceOut', () => {
- describe('Component vnInvoiceOutGlobalInvoicing', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('invoiceOut'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- const $scope = $rootScope.$new();
- const $element = angular.element('');
-
- controller = $componentController('vnInvoiceOutGlobalInvoicing', {$element, $scope});
- }));
-
- describe('makeInvoice()', () => {
- it('should throw an error when invoiceDate or maxShipped properties are not filled in', () => {
- jest.spyOn(controller.vnApp, 'showError');
- controller.clientsToInvoice = 'all';
-
- let error;
- try {
- controller.makeInvoice();
- } catch (e) {
- error = e.message;
- }
-
- const expectedError = 'Invoice date and the max date should be filled';
-
- expect(error).toBe(expectedError);
- });
-
- it('should throw an error when select one client and clientId is not filled in', () => {
- jest.spyOn(controller.vnApp, 'showError');
- controller.clientsToInvoice = 'one';
-
- let error;
- try {
- controller.makeInvoice();
- } catch (e) {
- error = e.message;
- }
-
- const expectedError = 'Choose a valid client';
-
- expect(error).toBe(expectedError);
- });
-
- it('should make an http POST query and then call to the showSuccess() method', () => {
- const date = Date.vnNew();
- Object.assign(controller, {
- invoiceDate: date,
- maxShipped: date,
- minInvoicingDate: date,
- clientsToInvoice: 'one',
- clientId: 1101,
- companyFk: 442,
- printerFk: 1
- });
- $httpBackend.expectPOST(`InvoiceOuts/clientsToInvoice`).respond([{
- clientId: 1101,
- id: 121
- }]);
- $httpBackend.expectPOST(`InvoiceOuts/invoiceClient`).respond();
- controller.makeInvoice();
- $httpBackend.flush();
-
- expect(controller.status).toEqual('done');
- });
- });
- });
-});
diff --git a/modules/invoiceOut/front/global-invoicing/locale/es.yml b/modules/invoiceOut/front/global-invoicing/locale/es.yml
deleted file mode 100644
index f1a411ba1e..0000000000
--- a/modules/invoiceOut/front/global-invoicing/locale/es.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-There aren't tickets to invoice: No existen tickets para facturar
-Max date: Fecha límite
-Invoice date: Fecha de factura
-Invoice date can't be less than max date: La fecha de factura no puede ser inferior a la fecha límite
-Invoice date and the max date should be filled: La fecha de factura y la fecha límite deben rellenarse
-Choose a valid company: Selecciona un empresa válida
-Choose a valid printer: Selecciona una impresora válida
-All clients: Todos los clientes
-Build packaging tickets: Generando tickets de embalajes
-Address id: Id dirección
-Printer: Impresora
-of: de
-PDFs: PDFs
-Client: Cliente
-Current client id: Id cliente actual
-Invoicing client: Facturando cliente
-Ended process: Proceso finalizado
-Invoice out: Facturar
-One client: Un solo cliente
-Choose a valid client: Selecciona un cliente válido
-Stop: Parar
-Critical invoicing error, proccess stopped: Error crítico al facturar, proceso detenido
diff --git a/modules/invoiceOut/front/global-invoicing/style.scss b/modules/invoiceOut/front/global-invoicing/style.scss
deleted file mode 100644
index 3ad767aba7..0000000000
--- a/modules/invoiceOut/front/global-invoicing/style.scss
+++ /dev/null
@@ -1,21 +0,0 @@
-@import "variables";
-
-vn-invoice-out-global-invoicing {
- h5 {
- color: $color-primary;
- }
- .status {
- height: 80px;
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 20px;
- }
- #error {
- line-break: normal;
- overflow-wrap: break-word;
- white-space: normal;
- }
-}
-
-
diff --git a/modules/invoiceOut/front/index.js b/modules/invoiceOut/front/index.js
index 723e3be5af..a5e51d4399 100644
--- a/modules/invoiceOut/front/index.js
+++ b/modules/invoiceOut/front/index.js
@@ -1,13 +1,7 @@
export * from './module';
import './main';
-import './index/';
-import './search-panel';
import './summary';
-import './card';
import './descriptor';
import './descriptor-popover';
import './descriptor-menu';
-import './index/manual';
-import './global-invoicing';
-import './negative-bases';
diff --git a/modules/invoiceOut/front/index/index.html b/modules/invoiceOut/front/index/index.html
deleted file mode 100644
index dc4d5d8a95..0000000000
--- a/modules/invoiceOut/front/index/index.html
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Reference
- Issued
- Amount
- Client
- Created
- Company
- Due date
-
-
-
-
-
-
-
-
-
- {{::invoiceOut.ref | dashIfEmpty}}
- {{::invoiceOut.issued | date:'dd/MM/yyyy' | dashIfEmpty}}
- {{::invoiceOut.amount | currency: 'EUR': 2 | dashIfEmpty}}
-
-
- {{::invoiceOut.clientSocialName | dashIfEmpty}}
-
-
- {{::invoiceOut.created | date:'dd/MM/yyyy' | dashIfEmpty}}
- {{::invoiceOut.companyCode | dashIfEmpty}}
- {{::invoiceOut.dued | date:'dd/MM/yyyy' | dashIfEmpty}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/invoiceOut/front/index/index.js b/modules/invoiceOut/front/index/index.js
deleted file mode 100644
index f109cd5b0d..0000000000
--- a/modules/invoiceOut/front/index/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-
-export default class Controller extends Section {
- get checked() {
- const rows = this.$.model.data || [];
- const checkedRows = [];
- for (let row of rows) {
- if (row.checked)
- checkedRows.push(row.id);
- }
-
- return checkedRows;
- }
-
- get totalChecked() {
- return this.checked.length;
- }
-
- preview(invoiceOut) {
- this.selectedInvoiceOut = invoiceOut;
- this.$.summary.show();
- }
-
- openPdf() {
- const access_token = this.vnToken.tokenMultimedia;
- if (this.checked.length <= 1) {
- const [invoiceOutId] = this.checked;
- const url = `api/InvoiceOuts/${invoiceOutId}/download?access_token=${access_token}`;
- window.open(url, '_blank');
- } else {
- const invoiceOutIds = this.checked;
- const invoicesIds = invoiceOutIds.join(',');
- const serializedParams = this.$httpParamSerializer({
- access_token,
- ids: invoicesIds
- });
- const url = `api/InvoiceOuts/downloadZip?${serializedParams}`;
- window.open(url, '_blank');
- }
- }
-}
-
-ngModule.vnComponent('vnInvoiceOutIndex', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/invoiceOut/front/index/locale/es.yml b/modules/invoiceOut/front/index/locale/es.yml
deleted file mode 100644
index 74572da493..0000000000
--- a/modules/invoiceOut/front/index/locale/es.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-Created: Fecha creacion
-Issued: Fecha factura
-Due date: Fecha vencimiento
-Has PDF: PDF disponible
-Minimum: Minimo
-Maximum: Máximo
-Global invoicing: Facturación global
-Manual invoicing: Facturación manual
-Files are too large: Los archivos son demasiado grandes
\ No newline at end of file
diff --git a/modules/invoiceOut/front/index/manual/index.html b/modules/invoiceOut/front/index/manual/index.html
deleted file mode 100644
index 3b991618d1..0000000000
--- a/modules/invoiceOut/front/index/manual/index.html
+++ /dev/null
@@ -1,86 +0,0 @@
-
- Create manual invoice
-
-
-
-
-
-
-
-
-
- Invoicing in progress...
-
-
-
-
-
- #{{::id}}
- {{::nickname}}
-
-
- Or
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/invoiceOut/front/index/manual/index.js b/modules/invoiceOut/front/index/manual/index.js
deleted file mode 100644
index 3abe4b825e..0000000000
--- a/modules/invoiceOut/front/index/manual/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import ngModule from '../../module';
-import Dialog from 'core/components/dialog';
-import './style.scss';
-
-class Controller extends Dialog {
- constructor($element, $, $transclude) {
- super($element, $, $transclude);
-
- this.isInvoicing = false;
- this.invoice = {
- maxShipped: Date.vnNew()
- };
- }
-
- responseHandler(response) {
- try {
- if (response !== 'accept')
- return super.responseHandler(response);
-
- if (this.invoice.clientFk && !this.invoice.maxShipped)
- throw new Error('Client and the max shipped should be filled');
-
- if (!this.invoice.serial || !this.invoice.taxArea)
- throw new Error('Some fields are required');
-
- this.isInvoicing = true;
- return this.$http.post(`InvoiceOuts/createManualInvoice`, this.invoice)
- .then(res => {
- this.$state.go('invoiceOut.card.summary', {id: res.data.id});
- super.responseHandler(response);
- })
- .then(() => this.vnApp.showSuccess(this.$t('Data saved!')))
- .finally(() => this.isInvoicing = false);
- } catch (e) {
- this.vnApp.showError(this.$t(e.message));
- this.isInvoicing = false;
- return false;
- }
- }
-}
-
-Controller.$inject = ['$element', '$scope', '$transclude'];
-
-ngModule.vnComponent('vnInvoiceOutManual', {
- slotTemplate: require('./index.html'),
- controller: Controller,
- bindings: {
- ticketFk: '',
- clientFk: ''
- }
-});
diff --git a/modules/invoiceOut/front/index/manual/index.spec.js b/modules/invoiceOut/front/index/manual/index.spec.js
deleted file mode 100644
index f19030129b..0000000000
--- a/modules/invoiceOut/front/index/manual/index.spec.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import './index';
-
-describe('InvoiceOut', () => {
- describe('Component vnInvoiceOutManual', () => {
- let controller;
- let $httpBackend;
-
- beforeEach(ngModule('invoiceOut'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- let $scope = $rootScope.$new();
- const $element = angular.element('');
- const $transclude = {
- $$boundTransclude: {
- $$slots: []
- }
- };
- controller = $componentController('vnInvoiceOutManual', {$element, $scope, $transclude});
- }));
-
- describe('responseHandler()', () => {
- it('should throw an error when clientFk property is set and the maxShipped is not filled', () => {
- jest.spyOn(controller.vnApp, 'showError');
-
- controller.invoice = {
- clientFk: 1101,
- serial: 'T',
- taxArea: 'B'
- };
-
- controller.responseHandler('accept');
-
- expect(controller.vnApp.showError).toHaveBeenCalledWith(`Client and the max shipped should be filled`);
- });
-
- it('should throw an error when some required fields are not filled in', () => {
- jest.spyOn(controller.vnApp, 'showError');
-
- controller.invoice = {
- ticketFk: 1101
- };
-
- controller.responseHandler('accept');
-
- expect(controller.vnApp.showError).toHaveBeenCalledWith(`Some fields are required`);
- });
-
- it('should make an http POST query and then call to the parent showSuccess() method', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
-
- controller.invoice = {
- ticketFk: 1101,
- serial: 'T',
- taxArea: 'B'
- };
-
- $httpBackend.expect('POST', `InvoiceOuts/createManualInvoice`).respond({id: 1});
- controller.responseHandler('accept');
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- });
- });
- });
-});
diff --git a/modules/invoiceOut/front/index/manual/locale/es.yml b/modules/invoiceOut/front/index/manual/locale/es.yml
deleted file mode 100644
index 370e823d06..0000000000
--- a/modules/invoiceOut/front/index/manual/locale/es.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-Create manual invoice: Crear factura manual
-Some fields are required: Algunos campos son obligatorios
-Client and max shipped fields should be filled: Los campos de cliente y fecha límite deben rellenarse
-Max date: Fecha límite
-Serial: Serie
-Invoicing in progress...: Facturación en progreso...
\ No newline at end of file
diff --git a/modules/invoiceOut/front/index/manual/style.scss b/modules/invoiceOut/front/index/manual/style.scss
deleted file mode 100644
index 820c07756a..0000000000
--- a/modules/invoiceOut/front/index/manual/style.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-@import "variables";
-
-.vn-invoice-out-manual {
- tpl-body {
- width: 500px;
-
- .progress {
- font-weight: bold;
- text-align: center;
- font-size: 1.5rem;
- color: $color-primary;
- vn-horizontal {
- justify-content: center
- }
- }
- }
-}
diff --git a/modules/invoiceOut/front/main/index.html b/modules/invoiceOut/front/main/index.html
index ab3fce9ea7..e69de29bb2 100644
--- a/modules/invoiceOut/front/main/index.html
+++ b/modules/invoiceOut/front/main/index.html
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/invoiceOut/front/main/index.js b/modules/invoiceOut/front/main/index.js
index ad37e9c4bc..f7e21a1266 100644
--- a/modules/invoiceOut/front/main/index.js
+++ b/modules/invoiceOut/front/main/index.js
@@ -1,7 +1,15 @@
import ngModule from '../module';
import ModuleMain from 'salix/components/module-main';
-export default class InvoiceOut extends ModuleMain {}
+export default class InvoiceOut extends ModuleMain {
+ constructor($element, $) {
+ super($element, $);
+ }
+ async $onInit() {
+ this.$state.go('home');
+ window.location.href = await this.vnApp.getUrl(`invoice-out/`);
+ }
+}
ngModule.vnComponent('vnInvoiceOut', {
controller: InvoiceOut,
diff --git a/modules/invoiceOut/front/locale/es.yml b/modules/invoiceOut/front/main/locale/es.yml
similarity index 100%
rename from modules/invoiceOut/front/locale/es.yml
rename to modules/invoiceOut/front/main/locale/es.yml
diff --git a/modules/invoiceOut/front/negative-bases/index.html b/modules/invoiceOut/front/negative-bases/index.html
deleted file mode 100644
index 499b6bfe07..0000000000
--- a/modules/invoiceOut/front/negative-bases/index.html
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Company
- |
-
- Country
- |
-
- Client id
- |
-
- Client
- |
-
- Amount
- |
-
- Base
- |
-
- Ticket id
- |
-
- Active
- |
-
- Has To Invoice
- |
-
- Verified data
- |
-
- Comercial
- |
-
-
-
-
- {{client.company | dashIfEmpty}} |
- {{client.country | dashIfEmpty}} |
-
-
- {{::client.clientId | dashIfEmpty}}
-
- |
- {{client.clientSocialName | dashIfEmpty}} |
- {{client.amount | currency: 'EUR':2 | dashIfEmpty}} |
- {{client.taxableBase | dashIfEmpty}} |
-
-
- {{::client.ticketFk | dashIfEmpty}}
-
- |
-
-
-
- |
-
-
-
- |
-
-
-
- |
-
-
- {{::client.workerName | dashIfEmpty}}
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/invoiceOut/front/negative-bases/index.js b/modules/invoiceOut/front/negative-bases/index.js
deleted file mode 100644
index 7ce6105135..0000000000
--- a/modules/invoiceOut/front/negative-bases/index.js
+++ /dev/null
@@ -1,74 +0,0 @@
-import ngModule from '../module';
-import Section from 'salix/components/section';
-import './style.scss';
-
-export default class Controller extends Section {
- constructor($element, $, vnReport) {
- super($element, $);
-
- this.vnReport = vnReport;
- const now = Date.vnNew();
- const firstDayOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);
- const lastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0);
- this.params = {
- from: firstDayOfMonth,
- to: lastDayOfMonth
- };
- this.$checkAll = false;
-
- this.smartTableOptions = {
- activeButtons: {
- search: true,
- },
- columns: [
- {
- field: 'isActive',
- searchable: false
- },
- {
- field: 'hasToInvoice',
- searchable: false
- },
- {
- field: 'isTaxDataChecked',
- searchable: false
- },
- ]
- };
- }
-
- exprBuilder(param, value) {
- switch (param) {
- case 'company':
- return {'company': value};
- case 'country':
- return {'country': value};
- case 'clientId':
- return {'clientId': value};
- case 'clientSocialName':
- return {'clientSocialName': value};
- case 'amount':
- return {'amount': value};
- case 'taxableBase':
- return {'taxableBase': value};
- case 'ticketFk':
- return {'ticketFk': value};
- case 'comercialName':
- return {'comercialName': value};
- }
- }
-
- downloadCSV() {
- this.vnReport.show('InvoiceOuts/negativeBasesCsv', {
- from: this.params.from,
- to: this.params.to
- });
- }
-}
-
-Controller.$inject = ['$element', '$scope', 'vnReport'];
-
-ngModule.vnComponent('vnNegativeBases', {
- template: require('./index.html'),
- controller: Controller
-});
diff --git a/modules/invoiceOut/front/negative-bases/locale/es.yml b/modules/invoiceOut/front/negative-bases/locale/es.yml
deleted file mode 100644
index dd3432592d..0000000000
--- a/modules/invoiceOut/front/negative-bases/locale/es.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-Has To Invoice: Facturar
-Download as CSV: Descargar como CSV
diff --git a/modules/invoiceOut/front/negative-bases/style.scss b/modules/invoiceOut/front/negative-bases/style.scss
deleted file mode 100644
index 2d628cb947..0000000000
--- a/modules/invoiceOut/front/negative-bases/style.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-@import "./variables";
-
-vn-negative-bases {
- vn-date-picker{
- padding-right: 5%;
- }
- slot-actions{
- align-items: center;
- }
-}
diff --git a/modules/invoiceOut/front/routes.json b/modules/invoiceOut/front/routes.json
index f7f589b01c..7c7495cb98 100644
--- a/modules/invoiceOut/front/routes.json
+++ b/modules/invoiceOut/front/routes.json
@@ -26,12 +26,6 @@
"component": "vn-invoice-out-index",
"description": "InvoiceOut"
},
- {
- "url": "/global-invoicing?q",
- "state": "invoiceOut.global-invoicing",
- "component": "vn-invoice-out-global-invoicing",
- "description": "Global invoicing"
- },
{
"url": "/summary",
"state": "invoiceOut.card.summary",
@@ -40,21 +34,6 @@
"params": {
"invoice-out": "$ctrl.invoiceOut"
}
- },
- {
- "url": "/:id",
- "state": "invoiceOut.card",
- "abstract": true,
- "component": "vn-invoice-out-card"
- },
- {
- "url": "/negative-bases",
- "state": "invoiceOut.negative-bases",
- "component": "vn-negative-bases",
- "description": "Negative bases",
- "acl": [
- "administrative"
- ]
}
]
}
diff --git a/modules/invoiceOut/front/search-panel/index.html b/modules/invoiceOut/front/search-panel/index.html
deleted file mode 100644
index f49002ccad..0000000000
--- a/modules/invoiceOut/front/search-panel/index.html
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
diff --git a/modules/invoiceOut/front/search-panel/index.js b/modules/invoiceOut/front/search-panel/index.js
deleted file mode 100644
index a77d479cae..0000000000
--- a/modules/invoiceOut/front/search-panel/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import ngModule from '../module';
-import SearchPanel from 'core/components/searchbar/search-panel';
-
-ngModule.vnComponent('vnInvoiceSearchPanel', {
- template: require('./index.html'),
- controller: SearchPanel
-});
diff --git a/modules/invoiceOut/front/summary/locale/es.yml b/modules/invoiceOut/front/summary/es.yml
similarity index 100%
rename from modules/invoiceOut/front/summary/locale/es.yml
rename to modules/invoiceOut/front/summary/es.yml