-
{{ t('Total') }}
-
+
+
{{ t('Total') }}
+
{{ t('Balance due') }}:
{{ toCurrency($props.amount) }}
@@ -28,21 +28,18 @@ const { t } = useI18n();
diff --git a/src/pages/Customer/Defaulter/CustomerDefaulter.vue b/src/pages/Customer/Defaulter/CustomerDefaulter.vue
index 15bfd84eb..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,53 +12,37 @@ 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 customerId = ref(0);
+const selected = ref([]);
+const workerId = ref(0);
const rows = computed(() => arrayData.value.store.data);
-const selected = ref([]);
-const worderId = ref(0);
-const customerId = ref(0);
-
const tableColumnComponents = {
client: {
component: QBtn,
props: () => ({ flat: true, color: 'blue' }),
- event: (prop) => selectClientId(prop.row.clientFk),
+ event: ({ row }) => selectCustomerId(row.clientFk),
},
isWorker: {
component: QCheckbox,
- props: (prop) => ({
+ props: ({ row }) => ({
disable: true,
- 'model-value': Boolean(prop.value),
+ 'model-value': Boolean(row.selected),
}),
- event: () => {},
},
salesperson: {
component: QBtn,
props: () => ({ flat: true, color: 'blue' }),
- event: (prop) => selectSalespersonId(prop.row.salesPersonFk),
+ event: ({ row }) => selectWorkerId(row.salesPersonFk),
},
country: {
component: 'span',
@@ -78,7 +62,7 @@ const tableColumnComponents = {
author: {
component: QBtn,
props: () => ({ flat: true, color: 'blue' }),
- event: (prop) => selectAuthorId(prop.row.workerFk),
+ event: ({ row }) => selectWorkerId(row.workerFk),
},
lastObservation: {
component: 'span',
@@ -102,90 +86,116 @@ const tableColumnComponents = {
},
};
-const columns = computed(() => {
- return [
- {
- align: 'left',
- field: 'clientName',
- label: t('Client'),
- name: 'client',
- },
- {
- align: 'left',
- field: 'isWorker',
- label: t('Is worker'),
- name: 'isWorker',
- },
- {
- align: 'left',
- field: 'salesPersonName',
- label: t('Salesperson'),
- name: 'salesperson',
- },
- {
- align: 'left',
- field: 'country',
- label: t('Country'),
- name: 'country',
- },
- {
- align: 'left',
- field: 'payMethod',
- label: t('P. Method'),
- name: 'paymentMethod',
- },
- {
- align: 'left',
- field: (row) => toCurrency(row.amount),
- label: t('Balance D.'),
- name: 'balance',
- },
- {
- align: 'left',
- field: 'workerName',
- label: t('Author'),
- name: 'author',
- },
- {
- align: 'left',
- field: 'observation',
- label: t('Last observation'),
- name: 'lastObservation',
- },
- {
- align: 'left',
- field: (row) => toDate(row.created),
- label: t('L. O. Date'),
- name: 'date',
- },
- {
- align: 'left',
- field: (row) => toCurrency(row.creditInsurance),
- label: t('Credit I.'),
- name: 'credit',
- },
- {
- align: 'left',
- field: (row) => toDate(row.defaulterSinced),
- label: t('From'),
- name: 'from',
- },
- ];
+const columns = computed(() => [
+ {
+ align: 'left',
+ field: 'clientName',
+ label: t('Client'),
+ name: 'client',
+ },
+ {
+ align: 'left',
+ field: 'isWorker',
+ label: t('Is worker'),
+ name: 'isWorker',
+ },
+ {
+ align: 'left',
+ field: 'salesPersonName',
+ label: t('Salesperson'),
+ name: 'salesperson',
+ },
+ {
+ align: 'left',
+ field: 'country',
+ label: t('Country'),
+ name: 'country',
+ },
+ {
+ align: 'left',
+ field: 'payMethod',
+ label: t('P. Method'),
+ name: 'paymentMethod',
+ },
+ {
+ align: 'left',
+ field: ({ amount }) => toCurrency(amount),
+ label: t('Balance D.'),
+ name: 'balance',
+ },
+ {
+ align: 'left',
+ field: 'workerName',
+ label: t('Author'),
+ name: 'author',
+ },
+ {
+ align: 'left',
+ field: 'observation',
+ label: t('Last observation'),
+ name: 'lastObservation',
+ },
+ {
+ align: 'left',
+ field: ({ created }) => toDate(created),
+ label: t('L. O. Date'),
+ name: 'date',
+ },
+ {
+ align: 'left',
+ field: ({ creditInsurance }) => toCurrency(creditInsurance),
+ label: t('Credit I.'),
+ name: 'credit',
+ },
+ {
+ align: 'left',
+ field: ({ defaulterSinced }) => toDate(defaulterSinced),
+ label: t('From'),
+ name: 'from',
+ },
+]);
+
+onBeforeMount(() => {
+ getArrayData();
});
-const selectClientId = (id) => {
- worderId.value = 0;
+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;
};
-const selectSalespersonId = (id) => {
+const selectWorkerId = (id) => {
customerId.value = 0;
- worderId.value = id;
+ workerId.value = id;
};
-const selectAuthorId = (id) => {
- customerId.value = 0;
- worderId.value = id;
+const viewAddObservation = (rowsSelected) => {
+ quasar.dialog({
+ component: CustomerDefaulterAddObservation,
+ componentProps: {
+ clients: rowsSelected,
+ promise: refreshData,
+ },
+ });
+};
+
+const refreshData = () => {
+ getArrayData();
};
@@ -197,11 +207,17 @@ const selectAuthorId = (id) => {
-
+
-
-
@@ -211,7 +227,7 @@ const selectAuthorId = (id) => {
:rows="rows"
class="full-width q-mt-md"
hide-bottom
- row-key="id"
+ row-key="clientFk"
selection="multiple"
v-model:selected="selected"
>
@@ -226,7 +242,7 @@ const selectAuthorId = (id) => {
>
{{ props.value }}
-
+
@@ -239,7 +255,7 @@ const selectAuthorId = (id) => {
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 a60b79caf..caee06d60 100644
--- a/src/pages/Customer/ExtendedList/CustomerExtendedList.vue
+++ b/src/pages/Customer/ExtendedList/CustomerExtendedList.vue
@@ -262,215 +262,213 @@ const tableColumnComponents = {
},
};
-const columns = computed(() => {
- return [
- {
- align: 'left',
- field: '',
- label: '',
- name: 'customerStatus',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'id',
- label: t('customer.extendedList.tableVisibleColumns.id'),
- name: 'id',
- },
- {
- align: 'left',
- field: 'name',
- label: t('customer.extendedList.tableVisibleColumns.name'),
- name: 'name',
- },
- {
- align: 'left',
- field: 'fi',
- label: t('customer.extendedList.tableVisibleColumns.fi'),
- name: 'fi',
- },
- {
- align: 'left',
- field: 'salesPerson',
- label: t('customer.extendedList.tableVisibleColumns.salesPersonFk'),
- name: 'salesPersonFk',
- },
- {
- align: 'left',
- field: 'credit',
- label: t('customer.extendedList.tableVisibleColumns.credit'),
- name: 'credit',
- },
- {
- align: 'left',
- field: 'creditInsurance',
- label: t('customer.extendedList.tableVisibleColumns.creditInsurance'),
- name: 'creditInsurance',
- },
- {
- align: 'left',
- field: 'phone',
- label: t('customer.extendedList.tableVisibleColumns.phone'),
- name: 'phone',
- },
- {
- align: 'left',
- field: 'mobile',
- label: t('customer.extendedList.tableVisibleColumns.mobile'),
- name: 'mobile',
- },
- {
- align: 'left',
- field: 'street',
- label: t('customer.extendedList.tableVisibleColumns.street'),
- name: 'street',
- },
- {
- align: 'left',
- field: 'country',
- label: t('customer.extendedList.tableVisibleColumns.countryFk'),
- name: 'countryFk',
- },
- {
- align: 'left',
- field: 'province',
- label: t('customer.extendedList.tableVisibleColumns.provinceFk'),
- name: 'provinceFk',
- },
- {
- align: 'left',
- field: 'city',
- label: t('customer.extendedList.tableVisibleColumns.city'),
- name: 'city',
- },
- {
- align: 'left',
- field: 'postcode',
- label: t('customer.extendedList.tableVisibleColumns.postcode'),
- name: 'postcode',
- },
- {
- align: 'left',
- field: 'email',
- label: t('customer.extendedList.tableVisibleColumns.email'),
- name: 'email',
- },
- {
- align: 'left',
- field: 'created',
- label: t('customer.extendedList.tableVisibleColumns.created'),
- name: 'created',
- format: (value) => toDate(value),
- },
- {
- align: 'left',
- field: 'businessType',
- label: t('customer.extendedList.tableVisibleColumns.businessTypeFk'),
- name: 'businessTypeFk',
- },
- {
- align: 'left',
- field: 'payMethod',
- label: t('customer.extendedList.tableVisibleColumns.payMethodFk'),
- name: 'payMethodFk',
- },
- {
- align: 'left',
- field: 'sageTaxType',
- label: t('customer.extendedList.tableVisibleColumns.sageTaxTypeFk'),
- name: 'sageTaxTypeFk',
- },
- {
- align: 'left',
- field: 'sageTransactionType',
- label: t('customer.extendedList.tableVisibleColumns.sageTransactionTypeFk'),
- name: 'sageTransactionTypeFk',
- },
- {
- align: 'left',
- field: 'isActive',
- label: t('customer.extendedList.tableVisibleColumns.isActive'),
- name: 'isActive',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'isVies',
- label: t('customer.extendedList.tableVisibleColumns.isVies'),
- name: 'isVies',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'isTaxDataChecked',
- label: t('customer.extendedList.tableVisibleColumns.isTaxDataChecked'),
- name: 'isTaxDataChecked',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'isEqualizated',
- label: t('customer.extendedList.tableVisibleColumns.isEqualizated'),
- name: 'isEqualizated',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'isFreezed',
- label: t('customer.extendedList.tableVisibleColumns.isFreezed'),
- name: 'isFreezed',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'hasToInvoice',
- label: t('customer.extendedList.tableVisibleColumns.hasToInvoice'),
- name: 'hasToInvoice',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'hasToInvoiceByAddress',
- label: t('customer.extendedList.tableVisibleColumns.hasToInvoiceByAddress'),
- name: 'hasToInvoiceByAddress',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'isToBeMailed',
- label: t('customer.extendedList.tableVisibleColumns.isToBeMailed'),
- name: 'isToBeMailed',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'hasLcr',
- label: t('customer.extendedList.tableVisibleColumns.hasLcr'),
- name: 'hasLcr',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'hasCoreVnl',
- label: t('customer.extendedList.tableVisibleColumns.hasCoreVnl'),
- name: 'hasCoreVnl',
- format: () => ' ',
- },
- {
- align: 'left',
- field: 'hasSepaVnl',
- label: t('customer.extendedList.tableVisibleColumns.hasSepaVnl'),
- name: 'hasSepaVnl',
- format: () => ' ',
- },
- {
- align: 'right',
- field: 'actions',
- label: '',
- name: 'actions',
- },
- ];
-});
+const columns = computed(() => [
+ {
+ align: 'left',
+ field: '',
+ label: '',
+ name: 'customerStatus',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'id',
+ label: t('customer.extendedList.tableVisibleColumns.id'),
+ name: 'id',
+ },
+ {
+ align: 'left',
+ field: 'name',
+ label: t('customer.extendedList.tableVisibleColumns.name'),
+ name: 'name',
+ },
+ {
+ align: 'left',
+ field: 'fi',
+ label: t('customer.extendedList.tableVisibleColumns.fi'),
+ name: 'fi',
+ },
+ {
+ align: 'left',
+ field: 'salesPerson',
+ label: t('customer.extendedList.tableVisibleColumns.salesPersonFk'),
+ name: 'salesPersonFk',
+ },
+ {
+ align: 'left',
+ field: 'credit',
+ label: t('customer.extendedList.tableVisibleColumns.credit'),
+ name: 'credit',
+ },
+ {
+ align: 'left',
+ field: 'creditInsurance',
+ label: t('customer.extendedList.tableVisibleColumns.creditInsurance'),
+ name: 'creditInsurance',
+ },
+ {
+ align: 'left',
+ field: 'phone',
+ label: t('customer.extendedList.tableVisibleColumns.phone'),
+ name: 'phone',
+ },
+ {
+ align: 'left',
+ field: 'mobile',
+ label: t('customer.extendedList.tableVisibleColumns.mobile'),
+ name: 'mobile',
+ },
+ {
+ align: 'left',
+ field: 'street',
+ label: t('customer.extendedList.tableVisibleColumns.street'),
+ name: 'street',
+ },
+ {
+ align: 'left',
+ field: 'country',
+ label: t('customer.extendedList.tableVisibleColumns.countryFk'),
+ name: 'countryFk',
+ },
+ {
+ align: 'left',
+ field: 'province',
+ label: t('customer.extendedList.tableVisibleColumns.provinceFk'),
+ name: 'provinceFk',
+ },
+ {
+ align: 'left',
+ field: 'city',
+ label: t('customer.extendedList.tableVisibleColumns.city'),
+ name: 'city',
+ },
+ {
+ align: 'left',
+ field: 'postcode',
+ label: t('customer.extendedList.tableVisibleColumns.postcode'),
+ name: 'postcode',
+ },
+ {
+ align: 'left',
+ field: 'email',
+ label: t('customer.extendedList.tableVisibleColumns.email'),
+ name: 'email',
+ },
+ {
+ align: 'left',
+ field: 'created',
+ label: t('customer.extendedList.tableVisibleColumns.created'),
+ name: 'created',
+ format: (value) => toDate(value),
+ },
+ {
+ align: 'left',
+ field: 'businessType',
+ label: t('customer.extendedList.tableVisibleColumns.businessTypeFk'),
+ name: 'businessTypeFk',
+ },
+ {
+ align: 'left',
+ field: 'payMethod',
+ label: t('customer.extendedList.tableVisibleColumns.payMethodFk'),
+ name: 'payMethodFk',
+ },
+ {
+ align: 'left',
+ field: 'sageTaxType',
+ label: t('customer.extendedList.tableVisibleColumns.sageTaxTypeFk'),
+ name: 'sageTaxTypeFk',
+ },
+ {
+ align: 'left',
+ field: 'sageTransactionType',
+ label: t('customer.extendedList.tableVisibleColumns.sageTransactionTypeFk'),
+ name: 'sageTransactionTypeFk',
+ },
+ {
+ align: 'left',
+ field: 'isActive',
+ label: t('customer.extendedList.tableVisibleColumns.isActive'),
+ name: 'isActive',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'isVies',
+ label: t('customer.extendedList.tableVisibleColumns.isVies'),
+ name: 'isVies',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'isTaxDataChecked',
+ label: t('customer.extendedList.tableVisibleColumns.isTaxDataChecked'),
+ name: 'isTaxDataChecked',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'isEqualizated',
+ label: t('customer.extendedList.tableVisibleColumns.isEqualizated'),
+ name: 'isEqualizated',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'isFreezed',
+ label: t('customer.extendedList.tableVisibleColumns.isFreezed'),
+ name: 'isFreezed',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'hasToInvoice',
+ label: t('customer.extendedList.tableVisibleColumns.hasToInvoice'),
+ name: 'hasToInvoice',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'hasToInvoiceByAddress',
+ label: t('customer.extendedList.tableVisibleColumns.hasToInvoiceByAddress'),
+ name: 'hasToInvoiceByAddress',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'isToBeMailed',
+ label: t('customer.extendedList.tableVisibleColumns.isToBeMailed'),
+ name: 'isToBeMailed',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'hasLcr',
+ label: t('customer.extendedList.tableVisibleColumns.hasLcr'),
+ name: 'hasLcr',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'hasCoreVnl',
+ label: t('customer.extendedList.tableVisibleColumns.hasCoreVnl'),
+ name: 'hasCoreVnl',
+ format: () => ' ',
+ },
+ {
+ align: 'left',
+ field: 'hasSepaVnl',
+ label: t('customer.extendedList.tableVisibleColumns.hasSepaVnl'),
+ name: 'hasSepaVnl',
+ format: () => ' ',
+ },
+ {
+ align: 'right',
+ field: 'actions',
+ label: '',
+ name: 'actions',
+ },
+]);
const stopEventPropagation = (event, col) => {
if (!['id', 'salesPersonFk'].includes(col.name)) return;
@@ -565,6 +563,6 @@ const selectSalesPersonId = (id) => {
diff --git a/src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue b/src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue
index 7d54aaf0a..46b4e1e7b 100644
--- a/src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue
+++ b/src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue
@@ -613,6 +613,5 @@ const shouldRenderColumn = (colName) => {
es:
- Identifier: Identificador
Social name: Razón social
diff --git a/src/pages/Customer/Notifications/CustomerNotifications.vue b/src/pages/Customer/Notifications/CustomerNotifications.vue
index ce194eb06..cf66443b9 100644
--- a/src/pages/Customer/Notifications/CustomerNotifications.vue
+++ b/src/pages/Customer/Notifications/CustomerNotifications.vue
@@ -9,6 +9,7 @@ import { useStateStore } from 'stores/useStateStore';
import CustomerNotificationsFilter from './CustomerNotificationsFilter.vue';
import CustomerDescriptorProxy from '../Card/CustomerDescriptorProxy.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
const { t } = useI18n();
const stateStore = useStateStore();
@@ -57,40 +58,38 @@ const tableColumnComponents = {
},
};
-const columns = computed(() => {
- return [
- {
- align: 'left',
- field: 'id',
- label: t('Identifier'),
- name: 'id',
- },
- {
- align: 'left',
- field: 'socialName',
- label: t('Social name'),
- name: 'socialName',
- },
- {
- align: 'left',
- field: 'city',
- label: t('City'),
- name: 'city',
- },
- {
- align: 'left',
- field: 'phone',
- label: t('Phone'),
- name: 'phone',
- },
- {
- align: 'left',
- field: 'email',
- label: t('Email'),
- name: 'email',
- },
- ];
-});
+const columns = computed(() => [
+ {
+ align: 'left',
+ field: 'id',
+ label: t('Identifier'),
+ name: 'id',
+ },
+ {
+ align: 'left',
+ field: 'socialName',
+ label: t('Social name'),
+ name: 'socialName',
+ },
+ {
+ align: 'left',
+ field: 'city',
+ label: t('City'),
+ name: 'city',
+ },
+ {
+ align: 'left',
+ field: 'phone',
+ label: t('Phone'),
+ name: 'phone',
+ },
+ {
+ align: 'left',
+ field: 'email',
+ label: t('Email'),
+ name: 'email',
+ },
+]);
const selectCustomerId = (id) => {
selectedCustomerId.value = id;
@@ -104,11 +103,7 @@ const selectCustomerId = (id) => {
-
-
-
-
-
+
{
diff --git a/src/pages/Customer/Payments/CustomerPayments.vue b/src/pages/Customer/Payments/CustomerPayments.vue
index b4a907665..de774e63e 100644
--- a/src/pages/Customer/Payments/CustomerPayments.vue
+++ b/src/pages/Customer/Payments/CustomerPayments.vue
@@ -123,8 +123,7 @@ function stateColor(row) {
-
- {{ t('Web Payments') }}
+
+ />
{{ t('Change view') }}
diff --git a/src/pages/Customer/components/CustomerConsigneeCreate.vue b/src/pages/Customer/components/CustomerConsigneeCreate.vue
new file mode 100644
index 000000000..3f3b2aedf
--- /dev/null
+++ b/src/pages/Customer/components/CustomerConsigneeCreate.vue
@@ -0,0 +1,258 @@
+
+
+
+ (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})`
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+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..6546c527d
--- /dev/null
+++ b/src/pages/Customer/components/CustomerConsigneeEdit.vue
@@ -0,0 +1,3 @@
+
+ Customer consignee edit
+
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/Department/Card/DepartmentCard.vue b/src/pages/Department/Card/DepartmentCard.vue
index 885b5e5f1..da9accee1 100644
--- a/src/pages/Department/Card/DepartmentCard.vue
+++ b/src/pages/Department/Card/DepartmentCard.vue
@@ -2,6 +2,7 @@
import { useStateStore } from 'stores/useStateStore';
import DepartmentDescriptor from 'pages/Department/Card/DepartmentDescriptor.vue';
import LeftMenu from 'components/LeftMenu.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
const stateStore = useStateStore();
@@ -15,11 +16,8 @@ const stateStore = useStateStore();
-
-
-
-
-
+
+
diff --git a/src/pages/Entry/Card/EntryCard.vue b/src/pages/Entry/Card/EntryCard.vue
index 5aa50fc94..d4937e983 100644
--- a/src/pages/Entry/Card/EntryCard.vue
+++ b/src/pages/Entry/Card/EntryCard.vue
@@ -1,6 +1,7 @@
@@ -15,11 +16,8 @@ const stateStore = useStateStore();
-
-
-
-
-
+
+
diff --git a/src/pages/Entry/Card/EntrySummary.vue b/src/pages/Entry/Card/EntrySummary.vue
new file mode 100644
index 000000000..d19b1f744
--- /dev/null
+++ b/src/pages/Entry/Card/EntrySummary.vue
@@ -0,0 +1,379 @@
+
+
+
+ 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/EntryCreate.vue b/src/pages/Entry/EntryCreate.vue
index 30b54cb38..d4eb8a3ef 100644
--- a/src/pages/Entry/EntryCreate.vue
+++ b/src/pages/Entry/EntryCreate.vue
@@ -7,6 +7,7 @@ import FormModel from 'components/FormModel.vue';
import VnRow from 'components/ui/VnRow.vue';
import VnSelectFilter from 'src/components/common/VnSelectFilter.vue';
import FetchData from 'components/FetchData.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
import { toDate } from 'src/filters';
@@ -51,22 +52,19 @@ const companiesOptions = ref([]);
-
-
-
-
-
+
@@ -83,7 +81,7 @@ const companiesOptions = ref([]);
@@ -111,7 +110,7 @@ const companiesOptions = ref([]);
@@ -129,7 +129,7 @@ const companiesOptions = ref([]);
es:
- Supplier *: Proveedor *
- Travel *: Envío *
- Company *: Empresa *
-
+ Supplier: Proveedor
+ Travel: Envío
+ Company: Empresa
+
diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue
index 1baa9e019..fc4f60ff0 100644
--- a/src/pages/Entry/EntryList.vue
+++ b/src/pages/Entry/EntryList.vue
@@ -1,22 +1,150 @@
+
+
+
+
+
+
-
-
-
- {{ 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/InvoiceIn/Card/InvoiceInBasicData.vue b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue
index 4572c4c16..a46978458 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue
@@ -23,6 +23,7 @@ const userConfig = ref(null);
const suppliers = ref([]);
const suppliersRef = ref();
+const suppliersRefFilter = ref({ fields: ['id', 'nickname'], limit: 30 });
const currencies = ref([]);
const currenciesRef = ref();
const companies = ref([]);
@@ -130,13 +131,24 @@ async function upsert() {
});
}
}
+
+function supplierRefFilter(val) {
+ let where = { limit: 30 };
+ let params = {};
+ let key = 'nickname';
+
+ if (new RegExp(/\d/g).test(val)) {
+ key = 'id';
+ }
+ params = { [key]: { like: `%${val}%` } };
+ where = Object.assign(where, params);
+ suppliersRef.value.fetch({ where });
+}
(suppliers = data)"
/>
(currencies = data)"
+ auto-load
/>
(companies = data)"
+ auto-load
/>
(dmsTypes = data)"
+ auto-load
/>
(warehouses = data)"
+ auto-load
/>
(allowedContentTypes = data)"
+ auto-load
/>
@@ -406,7 +424,6 @@ async function upsert() {
:options="currencies"
option-value="id"
option-label="code"
- @input-value="currenciesRef.fetch()"
/>
@@ -417,7 +434,6 @@ async function upsert() {
:options="companies"
option-value="id"
option-label="code"
- @input-value="companiesRef.fetch()"
/>
@@ -459,7 +475,6 @@ async function upsert() {
:options="companies"
option-value="id"
option-label="code"
- @input-value="companiesRef.fetch()"
:rules="[requiredFieldRule]"
/>
@@ -471,7 +486,6 @@ async function upsert() {
:options="warehouses"
option-value="id"
option-label="name"
- @input-value="warehousesRef.fetch()"
:rules="[requiredFieldRule]"
/>
@@ -571,7 +584,6 @@ async function upsert() {
:options="companies"
option-value="id"
option-label="code"
- @input-value="companiesRef.fetch()"
:rules="[requiredFieldRule]"
/>
@@ -583,7 +595,6 @@ async function upsert() {
:options="warehouses"
option-value="id"
option-label="name"
- @input-value="warehousesRef.fetch()"
:rules="[requiredFieldRule]"
/>
diff --git a/src/pages/InvoiceIn/Card/InvoiceInCard.vue b/src/pages/InvoiceIn/Card/InvoiceInCard.vue
index 4d06cb41e..e22da75bf 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInCard.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInCard.vue
@@ -4,6 +4,7 @@ import { useStateStore } from 'stores/useStateStore';
import InvoiceInDescriptor from './InvoiceInDescriptor.vue';
import LeftMenu from 'components/LeftMenu.vue';
import VnSearchbar from 'components/ui/VnSearchbar.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
import { useArrayData } from 'src/composables/useArrayData';
import { onMounted, watch } from 'vue';
import { useRoute } from 'vue-router';
@@ -74,11 +75,7 @@ onMounted(async () => {
-
-
-
-
-
+
diff --git a/src/pages/InvoiceIn/Card/InvoiceInLog.vue b/src/pages/InvoiceIn/Card/InvoiceInLog.vue
new file mode 100644
index 000000000..e48211546
--- /dev/null
+++ b/src/pages/InvoiceIn/Card/InvoiceInLog.vue
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/src/pages/InvoiceIn/Card/InvoiceInSummary.vue b/src/pages/InvoiceIn/Card/InvoiceInSummary.vue
index d7039fe3d..6c202c5a3 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInSummary.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInSummary.vue
@@ -203,7 +203,7 @@ function getLink(param) {
@on-fetch="(data) => setData(data)"
>
- {{ invoiceIn.id }} - {{ invoiceIn.supplier.name }}
+ {{ invoiceIn.id }} - {{ invoiceIn.supplier?.name }}
@@ -216,7 +216,7 @@ function getLink(param) {
-
-
-
-
-
-
+
-
- {{ t('components.smartCard.openCard') }}
-
-
-
-
- {{ t('components.smartCard.openSummary') }}
-
-
+ class="bg-vn-dark"
+ outline
+ type="reset"
+ />
+
+
-
- {{ t('components.smartCard.downloadFile') }}
-
-
+ type="submit"
+ color="primary"
+ />
@@ -176,4 +168,5 @@ function viewSummary(id) {
es:
Search invoice: Buscar factura emitida
You can search by invoice reference: Puedes buscar por referencia de la factura
+ Download: Descargar
diff --git a/src/pages/InvoiceOut/Card/InvoiceOutCard.vue b/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
index d24eb3ef2..bfab4b9e1 100644
--- a/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
+++ b/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
@@ -4,6 +4,7 @@ import { useStateStore } from 'stores/useStateStore';
import InvoiceOutDescriptor from './InvoiceOutDescriptor.vue';
import LeftMenu from 'components/LeftMenu.vue';
import VnSearchbar from 'components/ui/VnSearchbar.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
const stateStore = useStateStore();
const { t } = useI18n();
@@ -26,11 +27,7 @@ const { t } = useI18n();
-
-
-
-
-
+
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..c832d577c 100644
--- a/src/pages/InvoiceOut/InvoiceOutNegativeBases.vue
+++ b/src/pages/InvoiceOut/InvoiceOutNegativeBases.vue
@@ -4,13 +4,14 @@ import { useI18n } from 'vue-i18n';
import { QCheckbox, QBtn } from 'quasar';
import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue';
-import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
import InvoiceOutNegativeFilter from './InvoiceOutNegativeBasesFilter.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
import { toCurrency } from 'src/filters';
import { useInvoiceOutGlobalStore } from 'src/stores/invoiceOutGlobal.js';
import { useStateStore } from 'stores/useStateStore';
import { useArrayData } from 'composables/useArrayData';
+import VnUserLink from 'src/components/ui/VnUserLink.vue';
const invoiceOutGlobalStore = useInvoiceOutGlobalStore();
const stateStore = useStateStore();
@@ -187,9 +188,21 @@ const columns = computed(() => [
]);
const downloadCSV = async () => {
+ const params = {}; // filter.value;
+ const filterParams = {
+ limit: 20,
+ where: {
+ and: [],
+ },
+ };
+ for (const param in params) {
+ if (params[param]) filterParams.where.and.push({ [param]: params[param] });
+ }
+
await invoiceOutGlobalStore.getNegativeBasesCsv(
arrayData.value.store.userParams.from,
- arrayData.value.store.userParams.to
+ arrayData.value.store.userParams.to,
+ params
);
};
@@ -213,11 +226,7 @@ const selectWorkerId = (id) => {
-
-
-
-
-
+
{
"
>{{ props.value }}
-
-
+
+
@@ -255,7 +270,7 @@ const selectWorkerId = (id) => {
diff --git a/src/pages/Order/Card/OrderBasicData.vue b/src/pages/Order/Card/OrderBasicData.vue
deleted file mode 100644
index 0611fa874..000000000
--- a/src/pages/Order/Card/OrderBasicData.vue
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/pages/Order/Card/OrderCard.vue b/src/pages/Order/Card/OrderCard.vue
index 4163e22a4..7ac083c37 100644
--- a/src/pages/Order/Card/OrderCard.vue
+++ b/src/pages/Order/Card/OrderCard.vue
@@ -2,6 +2,7 @@
import LeftMenu from 'components/LeftMenu.vue';
import { useStateStore } from 'stores/useStateStore';
import OrderDescriptor from 'pages/Order/Card/OrderDescriptor.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
const stateStore = useStateStore();
@@ -15,9 +16,8 @@ const stateStore = useStateStore();
-
-
-
+
+
diff --git a/src/pages/Order/Card/OrderCatalogFilter.vue b/src/pages/Order/Card/OrderCatalogFilter.vue
index 46de63abd..c325a9b05 100644
--- a/src/pages/Order/Card/OrderCatalogFilter.vue
+++ b/src/pages/Order/Card/OrderCatalogFilter.vue
@@ -1,11 +1,14 @@
- {
- categoryList = (data || [])
- .filter((category) => category.display)
- .map((category) => ({
- ...category,
- icon: `vn:${(category.icon || '').split('-')[1]}`,
- }));
- }
- "
- />
+
@@ -104,21 +199,37 @@ function exprBuilder(param, value) {
{{ formatFn(tag.value) }}
-
-
+
+
+
+
+ {{ JSON.parse(chip).tagSelection?.name }}:
+ {{
+ (JSON.parse(chip).values || [])
+ .map((item) => item.value)
+ .join(' | ')
+ }}
+
+
+
+
+
+
{{ t(category.name) }}
@@ -126,7 +237,7 @@ function exprBuilder(param, value) {
-
+
(selectedTypeFk = value)"
+ @update:model-value="
+ (value) => {
+ selectedTypeFk = value;
+ searchFn();
+ }
+ "
>
@@ -155,6 +271,130 @@ function exprBuilder(param, value) {
+
+
+
+ onOrderChange(value, params, searchFn)
+ "
+ />
+
+
+
+
+ onOrderFieldChange(value, params, searchFn)
+ "
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+ (tagOptions = data)"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
@@ -182,12 +422,29 @@ function exprBuilder(param, value) {
.category-icon {
border-radius: 50%;
- background-color: var(--vn-label);
+ background-color: var(--vn-light-gray);
font-size: 2.6rem;
padding: 8px;
cursor: pointer;
}
}
+
+.filter-icon {
+ font-size: 24px;
+ color: $primary;
+ padding: 0 4px;
+ cursor: pointer;
+}
+
+.filter-input {
+ flex-shrink: 1;
+ min-width: 0;
+}
+
+.filter-value {
+ display: flex;
+ align-items: center;
+}
@@ -195,10 +452,16 @@ en:
params:
type: Type
orderBy: Order By
+ tag: Tag
+ value: Value
+ order: Order
es:
params:
type: Tipo
orderBy: Ordenar por
+ tag: Etiqueta
+ value: Valor
+ order: Orden
Plant: Planta
Flower: Flor
Handmade: Confección
diff --git a/src/pages/Order/Card/OrderCatalogItem.vue b/src/pages/Order/Card/OrderCatalogItem.vue
index 6579fc261..140a4c349 100644
--- a/src/pages/Order/Card/OrderCatalogItem.vue
+++ b/src/pages/Order/Card/OrderCatalogItem.vue
@@ -6,6 +6,8 @@ import OrderCatalogItemDialog from 'pages/Order/Card/OrderCatalogItemDialog.vue'
import toCurrency from '../../../filters/toCurrency';
import { ref } from 'vue';
+const DEFAULT_PRICE_KG = 0;
+
const session = useSession();
const token = session.getToken();
const { t } = useI18n();
@@ -22,7 +24,7 @@ const dialog = ref(null);
-
+
- {{ 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/OrderDescriptorMenu.vue b/src/pages/Order/Card/OrderDescriptorMenu.vue
index b432ba4d7..2e36aa3c5 100644
--- a/src/pages/Order/Card/OrderDescriptorMenu.vue
+++ b/src/pages/Order/Card/OrderDescriptorMenu.vue
@@ -51,13 +51,13 @@ async function remove() {
en:
- deleteOrder: Delete order,
- confirmDeletion: Confirm deletion,
+ deleteOrder: Delete order
+ confirmDeletion: Confirm deletion
confirmDeletionMessage: Are you sure you want to delete this order?
es:
- deleteOrder: Eliminar pedido,
- confirmDeletion: Confirmar eliminación,
+ deleteOrder: Eliminar pedido
+ confirmDeletion: Confirmar eliminación
confirmDeletionMessage: Seguro que quieres eliminar este pedido?
diff --git a/src/pages/Order/Card/OrderForm.vue b/src/pages/Order/Card/OrderForm.vue
index 4c7e2c326..42aee7640 100644
--- a/src/pages/Order/Card/OrderForm.vue
+++ b/src/pages/Order/Card/OrderForm.vue
@@ -9,6 +9,7 @@ import FetchData from 'components/FetchData.vue';
import VnRow from 'components/ui/VnRow.vue';
import VnSelectFilter from 'components/common/VnSelectFilter.vue';
import VnInputDate from 'components/common/VnInputDate.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
const { t } = useI18n();
const route = useRoute();
@@ -65,8 +66,8 @@ const fetchAgencyList = async (landed, addressFk) => {
};
const fetchOrderDetails = (order) => {
- fetchAddressList(order?.addressFk)
- fetchAgencyList(order?.landed, order?.addressFk)
+ fetchAddressList(order?.addressFk);
+ fetchAgencyList(order?.landed, order?.addressFk);
};
const orderMapper = (order) => {
@@ -105,105 +106,103 @@ const orderFilter = {
-
-
-
-
-
(clientList = data)"
:filter="{ fields: ['id', 'name', 'defaultAddressFk'] }"
auto-load
/>
-
-
-
-
- fetchAddressList(client.defaultAddressFk)
- "
- >
-
-
-
-
- {{ `${scope.opt.id}: ${scope.opt.name}` }}
-
-
-
-
-
-
-
- fetchAgencyList(data.landed, data.addressFk)
- "
- >
-
-
-
-
- {{
- `${scope.opt.nickname}: ${scope.opt.street},${scope.opt.city}`
- }}
-
-
-
-
-
-
-
-
-
- fetchAgencyList(data.landed, data.addressFk)
- "
- />
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ fetchAddressList(client.defaultAddressFk)
+ "
+ >
+
+
+
+
+ {{ `${scope.opt.id}: ${scope.opt.name}` }}
+
+
+
+
+
+
+
+ fetchAgencyList(data.landed, data.addressFk)
+ "
+ >
+
+
+
+
+ {{
+ `${scope.opt.nickname}: ${scope.opt.street},${scope.opt.city}`
+ }}
+
+
+
+
+
+
+
+
+
+ fetchAgencyList(data.landed, data.addressFk)
+ "
+ />
+
+
+
+
+
+
+
+
+
+
+
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..9b26891a1 100644
--- a/src/pages/Order/Card/OrderSummary.vue
+++ b/src/pages/Order/Card/OrderSummary.vue
@@ -56,148 +56,161 @@ const detailsColumns = ref([
-
-
- {{ t('order.summary.basket') }} #{{ entity?.id }} -
- {{ entity?.client?.name }} ({{ entity?.clientFk }})
-
-
-
-
-
-
-
- {{ dashIfEmpty(entity?.address?.nickname) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ dashIfEmpty(entity?.address?.phone) }}
-
-
-
-
-
-
-
-
-
-
-
- {{ entity?.note }}
-
-
-
-
-
- {{ t('order.summary.subtotal') }}
-
-
- {{ toCurrency(entity?.subTotal) }}
-
-
-
-
- {{ t('order.summary.vat') }}
-
-
- {{ toCurrency(entity?.VAT) }}
-
-
-
-
- {{ t('order.summary.total') }}
-
-
- {{ toCurrency(entity?.total) }}
-
-
-
-
-
-
-
-
- {{ t('order.summary.item') }}
- {{ t('order.summary.description') }}
- {{ t('order.summary.quantity') }}
- {{ t('order.summary.price') }}
- {{ t('order.summary.amount') }}
-
-
-
-
-
- {{ props.row.item?.id }}
-
-
-
- {{ props.row.item.name }}
-
- {{ props.row.item.subName }}
-
-
-
-
-
- {{ props.row.quantity }}
-
-
- {{ props.row.price }}
-
-
- {{ toCurrency(props.row?.quantity * props.row?.price) }}
-
-
-
-
-
-
-
+
+
+
+
+ {{ t('order.summary.basket') }} #{{ entity?.id }} -
+ {{ entity?.client?.name }} ({{ entity?.clientFk }})
+
+
+
+
+
+
+
+ {{ dashIfEmpty(entity?.address?.nickname) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ dashIfEmpty(entity?.address?.phone) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ entity?.note }}
+
+
+
+
+
+ {{ t('order.summary.subtotal') }}
+
+
+ {{
+ toCurrency(entity?.subTotal)
+ }}
+
+
+
+
+ {{ t('order.summary.vat') }}
+
+
+ {{ toCurrency(entity?.VAT) }}
+
+
+
+
+ {{ t('order.summary.total') }}
+
+
+ {{ toCurrency(entity?.total) }}
+
+
+
+
+
+
+
+
+ {{ t('order.summary.item') }}
+ {{ t('order.summary.description') }}
+ {{ t('order.summary.quantity') }}
+ {{ t('order.summary.price') }}
+ {{ t('order.summary.amount') }}
+
+
+
+
+
+ {{ props.row.item?.id }}
+
+
+
+ {{ props.row.item.name }}
+
+ {{ props.row.item.subName }}
+
+
+
+
+
+ {{ props.row.quantity }}
+
+
+ {{ props.row.price }}
+
+
+ {{
+ toCurrency(props.row?.quantity * props.row?.price)
+ }}
+
+
+
+
+
+
+
+
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..a300ae8e7 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.list.newSupplier') }}
+
+
+
+
+
+ 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 04115cc3d..6b6e8c7f7 100644
--- a/src/pages/Supplier/Card/SupplierCard.vue
+++ b/src/pages/Supplier/Card/SupplierCard.vue
@@ -4,6 +4,7 @@ import { useStateStore } from 'stores/useStateStore';
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
import LeftMenu from 'components/LeftMenu.vue';
import SupplierDescriptor from './SupplierDescriptor.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
const stateStore = useStateStore();
const { t } = useI18n();
@@ -27,11 +28,7 @@ const { t } = useI18n();
-
-
-
-
-
+
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/SupplierDescriptor.vue b/src/pages/Supplier/Card/SupplierDescriptor.vue
index 910d36489..43857fd1e 100644
--- a/src/pages/Supplier/Card/SupplierDescriptor.vue
+++ b/src/pages/Supplier/Card/SupplierDescriptor.vue
@@ -78,11 +78,11 @@ const setData = (entity) => {
diff --git a/src/pages/Supplier/Card/SupplierFiscalData.vue b/src/pages/Supplier/Card/SupplierFiscalData.vue
index dd018ac60..28ad26961 100644
--- a/src/pages/Supplier/Card/SupplierFiscalData.vue
+++ b/src/pages/Supplier/Card/SupplierFiscalData.vue
@@ -1 +1,299 @@
-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.'
+ )
+ }}
+
+
+
+
+
+ {{ data }}
+
+
+
+
+
+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 8f09b5510..d734e21a5 100644
--- a/src/pages/Supplier/Card/SupplierSummary.vue
+++ b/src/pages/Supplier/Card/SupplierSummary.vue
@@ -3,11 +3,11 @@ import { onMounted, ref, computed, onUpdated } from 'vue';
import { useRoute } from 'vue-router';
import { useI18n } from 'vue-i18n';
import CardSummary from 'components/ui/CardSummary.vue';
-import WorkerDescriptorProxy from 'pages/Worker/Card/WorkerDescriptorProxy.vue';
import VnLv from 'src/components/ui/VnLv.vue';
import { getUrl } from 'src/composables/getUrl';
import { useRole } from 'src/composables/useRole';
import { dashIfEmpty } from 'src/filters';
+import VnUserLink from 'src/components/ui/VnUserLink.vue';
onUpdated(() => summaryRef.value.fetch());
@@ -71,13 +71,10 @@ const isAdministrative = computed(() => {
-
- {{ dashIfEmpty(supplier.worker?.user?.nickname) }}
-
-
+
@@ -185,4 +182,3 @@ const isAdministrative = computed(() => {
-
diff --git a/src/pages/Supplier/SupplierCreate.vue b/src/pages/Supplier/SupplierCreate.vue
index d6cfaeb42..ebe0518f2 100644
--- a/src/pages/Supplier/SupplierCreate.vue
+++ b/src/pages/Supplier/SupplierCreate.vue
@@ -5,6 +5,7 @@ import VnSearchbar from 'components/ui/VnSearchbar.vue';
import FormModel from 'components/FormModel.vue';
import VnRow from 'components/ui/VnRow.vue';
import VnInput from 'src/components/common/VnInput.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
import { useStateStore } from 'stores/useStateStore';
@@ -28,11 +29,7 @@ const newSupplierForm = reactive({
-
-
-
-
-
+
-
-
-
-
-
+
+
diff --git a/src/pages/Ticket/Card/TicketDescriptor.vue b/src/pages/Ticket/Card/TicketDescriptor.vue
index d2a407874..37ed13c2e 100644
--- a/src/pages/Ticket/Card/TicketDescriptor.vue
+++ b/src/pages/Ticket/Card/TicketDescriptor.vue
@@ -8,7 +8,7 @@ import CardDescriptor from 'components/ui/CardDescriptor.vue';
import TicketDescriptorMenu from './TicketDescriptorMenu.vue';
import VnLv from 'src/components/ui/VnLv.vue';
import useCardDescription from 'src/composables/useCardDescription';
-import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
+import VnUserLink from 'src/components/ui/VnUserLink.vue';
const $props = defineProps({
id: {
@@ -106,13 +106,10 @@ const setData = (entity) =>
-
- {{ entity.client.salesPersonUser.name }}
-
-
+
diff --git a/src/pages/Ticket/Card/TicketSms.vue b/src/pages/Ticket/Card/TicketSms.vue
index b145be50e..ff7de6611 100644
--- a/src/pages/Ticket/Card/TicketSms.vue
+++ b/src/pages/Ticket/Card/TicketSms.vue
@@ -1,118 +1,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
- {{ row.sms.sender.name }}
-
-
-
-
-
-
- {{
- formatNumer(row.sms.destination)
- }}
- {{ row.sms.message }}
-
-
- {{
- date.formatDate(
- row.sms.created,
- 'YYYY-MM-DD HH:mm:ss'
- )
- }}
-
-
- {{ row.sms.status }}
-
-
-
-
-
-
-
-
+
diff --git a/src/pages/Ticket/Card/TicketSummary.vue b/src/pages/Ticket/Card/TicketSummary.vue
index cfc35c032..65523bb82 100644
--- a/src/pages/Ticket/Card/TicketSummary.vue
+++ b/src/pages/Ticket/Card/TicketSummary.vue
@@ -8,10 +8,10 @@ import CardSummary from 'components/ui/CardSummary.vue';
import FetchData from 'components/FetchData.vue';
import FetchedTags from 'components/ui/FetchedTags.vue';
import InvoiceOutDescriptorProxy from 'pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue';
-import WorkerDescriptorProxy from 'pages/Worker/Card/WorkerDescriptorProxy.vue';
import VnLv from 'src/components/ui/VnLv.vue';
import VnLinkPhone from 'src/components/ui/VnLinkPhone.vue';
import { getUrl } from 'src/composables/getUrl';
+import VnUserLink from 'src/components/ui/VnUserLink.vue';
onUpdated(() => summaryRef.value.fetch());
@@ -49,7 +49,7 @@ async function setData(data) {
function formattedAddress() {
if (!ticket.value) return '';
- const address = this.ticket.address;
+ const address = ticket.value.address;
const postcode = address.postalCode;
const province = address.province ? `(${address.province.name})` : '';
@@ -58,7 +58,7 @@ function formattedAddress() {
function isEditable() {
try {
- return !this.ticket.ticketState.state.alertLevel;
+ return !ticket.value.ticketState.state.alertLevel;
} catch (e) {
console.error(e);
}
@@ -67,10 +67,10 @@ function isEditable() {
}
async function changeState(value) {
- if (!this.ticket.id) return;
+ if (!ticket.value.id) return;
const formData = {
- ticketFk: this.ticket.id,
+ ticketFk: ticket.value.id,
code: value,
};
@@ -160,13 +160,10 @@ async function changeState(value) {
-
- {{ ticket.client?.salesPersonUser?.name }}
-
-
+
diff --git a/src/pages/Travel/Card/TravelCard.vue b/src/pages/Travel/Card/TravelCard.vue
index b5e555a44..34ecc25ee 100644
--- a/src/pages/Travel/Card/TravelCard.vue
+++ b/src/pages/Travel/Card/TravelCard.vue
@@ -2,6 +2,7 @@
import { useStateStore } from 'stores/useStateStore';
import TravelDescriptor from './TravelDescriptor.vue';
import LeftMenu from 'components/LeftMenu.vue';
+import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
const stateStore = useStateStore();
@@ -15,11 +16,8 @@ const stateStore = useStateStore();
-
-
-
-
-
+
+
diff --git a/src/pages/Travel/ExtraCommunity.vue b/src/pages/Travel/ExtraCommunity.vue
index 245cbc9de..b9f4f002e 100644
--- a/src/pages/Travel/ExtraCommunity.vue
+++ b/src/pages/Travel/ExtraCommunity.vue
@@ -103,111 +103,109 @@ const tableColumnComponents = {
},
};
-const columns = computed(() => {
- return [
- {
- label: 'id',
- field: 'id',
- name: 'id',
- align: 'left',
- showValue: true,
- },
- {
- label: t('supplier.pageTitles.supplier'),
- field: 'cargoSupplierNickname',
- name: 'cargoSupplierNickname',
- align: 'left',
- showValue: true,
- },
- {
- label: t('globals.agency'),
- field: 'agencyModeName',
- name: 'agencyModeName',
- align: 'left',
- showValue: true,
- },
- {
- label: t('globals.amount'),
- name: 'invoiceAmount',
- field: 'entries',
- align: 'left',
- showValue: true,
- format: (value) =>
- toCurrency(
- value
- ? value.reduce((sum, entry) => {
- return sum + (entry.invoiceAmount || 0);
- }, 0)
- : 0
- ),
- },
- {
- label: t('globals.reference'),
- field: 'ref',
- name: 'ref',
- align: 'left',
- showValue: false,
- },
- {
- label: t('globals.packages'),
- field: 'stickers',
- name: 'stickers',
- align: 'left',
- showValue: true,
- },
- {
- label: t('kg'),
- field: 'kg',
- name: 'kg',
- align: 'left',
- showValue: true,
- },
- {
- label: t('physicKg'),
- field: 'loadedKg',
- name: 'loadedKg',
- align: 'left',
- showValue: true,
- },
- {
- label: 'KG Vol.',
- field: 'volumeKg',
- name: 'volumeKg',
- align: 'left',
- showValue: true,
- },
- {
- label: t('globals.wareHouseOut'),
- field: 'warehouseOutName',
- name: 'warehouseOutName',
- align: 'left',
- showValue: true,
- },
- {
- label: t('shipped'),
- field: 'shipped',
- name: 'shipped',
- align: 'left',
- format: (value) => toDate(value.substring(0, 10)),
- showValue: true,
- },
- {
- label: t('globals.wareHouseIn'),
- field: 'warehouseInName',
- name: 'warehouseInName',
- align: 'left',
- showValue: true,
- },
- {
- label: t('landed'),
- field: 'landed',
- name: 'landed',
- align: 'left',
- format: (value) => toDate(value.substring(0, 10)),
- showValue: true,
- },
- ];
-});
+const columns = computed(() => [
+ {
+ label: 'id',
+ field: 'id',
+ name: 'id',
+ align: 'left',
+ showValue: true,
+ },
+ {
+ label: t('supplier.pageTitles.supplier'),
+ field: 'cargoSupplierNickname',
+ name: 'cargoSupplierNickname',
+ align: 'left',
+ showValue: true,
+ },
+ {
+ label: t('globals.agency'),
+ field: 'agencyModeName',
+ name: 'agencyModeName',
+ align: 'left',
+ showValue: true,
+ },
+ {
+ label: t('globals.amount'),
+ name: 'invoiceAmount',
+ field: 'entries',
+ align: 'left',
+ showValue: true,
+ format: (value) =>
+ toCurrency(
+ value
+ ? value.reduce((sum, entry) => {
+ return sum + (entry.invoiceAmount || 0);
+ }, 0)
+ : 0
+ ),
+ },
+ {
+ label: t('globals.reference'),
+ field: 'ref',
+ name: 'ref',
+ align: 'left',
+ showValue: false,
+ },
+ {
+ label: t('globals.packages'),
+ field: 'stickers',
+ name: 'stickers',
+ align: 'left',
+ showValue: true,
+ },
+ {
+ label: t('kg'),
+ field: 'kg',
+ name: 'kg',
+ align: 'left',
+ showValue: true,
+ },
+ {
+ label: t('physicKg'),
+ field: 'loadedKg',
+ name: 'loadedKg',
+ align: 'left',
+ showValue: true,
+ },
+ {
+ label: 'KG Vol.',
+ field: 'volumeKg',
+ name: 'volumeKg',
+ align: 'left',
+ showValue: true,
+ },
+ {
+ label: t('globals.wareHouseOut'),
+ field: 'warehouseOutName',
+ name: 'warehouseOutName',
+ align: 'left',
+ showValue: true,
+ },
+ {
+ label: t('shipped'),
+ field: 'shipped',
+ name: 'shipped',
+ align: 'left',
+ format: (value) => toDate(value.substring(0, 10)),
+ showValue: true,
+ },
+ {
+ label: t('globals.wareHouseIn'),
+ field: 'warehouseInName',
+ name: 'warehouseInName',
+ align: 'left',
+ showValue: true,
+ },
+ {
+ label: t('landed'),
+ field: 'landed',
+ name: 'landed',
+ align: 'left',
+ format: (value) => toDate(value.substring(0, 10)),
+ showValue: true,
+ },
+]);
async function getData() {
await arrayData.fetch({ append: false });
@@ -264,7 +262,16 @@ onMounted(async () => {
-
+
+
+ {{ t('Open as PDF') }}
+
+
@@ -395,7 +402,7 @@ onMounted(async () => {
|