6157-actionClaim #106
|
@ -268,7 +268,7 @@ watch(formUrl, async () => {
|
||||||
</VnPaginate>
|
</VnPaginate>
|
||||||
<SkeletonTable v-if="!formData" />
|
<SkeletonTable v-if="!formData" />
|
||||||
<Teleport to="#st-actions" v-if="stateStore?.isSubToolbarShown()">
|
<Teleport to="#st-actions" v-if="stateStore?.isSubToolbarShown()">
|
||||||
<QBtnGroup push class="q-gutter-x-sm">
|
<QBtnGroup push style="column-gap: 10px">
|
||||||
<slot name="moreBeforeActions" />
|
<slot name="moreBeforeActions" />
|
||||||
<QBtn
|
<QBtn
|
||||||
:label="tMobile('globals.remove')"
|
:label="tMobile('globals.remove')"
|
||||||
|
|
|
@ -33,7 +33,7 @@ const dialogGreuge = ref(false);
|
||||||
const columns = computed(() => [
|
const columns = computed(() => [
|
||||||
{
|
{
|
||||||
name: 'Id',
|
name: 'Id',
|
||||||
label: t('Id'),
|
label: t('Id item'),
|
||||||
field: (row) => row.itemFk,
|
field: (row) => row.itemFk,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -119,6 +119,7 @@ async function updateDestinations(claimDestinationFk) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateDestination(claimDestinationFk, row) {
|
async function updateDestination(claimDestinationFk, row) {
|
||||||
carlossa marked this conversation as resolved
|
|||||||
|
console.log(claimDestinationFk, row);
|
||||||
if (claimDestinationFk) {
|
if (claimDestinationFk) {
|
||||||
await axios.post('Claims/updateClaimDestination', {
|
await axios.post('Claims/updateClaimDestination', {
|
||||||
claimDestinationFk,
|
claimDestinationFk,
|
||||||
|
@ -238,251 +239,220 @@ async function importToNewRefundTicket() {
|
||||||
show-if-above
|
show-if-above
|
||||||
v-if="claim"
|
v-if="claim"
|
||||||
>
|
>
|
||||||
<QScrollArea class="fit text-grey-8 q-mt-lg">
|
<div class="totalClaim q-mb-md">
|
||||||
<div class="totalClaim q-mb-md">
|
{{ `${t('Total claimed')}: ${toCurrency(totalClaimed)}` }}
|
||||||
{{ `${t('Total claimed')}: ${toCurrency(totalClaimed)}` }}
|
</div>
|
||||||
</div>
|
<QCard class="q-mb-md q-pa-sm">
|
||||||
<QCard class="q-mb-md q-pa-sm">
|
<QItem class="justify-between">
|
||||||
<QItem class="justify-between">
|
<QItemLabel class="slider-container">
|
||||||
<QItemLabel class="slider-container">
|
<p class="text-primary">
|
||||||
<p class="text-primary">
|
{{ t('claim.summary.actions') }}
|
||||||
{{ t('claim.summary.actions') }}
|
</p>
|
||||||
</p>
|
<QSlider
|
||||||
<QSlider
|
class="responsibility { 'background-color:primary': quasar.platform.is.mobile }"
|
||||||
class="responsibility { 'background-color:primary': quasar.platform.is.mobile }"
|
v-model="claim.responsibility"
|
||||||
v-model="claim.responsibility"
|
:label-value="t('claim.summary.responsibility')"
|
||||||
:label-value="t('claim.summary.responsibility')"
|
@update:model-value="(value) => save({ responsibility: value })"
|
||||||
@update:model-value="
|
label-always
|
||||||
(value) => save({ responsibility: value })
|
color="primary"
|
||||||
"
|
markers
|
||||||
label-always
|
:marker-labels="[
|
||||||
color="primary"
|
{ value: 1, label: t('claim.summary.company') },
|
||||||
markers
|
{ value: 5, label: t('claim.summary.person') },
|
||||||
carlossa marked this conversation as resolved
jsegarra
commented
Si, los labels cambian, tienes que venir hasta el HTML? Si, los labels cambian, tienes que venir hasta el HTML?
Quizás, mejor definirlo en el apartado de <script setup>
|
|||||||
:marker-labels="[
|
]"
|
||||||
{ value: 1, label: t('claim.summary.company') },
|
:min="1"
|
||||||
{ value: 5, label: t('claim.summary.person') },
|
:max="5"
|
||||||
]"
|
/>
|
||||||
carlossa marked this conversation as resolved
jsegarra
commented
Podemos definir este valor como constante? Podemos definir este valor como constante?
Tipo
DEFAULT_MIN_SLIDER =1
DEFAULT_MAX_SLIDER =5
|
|||||||
:min="1"
|
</QItemLabel>
|
||||||
:max="5"
|
</QItem>
|
||||||
/>
|
</QCard>
|
||||||
</QItemLabel>
|
<QItemLabel class="mana q-mb-md">
|
||||||
</QItem>
|
<QCheckbox
|
||||||
</QCard>
|
v-model="claim.isChargedToMana"
|
||||||
<QItemLabel class="mana q-mb-md">
|
@update:model-value="(value) => save({ isChargedToMana: value })"
|
||||||
<QCheckbox
|
/>
|
||||||
v-model="claim.isChargedToMana"
|
<span>{{ t('mana') }}</span>
|
||||||
@update:model-value="(value) => save({ isChargedToMana: value })"
|
</QItemLabel>
|
||||||
/>
|
|
||||||
<span>{{ t('mana') }}</span>
|
|
||||||
</QItemLabel>
|
|
||||||
</QScrollArea>
|
|
||||||
</QDrawer>
|
</QDrawer>
|
||||||
<Teleport to="#st-data" v-if="stateStore.isSubToolbarShown()"> </Teleport>
|
<Teleport to="#st-data" v-if="stateStore.isSubToolbarShown()"> </Teleport>
|
||||||
<div class="claim-action">
|
<CrudModel
|
||||||
<CrudModel
|
v-if="claim"
|
||||||
v-if="claim"
|
data-key="ClaimEnds"
|
||||||
data-key="ClaimEnds"
|
url="ClaimEnds/filter"
|
||||||
url="ClaimEnds/filter"
|
save-url="ClaimEnds/crud"
|
||||||
save-url="ClaimEnds/crud"
|
ref="claimActionsForm"
|
||||||
ref="claimActionsForm"
|
v-model:selected="selectedRows"
|
||||||
v-model:selected="selectedRows"
|
:filter="{ where: { claimFk: claimId } }"
|
||||||
:filter="{ where: { claimFk: claimId } }"
|
:default-remove="true"
|
||||||
:default-remove="true"
|
:default-save="false"
|
||||||
:default-save="false"
|
:default-reset="false"
|
||||||
:default-reset="false"
|
@on-fetch="(data) => (rows = data)"
|
||||||
@on-fetch="(data) => (rows = data)"
|
auto-load
|
||||||
auto-load
|
>
|
||||||
>
|
<template #body>
|
||||||
<template #body>
|
<QTable
|
||||||
<QTable
|
:columns="columns"
|
||||||
:columns="columns"
|
:rows="rows"
|
||||||
:rows="rows"
|
:dense="$q.screen.lt.md"
|
||||||
:dense="$q.screen.lt.md"
|
:pagination="{ rowsPerPage: 0 }"
|
||||||
:pagination="{ rowsPerPage: 0 }"
|
row-key="id"
|
||||||
row-key="id"
|
selection="multiple"
|
||||||
selection="multiple"
|
v-model:selected="selectedRows"
|
||||||
v-model:selected="selectedRows"
|
hide-pagination
|
||||||
hide-pagination
|
:grid="$q.screen.lt.md"
|
||||||
:grid="$q.screen.lt.md"
|
>
|
||||||
>
|
<template #body-cell-ticket="{ value }">
|
||||||
<template #body-cell-ticket="{ value }">
|
<QTd align="center">
|
||||||
<QTd align="center">
|
<span class="link">
|
||||||
<span class="link">
|
{{ value }}
|
||||||
{{ value }}
|
<TicketDescriptorProxy :id="value" />
|
||||||
<TicketDescriptorProxy :id="value" />
|
|
||||||
</span>
|
|
||||||
</QTd>
|
|
||||||
</template>
|
|
||||||
<template #body-cell-destination="{ rowIndex }">
|
|
||||||
<QTd>
|
|
||||||
<VnSelectFilter
|
|
||||||
v-model="destinations[rowIndex]"
|
|
||||||
:options="destinationTypes"
|
|
||||||
option-value="id"
|
|
||||||
option-label="description"
|
|
||||||
@update:model-value="
|
|
||||||
(value) => updateDestination(value, rows[rowIndex])
|
|
||||||
"
|
|
||||||
/>
|
|
||||||
</QTd>
|
|
||||||
</template>
|
|
||||||
<template #body-cell-price="{ value }">
|
|
||||||
<QTd align="center">
|
|
||||||
{{ toCurrency(value) }}
|
|
||||||
</QTd>
|
|
||||||
</template>
|
|
||||||
<template #body-cell-total="{ value }">
|
|
||||||
<QTd align="center">
|
|
||||||
{{ toCurrency(value) }}
|
|
||||||
</QTd>
|
|
||||||
</template>
|
|
||||||
<template #body-cell-delete="{ rowIndex }">
|
|
||||||
<QTd>
|
|
||||||
<QBtn
|
|
||||||
icon="delete"
|
|
||||||
color="primary"
|
|
||||||
padding="xs"
|
|
||||||
round
|
|
||||||
flat
|
|
||||||
@click="deleteSale(rows[rowIndex])"
|
|
||||||
>
|
|
||||||
<QTooltip>
|
|
||||||
{{ t('Remove line') }}
|
|
||||||
</QTooltip>
|
|
||||||
</QBtn>
|
|
||||||
</QTd>
|
|
||||||
</template>
|
|
||||||
<!-- View for grid mode -->
|
|
||||||
<template #item="props">
|
|
||||||
<div class="q-mb-md col-12 grid-style-transition">
|
|
||||||
<QCard>
|
|
||||||
<QCardSection class="row justify-between">
|
|
||||||
<QCheckbox v-model="props.selected" />
|
|
||||||
<QBtn color="primary" icon="delete" flat round />
|
|
||||||
</QCardSection>
|
|
||||||
|
|
||||||
<QSeparator inset />
|
|
||||||
<QList dense>
|
|
||||||
<QItem
|
|
||||||
v-for="column of props.cols"
|
|
||||||
:key="column.name"
|
|
||||||
>
|
|
||||||
<QItemSection>
|
|
||||||
<QItemLabel caption>
|
|
||||||
{{ column.label }}
|
|
||||||
</QItemLabel>
|
|
||||||
</QItemSection>
|
|
||||||
<QItemSection side>
|
|
||||||
<QItemLabel
|
|
||||||
v-if="column.name === 'destination'"
|
|
||||||
>
|
|
||||||
{{ column.value.description }}
|
|
||||||
</QItemLabel>
|
|
||||||
<QItemLabel v-else>
|
|
||||||
{{ column.value }}
|
|
||||||
</QItemLabel>
|
|
||||||
</QItemSection>
|
|
||||||
</QItem>
|
|
||||||
</QList>
|
|
||||||
</QCard>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</QTable>
|
|
||||||
</template>
|
|
||||||
<template #moreBeforeActions>
|
|
||||||
<QBtn
|
|
||||||
color="primary"
|
|
||||||
text-color="white"
|
|
||||||
:unelevated="true"
|
|
||||||
:label="tMobile('Regularize')"
|
|
||||||
:title="t('Regularize')"
|
|
||||||
icon="check"
|
|
||||||
@click="regularizeClaim"
|
|
||||||
:disable="claim.claimStateFk == resolvedStateId"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<QBtn
|
|
||||||
color="primary"
|
|
||||||
text-color="white"
|
|
||||||
:unelevated="true"
|
|
||||||
:disable="!selectedRows.length"
|
|
||||||
:label="tMobile('Change destination')"
|
|
||||||
:title="t('Change destination')"
|
|
||||||
icon="swap_horiz"
|
|
||||||
@click="dialogDestination = !dialogDestination"
|
|
||||||
/>
|
|
||||||
<QBtn
|
|
||||||
color="primary"
|
|
||||||
text-color="white"
|
|
||||||
:unelevated="true"
|
|
||||||
:label="tMobile('Import claim')"
|
|
||||||
:title="t('Import claim')"
|
|
||||||
icon="Upload"
|
|
||||||
@click="importToNewRefundTicket"
|
|
||||||
:disable="claim.claimStateFk == resolvedStateId"
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
</CrudModel>
|
|
||||||
<QDialog v-model="dialogDestination">
|
|
||||||
<QCard>
|
|
||||||
<QCardSection>
|
|
||||||
<QItem class="q-pa-none">
|
|
||||||
<span class="q-dialog__title text-white">
|
|
||||||
{{ t('dialog title') }}
|
|
||||||
</span>
|
</span>
|
||||||
<QBtn icon="close" flat round dense v-close-popup />
|
</QTd>
|
||||||
</QItem>
|
</template>
|
||||||
</QCardSection>
|
<template #body-cell-destination="{ row }">
|
||||||
<QCardSection>
|
<QTd>
|
||||||
<VnSelectFilter
|
<VnSelectFilter
|
||||||
v-model="claimDestinationFk"
|
v-model="row.claimDestinationFk"
|
||||||
:options="destinationTypes"
|
:options="destinationTypes"
|
||||||
option-label="description"
|
option-label="description"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
/>
|
:autofocus="true"
|
||||||
</QCardSection>
|
dense
|
||||||
<QCardActions class="justify-end q-mr-sm">
|
input-debounce="0"
|
||||||
<QBtn
|
hide-selected
|
||||||
flat
|
@update:model-value="(value) => updateDestination(value, row)"
|
||||||
:label="t('globals.close')"
|
/>
|
||||||
color="primary"
|
</QTd>
|
||||||
v-close-popup
|
</template>
|
||||||
/>
|
<template #body-cell-price="{ value }">
|
||||||
<QBtn
|
<QTd align="center">
|
||||||
:disable="!claimDestinationFk"
|
{{ toCurrency(value) }}
|
||||||
:label="t('globals.save')"
|
</QTd>
|
||||||
color="primary"
|
</template>
|
||||||
v-close-popup
|
<template #body-cell-total="{ value }">
|
||||||
@click="updateDestinations(claimDestinationFk)"
|
<QTd align="center">
|
||||||
/>
|
{{ toCurrency(value) }}
|
||||||
</QCardActions>
|
</QTd>
|
||||||
</QCard>
|
</template>
|
||||||
</QDialog>
|
<!-- View for grid mode -->
|
||||||
<QDialog v-model="dialogGreuge">
|
<template #item="props">
|
||||||
|
<div class="q-mb-md col-12 grid-style-transition">
|
||||||
|
<QCard>
|
||||||
|
<QCardSection class="row justify-between">
|
||||||
|
<QCheckbox v-model="props.selected" />
|
||||||
|
<QBtn color="primary" icon="delete" flat round />
|
||||||
|
</QCardSection>
|
||||||
|
|
||||||
|
<QSeparator inset />
|
||||||
|
<QList dense>
|
||||||
|
<QItem v-for="column of props.cols" :key="column.name">
|
||||||
|
<QItemSection>
|
||||||
|
<QItemLabel caption>
|
||||||
|
{{ column.label }}
|
||||||
|
</QItemLabel>
|
||||||
|
</QItemSection>
|
||||||
|
<QItemSection side>
|
||||||
|
<QItemLabel v-if="column.name === 'destination'">
|
||||||
|
{{ column.value.description }}
|
||||||
|
</QItemLabel>
|
||||||
|
<QItemLabel v-else>
|
||||||
|
{{ column.value }}
|
||||||
|
</QItemLabel>
|
||||||
|
</QItemSection>
|
||||||
|
</QItem>
|
||||||
|
</QList>
|
||||||
|
</QCard>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</QTable>
|
||||||
|
</template>
|
||||||
|
<template #moreBeforeActions>
|
||||||
|
<QBtn
|
||||||
|
color="primary"
|
||||||
|
text-color="white"
|
||||||
|
:unelevated="true"
|
||||||
|
:label="tMobile('Regularize')"
|
||||||
|
:title="t('Regularize')"
|
||||||
|
icon="check"
|
||||||
|
@click="regularizeClaim"
|
||||||
|
:disable="claim.claimStateFk == resolvedStateId"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<QBtn
|
||||||
|
color="primary"
|
||||||
|
text-color="white"
|
||||||
|
:unelevated="true"
|
||||||
|
:disable="!selectedRows.length"
|
||||||
|
:label="tMobile('Change destination')"
|
||||||
|
:title="t('Change destination')"
|
||||||
|
icon="swap_horiz"
|
||||||
|
@click="dialogDestination = !dialogDestination"
|
||||||
|
/>
|
||||||
|
<QBtn
|
||||||
|
color="primary"
|
||||||
|
text-color="white"
|
||||||
|
:unelevated="true"
|
||||||
|
:label="tMobile('Import claim')"
|
||||||
|
:title="t('Import claim')"
|
||||||
|
icon="Upload"
|
||||||
|
@click="importToNewRefundTicket"
|
||||||
|
:disable="claim.claimStateFk == resolvedStateId"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</CrudModel>
|
||||||
|
<QDialog v-model="dialogDestination">
|
||||||
|
<QCard>
|
||||||
<QCardSection>
|
<QCardSection>
|
||||||
<QItem class="q-pa-none">
|
<QItem class="q-pa-none">
|
||||||
<span class="q-dialog__title text-white">
|
<span class="q-dialog__title text-white">
|
||||||
{{ t('dialogGreuge title') }}
|
{{ t('dialog title') }}
|
||||||
</span>
|
</span>
|
||||||
<QBtn icon="close" flat round dense v-close-popup />
|
<QBtn icon="close" flat round dense v-close-popup />
|
||||||
</QItem>
|
</QItem>
|
||||||
<QCardActions class="justify-end q-mr-sm">
|
|
||||||
<QBtn
|
|
||||||
flat
|
|
||||||
:label="t('globals.close')"
|
|
||||||
color="primary"
|
|
||||||
v-close-popup
|
|
||||||
/>
|
|
||||||
<QBtn
|
|
||||||
:label="t('globals.save')"
|
|
||||||
color="primary"
|
|
||||||
v-close-popup
|
|
||||||
@click="onUpdateGreugeAccept"
|
|
||||||
/>
|
|
||||||
</QCardActions>
|
|
||||||
</QCardSection>
|
</QCardSection>
|
||||||
</QDialog>
|
<QItemSection>
|
||||||
</div>
|
<VnSelectFilter
|
||||||
|
v-model="claimDestinationFk"
|
||||||
|
:options="destinationTypes"
|
||||||
|
option-label="description"
|
||||||
|
option-value="id"
|
||||||
|
:autofocus="true"
|
||||||
|
dense
|
||||||
|
input-debounce="0"
|
||||||
|
hide-selected
|
||||||
|
/>
|
||||||
|
</QItemSection>
|
||||||
|
<QCardActions class="justify-end q-mr-sm">
|
||||||
|
<QBtn flat :label="t('globals.close')" color="primary" v-close-popup />
|
||||||
|
<QBtn
|
||||||
|
:disable="!claimDestinationFk"
|
||||||
|
:label="t('globals.save')"
|
||||||
|
color="primary"
|
||||||
|
v-close-popup
|
||||||
|
@click="updateDestinations(claimDestinationFk)"
|
||||||
|
/>
|
||||||
|
</QCardActions>
|
||||||
|
</QCard>
|
||||||
|
</QDialog>
|
||||||
|
<QDialog v-model="dialogGreuge">
|
||||||
|
<QCardSection>
|
||||||
|
<QItem class="q-pa-none">
|
||||||
|
<span class="q-dialog__title text-white">
|
||||||
|
{{ t('dialogGreuge title') }}
|
||||||
|
</span>
|
||||||
|
<QBtn icon="close" flat round dense v-close-popup />
|
||||||
|
</QItem>
|
||||||
|
<QCardActions class="justify-end q-mr-sm">
|
||||||
|
<QBtn flat :label="t('globals.close')" color="primary" v-close-popup />
|
||||||
|
<QBtn
|
||||||
|
:label="t('globals.save')"
|
||||||
|
color="primary"
|
||||||
|
v-close-popup
|
||||||
|
@click="onUpdateGreugeAccept"
|
||||||
|
/>
|
||||||
|
</QCardActions>
|
||||||
|
</QCardSection>
|
||||||
|
</QDialog>
|
||||||
</template>
|
</template>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.claim-action {
|
.claim-action {
|
||||||
|
@ -514,10 +484,11 @@ async function importToNewRefundTicket() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
carlossa marked this conversation as resolved
alexm
commented
Aço si ja esta en els descriptors, en els summarys te que haver alguna clase ja feta (si no fesla) Aço si ja esta en els descriptors, en els summarys te que haver alguna clase ja feta (si no fesla)
|
|||||||
.totalClaim {
|
.totalClaim {
|
||||||
border: 3px solid black;
|
background-color: #313131;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
.responsibility {
|
.responsibility {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
@ -555,4 +526,5 @@ es:
|
||||||
Remove: Eliminar
|
Remove: Eliminar
|
||||||
dialogGreuge title: Insertar greuges en la ficha del cliente
|
dialogGreuge title: Insertar greuges en la ficha del cliente
|
||||||
ClaimGreugeDescription: Id reclamación
|
ClaimGreugeDescription: Id reclamación
|
||||||
|
Id item: Id artículo
|
||||||
</i18n>
|
</i18n>
|
||||||
|
|
|
@ -43,17 +43,6 @@ onMounted(async () => {
|
||||||
<QSeparator />
|
<QSeparator />
|
||||||
<LeftMenu source="card" />
|
<LeftMenu source="card" />
|
||||||
<QSeparator />
|
<QSeparator />
|
||||||
<QList>
|
|
||||||
<QItem
|
|
||||||
active-class="text-primary"
|
|
||||||
clickable
|
|
||||||
v-ripple
|
|
||||||
:href="`${salixUrl}/action`"
|
|
||||||
>
|
|
||||||
<QItemSection avatar><QIcon name="vn:actions"></QIcon></QItemSection>
|
|
||||||
<QItemSection>{{ t('Action') }}</QItemSection>
|
|
||||||
</QItem>
|
|
||||||
</QList>
|
|
||||||
</QScrollArea>
|
</QScrollArea>
|
||||||
</QDrawer>
|
</QDrawer>
|
||||||
<QPageContainer>
|
<QPageContainer>
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
/// <reference types="cypress" />
|
||||||
|
describe('ClaimAction', () => {
|
||||||
|
const claimId = 2;
|
||||||
|
const firstLineReason = 'tbody > :nth-child(1) > :nth-child(2)';
|
||||||
|
const firstRow = 'tbody > :nth-child(1)';
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.viewport(1920, 1080);
|
||||||
|
cy.login('developer');
|
||||||
|
cy.visit(`/#/claim/${claimId}/action`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should import claim', () => {
|
||||||
|
cy.get('[title="Import claim"]').click();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should change destination', () => {
|
||||||
|
const rowData = [true, null, null, 'Bueno', null, null, null, null, null, null];
|
||||||
|
cy.fillRow(firstRow, rowData);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should regularize', () => {
|
||||||
|
cy.get('[title="Regularize"]').click();
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Y esto también!!