Added claim & invoice out filters
gitea/salix-front/pipeline/head This commit looks good
Details
gitea/salix-front/pipeline/head This commit looks good
Details
This commit is contained in:
parent
a1f7fdfb37
commit
a5f83b553b
|
@ -176,8 +176,8 @@ function formatValue(value) {
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-separator />
|
<q-separator />
|
||||||
</template>
|
</template>
|
||||||
<slot name="body" :params="userParams" :search-fn="search"></slot>
|
|
||||||
</q-list>
|
</q-list>
|
||||||
|
<slot name="body" :params="userParams" :search-fn="search"></slot>
|
||||||
</q-form>
|
</q-form>
|
||||||
<q-inner-loading
|
<q-inner-loading
|
||||||
:showing="isLoading"
|
:showing="isLoading"
|
||||||
|
@ -193,4 +193,6 @@ es:
|
||||||
Remove filters: Eliminar filtros
|
Remove filters: Eliminar filtros
|
||||||
Refresh: Refrescar
|
Refresh: Refrescar
|
||||||
Search: Buscar
|
Search: Buscar
|
||||||
|
Yes: Si
|
||||||
|
No: No
|
||||||
</i18n>
|
</i18n>
|
||||||
|
|
|
@ -79,6 +79,7 @@ export function useArrayData(key, userOptions) {
|
||||||
canceller = null;
|
canceller = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function clear() {
|
function clear() {
|
||||||
if (arrayDataStore.get(key)) {
|
if (arrayDataStore.get(key)) {
|
||||||
arrayDataStore.clear(key);
|
arrayDataStore.clear(key);
|
||||||
|
|
|
@ -38,7 +38,7 @@ function setWorkers(data) {
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ params, searchFn }">
|
<template #body="{ params, searchFn }">
|
||||||
<q-list>
|
<q-list dense>
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-input
|
<q-input
|
||||||
|
@ -54,7 +54,11 @@ function setWorkers(data) {
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-input :label="t('Name')" v-model="params.name" lazy-rules />
|
<q-input
|
||||||
|
:label="t('Client Name')"
|
||||||
|
v-model="params.clientName"
|
||||||
|
lazy-rules
|
||||||
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item>
|
<q-item>
|
||||||
|
@ -73,17 +77,7 @@ function setWorkers(data) {
|
||||||
map-options
|
map-options
|
||||||
use-input
|
use-input
|
||||||
:input-debounce="0"
|
:input-debounce="0"
|
||||||
>
|
/>
|
||||||
<template #prepend>
|
|
||||||
<q-avatar color="orange" size="xs">
|
|
||||||
<q-img
|
|
||||||
v-if="params.salesPersonFk"
|
|
||||||
:src="`/api/Images/user/160x160/${params.salesPersonFk}/download?access_token=${token}`"
|
|
||||||
spinner-color="white"
|
|
||||||
/>
|
|
||||||
</q-avatar>
|
|
||||||
</template>
|
|
||||||
</q-select>
|
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item>
|
<q-item>
|
||||||
|
@ -106,10 +100,29 @@ function setWorkers(data) {
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item>
|
<q-item>
|
||||||
|
<q-item-section v-if="!workers">
|
||||||
|
<q-skeleton type="QInput" class="full-width" />
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section v-if="workers">
|
||||||
|
<q-select
|
||||||
|
:label="t('Responsible')"
|
||||||
|
v-model="params.claimResponsibleFk"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
:options="workers"
|
||||||
|
option-value="id"
|
||||||
|
option-label="name"
|
||||||
|
emit-value
|
||||||
|
map-options
|
||||||
|
use-input
|
||||||
|
:input-debounce="0"
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item class="q-mb-md">
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-select
|
<q-select
|
||||||
:label="t('State')"
|
:label="t('State')"
|
||||||
v-model="params.stateFk"
|
v-model="params.claimStateFk"
|
||||||
@update:model-value="searchFn()"
|
@update:model-value="searchFn()"
|
||||||
:options="states"
|
:options="states"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
|
@ -119,62 +132,14 @@ function setWorkers(data) {
|
||||||
/>
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item>
|
|
||||||
<q-item-section>
|
|
||||||
<q-select
|
|
||||||
:label="t('Item')"
|
|
||||||
v-model="params.itemFk"
|
|
||||||
:options="items"
|
|
||||||
option-value="id"
|
|
||||||
option-label="name"
|
|
||||||
emit-value
|
|
||||||
map-options
|
|
||||||
/>
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
<q-item class="q-mb-md">
|
|
||||||
<q-item-section>
|
|
||||||
<q-input :label="t('City')" v-model="params.city" lazy-rules />
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
<q-separator />
|
<q-separator />
|
||||||
<q-expansion-item :label="t('More options')" expand-separator>
|
<q-expansion-item :label="t('More options')" expand-separator>
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-input
|
|
||||||
:label="t('Phone')"
|
|
||||||
v-model="params.phone"
|
|
||||||
lazy-rules
|
|
||||||
>
|
|
||||||
<template #prepend>
|
|
||||||
<q-icon name="phone" size="sm"></q-icon>
|
|
||||||
</template>
|
|
||||||
</q-input>
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
<q-item>
|
|
||||||
<q-item-section>
|
|
||||||
<q-input
|
|
||||||
:label="t('Email')"
|
|
||||||
v-model="params.email"
|
|
||||||
lazy-rules
|
|
||||||
>
|
|
||||||
<template #prepend>
|
|
||||||
<q-icon name="email" size="sm"></q-icon>
|
|
||||||
</template>
|
|
||||||
</q-input>
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
<q-item>
|
|
||||||
<q-item-section v-if="!zones">
|
|
||||||
<q-skeleton type="QInput" class="full-width" />
|
|
||||||
</q-item-section>
|
|
||||||
<q-item-section v-if="zones">
|
|
||||||
<q-select
|
<q-select
|
||||||
:label="t('Zone')"
|
:label="t('Item')"
|
||||||
v-model="params.zoneFk"
|
v-model="params.itemFk"
|
||||||
@update:model-value="searchFn()"
|
:options="items"
|
||||||
:options="zones"
|
|
||||||
option-value="id"
|
option-value="id"
|
||||||
option-label="name"
|
option-label="name"
|
||||||
emit-value
|
emit-value
|
||||||
|
@ -185,10 +150,32 @@ function setWorkers(data) {
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-input
|
<q-input
|
||||||
:label="t('Postcode')"
|
v-model="params.created"
|
||||||
v-model="params.postcode"
|
:label="t('Created')"
|
||||||
lazy-rules
|
autofocus
|
||||||
/>
|
readonly
|
||||||
|
>
|
||||||
|
<template #append>
|
||||||
|
<q-icon name="event" class="cursor-pointer">
|
||||||
|
<q-popup-proxy
|
||||||
|
cover
|
||||||
|
transition-show="scale"
|
||||||
|
transition-hide="scale"
|
||||||
|
>
|
||||||
|
<q-date v-model="params.created">
|
||||||
|
<div class="row items-center justify-end">
|
||||||
|
<q-btn
|
||||||
|
v-close-popup
|
||||||
|
label="Close"
|
||||||
|
color="primary"
|
||||||
|
flat
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</q-date>
|
||||||
|
</q-popup-proxy>
|
||||||
|
</q-icon>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
</q-expansion-item>
|
</q-expansion-item>
|
||||||
|
@ -201,59 +188,30 @@ function setWorkers(data) {
|
||||||
en:
|
en:
|
||||||
params:
|
params:
|
||||||
search: Contains
|
search: Contains
|
||||||
fi: FI
|
clientFk: Customer
|
||||||
name: Name
|
clientName: Customer
|
||||||
socialName: Social Name
|
|
||||||
salesPersonFk: Salesperson
|
salesPersonFk: Salesperson
|
||||||
provinceFk: Province
|
attenderFk: Attender
|
||||||
city: City
|
claimResponsibleFk: Responsible
|
||||||
phone: Phone
|
claimStateFk: State
|
||||||
email: Email
|
created: Created
|
||||||
zoneFk: Zone
|
|
||||||
postcode: Postcode
|
|
||||||
es:
|
es:
|
||||||
params:
|
params:
|
||||||
search: Contiene
|
search: Contiene
|
||||||
fi: NIF
|
clientFk: Cliente
|
||||||
name: Nombre
|
clientName: Cliente
|
||||||
socialName: Razón Social
|
|
||||||
salesPersonFk: Comercial
|
salesPersonFk: Comercial
|
||||||
provinceFk: Provincia
|
attenderFk: Asistente
|
||||||
city: Ciudad
|
claimResponsibleFk: Responsable
|
||||||
phone: Teléfono
|
claimStateFk: Estado
|
||||||
email: Email
|
created: Creada
|
||||||
zoneFk: Zona
|
Customer ID: ID cliente
|
||||||
postcode: CP
|
Client Name: Nombre del cliente
|
||||||
FI: NIF
|
|
||||||
Name: Nombre
|
|
||||||
Social Name: Razón social
|
|
||||||
Salesperson: Comercial
|
Salesperson: Comercial
|
||||||
Province: Provincia
|
Attender: Asistente
|
||||||
City: Ciudad
|
Responsible: Responsable
|
||||||
|
State: Estado
|
||||||
|
Item: Artículo
|
||||||
|
Created: Creada
|
||||||
More options: Más opciones
|
More options: Más opciones
|
||||||
Phone: Teléfono
|
|
||||||
Email: Email
|
|
||||||
Zone: Zona
|
|
||||||
Postcode: Código postal
|
|
||||||
</i18n>
|
</i18n>
|
||||||
|
|
||||||
<!-- <i18n>
|
|
||||||
{
|
|
||||||
"en": {
|
|
||||||
"fi": "Fiscal ID",
|
|
||||||
"name": "Name",
|
|
||||||
"socialName": "Social Name",
|
|
||||||
"salesPersonFk": "Salesperson",
|
|
||||||
"provinceFk": "Province",
|
|
||||||
"city": "City",
|
|
||||||
"zoneFk": "Zone",
|
|
||||||
"postcode": "Postcode"
|
|
||||||
},
|
|
||||||
"es": {
|
|
||||||
"fi": "NIF",
|
|
||||||
"name": "Nombre",
|
|
||||||
"socialName": "Razón social",
|
|
||||||
"salesPersonFk": "Comercial"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</i18n> -->
|
|
||||||
|
|
|
@ -59,9 +59,6 @@ function viewSummary(id) {
|
||||||
<q-item-section class="q-pa-md" @click="navigate(row.id)">
|
<q-item-section class="q-pa-md" @click="navigate(row.id)">
|
||||||
<div class="text-h6 link">
|
<div class="text-h6 link">
|
||||||
{{ row.clientName }}
|
{{ row.clientName }}
|
||||||
<q-popup-proxy>
|
|
||||||
<customer-descriptor-popover :customer="row.client" />
|
|
||||||
</q-popup-proxy>
|
|
||||||
</div>
|
</div>
|
||||||
<q-item-label caption>#{{ row.id }}</q-item-label>
|
<q-item-label caption>#{{ row.id }}</q-item-label>
|
||||||
<q-list>
|
<q-list>
|
||||||
|
@ -154,7 +151,7 @@ function viewSummary(id) {
|
||||||
{{ t('components.smartCard.viewDescription') }}
|
{{ t('components.smartCard.viewDescription') }}
|
||||||
</q-tooltip>
|
</q-tooltip>
|
||||||
<q-popup-proxy>
|
<q-popup-proxy>
|
||||||
<customer-descriptor-popover :customer="row.client" />
|
<CustomerDescriptorPopover :id="row.clientFk" />
|
||||||
</q-popup-proxy>
|
</q-popup-proxy>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
</q-card-actions>
|
</q-card-actions>
|
||||||
|
|
|
@ -40,7 +40,7 @@ function setWorkers(data) {
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ params, searchFn }">
|
<template #body="{ params, searchFn }">
|
||||||
<q-list>
|
<q-list dense>
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-input :label="t('FI')" v-model="params.fi" lazy-rules>
|
<q-input :label="t('FI')" v-model="params.fi" lazy-rules>
|
||||||
|
@ -214,24 +214,3 @@ es:
|
||||||
Zone: Zona
|
Zone: Zona
|
||||||
Postcode: Código postal
|
Postcode: Código postal
|
||||||
</i18n>
|
</i18n>
|
||||||
|
|
||||||
<!-- <i18n>
|
|
||||||
{
|
|
||||||
"en": {
|
|
||||||
"fi": "Fiscal ID",
|
|
||||||
"name": "Name",
|
|
||||||
"socialName": "Social Name",
|
|
||||||
"salesPersonFk": "Salesperson",
|
|
||||||
"provinceFk": "Province",
|
|
||||||
"city": "City",
|
|
||||||
"zoneFk": "Zone",
|
|
||||||
"postcode": "Postcode"
|
|
||||||
},
|
|
||||||
"es": {
|
|
||||||
"fi": "NIF",
|
|
||||||
"name": "Nombre",
|
|
||||||
"socialName": "Razón social",
|
|
||||||
"salesPersonFk": "Comercial"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</i18n> -->
|
|
||||||
|
|
|
@ -0,0 +1,246 @@
|
||||||
|
<script setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import FetchData from 'components/FetchData.vue';
|
||||||
|
import VnFilterPanel from 'src/components/ui/VnFilterPanel.vue';
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
const props = defineProps({
|
||||||
|
dataKey: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const workers = ref();
|
||||||
|
const workersCopy = ref();
|
||||||
|
const states = ref();
|
||||||
|
|
||||||
|
function setWorkers(data) {
|
||||||
|
workers.value = data;
|
||||||
|
workersCopy.value = data;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<fetch-data url="ClaimStates" @on-fetch="(data) => (states = data)" auto-load />
|
||||||
|
<fetch-data
|
||||||
|
url="Workers/activeWithInheritedRole"
|
||||||
|
:filter="{ where: { role: 'salesPerson' } }"
|
||||||
|
@on-fetch="setWorkers"
|
||||||
|
auto-load
|
||||||
|
/>
|
||||||
|
<VnFilterPanel :data-key="props.dataKey" :search-button="true">
|
||||||
|
<template #tags="{ tag, formatFn }">
|
||||||
|
<div class="q-gutter-x-xs">
|
||||||
|
<strong>{{ t(`params.${tag.label}`) }}: </strong>
|
||||||
|
<span>{{ formatFn(tag.value) }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #body="{ params, searchFn }">
|
||||||
|
<q-list dense>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-input
|
||||||
|
:label="t('Customer ID')"
|
||||||
|
v-model="params.clientFk"
|
||||||
|
lazy-rules
|
||||||
|
>
|
||||||
|
<template #prepend>
|
||||||
|
<q-icon name="vn:client" size="sm"></q-icon>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-input :label="t('FI')" v-model="params.fi" lazy-rules>
|
||||||
|
<template #prepend>
|
||||||
|
<q-icon name="badge" size="sm"></q-icon>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-input :label="t('Amount')" v-model="params.amount" lazy-rules>
|
||||||
|
<template #prepend>
|
||||||
|
<q-icon name="euro" size="sm"></q-icon>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-input
|
||||||
|
:label="t('Min')"
|
||||||
|
type="number"
|
||||||
|
v-model.number="params.min"
|
||||||
|
lazy-rules
|
||||||
|
>
|
||||||
|
<template #prepend>
|
||||||
|
<q-icon name="euro" size="sm"></q-icon>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<q-input
|
||||||
|
:label="t('Max')"
|
||||||
|
type="number"
|
||||||
|
v-model.number="params.max"
|
||||||
|
lazy-rules
|
||||||
|
>
|
||||||
|
<template #prepend>
|
||||||
|
<q-icon name="euro" size="sm"></q-icon>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item class="q-mb-md">
|
||||||
|
<q-item-section>
|
||||||
|
<q-checkbox
|
||||||
|
v-model="params.hasPdf"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
:label="t('Has PDF')"
|
||||||
|
toggle-indeterminate
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-separator />
|
||||||
|
<q-expansion-item :label="t('More options')" expand-separator>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-input
|
||||||
|
:label="t('Issued')"
|
||||||
|
v-model="params.issued"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
type="date"
|
||||||
|
stack-label
|
||||||
|
>
|
||||||
|
<template #append>
|
||||||
|
<q-icon name="event" class="cursor-pointer">
|
||||||
|
<q-popup-proxy
|
||||||
|
cover
|
||||||
|
transition-show="scale"
|
||||||
|
transition-hide="scale"
|
||||||
|
>
|
||||||
|
<q-date v-model="params.issued">
|
||||||
|
<div class="row items-center justify-end">
|
||||||
|
<q-btn
|
||||||
|
v-close-popup
|
||||||
|
label="Close"
|
||||||
|
color="primary"
|
||||||
|
flat
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</q-date>
|
||||||
|
</q-popup-proxy>
|
||||||
|
</q-icon>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-input
|
||||||
|
:label="t('Created')"
|
||||||
|
v-model="params.created"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
type="date"
|
||||||
|
stack-label
|
||||||
|
>
|
||||||
|
<template #append>
|
||||||
|
<q-icon name="event" class="cursor-pointer">
|
||||||
|
<q-popup-proxy
|
||||||
|
cover
|
||||||
|
transition-show="scale"
|
||||||
|
transition-hide="scale"
|
||||||
|
>
|
||||||
|
<q-date v-model="params.created">
|
||||||
|
<div class="row items-center justify-end">
|
||||||
|
<q-btn
|
||||||
|
v-close-popup
|
||||||
|
label="Close"
|
||||||
|
color="primary"
|
||||||
|
flat
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</q-date>
|
||||||
|
</q-popup-proxy>
|
||||||
|
</q-icon>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-input
|
||||||
|
:label="t('Dued')"
|
||||||
|
v-model="params.dued"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
type="date"
|
||||||
|
stack-label
|
||||||
|
>
|
||||||
|
<!-- <template #append>
|
||||||
|
<q-icon name="event" class="cursor-pointer">
|
||||||
|
<q-popup-proxy
|
||||||
|
cover
|
||||||
|
transition-show="scale"
|
||||||
|
transition-hide="scale"
|
||||||
|
>
|
||||||
|
<q-date v-model="params.dued">
|
||||||
|
<div class="row items-center justify-end">
|
||||||
|
<q-btn
|
||||||
|
v-close-popup
|
||||||
|
label="Close"
|
||||||
|
color="primary"
|
||||||
|
flat
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</q-date>
|
||||||
|
</q-popup-proxy>
|
||||||
|
</q-icon>
|
||||||
|
</template> -->
|
||||||
|
</q-input>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
</q-expansion-item>
|
||||||
|
</q-list>
|
||||||
|
</template>
|
||||||
|
</VnFilterPanel>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<i18n>
|
||||||
|
en:
|
||||||
|
params:
|
||||||
|
search: Contains
|
||||||
|
clientFk: Customer
|
||||||
|
fi: FI
|
||||||
|
amount: Amount
|
||||||
|
max: Max
|
||||||
|
min: Min
|
||||||
|
hasPdf: Has PDF
|
||||||
|
issued: Issued
|
||||||
|
created: Created
|
||||||
|
dued: Dued
|
||||||
|
es:
|
||||||
|
params:
|
||||||
|
search: Contiene
|
||||||
|
clientFk: Cliente
|
||||||
|
fi: CIF
|
||||||
|
amount: Importe
|
||||||
|
max: Max
|
||||||
|
min: Min
|
||||||
|
hasPdf: Tiene PDF
|
||||||
|
issued: Emitida
|
||||||
|
created: Creada
|
||||||
|
dued: Vencida
|
||||||
|
Customer ID: ID cliente
|
||||||
|
FI: CIF
|
||||||
|
Amount: Importe
|
||||||
|
Has PDF: Tiene PDF
|
||||||
|
Issued: Fecha emisión
|
||||||
|
Created: Fecha creación
|
||||||
|
Dued: Fecha vencimiento
|
||||||
|
More options: Más opciones
|
||||||
|
</i18n>
|
|
@ -1,18 +1,24 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { onMounted, onUnmounted } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { useQuasar } from 'quasar';
|
import { useQuasar } from 'quasar';
|
||||||
|
import { useStateStore } from 'stores/useStateStore';
|
||||||
import Paginate from 'src/components/PaginateData.vue';
|
import Paginate from 'src/components/PaginateData.vue';
|
||||||
import InvoiceOutSummaryDialog from './Card/InvoiceOutSummaryDialog.vue';
|
import InvoiceOutSummaryDialog from './Card/InvoiceOutSummaryDialog.vue';
|
||||||
import { toDate, toCurrency } from 'src/filters/index';
|
import { toDate, toCurrency } from 'src/filters/index';
|
||||||
|
|
||||||
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
|
|
||||||
import TeleportSlot from 'components/ui/TeleportSlot.vue';
|
import TeleportSlot from 'components/ui/TeleportSlot.vue';
|
||||||
|
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
|
||||||
|
import InvoiceOutFilter from './InvoiceOutFilter.vue';
|
||||||
|
|
||||||
|
const state = useStateStore();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const quasar = useQuasar();
|
const quasar = useQuasar();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
onMounted(() => state.toggleRightDrawer());
|
||||||
|
onUnmounted(() => state.toggleRightDrawer());
|
||||||
|
|
||||||
function navigate(id) {
|
function navigate(id) {
|
||||||
router.push({ path: `/invoiceOut/${id}` });
|
router.push({ path: `/invoiceOut/${id}` });
|
||||||
}
|
}
|
||||||
|
@ -34,6 +40,9 @@ function viewSummary(id) {
|
||||||
:label="t('Search by invoice id or reference')"
|
:label="t('Search by invoice id or reference')"
|
||||||
/>
|
/>
|
||||||
</teleport-slot>
|
</teleport-slot>
|
||||||
|
<teleport-slot to="#rightPanel">
|
||||||
|
<InvoiceOutFilter data-key="InvoiceOutList" />
|
||||||
|
</teleport-slot>
|
||||||
<q-page class="q-pa-md">
|
<q-page class="q-pa-md">
|
||||||
<paginate
|
<paginate
|
||||||
data-key="InvoiceOutList"
|
data-key="InvoiceOutList"
|
||||||
|
|
|
@ -38,177 +38,105 @@ const warehouses = ref([]);
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ params, searchFn }">
|
<template #body="{ params, searchFn }">
|
||||||
<q-item>
|
<q-list dense>
|
||||||
<q-item-section>
|
<q-item>
|
||||||
<q-input
|
<q-item-section>
|
||||||
v-model="params.clientFk"
|
<q-input
|
||||||
:label="t('Customer ID')"
|
v-model="params.clientFk"
|
||||||
lazy-rules
|
:label="t('Customer ID')"
|
||||||
autofocus
|
lazy-rules
|
||||||
/>
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-input v-model="params.orderFk" :label="t('Order ID')" lazy-rules />
|
<q-input
|
||||||
</q-item-section>
|
v-model="params.orderFk"
|
||||||
</q-item>
|
:label="t('Order ID')"
|
||||||
<q-item>
|
lazy-rules
|
||||||
<q-item-section>
|
/>
|
||||||
<q-input
|
</q-item-section>
|
||||||
v-model="params.dateFrom"
|
</q-item>
|
||||||
:label="t('From')"
|
<q-item>
|
||||||
autofocus
|
<q-item-section>
|
||||||
readonly
|
<q-input v-model="params.dateFrom" :label="t('From')" readonly>
|
||||||
>
|
<template #append>
|
||||||
<template #append>
|
<q-icon name="event" class="cursor-pointer">
|
||||||
<q-icon name="event" class="cursor-pointer">
|
<q-popup-proxy
|
||||||
<q-popup-proxy
|
cover
|
||||||
cover
|
transition-show="scale"
|
||||||
transition-show="scale"
|
transition-hide="scale"
|
||||||
transition-hide="scale"
|
>
|
||||||
>
|
<q-date v-model="params.dateFrom">
|
||||||
<q-date v-model="params.dateFrom">
|
<div class="row items-center justify-end">
|
||||||
<div class="row items-center justify-end">
|
<q-btn
|
||||||
<q-btn
|
v-close-popup
|
||||||
v-close-popup
|
label="Close"
|
||||||
label="Close"
|
color="primary"
|
||||||
color="primary"
|
flat
|
||||||
flat
|
/>
|
||||||
/>
|
</div>
|
||||||
</div>
|
</q-date>
|
||||||
</q-date>
|
</q-popup-proxy>
|
||||||
</q-popup-proxy>
|
</q-icon>
|
||||||
</q-icon>
|
</template>
|
||||||
</template>
|
</q-input>
|
||||||
</q-input>
|
</q-item-section>
|
||||||
</q-item-section>
|
<q-item-section>
|
||||||
<q-item-section>
|
<q-input v-model="params.dateTo" :label="t('To')" readonly>
|
||||||
<q-input v-model="params.dateTo" :label="t('To')" autofocus readonly>
|
<template #append>
|
||||||
<template #append>
|
<q-icon name="event" class="cursor-pointer">
|
||||||
<q-icon name="event" class="cursor-pointer">
|
<q-popup-proxy
|
||||||
<q-popup-proxy
|
cover
|
||||||
cover
|
transition-show="scale"
|
||||||
transition-show="scale"
|
transition-hide="scale"
|
||||||
transition-hide="scale"
|
>
|
||||||
>
|
<q-date v-model="params.dateTo">
|
||||||
<q-date v-model="params.dateTo">
|
<div class="row items-center justify-end">
|
||||||
<div class="row items-center justify-end">
|
<q-btn
|
||||||
<q-btn
|
v-close-popup
|
||||||
v-close-popup
|
label="Close"
|
||||||
label="Close"
|
color="primary"
|
||||||
color="primary"
|
flat
|
||||||
flat
|
/>
|
||||||
/>
|
</div>
|
||||||
</div>
|
</q-date>
|
||||||
</q-date>
|
</q-popup-proxy>
|
||||||
</q-popup-proxy>
|
</q-icon>
|
||||||
</q-icon>
|
</template>
|
||||||
</template>
|
</q-input>
|
||||||
</q-input>
|
</q-item-section>
|
||||||
</q-item-section>
|
</q-item>
|
||||||
</q-item>
|
|
||||||
<q-item>
|
|
||||||
<q-item-section>
|
|
||||||
<q-select
|
|
||||||
:label="t('Salesperson')"
|
|
||||||
v-model="params.salesPersonFk"
|
|
||||||
:options="workers"
|
|
||||||
option-value="id"
|
|
||||||
option-label="name"
|
|
||||||
emit-value
|
|
||||||
map-options
|
|
||||||
use-input
|
|
||||||
:input-debounce="0"
|
|
||||||
>
|
|
||||||
<template #prepend>
|
|
||||||
<q-avatar color="orange" size="xs">
|
|
||||||
<q-img
|
|
||||||
v-if="params.salesPersonFk"
|
|
||||||
:src="`/api/Images/user/160x160/${params.salesPersonFk}/download?access_token=${token}`"
|
|
||||||
spinner-color="white"
|
|
||||||
/>
|
|
||||||
</q-avatar>
|
|
||||||
</template>
|
|
||||||
</q-select>
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
<q-item>
|
|
||||||
<q-item-section>
|
|
||||||
<q-select
|
|
||||||
:label="t('State')"
|
|
||||||
v-model="params.stateFk"
|
|
||||||
@update:model-value="searchFn()"
|
|
||||||
:options="states"
|
|
||||||
option-value="id"
|
|
||||||
option-label="name"
|
|
||||||
emit-value
|
|
||||||
map-options
|
|
||||||
/>
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
<q-item>
|
|
||||||
<q-item-section>
|
|
||||||
<q-input
|
|
||||||
v-model="params.refFk"
|
|
||||||
:label="t('Invoice Ref.')"
|
|
||||||
lazy-rules
|
|
||||||
/>
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
<q-item>
|
|
||||||
<q-item-section>
|
|
||||||
<q-checkbox
|
|
||||||
v-model="params.myTeam"
|
|
||||||
@update:model-value="searchFn()"
|
|
||||||
:label="t('My team')"
|
|
||||||
toggle-indeterminate
|
|
||||||
/>
|
|
||||||
</q-item-section>
|
|
||||||
<q-item-section>
|
|
||||||
<q-checkbox
|
|
||||||
v-model="params.pending"
|
|
||||||
@update:model-value="searchFn()"
|
|
||||||
:label="t('Pending')"
|
|
||||||
toggle-indeterminate
|
|
||||||
/>
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
<q-item>
|
|
||||||
<q-item-section>
|
|
||||||
<q-checkbox
|
|
||||||
v-model="params.hasInvoice"
|
|
||||||
@update:model-value="searchFn()"
|
|
||||||
:label="t('Invoiced')"
|
|
||||||
toggle-indeterminate
|
|
||||||
/>
|
|
||||||
</q-item-section>
|
|
||||||
<q-item-section>
|
|
||||||
<q-checkbox
|
|
||||||
v-model="params.hasRoute"
|
|
||||||
@update:model-value="searchFn()"
|
|
||||||
:label="t('Routed')"
|
|
||||||
toggle-indeterminate
|
|
||||||
/>
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
<q-item>
|
|
||||||
<q-item-section>
|
|
||||||
<q-checkbox
|
|
||||||
v-model="params.problems"
|
|
||||||
@update:model-value="searchFn()"
|
|
||||||
:label="t('With problems')"
|
|
||||||
toggle-indeterminate
|
|
||||||
/>
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
<q-separator />
|
|
||||||
<q-expansion-item :label="t('More options')" expand-separator>
|
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-select
|
<q-select
|
||||||
:label="t('Province')"
|
:label="t('Salesperson')"
|
||||||
v-model="params.provinceFk"
|
v-model="params.salesPersonFk"
|
||||||
|
:options="workers"
|
||||||
|
option-value="id"
|
||||||
|
option-label="name"
|
||||||
|
emit-value
|
||||||
|
map-options
|
||||||
|
use-input
|
||||||
|
:input-debounce="0"
|
||||||
|
>
|
||||||
|
<template #prepend>
|
||||||
|
<q-avatar color="orange" size="xs">
|
||||||
|
<q-img
|
||||||
|
v-if="params.salesPersonFk"
|
||||||
|
:src="`/api/Images/user/160x160/${params.salesPersonFk}/download?access_token=${token}`"
|
||||||
|
spinner-color="white"
|
||||||
|
/>
|
||||||
|
</q-avatar>
|
||||||
|
</template>
|
||||||
|
</q-select>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-select
|
||||||
|
:label="t('State')"
|
||||||
|
v-model="params.stateFk"
|
||||||
@update:model-value="searchFn()"
|
@update:model-value="searchFn()"
|
||||||
:options="provinces"
|
:options="states"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
option-label="name"
|
option-label="name"
|
||||||
emit-value
|
emit-value
|
||||||
|
@ -218,33 +146,105 @@ const warehouses = ref([]);
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-select
|
<q-input
|
||||||
:label="t('Agency')"
|
v-model="params.refFk"
|
||||||
v-model="params.agencyModeFk"
|
:label="t('Invoice Ref.')"
|
||||||
@update:model-value="searchFn()"
|
lazy-rules
|
||||||
:options="agencies"
|
|
||||||
option-value="id"
|
|
||||||
option-label="name"
|
|
||||||
emit-value
|
|
||||||
map-options
|
|
||||||
/>
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-select
|
<q-checkbox
|
||||||
:label="t('Warehouse')"
|
v-model="params.myTeam"
|
||||||
v-model="params.warehouseFk"
|
|
||||||
@update:model-value="searchFn()"
|
@update:model-value="searchFn()"
|
||||||
:options="warehouses"
|
:label="t('My team')"
|
||||||
option-value="id"
|
toggle-indeterminate
|
||||||
option-label="name"
|
/>
|
||||||
emit-value
|
</q-item-section>
|
||||||
map-options
|
<q-item-section>
|
||||||
|
<q-checkbox
|
||||||
|
v-model="params.pending"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
:label="t('Pending')"
|
||||||
|
toggle-indeterminate
|
||||||
/>
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
</q-expansion-item>
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-checkbox
|
||||||
|
v-model="params.hasInvoice"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
:label="t('Invoiced')"
|
||||||
|
toggle-indeterminate
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<q-checkbox
|
||||||
|
v-model="params.hasRoute"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
:label="t('Routed')"
|
||||||
|
toggle-indeterminate
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-checkbox
|
||||||
|
v-model="params.problems"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
:label="t('With problems')"
|
||||||
|
toggle-indeterminate
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-separator />
|
||||||
|
<q-expansion-item :label="t('More options')" expand-separator>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-select
|
||||||
|
:label="t('Province')"
|
||||||
|
v-model="params.provinceFk"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
:options="provinces"
|
||||||
|
option-value="id"
|
||||||
|
option-label="name"
|
||||||
|
emit-value
|
||||||
|
map-options
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-select
|
||||||
|
:label="t('Agency')"
|
||||||
|
v-model="params.agencyModeFk"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
:options="agencies"
|
||||||
|
option-value="id"
|
||||||
|
option-label="name"
|
||||||
|
emit-value
|
||||||
|
map-options
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section>
|
||||||
|
<q-select
|
||||||
|
:label="t('Warehouse')"
|
||||||
|
v-model="params.warehouseFk"
|
||||||
|
@update:model-value="searchFn()"
|
||||||
|
:options="warehouses"
|
||||||
|
option-value="id"
|
||||||
|
option-label="name"
|
||||||
|
emit-value
|
||||||
|
map-options
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
</q-expansion-item>
|
||||||
|
</q-list>
|
||||||
</template>
|
</template>
|
||||||
</VnFilterPanel>
|
</VnFilterPanel>
|
||||||
</template>
|
</template>
|
||||||
|
@ -300,24 +300,3 @@ es:
|
||||||
Yes: Si
|
Yes: Si
|
||||||
No: No
|
No: No
|
||||||
</i18n>
|
</i18n>
|
||||||
|
|
||||||
<!-- <i18n>
|
|
||||||
{
|
|
||||||
"en": {
|
|
||||||
"search": "Contains",
|
|
||||||
"clientFk": 'Customer',
|
|
||||||
"orderFk": 'Order',
|
|
||||||
"dateFrom": 'From',
|
|
||||||
"dateTo": 'To',
|
|
||||||
"salesPersonFk": "Sales Person"
|
|
||||||
},
|
|
||||||
"es": {
|
|
||||||
"search": "Contiene",
|
|
||||||
"clientFk": 'Cliente',
|
|
||||||
"orderFk": 'Pedido',
|
|
||||||
"dateFrom": 'Desde',
|
|
||||||
"dateTo": 'Hasta',
|
|
||||||
"salesPersonFk": "Comercial"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</i18n> -->
|
|
||||||
|
|
Loading…
Reference in New Issue