diff --git a/src/pages/Customer/components/CustomerRecoverieCreate.vue b/src/pages/Customer/components/CustomerRecoverieCreate.vue
index ed7304be0..b4ef5a9a3 100644
--- a/src/pages/Customer/components/CustomerRecoverieCreate.vue
+++ b/src/pages/Customer/components/CustomerRecoverieCreate.vue
@@ -14,9 +14,6 @@ const router = useRouter();
const initialData = reactive({
started: '2001-01-01T11:00:00.000Z',
- finished: null,
- amount: null,
- period: null,
});
onMounted(() => {
@@ -41,6 +38,16 @@ const toCustomerRecoveries = () => {
model="client"
url-create="Recoveries"
>
+
+
+
+
@@ -53,10 +60,20 @@ const toCustomerRecoveries = () => {
-
+
-
+
diff --git a/src/pages/Customer/components/CustomerSamplesCreate.vue b/src/pages/Customer/components/CustomerSamplesCreate.vue
new file mode 100644
index 000000000..4a28a3061
--- /dev/null
+++ b/src/pages/Customer/components/CustomerSamplesCreate.vue
@@ -0,0 +1,385 @@
+
+
+
+
+
+ (optionsCompanies = data)"
+ auto-load
+ url="Companies"
+ />
+ (optionsSamplesVisible = data)"
+ auto-load
+ url="Samples/visible"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ t('Its only used when sample is sent')
+ }}
+
+
+
+
+
+
+
+
+ {{
+ t('To who should the recipient replay?')
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ `${scope.opt.nickname}, ${scope.opt.street}, ${scope.opt.city}, ${scope.opt.province.name} - ${scope.opt.agencyMode.name}`
+ }}
+
+
+
+
+
+
+ {{ t('Edit address') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Sample: Plantilla
+ Recipient: Destinatario
+ Reply to: Responder a
+ Company: Empresa
+ Address: Dirección
+ Since: Desde
+ Its only used when sample is sent: Se utiliza únicamente cuando se envía la plantilla
+ To who should the recipient replay?: ¿A quien debería responder el destinatario?
+ Edit address: Editar dirección
+ Preview: Vista previa
+ Email cannot be blank: Debes introducir un email
+ Choose a sample: Selecciona una plantilla
+ Choose a company: Selecciona una empresa
+ Choose a date: Selecciona una fecha
+
diff --git a/src/pages/Customer/components/CustomerSamplesPreview.vue b/src/pages/Customer/components/CustomerSamplesPreview.vue
new file mode 100644
index 000000000..dcd2f7591
--- /dev/null
+++ b/src/pages/Customer/components/CustomerSamplesPreview.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Customer/components/CustomerSummaryTable.vue b/src/pages/Customer/components/CustomerSummaryTable.vue
new file mode 100644
index 000000000..6a33ebc88
--- /dev/null
+++ b/src/pages/Customer/components/CustomerSummaryTable.vue
@@ -0,0 +1,247 @@
+
+
+
+ (rows = data)"
+ auto-load
+ url="Tickets"
+ />
+
+
+
+
+
+
+ {{ props.value }}
+
+
+
+ {{ props.value }}
+
+
+
+
+ {{ props.value }}
+
+
+
+
+ {{ toCurrency(props.value) }}
+
+ {{ toCurrency(props.value) }}
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Id: Id
+ Nickname: Alias
+ Agency: Agencia
+ Route: Ruta
+ Packages: Bultos
+ Date: Fecha
+ State: Estado
+ Total: Total
+
diff --git a/src/pages/Customer/components/CustomerSummaryTableActions.vue b/src/pages/Customer/components/CustomerSummaryTableActions.vue
new file mode 100644
index 000000000..6e9038374
--- /dev/null
+++ b/src/pages/Customer/components/CustomerSummaryTableActions.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+ {{ t('Go to lines') }}
+
+
+
+
+ {{ t('Preview') }}
+
+
+
+
+
+
+es:
+ Go to lines: Ir a lineas
+ Preview: Vista previa
+
diff --git a/src/pages/Customer/components/ModalCloseContract.vue b/src/pages/Customer/components/ModalCloseContract.vue
new file mode 100644
index 000000000..606cfab98
--- /dev/null
+++ b/src/pages/Customer/components/ModalCloseContract.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('Are you sure you want to close this contract?') }}
+
+ {{ t('Close contract') }}
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Are you sure you want to close this contract?: ¿Seguro que quieres cerrar este contrato?
+ Close contract: Cerrar contrato
+
diff --git a/src/pages/Order/Card/OrderForm.vue b/src/pages/Order/Card/OrderForm.vue
index 42aee7640..6a4ae6aac 100644
--- a/src/pages/Order/Card/OrderForm.vue
+++ b/src/pages/Order/Card/OrderForm.vue
@@ -1,6 +1,6 @@
+
+
+ (clientOptions = data)"
+ :filter="{ fields: ['id', 'name', 'defaultAddressFk'], order: 'id' }"
+ auto-load
+ />
+ (warehousesOptions = data)"
+ order="name"
+ auto-load
+ />
+
+
+
+
+
+
+ onClientSelected(data)"
+ >
+
+
+
+
+ {{ scope.opt.name }}
+
+
+ {{ `#${scope.opt.id}` }}
+
+
+
+
+
+
+
+
+
+ fetchAvailableAgencies(data)"
+ >
+
+
+
+
+ {{ scope.opt.nickname }}
+
+
+ {{ `${scope.opt.street}, ${scope.opt.city}` }}
+
+
+
+
+
+
+
+
+
+ fetchAvailableAgencies(data)"
+ />
+
+
+
+
+ fetchAvailableAgencies(data)"
+ />
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue
index c5d25fed2..c6e5cb60c 100644
--- a/src/pages/Ticket/TicketList.vue
+++ b/src/pages/Ticket/TicketList.vue
@@ -123,6 +123,13 @@ function navigate(id) {
+
+
+
+ {{ t('New ticket') }}
+
+
+
@@ -131,4 +138,5 @@ es:
Search ticket: Buscar ticket
You can search by ticket id or alias: Puedes buscar por id o alias del ticket
Zone: Zona
+ New ticket: Nuevo ticket
diff --git a/src/router/modules/customer.js b/src/router/modules/customer.js
index 76d9a5af1..5ef5945f3 100644
--- a/src/router/modules/customer.js
+++ b/src/router/modules/customer.js
@@ -22,7 +22,7 @@ export default {
'CustomerBasicData',
'CustomerFiscalData',
'CustomerBillingData',
- 'CustomerConsignees',
+ 'CustomerAddress',
'CustomerNotes',
'CustomerCredits',
'CustomerGreuges',
@@ -153,45 +153,45 @@ export default {
import('src/pages/Customer/Card/CustomerBillingData.vue'),
},
{
- path: 'consignees',
- name: 'ConsigneesCard',
- redirect: { name: 'CustomerConsignees' },
+ path: 'address',
+ name: 'AddressCard',
+ redirect: { name: 'CustomerAddress' },
children: [
{
path: '',
- name: 'CustomerConsignees',
+ name: 'CustomerAddress',
meta: {
icon: 'vn:delivery',
title: 'consignees',
},
component: () =>
- import('src/pages/Customer/Card/CustomerConsignees.vue'),
+ import('src/pages/Customer/Card/CustomerAddress.vue'),
},
{
path: 'create',
- name: 'CustomerConsigneeCreate',
+ name: 'CustomerAddressCreate',
meta: {
- title: 'consignee-create',
+ title: 'address-create',
},
component: () =>
import(
- 'src/pages/Customer/components/CustomerConsigneeCreate.vue'
+ 'src/pages/Customer/components/CustomerAddressCreate.vue'
),
},
{
- path: ':consigneeId',
- name: 'CustomerConsigneeEditCard',
- redirect: { name: 'CustomerConsigneeEdit' },
+ path: ':addressId',
+ name: 'CustomerAddressEditCard',
+ redirect: { name: 'CustomerAddressEdit' },
children: [
{
path: 'edit',
- name: 'CustomerConsigneeEdit',
+ name: 'CustomerAddressEdit',
meta: {
- title: 'consignee-edit',
+ title: 'address-edit',
},
component: () =>
import(
- 'src/pages/Customer/components/CustomerConsigneeEdit.vue'
+ 'src/pages/Customer/components/CustomerAddressEdit.vue'
),
},
],
@@ -200,7 +200,7 @@ export default {
},
{
path: 'notes',
- name: 'NotesCard',
+ name: 'CustomerNotesCard',
redirect: { name: 'CustomerNotes' },
children: [
{
@@ -358,36 +358,55 @@ export default {
{
name: 'CustomerCreditContracts',
title: 'creditContracts',
- icon: 'paid',
+ icon: 'vn:solunion',
},
{
name: 'CustomerCreditOpinion',
title: 'creditOpinion',
- icon: 'paid',
+ icon: 'vn:linesprepaired',
},
],
},
- component: () =>
- import('src/pages/Customer/Card/CustomerCreditManagement.vue'),
children: [
{
path: 'credit-contracts',
- name: 'CustomerCreditContracts',
- meta: {
- title: 'creditContracts',
- icon: 'paid',
- },
- component: () =>
- import(
- 'src/pages/Customer/Card/CustomerCreditContracts.vue'
- ),
+ name: 'CreditContractsCard',
+ redirect: { name: 'CustomerCreditContracts' },
+ children: [
+ {
+ path: '',
+ name: 'CustomerCreditContracts',
+ meta: {
+ title: 'creditContracts',
+ },
+ component: () =>
+ import(
+ 'src/pages/Customer/Card/CustomerCreditContracts.vue'
+ ),
+ },
+ {
+ path: 'create',
+ name: 'CustomerCreditContractsCreate',
+ component: () =>
+ import(
+ 'src/pages/Customer/components/CustomerCreditContractsCreate.vue'
+ ),
+ },
+ {
+ path: 'insurance/:creditId',
+ name: 'CustomerCreditContractsInsurance',
+ component: () =>
+ import(
+ 'src/pages/Customer/components/CustomerCreditContractsInsurance.vue'
+ ),
+ },
+ ],
},
{
path: 'credit-opinion',
name: 'CustomerCreditOpinion',
meta: {
title: 'creditOpinion',
- icon: 'paid',
},
component: () =>
import(
@@ -396,15 +415,177 @@ export default {
},
],
},
-
{
path: 'others',
name: 'CustomerOthers',
meta: {
title: 'others',
icon: 'pending',
+ menuChildren: [
+ {
+ name: 'CustomerSamples',
+ title: 'samples',
+ icon: 'vn:notes',
+ },
+ {
+ name: 'CustomerConsumption',
+ title: 'consumption',
+ icon: 'show_chart',
+ },
+ {
+ name: 'CustomerMandates',
+ title: 'mandates',
+ icon: 'vn:mandatory',
+ },
+ {
+ name: 'CustomerContacts',
+ title: 'contacts',
+ icon: 'contact_phone',
+ },
+ {
+ name: 'CustomerWebPayment',
+ title: 'webPayment',
+ icon: 'vn:onlinepayment',
+ },
+ {
+ name: 'CustomerFileManagement',
+ title: 'fileManagement',
+ icon: 'Upload',
+ },
+ {
+ name: 'CustomerUnpaid',
+ title: 'unpaid',
+ icon: 'vn:defaulter',
+ },
+ ],
},
- component: () => import('src/pages/Customer/Card/CustomerOthers.vue'),
+ children: [
+ {
+ path: 'samples',
+ name: 'CustomerSamples',
+ meta: {
+ title: 'samples',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerSamples.vue'),
+ },
+ {
+ path: 'samples',
+ name: 'CustomerSamplesCard',
+ redirect: { name: 'CustomerSamples' },
+ children: [
+ {
+ path: '',
+ name: 'CustomerSamples',
+ meta: {
+ title: 'samples',
+ },
+ component: () =>
+ import(
+ 'src/pages/Customer/Card/CustomerSamples.vue'
+ ),
+ },
+ {
+ path: 'create',
+ name: 'CustomerSamplesCreate',
+ component: () =>
+ import(
+ 'src/pages/Customer/components/CustomerSamplesCreate.vue'
+ ),
+ },
+ ],
+ },
+ {
+ path: 'consumption',
+ name: 'CustomerConsumption',
+ meta: {
+ title: 'consumption',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerConsumption.vue'),
+ },
+ {
+ path: 'mandates',
+ name: 'CustomerMandates',
+ meta: {
+ title: 'mandates',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerMandates.vue'),
+ },
+ {
+ path: 'contacts',
+ name: 'CustomerContacts',
+ meta: {
+ title: 'contacts',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerContacts.vue'),
+ },
+ {
+ path: 'web-payment',
+ name: 'CustomerWebPayment',
+ meta: {
+ title: 'webPayment',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerWebPayment.vue'),
+ },
+ {
+ path: 'file-management',
+ name: 'CustomerFileManagement',
+ meta: {
+ title: 'fileManagement',
+ },
+ component: () =>
+ import(
+ 'src/pages/Customer/Card/CustomerFileManagement.vue'
+ ),
+ },
+ {
+ path: 'file-management',
+ name: 'CustomerFileManagementCard',
+ redirect: { name: 'CustomerFileManagement' },
+ children: [
+ {
+ path: '',
+ name: 'CustomerFileManagement',
+ meta: {
+ title: 'fileManagement',
+ },
+ component: () =>
+ import(
+ 'src/pages/Customer/Card/CustomerFileManagement.vue'
+ ),
+ },
+ {
+ path: 'create',
+ name: 'CustomerFileManagementCreate',
+ component: () =>
+ import(
+ 'src/pages/Customer/components/CustomerFileManagementCreate.vue'
+ ),
+ },
+ {
+ path: ':dmsId/edit',
+ name: 'CustomerFileManagementEdit',
+ component: () =>
+ import(
+ 'src/pages/Customer/components/CustomerFileManagementEdit.vue'
+ ),
+ },
+ ],
+ },
+ {
+ path: 'unpaid',
+ name: 'CustomerUnpaid',
+ meta: {
+ title: 'unpaid',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerUnpaid.vue'),
+ },
+ ],
},
],
},
diff --git a/src/router/modules/ticket.js b/src/router/modules/ticket.js
index d6b714154..eb6c1b6d2 100644
--- a/src/router/modules/ticket.js
+++ b/src/router/modules/ticket.js
@@ -38,7 +38,7 @@ export default {
icon: 'vn:ticketAdd',
roles: ['developer'],
},
- component: () => import('src/pages/Ticket/TicketList.vue'),
+ component: () => import('src/pages/Ticket/TicketCreate.vue'),
},
],
},
diff --git a/test/cypress/integration/invoiceIn/invoiceInDueDay.spec.js b/test/cypress/integration/invoiceIn/invoiceInDueDay.spec.js
index ee5ffe08d..f39c80809 100644
--- a/test/cypress/integration/invoiceIn/invoiceInDueDay.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInDueDay.spec.js
@@ -1,7 +1,6 @@
///
describe('InvoiceInDueDay', () => {
const inputs = 'label input';
- const inputBtns = 'label button';
const addBtn = '.q-page-sticky > div > .q-btn > .q-btn__content';
beforeEach(() => {
@@ -10,7 +9,6 @@ describe('InvoiceInDueDay', () => {
});
it('should update the amount', () => {
- cy.get(inputBtns).eq(1).click();
cy.get(inputs).eq(3).type(23);
cy.saveCard();
cy.get('.q-notification__message').should('have.text', 'Data saved');
diff --git a/test/cypress/integration/invoiceIn/invoiceInVat.spec.js b/test/cypress/integration/invoiceIn/invoiceInVat.spec.js
index 2f045f32c..ff891399b 100644
--- a/test/cypress/integration/invoiceIn/invoiceInVat.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInVat.spec.js
@@ -1,11 +1,11 @@
///
describe('InvoiceInVat', () => {
- const inputs = 'label input';
- const inputBtns = 'label button';
const thirdRow = 'tbody > :nth-child(3)';
const firstLineVat = 'tbody > :nth-child(1) > :nth-child(4)';
const dialogInputs = '.q-dialog label input';
const dialogBtns = '.q-dialog button';
+ const acrossInput =
+ ':nth-child(1) > .q-td.q-table--col-auto-width > .q-field > .q-field__inner > .q-field__control > :nth-child(2) > .default-icon';
const randomInt = Math.floor(Math.random() * 100);
beforeEach(() => {
@@ -13,11 +13,8 @@ describe('InvoiceInVat', () => {
cy.visit(`/#/invoice-in/1/vat`);
});
- it('should edit the first line', () => {
- cy.get(inputBtns).eq(1).click();
- cy.get(inputs).eq(2).type(23);
+ it('should edit the sage iva', () => {
cy.selectOption(firstLineVat, 'H.P. IVA 21% CEE');
-
cy.saveCard();
cy.visit(`/#/invoice-in/1/vat`);
@@ -36,16 +33,13 @@ describe('InvoiceInVat', () => {
});
it('should throw an error if there are fields undefined', () => {
- cy.get(inputBtns).eq(0).click();
- cy.get(':nth-child(1) > .q-td.q-table--col-auto-width > .q-field > .q-field__inner > .q-field__control > :nth-child(2) > .default-icon').click();
+ cy.get(acrossInput).click();
cy.get(dialogBtns).eq(2).click();
cy.get('.q-notification__message').should('have.text', "The code can't be empty");
});
it('should correctly handle expense addition', () => {
- cy.get(inputBtns).eq(0).click();
-
- cy.get(':nth-child(1) > .q-td.q-table--col-auto-width > .q-field > .q-field__inner > .q-field__control > :nth-child(2) > .default-icon').click();
+ cy.get(acrossInput).click();
cy.get(dialogInputs).eq(0).type(randomInt);
cy.get(dialogInputs).eq(1).click();
cy.get(dialogInputs).eq(1).type('This is a dummy expense');
diff --git a/test/vitest/__tests__/components/Paginate.spec.js b/test/vitest/__tests__/components/Paginate.spec.js
index cf5e5d2ea..345903c1a 100644
--- a/test/vitest/__tests__/components/Paginate.spec.js
+++ b/test/vitest/__tests__/components/Paginate.spec.js
@@ -48,7 +48,7 @@ describe('VnPaginate', () => {
{ id: 3, name: 'Bruce Wayne' },
],
});
- vm.arrayData.hasMoreData.value = true;
+ vm.store.hasMoreData = true;
await vm.$nextTick();
vm.store.data = [