Merge branch 'dev' into 7317-SupplierWarnings
gitea/salix-front/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Jon Elias 2025-01-27 08:56:33 +00:00
commit 7121dc4e0d
26 changed files with 337 additions and 305 deletions

View File

@ -804,7 +804,7 @@ watch(
<QItem class="q-mt-sm"> <QItem class="q-mt-sm">
<QInput <QInput
class="full-width" class="full-width"
:label="t('to')" :label="t('globals.to')"
@click="dateToDialog = true" @click="dateToDialog = true"
@focus="(evt) => evt.target.blur()" @focus="(evt) => evt.target.blur()"
@clear="selectFilter('date', 'from')" @clear="selectFilter('date', 'from')"
@ -1059,9 +1059,9 @@ en:
Deletes: Deletes Deletes: Deletes
Accesses: Accesses Accesses: Accesses
Users: Users:
User: Usuario User: User
All: Todo All: All
System: Sistema System: System
properties: properties:
id: ID id: ID
claimFk: Claim ID claimFk: Claim ID

View File

@ -10,6 +10,10 @@ defineProps({
type: Object, type: Object,
required: true, required: true,
}, },
width: {
type: String,
default: 'md-width',
},
}); });
defineEmits([...useDialogPluginComponent.emits]); defineEmits([...useDialogPluginComponent.emits]);
@ -17,7 +21,19 @@ defineEmits([...useDialogPluginComponent.emits]);
const { dialogRef, onDialogHide } = useDialogPluginComponent(); const { dialogRef, onDialogHide } = useDialogPluginComponent();
</script> </script>
<template> <template>
<QDialog ref="dialogRef" @hide="onDialogHide" full-width> <QDialog ref="dialogRef" @hide="onDialogHide">
<component :is="summary" :id="id" /> <component :is="summary" :id="id" :class="width" />
</QDialog> </QDialog>
</template> </template>
<style lang="scss" scoped>
.md-width {
max-width: $width-md;
}
.lg-width {
max-width: $width-lg;
}
.xlg-width {
max-width: $width-xl;
}
</style>

View File

