From c0be47a2e41fb4e354b6f5fedb1c95bb10660fa7 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 26 Nov 2024 11:29:52 +0000 Subject: [PATCH 01/42] style: limit space QCheckbox when is children's QItemSection --- src/css/app.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/css/app.scss b/src/css/app.scss index d4c76ad6b1e..5f19731d779 100644 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -292,3 +292,7 @@ input::-webkit-inner-spin-button { .no-visible { visibility: hidden; } + +.q-item > .q-item__section > .q-checkbox { + max-width: fit-content; +} From e3fa756b1483c665d2f78fa7f59d615e3678d99a Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 26 Nov 2024 11:36:05 +0000 Subject: [PATCH 02/42] style: remove space from checkbox --- src/css/app.scss | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/css/app.scss b/src/css/app.scss index 5f19731d779..86eeb611603 100644 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -293,6 +293,10 @@ input::-webkit-inner-spin-button { visibility: hidden; } -.q-item > .q-item__section > .q-checkbox { - max-width: fit-content; +.q-item > .q-item__section:has(.q-checkbox) { + max-width: min-content; +} + +.row > .column:has(.q-checkbox) { + max-width: min-content; } From a9a09ad0a3aa9f81639a98c88680308fc1ec542c Mon Sep 17 00:00:00 2001 From: jtubau Date: Fri, 27 Dec 2024 13:58:35 +0100 Subject: [PATCH 03/42] refactor: refs #8316 used VnSection and VnCardBeta --- src/pages/Entry/Card/EntryCard.vue | 14 +- src/pages/Entry/EntryList.vue | 122 ++++++++--------- src/pages/Entry/locale/en.yml | 3 + src/pages/Entry/locale/es.yml | 6 +- src/router/modules/entry.js | 201 ++++++++++++++++------------- 5 files changed, 179 insertions(+), 167 deletions(-) diff --git a/src/pages/Entry/Card/EntryCard.vue b/src/pages/Entry/Card/EntryCard.vue index 3f259633806..6d743926e07 100644 --- a/src/pages/Entry/Card/EntryCard.vue +++ b/src/pages/Entry/Card/EntryCard.vue @@ -1,21 +1,11 @@ diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue index 84ead85ad1d..6e7e9fc8261 100644 --- a/src/pages/Entry/EntryList.vue +++ b/src/pages/Entry/EntryList.vue @@ -2,19 +2,19 @@ import { onMounted, ref, computed } from 'vue'; import { useI18n } from 'vue-i18n'; import EntryFilter from './EntryFilter.vue'; -import VnSearchbar from 'src/components/ui/VnSearchbar.vue'; import { useStateStore } from 'stores/useStateStore'; import VnTable from 'components/VnTable/VnTable.vue'; -import RightMenu from 'src/components/common/RightMenu.vue'; import { toDate } from 'src/filters'; import { useSummaryDialog } from 'src/composables/useSummaryDialog'; import EntrySummary from './Card/EntrySummary.vue'; import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue'; import TravelDescriptorProxy from 'src/pages/Travel/Card/TravelDescriptorProxy.vue'; +import VnSection from 'src/components/common/VnSection.vue'; const stateStore = useStateStore(); const { t } = useI18n(); const tableRef = ref(); +const dataKey = 'EntryList'; const { viewSummary } = useSummaryDialog(); const entryFilter = { @@ -180,67 +180,71 @@ const columns = computed(() => [ }, ]); + + en: inputMin: Must be more than {value} @@ -179,8 +187,3 @@ const handleInsertMode = (e) => { maxLength: El valor excede los {value} carácteres inputMax: Debe ser menor a {value} - diff --git a/src/pages/Customer/CustomerList.vue b/src/pages/Customer/CustomerList.vue index fdfd7ff9c86..037940ffabf 100644 --- a/src/pages/Customer/CustomerList.vue +++ b/src/pages/Customer/CustomerList.vue @@ -50,6 +50,9 @@ const columns = computed(() => [ isTitle: true, create: true, columnClass: 'expand', + attrs: { + uppercase: true, + }, }, { align: 'left', diff --git a/src/pages/Supplier/SupplierList.vue b/src/pages/Supplier/SupplierList.vue index c0748af871e..f9238e36117 100644 --- a/src/pages/Supplier/SupplierList.vue +++ b/src/pages/Supplier/SupplierList.vue @@ -24,8 +24,13 @@ const columns = computed(() => [ label: t('globals.name'), name: 'socialName', create: true, + attrs: { + uppercase: true, + }, columnFilter: { - name: 'search', + name: 'search',attrs: { + uppercase: false, + }, }, isTitle: true, }, diff --git a/src/pages/Worker/WorkerList.vue b/src/pages/Worker/WorkerList.vue index 48393a8c797..0b784b993f5 100644 --- a/src/pages/Worker/WorkerList.vue +++ b/src/pages/Worker/WorkerList.vue @@ -138,7 +138,11 @@ function uppercaseStreetModel(data) { return { get: () => (data.street ? data.street.toUpperCase() : ''), set: (value) => { - data.street = value.toUpperCase(); + if (value) { + data.street = value.toUpperCase(); + } else { + data.street = null; + } }, }; } From f834f3b7549e9c3ea726fa78a72b897d9b7aa50d Mon Sep 17 00:00:00 2001 From: provira Date: Fri, 10 Jan 2025 07:52:22 +0100 Subject: [PATCH 06/42] feat: refs #8258 added button to pass to uppercase --- src/components/common/VnInput.vue | 28 ++++++++++++++++--- .../Customer/Card/CustomerFiscalData.vue | 1 + src/pages/Customer/CustomerList.vue | 5 ++++ .../Supplier/Card/SupplierFiscalData.vue | 1 + src/pages/Supplier/SupplierList.vue | 7 +++-- 5 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/components/common/VnInput.vue b/src/components/common/VnInput.vue index c45f7d07383..e921d8e1f3e 100644 --- a/src/components/common/VnInput.vue +++ b/src/components/common/VnInput.vue @@ -49,15 +49,11 @@ const $props = defineProps({ }); const vnInputRef = ref(null); -const showPassword = ref(false); const value = computed({ get() { return $props.modelValue; }, set(value) { - if ($props.uppercase && typeof value === 'string') { - value = value.toUpperCase(); - } if ($props.emptyToNull && value === '') value = null; emit('update:modelValue', value); }, @@ -124,6 +120,10 @@ const handleInsertMode = (e) => { input.setSelectionRange(cursorPos + 1, cursorPos + 1); }); }; + +const handleUppercase = () => { + value.value = value.value?.toUpperCase() || ''; +}; + + + en: + inputMin: Must be more than {value} + maxLength: The value exceeds {value} characters + inputMax: Must be less than {value} + es: + inputMin: Debe ser mayor a {value} + maxLength: El valor excede los {value} carácteres + inputMax: Debe ser menor a {value} + \ No newline at end of file diff --git a/src/pages/Customer/Card/CustomerFiscalData.vue b/src/pages/Customer/Card/CustomerFiscalData.vue index aff7deda41a..8f2c4efb00c 100644 --- a/src/pages/Customer/Card/CustomerFiscalData.vue +++ b/src/pages/Customer/Card/CustomerFiscalData.vue @@ -44,6 +44,7 @@ function handleLocation(data, location) { :required="true" :rules="validate('client.socialName')" clearable + uppercase="true" v-model="data.socialName" > diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue index 572a5908bdc..edd3ae94258 100644 --- a/src/pages/Entry/EntryList.vue +++ b/src/pages/Entry/EntryList.vue @@ -188,7 +188,6 @@ const columns = computed(() => [ :array-data-props="{ url: 'Entries/filter', order: 'id DESC', - exprBuilder, }" > - - -es: - Virtual entry: Es una redada - Search entries: Buscar entradas - You can search by entry reference: Puedes buscar por referencia de la entrada - Create entry: Crear entrada - diff --git a/src/pages/Entry/locale/en.yml b/src/pages/Entry/locale/en.yml index 565989e13c2..5d0162fe298 100644 --- a/src/pages/Entry/locale/en.yml +++ b/src/pages/Entry/locale/en.yml @@ -1,10 +1,79 @@ entry: + list: + newEntry: New entry + tableVisibleColumns: + created: Creation + supplierFk: Supplier + isBooked: Booked + isConfirmed: Confirmed + isOrdered: Ordered + companyFk: Company + travelFk: Travel + isExcludedFromAvailable: Inventory + invoiceAmount: Import + inventoryEntry: Inventory entry + summary: + commission: Commission + currency: Currency + invoiceNumber: Invoice number + ordered: Ordered + booked: Booked + excludedFromAvailable: Inventory + travelReference: Reference + travelAgency: Agency + travelShipped: Shipped + travelDelivered: Delivered + travelLanded: Landed + travelReceived: Received + buys: Buys + stickers: Stickers + package: Package + packing: Pack. + grouping: Group. + buyingValue: Buying value + import: Import + pvp: PVP + basicData: + travel: Travel + currency: Currency + commission: Commission + observation: Observation + booked: Booked + excludedFromAvailable: Inventory + buys: + observations: Observations + packagingFk: Box + color: Color + printedStickers: Printed stickers + notes: + observationType: Observation type + latestBuys: + tableVisibleColumns: + image: Picture + itemFk: Item ID + weightByPiece: Weight/Piece + isActive: Active + family: Family + entryFk: Entry + freightValue: Freight value + comissionValue: Commission value + packageValue: Package value + isIgnored: Is ignored + price2: Grouping + price3: Packing + minPrice: Min + ektFk: Ekt + packingOut: Package out + landing: Landing + isExcludedFromAvailable: Es inventory + params: + toShipped: To + fromShipped: From + daysOnward: Days onward + daysAgo: Days ago + warehouseInFk: Warehouse in search: Search entries searchInfo: You can search by entry reference -entryList: - list: - inventoryEntry: Inventory entry - showEntryReport: Show entry report entryFilter: filter: search: General search diff --git a/src/pages/Entry/locale/es.yml b/src/pages/Entry/locale/es.yml index f6e8a8b7c8f..064dcbfd927 100644 --- a/src/pages/Entry/locale/es.yml +++ b/src/pages/Entry/locale/es.yml @@ -1,10 +1,80 @@ entry: + list: + newEntry: Nueva entrada + tableVisibleColumns: + created: Creación + supplierFk: Proveedor + isBooked: Asentado + isConfirmed: Confirmado + isOrdered: Pedida + companyFk: Empresa + travelFk: Envio + isExcludedFromAvailable: Inventario + invoiceAmount: Importe + inventoryEntry: Es inventario + summary: + commission: Comisión + currency: Moneda + invoiceNumber: Núm. factura + ordered: Pedida + booked: Contabilizada + excludedFromAvailable: Inventario + travelReference: Referencia + travelAgency: Agencia + travelShipped: F. envio + travelWarehouseOut: Alm. salida + travelDelivered: Enviada + travelLanded: F. entrega + travelReceived: Recibida + buys: Compras + stickers: Etiquetas + package: Embalaje + packing: Pack. + grouping: Group. + buyingValue: Coste + import: Importe + pvp: PVP + basicData: + travel: Envío + currency: Moneda + observation: Observación + commission: Comisión + booked: Asentado + excludedFromAvailable: Inventario + buys: + observations: Observaciónes + packagingFk: Embalaje + color: Color + printedStickers: Etiquetas impresas + notes: + observationType: Tipo de observación + latestBuys: + tableVisibleColumns: + image: Foto + itemFk: Id Artículo + weightByPiece: Peso (gramos)/tallo + isActive: Activo + family: Familia + entryFk: Entrada + freightValue: Porte + comissionValue: Comisión + packageValue: Embalaje + isIgnored: Ignorado + price2: Grouping + price3: Packing + minPrice: Min + ektFk: Ekt + packingOut: Embalaje envíos + landing: Llegada + isExcludedFromAvailable: Es inventario + params: + toShipped: Hasta + fromShipped: Desde + warehouseInFk: Alm. entrada + daysOnward: Días adelante + daysAgo: Días atras search: Buscar entradas searchInfo: Puedes buscar por referencia de entrada -entryList: - list: - inventoryEntry: Es inventario - showEntryReport: Ver informe del pedido entryFilter: filter: search: Búsqueda general From 21958cfdb43cbf941d8e2d723cfcf0ae8632467f Mon Sep 17 00:00:00 2001 From: jorgep Date: Wed, 15 Jan 2025 16:10:33 +0100 Subject: [PATCH 16/42] fix: catch mail err --- src/pages/Worker/Card/WorkerTimeControl.vue | 27 +++++++++++---------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/pages/Worker/Card/WorkerTimeControl.vue b/src/pages/Worker/Card/WorkerTimeControl.vue index 65fbf4b4370..919331e2dcc 100644 --- a/src/pages/Worker/Card/WorkerTimeControl.vue +++ b/src/pages/Worker/Card/WorkerTimeControl.vue @@ -283,21 +283,22 @@ const fetchWeekData = async () => { year: selectedDateYear.value, week: selectedWeekNumber.value, }; - const mail = ( - await axiosNoError.get(`Workers/${route.params.id}/mail`, { - params: { filter: { where } }, - }) - ).data[0]; + try { + const [{ data: mailData }, { data: countData }] = await Promise.all([ + axiosNoError.get(`Workers/${route.params.id}/mail`, { + params: { filter: { where } }, + }), + axiosNoError.get('WorkerTimeControlMails/count', { params: { where } }), + ]); - if (!mail) state.value = null; - else { - state.value = mail.state; - reason.value = mail.reason; + const mail = mailData[0]; + + state.value = mail?.state; + reason.value = mail?.reason; + canResend.value = !!countData.count; + } catch { + state.value = null; } - - canResend.value = !!( - await axiosNoError.get('WorkerTimeControlMails/count', { params: { where } }) - ).data.count; }; const setHours = (data) => { From e335322d5ffb94248db66f0b64ac7801839238d1 Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 16 Jan 2025 09:45:15 +0100 Subject: [PATCH 17/42] fix: refs #7936 allow negative values --- src/pages/Customer/Card/CustomerGreuges.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/Customer/Card/CustomerGreuges.vue b/src/pages/Customer/Card/CustomerGreuges.vue index dcf297d12ed..47a589aaafd 100644 --- a/src/pages/Customer/Card/CustomerGreuges.vue +++ b/src/pages/Customer/Card/CustomerGreuges.vue @@ -84,6 +84,7 @@ const columns = computed(() => [ component: 'number', autofocus: true, required: true, + positive: false, }, format: ({ amount }) => toCurrency(amount), create: true, From 39adfb3693809f4c024a057b46451280df9cf086 Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 16 Jan 2025 10:43:40 +0100 Subject: [PATCH 18/42] fix: refs #8198 update query param --- src/pages/Department/Card/DepartmentDescriptor.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Department/Card/DepartmentDescriptor.vue b/src/pages/Department/Card/DepartmentDescriptor.vue index e08495faf96..b219ccfe12c 100644 --- a/src/pages/Department/Card/DepartmentDescriptor.vue +++ b/src/pages/Department/Card/DepartmentDescriptor.vue @@ -106,7 +106,7 @@ const { openConfirmationModal } = useVnConfirm(); :to="{ name: 'WorkerList', query: { - params: JSON.stringify({ departmentFk: entityId }), + table: JSON.stringify({ departmentFk: entityId }), }, }" > From 6c2fbea6d59cf61e0f8ff9c4fd6259143a4ec682 Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 16 Jan 2025 11:59:08 +0100 Subject: [PATCH 19/42] fix: refs #8407 close date and time popups on keydown --- src/components/common/VnInputDate.vue | 1 + src/components/common/VnInputTime.vue | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/common/VnInputDate.vue b/src/components/common/VnInputDate.vue index fdef6a9a896..db8e25195e4 100644 --- a/src/components/common/VnInputDate.vue +++ b/src/components/common/VnInputDate.vue @@ -107,6 +107,7 @@ const manageDate = (date) => { :rules="mixinRules" :clearable="false" @click="isPopupOpen = !isPopupOpen" + @keydown="isPopupOpen = false" hide-bottom-space > - - - -en: - params: - - 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: - - 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 - + \ No newline at end of file diff --git a/src/pages/Entry/EntryLatestBuys.vue b/src/pages/Entry/EntryLatestBuys.vue index 450efe62414..73fdcbbbf16 100644 --- a/src/pages/Entry/EntryLatestBuys.vue +++ b/src/pages/Entry/EntryLatestBuys.vue @@ -102,7 +102,7 @@ const columns = [ }, { align: 'left', - label: t('globals.weightByPiece'), + label: t('entry.latestBuys.tableVisibleColumns.weightByPiece'), name: 'weightByPiece', columnFilter: { component: 'number', @@ -157,7 +157,7 @@ const columns = [ }, { align: 'left', - label: t('entry.buys.packageValue'), + label: t('entry.latestBuys.tableVisibleColumns.packageValue'), name: 'packageValue', columnFilter: { component: 'number', @@ -262,8 +262,3 @@ onUnmounted(() => (stateStore.rightDrawer = false)); :right-search="false" /> - - -es: - Edit buy(s): Editar compra(s) - diff --git a/src/pages/Entry/EntryStockBought.vue b/src/pages/Entry/EntryStockBought.vue index 3f0cd2d99c1..fa0bdc12e2f 100644 --- a/src/pages/Entry/EntryStockBought.vue +++ b/src/pages/Entry/EntryStockBought.vue @@ -1,5 +1,5 @@