hotfix_ticketNegative #1590

Open
jsegarra wants to merge 15 commits from hotfix_ticketNegative into master
13 changed files with 72 additions and 45 deletions
Showing only changes of commit b2b330de48 - Show all commits

View File

@ -775,7 +775,7 @@ const rowCtrlClickFunction = computed(() => {
:data-col-field="col?.name"
>
<div
class="no-padding no-margin peter"
class="no-padding no-margin"
style="
overflow: hidden;
text-overflow: ellipsis;
@ -944,6 +944,7 @@ const rowCtrlClickFunction = computed(() => {
:key="index"
:title="btn.title"
:icon="btn.icon"
data-cy="cardBtn"
class="q-pa-xs"
:class="
btn.isPrimary

View File

@ -913,3 +913,8 @@ months:
oct: October
nov: November
dec: December
bulkEdit:
completed: Bulk edit completed
failed: Bulk edit failed
edit: Bulk edit
inProgress: Bulk edit in progress

View File

@ -1000,3 +1000,9 @@ months:
oct: Octubre
nov: Noviembre
dec: Diciembre
bulkEdit:
completed: Edición masiva completada
failed: Edición masiva fallida
edit: Edición masiva
inProgress: Edición masiva en progreso
openTable: Abrir resultados

View File

@ -9,7 +9,7 @@ import axios from 'axios';
import { showResultsAsTable } from 'src/composables/showResultsTable';
import FetchData from 'components/FetchData.vue';
const { openTable } = showResultsAsTable();
import HandleSplitDialog from 'src/pages/Ticket/Negative/components/HandleSplitDialog.vue';
import HandleLackDialog from 'src/pages/Ticket/Negative/components/HandleLackDialog.vue';
const MATCH = 'match';
const { t } = useI18n();
@ -212,7 +212,7 @@ async function change({ itemFk: substitutionFk }) {
});
const results = await Promise.allSettled(promises);
openTable(HandleSplitDialog, results, 'ticketFk', 'changeItem');
openTable(HandleLackDialog, results, 'ticketFk', 'changeItem');
emit('itemReplaced', {
type: 'refresh',
itemProposal: proposalSelected.value[0],

View File

@ -1,6 +1,6 @@
import axios from 'axios';
import { showResultsAsTable } from 'src/composables/showResultsTable';
import HandleSplitDialog from 'src/pages/Ticket/Negative/components/HandleSplitDialog.vue';
import HandleLackDialog from 'src/pages/Ticket/Negative/components/HandleLackDialog.vue';
export function splitTicket() {
const { openTable } = showResultsAsTable();
@ -18,7 +18,7 @@ export function splitTicket() {
const promises = reducedData.map((params) => axios.post(`Tickets/split`, params));
const result = await Promise.allSettled(promises);
openTable(HandleSplitDialog, result, 'ticket', 'split');
openTable(HandleLackDialog, result, 'ticket', 'split');
}
return { split };
}

View File

@ -4,7 +4,7 @@ import axios from 'axios';
import VnSelect from 'src/components/common/VnSelect.vue';
import { showResultsAsTable } from 'src/composables/showResultsTable';
import HandleSplitDialog from './HandleSplitDialog.vue';
import HandleLackDialog from './HandleLackDialog.vue';
const { openTable } = showResultsAsTable();
const emit = defineEmits(['update-item']);
@ -30,7 +30,7 @@ const updateItem = async () => {
);
const result = await Promise.allSettled(rowsToUpdate);
openTable(HandleSplitDialog, result, 'ticketFk', 'changeItem');
openTable(HandleLackDialog, result, 'ticketFk', 'changeItem');
emit('update-item', newItem.value);
} catch (err) {
console.error('Error updating item:', err);

View File

@ -3,7 +3,7 @@ import { ref } from 'vue';
import axios from 'axios';
import VnInput from 'src/components/common/VnInput.vue';
import { showResultsAsTable } from 'src/composables/showResultsTable';
import HandleSplitDialog from './HandleSplitDialog.vue';
import HandleLackDialog from './HandleLackDialog.vue';
const { openTable } = showResultsAsTable();
const showChangeQuantityDialog = ref(false);
const newQuantity = ref(null);
@ -24,7 +24,7 @@ const updateQuantity = async () => {
);
const result = await Promise.allSettled(rowsToUpdate);
openTable(HandleSplitDialog, result, 'ticketFk', 'changeQuantity');
openTable(HandleLackDialog, result, 'ticketFk', 'changeQuantity');
emit('update-quantity', newQuantity.value);
};
</script>

View File

@ -4,7 +4,7 @@ import axios from 'axios';
import VnSelect from 'src/components/common/VnSelect.vue';
import FetchData from 'components/FetchData.vue';
import { showResultsAsTable } from 'src/composables/showResultsTable';
import HandleSplitDialog from './HandleSplitDialog.vue';
import HandleLackDialog from './HandleLackDialog.vue';
const { openTable } = showResultsAsTable();
const emit = defineEmits(['update-state']);
@ -18,18 +18,18 @@ const $props = defineProps({
},
});
const updateState = async () => {
showChangeStateDialog.value = true;
const rowsToUpdate = $props.selectedRows.map(({ ticketFk }) =>
axios.post(`Tickets/state`, {
ticketFk,
code: newState.value,
}),
);
showChangeStateDialog.value = true;
const rowsToUpdate = $props.selectedRows.map(({ ticketFk }) =>
axios.post(`Tickets/state`, {
ticketFk,
code: newState.value,
}),
);
const result = await Promise.allSettled(rowsToUpdate);
const result = await Promise.allSettled(rowsToUpdate);
openTable(HandleSplitDialog, result, 'ticketFk', 'changeState');
emit('update-state', newState.value);
openTable(HandleLackDialog, result, 'ticketFk', 'changeState');
emit('update-state', newState.value);
};
</script>

View File

@ -101,7 +101,7 @@ function openLinesDialog(row) {
</script>
<template>
<QDialog ref="dialogRef" @hide="onDialogHide" data-cy="handleSplitDialog" persistent>
<QDialog ref="dialogRef" @hide="onDialogHide" data-cy="HandleLackDialog" persistent>
<FetchData
v-if="$props.action === 'changeState'"
url="States"

View File

@ -218,7 +218,8 @@ ticketList:
negative:
hour: Hora
id: Id Articulo
longName: Articulo
longName: Artículo
itemFk: Artículo
supplier: Productor
colour: Color
size: Medida

View File

@ -65,13 +65,13 @@ describe('Ticket Lack detail', () => {
clickNotificationAction();
cy.dataCy('handleSplitDialog').should('be.visible');
cy.dataCy('handleSplitDialog').find('tbody > tr > :nth-child(1) > .q-icon');
cy.dataCy('handleSplitDialog').find(findTr(2)).should('have.class', 'link');
cy.dataCy('handleSplitDialog')
cy.dataCy('HandleLackDialog').should('be.visible');
cy.dataCy('HandleLackDialog').find('tbody > tr > :nth-child(1) > .q-icon');
cy.dataCy('HandleLackDialog').find(findTr(2)).should('have.class', 'link');
cy.dataCy('HandleLackDialog')
.find(`${findTr(2)}.link > div > span`)
.should('have.text', `${ticketId} `);
cy.dataCy('handleSplitDialog').find(findTr(3)).should('have.text', 'noSplit');
cy.dataCy('HandleLackDialog').find(findTr(3)).should('have.text', 'noSplit');
});
});
describe('Change Item', () => {
@ -86,13 +86,13 @@ describe('Ticket Lack detail', () => {
clickNotificationAction();
cy.dataCy('handleSplitDialog').should('be.visible');
cy.dataCy('handleSplitDialog').find('tbody > tr > :nth-child(1) > .q-icon');
cy.dataCy('handleSplitDialog').find(findTr(2)).should('have.class', 'link');
cy.dataCy('handleSplitDialog')
cy.dataCy('HandleLackDialog').should('be.visible');
cy.dataCy('HandleLackDialog').find('tbody > tr > :nth-child(1) > .q-icon');
cy.dataCy('HandleLackDialog').find(findTr(2)).should('have.class', 'link');
cy.dataCy('HandleLackDialog')
.find(`${findTr(2)}.link > span`)
.should('have.text', `${ticketId}`);
cy.dataCy('handleSplitDialog')
cy.dataCy('HandleLackDialog')
.find(findTr(3))
.should('have.text', 'price retrieval failed');
});
@ -109,14 +109,14 @@ describe('Ticket Lack detail', () => {
clickNotificationAction();
cy.dataCy('handleSplitDialog')
cy.dataCy('HandleLackDialog')
.should('be.visible')
.find('tbody > tr > :nth-child(1) > .q-icon');
cy.dataCy('handleSplitDialog').find(findTr(2)).should('have.class', 'link');
cy.dataCy('handleSplitDialog')
cy.dataCy('HandleLackDialog').find(findTr(2)).should('have.class', 'link');
cy.dataCy('HandleLackDialog')
.find(`${findTr(2)}.link > div > span`)
.should('have.text', `${ticketId} `);
cy.dataCy('handleSplitDialog').find(findTr(3)).should('have.text', 'OK');
cy.dataCy('HandleLackDialog').find(findTr(3)).should('have.text', 'OK');
});
});
describe('change quantity', () => {
@ -132,14 +132,14 @@ describe('Ticket Lack detail', () => {
clickNotificationAction();
cy.dataCy('handleSplitDialog')
cy.dataCy('HandleLackDialog')
.should('be.visible')
.find('tbody > tr > :nth-child(1) > .q-icon');
cy.dataCy('handleSplitDialog').find(findTr(2)).should('have.class', 'link');
cy.dataCy('handleSplitDialog')
cy.dataCy('HandleLackDialog').find(findTr(2)).should('have.class', 'link');
cy.dataCy('HandleLackDialog')
.find(`${findTr(2)}.link > div > span`)
.should('have.text', `${ticketId} `);
cy.dataCy('handleSplitDialog').find(findTr(3)).should('have.text', '10');
cy.dataCy('HandleLackDialog').find(findTr(3)).should('have.text', '10');
});
});
describe('Item proposal', () => {

View File

@ -321,9 +321,7 @@ Cypress.Commands.add('clickButtonDescriptor', (id) => {
});
Cypress.Commands.add('openUserPanel', () => {
cy.get(
'.column > .q-avatar > .q-avatar__content > .q-img > .q-img__container > .q-img__image',
).click();
cy.dataCy('userPanel_btn').click();
});
Cypress.Commands.add('checkNotification', (text) => {
@ -379,7 +377,13 @@ Cypress.Commands.add('clickButtonWith', (type, value) => {
}
});
Cypress.Commands.add('clickButtonWithIcon', (iconClass) => {
cy.get(`.q-icon.${iconClass}`).parent().click();
cy.waitForElement('[data-cy="descriptor_actions"]');
cy.get('[data-cy="loading-spinner"]', { timeout: 10000 }).should('not.be.visible');
cy.get('.q-btn')
.filter((index, el) => Cypress.$(el).find('.q-icon.' + iconClass).length > 0)
.then(($btn) => {
cy.wrap($btn).click();
});
});
Cypress.Commands.add('clickButtonWithText', (buttonText) => {
cy.get('.q-btn').contains(buttonText).click();

View File

@ -27,7 +27,17 @@ function randomNumber(options = { length: 10 }) {
function randomizeValue(characterSet, options) {
return Array.from({ length: options.length }, () =>
characterSet.charAt(Math.floor(Math.random() * characterSet.length))
characterSet.charAt(Math.floor(Math.random() * characterSet.length)),
).join('');
}
const style = document.createElement('style');
style.innerHTML = `
* {
transition: none !important;
animation: none !important;
}
`;
document.head.appendChild(style);
export { randomString, randomNumber, randomizeValue };