diff --git a/package.json b/package.json index 063cf6de4..7be20a842 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "salix-front", - "version": "24.20.0", + "version": "24.22.0", "description": "Salix frontend", "productName": "Salix", "author": "Verdnatura", diff --git a/src/components/FilterItemForm.vue b/src/components/FilterItemForm.vue index e031999e2..7af9adf93 100644 --- a/src/components/FilterItemForm.vue +++ b/src/components/FilterItemForm.vue @@ -1,7 +1,6 @@ @@ -68,6 +73,8 @@ defineExpose({ :class="{ required: $attrs.required }" @keyup.enter="onEnterPress()" :clearable="false" + :rules="[inputRules]" + :lazy-rules="true" > @@ -85,3 +92,9 @@ defineExpose({ + + en: + inputMin: Must be more than {value} + es: + inputMin: Debe ser mayor a {value} + diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index 5092dbdb7..d8fb231f0 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -1141,6 +1141,7 @@ item: tax: Tax log: Log botanical: Botanical + shelving: Shelving itemTypeCreate: New item type family: Item Type lastEntries: Last entries diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index 41a34f35a..67e075935 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -1140,6 +1140,7 @@ item: botanical: 'Botánico' barcode: 'Código de barras' log: Historial + shelving: Carros itemTypeCreate: Nueva familia family: Familia lastEntries: Últimas entradas diff --git a/src/pages/Entry/Card/EntryBuysImport.vue b/src/pages/Entry/Card/EntryBuysImport.vue index 705f56b68..6d856f068 100644 --- a/src/pages/Entry/Card/EntryBuysImport.vue +++ b/src/pages/Entry/Card/EntryBuysImport.vue @@ -251,6 +251,7 @@ const redirectToBuysView = () => { > diff --git a/src/pages/Item/Card/CreateIntrastatForm.vue b/src/pages/Item/Card/CreateIntrastatForm.vue new file mode 100644 index 000000000..3fd1ffe22 --- /dev/null +++ b/src/pages/Item/Card/CreateIntrastatForm.vue @@ -0,0 +1,52 @@ + + + + + + + + + + + + diff --git a/src/pages/Item/Card/ItemBasicData.vue b/src/pages/Item/Card/ItemBasicData.vue index 334cf049d..7e8fa1d92 100644 --- a/src/pages/Item/Card/ItemBasicData.vue +++ b/src/pages/Item/Card/ItemBasicData.vue @@ -1 +1,233 @@ -Item basic data + + + (itemTypesOptions = data)" + auto-load + /> + (itemsWithNameOptions = data)" + auto-load + /> + (intrastatsOptions = data)" + auto-load + /> + (expensesOptions = data)" + auto-load + /> + + + + + + + + {{ scope.opt?.name }} + + {{ scope.opt?.category?.name }} + + + + + + + + + + + + + + + + + + + {{ scope.opt?.name }} + #{{ scope.opt?.id }} + + + + + + + + + + onIntrastatCreated(requestResponse, data) + " + /> + + + + + {{ scope.opt?.description }} + #{{ scope.opt?.id }} + + + + + + + + + + + + + + + + + + + + + + {{ t('basicData.isFragileTooltip') }} + + + + + + + + {{ t('basicData.isPhotoRequestedTooltip') }} + + + + + + + + + + diff --git a/src/pages/Item/Card/ItemShelving.vue b/src/pages/Item/Card/ItemShelving.vue new file mode 100644 index 000000000..7e7faab36 --- /dev/null +++ b/src/pages/Item/Card/ItemShelving.vue @@ -0,0 +1,279 @@ + + + + (parkingsOptions = data)" + /> + (shelvingsOptions = data)" + /> + + + + + + {{ t('shelvings.total') }} + + + + + {{ t('shelvings.totalLabels') }} + + : {{ totalLabels }} + + + + + + + {{ t('shelvings.removeLines') }} + + + + + + + + + + + + + + + + + + {{ row.longName }} + + + + + + diff --git a/src/pages/Item/locale/en.yml b/src/pages/Item/locale/en.yml index 9acd1de4d..2c0131b4f 100644 --- a/src/pages/Item/locale/en.yml +++ b/src/pages/Item/locale/en.yml @@ -1,3 +1,17 @@ +shelvings: + created: Created + item: Item + concept: Concept + parking: Parking + shelving: Shelving + label: Label + packing: Packing + total: Total + totalLabels: Total labels + removeLines: Remove selected lines + shelvingsRemoved: ItemShelvings removed + removeConfirmTitle: Selected lines will be deleted + removeConfirmSubtitle: Are you sure you want to continue? itemDiary: date: Date id: Id @@ -11,6 +25,30 @@ itemDiary: showBefore: Show what's before the inventory since: Since warehouse: Warehouse +basicData: + type: Type + reference: Reference + relevancy: Relevancy + stems: Stems + multiplier: Multiplier + generic: Generic + intrastat: Intrastat + expense: Expense + weightByPiece: Weight/Piece + boxUnits: Units/Box + recycledPlastic: Recycled plastic + nonRecycledPlastic: Non recycled plastic + description: Description + isActive: Active + hasKgPrice: Price in kg + isFragile: Fragile + isFragileTooltip: Is shown at website, app that this item cannot travel (wreath, palms, ...) + isPhotoRequested: Do photo + isPhotoRequestedTooltip: This item does need a photo +createIntrastatForm: + title: New intrastat + identifier: Identifier + description: Description tax: country: Country class: Class diff --git a/src/pages/Item/locale/es.yml b/src/pages/Item/locale/es.yml index 46e0d9eb7..a09a63249 100644 --- a/src/pages/Item/locale/es.yml +++ b/src/pages/Item/locale/es.yml @@ -1,3 +1,17 @@ +shelvings: + created: Creado + item: Artículo + concept: Concepto + parking: Parking + shelving: Matrícula + label: Etiqueta + packing: Packing + total: Total + totalLabels: Total etiquetas + removeLines: Eliminar líneas seleccionadas + shelvingsRemoved: Carros eliminados + removeConfirmTitle: Las líneas seleccionadas serán eliminadas + removeConfirmSubtitle: ¿Seguro que quieres continuar? itemDiary: date: Fecha id: Id @@ -11,6 +25,30 @@ itemDiary: showBefore: Mostrar lo anterior al inventario since: Desde warehouse: Almacén +basicData: + type: Tipo + reference: Referencia + relevancy: Relevancia + stems: Tallos + multiplier: Multiplicador + generic: Genérico + intrastat: Intrastat + expense: Gasto + weightByPiece: Peso (gramos)/tallo + boxUnits: Unidades/caja + recycledPlastic: Plástico reciclado + nonRecycledPlastic: Plástico no reciclado + description: Descripción + isActive: Activo + hasKgPrice: Precio en kg + isFragile: Frágil + isFragileTooltip: Se muestra en la web app, que este artículo no puede viajar (coronas, palmas, ...) + isPhotoRequested: Hacer foto + isPhotoRequestedTooltip: Este artículo necesita una foto +createIntrastatForm: + title: Nuevo intrastat + identifier: Identificador + description: Descripción tax: country: País class: Clase diff --git a/src/pages/Worker/Card/WorkerBasicData.vue b/src/pages/Worker/Card/WorkerBasicData.vue index 3295a2234..4f1786a67 100644 --- a/src/pages/Worker/Card/WorkerBasicData.vue +++ b/src/pages/Worker/Card/WorkerBasicData.vue @@ -27,7 +27,6 @@ const workerFilter = { }, { relation: 'sip', scope: { fields: ['extension', 'secret'] } }, { relation: 'department', scope: { include: { relation: 'department' } } }, - { relation: 'client', scope: { fields: ['phone'] } }, ], }; const workersFilter = { @@ -87,11 +86,6 @@ const maritalStatus = [ :label="t('Mobile extension')" clearable /> - @@ -163,7 +157,6 @@ es: Last name: Apellidos Business phone: Teléfono de empresa Mobile extension: Extensión móvil - Personal phone: Teléfono personal Boss: Jefe Marital status: Estado civil Married: Casado/a diff --git a/src/pages/Worker/Card/WorkerCard.vue b/src/pages/Worker/Card/WorkerCard.vue index e0047bf9e..d76ef6f59 100644 --- a/src/pages/Worker/Card/WorkerCard.vue +++ b/src/pages/Worker/Card/WorkerCard.vue @@ -1,15 +1,12 @@ { }); const worker = ref(); -const filter = computed(() => { - return { where: { id: entityId.value } }; -}); +const filter = { + include: [ + { + relation: 'user', + scope: { + fields: ['email', 'name', 'nickname'], + }, + }, + { + relation: 'department', + scope: { + include: [ + { + relation: 'department', + }, + ], + }, + }, + { + relation: 'sip', + }, + ], +}; const sip = ref(null); @@ -62,7 +82,7 @@ const setData = (entity) => { { workerUrl.value = (await getUrl('')) + `worker/${entityId.value}/`; }); -const filter = computed(() => { - return { where: { id: entityId.value } }; -}); +const filter = { + include: [ + { + relation: 'user', + scope: { + fields: ['email', 'name', 'nickname', 'roleFk'], + include: { + relation: 'role', + scope: { + fields: ['name'], + }, + }, + }, + }, + { + relation: 'department', + scope: { + include: { + relation: 'department', + scope: { + fields: ['name'], + }, + }, + }, + }, + { + relation: 'boss', + }, + { + relation: 'client', + }, + { + relation: 'sip', + }, + ], +}; - + {{ entity.id }} - {{ entity.firstName }} {{ entity.lastName }} @@ -75,6 +103,12 @@ const filter = computed(() => { + + + {{ t('worker.summary.personalPhone') }} + + + diff --git a/src/router/modules/item.js b/src/router/modules/item.js index f0c68f0e7..24919db39 100644 --- a/src/router/modules/item.js +++ b/src/router/modules/item.js @@ -26,6 +26,7 @@ export default { 'ItemTax', 'ItemBotanical', 'ItemBarcode', + 'ItemShelving', 'ItemLastEntries', ], }, @@ -163,6 +164,15 @@ export default { }, component: () => import('src/pages/Item/Card/ItemBotanical.vue'), }, + { + path: 'shelving', + name: 'ItemShelving', + meta: { + title: 'shelving', + icon: 'vn:inventory', + }, + component: () => import('src/pages/Item/Card/ItemShelving.vue'), + }, { path: 'barcode', name: 'ItemBarcode', @@ -190,6 +200,15 @@ export default { }, component: () => import('src/pages/Item/Card/ItemLog.vue'), }, + { + path: 'botanical', + name: 'ItemBotanical', + meta: { + title: 'botanical', + icon: 'vn:botanical', + }, + component: () => import('src/pages/Item/Card/ItemBotanical.vue'), + }, ], }, ],