refactor: refs #6802 replace 'salesPerson' terminology with 'team' across multiple locales and components

This commit is contained in:
Javi Gallego 2025-01-31 12:26:20 +01:00
parent 22ae08863b
commit 71a8e72f20
45 changed files with 228 additions and 600 deletions

View File

@ -328,7 +328,6 @@ en:
active: Is active active: Is active
visible: Is visible visible: Is visible
floramondo: Is floramondo floramondo: Is floramondo
salesPersonFk: Buyer
categoryFk: Category categoryFk: Category
es: es:
@ -339,7 +338,6 @@ es:
active: Activo active: Activo
visible: Visible visible: Visible
floramondo: Floramondo floramondo: Floramondo
salesPersonFk: Comprador
categoryFk: Categoría categoryFk: Categoría
Plant: Planta natural Plant: Planta natural
Flower: Flor fresca Flower: Flor fresca

View File

@ -14,7 +14,7 @@ vi.mock('src/router/modules', () => ({
icon: 'vn:client', icon: 'vn:client',
}, },
menus: { menus: {
main: ['CustomerList', 'CustomerCreate'], main: ['CustomerList'],
card: ['CustomerBasicData'], card: ['CustomerBasicData'],
}, },
children: [ children: [
@ -30,14 +30,6 @@ vi.mock('src/router/modules', () => ({
icon: 'view_list', icon: 'view_list',
}, },
}, },
{
path: 'create',
name: 'CustomerCreate',
meta: {
title: 'createCustomer',
icon: 'vn:addperson',
},
},
], ],
}, },
], ],

View File

@ -97,7 +97,6 @@ globals:
file: File file: File
selectFile: Select a file selectFile: Select a file
copyClipboard: Copy on clipboard copyClipboard: Copy on clipboard
salesPerson: SalesPerson
send: Send send: Send
code: Code code: Code
since: Since since: Since
@ -155,6 +154,7 @@ globals:
changeState: Change state changeState: Change state
raid: 'Raid {daysInForward} days' raid: 'Raid {daysInForward} days'
isVies: Vies isVies: Vies
department: Department
pageTitles: pageTitles:
logIn: Login logIn: Login
addressEdit: Update address addressEdit: Update address
@ -336,7 +336,6 @@ globals:
subtitle: Are you sure exit without saving? subtitle: Are you sure exit without saving?
params: params:
clientFk: Client id clientFk: Client id
salesPersonFk: Sales person
warehouseFk: Warehouse warehouseFk: Warehouse
provinceFk: Province provinceFk: Province
stateFk: State stateFk: State
@ -510,7 +509,6 @@ department:
departmentRemoved: Department removed departmentRemoved: Department removed
worker: worker:
list: list:
department: Department
schedule: Schedule schedule: Schedule
newWorker: New worker newWorker: New worker
summary: summary:
@ -736,7 +734,6 @@ components:
mine: For me mine: For me
hasMinPrice: Minimum price hasMinPrice: Minimum price
# LatestBuysFilter # LatestBuysFilter
salesPersonFk: Buyer
supplierFk: Supplier supplierFk: Supplier
from: From from: From
to: To to: To

View File

@ -97,7 +97,6 @@ globals:
file: Fichero file: Fichero
selectFile: Seleccione un fichero selectFile: Seleccione un fichero
copyClipboard: Copiar en portapapeles copyClipboard: Copiar en portapapeles
salesPerson: Comercial
send: Enviar send: Enviar
code: Código code: Código
since: Desde since: Desde
@ -155,6 +154,7 @@ globals:
changeState: Cambiar estado changeState: Cambiar estado
raid: 'Redada {daysInForward} días' raid: 'Redada {daysInForward} días'
isVies: Vies isVies: Vies
department: Departamento
pageTitles: pageTitles:
logIn: Inicio de sesión logIn: Inicio de sesión
addressEdit: Modificar consignatario addressEdit: Modificar consignatario
@ -336,7 +336,6 @@ globals:
subtitle: ¿Seguro que quiere salir sin guardar? subtitle: ¿Seguro que quiere salir sin guardar?
params: params:
clientFk: Id cliente clientFk: Id cliente
salesPersonFk: Comercial
warehouseFk: Almacén warehouseFk: Almacén
provinceFk: Provincia provinceFk: Provincia
stateFk: Estado stateFk: Estado
@ -452,8 +451,6 @@ ticket:
create: create:
address: Dirección address: Dirección
order: order:
field:
salesPersonFk: Comercial
form: form:
clientFk: Cliente clientFk: Cliente
addressFk: Dirección addressFk: Dirección
@ -482,7 +479,6 @@ department:
departmentRemoved: Departamento eliminado departmentRemoved: Departamento eliminado
worker: worker:
list: list:
department: Departamento
schedule: Horario schedule: Horario
newWorker: Nuevo trabajador newWorker: Nuevo trabajador
summary: summary:
@ -707,7 +703,6 @@ components:
hasMinPrice: Precio mínimo hasMinPrice: Precio mínimo
wareHouseFk: Almacén wareHouseFk: Almacén
# LatestBuysFilter # LatestBuysFilter
salesPersonFk: Comprador
supplierFk: Proveedor supplierFk: Proveedor
visible: Visible visible: Visible
active: Activo active: Activo

View File

