+
{{ t('globals.changesToSave') }}
-
+
+import { ref } from 'vue';
+import { useI18n } from 'vue-i18n';
+
+import FormModel from 'components/FormModel.vue';
+
+const emit = defineEmits(['onDataSaved']);
+
+const $props = defineProps({
+ title: {
+ type: String,
+ default: '',
+ },
+ subtitle: {
+ type: String,
+ default: '',
+ },
+ url: {
+ type: String,
+ default: '',
+ },
+ model: {
+ type: String,
+ default: '',
+ },
+ filter: {
+ type: Object,
+ default: null,
+ },
+ urlCreate: {
+ type: String,
+ default: null,
+ },
+ formInitialData: {
+ type: Object,
+ default: () => {},
+ },
+});
+
+const { t } = useI18n();
+
+const closeButton = ref(null);
+const isLoading = ref(false);
+
+const onDataSaved = () => {
+ emit('onDataSaved');
+ closeForm();
+};
+
+const closeForm = () => {
+ if (closeButton.value) closeButton.value.click();
+};
+
+
+
+
+
+
+
+
+ {{ title }}
+ {{ subtitle }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/common/TableVisibleColumns.vue b/src/components/common/TableVisibleColumns.vue
new file mode 100644
index 000000000..d9a1a2004
--- /dev/null
+++ b/src/components/common/TableVisibleColumns.vue
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+ {{ t('Check the columns you want to see') }}
+
+ {{ t('Visible columns') }}
+
+
+
+
+ {{
+ t('globals.save')
+ }}
+
+
+ {{ t('Visible columns') }}
+
+
+
+
+
+
+ es:
+ Check the columns you want to see: Marca las columnas que quieres ver
+ Visible columns: Columnas visibles
+
diff --git a/src/components/common/VnInput.vue b/src/components/common/VnInput.vue
index e3040a698..cdc6dd865 100644
--- a/src/components/common/VnInput.vue
+++ b/src/components/common/VnInput.vue
@@ -40,6 +40,7 @@ const styleAttrs = computed(() => {
v-model="value"
v-bind="{ ...$attrs, ...styleAttrs }"
type="text"
+ :class="{ required: $attrs.required }"
>
diff --git a/src/components/common/VnSelectCreate.vue b/src/components/common/VnSelectCreate.vue
index 0b5694ec5..bdc3f5cc8 100644
--- a/src/components/common/VnSelectCreate.vue
+++ b/src/components/common/VnSelectCreate.vue
@@ -49,7 +49,7 @@ const toggleForm = () => {
diff --git a/src/components/common/VnSelectFilter.vue b/src/components/common/VnSelectFilter.vue
index a0605bbae..f2fd2a311 100644
--- a/src/components/common/VnSelectFilter.vue
+++ b/src/components/common/VnSelectFilter.vue
@@ -87,13 +87,14 @@ const value = computed({
hide-selected
fill-input
ref="vnSelectRef"
+ :class="{ required: $attrs.required }"
>
diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue
new file mode 100644
index 000000000..c382ef9f2
--- /dev/null
+++ b/src/components/ui/VnTree.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+
+ {{ node.name }}
+
+
+
+
+ {{ t('Remove') }}
+
+
+
+
+ {{ t('Create') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ es:
+ Departments: Departamentos
+ Remove: Quitar
+ Create: Crear
+ Are you sure you want to delete it?: ¿Seguro que quieres eliminarlo?
+ Delete department: Eliminar departamento
+
diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js
index 5e80949f3..9f0be6b1d 100644
--- a/src/composables/useArrayData.js
+++ b/src/composables/useArrayData.js
@@ -156,9 +156,7 @@ export function useArrayData(key, userOptions) {
delete store.userParams[param];
delete params[param];
if (store.filter?.where) {
- delete store.filter.where[
- Object.keys(exprBuilder ? exprBuilder(param) : param)[0]
- ];
+ delete store.filter.where[Object.keys(exprBuilder ? exprBuilder(param) : param)[0]];
if (Object.keys(store.filter.where).length === 0) {
delete store.filter.where;
}
diff --git a/src/css/app.scss b/src/css/app.scss
index 02d4f8946..f0c26d482 100644
--- a/src/css/app.scss
+++ b/src/css/app.scss
@@ -53,3 +53,8 @@ body.body--dark {
color: var(--vn-text);
border-radius: 8px;
}
+
+/* Estilo para el asterisco en campos requeridos */
+.q-field.required .q-field__label:after {
+ content: ' *';
+}
diff --git a/src/filters/dateRange.js b/src/filters/dateRange.js
new file mode 100644
index 000000000..4c0cfe654
--- /dev/null
+++ b/src/filters/dateRange.js
@@ -0,0 +1,8 @@
+export default function dateRange(value) {
+ const minHour = new Date(value);
+ minHour.setHours(0, 0, 0, 0);
+ const maxHour = new Date(value);
+ maxHour.setHours(23, 59, 59, 59);
+
+ return [minHour, maxHour];
+}
diff --git a/src/filters/index.js b/src/filters/index.js
index b0c441641..f0120e663 100644
--- a/src/filters/index.js
+++ b/src/filters/index.js
@@ -7,6 +7,7 @@ import toCurrency from './toCurrency';
import toPercentage from './toPercentage';
import toLowerCamel from './toLowerCamel';
import dashIfEmpty from './dashIfEmpty';
+import dateRange from './dateRange';
export {
toLowerCase,
@@ -18,4 +19,5 @@ export {
toCurrency,
toPercentage,
dashIfEmpty,
+ dateRange,
};
diff --git a/src/i18n/en/index.js b/src/i18n/en/index.js
index b18c00325..96a25d1a7 100644
--- a/src/i18n/en/index.js
+++ b/src/i18n/en/index.js
@@ -49,7 +49,6 @@ export default {
microsip: 'Open in MicroSIP',
noSelectedRows: `You don't have any line selected`,
downloadCSVSuccess: 'CSV downloaded successfully',
- // labels compartidos entre vistas
reference: 'Reference',
agency: 'Agency',
wareHouseOut: 'Warehouse Out',
@@ -113,9 +112,24 @@ export default {
list: 'List',
webPayments: 'Web Payments',
extendedList: 'Extended list',
+ notifications: 'Notifications',
+ defaulter: 'Defaulter',
createCustomer: 'Create customer',
summary: 'Summary',
- basicData: 'Basic Data',
+ basicData: 'Basic data',
+ fiscalData: 'Fiscal data',
+ billingData: 'Billing data',
+ consignees: 'Consignees',
+ notes: 'Notes',
+ credits: 'Credits',
+ greuges: 'Greuges',
+ balance: 'Balance',
+ recoveries: 'Recoveries',
+ webAccess: 'Web access',
+ log: 'Log',
+ sms: 'Sms',
+ creditManagement: 'Credit management',
+ others: 'Others',
},
list: {
phone: 'Phone',
@@ -206,6 +220,52 @@ export default {
salesPerson: 'Sales person',
contactChannel: 'Contact channel',
},
+ extendedList: {
+ tableVisibleColumns: {
+ id: 'Identifier',
+ name: 'Name',
+ fi: 'Tax number',
+ salesPersonFk: 'Salesperson',
+ credit: 'Credit',
+ creditInsurance: 'Credit insurance',
+ phone: 'Phone',
+ mobile: 'Mobile',
+ street: 'Street',
+ countryFk: 'Country',
+ provinceFk: 'Province',
+ city: 'City',
+ postcode: 'Postcode',
+ email: 'Email',
+ created: 'Created',
+ businessTypeFk: 'Business type',
+ payMethodFk: 'Billing data',
+ sageTaxTypeFk: 'Sage tax type',
+ sageTransactionTypeFk: 'Sage tr. type',
+ isActive: 'Active',
+ isVies: 'Vies',
+ isTaxDataChecked: 'Verified data',
+ isEqualizated: 'Is equalizated',
+ isFreezed: 'Freezed',
+ hasToInvoice: 'Invoice',
+ hasToInvoiceByAddress: 'Invoice by address',
+ isToBeMailed: 'Mailing',
+ hasLcr: 'Received LCR',
+ hasCoreVnl: 'VNL core received',
+ hasSepaVnl: 'VNL B2B received',
+ },
+ },
+ },
+ entry: {
+ pageTitles: {
+ entries: 'Entries',
+ list: 'List',
+ createEntry: 'New entry',
+ summary: 'Summary',
+ create: 'Create',
+ },
+ list: {
+ newEntry: 'New entry',
+ },
},
ticket: {
pageTitles: {
@@ -569,7 +629,7 @@ export default {
landed: 'Landed',
hour: 'Hour',
agency: 'Agency',
- total: 'Total'
+ total: 'Total',
},
form: {
clientFk: 'Client',
@@ -578,7 +638,7 @@ export default {
agencyModeFk: 'Agency',
},
list: {
- newOrder: 'New Order'
+ newOrder: 'New Order',
},
summary: {
basket: 'Basket',
@@ -604,8 +664,27 @@ export default {
description: 'Description',
quantity: 'Quantity',
price: 'Price',
- amount: 'Amount'
- }
+ amount: 'Amount',
+ },
+ },
+ department: {
+ pageTitles: {
+ basicData: 'Basic data',
+ department: 'Department',
+ summary: 'Summary',
+ },
+ name: 'Name',
+ code: 'Code',
+ chat: 'Chat',
+ bossDepartment: 'Boss Department',
+ email: 'Email',
+ selfConsumptionCustomer: 'Self-consumption customer',
+ telework: 'Telework',
+ notifyOnErrors: 'Notify on errors',
+ worksInProduction: 'Works in production',
+ hasToRefill: 'Fill in days without physical check-ins',
+ hasToSendMail: 'Send check-ins by email',
+ departmentRemoved: 'Department removed',
},
worker: {
pageTitles: {
@@ -615,6 +694,7 @@ export default {
summary: 'Summary',
notifications: 'Notifications',
workerCreate: 'New worker',
+ department: 'Department',
},
list: {
name: 'Name',
@@ -750,6 +830,15 @@ export default {
list: 'List',
create: 'Create',
summary: 'Summary',
+ basicData: 'Basic data',
+ fiscalData: 'Fiscal data',
+ billingData: 'Billing data',
+ log: 'Log',
+ accounts: 'Accounts',
+ contacts: 'Contacts',
+ addresses: 'Addresses',
+ consumption: 'Consumption',
+ agencyTerm: 'Agency agreement',
},
list: {
payMethod: 'Pay method',
diff --git a/src/i18n/es/index.js b/src/i18n/es/index.js
index 0c3a747c6..6b1e22263 100644
--- a/src/i18n/es/index.js
+++ b/src/i18n/es/index.js
@@ -48,7 +48,6 @@ export default {
dateFormat: 'es-ES',
noSelectedRows: `No tienes ninguna línea seleccionada`,
microsip: 'Abrir en MicroSIP',
- // labels compartidos entre vistas
downloadCSVSuccess: 'Descarga de CSV exitosa',
reference: 'Referencia',
agency: 'Agencia',
@@ -113,9 +112,24 @@ export default {
list: 'Listado',
webPayments: 'Pagos Web',
extendedList: 'Listado extendido',
+ notifications: 'Notificaciones',
+ defaulter: 'Morosos',
createCustomer: 'Crear cliente',
- basicData: 'Datos básicos',
summary: 'Resumen',
+ basicData: 'Datos básicos',
+ fiscalData: 'Datos fiscales',
+ billingData: 'Forma de pago',
+ consignees: 'Consignatarios',
+ notes: 'Notas',
+ credits: 'Créditos',
+ greuges: 'Greuges',
+ balance: 'Balance',
+ recoveries: 'Recobros',
+ webAccess: 'Acceso web',
+ log: 'Historial',
+ sms: 'Sms',
+ creditManagement: 'Gestión de crédito',
+ others: 'Otros',
},
list: {
phone: 'Teléfono',
@@ -205,6 +219,51 @@ export default {
salesPerson: 'Comercial',
contactChannel: 'Canal de contacto',
},
+ extendedList: {
+ tableVisibleColumns: {
+ id: 'Identificador',
+ name: 'Nombre',
+ fi: 'NIF / CIF',
+ salesPersonFk: 'Comercial',
+ credit: 'Crédito',
+ creditInsurance: 'Crédito asegurado',
+ phone: 'Teléfono',
+ mobile: 'Móvil',
+ street: 'Dirección fiscal',
+ countryFk: 'País',
+ provinceFk: 'Provincia',
+ city: 'Población',
+ postcode: 'Código postal',
+ email: 'Email',
+ created: 'Fecha creación',
+ businessTypeFk: 'Tipo de negocio',
+ payMethodFk: 'Forma de pago',
+ sageTaxTypeFk: 'Tipo de impuesto Sage',
+ sageTransactionTypeFk: 'Tipo tr. sage',
+ isActive: 'Activo',
+ isVies: 'Vies',
+ isTaxDataChecked: 'Datos comprobados',
+ isEqualizated: 'Recargo de equivalencias',
+ isFreezed: 'Congelado',
+ hasToInvoice: 'Factura',
+ hasToInvoiceByAddress: 'Factura por consigna',
+ isToBeMailed: 'Env. emails',
+ hasLcr: 'Recibido LCR',
+ hasCoreVnl: 'Recibido core VNL',
+ hasSepaVnl: 'Recibido B2B VNL',
+ },
+ },
+ },
+ entry: {
+ pageTitles: {
+ entries: 'Entradas',
+ list: 'Listado',
+ summary: 'Resumen',
+ create: 'Crear',
+ },
+ list: {
+ newEntry: 'Nueva entrada',
+ },
},
ticket: {
pageTitles: {
@@ -478,7 +537,7 @@ export default {
landed: 'F. entrega',
hour: 'Hora',
agency: 'Agencia',
- total: 'Total'
+ total: 'Total',
},
form: {
clientFk: 'Cliente',
@@ -487,7 +546,7 @@ export default {
agencyModeFk: 'Agencia',
},
list: {
- newOrder: 'Nuevo Pedido'
+ newOrder: 'Nuevo Pedido',
},
summary: {
basket: 'Cesta',
@@ -513,8 +572,8 @@ export default {
description: 'Descripción',
quantity: 'Cantidad',
price: 'Precio',
- amount: 'Monto'
- }
+ amount: 'Monto',
+ },
},
shelving: {
pageTitles: {
@@ -607,6 +666,25 @@ export default {
country: 'País',
},
},
+ department: {
+ pageTitles: {
+ basicData: 'Basic data',
+ department: 'Departamentos',
+ summary: 'Resumen',
+ },
+ name: 'Nombre',
+ code: 'Código',
+ chat: 'Chat',
+ bossDepartment: 'Jefe de departamento',
+ email: 'Email',
+ selfConsumptionCustomer: 'Cliente autoconsumo',
+ telework: 'Teletrabaja',
+ notifyOnErrors: 'Notificar errores',
+ worksInProduction: 'Pertenece a producción',
+ hasToRefill: 'Completar días sin registros físicos',
+ hasToSendMail: 'Enviar fichadas por mail',
+ departmentRemoved: 'Departamento eliminado',
+ },
worker: {
pageTitles: {
workers: 'Trabajadores',
@@ -615,6 +693,7 @@ export default {
summary: 'Resumen',
notifications: 'Notificaciones',
workerCreate: 'Nuevo trabajador',
+ department: 'Departamentos',
},
list: {
name: 'Nombre',
@@ -750,6 +829,15 @@ export default {
list: 'Listado',
create: 'Crear',
summary: 'Resumen',
+ basicData: 'Datos básicos',
+ fiscalData: 'Datos fiscales',
+ billingData: 'Forma de pago',
+ log: 'Historial',
+ accounts: 'Cuentas',
+ contacts: 'Contactos',
+ addresses: 'Direcciones',
+ consumption: 'Consumo',
+ agencyTerm: 'Acuerdo agencia',
},
list: {
payMethod: 'Método de pago',
diff --git a/src/pages/Customer/Card/CustomerBalance.vue b/src/pages/Customer/Card/CustomerBalance.vue
new file mode 100644
index 000000000..9e44f67f5
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerBalance.vue
@@ -0,0 +1,3 @@
+
+ Balance
+
diff --git a/src/pages/Customer/Card/CustomerBillingData.vue b/src/pages/Customer/Card/CustomerBillingData.vue
new file mode 100644
index 000000000..c14f3b499
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerBillingData.vue
@@ -0,0 +1,3 @@
+
+ Billing data
+
diff --git a/src/pages/Customer/Card/CustomerConsignees.vue b/src/pages/Customer/Card/CustomerConsignees.vue
new file mode 100644
index 000000000..bab2bd1ff
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerConsignees.vue
@@ -0,0 +1,3 @@
+
+ Consignees
+
diff --git a/src/pages/Customer/Card/CustomerCreditManagement.vue b/src/pages/Customer/Card/CustomerCreditManagement.vue
new file mode 100644
index 000000000..fe24ddfd0
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerCreditManagement.vue
@@ -0,0 +1,3 @@
+
+ Credit management
+
diff --git a/src/pages/Customer/Card/CustomerCredits.vue b/src/pages/Customer/Card/CustomerCredits.vue
new file mode 100644
index 000000000..e8a4c3b48
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerCredits.vue
@@ -0,0 +1,3 @@
+
+ Credits
+
diff --git a/src/pages/Customer/Card/CustomerFiscalData.vue b/src/pages/Customer/Card/CustomerFiscalData.vue
new file mode 100644
index 000000000..ced6012b8
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerFiscalData.vue
@@ -0,0 +1,3 @@
+
+ Fiscal data
+
diff --git a/src/pages/Customer/Card/CustomerGreuges.vue b/src/pages/Customer/Card/CustomerGreuges.vue
new file mode 100644
index 000000000..d322e04a5
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerGreuges.vue
@@ -0,0 +1,3 @@
+
+ Greuges
+
diff --git a/src/pages/Customer/Card/CustomerLog.vue b/src/pages/Customer/Card/CustomerLog.vue
new file mode 100644
index 000000000..fe59bf2dc
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerLog.vue
@@ -0,0 +1,3 @@
+
+ Log
+
diff --git a/src/pages/Customer/Card/CustomerNotes.vue b/src/pages/Customer/Card/CustomerNotes.vue
new file mode 100644
index 000000000..65ade2903
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerNotes.vue
@@ -0,0 +1,3 @@
+
+ Notes
+
diff --git a/src/pages/Customer/Card/CustomerOthers.vue b/src/pages/Customer/Card/CustomerOthers.vue
new file mode 100644
index 000000000..bd4729cab
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerOthers.vue
@@ -0,0 +1,3 @@
+
+ Others
+
diff --git a/src/pages/Customer/Card/CustomerRecoveries.vue b/src/pages/Customer/Card/CustomerRecoveries.vue
new file mode 100644
index 000000000..54274717c
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerRecoveries.vue
@@ -0,0 +1,3 @@
+
+ Recoveries
+
diff --git a/src/pages/Customer/Card/CustomerSms.vue b/src/pages/Customer/Card/CustomerSms.vue
new file mode 100644
index 000000000..fa4a34e30
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerSms.vue
@@ -0,0 +1,3 @@
+
+ Sms
+
diff --git a/src/pages/Customer/Card/CustomerWebAccess.vue b/src/pages/Customer/Card/CustomerWebAccess.vue
new file mode 100644
index 000000000..95ec77c3d
--- /dev/null
+++ b/src/pages/Customer/Card/CustomerWebAccess.vue
@@ -0,0 +1,3 @@
+
+ Web access
+
diff --git a/src/pages/Customer/Defaulter/CustomerBalanceDueTotal.vue b/src/pages/Customer/Defaulter/CustomerBalanceDueTotal.vue
new file mode 100644
index 000000000..c4a50a10f
--- /dev/null
+++ b/src/pages/Customer/Defaulter/CustomerBalanceDueTotal.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
{{ t('Total') }}
+
+
{{ t('Balance due') }}:
+
+ {{ toCurrency($props.amount) }}
+
+
+
+
+
+
+
+
+es:
+ Total: Total
+ Balance due: Saldo vencido
+
diff --git a/src/pages/Customer/Defaulter/CustomerDefaulter.vue b/src/pages/Customer/Defaulter/CustomerDefaulter.vue
new file mode 100644
index 000000000..d54d5df35
--- /dev/null
+++ b/src/pages/Customer/Defaulter/CustomerDefaulter.vue
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ props.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Client: Cliente
+ Is worker: Es trabajador
+ Salesperson: Comercial
+ Country: País
+ P. Method: F. Pago
+ Balance D.: Saldo V.
+ Author: Autor
+ Last observation: Última observación
+ L. O. Date: Fecha Ú. O.
+ Credit I.: Crédito A.
+ From: Desde
+
diff --git a/src/pages/Customer/Defaulter/CustomerDefaulterFilter.vue b/src/pages/Customer/Defaulter/CustomerDefaulterFilter.vue
new file mode 100644
index 000000000..43ceb1bac
--- /dev/null
+++ b/src/pages/Customer/Defaulter/CustomerDefaulterFilter.vue
@@ -0,0 +1,238 @@
+
+
+
+ (clients = data)" auto-load url="Clients" />
+ (salespersons = data)"
+ auto-load
+ url="Workers/activeWithInheritedRole"
+ />
+ (countries = data)" auto-load url="Countries" />
+ (authors = data)"
+ auto-load
+ url="Workers/activeWithInheritedRole"
+ />
+
+
+
+
+ {{ t(`params.${tag.label}`) }}:
+ {{ formatFn(tag.value) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+en:
+ params:
+ clientFk: Client
+ salesPersonFk: Salesperson
+ countryFk: Country
+ paymentMethod: P. Method
+ balance: Balance D.
+ workerFk: Author
+ date: L. O. Date
+ credit: Credit I.
+ defaulterSinced: From
+es:
+ params:
+ clientFk: Cliente
+ salesPersonFk: Comercial
+ countryFk: País
+ paymentMethod: F. Pago
+ balance: Saldo V.
+ workerFk: Autor
+ date: Fecha Ú. O.
+ credit: Crédito A.
+ defaulterSinced: Desde
+ Client: Cliente
+ Salesperson: Comercial
+ Country: País
+ P. Method: F. Pago
+ Balance D.: Saldo V.
+ Author: Autor
+ L. O. Date: Fecha Ú. O.
+ Credit I.: Crédito A.
+ From: Desde
+
diff --git a/src/pages/Customer/ExtendedList/CustomerExtendedList.vue b/src/pages/Customer/ExtendedList/CustomerExtendedList.vue
new file mode 100644
index 000000000..caee06d60
--- /dev/null
+++ b/src/pages/Customer/ExtendedList/CustomerExtendedList.vue
@@ -0,0 +1,568 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ dashIfEmpty(col.value) }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Customer/ExtendedList/CustomerExtendedListActions.vue b/src/pages/Customer/ExtendedList/CustomerExtendedListActions.vue
new file mode 100644
index 000000000..a7c51d714
--- /dev/null
+++ b/src/pages/Customer/ExtendedList/CustomerExtendedListActions.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ {{ t('Client ticket list') }}
+
+
+
+
+ {{ t('Preview') }}
+
+
+
+
+
+
+es:
+ Client ticket list: Listado de tickets del cliente
+ Preview: Vista previa
+
diff --git a/src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue b/src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue
new file mode 100644
index 000000000..46b4e1e7b
--- /dev/null
+++ b/src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue
@@ -0,0 +1,617 @@
+
+
+
+ (clients = data)"
+ auto-load
+ />
+ (workers = data)"
+ auto-load
+ />
+ (workers = data)"
+ auto-load
+ />
+ (countriesOptions = data)"
+ auto-load
+ />
+ (provincesOptions = data)"
+ auto-load
+ url="Provinces"
+ />
+ (paymethodsOptions = data)"
+ auto-load
+ />
+ (businessTypesOptions = data)"
+ auto-load
+ />
+ (sageTaxTypesOptions = data)"
+ />
+ (sageTransactionTypesOptions = data)"
+ />
+
+
+
+ {{ t(`customer.extendedList.tableVisibleColumns.${tag.label}`) }}:
+
+ {{ formatFn(tag.value) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Social name: Razón social
+
diff --git a/src/pages/Customer/CustomerExtendedList.vue b/src/pages/Customer/Notifications/CustomerNotifications.vue
similarity index 55%
rename from src/pages/Customer/CustomerExtendedList.vue
rename to src/pages/Customer/Notifications/CustomerNotifications.vue
index da3c6ced4..df128cce7 100644
--- a/src/pages/Customer/CustomerExtendedList.vue
+++ b/src/pages/Customer/Notifications/CustomerNotifications.vue
@@ -1,39 +1,46 @@
-
+
@@ -111,22 +111,27 @@ const columns = ref([
-
- {{ props.value }}
-
+
+
+ {{ props.value }}
+
+
+
@@ -136,6 +141,16 @@ const columns = ref([
+
+
+es:
+ Identifier: Identificador
+ Social name: Razón social
+ Salesperson: Comercial
+ Phone: Teléfono
+ City: Población
+ Email: Email
+
diff --git a/src/pages/Customer/CustomerExtendedListFilter.vue b/src/pages/Customer/Notifications/CustomerNotificationsFilter.vue
similarity index 77%
rename from src/pages/Customer/CustomerExtendedListFilter.vue
rename to src/pages/Customer/Notifications/CustomerNotificationsFilter.vue
index 99ff1d6b6..650158278 100644
--- a/src/pages/Customer/CustomerExtendedListFilter.vue
+++ b/src/pages/Customer/Notifications/CustomerNotificationsFilter.vue
@@ -4,8 +4,8 @@ import { useI18n } from 'vue-i18n';
import FetchData from 'components/FetchData.vue';
import VnFilterPanel from 'src/components/ui/VnFilterPanel.vue';
-import VnSelectFilter from 'components/common/VnSelectFilter.vue';
import VnInput from 'src/components/common/VnInput.vue';
+import VnSelectFilter from 'components/common/VnSelectFilter.vue';
const { t } = useI18n();
const props = defineProps({
@@ -15,23 +15,18 @@ const props = defineProps({
},
});
+const cities = ref();
const clients = ref();
-const workers = ref();
(clients = data)"
auto-load
+ url="Clients"
/>
- (workers = data)"
- auto-load
- />
+ (cities = data)" auto-load url="Towns" />
@@ -39,79 +34,78 @@ const workers = ref();
{{ formatFn(tag.value) }}
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -132,22 +126,19 @@ en:
params:
identifier: Identifier
socialName: Social name
- salesPerson: Salesperson
- phone: Phone
city: City
+ phone: Phone
email: Email
es:
params:
identifier: Identificador
socialName: Razón social
- salesPerson: Comercial
- phone: Teléfono
city: Población
+ phone: Teléfono
email: Email
Identifier: Identificador
Social name: Razón social
- Salesperson: Comercial
- Phone: Teléfono
City: Población
+ Phone: Teléfono
Email: Email
diff --git a/src/pages/Customer/CustomerPayments.vue b/src/pages/Customer/Payments/CustomerPayments.vue
similarity index 99%
rename from src/pages/Customer/CustomerPayments.vue
rename to src/pages/Customer/Payments/CustomerPayments.vue
index 24e5efa39..b4a907665 100644
--- a/src/pages/Customer/CustomerPayments.vue
+++ b/src/pages/Customer/Payments/CustomerPayments.vue
@@ -7,7 +7,7 @@ import { useStateStore } from 'stores/useStateStore';
import { useArrayData } from 'composables/useArrayData';
import VnPaginate from 'components/ui/VnPaginate.vue';
import VnConfirm from 'components/ui/VnConfirm.vue';
-import CustomerDescriptorProxy from './Card/CustomerDescriptorProxy.vue';
+import CustomerDescriptorProxy from '../Card/CustomerDescriptorProxy.vue';
import { toDate, toCurrency } from 'filters/index';
import CustomerPaymentsFilter from './CustomerPaymentsFilter.vue';
diff --git a/src/pages/Customer/CustomerPaymentsFilter.vue b/src/pages/Customer/Payments/CustomerPaymentsFilter.vue
similarity index 100%
rename from src/pages/Customer/CustomerPaymentsFilter.vue
rename to src/pages/Customer/Payments/CustomerPaymentsFilter.vue
diff --git a/src/pages/Department/Card/DepartmentBasicData.vue b/src/pages/Department/Card/DepartmentBasicData.vue
new file mode 100644
index 000000000..3b30a97e6
--- /dev/null
+++ b/src/pages/Department/Card/DepartmentBasicData.vue
@@ -0,0 +1,135 @@
+
+
+ (workersOptions = data)"
+ auto-load
+ />
+ (clientsOptions = data)" auto-load />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Department/Card/DepartmentCard.vue b/src/pages/Department/Card/DepartmentCard.vue
new file mode 100644
index 000000000..885b5e5f1
--- /dev/null
+++ b/src/pages/Department/Card/DepartmentCard.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Department/Card/DepartmentDescriptor.vue b/src/pages/Department/Card/DepartmentDescriptor.vue
new file mode 100644
index 000000000..1f7e6dcbb
--- /dev/null
+++ b/src/pages/Department/Card/DepartmentDescriptor.vue
@@ -0,0 +1,129 @@
+
+
+ {
+ department = data;
+ setData(data);
+ }
+ "
+ >
+
+
+ {{ t('Delete') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('Department workers') }}
+
+
+
+
+
+
+
+ es:
+ Department workers: Trabajadores del departamento
+
diff --git a/src/pages/Department/Card/DepartmentSummary.vue b/src/pages/Department/Card/DepartmentSummary.vue
new file mode 100644
index 000000000..40bb4c83d
--- /dev/null
+++ b/src/pages/Department/Card/DepartmentSummary.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+ {{ entity.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Entry/Card/EntryCard.vue b/src/pages/Entry/Card/EntryCard.vue
new file mode 100644
index 000000000..5aa50fc94
--- /dev/null
+++ b/src/pages/Entry/Card/EntryCard.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Entry/EntryCreate.vue b/src/pages/Entry/EntryCreate.vue
new file mode 100644
index 000000000..37cfea1ad
--- /dev/null
+++ b/src/pages/Entry/EntryCreate.vue
@@ -0,0 +1,138 @@
+
+
+
+ (suppliersOptions = data)"
+ auto-load
+ />
+ (travelsOptionsOptions = data)"
+ auto-load
+ />
+ (companiesOptions = data)"
+ auto-load
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt?.nickname }}
+
+ #{{ scope.opt?.id }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt?.agencyModeName }} -
+ {{ scope.opt?.warehouseInName }} ({{
+ toDate(scope.opt?.shipped)
+ }}) → {{ scope.opt?.warehouseOutName }} ({{
+ toDate(scope.opt?.landed)
+ }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ es:
+ Supplier: Proveedor
+ Travel: Envío
+ Company: Empresa
+
diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue
new file mode 100644
index 000000000..1baa9e019
--- /dev/null
+++ b/src/pages/Entry/EntryList.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+ {{ t('entry.list.newEntry') }}
+
+
+
+
diff --git a/src/pages/Entry/EntryMain.vue b/src/pages/Entry/EntryMain.vue
new file mode 100644
index 000000000..66ce78f23
--- /dev/null
+++ b/src/pages/Entry/EntryMain.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/InvoiceOut/InvoiceOutGlobal.vue b/src/pages/InvoiceOut/InvoiceOutGlobal.vue
index 7284ca04e..7e2b43a76 100644
--- a/src/pages/InvoiceOut/InvoiceOutGlobal.vue
+++ b/src/pages/InvoiceOut/InvoiceOutGlobal.vue
@@ -49,30 +49,28 @@ const tableColumnComponents = {
},
};
-const columns = computed(() => {
- return [
- { label: 'Id', field: 'clientId', name: 'clientId', align: 'left' },
- {
- label: t('invoiceOut.globalInvoices.table.client'),
- field: 'clientName',
- name: 'clientName',
- align: 'left',
- },
- {
- label: t('invoiceOut.globalInvoices.table.addressId'),
- field: 'id',
- name: 'id',
- align: 'left',
- },
- {
- label: t('invoiceOut.globalInvoices.table.streetAddress'),
- field: 'nickname',
- name: 'nickname',
- align: 'left',
- },
- { label: 'Error', field: 'message', name: 'message', align: 'left' },
- ];
-});
+const columns = computed(() => [
+ { label: 'Id', field: 'clientId', name: 'clientId', align: 'left' },
+ {
+ label: t('invoiceOut.globalInvoices.table.client'),
+ field: 'clientName',
+ name: 'clientName',
+ align: 'left',
+ },
+ {
+ label: t('invoiceOut.globalInvoices.table.addressId'),
+ field: 'id',
+ name: 'id',
+ align: 'left',
+ },
+ {
+ label: t('invoiceOut.globalInvoices.table.streetAddress'),
+ field: 'nickname',
+ name: 'nickname',
+ align: 'left',
+ },
+ { label: 'Error', field: 'message', name: 'message', align: 'left' },
+]);
const rows = computed(() => {
if (!errors && !errors.length > 0) return [];
@@ -175,7 +173,7 @@ onUnmounted(() => {
.col-content {
border-radius: 4px;
- padding: 6px 6px 6px 6px;
+ padding: 6px;
}
diff --git a/src/pages/InvoiceOut/InvoiceOutNegativeBases.vue b/src/pages/InvoiceOut/InvoiceOutNegativeBases.vue
index 3595a650d..15010c66d 100644
--- a/src/pages/InvoiceOut/InvoiceOutNegativeBases.vue
+++ b/src/pages/InvoiceOut/InvoiceOutNegativeBases.vue
@@ -255,7 +255,7 @@ const selectWorkerId = (id) => {
diff --git a/src/pages/Order/Card/OrderCatalogFilter.vue b/src/pages/Order/Card/OrderCatalogFilter.vue
index c402dd5f4..766643eba 100644
--- a/src/pages/Order/Card/OrderCatalogFilter.vue
+++ b/src/pages/Order/Card/OrderCatalogFilter.vue
@@ -93,6 +93,8 @@ function exprBuilder(param, value) {
case 'categoryFk':
case 'typeFk':
return { [param]: value };
+ case 'search':
+ return { 'i.name': { like: `%${value}%` } };
}
}
@@ -141,24 +143,25 @@ const onOrderChange = (value, params, search) => {
params.orderBy = JSON.stringify(orderBy);
search();
};
+
+const setCategoryList = (data) => {
+ categoryList.value = (data || [])
+ .filter((category) => category.display)
+ .map((category) => ({
+ ...category,
+ icon: `vn:${(category.icon || '').split('-')[1]}`,
+ }));
+};
+
+const getCategoryClass = (category, params) => {
+ if (category.id === params?.categoryFk) {
+ return 'active';
+ }
+};
- {
- categoryList = (data || [])
- .filter((category) => category.display)
- .map((category) => ({
- ...category,
- icon: `vn:${(category.icon || '').split('-')[1]}`,
- }));
- }
- "
- />
+
{
- {{ t('price-kg') }} {{ toCurrency(item.priceKg) || 1123 }}
+ {{ t('price-kg') }} {{ toCurrency(item.priceKg) || DEFAULT_PRICE_KG }}
diff --git a/src/pages/Order/Card/OrderCatalogItemDialog.vue b/src/pages/Order/Card/OrderCatalogItemDialog.vue
index 8d12824e6..d5464ed1a 100644
--- a/src/pages/Order/Card/OrderCatalogItemDialog.vue
+++ b/src/pages/Order/Card/OrderCatalogItemDialog.vue
@@ -45,8 +45,7 @@ const addToOrder = async () => {
class="link"
@click="
() => {
- item.quantity =
- Number(item.quantity) + item.grouping;
+ item.quantity += item.grouping;
}
"
>
@@ -56,7 +55,7 @@ const addToOrder = async () => {
{
data.value = useCardDescription(entity.client.name, entity.id);
state.set('ClaimDescriptor', entity);
};
+
+const getConfirmationValue = (isConfirmed) => {
+ return t(isConfirmed ? 'order.summary.confirmed' : 'order.summary.notConfirmed');
+};
+
const total = ref(null);
@@ -86,13 +93,7 @@ const total = ref(null);
@@ -105,7 +106,10 @@ const total = ref(null);
-
+
diff --git a/src/pages/Order/Card/OrderSearchbar.vue b/src/pages/Order/Card/OrderSearchbar.vue
index 4d354603b..a768768a5 100644
--- a/src/pages/Order/Card/OrderSearchbar.vue
+++ b/src/pages/Order/Card/OrderSearchbar.vue
@@ -9,17 +9,14 @@ const { t } = useI18n();
-en:
- search-order: Search order
- search-order-info: You can search orders by reference
es:
- Search shelving: Buscar orden
- You can search by shelving reference: Puedes buscar por referencia de la orden
+ Search order: Buscar orden
+ You can search orders by reference: Puedes buscar por referencia de la orden
diff --git a/src/pages/Order/Card/OrderSummary.vue b/src/pages/Order/Card/OrderSummary.vue
index 0efffa3fa..0ddae2d16 100644
--- a/src/pages/Order/Card/OrderSummary.vue
+++ b/src/pages/Order/Card/OrderSummary.vue
@@ -78,7 +78,7 @@ const detailsColumns = ref([
/>
diff --git a/src/pages/Order/OrderCatalog.vue b/src/pages/Order/OrderCatalog.vue
index 4741f64e6..55f5e7da1 100644
--- a/src/pages/Order/OrderCatalog.vue
+++ b/src/pages/Order/OrderCatalog.vue
@@ -22,13 +22,6 @@ const catalogParams = {
const tags = ref([])
-function exprBuilder(param, value) {
- switch (param) {
- case 'search':
- return { 'i.name': { like: `%${value}%` } };
- }
-}
-
function extractTags(items) {
const resultTags = [];
(items || []).forEach((item) => {
@@ -52,8 +45,8 @@ function extractTags(items) {
url="Orders/CatalogFilter"
:limit="50"
:user-params="catalogParams"
- :expr-builder="exprBuilder"
:static-params="['orderFk', 'orderBy']"
+ :redirect="false"
/>
diff --git a/src/pages/Order/OrderLines.vue b/src/pages/Order/OrderLines.vue
index 316c9ae3f..48d0e548c 100644
--- a/src/pages/Order/OrderLines.vue
+++ b/src/pages/Order/OrderLines.vue
@@ -1,17 +1,19 @@
+
+
+
+
+
+
+
+
+es:
+ Search worker: Buscar trabajador
+ You can search by worker id or name: Puedes buscar por id o nombre del trabajador
+
diff --git a/src/router/modules/Supplier.js b/src/router/modules/Supplier.js
index 198a9581e..6ce1a7688 100644
--- a/src/router/modules/Supplier.js
+++ b/src/router/modules/Supplier.js
@@ -11,7 +11,17 @@ export default {
redirect: { name: 'SupplierMain' },
menus: {
main: ['SupplierList'],
- card: [],
+ card: [
+ 'SupplierBasicData',
+ 'SupplierFiscalData',
+ 'SupplierBillingData',
+ 'SupplierLog',
+ 'SupplierAccounts',
+ 'SupplierContacts',
+ 'SupplierAddresses',
+ 'SupplierConsumption',
+ 'SupplierAgencyTerm',
+ ],
},
children: [
{
@@ -55,6 +65,95 @@ export default {
component: () =>
import('src/pages/Supplier/Card/SupplierSummary.vue'),
},
+ {
+ path: 'basic-data',
+ name: 'SupplierBasicData',
+ meta: {
+ title: 'basicData',
+ icon: 'vn:settings',
+ },
+ component: () =>
+ import('src/pages/Supplier/Card/SupplierBasicData.vue'),
+ },
+ {
+ path: 'fiscal-data',
+ name: 'SupplierFiscalData',
+ meta: {
+ title: 'fiscalData',
+ icon: 'vn:dfiscales',
+ },
+ component: () =>
+ import('src/pages/Supplier/Card/SupplierFiscalData.vue'),
+ },
+ {
+ path: 'billing-data',
+ name: 'SupplierBillingData',
+ meta: {
+ title: 'billingData',
+ icon: 'vn:payment',
+ },
+ component: () =>
+ import('src/pages/Supplier/Card/SupplierBillingData.vue'),
+ },
+ {
+ path: 'log',
+ name: 'SupplierLog',
+ meta: {
+ title: 'log',
+ icon: 'vn:History',
+ },
+ component: () => import('src/pages/Supplier/Card/SupplierLog.vue'),
+ },
+ {
+ path: 'account',
+ name: 'SupplierAccounts',
+ meta: {
+ title: 'accounts',
+ icon: 'vn:account',
+ },
+ component: () =>
+ import('src/pages/Supplier/Card/SupplierAccounts.vue'),
+ },
+ {
+ path: 'contact',
+ name: 'SupplierContacts',
+ meta: {
+ title: 'contacts',
+ icon: 'contact_phone',
+ },
+ component: () =>
+ import('src/pages/Supplier/Card/SupplierContacts.vue'),
+ },
+ {
+ path: 'address',
+ name: 'SupplierAddresses',
+ meta: {
+ title: 'addresses',
+ icon: 'vn:delivery',
+ },
+ component: () =>
+ import('src/pages/Supplier/Card/SupplierAddresses.vue'),
+ },
+ {
+ path: 'consumption',
+ name: 'SupplierConsumption',
+ meta: {
+ title: 'consumption',
+ icon: 'show_chart',
+ },
+ component: () =>
+ import('src/pages/Supplier/Card/SupplierConsumption.vue'),
+ },
+ {
+ path: 'agency-term',
+ name: 'SupplierAgencyTerm',
+ meta: {
+ title: 'agencyTerm',
+ icon: 'vn:agency-term',
+ },
+ component: () =>
+ import('src/pages/Supplier/Card/SupplierAgencyTerm.vue'),
+ },
],
},
],
diff --git a/src/router/modules/customer.js b/src/router/modules/customer.js
index ec81a9c77..3c8445f42 100644
--- a/src/router/modules/customer.js
+++ b/src/router/modules/customer.js
@@ -10,8 +10,29 @@ export default {
component: RouterView,
redirect: { name: 'CustomerMain' },
menus: {
- main: ['CustomerList', 'CustomerPayments', 'CustomerExtendedList'],
- card: ['CustomerBasicData'],
+ main: [
+ 'CustomerList',
+ 'CustomerPayments',
+ 'CustomerExtendedList',
+ 'CustomerNotifications',
+ 'CustomerDefaulter',
+ ],
+ card: [
+ 'CustomerBasicData',
+ 'CustomerFiscalData',
+ 'CustomerBillingData',
+ 'CustomerConsignees',
+ 'CustomerNotes',
+ 'CustomerCredits',
+ 'CustomerGreuges',
+ 'CustomerBalance',
+ 'CustomerRecoveries',
+ 'CustomerWebAccess',
+ 'CustomerLog',
+ 'CustomerSms',
+ 'CustomerCreditManagement',
+ 'CustomerOthers',
+ ],
},
children: [
{
@@ -44,7 +65,8 @@ export default {
title: 'webPayments',
icon: 'vn:onlinepayment',
},
- component: () => import('src/pages/Customer/CustomerPayments.vue'),
+ component: () =>
+ import('src/pages/Customer/Payments/CustomerPayments.vue'),
},
{
path: 'extendedList',
@@ -54,7 +76,31 @@ export default {
icon: 'vn:client',
},
component: () =>
- import('src/pages/Customer/CustomerExtendedList.vue'),
+ import(
+ 'src/pages/Customer/ExtendedList/CustomerExtendedList.vue'
+ ),
+ },
+ {
+ path: 'notifications',
+ name: 'CustomerNotifications',
+ meta: {
+ title: 'notifications',
+ icon: 'notifications',
+ },
+ component: () =>
+ import(
+ 'src/pages/Customer/Notifications/CustomerNotifications.vue'
+ ),
+ },
+ {
+ path: 'defaulter',
+ name: 'CustomerDefaulter',
+ meta: {
+ title: 'defaulter',
+ icon: 'vn:risk',
+ },
+ component: () =>
+ import('src/pages/Customer/Defaulter/CustomerDefaulter.vue'),
},
],
},
@@ -84,6 +130,132 @@ export default {
component: () =>
import('src/pages/Customer/Card/CustomerBasicData.vue'),
},
+ {
+ path: 'fiscal-data',
+ name: 'CustomerFiscalData',
+ meta: {
+ title: 'fiscalData',
+ icon: 'vn:dfiscales',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerFiscalData.vue'),
+ },
+ {
+ path: 'billing-data',
+ name: 'CustomerBillingData',
+ meta: {
+ title: 'billingData',
+ icon: 'vn:payment',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerBillingData.vue'),
+ },
+ {
+ path: 'consignees',
+ name: 'CustomerConsignees',
+ meta: {
+ title: 'consignees',
+ icon: 'vn:delivery',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerConsignees.vue'),
+ },
+ {
+ path: 'notes',
+ name: 'CustomerNotes',
+ meta: {
+ title: 'notes',
+ icon: 'vn:notes',
+ },
+ component: () => import('src/pages/Customer/Card/CustomerNotes.vue'),
+ },
+ {
+ path: 'credits',
+ name: 'CustomerCredits',
+ meta: {
+ title: 'credits',
+ icon: 'vn:credit',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerCredits.vue'),
+ },
+ {
+ path: 'greuges',
+ name: 'CustomerGreuges',
+ meta: {
+ title: 'greuges',
+ icon: 'vn:greuge',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerGreuges.vue'),
+ },
+ {
+ path: 'balance',
+ name: 'CustomerBalance',
+ meta: {
+ title: 'balance',
+ icon: 'vn:invoice',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerBalance.vue'),
+ },
+ {
+ path: 'recoveries',
+ name: 'CustomerRecoveries',
+ meta: {
+ title: 'recoveries',
+ icon: 'vn:recovery',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerRecoveries.vue'),
+ },
+ {
+ path: 'web-access',
+ name: 'CustomerWebAccess',
+ meta: {
+ title: 'webAccess',
+ icon: 'vn:web',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerWebAccess.vue'),
+ },
+ {
+ path: 'log',
+ name: 'CustomerLog',
+ meta: {
+ title: 'log',
+ icon: 'vn:History',
+ },
+ component: () => import('src/pages/Customer/Card/CustomerLog.vue'),
+ },
+ {
+ path: 'sms',
+ name: 'CustomerSms',
+ meta: {
+ title: 'sms',
+ icon: 'sms',
+ },
+ component: () => import('src/pages/Customer/Card/CustomerSms.vue'),
+ },
+ {
+ path: 'credit-management',
+ name: 'CustomerCreditManagement',
+ meta: {
+ title: 'creditManagement',
+ icon: 'paid',
+ },
+ component: () =>
+ import('src/pages/Customer/Card/CustomerCreditManagement.vue'),
+ },
+ {
+ path: 'others',
+ name: 'CustomerOthers',
+ meta: {
+ title: 'others',
+ icon: 'pending',
+ },
+ component: () => import('src/pages/Customer/Card/CustomerOthers.vue'),
+ },
],
},
],
diff --git a/src/router/modules/department.js b/src/router/modules/department.js
new file mode 100644
index 000000000..aaffc3460
--- /dev/null
+++ b/src/router/modules/department.js
@@ -0,0 +1,46 @@
+import { RouterView } from 'vue-router';
+
+export default {
+ path: '/department',
+ name: 'Department',
+ meta: {
+ title: 'department',
+ icon: 'vn:greuge',
+ },
+ component: RouterView,
+ redirect: { name: 'DepartmentCard' },
+ menus: {
+ main: [],
+ card: ['DepartmentBasicData'],
+ },
+ children: [
+ {
+ name: 'DepartmentCard',
+ path: 'department/:id',
+ component: () => import('src/pages/Department/Card/DepartmentCard.vue'),
+ redirect: { name: 'DepartmentSummary' },
+ children: [
+ {
+ name: 'DepartmentSummary',
+ path: 'summary',
+ meta: {
+ title: 'summary',
+ icon: 'launch',
+ },
+ component: () =>
+ import('src/pages/Department/Card/DepartmentSummary.vue'),
+ },
+ {
+ name: 'DepartmentBasicData',
+ path: 'basic-data',
+ meta: {
+ title: 'basicData',
+ icon: 'vn:settings',
+ },
+ component: () =>
+ import('src/pages/Department/Card/DepartmentBasicData.vue'),
+ },
+ ],
+ },
+ ],
+};
diff --git a/src/router/modules/entry.js b/src/router/modules/entry.js
new file mode 100644
index 000000000..6a1cd6173
--- /dev/null
+++ b/src/router/modules/entry.js
@@ -0,0 +1,61 @@
+import { RouterView } from 'vue-router';
+
+export default {
+ path: '/entry',
+ name: 'Entry',
+ meta: {
+ title: 'entries',
+ icon: 'vn:entry',
+ },
+ component: RouterView,
+ redirect: { name: 'EntryMain' },
+ menus: {
+ main: ['EntryList'],
+ card: [],
+ },
+ children: [
+ {
+ path: '',
+ name: 'EntryMain',
+ component: () => import('src/pages/Entry/EntryMain.vue'),
+ redirect: { name: 'EntryList' },
+ children: [
+ {
+ path: 'list',
+ name: 'EntryList',
+ meta: {
+ title: 'list',
+ icon: 'view_list',
+ },
+ component: () => import('src/pages/Entry/EntryList.vue'),
+ },
+ {
+ path: 'create',
+ name: 'EntryCreate',
+ meta: {
+ title: 'create',
+ },
+ component: () => import('src/pages/Entry/EntryCreate.vue'),
+ },
+ ],
+ },
+ // {
+ // name: 'EntryCard',
+ // path: ':id',
+ // component: () => import('src/pages/Entry/Card/EntryCard.vue'),
+ // redirect: { name: 'EntrySummary' },
+ // children: [
+ // {
+ // name: 'EntrySummary',
+ // path: 'summary',
+ // meta: {
+ // title: 'summary',
+ // icon: 'launch',
+ // },
+ // component: () =>
+ // import('src/pages/Entry/Card/EntrySummary.vue'),
+ // },
+ // ],
+ // },
+ ],
+};
diff --git a/src/router/modules/index.js b/src/router/modules/index.js
index 1eff2c180..cc5034959 100644
--- a/src/router/modules/index.js
+++ b/src/router/modules/index.js
@@ -10,6 +10,8 @@ import Route from './route';
import Supplier from './Supplier';
import Travel from './travel';
import Order from './order';
+import Department from './department';
+import Entry from './entry';
export default [
Customer,
@@ -24,4 +26,6 @@ export default [
Travel,
Order,
invoiceIn,
+ Department,
+ Entry,
];
diff --git a/src/router/modules/worker.js b/src/router/modules/worker.js
index dfc994e96..27a6f19a9 100644
--- a/src/router/modules/worker.js
+++ b/src/router/modules/worker.js
@@ -10,8 +10,9 @@ export default {
component: RouterView,
redirect: { name: 'WorkerMain' },
menus: {
- main: ['WorkerList'],
+ main: ['WorkerList', 'WorkerDepartment'],
card: ['WorkerNotificationsManager'],
+ departmentCard: ['BasicData'],
},
children: [
{
@@ -29,6 +30,15 @@ export default {
},
component: () => import('src/pages/Worker/WorkerList.vue'),
},
+ {
+ path: 'department',
+ name: 'WorkerDepartment',
+ meta: {
+ title: 'department',
+ icon: 'vn:greuge',
+ },
+ component: () => import('src/pages/Worker/WorkerDepartment.vue'),
+ },
{
path: 'create',
name: 'WorkerCreate',
diff --git a/src/router/routes.js b/src/router/routes.js
index ee8b30d64..6a2fa6a97 100644
--- a/src/router/routes.js
+++ b/src/router/routes.js
@@ -8,8 +8,10 @@ import wagon from './modules/wagon';
import supplier from './modules/Supplier';
import route from './modules/route';
import travel from './modules/travel';
+import department from './modules/department';
import shelving from 'src/router/modules/shelving';
-import order from "src/router/modules/order";
+import order from 'src/router/modules/order';
+import entry from 'src/router/modules/entry';
const routes = [
{
@@ -61,6 +63,8 @@ const routes = [
route,
supplier,
travel,
+ department,
+ entry,
{
path: '/:catchAll(.*)*',
name: 'NotFound',
diff --git a/src/stores/useNavigationStore.js b/src/stores/useNavigationStore.js
index 63dce6162..6964c9401 100644
--- a/src/stores/useNavigationStore.js
+++ b/src/stores/useNavigationStore.js
@@ -19,6 +19,7 @@ export const useNavigationStore = defineStore('navigationStore', () => {
'supplier',
'travel',
'invoiceIn',
+ 'entry',
];
const pinnedModules = ref([]);
const role = useRole();
diff --git a/test/vitest/__tests__/pages/Customer/CustomerPayments.spec.js b/test/vitest/__tests__/pages/Customer/CustomerPayments.spec.js
index 5d096f113..13293f596 100644
--- a/test/vitest/__tests__/pages/Customer/CustomerPayments.spec.js
+++ b/test/vitest/__tests__/pages/Customer/CustomerPayments.spec.js
@@ -1,11 +1,10 @@
import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
-import CustomerPayments from 'pages/Customer/CustomerPayments.vue';
+import CustomerPayments from 'src/pages/Customer/Payments/CustomerPayments.vue';
describe('CustomerPayments', () => {
let vm;
-
beforeAll(() => {
vm = createWrapper(CustomerPayments, {
global: {
@@ -13,7 +12,7 @@ describe('CustomerPayments', () => {
mocks: {
fetch: vi.fn(),
},
- }
+ },
}).vm;
});
@@ -28,11 +27,10 @@ describe('CustomerPayments', () => {
await vm.confirmTransaction({ id: 1 });
-
expect(vm.quasar.notify).toHaveBeenCalledWith(
expect.objectContaining({
message: 'Payment confirmed',
- type: 'positive'
+ type: 'positive',
})
);
});
|