diff --git a/src/components/TicketProblems.vue b/src/components/TicketProblems.vue
index 59be95035..c15e31d80 100644
--- a/src/components/TicketProblems.vue
+++ b/src/components/TicketProblems.vue
@@ -17,17 +17,6 @@ defineProps({ row: { type: Object, required: true } });
-
-
- {{ t('ticketSale.reserved') }}
-
-
-import { nextTick, ref } from 'vue';
import VnInput from './VnInput.vue';
import { useAccountShortToStandard } from 'src/composables/useAccountShortToStandard';
-const $props = defineProps({
- insertable: {
- type: Boolean,
- default: false,
- },
-});
-
-const emit = defineEmits(['update:modelValue', 'accountShortToStandard']);
const model = defineModel({ prop: 'modelValue' });
-const inputRef = ref(false);
-
-function setCursorPosition(pos) {
- const input = inputRef.value.vnInputRef.$el.querySelector('input');
- input.focus();
- input.setSelectionRange(pos, pos);
-}
-
-async function handleUpdateModel(val) {
- model.value = val?.at(-1) === '.' ? useAccountShortToStandard(val) : val;
- await nextTick(() => setCursorPosition(0));
-}
diff --git a/src/composables/__tests__/useRole.spec.js b/src/composables/__tests__/useRole.spec.js
index d0bca5342..54d983a13 100644
--- a/src/composables/__tests__/useRole.spec.js
+++ b/src/composables/__tests__/useRole.spec.js
@@ -23,18 +23,19 @@ describe('useRole', () => {
name: `T'Challa`,
nickname: 'Black Panther',
lang: 'en',
+ worker: { department: { departmentFk: 155 } },
};
const expectedUser = {
id: 999,
name: `T'Challa`,
nickname: 'Black Panther',
lang: 'en',
+ departmentFk: 155,
};
const expectedRoles = ['salesPerson', 'admin'];
- vi.spyOn(axios, 'get')
- .mockResolvedValueOnce({
+ vi.spyOn(axios, 'get').mockResolvedValueOnce({
data: { roles: rolesData, user: fetchedUser },
- })
+ });
vi.spyOn(role.state, 'setUser');
vi.spyOn(role.state, 'setRoles');
diff --git a/src/composables/__tests__/useSession.spec.js b/src/composables/__tests__/useSession.spec.js
index 789b149ec..cae33f893 100644
--- a/src/composables/__tests__/useSession.spec.js
+++ b/src/composables/__tests__/useSession.spec.js
@@ -75,6 +75,7 @@ describe('session', () => {
userConfig: {
darkMode: false,
},
+ worker: { department: { departmentFk: 155 } },
};
const rolesData = [
{
@@ -143,7 +144,7 @@ describe('session', () => {
await session.destroy(); // this clears token and user for any other test
});
},
- {}
+ {},
);
describe('RenewToken', () => {
@@ -175,7 +176,7 @@ describe('session', () => {
await session.checkValidity();
expect(sessionStorage.getItem('token')).toEqual(expectedToken);
expect(sessionStorage.getItem('tokenMultimedia')).toEqual(
- expectedTokenMultimedia
+ expectedTokenMultimedia,
);
});
it('Should renewToken', async () => {
@@ -204,7 +205,7 @@ describe('session', () => {
await session.checkValidity();
expect(sessionStorage.getItem('token')).not.toEqual(expectedToken);
expect(sessionStorage.getItem('tokenMultimedia')).not.toEqual(
- expectedTokenMultimedia
+ expectedTokenMultimedia,
);
});
});
diff --git a/src/composables/useRole.js b/src/composables/useRole.js
index ff54b409c..e700b1f2e 100644
--- a/src/composables/useRole.js
+++ b/src/composables/useRole.js
@@ -13,6 +13,7 @@ export function useRole() {
name: data.user.name,
nickname: data.user.nickname,
lang: data.user.lang || 'es',
+ departmentFk: data.user.worker.department.departmentFk,
};
state.setUser(userData);
state.setRoles(roles);
diff --git a/src/pages/Claim/ClaimFilter.vue b/src/pages/Claim/ClaimFilter.vue
index 51460f7e4..45eb89382 100644
--- a/src/pages/Claim/ClaimFilter.vue
+++ b/src/pages/Claim/ClaimFilter.vue
@@ -115,6 +115,7 @@ const props = defineProps({
en:
params:
+ departmentFk: Department
search: Contains
clientFk: Customer
clientName: Customer
@@ -127,6 +128,7 @@ en:
zoneFk: Zone
es:
params:
+ departmentFk: Departamento
search: Contiene
clientFk: Cliente
clientName: Cliente
diff --git a/src/pages/Customer/CustomerFilter.vue b/src/pages/Customer/CustomerFilter.vue
index 55a7f565e..107a08144 100644
--- a/src/pages/Customer/CustomerFilter.vue
+++ b/src/pages/Customer/CustomerFilter.vue
@@ -156,6 +156,7 @@ en:
email: Email
isToBeMailed: Mailed
isEqualizated: Equailized
+ departmentFk: Department
businessTypeFk: Business type
sageTaxTypeFk: Sage Tax Type
sageTransactionTypeFk: Sage Tax Type
@@ -166,6 +167,7 @@ en:
postcode: Postcode
es:
params:
+ departmentFk: Departamento
search: Contiene
fi: NIF
isActive: Activo
diff --git a/src/pages/Customer/Defaulter/CustomerDefaulterFilter.vue b/src/pages/Customer/Defaulter/CustomerDefaulterFilter.vue
index 64e3baeb5..f7d4163d1 100644
--- a/src/pages/Customer/Defaulter/CustomerDefaulterFilter.vue
+++ b/src/pages/Customer/Defaulter/CustomerDefaulterFilter.vue
@@ -192,8 +192,10 @@ en:
date: L. O. Date
credit: Credit I.
defaulterSinced: From
+ departmentFk: Department
es:
params:
+ departmentFk: Departamento
clientFk: Cliente
countryFk: País
paymentMethod: F. Pago
diff --git a/src/pages/Monitor/MonitorClients.vue b/src/pages/Monitor/MonitorClients.vue
index c814d623e..2ba5f4c0b 100644
--- a/src/pages/Monitor/MonitorClients.vue
+++ b/src/pages/Monitor/MonitorClients.vue
@@ -9,12 +9,14 @@ import VnInputDate from 'src/components/common/VnInputDate.vue';
import VnRow from 'src/components/ui/VnRow.vue';
import { dateRange } from 'src/filters';
import useOpenURL from 'src/composables/useOpenURL';
+import { useState } from 'src/composables/useState';
const { t } = useI18n();
const dates = dateRange(Date.vnNew());
const from = ref(dates[0]);
const to = ref(dates[1]);
+const state = useState();
const filter = computed(() => {
const obj = {};
const formatFrom = setHours(from.value, 'from');
@@ -24,16 +26,18 @@ const filter = computed(() => {
if (!formatFrom && formatTo) stamp = { lte: formatTo };
else if (formatFrom && !formatTo) stamp = { gte: formatFrom };
else if (formatFrom && formatTo) stamp = { between: [formatFrom, formatTo] };
-
- return Object.assign(obj, { where: { 'v.stamp': stamp } });
+ return Object.assign(obj, {
+ where: {
+ 'v.stamp': stamp,
+ 'c.departmentFk': state.getUser().value.departmentFk,
+ },
+ });
});
function exprBuilder(param, value) {
switch (param) {
case 'clientFk':
return { [`c.id`]: value };
- case 'departmentFk':
- return { [`c.${param}`]: value };
}
}
@@ -66,9 +70,13 @@ const columns = computed(() => [
align: 'left',
name: 'departmentFk',
label: t('customer.summary.team'),
- component: 'select',
- attrs: {
- url: 'Departments',
+ columnFilter: {
+ component: 'select',
+ attrs: {
+ url: 'Departments',
+ },
+ alias: 'c',
+ inWhere: true,
},
columnField: {
component: null,
diff --git a/src/pages/Order/Card/OrderFilter.vue b/src/pages/Order/Card/OrderFilter.vue
index 609a1215a..5f91153ac 100644
--- a/src/pages/Order/Card/OrderFilter.vue
+++ b/src/pages/Order/Card/OrderFilter.vue
@@ -130,8 +130,10 @@ en:
myTeam: My Team
isConfirmed: Order Confirmed
showEmpty: Show Empty
+ departmentFk: Department
es:
params:
+ departmentFk: Departamento
search: Búsqueda
clientFk: Cliente
agencyModeFk: Agencia
diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue
index 3960243aa..c5f7d5856 100644
--- a/src/pages/Ticket/Card/TicketSale.vue
+++ b/src/pages/Ticket/Card/TicketSale.vue
@@ -187,7 +187,9 @@ const getRowUpdateInputEvents = (sale) => {
const resetChanges = async () => {
arrayData.fetch({ append: false });
- tableRef.value.reload();
+ tableRef.value.CrudModelRef.hasChanges = false;
+ await tableRef.value.reload();
+
selectedRows.value = [];
};
const changeQuantity = async (sale) => {
@@ -392,7 +394,7 @@ const changeTicketState = async (val) => {
const params = { ticketFk: route.params.id, code: val };
await axios.post('Tickets/state', params);
notify('globals.dataSaved', 'positive');
- await resetChanges();
+ resetChanges();
};
const removeSelectedSales = () => {
diff --git a/src/pages/Ticket/Card/TicketSaleMoreActions.vue b/src/pages/Ticket/Card/TicketSaleMoreActions.vue
index 773b0807f..a1eaba53f 100644
--- a/src/pages/Ticket/Card/TicketSaleMoreActions.vue
+++ b/src/pages/Ticket/Card/TicketSaleMoreActions.vue
@@ -62,6 +62,7 @@ const isClaimable = computed(() => {
}
return false;
});
+
const sendSms = async (params) => {
await axios.post(`Tickets/${ticket.value.id}/sendSms`, params);
notify(t('SMS sent'), 'positive');
@@ -230,18 +231,6 @@ const createRefund = async (withWarehouse) => {
{{ t('Add claim') }}
-
-
- {{ t('Mark as reserved') }}
-
-
{{ t('Refund') }}
@@ -287,8 +276,6 @@ es:
Recalculate price: Recalcular precio
Update discount: Actualizar descuento
Add claim: Crear reclamación
- Mark as reserved: Marcar como reservado
- Unmark as reserved: Desmarcar como reservado
Refund: Abono
with warehouse: con almacén
without warehouse: sin almacén
diff --git a/src/pages/Ticket/TicketFilter.vue b/src/pages/Ticket/TicketFilter.vue
index b763ef970..d84d1c082 100644
--- a/src/pages/Ticket/TicketFilter.vue
+++ b/src/pages/Ticket/TicketFilter.vue
@@ -22,16 +22,6 @@ const states = ref([]);
const agencies = ref([]);
const warehouses = ref([]);
const groupedStates = ref([]);
-
-const getGroupedStates = (data) => {
- for (const state of data) {
- groupedStates.value.push({
- id: state.id,
- name: t(`${state.code}`),
- code: state.code,
- });
- }
-};
@@ -39,12 +29,11 @@ const getGroupedStates = (data) => {
(states = data)" auto-load />
{
- getGroupedStates(data);
- }
- "
auto-load
+ @on-fetch="
+ (data) =>
+ (groupedStates = data.map((x) => Object.assign(x, { code: t(x.code) })))
+ "
/>
{
diff --git a/src/pages/Travel/Card/TravelCard.vue b/src/pages/Travel/Card/TravelCard.vue
index 479b47fb9..d452f5287 100644
--- a/src/pages/Travel/Card/TravelCard.vue
+++ b/src/pages/Travel/Card/TravelCard.vue
@@ -8,6 +8,6 @@ import filter from './TravelFilter.js';
data-key="Travel"
url="Travels"
:descriptor="TravelDescriptor"
- :filter="filter"
+ :filter="{ ...filter, where: { id: $route.params.id } }"
/>
diff --git a/src/pages/Travel/Card/TravelSummary.vue b/src/pages/Travel/Card/TravelSummary.vue
index dc3f6f8c0..22e2cff86 100644
--- a/src/pages/Travel/Card/TravelSummary.vue
+++ b/src/pages/Travel/Card/TravelSummary.vue
@@ -410,18 +410,18 @@ onMounted(async () => {
-
-
+ (warehouses = data)"
+ auto-load
+ />
+
{
+describe('Account descriptor', () => {
const descriptorOptions = '[data-cy="descriptor-more-opts-menu"] > .q-list';
const url = '/#/account/1/summary';
@@ -7,6 +7,9 @@ describe('ClaimNotes', () => {
cy.visit(url);
cy.dataCy('descriptor-more-opts').click();
cy.get(descriptorOptions)
+ .should('exist')
+ .should('be.visible')
+
.find('.q-item')
.its('length')
.then((count) => {
diff --git a/test/cypress/integration/order/orderList.spec.js b/test/cypress/integration/order/orderList.spec.js
index 34cd2bffc..ee011ea05 100644
--- a/test/cypress/integration/order/orderList.spec.js
+++ b/test/cypress/integration/order/orderList.spec.js
@@ -30,9 +30,11 @@ describe('OrderList', () => {
cy.url().should('include', `/order`);
});
- it.skip('filter list and create order', () => {
+ it('filter list and create order', () => {
cy.dataCy('Customer ID_input').type('1101{enter}');
+ cy.intercept('GET', /\/api\/Clients/).as('clientFilter');
cy.dataCy('vnTableCreateBtn').click();
+ cy.wait('@clientFilter');
cy.dataCy('landedDate').find('input').type('06/01/2001');
cy.selectOption(agencyCreateSelect, 1);
diff --git a/test/cypress/integration/vnComponent/VnAccountNumber.spec.js b/test/cypress/integration/vnComponent/VnAccountNumber.spec.js
deleted file mode 100644
index 053902f35..000000000
--- a/test/cypress/integration/vnComponent/VnAccountNumber.spec.js
+++ /dev/null
@@ -1,37 +0,0 @@
-describe('VnAccountNumber', () => {
- const accountInput = 'input[data-cy="supplierFiscalDataAccount_input"]';
- beforeEach(() => {
- cy.login('developer');
- cy.viewport(1920, 1080);
- cy.visit('/#/supplier/1/fiscal-data');
- });
-
- describe('VnInput handleInsertMode()', () => {
- it('should replace character at cursor position in insert mode', () => {
- cy.get(accountInput).type('{selectall}4100000001');
- cy.get(accountInput).type('{movetostart}');
- cy.get(accountInput).type('999');
- cy.get(accountInput).should('have.value', '9990000001');
- });
-
- it('should replace character at cursor position in insert mode', () => {
- cy.get(accountInput).clear();
- cy.get(accountInput).type('4100000001');
- cy.get(accountInput).type('{movetostart}');
- cy.get(accountInput).type('999');
- cy.get(accountInput).should('have.value', '9990000001');
- });
-
- it('should respect maxlength prop', () => {
- cy.get(accountInput).clear();
- cy.get(accountInput).type('123456789012345');
- cy.get(accountInput).should('have.value', '1234567890');
- });
- });
-
- it('should convert short account number to standard format', () => {
- cy.get(accountInput).clear();
- cy.get(accountInput).type('123.');
- cy.get(accountInput).should('have.value', '1230000000');
- });
-});