@ -75,11 +75,11 @@ onMounted(async () => {
</template> </template>
</VnLv> </VnLv>
<VnLv :label="t('claim.created')" :value="toDateHourMinSec(entity.created)" /> <VnLv :label="t('claim.created')" :value="toDateHourMinSec(entity.created)" />
<VnLv :label="t('claim.commercial')"> <VnLv :label="t('globals.department')">
<template #value> <template #value>
<VnUserLink <VnUserLink
:name="entity.client?.salesPersonUser?.name" :name="entity.client?.department?.name"
:worker-id="entity.client?.salesPersonFk" :worker-id="entity.client?.departmentFk"
/> />
</template> </template>
</VnLv> </VnLv>

View File

@ -14,7 +14,7 @@ export default {
relation: 'client', relation: 'client',
scope: { scope: {
include: [ include: [
{ relation: 'salesPersonUser' }, { relation: 'department' },
{ {
relation: 'claimsRatio', relation: 'claimsRatio',
scope: { scope: {

View File

@ -246,7 +246,7 @@ function claimUrl(section) {
</QChip> </QChip>
</template> </template>
</VnLv> </VnLv>
<VnLv :label="t('globals.salesPerson')"> <VnLv :label="t('customer.summary.team')">
<template #value> <template #value>
<VnUserLink <VnUserLink
:name="claim.client?.salesPersonUser?.name" :name="claim.client?.salesPersonUser?.name"

View File

@ -8,7 +8,6 @@ import FormModel from 'components/FormModel.vue';
import VnRow from 'components/ui/VnRow.vue'; import VnRow from 'components/ui/VnRow.vue';
import VnInput from 'src/components/common/VnInput.vue'; import VnInput from 'src/components/common/VnInput.vue';
import VnSelect from 'src/components/common/VnSelect.vue'; import VnSelect from 'src/components/common/VnSelect.vue';
import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
import { getDifferences, getUpdatedValues } from 'src/filters'; import { getDifferences, getUpdatedValues } from 'src/filters';
const route = useRoute(); const route = useRoute();
@ -37,7 +36,7 @@ const exprBuilder = (param, value) => {
function onBeforeSave(formData, originalData) { function onBeforeSave(formData, originalData) {
return getUpdatedValues( return getUpdatedValues(
Object.keys(getDifferences(formData, originalData)), Object.keys(getDifferences(formData, originalData)),
formData formData,
); );
} }
</script> </script>
@ -119,16 +118,11 @@ function onBeforeSave(formData, originalData) {
/> />
</VnRow> </VnRow>
<VnRow> <VnRow>
<VnSelectWorker <VnSelect
:label="t('customer.summary.salesPerson')" :label="t('globals.department')"
v-model="data.salesPersonFk" v-model="data.departmentFk"
:params="{ url="Departments"
departmentCodes: ['VT', 'shopping'], :fields="['id', 'name']"
}"
:has-avatar="true"
:rules="validate('client.salesPersonFk')"
:expr-builder="exprBuilder"
emit-value
/> />
<VnSelect <VnSelect
v-model="data.contactChannelFk" v-model="data.contactChannelFk"
@ -160,7 +154,7 @@ function onBeforeSave(formData, originalData) {
<QIcon name="info" class="cursor-pointer"> <QIcon name="info" class="cursor-pointer">
<QTooltip>{{ <QTooltip>{{
t( t(
'In case of a company succession, specify the grantor company' 'In case of a company succession, specify the grantor company',
) )
}}</QTooltip> }}</QTooltip>
</QIcon> </QIcon>

View File

@ -3,14 +3,14 @@ import { ref, computed } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { dashIfEmpty, toCurrency, toDate } from 'src/filters'; import { toCurrency, toDate } from 'src/filters';
import useCardDescription from 'src/composables/useCardDescription'; import useCardDescription from 'src/composables/useCardDescription';
import CardDescriptor from 'components/ui/CardDescriptor.vue'; import CardDescriptor from 'components/ui/CardDescriptor.vue';
import VnLv from 'src/components/ui/VnLv.vue'; import VnLv from 'src/components/ui/VnLv.vue';
import VnUserLink from 'src/components/ui/VnUserLink.vue';
import CustomerDescriptorMenu from './CustomerDescriptorMenu.vue'; import CustomerDescriptorMenu from './CustomerDescriptorMenu.vue';
import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
const customerDebt = ref(); const customerDebt = ref();
const customerCredit = ref(); const customerCredit = ref();
@ -78,14 +78,10 @@ const debtWarning = computed(() => {
:value="toCurrency(entity.debt)" :value="toCurrency(entity.debt)"
:info="t('customer.summary.riskInfo')" :info="t('customer.summary.riskInfo')"
/> />
<VnLv :label="t('customer.summary.salesPerson')"> <VnLv :label="t('globals.department')">
<template #value> <template #value>
<VnUserLink <span class="link" v-text="entity.department?.name" />
v-if="entity.salesPersonUser" <DepartmentDescriptorProxy :id="entity.department?.id" />
:name="entity.salesPersonUser.name"
:worker-id="entity.salesPersonFk"
/>
<span v-else>{{ dashIfEmpty(entity.salesPersonUser) }}</span>
</template> </template>
</VnLv> </VnLv>
<VnLv <VnLv

View File

@ -2,7 +2,6 @@
import { computed, ref } from 'vue'; import { computed, ref } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import VnUserLink from 'src/components/ui/VnUserLink.vue';
import { toCurrency, toPercentage, toDate, dashOrCurrency } from 'src/filters'; import { toCurrency, toPercentage, toDate, dashOrCurrency } from 'src/filters';
import CardSummary from 'components/ui/CardSummary.vue'; import CardSummary from 'components/ui/CardSummary.vue';
@ -13,6 +12,8 @@ import CustomerSummaryTable from 'src/pages/Customer/components/CustomerSummaryT
import VnTitle from 'src/components/common/VnTitle.vue'; import VnTitle from 'src/components/common/VnTitle.vue';
import VnRow from 'src/components/ui/VnRow.vue'; import VnRow from 'src/components/ui/VnRow.vue';
import CustomerDescriptorMenu from './CustomerDescriptorMenu.vue'; import CustomerDescriptorMenu from './CustomerDescriptorMenu.vue';
import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
const route = useRoute(); const route = useRoute();
const { t } = useI18n(); const { t } = useI18n();
const grafanaUrl = 'https://grafana.verdnatura.es'; const grafanaUrl = 'https://grafana.verdnatura.es';
@ -106,16 +107,12 @@ const sumRisk = ({ clientRisks }) => {
{{ t('globals.params.email') }} {{ t('globals.params.email') }}
<VnLinkMail email="entity.email"></VnLinkMail> </template <VnLinkMail email="entity.email"></VnLinkMail> </template
></VnLv> ></VnLv>
<VnLv <VnLv :label="t('globals.department')">
:label="t('customer.summary.salesPerson')"
:value="entity?.salesPersonUser?.name"
>
<template #value> <template #value>
<VnUserLink <span class="link" v-text="entity.department?.name" />
:name="entity.salesPersonUser?.name" <DepartmentDescriptorProxy :id="entity?.department?.id" />
:worker-id="entity.salesPersonFk" </template>
/> </template </VnLv>
></VnLv>
<VnLv <VnLv
:label="t('customer.summary.contactChannel')" :label="t('customer.summary.contactChannel')"
:value="entity?.contactChannel?.name" :value="entity?.contactChannel?.name"

View File

@ -1,146 +0,0 @@
<script setup>
import { reactive, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import FetchData from 'components/FetchData.vue';
import FormModel from 'components/FormModel.vue';
import VnRow from 'components/ui/VnRow.vue';
import VnSelect from 'src/components/common/VnSelect.vue';
import VnLocation from 'src/components/common/VnLocation.vue';
import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
const { t } = useI18n();
const initialData = reactive({
active: true,
isEqualizated: false,
});
const workersOptions = ref([]);
const businessTypesOptions = ref([]);
function handleLocation(data, location) {
const { town, code, provinceFk, countryFk } = location ?? {};
data.postcode = code;
data.city = town;
data.provinceFk = provinceFk;
data.countryFk = countryFk;
}
</script>
<template>
<FetchData
@on-fetch="(data) => (workersOptions = data)"
auto-load
url="Workers/search?departmentCodes"
/>
<FetchData
@on-fetch="(data) => (businessTypesOptions = data)"
auto-load
url="BusinessTypes"
/>
<QPage>
<VnSubToolbar />
<FormModel
:form-initial-data="initialData"
model="client"
url-create="Clients/createWithUser"
>
<template #form="{ data, validate }">
<VnRow>
<QInput :label="t('Comercial name')" v-model="data.name" />
<VnSelect
:label="t('Salesperson')"
:options="workersOptions"
hide-selected
option-label="name"
option-value="id"
v-model="data.salesPersonFk"
/>
</VnRow>
<VnRow>
<VnSelect
:label="t('Business type')"
:options="businessTypesOptions"
hide-selected
option-label="description"
option-value="code"
v-model="data.businessTypeFk"
/>
<QInput v-model="data.fi" :label="t('Tax number')" />
</VnRow>
<VnRow>
<QInput
:label="t('Business name')"
:rules="validate('client.socialName')"
v-model="data.socialName"
/>
</VnRow>
<VnRow>
<QInput
:label="t('Street')"
:rules="validate('client.street')"
v-model="data.street"
/>
</VnRow>
<VnRow>
<VnLocation
:rules="validate('Worker.postcode')"
:acls="[{ model: 'Town', props: '*', accessType: 'WRITE' }]"
v-model="data.location"
@update:model-value="(location) => handleLocation(data, location)"
>
</VnLocation>
</VnRow>
<VnRow>
<QInput v-model="data.userName" :label="t('Web user')" />
<QInput
:label="t('Email')"
:rules="validate('client.email')"
clearable
type="email"
v-model="data.email"
>
<template #append>
<QIcon name="info" class="cursor-info">
<QTooltip max-width="400px">{{
t('customer.basicData.youCanSaveMultipleEmails')
}}</QTooltip>
</QIcon>
</template>
</QInput>
</VnRow>
<QCheckbox
:label="t('Is equalizated')"
v-model="initialData.isEqualizated"
/>
</template>
</FormModel>
</QPage>
</template>
<style lang="scss" scoped>
.card {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
grid-gap: 20px;
}
</style>
<i18n>
es:
Comercial name: Nombre comercial
Salesperson: Comercial
Business type: Tipo de negocio
Tax number: NIF / CIF
Business name: Razón social
Street: Dirección fiscal
Postcode: Código postal
City: Población
Province: Provincia
Country: País
Web user: Usuario web
Email: Email
Is equalizated: Recargo de equivalencia
</i18n>

View File

@ -1,10 +1,8 @@
<script setup> <script setup>
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import VnFilterPanel from 'src/components/ui/VnFilterPanel.vue'; import VnFilterPanel from 'src/components/ui/VnFilterPanel.vue';
import VnSelect from 'components/common/VnSelect.vue'; import VnSelect from 'components/common/VnSelect.vue';
import VnInput from 'src/components/common/VnInput.vue'; import VnInput from 'src/components/common/VnInput.vue';
import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
const { t } = useI18n(); const { t } = useI18n();
defineProps({ defineProps({
@ -70,22 +68,15 @@ const exprBuilder = (param, value) => {
</QItem> </QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection> <QItemSection>
<VnSelectWorker <VnSelect
:label="t('Salesperson')"
v-model="params.salesPersonFk"
:params="{
departmentCodes: ['VT'],
}"
:expr-builder="exprBuilder"
@update:model-value="searchFn()"
emit-value
map-options
use-input
hide-selected
dense
outlined outlined
dense
rounded rounded
:input-debounce="0" :label="t('globals.params.departmentFk')"
v-model="params.departmentFk"
option-value="id"
option-label="name"
url="Departments"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
@ -168,7 +159,6 @@ en:
params: params:
search: Contains search: Contains
fi: FI fi: FI
salesPersonFk: Salesperson
provinceFk: Province provinceFk: Province
isActive: Is active isActive: Is active
city: City city: City
@ -195,7 +185,6 @@ es:
sageTaxTypeFk: Tipo de impuesto Sage sageTaxTypeFk: Tipo de impuesto Sage
sageTransactionTypeFk: Tipo de impuesto Sage sageTransactionTypeFk: Tipo de impuesto Sage
payMethodFk: Forma de pago payMethodFk: Forma de pago
salesPersonFk: Comercial
provinceFk: Provincia provinceFk: Provincia
city: Ciudad city: Ciudad
phone: Teléfono phone: Teléfono
@ -205,7 +194,6 @@ es:
name: Nombre name: Nombre
postcode: CP postcode: CP
FI: NIF FI: NIF
Salesperson: Comercial
Province: Provincia Province: Provincia
City: Ciudad City: Ciudad
Phone: Teléfono Phone: Teléfono

View File

@ -10,7 +10,6 @@ import CustomerFilter from './CustomerFilter.vue';
import VnTable from 'components/VnTable/VnTable.vue'; import VnTable from 'components/VnTable/VnTable.vue';
import VnLocation from 'src/components/common/VnLocation.vue'; import VnLocation from 'src/components/common/VnLocation.vue';
import VnLinkPhone from 'src/components/ui/VnLinkPhone.vue'; import VnLinkPhone from 'src/components/ui/VnLinkPhone.vue';
import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
import VnSection from 'src/components/common/VnSection.vue'; import VnSection from 'src/components/common/VnSection.vue';
const { t } = useI18n(); const { t } = useI18n();
@ -73,20 +72,17 @@ const columns = computed(() => [
}, },
{ {
align: 'left', align: 'left',
name: 'salesPersonFk', name: 'departmentFk',
label: t('customer.extendedList.tableVisibleColumns.salesPersonFk'), label: t('customer.summary.team'),
component: 'select', component: 'select',
attrs: { attrs: {
url: 'Workers/activeWithInheritedRole', url: 'Departments',
fields: ['id', 'name'],
where: { role: 'salesPerson' },
optionFilter: 'firstName',
}, },
create: false, create: true,
columnField: { columnField: {
component: null, component: null,
}, },
format: (row, dashIfEmpty) => dashIfEmpty(row.salesPerson), format: (row, dashIfEmpty) => dashIfEmpty(row.departmentName),
}, },
{ {
align: 'left', align: 'left',
@ -145,6 +141,9 @@ const columns = computed(() => [
inWhere: true, inWhere: true,
}, },
columnClass: 'expand', columnClass: 'expand',
attrs: {
uppercase: true,
},
}, },
{ {
align: 'left', align: 'left',
@ -434,36 +433,6 @@ function handleLocation(data, location) {
redirect="customer" redirect="customer"
> >
<template #more-create-dialog="{ data }"> <template #more-create-dialog="{ data }">
<VnSelectWorker
:label="t('customer.summary.salesPerson')"
v-model="data.salesPersonFk"
:params="{
departmentCodes: ['VT', 'shopping'],
}"
:has-avatar="true"
:id-value="data.salesPersonFk"
emit-value
auto-load
>
<template #prepend>
<VnAvatar
:worker-id="data.salesPersonFk"
color="primary"
:title="title"
/>
</template>
<template #option="scope">
<QItem v-bind="scope.itemProps">
<QItemSection>
<QItemLabel>{{ scope.opt?.name }}</QItemLabel>
<QItemLabel caption
>{{ scope.opt?.nickname }},
{{ scope.opt?.code }}</QItemLabel
>
</QItemSection>
</QItem>
</template>
</VnSelectWorker>
<VnLocation <VnLocation
:acls="[{ model: 'Province', props: '*', accessType: 'WRITE' }]" :acls="[{ model: 'Province', props: '*', accessType: 'WRITE' }]"
v-model="data.location" v-model="data.location"

View File

@ -37,23 +37,6 @@ const columns = computed(() => [
name: 'isWorker', name: 'isWorker',
label: t('Is worker'), label: t('Is worker'),
}, },
{
align: 'left',
name: 'salesPersonFk',
label: t('Salesperson'),
columnFilter: {
component: 'select',
attrs: {
url: 'Workers/activeWithInheritedRole',
fields: ['id', 'name'],
where: { role: 'salesPerson' },
useLike: false,
optionValue: 'id',
optionLabel: 'name',
optionFilter: 'firstName',
},
},
},
{ {
align: 'left', align: 'left',
name: 'departmentFk', name: 'departmentFk',
@ -167,7 +150,6 @@ const viewAddObservation = (rowsSelected) => {
function exprBuilder(param, value) { function exprBuilder(param, value) {
switch (param) { switch (param) {
case 'salesPersonFk':
case 'creditInsurance': case 'creditInsurance':
case 'countryFk': case 'countryFk':
return { [`c.${param}`]: value }; return { [`c.${param}`]: value };
@ -241,12 +223,6 @@ function exprBuilder(param, value) {
<template #column-observation="{ row }"> <template #column-observation="{ row }">
<VnInput type="textarea" v-model="row.observation" readonly dense rows="2" /> <VnInput type="textarea" v-model="row.observation" readonly dense rows="2" />
</template> </template>
<template #column-salesPersonFk="{ row }">
<span class="link" @click.stop>
{{ row.salesPersonName }}
<WorkerDescriptorProxy :id="row.salesPersonFk" />
</span>
</template>
<template #column-departmentFk="{ row }"> <template #column-departmentFk="{ row }">
<span class="link" @click.stop> <span class="link" @click.stop>
{{ row.departmentName }} {{ row.departmentName }}
@ -265,8 +241,6 @@ function exprBuilder(param, value) {
es: es:
Add observation: Añadir observación Add observation: Añadir observación
Client: Cliente Client: Cliente
Is worker: Es trabajador
Salesperson: Comercial
Department: Departamento Department: Departamento
Country: País Country: País
P. Method: F. Pago P. Method: F. Pago

View File

@ -15,19 +15,12 @@ const props = defineProps({
}, },
}); });
const salespersons = ref();
const countries = ref(); const countries = ref();
const authors = ref(); const authors = ref();
const departments = ref(); const departments = ref();
</script> </script>
<template> <template>
<FetchData
:filter="{ where: { role: 'salesPerson' } }"
@on-fetch="(data) => (salespersons = data)"
auto-load
url="Workers/activeWithInheritedRole"
/>
<FetchData @on-fetch="(data) => (countries = data)" auto-load url="Countries" /> <FetchData @on-fetch="(data) => (countries = data)" auto-load url="Countries" />
<FetchData <FetchData
@on-fetch="(data) => (authors = data)" @on-fetch="(data) => (authors = data)"
@ -62,29 +55,6 @@ const departments = ref();
@update:model-value="searchFn()" @update:model-value="searchFn()"
/> />
</QItem> </QItem>
<QItem class="q-mb-sm">
<QItemSection v-if="salespersons">
<VnSelect
:input-debounce="0"
:label="t('Salesperson')"
:options="salespersons"
dense
emit-value
hide-selected
map-options
option-label="name"
option-value="id"
outlined
rounded
use-input
v-model="params.salesPersonFk"
@update:model-value="searchFn()"
/>
</QItemSection>
<QItemSection v-else>
<QSkeleton class="full-width" type="QInput" />
</QItemSection>
</QItem>
<QItem class="q-mb-sm"> <QItem class="q-mb-sm">
<QItemSection v-if="departments"> <QItemSection v-if="departments">
<VnSelect <VnSelect
@ -219,7 +189,6 @@ const departments = ref();
en: en:
params: params:
clientFk: Client clientFk: Client
salesPersonFk: Salesperson
countryFk: Country countryFk: Country
paymentMethod: P. Method paymentMethod: P. Method
balance: Balance D. balance: Balance D.
@ -230,7 +199,6 @@ en:
es: es:
params: params:
clientFk: Cliente clientFk: Cliente
salesPersonFk: Comercial
countryFk: País countryFk: País
paymentMethod: F. Pago paymentMethod: F. Pago
balance: Saldo V. balance: Saldo V.
@ -239,7 +207,6 @@ es:
credit: Crédito A. credit: Crédito A.
defaulterSinced: Desde defaulterSinced: Desde
Client: Cliente Client: Cliente
Salesperson: Comercial
Departments: Departamentos Departments: Departamentos
Country: País Country: País
P. Method: F. Pago P. Method: F. Pago

View File

@ -69,17 +69,16 @@ const columns = computed(() => [
}, },
{ {
align: 'left', align: 'left',
label: t('customer.extendedList.tableVisibleColumns.salesPersonFk'), name: 'departmentFk',
name: 'salesPersonFk', label: t('customer.summary.team'),
component: 'select', component: 'select',
attrs: { attrs: {
url: 'Workers/activeWithInheritedRole', url: 'Departments',
fields: ['id', 'name'],
where: { role: 'salesPerson' },
optionFilter: 'firstName',
useLike: false,
}, },
visible: false, columnField: {
component: null,
},
format: (row, dashIfEmpty) => dashIfEmpty(row.departmentName),
}, },
]); ]);
</script> </script>
@ -96,7 +95,7 @@ const columns = computed(() => [
</VnSubToolbar> </VnSubToolbar>
<VnTable <VnTable
:data-key="dataKey" :data-key="dataKey"
url="Clients" url="Clients/filter"
:table="{ :table="{
'row-key': 'id', 'row-key': 'id',
selection: 'multiple', selection: 'multiple',
@ -127,7 +126,6 @@ const columns = computed(() => [
es: es:
Identifier: Identificador Identifier: Identificador
Social name: Razón social Social name: Razón social
Salesperson: Comercial
Phone: Teléfono Phone: Teléfono
City: Población City: Población
Email: Email Email: Email

View File

@ -20,7 +20,7 @@ customer:
name: Name name: Name
contact: Contact contact: Contact
mobile: Mobile mobile: Mobile
salesPerson: Sales person team: Team
contactChannel: Contact channel contactChannel: Contact channel
socialName: Social name socialName: Social name
fiscalId: Fiscal ID fiscalId: Fiscal ID
@ -78,7 +78,6 @@ customer:
id: Identifier id: Identifier
socialName: Social name socialName: Social name
fi: Tax number fi: Tax number
salesPersonFk: Salesperson
creditInsurance: Credit insurance creditInsurance: Credit insurance
phone: Phone phone: Phone
street: Street street: Street

View File

@ -20,7 +20,7 @@ customer:
name: Nombre name: Nombre
contact: Contacto contact: Contacto
mobile: Móvil mobile: Móvil
salesPerson: Comercial team: Equipo
contactChannel: Canal de contacto contactChannel: Canal de contacto
socialName: Razón social socialName: Razón social
fiscalId: NIF/CIF fiscalId: NIF/CIF
@ -78,7 +78,6 @@ customer:
id: Identificador id: Identificador
socialName: Razón social socialName: Razón social
fi: NIF / CIF fi: NIF / CIF
salesPersonFk: Comercial
creditInsurance: Crédito asegurado creditInsurance: Crédito asegurado
phone: Teléfono phone: Teléfono
street: Dirección fiscal street: Dirección fiscal

View File

@ -25,9 +25,8 @@ const tagValues = ref([]);
<template> <template>
<FetchData <FetchData
url="TicketRequests/getItemTypeWorker" url="TicketRequests/getItemTypeWorker"
limit="30"
auto-load auto-load
:filter="{ fields: ['id', 'nickname'], order: 'nickname ASC', limit: 30 }" :filter="{ fields: ['id', 'nickname'], order: 'nickname ASC' }"
@on-fetch="(data) => (itemTypeWorkersOptions = data)" @on-fetch="(data) => (itemTypeWorkersOptions = data)"
/> />
<ItemsFilterPanel :data-key="dataKey" :custom-tags="['tags']"> <ItemsFilterPanel :data-key="dataKey" :custom-tags="['tags']">
@ -35,8 +34,8 @@ const tagValues = ref([]);
<QItem class="q-my-md"> <QItem class="q-my-md">
<QItemSection> <QItemSection>
<VnSelect <VnSelect
:label="t('components.itemsFilterPanel.salesPersonFk')" :label="t('components.itemsFilterPanel.buyerFk')"
v-model="params.salesPersonFk" v-model="params.buyerFk"
:options="itemTypeWorkersOptions" :options="itemTypeWorkersOptions"
option-value="id" option-value="id"
option-label="nickname" option-label="nickname"

View File

@ -110,18 +110,16 @@ const columns = computed(() => [
}, },
{ {
align: 'left', align: 'left',
label: t('customer.extendedList.tableVisibleColumns.salesPersonFk'), name: 'departmentFk',
name: 'workerName', label: t('customer.summary.team'),
component: 'select', component: 'select',
attrs: { attrs: {
url: 'Workers/activeWithInheritedRole', url: 'Departments',
fields: ['id', 'name'],
where: { role: 'salesPerson' },
}, },
columnField: { columnField: {
component: null, component: null,
}, },
format: (row, dashIfEmpty) => dashIfEmpty(row.workerName), format: (row, dashIfEmpty) => dashIfEmpty(row.departmentName),
}, },
]); ]);
@ -142,7 +140,7 @@ const downloadCSV = async () => {
await invoiceOutGlobalStore.getNegativeBasesCsv( await invoiceOutGlobalStore.getNegativeBasesCsv(
userParams.from, userParams.from,
userParams.to, userParams.to,
filterParams filterParams,
); );
}; };
</script> </script>

View File

@ -31,7 +31,7 @@ function exprBuilder(param, value) {
switch (param) { switch (param) {
case 'clientFk': case 'clientFk':
return { [`c.id`]: value }; return { [`c.id`]: value };
case 'salesPersonFk': case 'departmentFk':
return { [`c.${param}`]: value }; return { [`c.${param}`]: value };
} }
} }
@ -62,25 +62,17 @@ const columns = computed(() => [
columnFilter: false, columnFilter: false,
}, },
{ {
label: t('salesClientsTable.salesPerson'),
name: 'salesPersonFk',
field: 'salesPerson',
align: 'left', align: 'left',
name: 'departmentFk',
label: t('customer.summary.team'),
component: 'select',
attrs: {
url: 'Departments',
},
columnField: { columnField: {
component: null, component: null,
}, },
optionFilter: 'firstName', format: (row, dashIfEmpty) => dashIfEmpty(row.departmentName),
columnFilter: {
component: 'select',
attrs: {
url: 'Workers/activeWithInheritedRole',
fields: ['id', 'name'],
sortBy: 'nickname ASC',
where: { role: 'salesPerson' },
useLike: false,
},
},
columnClass: 'no-padding',
}, },
{ {
label: t('salesClientsTable.client'), label: t('salesClientsTable.client'),
@ -128,9 +120,9 @@ const columns = computed(() => [
<VnInputDate v-model="to" :label="$t('globals.to')" dense /> <VnInputDate v-model="to" :label="$t('globals.to')" dense />
</VnRow> </VnRow>
</template> </template>
<template #column-salesPersonFk="{ row }"> <template #column-departmentFk="{ row }">
<span class="link" :title="row.salesPerson" v-text="row.salesPerson" /> <span class="link" :title="row.department" v-text="row.department" />
<WorkerDescriptorProxy :id="row.salesPersonFk" dense /> <WorkerDescriptorProxy :id="row.departmentFk" dense />
</template> </template>
<template #column-clientFk="{ row }"> <template #column-clientFk="{ row }">
<span class="link" :title="row.clientName" v-text="row.clientName" /> <span class="link" :title="row.clientName" v-text="row.clientName" />

View File

@ -1,9 +1,9 @@
<script setup> <script setup>
import { ref, computed } from 'vue'; import { ref, computed } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue'; import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue';
import VnTable from 'components/VnTable/VnTable.vue'; import VnTable from 'components/VnTable/VnTable.vue';
import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
import { toDateFormat, toDateTimeFormat } from 'src/filters/date.js'; import { toDateFormat, toDateTimeFormat } from 'src/filters/date.js';
import { toCurrency } from 'src/filters'; import { toCurrency } from 'src/filters';
@ -20,8 +20,8 @@ function exprBuilder(param, value) {
switch (param) { switch (param) {
case 'clientFk': case 'clientFk':
return { [`c.id`]: value }; return { [`c.id`]: value };
case 'salesPersonFk': case 'departmentFk':
return { [`c.salesPersonFk`]: value }; return { [`c.departmentFk`]: value };
} }
} }
@ -63,20 +63,18 @@ const columns = computed(() => [
columnFilter: false, columnFilter: false,
}, },
{ {
label: t('salesClientsTable.salesPerson'),
name: 'salesPersonFk',
align: 'left', align: 'left',
optionFilter: 'firstName', name: 'departmentFk',
columnFilter: { label: t('customer.summary.team'),
component: 'select', component: 'select',
attrs: { attrs: {
url: 'Workers/activeWithInheritedRole', url: 'Departments',
fields: ['id', 'name'],
sortBy: 'nickname ASC',
where: { role: 'salesPerson' },
useLike: false,
}, },
create: true,
columnField: {
component: null,
}, },
format: (row, dashIfEmpty) => dashIfEmpty(row.departmentName),
}, },
{ {
label: t('salesOrdersTable.import'), label: t('salesOrdersTable.import'),
@ -157,7 +155,7 @@ const openTab = (id) =>
openConfirmationModal( openConfirmationModal(
$t('globals.deleteConfirmTitle'), $t('globals.deleteConfirmTitle'),
$t('salesOrdersTable.deleteConfirmMessage'), $t('salesOrdersTable.deleteConfirmMessage'),
removeOrders removeOrders,
) )
" "
> >
@ -184,11 +182,10 @@ const openTab = (id) =>
<CustomerDescriptorProxy :id="row.clientFk" /> <CustomerDescriptorProxy :id="row.clientFk" />
</QTd> </QTd>
</template> </template>
<template #column-departmentFk="{ row }">
<template #column-salesPersonFk="{ row }">
<QTd @click.stop> <QTd @click.stop>
<span class="link" v-text="row.salesPerson" /> <span class="link" v-text="row.departmentName" />
<WorkerDescriptorProxy :id="row.salesPersonFk" dense /> <DepartmentDescriptorProxy :id="row.departmentFk" dense />
</QTd> </QTd>
</template> </template>
</VnTable> </VnTable>

View File

@ -9,7 +9,6 @@ import VnInput from 'src/components/common/VnInput.vue';
import VnInputNumber from 'src/components/common/VnInputNumber.vue'; import VnInputNumber from 'src/components/common/VnInputNumber.vue';
import FetchData from 'src/components/FetchData.vue'; import FetchData from 'src/components/FetchData.vue';
import { dateRange } from 'src/filters'; import { dateRange } from 'src/filters';
import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
defineProps({ dataKey: { type: String, required: true } }); defineProps({ dataKey: { type: String, required: true } });
const { t, te } = useI18n(); const { t, te } = useI18n();
@ -113,16 +112,16 @@ const getLocale = (label) => {
</QItem> </QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnSelectWorker <VnSelect
outlined outlined
dense dense
rounded rounded
:label="t('globals.params.salesPersonFk')" :label="t('globals.params.departmentFk')"
v-model="params.salesPersonFk" v-model="params.departmentFk"
:params="{ departmentCodes: ['VT'] }" option-value="id"
:no-one="true" option-label="name"
> url="Departments"
</VnSelectWorker> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem> <QItem>

View File

@ -2,7 +2,7 @@
import { ref, computed, onMounted } from 'vue'; import { ref, computed, onMounted } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import FetchData from 'components/FetchData.vue'; import FetchData from 'components/FetchData.vue';
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue'; import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue'; import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue';
import TicketDescriptorProxy from 'src/pages/Ticket/Card/TicketDescriptorProxy.vue'; import TicketDescriptorProxy from 'src/pages/Ticket/Card/TicketDescriptorProxy.vue';
import InvoiceOutDescriptorProxy from 'src/pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue'; import InvoiceOutDescriptorProxy from 'src/pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue';
@ -48,8 +48,8 @@ function exprBuilder(param, value) {
switch (param) { switch (param) {
case 'stateFk': case 'stateFk':
return { 'ts.stateFk': value }; return { 'ts.stateFk': value };
case 'salesPersonFk': case 'departmentFk':
return { 'c.salesPersonFk': !value ? null : value }; return { 'c.departmentFk': !value ? null : value };
case 'provinceFk': case 'provinceFk':
return { 'a.provinceFk': value }; return { 'a.provinceFk': value };
case 'theoreticalHour': case 'theoreticalHour':
@ -106,19 +106,18 @@ const columns = computed(() => [
}, },
}, },
{ {
label: t('salesClientsTable.salesPerson'),
name: 'salesPersonFk',
field: 'userName',
align: 'left', align: 'left',
columnFilter: { name: 'departmentFk',
label: t('customer.summary.team'),
component: 'select', component: 'select',
attrs: { attrs: {
url: 'Workers/search?departmentCodes=["VT"]', url: 'Departments',
fields: ['id', 'name', 'nickname', 'code'],
sortBy: 'nickname ASC',
optionLabel: 'nickname',
}, },
create: true,
columnField: {
component: null,
}, },
format: (row, dashIfEmpty) => dashIfEmpty(row.departmentName),
}, },
{ {
label: t('salesClientsTable.date'), label: t('salesClientsTable.date'),
@ -435,10 +434,10 @@ const openTab = (id) =>
<CustomerDescriptorProxy :id="row.clientFk" /> <CustomerDescriptorProxy :id="row.clientFk" />
</div> </div>
</template> </template>
<template #column-salesPersonFk="{ row }"> <template #column-departmentFk="{ row }">
<div @click.stop :title="row.userName"> <div @click.stop :title="row.departmentName">
<span class="link" v-text="dashIfEmpty(row.userName)" /> <span class="link" v-text="dashIfEmpty(row.departmentName)" />
<WorkerDescriptorProxy :id="row.salesPersonFk" /> <DepartmentDescriptorProxy :id="row.departmentFk" />
</div> </div>
</template> </template>
<template #column-shippedDate="{ row }"> <template #column-shippedDate="{ row }">

View File

@ -7,7 +7,6 @@ salesClientsTable:
to: To to: To
date: Date date: Date
hour: Hour hour: Hour
salesPerson: Salesperson
client: Client client: Client
salesOrdersTable: salesOrdersTable:
delete: Delete delete: Delete

View File

@ -7,7 +7,6 @@ salesClientsTable:
to: Hasta to: Hasta
date: Fecha date: Fecha
hour: Hora hour: Hora
salesPerson: Comercial
client: Cliente client: Cliente
salesOrdersTable: salesOrdersTable:
delete: Eliminar delete: Eliminar

View File

@ -65,17 +65,7 @@ const orderFilter = {
{ {
relation: 'client', relation: 'client',
scope: { scope: {
fields: [ fields: ['name', 'isActive', 'isFreezed', 'isTaxDataChecked'],
'salesPersonFk',
'name',
'isActive',
'isFreezed',
'isTaxDataChecked',
],
include: {
relation: 'salesPersonUser',
scope: { fields: ['id', 'name'] },
},
}, },
}, },
], ],
@ -169,7 +159,7 @@ const onClientChange = async (clientId) => {
!data.isConfirmed && !data.isConfirmed &&
agencyList?.length && agencyList?.length &&
agencyList.some( agencyList.some(
(agency) => agency.agencyModeFk === data.agency_id (agency) => agency.agencyModeFk === data.agency_id,
) )
? data.agencyModeFk ? data.agencyModeFk
: null : null

View File

@ -9,7 +9,7 @@ import useCardDescription from 'src/composables/useCardDescription';
import CardDescriptor from 'components/ui/CardDescriptor.vue'; import CardDescriptor from 'components/ui/CardDescriptor.vue';
import VnLv from 'src/components/ui/VnLv.vue'; import VnLv from 'src/components/ui/VnLv.vue';
import FetchData from 'components/FetchData.vue'; import FetchData from 'components/FetchData.vue';
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue'; import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
const DEFAULT_ITEMS = 0; const DEFAULT_ITEMS = 0;
@ -43,14 +43,14 @@ const filter = {
relation: 'client', relation: 'client',
scope: { scope: {
fields: [ fields: [
'salesPersonFk', 'departmentFk',
'name', 'name',
'isActive', 'isActive',
'isFreezed', 'isFreezed',
'isTaxDataChecked', 'isTaxDataChecked',
], ],
include: { include: {
relation: 'salesPersonUser', relation: 'department',
scope: { fields: ['id', 'name'] }, scope: { fields: ['id', 'name'] },
}, },
}, },
@ -98,11 +98,11 @@ const total = ref(0);
:label="t('globals.state')" :label="t('globals.state')"
:value="getConfirmationValue(entity.isConfirmed)" :value="getConfirmationValue(entity.isConfirmed)"
/> />
<VnLv :label="t('order.field.salesPersonFk')"> <VnLv :label="t('customer.summary.team')">
<template #value> <template #value>
<span class="link"> <span class="link">
{{ entity?.client?.salesPersonUser?.name || '-' }} {{ entity?.client?.department?.name || '-' }}
<WorkerDescriptorProxy :id="entity?.client?.salesPersonFk" /> <DepartmentDescriptorProxy :id="entity?.client?.departmentFk" />
</span> </span>
</template> </template>
</VnLv> </VnLv>

View File

@ -6,7 +6,6 @@ import VnFilterPanel from 'src/components/ui/VnFilterPanel.vue';
import VnSelect from 'components/common/VnSelect.vue'; import VnSelect from 'components/common/VnSelect.vue';
import VnInputDate from 'components/common/VnInputDate.vue'; import VnInputDate from 'components/common/VnInputDate.vue';
import VnInput from 'components/common/VnInput.vue'; import VnInput from 'components/common/VnInput.vue';
import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
const { t } = useI18n(); const { t } = useI18n();
const props = defineProps({ const props = defineProps({
@ -62,15 +61,15 @@ const sourceList = ref([]);
outlined outlined
rounded rounded
/> />
<VnSelectWorker <VnSelect
:label="t('globals.salesPerson')"
v-model="params.workerFk"
:params="{
departmentCodes: ['VT'],
}"
dense
outlined outlined
dense
rounded rounded
:label="t('globals.params.departmentFk')"
v-model="params.departmentFk"
option-value="id"
option-label="name"
url="Departments"
/> />
<VnInputDate <VnInputDate
v-model="params.from" v-model="params.from"
@ -125,7 +124,6 @@ en:
search: Includes search: Includes
clientFk: Client clientFk: Client
agencyModeFk: Agency agencyModeFk: Agency
salesPersonFk: Sales Person
from: From from: From
to: To to: To
orderFk: Order orderFk: Order
@ -136,7 +134,6 @@ en:
showEmpty: Show Empty showEmpty: Show Empty
customerId: Customer ID customerId: Customer ID
agency: Agency agency: Agency
salesPerson: Sales Person
fromLanded: From Landed fromLanded: From Landed
toLanded: To Landed toLanded: To Landed
orderId: Order ID orderId: Order ID
@ -149,7 +146,6 @@ es:
search: Búsqueda search: Búsqueda
clientFk: Cliente clientFk: Cliente
agencyModeFk: Agencia agencyModeFk: Agencia
salesPersonFk: Comercial
from: Desde from: Desde
to: Hasta to: Hasta
orderFk: Cesta orderFk: Cesta
@ -160,7 +156,6 @@ es:
showEmpty: Mostrar vacías showEmpty: Mostrar vacías
customerId: ID Cliente customerId: ID Cliente
agency: Agencia agency: Agencia
salesPerson: Comercial
fromLanded: Desde F. entrega fromLanded: Desde F. entrega
toLanded: Hasta F. entrega toLanded: Hasta F. entrega
orderId: ID Cesta orderId: ID Cesta

View File

@ -10,12 +10,12 @@ import axios from 'axios';
import OrderSummary from 'pages/Order/Card/OrderSummary.vue'; import OrderSummary from 'pages/Order/Card/OrderSummary.vue';
import OrderFilter from './Card/OrderFilter.vue'; import OrderFilter from './Card/OrderFilter.vue';
import CustomerDescriptorProxy from '../Customer/Card/CustomerDescriptorProxy.vue'; import CustomerDescriptorProxy from '../Customer/Card/CustomerDescriptorProxy.vue';
import WorkerDescriptorProxy from '../Worker/Card/WorkerDescriptorProxy.vue';
import VnTable from 'src/components/VnTable/VnTable.vue'; import VnTable from 'src/components/VnTable/VnTable.vue';
import VnInputDate from 'src/components/common/VnInputDate.vue'; import VnInputDate from 'src/components/common/VnInputDate.vue';
import VnSelect from 'src/components/common/VnSelect.vue'; import VnSelect from 'src/components/common/VnSelect.vue';
import VnSection from 'src/components/common/VnSection.vue'; import VnSection from 'src/components/common/VnSection.vue';
import DepartmentDescriptorProxy from '../Department/Card/DepartmentDescriptorProxy.vue';
const { t } = useI18n(); const { t } = useI18n();
const { viewSummary } = useSummaryDialog(); const { viewSummary } = useSummaryDialog();
@ -53,22 +53,17 @@ const columns = computed(() => [
}, },
{ {
align: 'left', align: 'left',
name: 'salesPersonFk', name: 'departmentFk',
label: t('module.salesPerson'), label: t('customer.summary.team'),
columnFilter: {
component: 'select', component: 'select',
inWhere: true,
attrs: { attrs: {
url: 'Workers/activeWithInheritedRole', url: 'Departments',
fields: ['id', 'name'],
where: { role: 'salesPerson' },
useLike: false,
optionValue: 'id',
optionLabel: 'name',
optionFilter: 'firstName',
}, },
create: true,
columnField: {
component: null,
}, },
format: (row) => row?.name, format: (row, dashIfEmpty) => dashIfEmpty(row.departmentName),
}, },
{ {
align: 'left', align: 'left',
@ -153,7 +148,7 @@ onMounted(() => {
async function fetchClientAddress(id, formData = {}) { async function fetchClientAddress(id, formData = {}) {
const { data } = await axios.get( const { data } = await axios.get(
`Clients/${id}/addresses?filter[order]=isActive DESC` `Clients/${id}/addresses?filter[order]=isActive DESC`,
); );
addressOptions.value = data; addressOptions.value = data;
formData.addressId = data.defaultAddressFk; formData.addressId = data.defaultAddressFk;
@ -220,10 +215,10 @@ const getDateColor = (date) => {
<CustomerDescriptorProxy :id="row?.clientFk" /> <CustomerDescriptorProxy :id="row?.clientFk" />
</span> </span>
</template> </template>
<template #column-salesPersonFk="{ row }"> <template #column-departmentFk="{ row }">
<span class="link" @click.stop> <span class="link" @click.stop>
{{ row?.name }} {{ row?.departmentName }}
<WorkerDescriptorProxy :id="row?.salesPersonFk" /> <DepartmentDescriptorProxy :id="row?.departmentFk" />
</span> </span>
</template> </template>
<template #column-landed="{ row }"> <template #column-landed="{ row }">

View File

@ -8,7 +8,6 @@ module:
hour: Hour hour: Hour
agency: Agency agency: Agency
total: Total total: Total
salesPerson: Sales Person
address: Address address: Address
cerateOrder: Create order cerateOrder: Create order
lines: lines:
@ -22,8 +21,6 @@ lines:
params: params:
tagGroups: Tags tagGroups: Tags
order: order:
field:
salesPersonFk: Sales Person
form: form:
clientFk: Client clientFk: Client
addressFk: Address addressFk: Address

View File

@ -8,7 +8,6 @@ module:
hour: Hora hour: Hora
agency: Agencia agency: Agencia
total: Total total: Total
salesPerson: Comercial
address: Dirección address: Dirección
cerateOrder: Crear cesta cerateOrder: Crear cesta
lines: lines:
@ -22,8 +21,6 @@ lines:
params: params:
tagGroups: Tags tagGroups: Tags
order: order:
field:
salesPersonFk: Comercial
form: form:
clientFk: Cliente clientFk: Cliente
addressFk: Dirección addressFk: Dirección

View File

@ -29,7 +29,6 @@ const ticketFilter = {
relation: 'client', relation: 'client',
scope: { scope: {
fields: [ fields: [
'salesPersonFk',
'name', 'name',
'isActive', 'isActive',
'isFreezed', 'isFreezed',
@ -40,10 +39,6 @@ const ticketFilter = {
'mobile', 'mobile',
'hasElectronicInvoice', 'hasElectronicInvoice',
], ],
include: {
relation: 'salesPersonUser',
scope: { fields: ['id', 'name'] },
},
}, },
}, },
{ relation: 'invoiceOut' }, { relation: 'invoiceOut' },
@ -80,7 +75,7 @@ const getPriceDifference = async () => {
}; };
const { data } = await axios.post( const { data } = await axios.post(
`tickets/${formData.value.id}/priceDifference`, `tickets/${formData.value.id}/priceDifference`,
params params,
); );
formData.value.sale = data; formData.value.sale = data;
}; };
@ -107,7 +102,7 @@ const submit = async () => {
const { data } = await axios.post( const { data } = await axios.post(
`tickets/${formData.value.id}/componentUpdate`, `tickets/${formData.value.id}/componentUpdate`,
params params,
); );
if (!data) return; if (!data) return;
@ -134,7 +129,7 @@ const onNextStep = async () => {
openConfirmationModal( openConfirmationModal(
t('basicData.negativesConfirmTitle'), t('basicData.negativesConfirmTitle'),
t('basicData.negativesConfirmMessage'), t('basicData.negativesConfirmMessage'),
submitWithNegatives submitWithNegatives,
); );
else submit(); else submit();
} }

View File

@ -3,11 +3,12 @@ import { ref, computed } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import CustomerDescriptorProxy from 'pages/Customer/Card/CustomerDescriptorProxy.vue'; import CustomerDescriptorProxy from 'pages/Customer/Card/CustomerDescriptorProxy.vue';
import DepartmentDescriptorProxy from 'pages/Department/Card/DepartmentDescriptorProxy.vue';
import CardDescriptor from 'components/ui/CardDescriptor.vue'; import CardDescriptor from 'components/ui/CardDescriptor.vue';
import TicketDescriptorMenu from './TicketDescriptorMenu.vue'; import TicketDescriptorMenu from './TicketDescriptorMenu.vue';
import VnLv from 'src/components/ui/VnLv.vue'; import VnLv from 'src/components/ui/VnLv.vue';
import useCardDescription from 'src/composables/useCardDescription'; import useCardDescription from 'src/composables/useCardDescription';
import VnUserLink from 'src/components/ui/VnUserLink.vue';
import { toDateTimeFormat } from 'src/filters/date'; import { toDateTimeFormat } from 'src/filters/date';
const $props = defineProps({ const $props = defineProps({
@ -43,7 +44,7 @@ const filter = {
fields: [ fields: [
'id', 'id',
'name', 'name',
'salesPersonFk', 'departmentFk',
'phone', 'phone',
'mobile', 'mobile',
'email', 'email',
@ -59,7 +60,7 @@ const filter = {
fields: ['id', 'lang'], fields: ['id', 'lang'],
}, },
}, },
{ relation: 'salesPersonUser' }, { relation: 'department' },
], ],
}, },
}, },
@ -147,12 +148,12 @@ const setData = (entity) => {
</QBadge> </QBadge>
</template> </template>
</VnLv> </VnLv>
<VnLv :label="t('globals.salesPerson')"> <VnLv :label="t('customer.summary.team')">
<template #value> <template #value>
<VnUserLink <span class="link">
:name="entity.client?.salesPersonUser?.name" {{ entity?.client?.department?.name || '-' }}
:worker-id="entity.client?.salesPersonFk" <DepartmentDescriptorProxy :id="entity?.client?.departmentFk" />
/> </span>
</template> </template>
</VnLv> </VnLv>
<VnLv <VnLv

View File

@ -56,7 +56,7 @@ const canProceed = ref();
watch( watch(
() => route.params.id, () => route.params.id,
() => tableRef.value.reload() () => tableRef.value.reload(),
); );
const columns = computed(() => [ const columns = computed(() => [
@ -199,7 +199,7 @@ const changeQuantity = async (sale) => {
await updateQuantity(sale); await updateQuantity(sale);
} catch (e) { } catch (e) {
const { quantity } = tableRef.value.CrudModelRef.originalData.find( const { quantity } = tableRef.value.CrudModelRef.originalData.find(
(s) => s.id === sale.id (s) => s.id === sale.id,
); );
sale.quantity = quantity; sale.quantity = quantity;
throw e; throw e;
@ -261,7 +261,7 @@ const getUsesMana = async () => {
}; };
const getMana = async () => { const getMana = async () => {
const { data } = await axios.get(`Tickets/${route.params.id}/getSalesPersonMana`); const { data } = await axios.get(`Tickets/${route.params.id}/departmentMana`);
mana.value = data; mana.value = data;
await getUsesMana(); await getUsesMana();
}; };
@ -503,7 +503,7 @@ async function isSalePrepared(item) {
componentProps: { componentProps: {
title: t('Item prepared'), title: t('Item prepared'),
message: t( message: t(
'This item is already prepared. Do you want to continue?' 'This item is already prepared. Do you want to continue?',
), ),
data: item, data: item,
}, },
@ -525,7 +525,7 @@ watch(
if (newItemFk) { if (newItemFk) {
updateItem(newRow.value); updateItem(newRow.value);
} }
} },
); );
</script> </script>
@ -595,7 +595,7 @@ watch(
openConfirmationModal( openConfirmationModal(
t('Continue anyway?'), t('Continue anyway?'),
t('You are going to delete lines of the ticket'), t('You are going to delete lines of the ticket'),
removeSales removeSales,
) )
" "
> >

View File

@ -13,9 +13,9 @@ import VnLinkPhone from 'src/components/ui/VnLinkPhone.vue';
import { getUrl } from 'src/composables/getUrl'; import { getUrl } from 'src/composables/getUrl';
import useNotify from 'src/composables/useNotify.js'; import useNotify from 'src/composables/useNotify.js';
import { useArrayData } from 'composables/useArrayData'; import { useArrayData } from 'composables/useArrayData';
import VnUserLink from 'src/components/ui/VnUserLink.vue';
import VnTitle from 'src/components/common/VnTitle.vue'; import VnTitle from 'src/components/common/VnTitle.vue';
import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue'; import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue';
import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
import ZoneDescriptorProxy from 'src/pages/Zone/Card/ZoneDescriptorProxy.vue'; import ZoneDescriptorProxy from 'src/pages/Zone/Card/ZoneDescriptorProxy.vue';
import VnSelect from 'src/components/common/VnSelect.vue'; import VnSelect from 'src/components/common/VnSelect.vue';
import VnToSummary from 'src/components/ui/VnToSummary.vue'; import VnToSummary from 'src/components/ui/VnToSummary.vue';
@ -142,12 +142,14 @@ onMounted(async () => {
</QBadge> </QBadge>
</template> </template>
</VnLv> </VnLv>
<VnLv :label="t('globals.salesPerson')"> <VnLv :label="t('customer.summary.team')">
<template #value> <template #value>
<VnUserLink <span class="link">
:name="entity.client?.salesPersonUser?.name" {{ entity?.client?.department?.name || '-' }}
:worker-id="entity.client?.salesPersonFk" <DepartmentDescriptorProxy
:id="entity?.client?.departmentFk"
/> />
</span>
</template> </template>
</VnLv> </VnLv>
<VnLv :label="t('globals.agency')" :value="entity.agencyMode?.name" /> <VnLv :label="t('globals.agency')" :value="entity.agencyMode?.name" />

View File

@ -82,15 +82,15 @@ const getGroupedStates = (data) => {
</QItem> </QItem>
<QItem> <QItem>
<QItemSection> <QItemSection>
<VnSelectWorker <VnSelect
:label="t('globals.salesPerson')"
v-model="params.salesPersonFk"
:params="{
departmentCodes: ['VT'],
}"
dense
outlined outlined
dense
rounded rounded
:label="t('globals.params.departmentFk')"
v-model="params.departmentFk"
option-value="id"
option-label="name"
url="Departments"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
@ -294,7 +294,6 @@ en:
orderFk: Order orderFk: Order
from: From from: From
to: To to: To
salesPersonFk: Salesperson
stateFk: State stateFk: State
groupedStates: Grouped State groupedStates: Grouped State
refFk: Invoice Ref. refFk: Invoice Ref.
@ -321,7 +320,6 @@ es:
orderFk: Pedido orderFk: Pedido
from: Desde from: Desde
to: Hasta to: Hasta
salesPersonFk: Comercial
stateFk: Estado stateFk: Estado
groupedStates: Estado agrupado groupedStates: Estado agrupado
refFk: Ref. Factura refFk: Ref. Factura
@ -340,7 +338,6 @@ es:
Order ID: ID Pedido Order ID: ID Pedido
From: Desde From: Desde
To: Hasta To: Hasta
Salesperson: Comercial
State: Estado State: Estado
Invoice Ref.: Ref. Factura Invoice Ref.: Ref. Factura
My team: Mi equipo My team: Mi equipo

View File

@ -17,6 +17,7 @@ import TicketFilter from './TicketFilter.vue';
import VnInput from 'src/components/common/VnInput.vue'; import VnInput from 'src/components/common/VnInput.vue';
import FetchData from 'src/components/FetchData.vue'; import FetchData from 'src/components/FetchData.vue';
import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue'; import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue';
import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
import ZoneDescriptorProxy from 'src/pages/Zone/Card/ZoneDescriptorProxy.vue'; import ZoneDescriptorProxy from 'src/pages/Zone/Card/ZoneDescriptorProxy.vue';
import { toTimeFormat } from 'src/filters/date'; import { toTimeFormat } from 'src/filters/date';
import InvoiceOutDescriptorProxy from 'src/pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue'; import InvoiceOutDescriptorProxy from 'src/pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue';
@ -89,22 +90,17 @@ const columns = computed(() => [
}, },
{ {
align: 'left', align: 'left',
label: t('ticketList.salesPerson'), name: 'departmentFk',
name: 'salesPersonFk', label: t('customer.summary.team'),
component: 'select', component: 'select',
attrs: { attrs: {
url: 'Workers/activeWithInheritedRole', url: 'Departments',
fields: ['id', 'name'],
where: { role: 'salesPerson' },
optionFilter: 'firstName',
useLike: false,
}, },
create: true,
columnField: { columnField: {
component: null, component: null,
}, },
columnClass: 'expand', format: (row, dashIfEmpty) => dashIfEmpty(row.departmentName),
cardVisible: true,
format: (row, dashIfEmpty) => dashIfEmpty(row.salesPerson),
}, },
{ {
align: 'left', align: 'left',
@ -245,7 +241,7 @@ const fetchAvailableAgencies = async (formData) => {
const defaultAgency = agenciesOptions.value.find( const defaultAgency = agenciesOptions.value.find(
(agency) => (agency) =>
agency.agencyModeFk === selectedClient.value.defaultAddress.agencyModeFk agency.agencyModeFk === selectedClient.value.defaultAddress.agencyModeFk,
); );
if (defaultAgency) formData.agencyModeId = defaultAgency.agencyModeFk; if (defaultAgency) formData.agencyModeId = defaultAgency.agencyModeFk;
@ -321,7 +317,7 @@ function openBalanceDialog(ticket) {
const description = ref([]); const description = ref([]);
const firstTicketClientId = checkedTickets[0].clientFk; const firstTicketClientId = checkedTickets[0].clientFk;
const isSameClient = checkedTickets.every( const isSameClient = checkedTickets.every(
(ticket) => ticket.clientFk === firstTicketClientId (ticket) => ticket.clientFk === firstTicketClientId,
); );
if (!isSameClient) { if (!isSameClient) {
@ -360,7 +356,7 @@ async function onSubmit() {
description: dialogData.value.value.description, description: dialogData.value.value.description,
clientFk: dialogData.value.value.clientFk, clientFk: dialogData.value.value.clientFk,
email: email[0].email, email: email[0].email,
} },
); );
if (data) notify('globals.dataSaved', 'positive'); if (data) notify('globals.dataSaved', 'positive');
@ -379,32 +375,32 @@ function setReference(data) {
switch (data) { switch (data) {
case 1: case 1:
newDescription = `${t( newDescription = `${t(
'ticketList.creditCard' 'ticketList.creditCard',
)}, ${dialogData.value.value.description.replace( )}, ${dialogData.value.value.description.replace(
/^(Credit Card, |Cash, |Transfers, )/, /^(Credit Card, |Cash, |Transfers, )/,
'' '',
)}`; )}`;
break; break;
case 2: case 2:
newDescription = `${t( newDescription = `${t(
'ticketList.cash' 'ticketList.cash',
)}, ${dialogData.value.value.description.replace( )}, ${dialogData.value.value.description.replace(
/^(Credit Card, |Cash, |Transfers, )/, /^(Credit Card, |Cash, |Transfers, )/,
'' '',
)}`; )}`;
break; break;
case 3: case 3:
newDescription = `${newDescription.replace( newDescription = `${newDescription.replace(
/^(Credit Card, |Cash, |Transfers, )/, /^(Credit Card, |Cash, |Transfers, )/,
'' '',
)}`; )}`;
break; break;
case 4: case 4:
newDescription = `${t( newDescription = `${t(
'ticketList.transfers' 'ticketList.transfers',
)}, ${dialogData.value.value.description.replace( )}, ${dialogData.value.value.description.replace(
/^(Credit Card, |Cash, |Transfers, )/, /^(Credit Card, |Cash, |Transfers, )/,
'' '',
)}`; )}`;
break; break;
case 3317: case 3317:
@ -467,10 +463,10 @@ function setReference(data) {
<template #column-statusIcons="{ row }"> <template #column-statusIcons="{ row }">
<TicketProblems :row="row" /> <TicketProblems :row="row" />
</template> </template>
<template #column-salesPersonFk="{ row }"> <template #column-departmentFk="{ row }">
<span class="link" @click.stop> <span class="link" @click.stop>
{{ dashIfEmpty(row.userName) }} {{ dashIfEmpty(row.departmentName) }}
<CustomerDescriptorProxy :id="row.salesPersonFk" /> <DepartmentDescriptorProxy :id="row.departmentFk" />
</span> </span>
</template> </template>
<template #column-shippedDate="{ row }"> <template #column-shippedDate="{ row }">

View File

@ -5,7 +5,7 @@ import VnSelect from 'src/components/common/VnSelect.vue';
import VnSelectCache from 'src/components/common/VnSelectCache.vue'; import VnSelectCache from 'src/components/common/VnSelectCache.vue';
import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue'; import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue';
import TicketDescriptorProxy from 'src/pages/Ticket/Card/TicketDescriptorProxy.vue'; import TicketDescriptorProxy from 'src/pages/Ticket/Card/TicketDescriptorProxy.vue';
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue'; import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
import VnSearchbar from 'src/components/ui/VnSearchbar.vue'; import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
import { useStateStore } from 'stores/useStateStore'; import { useStateStore } from 'stores/useStateStore';
import { useVnConfirm } from 'composables/useVnConfirm'; import { useVnConfirm } from 'composables/useVnConfirm';
@ -112,23 +112,17 @@ const columns = computed(() => [
}, },
{ {
align: 'left', align: 'left',
name: 'id', name: 'departmentFk',
label: t('weeklyTickets.salesperson'), label: t('customer.summary.team'),
columnFilter: {
component: 'select', component: 'select',
alias: 'u',
attrs: { attrs: {
url: 'Workers/activeWithInheritedRole', url: 'Departments',
fields: ['id', 'name'],
where: { role: 'salesperson' },
},
inWhere: true,
}, },
create: true,
columnField: { columnField: {
component: null, component: null,
}, },
cardVisible: true, format: (row, dashIfEmpty) => dashIfEmpty(row.departmentName),
format: (row) => row.userName,
}, },
{ {
align: 'right', align: 'right',
@ -142,9 +136,9 @@ const columns = computed(() => [
openConfirmationModal( openConfirmationModal(
t('You are going to delete this weekly ticket'), t('You are going to delete this weekly ticket'),
t( t(
'This ticket will be removed from weekly tickets! Continue anyway?' 'This ticket will be removed from weekly tickets! Continue anyway?',
), ),
() => deleteWeekly(row.ticketFk) () => deleteWeekly(row.ticketFk),
), ),
isPrimary: true, isPrimary: true,
}, },
@ -219,10 +213,10 @@ onMounted(async () => {
<CustomerDescriptorProxy :id="row.clientFk" /> <CustomerDescriptorProxy :id="row.clientFk" />
</span> </span>
</template> </template>
<template #column-id="{ row }"> <template #column-departmentFk="{ row }">
<span class="link" @click.stop> <span class="link" @click.stop>
{{ row.userName }} {{ row.departmentName }}
<WorkerDescriptorProxy :id="row.workerFk" /> <DepartmentDescriptorProxy :id="row.departmentFk" />
</span> </span>
</template> </template>
</VnTable> </VnTable>

View File

@ -134,7 +134,6 @@ purchaseRequest:
weeklyTickets: weeklyTickets:
id: Ticket ID id: Ticket ID
shipment: Shipment shipment: Shipment
salesperson: Salesperson
search: Search weekly tickets search: Search weekly tickets
searchInfo: Search weekly tickets by id or client id searchInfo: Search weekly tickets by id or client id
ticketSaleTracking: ticketSaleTracking:
@ -170,7 +169,7 @@ tracking:
addState: Add state addState: Add state
package: package:
package: Package package: Package
added: Added added: D. Added
addPackage: Add package addPackage: Add package
removePackage: Remove package removePackage: Remove package
ticketList: ticketList:
@ -179,7 +178,6 @@ ticketList:
state: State state: State
shipped: Shipped shipped: Shipped
zone: Zone zone: Zone
salesPerson: Sales person
totalWithVat: Total with VAT totalWithVat: Total with VAT
summary: Summary summary: Summary
client: Customer client: Customer

View File

@ -58,7 +58,6 @@ basicData:
weeklyTickets: weeklyTickets:
id: ID Ticket id: ID Ticket
shipment: Salida shipment: Salida
salesperson: Comercial
search: Buscar por tickets programados search: Buscar por tickets programados
searchInfo: Buscar tickets programados por el identificador o el identificador del cliente searchInfo: Buscar tickets programados por el identificador o el identificador del cliente
advanceTickets: advanceTickets:
@ -160,7 +159,7 @@ expedition:
removeExpedition: Eliminar expedición removeExpedition: Eliminar expedición
package: package:
package: Embalaje package: Embalaje
added: Añadido added: F. Creacion
addPackage: Añadir embalaje addPackage: Añadir embalaje
removePackage: Quitar embalaje removePackage: Quitar embalaje
ticketSaleTracking: ticketSaleTracking:
@ -184,7 +183,6 @@ ticketList:
state: Estado state: Estado
shipped: F. Envío shipped: F. Envío
zone: Zona zone: Zona
salesPerson: Comercial
totalWithVat: Total con IVA totalWithVat: Total con IVA
summary: Resumen summary: Resumen
client: Cliente client: Cliente

View File

@ -116,7 +116,7 @@ const handlePhotoUpdated = (evt = false) => {
:value="entity.user?.emailUser?.email" :value="entity.user?.emailUser?.email"
copy copy
/> />
<VnLv :label="t('worker.list.department')"> <VnLv :label="t('globals.department')">
<template #value> <template #value>
<span class="link" v-text="entity.department?.department?.name" /> <span class="link" v-text="entity.department?.department?.name" />
<DepartmentDescriptorProxy :id="entity.department?.department?.id" /> <DepartmentDescriptorProxy :id="entity.department?.department?.id" />

View File

@ -50,7 +50,7 @@ onBeforeMount(async () => {
<QCard class="vn-one"> <QCard class="vn-one">
<VnTitle :url="basicDataUrl" :text="t('globals.summary.basicData')" /> <VnTitle :url="basicDataUrl" :text="t('globals.summary.basicData')" />
<VnLv :label="t('globals.name')" :value="worker.user?.nickname" /> <VnLv :label="t('globals.name')" :value="worker.user?.nickname" />
<VnLv :label="t('worker.list.department')"> <VnLv :label="t('globals.department')">
<template #value> <template #value>
<span class="link" v-text="worker.department?.department?.name" /> <span class="link" v-text="worker.department?.department?.name" />
<DepartmentDescriptorProxy <DepartmentDescriptorProxy

View File

@ -40,8 +40,7 @@ const customerCard = {
title: 'basicData', title: 'basicData',
icon: 'vn:settings', icon: 'vn:settings',
}, },
component: () => component: () => import('src/pages/Customer/Card/CustomerBasicData.vue'),
import('src/pages/Customer/Card/CustomerBasicData.vue'),
}, },
{ {
path: 'fiscal-data', path: 'fiscal-data',
@ -50,8 +49,7 @@ const customerCard = {
title: 'fiscalData', title: 'fiscalData',
icon: 'vn:dfiscales', icon: 'vn:dfiscales',
}, },
component: () => component: () => import('src/pages/Customer/Card/CustomerFiscalData.vue'),
import('src/pages/Customer/Card/CustomerFiscalData.vue'),
}, },
{ {
path: 'billing-data', path: 'billing-data',
@ -60,8 +58,7 @@ const customerCard = {
title: 'billingData', title: 'billingData',
icon: 'vn:payment', icon: 'vn:payment',
}, },
component: () => component: () => import('src/pages/Customer/Card/CustomerBillingData.vue'),
import('src/pages/Customer/Card/CustomerBillingData.vue'),
}, },
{ {
path: 'address', path: 'address',
@ -85,9 +82,7 @@ const customerCard = {
title: 'address-create', title: 'address-create',
}, },
component: () => component: () =>
import( import('src/pages/Customer/components/CustomerAddressCreate.vue'),
'src/pages/Customer/components/CustomerAddressCreate.vue'
),
}, },
{ {
path: ':addressId', path: ':addressId',
@ -125,8 +120,7 @@ const customerCard = {
title: 'credits', title: 'credits',
icon: 'vn:credit', icon: 'vn:credit',
}, },
component: () => component: () => import('src/pages/Customer/Card/CustomerCredits.vue'),
import('src/pages/Customer/Card/CustomerCredits.vue'),
}, },
{ {
path: 'greuges', path: 'greuges',
@ -135,8 +129,7 @@ const customerCard = {
title: 'greuges', title: 'greuges',
icon: 'vn:greuge', icon: 'vn:greuge',
}, },
component: () => component: () => import('src/pages/Customer/Card/CustomerGreuges.vue'),
import('src/pages/Customer/Card/CustomerGreuges.vue'),
}, },
{ {
path: 'balance', path: 'balance',
@ -145,8 +138,7 @@ const customerCard = {
title: 'balance', title: 'balance',
icon: 'balance', icon: 'balance',
}, },
component: () => component: () => import('src/pages/Customer/Card/CustomerBalance.vue'),
import('src/pages/Customer/Card/CustomerBalance.vue'),
}, },
{ {
path: 'recoveries', path: 'recoveries',
@ -155,8 +147,7 @@ const customerCard = {
title: 'recoveries', title: 'recoveries',
icon: 'vn:recovery', icon: 'vn:recovery',
}, },
component: () => component: () => import('src/pages/Customer/Card/CustomerRecoveries.vue'),
import('src/pages/Customer/Card/CustomerRecoveries.vue'),
}, },
{ {
path: 'web-access', path: 'web-access',
@ -165,8 +156,7 @@ const customerCard = {
title: 'webAccess', title: 'webAccess',
icon: 'vn:web', icon: 'vn:web',
}, },
component: () => component: () => import('src/pages/Customer/Card/CustomerWebAccess.vue'),
import('src/pages/Customer/Card/CustomerWebAccess.vue'),
}, },
{ {
path: 'log', path: 'log',
@ -247,9 +237,7 @@ const customerCard = {
title: 'creditOpinion', title: 'creditOpinion',
}, },
component: () => component: () =>
import( import('src/pages/Customer/Card/CustomerCreditOpinion.vue'),
'src/pages/Customer/Card/CustomerCreditOpinion.vue'
),
}, },
], ],
}, },
@ -319,9 +307,7 @@ const customerCard = {
title: 'samples', title: 'samples',
}, },
component: () => component: () =>
import( import('src/pages/Customer/Card/CustomerSamples.vue'),
'src/pages/Customer/Card/CustomerSamples.vue'
),
}, },
{ {
path: 'create', path: 'create',
@ -376,9 +362,7 @@ const customerCard = {
title: 'fileManagement', title: 'fileManagement',
}, },
component: () => component: () =>
import( import('src/pages/Customer/Card/CustomerFileManagement.vue'),
'src/pages/Customer/Card/CustomerFileManagement.vue'
),
}, },
{ {
path: 'file-management', path: 'file-management',
@ -420,8 +404,7 @@ const customerCard = {
meta: { meta: {
title: 'unpaid', title: 'unpaid',
}, },
component: () => component: () => import('src/pages/Customer/Card/CustomerUnpaid.vue'),
import('src/pages/Customer/Card/CustomerUnpaid.vue'),
}, },
], ],
}, },
@ -469,15 +452,6 @@ export default {
customerCard, customerCard,
], ],
}, },
{
path: 'create',
name: 'CustomerCreate',
meta: {
title: 'customerCreate',
icon: 'add',
},
component: () => import('src/pages/Customer/CustomerCreate.vue'),
},
{ {
path: 'payments', path: 'payments',
name: 'CustomerPayments', name: 'CustomerPayments',

View File

@ -26,7 +26,7 @@ describe('Client list', () => {
'Web user': { val: `user_test_${randomInt}` }, 'Web user': { val: `user_test_${randomInt}` },
Street: { val: `C/ STREET ${randomInt}` }, Street: { val: `C/ STREET ${randomInt}` },
Email: { val: `user.test${randomInt}@cypress.com` }, Email: { val: `user.test${randomInt}@cypress.com` },
'Sales person': { val: 'salesPerson', type: 'select' }, Team: { val: 'Informatica', type: 'select' },
Location: { val: '46000', type: 'select' }, Location: { val: '46000', type: 'select' },
'Business type': { val: 'Otros', type: 'select' }, 'Business type': { val: 'Otros', type: 'select' },
}; };