@ -37,6 +37,10 @@ const $props = defineProps({
type: Object, type: Object,
default: null, default: null,
}, },
width: {
type: String,
default: 'md-width',
},
}); });
const state = useState(); const state = useState();
@ -128,9 +132,8 @@ const toModule = computed(() =>
</QTooltip> </QTooltip>
</QBtn></slot </QBtn></slot
> >
<QBtn <QBtn
@click.stop="viewSummary(entity.id, $props.summary)" @click.stop="viewSummary(entity.id, $props.summary, $props.width)"
round round
flat flat
dense dense

View File

@ -4,10 +4,10 @@ import { useQuasar } from 'quasar';
export function useSummaryDialog() { export function useSummaryDialog() {
const quasar = useQuasar(); const quasar = useQuasar();
function viewSummary(id, summary) { function viewSummary(id, summary, width) {
quasar.dialog({ quasar.dialog({
component: VnSummaryDialog, component: VnSummaryDialog,
componentProps: { id, summary }, componentProps: { id, summary, width },
}); });
} }

View File

@ -33,6 +33,11 @@ $dark-shadow-color: black;
$layout-shadow-dark: 0 0 10px 2px #00000033, 0 0px 10px #0000003d; $layout-shadow-dark: 0 0 10px 2px #00000033, 0 0px 10px #0000003d;
$spacing-md: 16px; $spacing-md: 16px;
$color-font-secondary: #777; $color-font-secondary: #777;
$width-xs: 400px;
$width-sm: 544px;
$width-md: 800px;
$width-lg: 1280px;
$width-xl: 1600px;
.bg-success { .bg-success {
background-color: $positive; background-color: $positive;
} }

View File

@ -53,6 +53,7 @@ const debtWarning = computed(() => {
@on-fetch="setData" @on-fetch="setData"
:summary="$props.summary" :summary="$props.summary"
data-key="customer" data-key="customer"
width="lg-width"
> >
<template #menu="{ entity }"> <template #menu="{ entity }">
<CustomerDescriptorMenu :customer="entity" /> <CustomerDescriptorMenu :customer="entity" />

View File

@ -61,6 +61,7 @@ const getEntryRedirectionFilter = (entry) => {
:filter="filter" :filter="filter"
title="supplier.nickname" title="supplier.nickname"
data-key="Entry" data-key="Entry"
width="lg-width"
> >
<template #menu="{ entity }"> <template #menu="{ entity }">
<EntryDescriptorMenu :id="entity.id" /> <EntryDescriptorMenu :id="entity.id" />

View File

@ -268,7 +268,7 @@ function deleteFile(dmsFk) {
</VnRow> </VnRow>
<VnRow> <VnRow>
<VnSelect <VnSelect
:label="t('invoicein.summary.sage')" :label="t('invoiceIn.summary.sage')"
v-model="data.withholdingSageFk" v-model="data.withholdingSageFk"
:options="sageWithholdings" :options="sageWithholdings"
option-value="id" option-value="id"

View File

@ -1,10 +1,6 @@
<script setup> <script setup>
import VnCard from 'components/common/VnCard.vue'; import VnCardBeta from 'components/common/VnCardBeta.vue';
import InvoiceInDescriptor from './InvoiceInDescriptor.vue'; import InvoiceInDescriptor from './InvoiceInDescriptor.vue';
import InvoiceInFilter from '../InvoiceInFilter.vue';
import InvoiceInSearchbar from '../InvoiceInSearchbar.vue';
import { onBeforeRouteUpdate } from 'vue-router';
import { setRectificative } from '../composables/setRectificative';
const filter = { const filter = {
include: [ include: [
@ -39,20 +35,13 @@ const filter = {
}, },
], ],
}; };
onBeforeRouteUpdate(async (to) => await setRectificative(to));
</script> </script>
<template> <template>
<VnCard <VnCardBeta
data-key="InvoiceIn" data-key="InvoiceIn"
base-url="InvoiceIns" base-url="InvoiceIns"
:filter="filter"
:descriptor="InvoiceInDescriptor" :descriptor="InvoiceInDescriptor"
:filter-panel="InvoiceInFilter" :user-filter="filter"
search-data-key="InvoiceInList" />
>
<template #searchbar>
<InvoiceInSearchbar />
</template>
</VnCard>
</template> </template>

View File

@ -105,7 +105,7 @@ async function setInvoiceCorrection(id) {
if (correctingData[0]) invoiceInCorrection.corrected = correctingData[0].correctedFk; if (correctingData[0]) invoiceInCorrection.corrected = correctingData[0].correctedFk;
invoiceInCorrection.correcting = correctedData.map( invoiceInCorrection.correcting = correctedData.map(
(corrected) => corrected.correctingFk (corrected) => corrected.correctingFk,
); );
} }
</script> </script>
@ -117,18 +117,19 @@ async function setInvoiceCorrection(id) {
:url="`InvoiceIns/${entityId}`" :url="`InvoiceIns/${entityId}`"
:filter="filter" :filter="filter"
title="supplierRef" title="supplierRef"
width="xlg-width"
> >
<template #menu="{ entity }"> <template #menu="{ entity }">
<InvoiceInDescriptorMenu :invoice="entity" /> <InvoiceInDescriptorMenu :invoice="entity" />
</template> </template>
<template #body="{ entity }"> <template #body="{ entity }">
<VnLv :label="t('invoicein.list.issued')" :value="toDate(entity.issued)" /> <VnLv :label="t('invoiceIn.list.issued')" :value="toDate(entity.issued)" />
<VnLv <VnLv
:label="t('invoicein.summary.bookedDate')" :label="t('invoiceIn.summary.bookedDate')"
:value="toDate(entity.booked)" :value="toDate(entity.booked)"
/> />
<VnLv :label="t('invoicein.list.amount')" :value="toCurrency(totalAmount)" /> <VnLv :label="t('invoiceIn.list.amount')" :value="toCurrency(totalAmount)" />
<VnLv :label="t('invoicein.list.supplier')"> <VnLv :label="t('invoiceIn.list.supplier')">
<template #value> <template #value>
<span class="link"> <span class="link">
{{ entity?.supplier?.nickname }} {{ entity?.supplier?.nickname }}
@ -145,7 +146,7 @@ async function setInvoiceCorrection(id) {
color="primary" color="primary"
:to="routes.getSupplier(entity.supplierFk)" :to="routes.getSupplier(entity.supplierFk)"
> >
<QTooltip>{{ t('invoicein.list.supplier') }}</QTooltip> <QTooltip>{{ t('globals.supplier') }}</QTooltip>
</QBtn> </QBtn>
<QBtn <QBtn
size="md" size="md"
@ -153,7 +154,7 @@ async function setInvoiceCorrection(id) {
color="primary" color="primary"
:to="routes.getEntry(entity.entryFk)" :to="routes.getEntry(entity.entryFk)"
> >
<QTooltip>{{ t('Entry') }}</QTooltip> <QTooltip>{{ t('globals.entry') }}</QTooltip>
</QBtn> </QBtn>
<QBtn <QBtn
size="md" size="md"
@ -161,7 +162,7 @@ async function setInvoiceCorrection(id) {
color="primary" color="primary"
:to="routes.getTickets(entity.supplierFk)" :to="routes.getTickets(entity.supplierFk)"
> >
<QTooltip>{{ t('InvoiceOut.card.ticketList') }}</QTooltip> <QTooltip>{{ t('globals.ticketList') }}</QTooltip>
</QBtn> </QBtn>
<QBtn <QBtn
v-if=" v-if="

View File

@ -40,15 +40,15 @@ const cplusRectificationTypes = ref([]);
const siiTypeInvoiceIns = ref([]); const siiTypeInvoiceIns = ref([]);
const actions = { const actions = {
unbook: { unbook: {
title: t('assertAction', { action: t('invoicein.descriptorMenu.unbook') }), title: t('assertAction', { action: t('invoiceIn.descriptorMenu.unbook') }),
action: toUnbook, action: toUnbook,
}, },
delete: { delete: {
title: t('assertAction', { action: t('invoicein.descriptorMenu.delete') }), title: t('assertAction', { action: t('invoiceIn.descriptorMenu.delete') }),
action: deleteInvoice, action: deleteInvoice,
}, },
clone: { clone: {
title: t('assertAction', { action: t('invoicein.descriptorMenu.clone') }), title: t('assertAction', { action: t('invoiceIn.descriptorMenu.clone') }),
action: cloneInvoice, action: cloneInvoice,
}, },
showPdf: { cb: showPdfInvoice }, showPdf: { cb: showPdfInvoice },
@ -96,7 +96,7 @@ async function deleteInvoice() {
await axios.delete(`InvoiceIns/${entityId.value}`); await axios.delete(`InvoiceIns/${entityId.value}`);
quasar.notify({ quasar.notify({
type: 'positive', type: 'positive',
message: t('invoicein.descriptorMenu.invoiceDeleted'), message: t('invoiceIn.descriptorMenu.invoiceDeleted'),
}); });
push({ path: '/invoice-in' }); push({ path: '/invoice-in' });
} }
@ -105,7 +105,7 @@ async function cloneInvoice() {
const { data } = await axios.post(`InvoiceIns/${entityId.value}/clone`); const { data } = await axios.post(`InvoiceIns/${entityId.value}/clone`);
quasar.notify({ quasar.notify({
type: 'positive', type: 'positive',
message: t('invoicein.descriptorMenu.invoiceCloned'), message: t('invoiceIn.descriptorMenu.invoiceCloned'),
}); });
push({ path: `/invoice-in/${data.id}/summary` }); push({ path: `/invoice-in/${data.id}/summary` });
} }
@ -186,7 +186,7 @@ const createInvoiceInCorrection = async () => {
clickable clickable
@click="book(entityId)" @click="book(entityId)"
> >
<QItemSection>{{ t('invoicein.descriptorMenu.toBook') }}</QItemSection> <QItemSection>{{ t('invoiceIn.descriptorMenu.toBook') }}</QItemSection>
</QItem> </QItem>
</template> </template>
</InvoiceInToBook> </InvoiceInToBook>
@ -197,7 +197,7 @@ const createInvoiceInCorrection = async () => {
@click="triggerMenu('unbook')" @click="triggerMenu('unbook')"
> >
<QItemSection> <QItemSection>
{{ t('invoicein.descriptorMenu.toUnbook') }} {{ t('invoiceIn.descriptorMenu.toUnbook') }}
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem <QItem
@ -206,19 +206,19 @@ const createInvoiceInCorrection = async () => {
clickable clickable
@click="triggerMenu('delete')" @click="triggerMenu('delete')"
> >
<QItemSection>{{ t('invoicein.descriptorMenu.deleteInvoice') }}</QItemSection> <QItemSection>{{ t('invoiceIn.descriptorMenu.deleteInvoice') }}</QItemSection>
</QItem> </QItem>
<QItem v-if="canEditProp('clone')" v-ripple clickable @click="triggerMenu('clone')"> <QItem v-if="canEditProp('clone')" v-ripple clickable @click="triggerMenu('clone')">
<QItemSection>{{ t('invoicein.descriptorMenu.cloneInvoice') }}</QItemSection> <QItemSection>{{ t('invoiceIn.descriptorMenu.cloneInvoice') }}</QItemSection>
</QItem> </QItem>
<QItem v-if="isAgricultural()" v-ripple clickable @click="triggerMenu('showPdf')"> <QItem v-if="isAgricultural()" v-ripple clickable @click="triggerMenu('showPdf')">
<QItemSection>{{ <QItemSection>{{
t('invoicein.descriptorMenu.showAgriculturalPdf') t('invoiceIn.descriptorMenu.showAgriculturalPdf')
}}</QItemSection> }}</QItemSection>
</QItem> </QItem>
<QItem v-if="isAgricultural()" v-ripple clickable @click="triggerMenu('sendPdf')"> <QItem v-if="isAgricultural()" v-ripple clickable @click="triggerMenu('sendPdf')">
<QItemSection <QItemSection
>{{ t('invoicein.descriptorMenu.sendAgriculturalPdf') }}...</QItemSection >{{ t('invoiceIn.descriptorMenu.sendAgriculturalPdf') }}...</QItemSection
> >
</QItem> </QItem>
<QItem <QItem
@ -228,7 +228,7 @@ const createInvoiceInCorrection = async () => {
@click="triggerMenu('correct')" @click="triggerMenu('correct')"
> >
<QItemSection <QItemSection
>{{ t('invoicein.descriptorMenu.createCorrective') }}...</QItemSection >{{ t('invoiceIn.descriptorMenu.createCorrective') }}...</QItemSection
> >
</QItem> </QItem>
<QItem v-if="invoice.dmsFk" v-ripple clickable @click="downloadFile(invoice.dmsFk)"> <QItem v-if="invoice.dmsFk" v-ripple clickable @click="downloadFile(invoice.dmsFk)">

View File

@ -27,14 +27,14 @@ const intrastatTotals = ref({ amount: 0, net: 0, stems: 0 });
const vatColumns = ref([ const vatColumns = ref([
{ {
name: 'expense', name: 'expense',
label: 'invoicein.summary.expense', label: 'invoiceIn.summary.expense',
field: (row) => row.expenseFk, field: (row) => row.expenseFk,
sortable: true, sortable: true,
align: 'left', align: 'left',
}, },
{ {
name: 'landed', name: 'landed',
label: 'invoicein.summary.taxableBase', label: 'invoiceIn.summary.taxableBase',
field: (row) => row.taxableBase, field: (row) => row.taxableBase,
format: (value) => toCurrency(value), format: (value) => toCurrency(value),
sortable: true, sortable: true,
@ -42,7 +42,7 @@ const vatColumns = ref([
}, },
{ {
name: 'vat', name: 'vat',
label: 'invoicein.summary.sageVat', label: 'invoiceIn.summary.sageVat',
field: (row) => { field: (row) => {
if (row.taxTypeSage) return `#${row.taxTypeSage.id} : ${row.taxTypeSage.vat}`; if (row.taxTypeSage) return `#${row.taxTypeSage.id} : ${row.taxTypeSage.vat}`;
}, },
@ -52,7 +52,7 @@ const vatColumns = ref([
}, },
{ {
name: 'transaction', name: 'transaction',
label: 'invoicein.summary.sageTransaction', label: 'invoiceIn.summary.sageTransaction',
field: (row) => { field: (row) => {
if (row.transactionTypeSage) if (row.transactionTypeSage)
return `#${row.transactionTypeSage.id} : ${row.transactionTypeSage?.transaction}`; return `#${row.transactionTypeSage.id} : ${row.transactionTypeSage?.transaction}`;
@ -63,7 +63,7 @@ const vatColumns = ref([
}, },
{ {
name: 'rate', name: 'rate',
label: 'invoicein.summary.rate', label: 'invoiceIn.summary.rate',
field: (row) => taxRate(row.taxableBase, row.taxTypeSage?.rate), field: (row) => taxRate(row.taxableBase, row.taxTypeSage?.rate),
format: (value) => toCurrency(value), format: (value) => toCurrency(value),
sortable: true, sortable: true,
@ -71,7 +71,7 @@ const vatColumns = ref([
}, },
{ {
name: 'currency', name: 'currency',
label: 'invoicein.summary.currency', label: 'invoiceIn.summary.currency',
field: (row) => row.foreignValue, field: (row) => row.foreignValue,
format: (val) => val && toCurrency(val, currency.value), format: (val) => val && toCurrency(val, currency.value),
sortable: true, sortable: true,
@ -82,21 +82,21 @@ const vatColumns = ref([
const dueDayColumns = ref([ const dueDayColumns = ref([
{ {
name: 'date', name: 'date',
label: 'invoicein.summary.dueDay', label: 'invoiceIn.summary.dueDay',
field: (row) => toDate(row.dueDated), field: (row) => toDate(row.dueDated),
sortable: true, sortable: true,
align: 'left', align: 'left',
}, },
{ {
name: 'bank', name: 'bank',
label: 'invoicein.summary.bank', label: 'invoiceIn.summary.bank',
field: (row) => row.bank.bank, field: (row) => row.bank.bank,
sortable: true, sortable: true,
align: 'left', align: 'left',
}, },
{ {
name: 'amount', name: 'amount',
label: 'invoicein.list.amount', label: 'invoiceIn.list.amount',
field: (row) => row.amount, field: (row) => row.amount,
format: (value) => toCurrency(value), format: (value) => toCurrency(value),
sortable: true, sortable: true,
@ -104,7 +104,7 @@ const dueDayColumns = ref([
}, },
{ {
name: 'landed', name: 'landed',
label: 'invoicein.summary.foreignValue', label: 'invoiceIn.summary.foreignValue',
field: (row) => row.foreignValue, field: (row) => row.foreignValue,
format: (val) => val && toCurrency(val, currency.value), format: (val) => val && toCurrency(val, currency.value),
sortable: true, sortable: true,
@ -115,7 +115,7 @@ const dueDayColumns = ref([
const intrastatColumns = ref([ const intrastatColumns = ref([
{ {
name: 'code', name: 'code',
label: 'invoicein.summary.code', label: 'invoiceIn.summary.code',
field: (row) => { field: (row) => {
return `${row.intrastat.id}: ${row.intrastat?.description}`; return `${row.intrastat.id}: ${row.intrastat?.description}`;
}, },
@ -124,21 +124,21 @@ const intrastatColumns = ref([
}, },
{ {
name: 'amount', name: 'amount',
label: 'invoicein.list.amount', label: 'invoiceIn.list.amount',
field: (row) => toCurrency(row.amount), field: (row) => toCurrency(row.amount),
sortable: true, sortable: true,
align: 'left', align: 'left',
}, },
{ {
name: 'net', name: 'net',
label: 'invoicein.summary.net', label: 'invoiceIn.summary.net',
field: (row) => row.net, field: (row) => row.net,
sortable: true, sortable: true,
align: 'left', align: 'left',
}, },
{ {
name: 'stems', name: 'stems',
label: 'invoicein.summary.stems', label: 'invoiceIn.summary.stems',
field: (row) => row.stems, field: (row) => row.stems,
format: (value) => value, format: (value) => value,
sortable: true, sortable: true,
@ -146,7 +146,7 @@ const intrastatColumns = ref([
}, },
{ {
name: 'landed', name: 'landed',
label: 'invoicein.summary.country', label: 'invoiceIn.summary.country',
field: (row) => row.country?.code, field: (row) => row.country?.code,
format: (value) => value, format: (value) => value,
sortable: true, sortable: true,
@ -214,7 +214,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
/> />
</QCardSection> </QCardSection>
<VnLv <VnLv
:label="t('invoicein.list.supplier')" :label="t('invoiceIn.list.supplier')"
:value="entity.supplier?.name" :value="entity.supplier?.name"
> >
<template #value> <template #value>
@ -225,14 +225,14 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
</template> </template>
</VnLv> </VnLv>
<VnLv <VnLv
:label="t('invoicein.list.supplierRef')" :label="t('invoiceIn.list.supplierRef')"
:value="entity.supplierRef" :value="entity.supplierRef"
/> />
<VnLv <VnLv
:label="t('invoicein.summary.currency')" :label="t('invoiceIn.summary.currency')"
:value="entity.currency?.code" :value="entity.currency?.code"
/> />
<VnLv :label="t('invoicein.serial')" :value="`${entity.serial}`" /> <VnLv :label="t('invoiceIn.serial')" :value="`${entity.serial}`" />
<VnLv <VnLv
:label="t('globals.country')" :label="t('globals.country')"
:value="entity.supplier?.country?.code" :value="entity.supplier?.country?.code"
@ -247,19 +247,19 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
</QCardSection> </QCardSection>
<VnLv <VnLv
:ellipsis-value="false" :ellipsis-value="false"
:label="t('invoicein.summary.issued')" :label="t('invoiceIn.summary.issued')"
:value="toDate(entity.issued)" :value="toDate(entity.issued)"
/> />
<VnLv <VnLv
:label="t('invoicein.summary.operated')" :label="t('invoiceIn.summary.operated')"
:value="toDate(entity.operated)" :value="toDate(entity.operated)"
/> />
<VnLv <VnLv
:label="t('invoicein.summary.bookEntried')" :label="t('invoiceIn.summary.bookEntried')"
:value="toDate(entity.bookEntried)" :value="toDate(entity.bookEntried)"
/> />
<VnLv <VnLv
:label="t('invoicein.summary.bookedDate')" :label="t('invoiceIn.summary.bookedDate')"
:value="toDate(entity.booked)" :value="toDate(entity.booked)"
/> />
<VnLv :label="t('globals.isVies')" :value="entity.supplier?.isVies" /> <VnLv :label="t('globals.isVies')" :value="entity.supplier?.isVies" />
@ -272,18 +272,18 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
/> />
</QCardSection> </QCardSection>
<VnLv <VnLv
:label="t('invoicein.summary.sage')" :label="t('invoiceIn.summary.sage')"
:value="entity.sageWithholding?.withholding" :value="entity.sageWithholding?.withholding"
/> />
<VnLv <VnLv
:label="t('invoicein.summary.vat')" :label="t('invoiceIn.summary.vat')"
:value="entity.expenseDeductible?.name" :value="entity.expenseDeductible?.name"
/> />
<VnLv <VnLv
:label="t('invoicein.card.company')" :label="t('invoiceIn.card.company')"
:value="entity.company?.code" :value="entity.company?.code"
/> />
<VnLv :label="t('invoicein.isBooked')" :value="invoiceIn?.isBooked" /> <VnLv :label="t('invoiceIn.isBooked')" :value="invoiceIn?.isBooked" />
</QCard> </QCard>
<QCard class="vn-one"> <QCard class="vn-one">
<QCardSection class="q-pa-none"> <QCardSection class="q-pa-none">
@ -294,11 +294,11 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
</QCardSection> </QCardSection>
<QCardSection class="q-pa-none"> <QCardSection class="q-pa-none">
<VnLv <VnLv
:label="t('invoicein.summary.taxableBase')" :label="t('invoiceIn.summary.taxableBase')"
:value="toCurrency(entity.totals.totalTaxableBase)" :value="toCurrency(entity.totals.totalTaxableBase)"
/> />
<VnLv label="Total" :value="toCurrency(entity.totals.totalVat)" /> <VnLv label="Total" :value="toCurrency(entity.totals.totalVat)" />
<VnLv :label="t('invoicein.summary.dueTotal')"> <VnLv :label="t('invoiceIn.summary.dueTotal')">
<template #value> <template #value>
<QChip <QChip
dense dense
@ -306,8 +306,8 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
:color="amountsNotMatch ? 'negative' : 'transparent'" :color="amountsNotMatch ? 'negative' : 'transparent'"
:title=" :title="
amountsNotMatch amountsNotMatch
? t('invoicein.summary.noMatch') ? t('invoiceIn.summary.noMatch')
: t('invoicein.summary.dueTotal') : t('invoiceIn.summary.dueTotal')
" "
> >
{{ toCurrency(entity.totals.totalDueDay) }} {{ toCurrency(entity.totals.totalDueDay) }}
@ -318,7 +318,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
</QCard> </QCard>
<!--Vat--> <!--Vat-->
<QCard v-if="entity.invoiceInTax.length" class="vat"> <QCard v-if="entity.invoiceInTax.length" class="vat">
<VnTitle :url="getLink('vat')" :text="t('invoicein.card.vat')" /> <VnTitle :url="getLink('vat')" :text="t('invoiceIn.card.vat')" />
<QTable <QTable
:columns="vatColumns" :columns="vatColumns"
:rows="entity.invoiceInTax" :rows="entity.invoiceInTax"
@ -366,7 +366,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
</QCard> </QCard>
<!--Due Day--> <!--Due Day-->
<QCard v-if="entity.invoiceInDueDay.length" class="due-day"> <QCard v-if="entity.invoiceInDueDay.length" class="due-day">
<VnTitle :url="getLink('due-day')" :text="t('invoicein.card.dueDay')" /> <VnTitle :url="getLink('due-day')" :text="t('invoiceIn.card.dueDay')" />
<QTable :columns="dueDayColumns" :rows="entity.invoiceInDueDay" flat> <QTable :columns="dueDayColumns" :rows="entity.invoiceInDueDay" flat>
<template #header="dueDayProps"> <template #header="dueDayProps">
<QTr :props="dueDayProps" class="bg"> <QTr :props="dueDayProps" class="bg">
@ -404,7 +404,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
<QCard v-if="entity.invoiceInIntrastat.length"> <QCard v-if="entity.invoiceInIntrastat.length">
<VnTitle <VnTitle
:url="getLink('intrastat')" :url="getLink('intrastat')"
:text="t('invoicein.card.intrastat')" :text="t('invoiceIn.card.intrastat')"
/> />
<QTable <QTable
:columns="intrastatColumns" :columns="intrastatColumns"

View File

@ -83,7 +83,7 @@ const redirectToInvoiceInBasicData = (__, { id }) => {
</template> </template>
</VnSelect> </VnSelect>
<VnInput <VnInput
:label="t('invoicein.list.supplierRef')" :label="t('invoiceIn.list.supplierRef')"
v-model="data.supplierRef" v-model="data.supplierRef"
/> />
</VnRow> </VnRow>
@ -97,10 +97,10 @@ const redirectToInvoiceInBasicData = (__, { id }) => {
map-options map-options
hide-selected hide-selected
:required="true" :required="true"
:rules="validate('invoicein.companyFk')" :rules="validate('invoiceIn.companyFk')"
/> />
<VnInputDate <VnInputDate
:label="t('invoicein.summary.issued')" :label="t('invoiceIn.summary.issued')"
v-model="data.issued" v-model="data.issued"
/> />
</VnRow> </VnRow>

View File

@ -164,7 +164,7 @@ function handleDaysAgo(params, daysAgo) {
<QItem> <QItem>
<QItemSection> <QItemSection>
<QCheckbox <QCheckbox
:label="$t('invoicein.isBooked')" :label="$t('invoiceIn.isBooked')"
v-model="params.isBooked" v-model="params.isBooked"
@update:model-value="searchFn()" @update:model-value="searchFn()"
toggle-indeterminate toggle-indeterminate

View File

@ -8,17 +8,17 @@ import InvoiceInFilter from './InvoiceInFilter.vue';
import InvoiceInSummary from './Card/InvoiceInSummary.vue'; import InvoiceInSummary from './Card/InvoiceInSummary.vue';
import { useSummaryDialog } from 'src/composables/useSummaryDialog'; import { useSummaryDialog } from 'src/composables/useSummaryDialog';
import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue'; import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue';
import RightMenu from 'src/components/common/RightMenu.vue';
import InvoiceInSearchbar from 'src/pages/InvoiceIn/InvoiceInSearchbar.vue';
import VnTable from 'src/components/VnTable/VnTable.vue'; import VnTable from 'src/components/VnTable/VnTable.vue';
import VnSelect from 'src/components/common/VnSelect.vue'; import VnSelect from 'src/components/common/VnSelect.vue';
import VnInput from 'src/components/common/VnInput.vue'; import VnInput from 'src/components/common/VnInput.vue';
import VnInputDate from 'src/components/common/VnInputDate.vue'; import VnInputDate from 'src/components/common/VnInputDate.vue';
import FetchData from 'src/components/FetchData.vue'; import FetchData from 'src/components/FetchData.vue';
import VnSection from 'src/components/common/VnSection.vue';
const user = useState().getUser(); const user = useState().getUser();
const { viewSummary } = useSummaryDialog(); const { viewSummary } = useSummaryDialog();
const { t } = useI18n(); const { t } = useI18n();
const dataKey = 'InvoiceInList';
const tableRef = ref(); const tableRef = ref();
const companies = ref([]); const companies = ref([]);
@ -26,7 +26,7 @@ const cols = computed(() => [
{ {
align: 'left', align: 'left',
name: 'isBooked', name: 'isBooked',
label: t('invoicein.isBooked'), label: t('invoiceIn.isBooked'),
columnFilter: false, columnFilter: false,
}, },
{ {
@ -41,7 +41,7 @@ const cols = computed(() => [
{ {
align: 'left', align: 'left',
name: 'supplierFk', name: 'supplierFk',
label: t('invoicein.list.supplier'), label: t('invoiceIn.list.supplier'),
columnFilter: { columnFilter: {
component: 'select', component: 'select',
attrs: { attrs: {
@ -55,16 +55,16 @@ const cols = computed(() => [
{ {
align: 'left', align: 'left',
name: 'supplierRef', name: 'supplierRef',
label: t('invoicein.list.supplierRef'), label: t('invoiceIn.list.supplierRef'),
}, },
{ {
align: 'left', align: 'left',
name: 'serial', name: 'serial',
label: t('invoicein.serial'), label: t('invoiceIn.serial'),
}, },
{ {
align: 'left', align: 'left',
label: t('invoicein.list.issued'), label: t('invoiceIn.list.issued'),
name: 'issued', name: 'issued',
component: null, component: null,
columnFilter: { columnFilter: {
@ -74,7 +74,7 @@ const cols = computed(() => [
}, },
{ {
align: 'left', align: 'left',
label: t('invoicein.list.dueDated'), label: t('invoiceIn.list.dueDated'),
name: 'dueDated', name: 'dueDated',
component: null, component: null,
columnFilter: { columnFilter: {
@ -86,12 +86,12 @@ const cols = computed(() => [
{ {
align: 'left', align: 'left',
name: 'awbCode', name: 'awbCode',
label: t('invoicein.list.awb'), label: t('invoiceIn.list.awb'),
}, },
{ {
align: 'left', align: 'left',
name: 'amount', name: 'amount',
label: t('invoicein.list.amount'), label: t('invoiceIn.list.amount'),
format: ({ amount }) => toCurrency(amount), format: ({ amount }) => toCurrency(amount),
cardVisible: true, cardVisible: true,
}, },
@ -130,19 +130,25 @@ const cols = computed(() => [
}, },
]); ]);
</script> </script>
<template> <template>
<FetchData url="Companies" @on-fetch="(data) => (companies = data)" auto-load /> <FetchData url="Companies" @on-fetch="(data) => (companies = data)" auto-load />
<InvoiceInSearchbar /> <VnSection
<RightMenu> :data-key
<template #right-panel> :columns="cols"
<InvoiceInFilter data-key="InvoiceInList" /> prefix="invoiceIn"
:array-data-props="{
url: 'InvoiceIns/filter',
order: ['issued DESC', 'id DESC'],
}"
>
<template #advanced-menu>
<InvoiceInFilter :data-key />
</template> </template>
</RightMenu> <template #body>
<VnTable <VnTable
ref="tableRef" ref="tableRef"
data-key="InvoiceInList" :data-key
url="InvoiceIns/filter"
:order="['issued DESC', 'id DESC']"
:create="{ :create="{
urlCreate: 'InvoiceIns', urlCreate: 'InvoiceIns',
title: t('globals.createInvoiceIn'), title: t('globals.createInvoiceIn'),
@ -165,7 +171,7 @@ const cols = computed(() => [
<VnSelect <VnSelect
v-model="data.supplierFk" v-model="data.supplierFk"
url="Suppliers" url="Suppliers"
:fields="['id', 'nickname', 'name']" :fields="['id', 'name', 'nickname']"
:label="t('globals.supplier')" :label="t('globals.supplier')"
option-value="id" option-value="id"
option-label="nickname" option-label="nickname"
@ -176,13 +182,15 @@ const cols = computed(() => [
<QItem v-bind="scope.itemProps"> <QItem v-bind="scope.itemProps">
<QItemSection> <QItemSection>
<QItemLabel>{{ scope.opt?.nickname }}</QItemLabel> <QItemLabel>{{ scope.opt?.nickname }}</QItemLabel>
<QItemLabel caption> #{{ scope.opt?.id }}, {{ scope.opt?.name }} </QItemLabel> <QItemLabel caption>
#{{ scope.opt?.id }}, {{ scope.opt?.name }}
</QItemLabel>
</QItemSection> </QItemSection>
</QItem> </QItem>
</template> </template>
</VnSelect> </VnSelect>
<VnInput <VnInput
:label="t('invoicein.list.supplierRef')" :label="t('invoiceIn.list.supplierRef')"
v-model="data.supplierRef" v-model="data.supplierRef"
/> />
<VnSelect <VnSelect
@ -194,7 +202,12 @@ const cols = computed(() => [
option-label="code" option-label="code"
:required="true" :required="true"
/> />
<VnInputDate :label="t('invoicein.summary.issued')" v-model="data.issued" /> <VnInputDate
:label="t('invoiceIn.summary.issued')"
v-model="data.issued"
/>
</template> </template>
</VnTable> </VnTable>
</template> </template>
</VnSection>
</template>

View File

@ -1,18 +0,0 @@
<script setup>
import VnSearchbar from 'components/ui/VnSearchbar.vue';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
</script>
<template>
<VnSearchbar
data-key="InvoiceInList"
:label="t('Search invoice')"
:info="t('Search invoices in by id or supplier fiscal name')"
url="InvoiceIns/filter"
/>
</template>
<i18n>
es:
Search invoice: Buscar factura recibida
Search invoices in by id or supplier fiscal name: Buscar facturas recibidas por id o por nombre fiscal del proveedor
</i18n>

View File

@ -1,4 +1,6 @@
invoicein: invoiceIn:
search: Search invoice
searchInfo: Search incoming invoices by ID or supplier fiscal name
serial: Serial serial: Serial
isBooked: Is booked isBooked: Is booked
list: list:

View File

@ -1,4 +1,6 @@
invoicein: invoiceIn:
search: Buscar factura recibida
searchInfo: Buscar facturas recibidas por ID o nombre fiscal del proveedor
serial: Serie serial: Serie
isBooked: Contabilizada isBooked: Contabilizada
list: list:
@ -63,6 +65,7 @@ invoicein:
params: params:
search: Id o nombre proveedor search: Id o nombre proveedor
correctedFk: Rectificada correctedFk: Rectificada
isBooked: Contabilizada
account: Cuenta contable account: Cuenta contable
correctingFk: Rectificativa correctingFk: Rectificativa

View File

@ -62,6 +62,7 @@ const setData = (entity) => (data.value = useCardDescription(entity.ref, entity.
:subtitle="data.subtitle" :subtitle="data.subtitle"
@on-fetch="setData" @on-fetch="setData"
data-key="invoiceOutData" data-key="invoiceOutData"
width="lg-width"
> >
<template #menu="{ entity, menuRef }"> <template #menu="{ entity, menuRef }">
<InvoiceOutDescriptorMenu :invoice-out-data="entity" :menu-ref="menuRef" /> <InvoiceOutDescriptorMenu :invoice-out-data="entity" :menu-ref="menuRef" />

View File

@ -76,6 +76,7 @@ const setData = (entity) => (data.value = useCardDescription(entity.code, entity
:subtitle="data.subtitle" :subtitle="data.subtitle"
data-key="routeData" data-key="routeData"
@on-fetch="setData" @on-fetch="setData"
width="lg-width"
> >
<template #body="{ entity }"> <template #body="{ entity }">
<VnLv :label="t('Date')" :value="toDate(entity?.dated)" /> <VnLv :label="t('Date')" :value="toDate(entity?.dated)" />

View File

@ -16,6 +16,10 @@ const $props = defineProps({
required: false, required: false,
default: null, default: null,
}, },
summary: {
type: Object,
default: null,
},
}); });
const route = useRoute(); const route = useRoute();
@ -102,6 +106,10 @@ const data = ref(useCardDescription());
function ticketFilter(ticket) { function ticketFilter(ticket) {
return JSON.stringify({ clientFk: ticket.clientFk }); return JSON.stringify({ clientFk: ticket.clientFk });
} }
const setData = (entity) => {
data.value = useCardDescription(entity.ref, entity.id);
};
</script> </script>
<template> <template>
@ -111,7 +119,10 @@ function ticketFilter(ticket) {
:filter="filter" :filter="filter"
:title="data.title" :title="data.title"
:subtitle="data.subtitle" :subtitle="data.subtitle"
@on-fetch="setData"
:summary="$props.summary"
data-key="ticketData" data-key="ticketData"
width="lg-width"
> >
<template #menu="{ entity }"> <template #menu="{ entity }">
<TicketDescriptorMenu :ticket="entity" /> <TicketDescriptorMenu :ticket="entity" />
@ -157,7 +168,7 @@ function ticketFilter(ticket) {
<VnLv :label="t('globals.alias')" :value="entity.nickname" /> <VnLv :label="t('globals.alias')" :value="entity.nickname" />
</template> </template>
<template #icons="{ entity }"> <template #icons="{ entity }">
<QCardActions class="q-gutter-x-xs"> <QCardActions class="q-gutter-x-md">
<QIcon <QIcon
v-if="entity.client.isActive == false" v-if="entity.client.isActive == false"
name="vn:disabled" name="vn:disabled"
@ -201,7 +212,7 @@ function ticketFilter(ticket) {
</QCardActions> </QCardActions>
</template> </template>
<template #actions="{ entity }"> <template #actions="{ entity }">
<QCardActions> <QCardActions class="flex justify-center" style="padding-inline: 0">
<QBtn <QBtn
size="md" size="md"
icon="vn:client" icon="vn:client"

View File

@ -6,7 +6,6 @@ import { useI18n } from 'vue-i18n';
import axios from 'axios'; import axios from 'axios';
import { dashIfEmpty, toDate, toCurrency } from 'src/filters'; import { dashIfEmpty, toDate, toCurrency } from 'src/filters';
import CardSummary from 'components/ui/CardSummary.vue'; import CardSummary from 'components/ui/CardSummary.vue';
import FetchData from 'components/FetchData.vue';
import FetchedTags from 'components/ui/FetchedTags.vue'; import FetchedTags from 'components/ui/FetchedTags.vue';
import InvoiceOutDescriptorProxy from 'pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue'; import InvoiceOutDescriptorProxy from 'pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue';
import VnLv from 'src/components/ui/VnLv.vue'; import VnLv from 'src/components/ui/VnLv.vue';
@ -29,15 +28,14 @@ const { t } = useI18n();
const $props = defineProps({ const $props = defineProps({
id: { id: {
type: Number, type: Number,
required: false,
default: null, default: null,
}, },
}); });
const entityId = computed(() => $props.id || route.params.id); const entityId = computed(() => $props.id || route.params.id);
const summaryRef = ref(); const summary = ref();
const ticket = computed(() => summaryRef.value?.entity); const ticket = computed(() => summary.value?.entity);
const editableStates = ref([]); const editableStates = ref([]);
const ticketUrl = ref(); const ticketUrl = ref();
const grafanaUrl = 'https://grafana.verdnatura.es'; const grafanaUrl = 'https://grafana.verdnatura.es';
@ -76,26 +74,27 @@ async function changeState(value) {
}; };
await axios.post(`Tickets/state`, formData); await axios.post(`Tickets/state`, formData);
notify('globals.dataSaved', 'positive'); notify('globals.dataSaved', 'positive');
summaryRef.value?.fetch(); summary.value?.fetch();
descriptorData.fetch({}); descriptorData.fetch({});
} }
function toTicketUrl(section) { function toTicketUrl(section) {
return '#/ticket/' + entityId.value + '/' + section; return '#/ticket/' + entityId.value + '/' + section;
} }
onMounted(async () => {
const filter = { fields: ['code', 'name', 'id', 'alertLevel'] };
const params = { filter: JSON.stringify(filter) };
editableStates.value = (await axios.get('States/editableStates', { params }))?.data;
});
</script> </script>
<template> <template>
<FetchData
url="States/editableStates"
:filter="{ fields: ['code', 'name', 'id', 'alertLevel'], order: 'name ASC' }"
auto-load
@on-fetch="(data) => (editableStates = data)"
/>
<CardSummary <CardSummary
ref="summaryRef" ref="summary"
:url="`Tickets/${entityId}/summary`" :url="`Tickets/${entityId}/summary`"
data-key="TicketSummary" data-key="TicketSummary"
v-bind="$attrs.width"
> >
<template #header-left> <template #header-left>
<VnToSummary <VnToSummary
@ -207,7 +206,7 @@ function toTicketUrl(section) {
</VnLv> </VnLv>
<VnLv :label="t('globals.weight')" :value="dashIfEmpty(entity.weight)" /> <VnLv :label="t('globals.weight')" :value="dashIfEmpty(entity.weight)" />
</QCard> </QCard>
<QCard class="vn-one" style="flex: 2 1"> <QCard class="vn-one">
<VnTitle <VnTitle
:url="toTicketUrl('basic-data')" :url="toTicketUrl('basic-data')"
:text="t('globals.summary.basicData')" :text="t('globals.summary.basicData')"
@ -454,7 +453,7 @@ function toTicketUrl(section) {
toCurrency( toCurrency(
props.row.quantity * props.row.quantity *
props.row.price * props.row.price *
((100 - props.row.discount) / 100) ((100 - props.row.discount) / 100),
) )
}} }}
</QTd> </QTd>

View File

@ -1,18 +1,12 @@
import { RouterView } from 'vue-router'; import { RouterView } from 'vue-router';
import { setRectificative } from 'src/pages/InvoiceIn/composables/setRectificative';
export default { const invoiceInCard = {
path: '/invoice-in', name: 'InvoiceInCard',
name: 'InvoiceIn', path: ':id',
component: () => import('src/pages/InvoiceIn/Card/InvoiceInCard.vue'),
redirect: { name: 'InvoiceInSummary' },
meta: { meta: {
title: 'invoiceIns', menu: [
icon: 'vn:invoice-in',
moduleName: 'InvoiceIn',
},
component: RouterView,
redirect: { name: 'InvoiceInMain' },
menus: {
main: ['InvoiceInList', 'InvoiceInSerial'],
card: [
'InvoiceInBasicData', 'InvoiceInBasicData',
'InvoiceInVat', 'InvoiceInVat',
'InvoiceInDueDay', 'InvoiceInDueDay',
@ -23,60 +17,13 @@ export default {
}, },
children: [ children: [
{ {
path: '',
name: 'InvoiceInMain',
component: () => import('src/components/common/VnModule.vue'),
redirect: { name: 'InvoiceInList' },
children: [
{
path: 'list',
name: 'InvoiceInList',
meta: {
title: 'list',
icon: 'view_list',
},
component: () => import('src/pages/InvoiceIn/InvoiceInList.vue'),
},
{
path: 'serial',
name: 'InvoiceInSerial',
meta: {
title: 'serial',
icon: 'view_list',
},
component: () =>
import('src/pages/InvoiceIn/Serial/InvoiceInSerial.vue'),
},
{
path: 'create',
name: 'InvoiceInCreare',
meta: {
title: 'invoiceInCreate',
icon: 'create',
},
component: () => import('src/pages/InvoiceIn/InvoiceInCreate.vue'),
},
],
},
{
name: 'InvoiceInCard',
path: ':id',
component: () => import('src/pages/InvoiceIn/Card/InvoiceInCard.vue'),
redirect: { name: 'InvoiceInSummary' },
beforeEnter: async (to, from, next) => {
await setRectificative(to);
next();
},
children: [
{
name: 'InvoiceInSummary',
path: 'summary', path: 'summary',
name: 'InvoiceInSummary',
meta: { meta: {
title: 'summary', title: 'summary',
icon: 'view_list', icon: 'view_list',
}, },
component: () => component: () => import('src/pages/InvoiceIn/Card/InvoiceInSummary.vue'),
import('src/pages/InvoiceIn/Card/InvoiceInSummary.vue'),
}, },
{ {
name: 'InvoiceInBasicData', name: 'InvoiceInBasicData',
@ -117,15 +64,6 @@ export default {
component: () => component: () =>
import('src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue'), import('src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue'),
}, },
{
name: 'InvoiceInLog',
path: 'log',
meta: {
title: 'log',
icon: 'history',
},
component: () => import('src/pages/InvoiceIn/Card/InvoiceInLog.vue'),
},
{ {
name: 'InvoiceInCorrective', name: 'InvoiceInCorrective',
path: 'corrective', path: 'corrective',
@ -136,6 +74,71 @@ export default {
component: () => component: () =>
import('src/pages/InvoiceIn/Card/InvoiceInCorrective.vue'), import('src/pages/InvoiceIn/Card/InvoiceInCorrective.vue'),
}, },
{
name: 'InvoiceInLog',
path: 'log',
meta: {
title: 'log',
icon: 'history',
},
component: () => import('src/pages/InvoiceIn/Card/InvoiceInLog.vue'),
},
],
};
export default {
name: 'InvoiceIn',
path: '/invoice-in',
meta: {
title: 'invoiceIns',
icon: 'vn:invoice-in',
moduleName: 'InvoiceIn',
menu: ['InvoiceInList', 'InvoiceInSerial'],
},
component: RouterView,
redirect: { name: 'InvoiceInMain' },
children: [
{
name: 'InvoiceInMain',
path: '',
component: () => import('src/components/common/VnModule.vue'),
redirect: { name: 'InvoiceInIndexMain' },
children: [
{
path: '',
name: 'InvoiceInIndexMain',
redirect: { name: 'InvoiceInList' },
component: () => import('src/pages/InvoiceIn/InvoiceInList.vue'),
children: [
{
name: 'InvoiceInList',
path: 'list',
meta: {
title: 'list',
icon: 'view_list',
},
},
invoiceInCard,
],
},
{
path: 'create',
name: 'InvoiceInCreare',
meta: {
title: 'invoiceInCreate',
icon: 'create',
},
component: () => import('src/pages/InvoiceIn/InvoiceInCreate.vue'),
},
{
path: 'serial',
name: 'InvoiceInSerial',
meta: {
title: 'serial',
icon: 'view_list',
},
component: () => import('src/pages/InvoiceIn/Serial/InvoiceInSerial.vue'),
},
], ],
}, },
], ],

View File

@ -30,14 +30,15 @@ describe('TicketList', () => {
cy.get(firstRow).find('.q-btn:first').click(); cy.get(firstRow).find('.q-btn:first').click();
cy.get('@windowOpen').should('be.calledWithMatch', /\/ticket\/\d+\/sale/); cy.get('@windowOpen').should('be.calledWithMatch', /\/ticket\/\d+\/sale/);
}); });
// https://redmine.verdnatura.es/issues/8424
it.skip('should open ticket summary', () => { it('should open ticket summary', () => {
searchResults(); searchResults();
cy.get(firstRow).find('.q-btn:last').click(); cy.get(firstRow).find('.q-btn:last').click();
cy.dataCy('ticketSummary').should('exist'); cy.get('.summaryHeader').should('exist');
cy.get('.summaryBody').should('exist');
}); });
it.skip('Client list create new client', () => { it('Client list create new client', () => {
cy.dataCy('vnTableCreateBtn').should('exist'); cy.dataCy('vnTableCreateBtn').should('exist');
cy.dataCy('vnTableCreateBtn').click(); cy.dataCy('vnTableCreateBtn').click();
const data = { const data = {
@ -45,9 +46,9 @@ describe('TicketList', () => {
Warehouse: { val: 'Warehouse One', type: 'select' }, Warehouse: { val: 'Warehouse One', type: 'select' },
Address: { val: 'employee', type: 'select' }, Address: { val: 'employee', type: 'select' },
Landed: { val: '01-01-2024', type: 'date' }, Landed: { val: '01-01-2024', type: 'date' },
Agency: { val: 'Other agency', type: 'select' },
}; };
cy.fillInForm(data); cy.fillInForm(data);
cy.dataCy('Agency_select').click();
cy.dataCy('FormModelPopup_save').click(); cy.dataCy('FormModelPopup_save').click();
cy.checkNotification('Data created'); cy.checkNotification('Data created');
cy.url().should('match', /\/ticket\/\d+\/summary/); cy.url().should('match', /\/ticket\/\d+\/summary/);

View File

@ -1,5 +1,5 @@
/// <reference types="cypress" /> /// <reference types="cypress" />
describe('TicketRequest', () => { describe('TicketNotes', () => {
beforeEach(() => { beforeEach(() => {
cy.login('developer'); cy.login('developer');
cy.viewport(1920, 1080); cy.viewport(1920, 1080);
@ -13,7 +13,7 @@ describe('TicketRequest', () => {
cy.selectOption('[data-cy="ticketNotesObservationType"]:last', 'Weight'); cy.selectOption('[data-cy="ticketNotesObservationType"]:last', 'Weight');
cy.dataCy('ticketNotesDescription').should('exist'); cy.dataCy('ticketNotesDescription').should('exist');
cy.get('[data-cy="ticketNotesDescription"]:last').type( cy.get('[data-cy="ticketNotesDescription"]:last').type(
'This is a note description' 'This is a note description',
); );
cy.dataCy('crudModelDefaultSaveBtn').click(); cy.dataCy('crudModelDefaultSaveBtn').click();
cy.checkNotification('Data saved'); cy.checkNotification('Data saved');

View File

@ -6,7 +6,7 @@ describe('TicketRequest', () => {
cy.visit('/#/ticket/31/request'); cy.visit('/#/ticket/31/request');
}); });
it.skip('Creates a new request', () => { it('Creates a new request', () => {
cy.dataCy('vnTableCreateBtn').should('exist'); cy.dataCy('vnTableCreateBtn').should('exist');
cy.dataCy('vnTableCreateBtn').click(); cy.dataCy('vnTableCreateBtn').click();
const data = { const data = {