+
+
+
diff --git a/src/css/app.scss b/src/css/app.scss
index bcc75ab38..f11ab865c 100644
--- a/src/css/app.scss
+++ b/src/css/app.scss
@@ -17,9 +17,9 @@ a {
// Removes chrome autofill background
input:-webkit-autofill,
select:-webkit-autofill {
- color: var(--vn-text) ;
+ color: var(--vn-text);
font-family: $typography-font-family;
- -webkit-text-fill-color: var(--vn-text) ;
+ -webkit-text-fill-color: var(--vn-text);
-webkit-background-clip: text !important;
background-clip: text !important;
}
@@ -48,6 +48,10 @@ body.body--dark {
background-color: var(--vn-dark);
}
+.color-vn-text {
+ color: var(--vn-text);
+}
+
.vn-card {
background-color: var(--vn-gray);
color: var(--vn-text);
diff --git a/src/filters/index.js b/src/filters/index.js
index f0120e663..478cb0ac8 100644
--- a/src/filters/index.js
+++ b/src/filters/index.js
@@ -8,11 +8,13 @@ import toPercentage from './toPercentage';
import toLowerCamel from './toLowerCamel';
import dashIfEmpty from './dashIfEmpty';
import dateRange from './dateRange';
+import toHour from './toHour';
export {
toLowerCase,
toLowerCamel,
toDate,
+ toHour,
toDateString,
toDateHour,
toRelativeDate,
diff --git a/src/filters/isValidDate.js b/src/filters/isValidDate.js
new file mode 100644
index 000000000..8365564b8
--- /dev/null
+++ b/src/filters/isValidDate.js
@@ -0,0 +1,3 @@
+export default function isValidDate(date) {
+ return !isNaN(new Date(date).getTime());
+}
diff --git a/src/filters/toHour.js b/src/filters/toHour.js
new file mode 100644
index 000000000..f24f81949
--- /dev/null
+++ b/src/filters/toHour.js
@@ -0,0 +1,16 @@
+import isValidDate from 'filters/isValidDate';
+
+export default function toHour(date) {
+ if (!isValidDate(date)) {
+ return '--:--';
+ }
+ const dateHour = new Date(date);
+ let hours = dateHour.getUTCHours();
+ hours = hours % 12;
+ hours = hours ? hours : 12;
+
+ let minutes = dateHour.getUTCMinutes();
+ minutes = minutes < 10 ? minutes.toString().padStart(2, '0') : minutes;
+
+ return `${hours}:${minutes} ${dateHour.getUTCHours() >= 12 ? 'PM' : 'AM'}`;
+}
diff --git a/src/i18n/en/index.js b/src/i18n/en/index.js
index 139977e32..1a7a4c27e 100644
--- a/src/i18n/en/index.js
+++ b/src/i18n/en/index.js
@@ -261,12 +261,89 @@ export default {
pageTitles: {
entries: 'Entries',
list: 'List',
- createEntry: 'New entry',
summary: 'Summary',
- create: 'Create',
+ basicData: 'Basic data',
+ buys: 'Buys',
+ notes: 'Notes',
+ log: 'Log',
},
list: {
newEntry: 'New entry',
+ landed: 'Landed',
+ invoiceNumber: 'Invoice number',
+ supplier: 'Supplier',
+ booked: 'Booked',
+ confirmed: 'Confirmed',
+ ordered: 'Ordered',
+ },
+ summary: {
+ commission: 'Commission',
+ currency: 'Currency',
+ company: 'Company',
+ reference: 'Reference',
+ invoiceNumber: 'Invoice number',
+ ordered: 'Ordered',
+ confirmed: 'Confirmed',
+ booked: 'Booked',
+ raid: 'Raid',
+ excludedFromAvailable: 'Inventory',
+ travelReference: 'Reference',
+ travelAgency: 'Agency',
+ travelShipped: 'Shipped',
+ travelWarehouseOut: 'Warehouse Out',
+ travelDelivered: 'Delivered',
+ travelLanded: 'Landed',
+ travelWarehouseIn: 'Warehouse In',
+ travelReceived: 'Received',
+ buys: 'Buys',
+ quantity: 'Quantity',
+ stickers: 'Stickers',
+ package: 'Package',
+ weight: 'Weight',
+ packing: 'Packing',
+ grouping: 'Grouping',
+ buyingValue: 'Buying value',
+ import: 'Import',
+ pvp: 'PVP',
+ item: 'Item',
+ },
+ basicData: {
+ supplier: 'Supplier',
+ travel: 'Travel',
+ reference: 'Reference',
+ invoiceNumber: 'Invoice number',
+ company: 'Company',
+ currency: 'Currency',
+ commission: 'Commission',
+ observation: 'Observation',
+ ordered: 'Ordered',
+ confirmed: 'Confirmed',
+ booked: 'Booked',
+ raid: 'Raid',
+ excludedFromAvailable: 'Inventory',
+ },
+ buys: {
+ groupingPrice: 'Grouping price',
+ packingPrice: 'Packing price',
+ reference: 'Reference',
+ observations: 'Observations',
+ item: 'Item',
+ description: 'Description',
+ size: 'Size',
+ packing: 'Packing',
+ grouping: 'Grouping',
+ buyingValue: 'Buying value',
+ packagingFk: 'Box',
+ file: 'File',
+ },
+ notes: {
+ observationType: 'Observation type',
+ description: 'Description',
+ },
+ descriptor: {
+ agency: 'Agency',
+ landed: 'Landed',
+ warehouseOut: 'Warehouse Out',
},
},
ticket: {
@@ -807,6 +884,10 @@ export default {
pageTitles: {
routes: 'Routes',
cmrsList: 'External CMRs list',
+ RouteList: 'List',
+ create: 'Create',
+ basicData: 'Basic Data',
+ summary: 'Summary',
},
cmr: {
list: {
@@ -877,6 +958,72 @@ export default {
create: {
supplierName: 'Supplier name',
},
+ basicData: {
+ alias: 'Alias',
+ workerFk: 'Responsible',
+ isSerious: 'Verified',
+ isActive: 'Active',
+ isPayMethodChecked: 'PayMethod checked',
+ note: 'Notes',
+ },
+ fiscalData: {
+ name: 'Social name *',
+ nif: 'Tax number *',
+ account: 'Account',
+ sageTaxTypeFk: 'Sage tax type',
+ sageWithholdingFk: 'Sage withholding',
+ sageTransactionTypeFk: 'Sage transaction type',
+ supplierActivityFk: 'Supplier activity',
+ healthRegister: 'Health register',
+ street: 'Street',
+ postcode: 'Postcode',
+ city: 'City *',
+ provinceFk: 'Province',
+ country: 'Country',
+ isTrucker: 'Trucker',
+ isVies: 'Vies',
+ },
+ billingData: {
+ payMethodFk: 'Billing data',
+ payDemFk: 'Payment deadline',
+ payDay: 'Pay day',
+ },
+ accounts: {
+ iban: 'Iban',
+ bankEntity: 'Bank entity',
+ beneficiary: 'Beneficiary',
+ },
+ contacts: {
+ name: 'Name',
+ phone: 'Phone',
+ mobile: 'Mobile',
+ email: 'Email',
+ observation: 'Notes',
+ },
+ addresses: {
+ street: 'Street',
+ postcode: 'Postcode',
+ phone: 'Phone',
+ name: 'Name',
+ city: 'City',
+ province: 'Province',
+ mobile: 'Mobile',
+ },
+ agencyTerms: {
+ agencyFk: 'Agency',
+ minimumM3: 'Minimum M3',
+ packagePrice: 'Package Price',
+ kmPrice: 'Km Price',
+ m3Price: 'M3 Price',
+ routePrice: 'Route price',
+ minimumKm: 'Minimum Km',
+ addRow: 'Add row',
+ },
+ consumption: {
+ entry: 'Entry',
+ date: 'Date',
+ reference: 'Reference',
+ },
},
travel: {
pageTitles: {
diff --git a/src/i18n/es/index.js b/src/i18n/es/index.js
index 43f624cb3..83de42ee0 100644
--- a/src/i18n/es/index.js
+++ b/src/i18n/es/index.js
@@ -261,10 +261,88 @@ export default {
entries: 'Entradas',
list: 'Listado',
summary: 'Resumen',
- create: 'Crear',
+ basicData: 'Datos básicos',
+ buys: 'Compras',
+ notes: 'Notas',
+ log: 'Historial',
},
list: {
newEntry: 'Nueva entrada',
+ landed: 'F. entrega',
+ invoiceNumber: 'Núm. factura',
+ supplier: 'Proveedor',
+ booked: 'Asentado',
+ confirmed: 'Confirmado',
+ ordered: 'Pedida',
+ },
+ summary: {
+ commission: 'Comisión',
+ currency: 'Moneda',
+ company: 'Empresa',
+ reference: 'Referencia',
+ invoiceNumber: 'Núm. factura',
+ ordered: 'Pedida',
+ confirmed: 'Confirmado',
+ booked: 'Asentado',
+ raid: 'Redada',
+ excludedFromAvailable: 'Inventario',
+ travelReference: 'Referencia',
+ travelAgency: 'Agencia',
+ travelShipped: 'F. envio',
+ travelWarehouseOut: 'Alm. salida',
+ travelDelivered: 'Enviada',
+ travelLanded: 'F. entrega',
+ travelWarehouseIn: 'Alm. entrada',
+ travelReceived: 'Recibida',
+ buys: 'Compras',
+ quantity: 'Cantidad',
+ stickers: 'Etiquetas',
+ package: 'Embalaje',
+ weight: 'Peso',
+ packing: 'Packing',
+ grouping: 'Grouping',
+ buyingValue: 'Coste',
+ import: 'Importe',
+ pvp: 'PVP',
+ item: 'Artículo',
+ },
+ basicData: {
+ supplier: 'Proveedor',
+ travel: 'Envío',
+ reference: 'Referencia',
+ invoiceNumber: 'Núm. factura',
+ company: 'Empresa',
+ currency: 'Moneda',
+ observation: 'Observación',
+ commission: 'Comisión',
+ ordered: 'Pedida',
+ confirmed: 'Confirmado',
+ booked: 'Asentado',
+ raid: 'Redada',
+ excludedFromAvailable: 'Inventario',
+ },
+ buys: {
+ groupingPrice: 'Precio grouping',
+ packingPrice: 'Precio packing',
+ reference: 'Referencia',
+ observations: 'Observaciónes',
+ item: 'Artículo',
+ description: 'Descripción',
+ size: 'Medida',
+ packing: 'Packing',
+ grouping: 'Grouping',
+ buyingValue: 'Coste',
+ packagingFk: 'Embalaje',
+ file: 'Fichero',
+ },
+ notes: {
+ observationType: 'Tipo de observación',
+ description: 'Descripción',
+ },
+ descriptor: {
+ agency: 'Agencia',
+ landed: 'F. entrega',
+ warehouseOut: 'Alm. salida',
},
},
ticket: {
@@ -806,6 +884,10 @@ export default {
pageTitles: {
routes: 'Rutas',
cmrsList: 'Listado de CMRs externos',
+ RouteList: 'Listado',
+ create: 'Crear',
+ basicData: 'Datos básicos',
+ summary: 'Summary',
},
cmr: {
list: {
@@ -876,6 +958,72 @@ export default {
create: {
supplierName: 'Nombre del proveedor',
},
+ basicData: {
+ alias: 'Alias',
+ workerFk: 'Responsable',
+ isSerious: 'Verificado',
+ isActive: 'Activo',
+ isPayMethodChecked: 'Método de pago validado',
+ note: 'Notas',
+ },
+ fiscalData: {
+ name: 'Razón social *',
+ nif: 'NIF/CIF *',
+ account: 'Cuenta',
+ sageTaxTypeFk: 'Tipo de impuesto sage',
+ sageWithholdingFk: 'Retención sage',
+ sageTransactionTypeFk: 'Tipo de transacción sage',
+ supplierActivityFk: 'Actividad proveedor',
+ healthRegister: 'Pasaporte sanitario',
+ street: 'Calle',
+ postcode: 'Código postal',
+ city: 'Población *',
+ provinceFk: 'Provincia',
+ country: 'País',
+ isTrucker: 'Transportista',
+ isVies: 'Vies',
+ },
+ billingData: {
+ payMethodFk: 'Forma de pago',
+ payDemFk: 'Plazo de pago',
+ payDay: 'Día de pago',
+ },
+ accounts: {
+ iban: 'Iban',
+ bankEntity: 'Entidad bancaria',
+ beneficiary: 'Beneficiario',
+ },
+ contacts: {
+ name: 'Nombre',
+ phone: 'Teléfono',
+ mobile: 'Móvil',
+ email: 'Email',
+ observation: 'Notas',
+ },
+ addresses: {
+ street: 'Dirección',
+ postcode: 'Código postal',
+ phone: 'Teléfono',
+ name: 'Nombre',
+ city: 'Población',
+ province: 'Provincia',
+ mobile: 'Móvil',
+ },
+ agencyTerms: {
+ agencyFk: 'Agencia',
+ minimumM3: 'M3 mínimos',
+ packagePrice: 'Precio bulto',
+ kmPrice: 'Precio Km',
+ m3Price: 'Precio M3',
+ routePrice: 'Precio ruta',
+ minimumKm: 'Km mínimos',
+ addRow: 'Añadir fila',
+ },
+ consumption: {
+ entry: 'Entrada',
+ date: 'Fecha',
+ reference: 'Referencia',
+ },
},
travel: {
pageTitles: {
diff --git a/src/pages/Customer/Card/CustomerBillingData.vue b/src/pages/Customer/Card/CustomerBillingData.vue
index c14f3b499..1543eac7a 100644
--- a/src/pages/Customer/Card/CustomerBillingData.vue
+++ b/src/pages/Customer/Card/CustomerBillingData.vue
@@ -1,3 +1,130 @@
+
+
- Billing data
+ (payMethods = data)" auto-load url="PayMethods" />
+ (bankEntitiesOptions = data)"
+ :filter="filter"
+ auto-load
+ url="BankEntities"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.bic }}
+ {{ scope.opt.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Billing data: Forma de pago
+ Due day: Vencimiento
+ IBAN: IBAN
+ Swift / BIC: Swift / BIC
+ Received LCR: Recibido LCR
+ VNL core received: Recibido core VNL
+ VNL B2B received: Recibido B2B VNL
+
diff --git a/src/pages/Customer/Card/CustomerConsignees.vue b/src/pages/Customer/Card/CustomerConsignees.vue
index bab2bd1ff..4ddf1dea1 100644
--- a/src/pages/Customer/Card/CustomerConsignees.vue
+++ b/src/pages/Customer/Card/CustomerConsignees.vue
@@ -1,3 +1,176 @@
+
+
- Consignees
+ (provincesLocation = data)"
+ auto-load
+ url="Provinces/location"
+ />
+
+
+
+
+
+
+
+
+
+
+ {{ item.nickname }} - #{{ item.id }}
+
+
{{ item.street }}
+
+ {{ item.postalCode }} - {{ item.city }},
+ {{ setProvince(item.provinceFk) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ observation.observationType.description }}:
+
+
{{ observation.description }}
+
+
+
+
+
+
+
+ {{ t('New consignee') }}
+
+
+
+
+
+
+
+
+
+es:
+ Is equalizated: Recargo de equivalencia
+ Is logiflora allowed: Compra directa en Holanda
+ New consignee: Nuevo consignatario
+
diff --git a/src/pages/Customer/Card/CustomerCredits.vue b/src/pages/Customer/Card/CustomerCredits.vue
index e8a4c3b48..91e225dd4 100644
--- a/src/pages/Customer/Card/CustomerCredits.vue
+++ b/src/pages/Customer/Card/CustomerCredits.vue
@@ -1,3 +1,148 @@
+
+
- Credits
+
+
+
+
+
+
+ {{ props.value }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('New credit') }}
+
+
+
+
+es:
+ Since: Desde
+ Employee: Empleado
+ Credit: Credito
+ New credit: Nuevo credito
+
diff --git a/src/pages/Customer/Card/CustomerFiscalData.vue b/src/pages/Customer/Card/CustomerFiscalData.vue
index ced6012b8..0edcc3c07 100644
--- a/src/pages/Customer/Card/CustomerFiscalData.vue
+++ b/src/pages/Customer/Card/CustomerFiscalData.vue
@@ -1,3 +1,295 @@
+
+
- Fiscal data
+ (typesTaxes = data)" url="SageTaxTypes" />
+ (typesTransactions = data)"
+ url="SageTransactionTypes"
+ />
+ (citiesLocationOptions = data)"
+ auto-load
+ url="Towns/location"
+ />
+ (provincesLocationOptions = data)"
+ auto-load
+ url="Provinces/location"
+ />
+ (countriesOptions = data)"
+ auto-load
+ url="Countries"
+ />
+ (postcodesOptions = data)"
+ auto-load
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.code }}
+ {{ scope.opt.code }} -
+ {{ scope.opt.town.name }} ({{
+ scope.opt.town.province.name
+ }},
+ {{
+ scope.opt.town.province.country.country
+ }})
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.name }}
+
+ {{
+ `${scope.opt.name}, ${scope.opt.province.name} (${scope.opt.province.country.country})`
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ `${scope.opt.name} (${scope.opt.country.country})`
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Social name: Razón social
+ Tax number: NIF / CIF
+ Street: Dirección fiscal
+ Sage tax type: Tipo de impuesto Sage
+ Sage transaction type: Tipo de transacción Sage
+ Postcode: Código postal
+ City: Población
+ Province: Provincia
+ Country: País
+ Active: Activo
+ Frozen: Congelado
+ Has to invoice: Factura
+ Vies: Vies
+ Notify by email: Notificar vía e-mail
+ Invoice by address: Facturar por consignatario
+ Is equalizated: Recargo de equivalencia
+ Verified data: Datos comprobados
+ Incoterms authorization: Autorización incoterms
+ Electronic invoice: Factura electrónica
+
diff --git a/src/pages/Customer/Card/CustomerNotes.vue b/src/pages/Customer/Card/CustomerNotes.vue
index 65ade2903..09f5c0ce6 100644
--- a/src/pages/Customer/Card/CustomerNotes.vue
+++ b/src/pages/Customer/Card/CustomerNotes.vue
@@ -1,3 +1,96 @@
+
+
- Notes
+
+
+
+
+
+
+
{{ item.worker.user.nickname }}
+
+ {{
+ date.formatDate(item?.created, 'DD-MM-YYYY HH:mm:ss')
+ }}
+
+
+ {{ item.text }}
+
+
+
+
+
+ {{ t('globals.noResults') }}
+
+
+
+
+
+
+ {{ t('New consignee') }}
+
+
+
+
+
+
+
+
+
+ {{ t('New consignee') }}
+
+
+
+
diff --git a/src/pages/Customer/CustomerCreate.vue b/src/pages/Customer/CustomerCreate.vue
index cfaef0855..310deb71a 100644
--- a/src/pages/Customer/CustomerCreate.vue
+++ b/src/pages/Customer/CustomerCreate.vue
@@ -30,6 +30,7 @@ const newClientForm = reactive({
});
const postcodeFetchDataRef = ref(null);
+const townsFetchDataRef = ref(null);
const workersOptions = ref([]);
const businessTypesOptions = ref([]);
const citiesLocationOptions = ref([]);
@@ -37,8 +38,13 @@ const provincesLocationOptions = ref([]);
const countriesOptions = ref([]);
const postcodesOptions = ref([]);
-const onPostcodeCreated = async () => {
- postcodeFetchDataRef.value.fetch();
+const onPostcodeCreated = async ({ code, provinceFk, townFk, countryFk }, formData) => {
+ await postcodeFetchDataRef.value.fetch();
+ await townsFetchDataRef.value.fetch();
+ formData.postcode = code;
+ formData.provinceFk = provinceFk;
+ formData.city = citiesLocationOptions.value.find((town) => town.id === townFk).name;
+ formData.countryFk = countryFk;
};
@@ -60,6 +66,7 @@ const onPostcodeCreated = async () => {
url="BusinessTypes"
/>
(citiesLocationOptions = data)"
auto-load
url="Towns/location"
@@ -78,7 +85,6 @@ const onPostcodeCreated = async () => {
@@ -145,7 +151,7 @@ const onPostcodeCreated = async () => {
>
diff --git a/src/pages/Customer/Defaulter/CustomerDefaulter.vue b/src/pages/Customer/Defaulter/CustomerDefaulter.vue
index d54d5df35..bf7480985 100644
--- a/src/pages/Customer/Defaulter/CustomerDefaulter.vue
+++ b/src/pages/Customer/Defaulter/CustomerDefaulter.vue
@@ -2,7 +2,7 @@
import { ref, computed, onBeforeMount } from 'vue';
import { useI18n } from 'vue-i18n';
-import { QBtn, QCheckbox } from 'quasar';
+import { QBtn, QCheckbox, useQuasar } from 'quasar';
import { toCurrency, toDate } from 'filters/index';
import { useArrayData } from 'composables/useArrayData';
@@ -12,34 +12,19 @@ import CustomerNotificationsFilter from './CustomerDefaulterFilter.vue';
import CustomerBalanceDueTotal from './CustomerBalanceDueTotal.vue';
import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue';
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
+import CustomerDefaulterAddObservation from './CustomerDefaulterAddObservation.vue';
const { t } = useI18n();
const stateStore = useStateStore();
+const quasar = useQuasar();
const arrayData = ref(null);
const balanceDueTotal = ref(0);
-
-onBeforeMount(async () => {
- arrayData.value = useArrayData('CustomerDefaulter', {
- url: 'Defaulters/filter',
- limit: 0,
- });
- await arrayData.value.fetch({ append: false });
- balanceDueTotal.value = arrayData.value.store.data.reduce(
- (accumulator, currentValue) => {
- return accumulator + (currentValue['amount'] || 0);
- },
- 0
- );
- console.log(balanceDueTotal.value);
- stateStore.rightDrawer = true;
-});
-
-const rows = computed(() => arrayData.value.store.data);
-
+const customerId = ref(0);
const selected = ref([]);
const workerId = ref(0);
-const customerId = ref(0);
+
+const rows = computed(() => arrayData.value.store.data);
const tableColumnComponents = {
client: {
@@ -49,11 +34,10 @@ const tableColumnComponents = {
},
isWorker: {
component: QCheckbox,
- props: ({ value }) => ({
+ props: ({ row }) => ({
disable: true,
- 'model-value': Boolean(value),
+ 'model-value': Boolean(row.selected),
}),
- event: () => {},
},
salesperson: {
component: QBtn,
@@ -171,6 +155,25 @@ const columns = computed(() => [
},
]);
+onBeforeMount(() => {
+ getArrayData();
+});
+
+const getArrayData = async () => {
+ arrayData.value = useArrayData('CustomerDefaulter', {
+ url: 'Defaulters/filter',
+ limit: 0,
+ });
+ await arrayData.value.fetch({ append: false });
+ balanceDueTotal.value = arrayData.value.store.data.reduce(
+ (accumulator, currentValue) => {
+ return accumulator + (currentValue['amount'] || 0);
+ },
+ 0
+ );
+ stateStore.rightDrawer = true;
+};
+
const selectCustomerId = (id) => {
workerId.value = 0;
customerId.value = id;
@@ -180,6 +183,20 @@ const selectWorkerId = (id) => {
customerId.value = 0;
workerId.value = id;
};
+
+const viewAddObservation = (rowsSelected) => {
+ quasar.dialog({
+ component: CustomerDefaulterAddObservation,
+ componentProps: {
+ clients: rowsSelected,
+ promise: refreshData,
+ },
+ });
+};
+
+const refreshData = () => {
+ getArrayData();
+};
@@ -190,11 +207,17 @@ const selectWorkerId = (id) => {
-
+
-
-
@@ -204,7 +227,7 @@ const selectWorkerId = (id) => {
:rows="rows"
class="full-width q-mt-md"
hide-bottom
- row-key="id"
+ row-key="clientFk"
selection="multiple"
v-model:selected="selected"
>
diff --git a/src/pages/Customer/Defaulter/CustomerDefaulterAddObservation.vue b/src/pages/Customer/Defaulter/CustomerDefaulterAddObservation.vue
new file mode 100644
index 000000000..b150f4d8b
--- /dev/null
+++ b/src/pages/Customer/Defaulter/CustomerDefaulterAddObservation.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+ {{
+ t('Add observation to all selected clients', {
+ numberClients: t($props.clients.length),
+ })
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ es:
+ Add observation to all selected clients: Añadir observación a { numberClients } cliente(s) seleccionado(s)
+ Message: Mensaje
+
diff --git a/src/pages/Customer/ExtendedList/CustomerExtendedList.vue b/src/pages/Customer/ExtendedList/CustomerExtendedList.vue
index caee06d60..65acf78a2 100644
--- a/src/pages/Customer/ExtendedList/CustomerExtendedList.vue
+++ b/src/pages/Customer/ExtendedList/CustomerExtendedList.vue
@@ -485,7 +485,6 @@ const selectCustomerId = (id) => {
};
const selectSalesPersonId = (id) => {
- console.log('selectedSalesPersonId:: ', selectedSalesPersonId.value);
selectedSalesPersonId.value = id;
};
diff --git a/src/pages/Customer/components/CustomerConsigneeCreate.vue b/src/pages/Customer/components/CustomerConsigneeCreate.vue
new file mode 100644
index 000000000..92ce47bf2
--- /dev/null
+++ b/src/pages/Customer/components/CustomerConsigneeCreate.vue
@@ -0,0 +1,265 @@
+
+
+
+ (postcodesOptions = data)"
+ auto-load
+ ref="postcodeFetchDataRef"
+ url="Postcodes/location"
+ />
+ (citiesLocationOptions = data)"
+ auto-load
+ ref="townsFetchDataRef"
+ url="Towns/location"
+ />
+ (provincesLocationOptions = data)"
+ auto-load
+ url="Provinces/location"
+ />
+ (agencyModes = data)"
+ auto-load
+ url="AgencyModes/isActive"
+ />
+ (incoterms = data)" auto-load url="Incoterms" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.code }}
+
+ {{ scope.opt.code }} -
+ {{ scope.opt.town.name }}
+ ({{ scope.opt.town.province.name }},
+ {{ scope.opt.town.province.country.country }})
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.name }}
+
+ {{
+ `${scope.opt.name}, ${scope.opt.province.name} (${scope.opt.province.country.country})`
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ `${scope.opt.name} (${scope.opt.country.country})`
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Default: Predeterminado
+ Consignee: Consignatario
+ Street address: Dirección postal
+ Postcode: Código postal
+ City: Población
+ Province: Provincia
+ Agency: Agencia
+ Phone: Teléfono
+ Mobile: Movíl
+ Incoterms: Incoterms
+ Customs agent: Agente de aduanas
+
diff --git a/src/pages/Customer/components/CustomerConsigneeEdit.vue b/src/pages/Customer/components/CustomerConsigneeEdit.vue
new file mode 100644
index 000000000..43649c58e
--- /dev/null
+++ b/src/pages/Customer/components/CustomerConsigneeEdit.vue
@@ -0,0 +1,371 @@
+
+
+
+ (postcodesOptions = data)"
+ auto-load
+ url="Postcodes/location"
+ />
+ (citiesLocationOptions = data)"
+ auto-load
+ url="Towns/location"
+ />
+ (provincesLocationOptions = data)"
+ auto-load
+ url="Provinces/location"
+ />
+ (agencyModes = data)"
+ auto-load
+ url="AgencyModes/isActive"
+ />
+ (incoterms = data)" auto-load url="Incoterms" />
+ (customsAgents = data)"
+ auto-load
+ url="CustomsAgents"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.code }}
+
+ {{ scope.opt.code }} -
+ {{ scope.opt.town.name }}
+ ({{ scope.opt.town.province.name }},
+ {{ scope.opt.town.province.country.country }})
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.name }}
+
+ {{
+ `${scope.opt.name}, ${scope.opt.province.name} (${scope.opt.province.country.country})`
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ `${scope.opt.name} (${scope.opt.country.country})`
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('Notes') }}
+
+
+
+
+
+
+
+
+
+
+ {{ t('Remove') }}
+
+
+
+
+
+
+
+ {{ t('Add note') }}
+
+
+
+
+
+
+
+
+
+es:
+ Enabled: Activo
+ Is equalizated: Recargo de equivalencia
+ Is Loginflora allowed: Compra directa en Holanda
+ Consignee: Consignatario
+ Street address: Dirección postal
+ Postcode: Código postal
+ City: Población
+ Province: Provincia
+ Agency: Agencia
+ Phone: Teléfono
+ Mobile: Movíl
+ Incoterms: Incoterms
+ Customs agent: Agente de aduanas
+ Notes: Notas
+ Observation type: Tipo de observación
+ Description: Descripción
+ Add note: Añadir nota
+ Remove note: Eliminar nota
+
diff --git a/src/pages/Customer/components/CustomerCreditCreate.vue b/src/pages/Customer/components/CustomerCreditCreate.vue
new file mode 100644
index 000000000..053f0d18a
--- /dev/null
+++ b/src/pages/Customer/components/CustomerCreditCreate.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Credit: Crédito
+
diff --git a/src/pages/Customer/components/CustomerNewCustomsAgent.vue b/src/pages/Customer/components/CustomerNewCustomsAgent.vue
new file mode 100644
index 000000000..b8b83e763
--- /dev/null
+++ b/src/pages/Customer/components/CustomerNewCustomsAgent.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ New customs agent: Nuevo agente de aduanas
+ NIF: NIF
+ Fiscal name: Nombre fiscal
+ Street: Dirección fiscal
+ Phone: Teléfono
+
diff --git a/src/pages/Customer/components/CustomerNoteCreate.vue b/src/pages/Customer/components/CustomerNoteCreate.vue
new file mode 100644
index 000000000..cea90f975
--- /dev/null
+++ b/src/pages/Customer/components/CustomerNoteCreate.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Note: Nota
+
diff --git a/src/pages/Entry/Card/EntryBasicData.vue b/src/pages/Entry/Card/EntryBasicData.vue
new file mode 100644
index 000000000..a5565fbf6
--- /dev/null
+++ b/src/pages/Entry/Card/EntryBasicData.vue
@@ -0,0 +1,202 @@
+
+
+ (suppliersOptions = data)"
+ auto-load
+ />
+ (travelsOptions = data)"
+ auto-load
+ />
+ (companiesOptions = data)"
+ auto-load
+ />
+ (currenciesOptions = data)"
+ auto-load
+ />
+
+
+
+
+
+
+
+
+ {{ scope.opt?.name }}
+
+ {{ scope.opt?.nickname }}, {{ scope.opt?.id }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt?.agencyModeName }} -
+ {{ scope.opt?.warehouseInName }} ({{
+ toDate(scope.opt?.shipped)
+ }}) → {{ scope.opt?.warehouseOutName }} ({{
+ toDate(scope.opt?.landed)
+ }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Entry/Card/EntryBuys.vue b/src/pages/Entry/Card/EntryBuys.vue
new file mode 100644
index 000000000..5eee14d29
--- /dev/null
+++ b/src/pages/Entry/Card/EntryBuys.vue
@@ -0,0 +1,409 @@
+
+
+
+ (packagingsOptions = data)"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ col.value }}
+
+
+
+
+
+
+
+ {{ props.row.item.itemType.code }}
+
+
+ {{ props.row.item.id }}
+
+
+ {{ props.row.item.size }}
+
+
+ {{ toCurrency(props.row.item.minPrice) }}
+
+
+ {{ props.row.item.concept }}
+
+ {{ props.row.item.subName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ col.label + ': ' + col.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('Import buys') }}
+
+
+
+
+
+
+
+es:
+ Import buys: Importar compras
+ Buy deleted: Compra eliminada
+ Buys deleted: Compras eliminadas
+ Confirm deletion: Confirmar eliminación
+ Are you sure you want to delete this buy?: Seguro que quieres eliminar esta compra?
+ Are you sure you want to delete this buys?: Seguro que quieres eliminar estas compras?
+
diff --git a/src/pages/Entry/Card/EntryBuysImport.vue b/src/pages/Entry/Card/EntryBuysImport.vue
new file mode 100644
index 000000000..50f5aeae8
--- /dev/null
+++ b/src/pages/Entry/Card/EntryBuysImport.vue
@@ -0,0 +1,282 @@
+
+
+ (lastItemBuysOptions = data)"
+ auto-load
+ />
+ (packagingsOptions = data)"
+ auto-load
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('Select a file') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt?.id }} -
+ {{ scope.opt?.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Select a file: Selecciona un fichero
+ Some of the imported buys does not have an item: Algunas de las compras importadas no tienen un artículo
+
diff --git a/src/pages/Entry/Card/EntryCard.vue b/src/pages/Entry/Card/EntryCard.vue
index d4937e983..f6399cc0b 100644
--- a/src/pages/Entry/Card/EntryCard.vue
+++ b/src/pages/Entry/Card/EntryCard.vue
@@ -1,15 +1,29 @@
-
+
+
+
+
+
-
+
@@ -22,3 +36,9 @@ const stateStore = useStateStore();
+
+
+es:
+ Search entries: Buscar entradas
+ You can search by entry reference: Puedes buscar por referencia de la entrada
+
diff --git a/src/pages/Entry/Card/EntryDescriptor.vue b/src/pages/Entry/Card/EntryDescriptor.vue
new file mode 100644
index 000000000..b1658ccd3
--- /dev/null
+++ b/src/pages/Entry/Card/EntryDescriptor.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+ {{ t('Show entry report') }}
+
+
+
+
+ {{ t('Go to module index') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('Inventory entry') }}
+
+
+ {{ t('Virtual entry') }}
+
+
+
+
+
+
+ {{ t('Supplier card') }}
+
+
+ {{ t('All travels with current agency') }}
+
+
+ {{ t('All entries with current supplier') }}
+
+
+
+
+
+
+es:
+ Supplier card: Ficha del proveedor
+ All travels with current agency: Todos los envíos con la agencia actual
+ All entries with current supplier: Todas las entradas con el proveedor actual
+ Show entry report: Ver informe del pedido
+ Go to module index: Ir al índice del modulo
+ Inventory entry: Es inventario
+ Virtual entry: Es una redada
+
diff --git a/src/pages/Entry/Card/EntryDescriptorProxy.vue b/src/pages/Entry/Card/EntryDescriptorProxy.vue
new file mode 100644
index 000000000..e1c05f1ac
--- /dev/null
+++ b/src/pages/Entry/Card/EntryDescriptorProxy.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/src/pages/Entry/Card/EntryLog.vue b/src/pages/Entry/Card/EntryLog.vue
new file mode 100644
index 000000000..930f7dd40
--- /dev/null
+++ b/src/pages/Entry/Card/EntryLog.vue
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/src/pages/Entry/Card/EntryNotes.vue b/src/pages/Entry/Card/EntryNotes.vue
new file mode 100644
index 000000000..c78d6c842
--- /dev/null
+++ b/src/pages/Entry/Card/EntryNotes.vue
@@ -0,0 +1,99 @@
+
+
+ (entryObservationsOptions = data)"
+ auto-load
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('Remove note') }}
+
+
+
+
+
+
+
+ {{ t('Add note') }}
+
+
+
+
+
+
+
+
+
+ es:
+ Add note: Añadir nota
+ Remove note: Quitar nota
+
diff --git a/src/pages/Entry/Card/EntrySummary.vue b/src/pages/Entry/Card/EntrySummary.vue
new file mode 100644
index 000000000..3861e0321
--- /dev/null
+++ b/src/pages/Entry/Card/EntrySummary.vue
@@ -0,0 +1,359 @@
+
+
+
+ setEntryData(data)"
+ >
+
+
+
+
+ {{ entry.id }} - {{ entry.supplier.nickname }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ entry.travel.ref }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ col.value }}
+ {{
+ col.toolTip
+ }}
+
+
+
+
+
+ {{ row.item.itemType.code }}
+
+
+ {{ row.item.id }}
+
+
+ {{ row.item.size }}
+
+
+ {{ toCurrency(row.item.minPrice) }}
+
+
+ {{ row.item.concept }}
+
+ {{ row.item.subName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Travel data: 'Datos envío'
+
diff --git a/src/pages/Entry/Card/EntrySummaryDialog.vue b/src/pages/Entry/Card/EntrySummaryDialog.vue
new file mode 100644
index 000000000..527421ce2
--- /dev/null
+++ b/src/pages/Entry/Card/EntrySummaryDialog.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Entry/EntryFilter.vue b/src/pages/Entry/EntryFilter.vue
new file mode 100644
index 000000000..7eeffcee7
--- /dev/null
+++ b/src/pages/Entry/EntryFilter.vue
@@ -0,0 +1,246 @@
+
+
+
+ (companiesOptions = data)"
+ auto-load
+ />
+ (currenciesOptions = data)"
+ auto-load
+ />
+ (suppliersOptions = data)"
+ auto-load
+ />
+
+
+
+
+ {{ t(`params.${tag.label}`) }}:
+ {{ formatFn(tag.value) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ scope.opt?.name + ': ' + scope.opt?.nickname
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+en:
+ params:
+ search: General search
+ reference: Reference
+ invoiceNumber: Invoice number
+ travelFk: Travel
+ companyFk: Company
+ currencyFk: Currency
+ supplierFk: Supplier
+ from: From
+ to: To
+ created: Created
+ isBooked: Booked
+ isConfirmed: Confirmed
+ isOrdered: Ordered
+es:
+ params:
+ search: Búsqueda general
+ reference: Referencia
+ invoiceNumber: Núm. factura
+ travelFk: Envío
+ companyFk: Empresa
+ currencyFk: Moneda
+ supplierFk: Proveedor
+ from: Desde
+ to: Hasta
+ created: Fecha creación
+ isBooked: Asentado
+ isConfirmed: Confirmado
+ isOrdered: Pedida
+
diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue
index 1baa9e019..40747178c 100644
--- a/src/pages/Entry/EntryList.vue
+++ b/src/pages/Entry/EntryList.vue
@@ -1,22 +1,144 @@
+
+
+
+
+
-
-
-
- {{ t('entry.list.newEntry') }}
-
-
+
+
+
+
+
+
+ {{ t('Inventory entry') }}
+
+
+ {{ t('Virtual entry') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('entry.list.newEntry') }}
+
+
+
+
+
+
+es:
+ Search entries: Buscar entradas
+ You can search by entry reference: Puedes buscar por referencia de la entrada
+ Inventory entry: Es inventario
+ Virtual entry: Es una redada
+
diff --git a/src/pages/Entry/EntryMain.vue b/src/pages/Entry/EntryMain.vue
index 66ce78f23..8fa17a899 100644
--- a/src/pages/Entry/EntryMain.vue
+++ b/src/pages/Entry/EntryMain.vue
@@ -1,11 +1,24 @@
+
+
+
+
+
@@ -15,3 +28,9 @@ const stateStore = useStateStore();
+
+
+es:
+ Search entries: Buscar entradas
+ You can search by entry reference: Puedes buscar por referencia de la entrada
+
diff --git a/src/pages/Route/Card/RouteCard.vue b/src/pages/Route/Card/RouteCard.vue
new file mode 100644
index 000000000..46b997b65
--- /dev/null
+++ b/src/pages/Route/Card/RouteCard.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Route/Card/RouteDescriptor.vue b/src/pages/Route/Card/RouteDescriptor.vue
new file mode 100644
index 000000000..218764277
--- /dev/null
+++ b/src/pages/Route/Card/RouteDescriptor.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+es:
+ Date: Fecha
+ Agency: Agencia
+ Zone: Zona
+ Volume: Volumen
+ Description: Descripción
+
diff --git a/src/pages/Route/Card/RouteDescriptorMenu.vue b/src/pages/Route/Card/RouteDescriptorMenu.vue
new file mode 100644
index 000000000..b661d1cd7
--- /dev/null
+++ b/src/pages/Route/Card/RouteDescriptorMenu.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+ {{ t('deleteRoute') }}
+
+
+
+
+en:
+ confirmDeletion: Confirm deletion
+ confirmDeletionMessage: Are you sure you want to delete this route?
+ deleteRoute: Delete route
+es:
+ confirmDeletion: Confirmar eliminación,
+ confirmDeletionMessage: Seguro que quieres eliminar esta ruta?
+ deleteRoute: Eliminar ruta
+
diff --git a/src/pages/Route/Card/RouteDescriptorProxy.vue b/src/pages/Route/Card/RouteDescriptorProxy.vue
new file mode 100644
index 000000000..541f9716a
--- /dev/null
+++ b/src/pages/Route/Card/RouteDescriptorProxy.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
diff --git a/src/pages/Route/Card/RouteFilter.vue b/src/pages/Route/Card/RouteFilter.vue
new file mode 100644
index 000000000..45580d913
--- /dev/null
+++ b/src/pages/Route/Card/RouteFilter.vue
@@ -0,0 +1,234 @@
+
+
+
+ (workerList = data)"
+ auto-load
+ />
+ (agencyList = data)"
+ auto-load
+ />
+ (vehicleList = data)"
+ auto-load
+ />
+ (warehouseList = data)" auto-load />
+
+
+
+ {{ t(`params.${tag.label}`) }}:
+ {{ formatFn(tag.value) }}
+
+
+
+
+
+
+
+
+
+
+ {{ opt.name }}
+
+ {{ opt.nickname }},{{ opt.code }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+en:
+ params:
+ warehouseFk: Warehouse
+ description: Description
+ m3: m³
+ vehicleFk: Vehicle
+ agencyModeFk: Agency
+ workerFk: Worker
+ from: From
+ to: To
+es:
+ params:
+ warehouseFk: Almacén
+ description: Descripción
+ m3: m³
+ vehicleFk: Vehículo
+ agencyModeFk: Agencia
+ workerFk: Trabajador
+ from: Desde
+ to: Hasta
+ Warehouse: Almacén
+ Description: Descripción
+ Vehicle: Vehículo
+ Agency: Agencia
+ Worker: Trabajador
+ From: Desde
+ To: Hasta
+
diff --git a/src/pages/Route/Card/RouteForm.vue b/src/pages/Route/Card/RouteForm.vue
new file mode 100644
index 000000000..49a067c00
--- /dev/null
+++ b/src/pages/Route/Card/RouteForm.vue
@@ -0,0 +1,214 @@
+
+
+
+ (workerList = data)"
+ auto-load
+ />
+ (agencyList = data)"
+ auto-load
+ />
+ (vehicleList = data)"
+ auto-load
+ />
+
+
+
+
+
+
+
+
+ {{ opt.name }}
+
+ {{ opt.nickname }},{{ opt.code }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Route/Card/RouteSearchbar.vue b/src/pages/Route/Card/RouteSearchbar.vue
new file mode 100644
index 000000000..9ee4a602f
--- /dev/null
+++ b/src/pages/Route/Card/RouteSearchbar.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+es:
+ Search route: Buscar rutas
+ You can search by route reference: Puedes buscar por referencia de la ruta
+
diff --git a/src/pages/Route/Card/RouteSummary.vue b/src/pages/Route/Card/RouteSummary.vue
new file mode 100644
index 000000000..a10ca088e
--- /dev/null
+++ b/src/pages/Route/Card/RouteSummary.vue
@@ -0,0 +1,314 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ `${entity?.route.id} - ${entity?.route?.description}` }}
+
+
+
+
+
+
+
+
+
+
+ {{ dashIfEmpty(entity?.route?.worker?.user?.name) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ dashIfEmpty(entity?.route?.description) }}
+
+
+
+
+
+
+
+
+
+ {{ value }}
+
+
+
+
+
+
+ {{ value }}
+
+
+
+
+
+
+
+ {{ value }}
+
+
+
+
+
+
+
+ {{ value }}
+
+
+
+
+
+
+
+
+
+
+en:
+ route:
+ summary:
+ date: Date
+ agency: Agency
+ vehicle: Vehicle
+ driver: Driver
+ cost: Cost
+ started: Started time
+ finished: Finished time
+ kmStart: Km start
+ kmEnd: Km end
+ volume: Volume
+ packages: Packages
+ description: Description
+ tickets: Tickets
+ order: Order
+ street: Street
+ city: City
+ pc: PC
+ client: Client
+ warehouse: Warehouse
+ m3: m³
+ packaging: Packaging
+ ticket: Ticket
+es:
+ route:
+ summary:
+ date: Fecha
+ agency: Agencia
+ vehicle: Vehículo
+ driver: Conductor
+ cost: Costo
+ started: Hora inicio
+ finished: Hora fin
+ kmStart: Km inicio
+ kmEnd: Km fin
+ volume: Volumen
+ packages: Bultos
+ description: Descripción
+ tickets: Tickets
+ order: Orden
+ street: Dirección fiscal
+ city: Población
+ pc: CP
+ client: Cliente
+ warehouse: Almacén
+ packaging: Encajado
+
diff --git a/src/pages/Route/Card/RouteSummaryDialog.vue b/src/pages/Route/Card/RouteSummaryDialog.vue
new file mode 100644
index 000000000..4a943a93a
--- /dev/null
+++ b/src/pages/Route/Card/RouteSummaryDialog.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Route/RouteList.vue b/src/pages/Route/RouteList.vue
new file mode 100644
index 000000000..591f723e9
--- /dev/null
+++ b/src/pages/Route/RouteList.vue
@@ -0,0 +1,530 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('globals.collapseMenu') }}
+
+
+
+
+
+
+
+
+ {{ t('Select the starting date') }}
+
+
+
+
+
+
+
+
+
+ {{ t('Clone') }}
+
+
+
+
+
+
+
+
+
+ (workers = data)"
+ auto-load
+ />
+ (agencyList = data)" auto-load />
+ (vehicleList = data)" auto-load />
+
+
+
+
+ {{ t('Clone Selected Routes') }}
+
+
+
+ {{ t('Mark as served') }}
+
+
+
+
+
+
+
+
+
+
+ {{ props.row?.workerUserName }}
+ updateWorker(props.row, worker)
+ "
+ >
+ $event.target.select()"
+ >
+
+
+
+ {{ opt.name }}
+ {{
+ opt.nickname
+ }}
+
+
+
+
+
+
+
+
+
+ {{ props.row?.agencyName }}
+ updateAgency(props.row, agency)
+ "
+ >
+ $event.target.select()"
+ />
+
+
+
+
+
+ {{ props.row?.vehiclePlateNumber }}
+ updateVehicle(props.row, vehicle)
+ "
+ >
+ $event.target.select()"
+ />
+
+
+
+
+
+ {{ toDate(props.row?.created) }}
+
+ $event.target.select()"
+ />
+
+
+
+
+
+ {{ props.row?.description }}
+
+ $event.target.select()"
+ />
+
+
+
+
+
+ {{ toHour(props.row.started) }}
+
+ $event.target.select()"
+ />
+
+
+
+
+
+ {{ toHour(props.row.finished) }}
+
+ $event.target.select()"
+ />
+
+
+
+
+
+
+
+ {{ t('Add ticket') }}
+
+
+ {{ t('Preview') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('newRoute') }}
+
+
+
+
+
+
+
+
+en:
+ newRoute: New Route
+es:
+ ID: ID
+ Worker: Trabajador
+ Agency: Agencia
+ Vehicle: Vehículo
+ Date: Fecha
+ Description: Descripción
+ Hour started: Hora inicio
+ Hour finished: Hora fin
+ newRoute: Nueva Ruta
+ Clone Selected Routes: Clonar rutas seleccionadas
+ Select the starting date: Seleccione la fecha de inicio
+ Stating date: Fecha de inicio
+ Cancel: Cancelar
+ Clone: Clonar
+ Mark as served: Marcar como servidas
+
diff --git a/src/pages/Supplier/Card/SupplierAccounts.vue b/src/pages/Supplier/Card/SupplierAccounts.vue
index 2b7059ea3..30edfb2fd 100644
--- a/src/pages/Supplier/Card/SupplierAccounts.vue
+++ b/src/pages/Supplier/Card/SupplierAccounts.vue
@@ -1 +1,177 @@
-
Supplier accounts
+
+
+ (bankEntitiesOptions = data)"
+ auto-load
+ />
+ (wireTransferFk = data.id)"
+ :filter="{ where: { code: 'wireTransfer' } }"
+ auto-load
+ />
+ (supplier = data)"
+ auto-load
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.bic }}
+ {{ scope.opt.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('Remove account') }}
+
+
+
+
+
+
+
+ {{ t('Add account') }}
+
+
+
+
+
+
+
+
+
+ es:
+ Do you want to change the pay method to wire transfer?: ¿Quieres modificar la forma de pago a transferencia?
+ Add account: Añadir cuenta
+ Remove account: Remover cuenta
+
diff --git a/src/pages/Supplier/Card/SupplierAddresses.vue b/src/pages/Supplier/Card/SupplierAddresses.vue
index dd82abe78..df7cff932 100644
--- a/src/pages/Supplier/Card/SupplierAddresses.vue
+++ b/src/pages/Supplier/Card/SupplierAddresses.vue
@@ -1 +1,97 @@
-
Supplier addresses
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('supplier.list.newSupplier') }}
+
+
+
+
+
+
diff --git a/src/pages/Supplier/Card/SupplierAddressesCreate.vue b/src/pages/Supplier/Card/SupplierAddressesCreate.vue
new file mode 100644
index 000000000..8ad0959f5
--- /dev/null
+++ b/src/pages/Supplier/Card/SupplierAddressesCreate.vue
@@ -0,0 +1,182 @@
+
+
+
+ (postcodesOptions = data)"
+ auto-load
+ />
+ (provincesOptions = data)"
+ auto-load
+ url="Provinces"
+ />
+ (townsLocationOptions = data)"
+ auto-load
+ url="Towns/location"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.code }}
+ {{ scope.opt.code }} -
+ {{ scope.opt.town.name }} ({{
+ scope.opt.town.province.name
+ }},
+ {{
+ scope.opt.town.province.country.country
+ }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Supplier/Card/SupplierAgencyTerm.vue b/src/pages/Supplier/Card/SupplierAgencyTerm.vue
index 2a0c341cf..769ff4dad 100644
--- a/src/pages/Supplier/Card/SupplierAgencyTerm.vue
+++ b/src/pages/Supplier/Card/SupplierAgencyTerm.vue
@@ -1 +1,139 @@
-
Supplier agency term
+
+
+ (agenciesOptions = data)"
+ auto-load
+ />
+
+
+
+
+
+
+
+
+ {{ row.agency?.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('Remove row') }}
+
+
+
+
+
+
+
+
+
+
+ {{ t('supplier.agencyTerms.addRow') }}
+
+
+
+
+
+ es:
+ Remove row: Eliminar fila
+
diff --git a/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue b/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue
new file mode 100644
index 000000000..00f0b868f
--- /dev/null
+++ b/src/pages/Supplier/Card/SupplierAgencyTermCreate.vue
@@ -0,0 +1,113 @@
+
+
+
+ (agenciesOptions = data)"
+ auto-load
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Supplier/Card/SupplierBasicData.vue b/src/pages/Supplier/Card/SupplierBasicData.vue
index 582da48f3..b73ce9346 100644
--- a/src/pages/Supplier/Card/SupplierBasicData.vue
+++ b/src/pages/Supplier/Card/SupplierBasicData.vue
@@ -1 +1,97 @@
-
Supplier basic data
+
+
+ (workersOptions = data)"
+ auto-load
+ />
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt?.name }}
+
+ {{ scope.opt?.nickname }}, {{ scope.opt?.id }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Supplier/Card/SupplierBillingData.vue b/src/pages/Supplier/Card/SupplierBillingData.vue
index 849737fa7..1237a0403 100644
--- a/src/pages/Supplier/Card/SupplierBillingData.vue
+++ b/src/pages/Supplier/Card/SupplierBillingData.vue
@@ -1 +1,68 @@
-
Supplier billing data
+
+
+ (paymethodsOptions = data)"
+ auto-load
+ />
+ (payDemsOptions = data)" auto-load />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Supplier/Card/SupplierCard.vue b/src/pages/Supplier/Card/SupplierCard.vue
index 5b44159df..1b9b858d3 100644
--- a/src/pages/Supplier/Card/SupplierCard.vue
+++ b/src/pages/Supplier/Card/SupplierCard.vue
@@ -29,7 +29,6 @@ const { t } = useI18n();
-
@@ -63,3 +62,8 @@ const { t } = useI18n();
}
}
+
+
+ es:
+ Search suppliers: Buscar proveedores
+
diff --git a/src/pages/Supplier/Card/SupplierConsumption.vue b/src/pages/Supplier/Card/SupplierConsumption.vue
index df1dead17..714499f63 100644
--- a/src/pages/Supplier/Card/SupplierConsumption.vue
+++ b/src/pages/Supplier/Card/SupplierConsumption.vue
@@ -1 +1,192 @@
-
Supplier consumption
+
+
+
+ (suppliersConsumption = data)"
+ :filter="{
+ where: { supplierFk: route.params.id },
+ order: ['itemTypeFk', 'itemName', 'itemSize'],
+ }"
+ :params="userParams"
+ auto-load
+ />
+
+
+
+
+ {{ t('Open as PDF') }}
+
+
+
+
+ {{ t('Send to email') }}
+
+
+
+
+
+
+
+
+
+
+ {{
+ t('supplier.consumption.entry')
+ }}
+ {{ row.id }}
+ {{ t('supplier.consumption.date') }}
+ {{ toDate(row.shipped) }}
+ {{
+ t('supplier.consumption.reference')
+ }}
+ {{ row.invoiceNumber }}
+
+
+ {{ buy.itemName }}
+
+
+ {{ buy.subName }}
+
+
+ {{ dashIfEmpty(buy.quantity) }}
+ {{ dashIfEmpty(buy.price) }}
+ {{ dashIfEmpty(buy.total) }}
+
+
+
+ {{ t('Total entry') }}:
+ {{ calculateTotal(row.buys) }}
+
+
+
+
+
+
+
+
+
+
+es:
+ Total entry: Total entrada
+ Open as PDF: Abrir como PDF
+ Send to email: Enviar por email
+ This supplier does not have a contact with an email address: Este proveedor no tiene un email de contacto
+
diff --git a/src/pages/Supplier/Card/SupplierContacts.vue b/src/pages/Supplier/Card/SupplierContacts.vue
index ca58d4ab7..d69b74a4c 100644
--- a/src/pages/Supplier/Card/SupplierContacts.vue
+++ b/src/pages/Supplier/Card/SupplierContacts.vue
@@ -1 +1,118 @@
-
Supplier contacts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('Remove contact') }}
+
+
+
+
+
+
+
+
+ {{ t('Add contact') }}
+
+
+
+
+
+
+
+
+
+
+
+ es:
+ Add contact: Añadir contacto
+ Remove contact: Remover contacto
+
diff --git a/src/pages/Supplier/Card/SupplierFiscalData.vue b/src/pages/Supplier/Card/SupplierFiscalData.vue
index dd018ac60..d481d6205 100644
--- a/src/pages/Supplier/Card/SupplierFiscalData.vue
+++ b/src/pages/Supplier/Card/SupplierFiscalData.vue
@@ -1 +1,298 @@
-
Supplier fiscal data
+
+
+ (sageTaxTypesOptions = data)"
+ />
+ (sageWithholdingsOptions = data)"
+ />
+ (sageTransactionTypesOptions = data)"
+ />
+ (supplierActivitiesOptions = data)"
+ />
+ (postcodesOptions = data)"
+ auto-load
+ />
+ (townsLocationOptions = data)"
+ auto-load
+ url="Towns/location"
+ />
+ (provincesLocationOptions = data)"
+ auto-load
+ url="Provinces/location"
+ />
+ (countriesOptions = data)"
+ auto-load
+ url="Countries"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.code }}
+ {{ scope.opt.code }} -
+ {{ scope.opt.town.name }} ({{
+ scope.opt.town.province.name
+ }},
+ {{
+ scope.opt.town.province.country.country
+ }})
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.opt.name }}
+ {{ scope.opt.name }},
+ {{ scope.opt.province.name }} ({{
+ scope.opt.province.country.country
+ }})
+
+
+
+
+
+
+
+
+
+
+ {{
+ `${scope.opt.name} (${scope.opt.country.country})`
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ t(
+ 'When activating it, do not enter the country code in the ID field.'
+ )
+ }}
+
+
+
+
+
+
+
+
+
+
+es:
+ When activating it, do not enter the country code in the ID field.: Al activarlo, no informar el código del país en el campo nif
+
diff --git a/src/pages/Supplier/Card/SupplierLog.vue b/src/pages/Supplier/Card/SupplierLog.vue
index 2733e958d..86ee15fce 100644
--- a/src/pages/Supplier/Card/SupplierLog.vue
+++ b/src/pages/Supplier/Card/SupplierLog.vue
@@ -1 +1,6 @@
-
Supplier log
+
+
+
+
diff --git a/src/pages/Supplier/Card/SupplierSummary.vue b/src/pages/Supplier/Card/SupplierSummary.vue
index 29b0c18c4..d734e21a5 100644
--- a/src/pages/Supplier/Card/SupplierSummary.vue
+++ b/src/pages/Supplier/Card/SupplierSummary.vue
@@ -182,4 +182,3 @@ const isAdministrative = computed(() => {
-
diff --git a/src/pages/Travel/Card/TravelSummary.vue b/src/pages/Travel/Card/TravelSummary.vue
index 3bc5f0584..4f0e8860a 100644
--- a/src/pages/Travel/Card/TravelSummary.vue
+++ b/src/pages/Travel/Card/TravelSummary.vue
@@ -6,7 +6,6 @@ import { useI18n } from 'vue-i18n';
import { QCheckbox, QIcon } from 'quasar';
import CardSummary from 'components/ui/CardSummary.vue';
import VnLv from 'src/components/ui/VnLv.vue';
-import VnRow from 'components/ui/VnRow.vue';
import travelService from 'src/services/travel.service';
import { toDate, toCurrency } from 'src/filters';
@@ -218,75 +217,47 @@ const openEntryDescriptor = () => {};
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+