diff --git a/src/components/common/VnCheckboxMenu.vue b/src/components/common/VnCheckboxMenu.vue index bfb5b4441..c83e07084 100644 --- a/src/components/common/VnCheckboxMenu.vue +++ b/src/components/common/VnCheckboxMenu.vue @@ -27,6 +27,8 @@ const menuRef = ref(null); const errorMessage = ref(null); const rows = ref(0); const onClick = async () => { + errorMessage.value = null; + if (value.value) { const { filter } = JSON.parse(route.query[props.searchUrl]); filter.limit = 0; diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js index 9f95d639c..a071b9928 100644 --- a/src/composables/useArrayData.js +++ b/src/composables/useArrayData.js @@ -19,7 +19,7 @@ export function useArrayData(key, userOptions) { let canceller = null; onMounted(() => { - setOptions(); + setOptions(userOptions ?? {}); reset(['skip']); const query = route.query; @@ -39,9 +39,10 @@ export function useArrayData(key, userOptions) { setCurrentFilter(); }); - if (key && userOptions) setOptions(); + if (userOptions) setOptions(userOptions); - function setOptions(params = userOptions) { + function setOptions(params) { + if (!params) return; const allowedOptions = [ 'url', 'filter', diff --git a/src/filters/index.js b/src/filters/index.js index bf1429aee..4360559d1 100644 --- a/src/filters/index.js +++ b/src/filters/index.js @@ -6,6 +6,7 @@ import toDateHourMinSec from './toDateHourMinSec'; import toRelativeDate from './toRelativeDate'; import toCurrency from './toCurrency'; import toPercentage from './toPercentage'; +import toNumber from './toNumber'; import toLowerCamel from './toLowerCamel'; import dashIfEmpty from './dashIfEmpty'; import dateRange from './dateRange'; @@ -34,6 +35,7 @@ export { toRelativeDate, toCurrency, toPercentage, + toNumber, dashIfEmpty, dateRange, getParamWhere, diff --git a/src/filters/toNumber.js b/src/filters/toNumber.js new file mode 100644 index 000000000..0fa892c1f --- /dev/null +++ b/src/filters/toNumber.js @@ -0,0 +1,8 @@ +export default function (value, fractionSize = 2) { + if (isNaN(value)) return value; + return new Intl.NumberFormat('es-ES', { + style: 'decimal', + minimumFractionDigits: 0, + maximumFractionDigits: fractionSize, + }).format(value); +} diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index 3c1c80954..4729ca7fc 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -122,6 +122,7 @@ globals: producer: Producer origin: Origin state: State + total: Total subtotal: Subtotal visible: Visible price: Price diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index 518985831..05a210036 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -126,6 +126,7 @@ globals: producer: Productor origin: Origen state: Estado + total: Total subtotal: Subtotal visible: Visible price: Precio diff --git a/src/pages/Customer/components/CustomerFileManagementActions.vue b/src/pages/Customer/components/CustomerFileManagementActions.vue index 683f062ff..1fcafdccd 100644 --- a/src/pages/Customer/components/CustomerFileManagementActions.vue +++ b/src/pages/Customer/components/CustomerFileManagementActions.vue @@ -1,9 +1,9 @@ - - + + - diff --git a/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue b/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue index 5b04e9cfd..8f3695249 100644 --- a/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue +++ b/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue @@ -294,7 +294,7 @@ async function getZone(options) { diff --git a/src/pages/Ticket/Negative/TicketLackFilter.vue b/src/pages/Ticket/Negative/TicketLackFilter.vue index 8c999e0b4..e4cbb9edb 100644 --- a/src/pages/Ticket/Negative/TicketLackFilter.vue +++ b/src/pages/Ticket/Negative/TicketLackFilter.vue @@ -137,8 +137,6 @@ const setUserParams = (params) => { ($event) => onCategoryChange($event, searchFn) " :options="categoriesOptions" - option-value="id" - option-label="name" hide-selected dense filled @@ -152,10 +150,7 @@ const setUserParams = (params) => { [ format: (row, dashIfEmpty) => dashIfEmpty(row.lines), }, { - align: 'left', + align: 'right', label: t('advanceTickets.import'), name: 'totalWithVat', hidden: true, @@ -172,6 +172,15 @@ const ticketColumns = computed(() => [ headerClass: 'horizontal-separator', name: 'futureLiters', }, + { + label: t('advanceTickets.preparation'), + name: 'futurePreparation', + field: 'futurePreparation', + align: 'left', + sortable: true, + headerClass: 'horizontal-separator', + columnFilter: false, + }, { align: 'left', label: t('advanceTickets.futureZone'), @@ -196,15 +205,17 @@ const ticketColumns = computed(() => [ label: t('advanceTickets.notMovableLines'), headerClass: 'horizontal-separator', name: 'notMovableLines', + class: 'shrink', }, { align: 'left', label: t('advanceTickets.futureLines'), headerClass: 'horizontal-separator', name: 'futureLines', + class: 'shrink', }, { - align: 'left', + align: 'right', label: t('advanceTickets.futureImport'), name: 'futureTotalWithVat', hidden: true, @@ -399,8 +410,10 @@ watch( destinationElRef.value.classList.add('text-uppercase', 'color-vn-label'); originElRef.value.classList.add('text-uppercase', 'color-vn-label'); - destinationElRef.value.setAttribute('colspan', '10'); - originElRef.value.setAttribute('colspan', '10'); + originElRef.value.classList.add('advance-icon'); + + destinationElRef.value.setAttribute('colspan', '9'); + originElRef.value.setAttribute('colspan', '11'); destinationElRef.value.textContent = `${t( 'advanceTickets.destination', diff --git a/src/pages/Ticket/TicketAdvanceFilter.vue b/src/pages/Ticket/TicketAdvanceFilter.vue index 5867e8289..6ec910358 100644 --- a/src/pages/Ticket/TicketAdvanceFilter.vue +++ b/src/pages/Ticket/TicketAdvanceFilter.vue @@ -68,7 +68,7 @@ onMounted(async () => await getItemPackingTypes()); {{ formatFn(tag.value) }} -