{
v-model="row.priority"
:required="true"
:rules="validate('itemTag.priority')"
- @keyup.enter.stop="submitTags(row)"
+ @keyup.enter.stop="(data) => itemTagsRef.onSubmit(data)"
/>
{
@click="insertTag(rows)"
color="primary"
icon="add"
- shortcut="+"
+ v-shortcut="'+'"
fab
>
@@ -197,4 +192,5 @@ const submitTags = async (data) => {
es:
Tags can not be repeated: Las etiquetas no pueden repetirse
+ The value must be a number or a range of numbers: El valor debe ser un número o un rango de números
diff --git a/src/pages/Item/ItemFixedPrice.vue b/src/pages/Item/ItemFixedPrice.vue
index 53d300a3b..1c4382fbd 100644
--- a/src/pages/Item/ItemFixedPrice.vue
+++ b/src/pages/Item/ItemFixedPrice.vue
@@ -422,6 +422,7 @@ function handleOnDataSave({ CrudModelRef }) {
onDataSaved: handleOnDataSave,
}"
:disable-option="{ card: true }"
+ :has-sub-toolbar="false"
>
diff --git a/src/pages/Item/ItemListFilter.vue b/src/pages/Item/ItemListFilter.vue
index c805a95ea..22e948e06 100644
--- a/src/pages/Item/ItemListFilter.vue
+++ b/src/pages/Item/ItemListFilter.vue
@@ -12,6 +12,7 @@ import { QCheckbox } from 'quasar';
import { useArrayData } from 'composables/useArrayData';
import { useValidator } from 'src/composables/useValidator';
import axios from 'axios';
+import VnSelectSupplier from 'src/components/common/VnSelectSupplier.vue';
const { t } = useI18n();
@@ -246,34 +247,14 @@ onMounted(async () => {
-
-
-
-
-
- {{ scope.opt?.name }}
-
-
- {{ `#${scope.opt?.id} , ${scope.opt?.nickname}` }}
-
-
-
-
-
+ />
diff --git a/src/pages/Item/ItemRequest.vue b/src/pages/Item/ItemRequest.vue
index d96fbca2f..76e4b8083 100644
--- a/src/pages/Item/ItemRequest.vue
+++ b/src/pages/Item/ItemRequest.vue
@@ -272,11 +272,12 @@ const onDenyAccept = (_, responseData) => {
diff --git a/src/pages/Item/ItemType/Card/ItemTypeBasicData.vue b/src/pages/Item/ItemType/Card/ItemTypeBasicData.vue
index 1a4a7c9f3..475dffd8b 100644
--- a/src/pages/Item/ItemType/Card/ItemTypeBasicData.vue
+++ b/src/pages/Item/ItemType/Card/ItemTypeBasicData.vue
@@ -40,22 +40,17 @@ const itemPackingTypesOptions = ref([]);
}"
auto-load
/>
-
+
-
-
+
+
-
+
-
+
-
+
diff --git a/src/pages/Item/ItemType/Card/ItemTypeCard.vue b/src/pages/Item/ItemType/Card/ItemTypeCard.vue
index fa51e428e..84e810de5 100644
--- a/src/pages/Item/ItemType/Card/ItemTypeCard.vue
+++ b/src/pages/Item/ItemType/Card/ItemTypeCard.vue
@@ -1,12 +1,14 @@
diff --git a/src/pages/Item/ItemType/Card/ItemTypeDescriptor.vue b/src/pages/Item/ItemType/Card/ItemTypeDescriptor.vue
index 6d093d91d..0f71ad1f1 100644
--- a/src/pages/Item/ItemType/Card/ItemTypeDescriptor.vue
+++ b/src/pages/Item/ItemType/Card/ItemTypeDescriptor.vue
@@ -1,12 +1,11 @@
-
-
-
-
+
+
+
{{ entity.worker?.firstName }}
-
+
-
diff --git a/src/pages/Item/ItemType/Card/ItemTypeFilter.js b/src/pages/Item/ItemType/Card/ItemTypeFilter.js
new file mode 100644
index 000000000..5651d368d
--- /dev/null
+++ b/src/pages/Item/ItemType/Card/ItemTypeFilter.js
@@ -0,0 +1,8 @@
+export default {
+ include: [
+ { relation: 'worker' },
+ { relation: 'category' },
+ { relation: 'itemPackingType' },
+ { relation: 'temperature' },
+ ],
+};
diff --git a/src/pages/Item/ItemType/Card/ItemTypeSummary.vue b/src/pages/Item/ItemType/Card/ItemTypeSummary.vue
index 9ba774ca4..3b63c4b63 100644
--- a/src/pages/Item/ItemType/Card/ItemTypeSummary.vue
+++ b/src/pages/Item/ItemType/Card/ItemTypeSummary.vue
@@ -3,7 +3,7 @@ import { ref, computed, onUpdated } from 'vue';
import { useRoute } from 'vue-router';
import { useI18n } from 'vue-i18n';
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
-
+import filter from './ItemTypeFilter.js';
import CardSummary from 'components/ui/CardSummary.vue';
import VnLv from 'src/components/ui/VnLv.vue';
import VnToSummary from 'src/components/ui/VnToSummary.vue';
@@ -21,15 +21,6 @@ const $props = defineProps({
},
});
-const itemTypeFilter = {
- include: [
- { relation: 'worker' },
- { relation: 'category' },
- { relation: 'itemPackingType' },
- { relation: 'temperature' },
- ],
-};
-
const entityId = computed(() => $props.id || route.params.id);
const summaryRef = ref();
const itemType = ref();
@@ -43,8 +34,8 @@ async function setItemTypeData(data) {
setItemTypeData(data)"
class="full-width"
>
diff --git a/src/pages/Item/ItemTypeList.vue b/src/pages/Item/ItemTypeList.vue
index 93e98a8ae..d4030e1d8 100644
--- a/src/pages/Item/ItemTypeList.vue
+++ b/src/pages/Item/ItemTypeList.vue
@@ -5,6 +5,9 @@ import VnTable from 'components/VnTable/VnTable.vue';
import FetchData from 'components/FetchData.vue';
import WorkerDescriptorProxy from '../Worker/Card/WorkerDescriptorProxy.vue';
import VnSection from 'src/components/common/VnSection.vue';
+import VnInput from 'src/components/common/VnInput.vue';
+import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
+import VnSelect from 'src/components/common/VnSelect.vue';
const { t } = useI18n();
const tableRef = ref();
@@ -60,20 +63,17 @@ const columns = computed(() => [
label: t('code'),
isTitle: true,
cardVisible: true,
- create: true,
},
{
align: 'left',
name: 'name',
label: t('globals.name'),
cardVisible: true,
- create: true,
},
{
align: 'left',
label: t('worker'),
name: 'workerFk',
- create: true,
component: 'select',
attrs: {
url: 'Workers/search',
@@ -100,7 +100,6 @@ const columns = computed(() => [
align: 'left',
name: 'categoryFk',
label: t('ItemCategory'),
- create: true,
component: 'select',
attrs: {
options: itemCategoriesOptions.value,
@@ -112,7 +111,6 @@ const columns = computed(() => [
align: 'left',
name: 'Temperature',
label: t('Temperature'),
- create: true,
component: 'select',
attrs: {
options: temperatureOptions.value,
@@ -180,6 +178,29 @@ const columns = computed(() => [
+
+
+
+
+
+
+
diff --git a/src/pages/Item/locale/en.yml b/src/pages/Item/locale/en.yml
index 96bdd9b6d..bc73abb12 100644
--- a/src/pages/Item/locale/en.yml
+++ b/src/pages/Item/locale/en.yml
@@ -76,13 +76,6 @@ itemTags:
searchbar:
label: Search item
info: Search by item id
-itemType:
- shared:
- code: Code
- name: Name
- worker: Worker
- category: Category
- temperature: Temperature
item:
params:
daysOnward: Days onward
diff --git a/src/pages/Item/locale/es.yml b/src/pages/Item/locale/es.yml
index c65062a2b..dd5074f5f 100644
--- a/src/pages/Item/locale/es.yml
+++ b/src/pages/Item/locale/es.yml
@@ -80,6 +80,9 @@ itemType:
worker: Trabajador
category: Reino
temperature: Temperatura
+searchbar:
+ label: Buscar artículo
+ info: Buscar por id de artículo
params:
state: asfsdf
item:
@@ -216,6 +219,6 @@ item:
item: 'Artículo'
achieved: 'Conseguido'
concept: 'Concepto'
- state: 'Estado'
+ state: 'Estado'
search: 'Buscar artículo'
- searchInfo: 'Puedes buscar por id'
\ No newline at end of file
+ searchInfo: 'Puedes buscar por id'
diff --git a/src/pages/Monitor/Ticket/MonitorTickets.vue b/src/pages/Monitor/Ticket/MonitorTickets.vue
index e6b4631a0..3b5dccb56 100644
--- a/src/pages/Monitor/Ticket/MonitorTickets.vue
+++ b/src/pages/Monitor/Ticket/MonitorTickets.vue
@@ -293,7 +293,7 @@ const columns = computed(() => [
title: t('globals.preview'),
icon: 'preview',
color: 'primary',
- action: (row) => viewSummary(row.id, TicketSummary),
+ action: (row) => viewSummary(row.id, TicketSummary, 'lg-width'),
isPrimary: true,
attrs: {
flat: true,
diff --git a/src/pages/Monitor/locale/en.yml b/src/pages/Monitor/locale/en.yml
index 21324087c..496c8761a 100644
--- a/src/pages/Monitor/locale/en.yml
+++ b/src/pages/Monitor/locale/en.yml
@@ -38,6 +38,7 @@ salesTicketsTable:
payMethod: Pay method
department: Department
packing: ITP
+ hasItemLost: Item lost
searchBar:
label: Search tickets
info: Search tickets by id or alias
diff --git a/src/pages/Monitor/locale/es.yml b/src/pages/Monitor/locale/es.yml
index 30afb1904..f6a29879f 100644
--- a/src/pages/Monitor/locale/es.yml
+++ b/src/pages/Monitor/locale/es.yml
@@ -39,6 +39,7 @@ salesTicketsTable:
payMethod: Método de pago
department: Departamento
packing: ITP
+ hasItemLost: Artículo perdido
searchBar:
label: Buscar tickets
info: Buscar tickets por identificador o alias
diff --git a/src/pages/Order/Card/CatalogFilterValueDialog.vue b/src/pages/Order/Card/CatalogFilterValueDialog.vue
index b91e7d229..d1bd48c9e 100644
--- a/src/pages/Order/Card/CatalogFilterValueDialog.vue
+++ b/src/pages/Order/Card/CatalogFilterValueDialog.vue
@@ -110,7 +110,7 @@ const getSelectedTagValues = async (tag) => {
{
});
addressList.value = data;
if (addressList.value?.length === 1) {
- state.get(ORDER_MODEL).addressFk = addressList.value[0].id;
+ state.get('Order').addressFk = addressList.value[0].id;
}
};
@@ -91,9 +90,8 @@ const onClientChange = async (clientId) => {
import VnCardBeta from 'components/common/VnCardBeta.vue';
import OrderDescriptor from 'pages/Order/Card/OrderDescriptor.vue';
+import filter from './OrderFilter.js';
diff --git a/src/pages/Order/Card/OrderCatalog.vue b/src/pages/Order/Card/OrderCatalog.vue
index d7efdb726..4b3992f21 100644
--- a/src/pages/Order/Card/OrderCatalog.vue
+++ b/src/pages/Order/Card/OrderCatalog.vue
@@ -22,7 +22,6 @@ const catalogParams = {
};
const arrayData = useArrayData(dataKey, {
url: 'Orders/CatalogFilter',
- limit: 50,
userParams: catalogParams,
});
const store = arrayData.store;
@@ -66,7 +65,7 @@ function extractValueTags(items) {
.filter((k) => /^value\d+$/.test(k))
.map((v) => x[v])
.filter((v) => v)
- .sort()
+ .sort(),
);
tagValue.value = resultValueTags;
}
@@ -76,7 +75,7 @@ watch(
(val) => {
extractTags(val);
},
- { immediate: true }
+ { immediate: true },
);
diff --git a/src/pages/Order/Card/OrderCatalogFilter.vue b/src/pages/Order/Card/OrderCatalogFilter.vue
index 262f503fd..76e608983 100644
--- a/src/pages/Order/Card/OrderCatalogFilter.vue
+++ b/src/pages/Order/Card/OrderCatalogFilter.vue
@@ -184,7 +184,7 @@ function addOrder(value, field, params) {
{{
t(
categoryList.find((c) => c.id == customTag.value)?.name ||
- ''
+ '',
)
}}
@@ -296,7 +296,7 @@ function addOrder(value, field, params) {
state.get('orderData'));
+const orderData = computed(() => state.get('Order'));
const prices = ref((props.item.prices || []).map((item) => ({ ...item, quantity: 0 })));
const isLoading = ref(false);
@@ -44,7 +44,7 @@ const addToOrder = async () => {
state.set('orderTotal', orderTotal);
const rows = orderData.value.rows.push(...items) || [];
- state.set('orderData', {
+ state.set('Order', {
...orderData.value,
rows,
});
diff --git a/src/pages/Order/Card/OrderDescriptor.vue b/src/pages/Order/Card/OrderDescriptor.vue
index 0d5f0146f..1752efe7b 100644
--- a/src/pages/Order/Card/OrderDescriptor.vue
+++ b/src/pages/Order/Card/OrderDescriptor.vue
@@ -4,8 +4,7 @@ import { useRoute } from 'vue-router';
import { useI18n } from 'vue-i18n';
import { toCurrency, toDate } from 'src/filters';
import { useState } from 'src/composables/useState';
-import useCardDescription from 'src/composables/useCardDescription';
-
+import filter from './OrderFilter.js';
import CardDescriptor from 'components/ui/CardDescriptor.vue';
import VnLv from 'src/components/ui/VnLv.vue';
import FetchData from 'components/FetchData.vue';
@@ -24,44 +23,15 @@ const $props = defineProps({
const route = useRoute();
const state = useState();
const { t } = useI18n();
-const data = ref(useCardDescription());
const getTotalRef = ref();
const entityId = computed(() => {
return $props.id || route.params.id;
});
-const filter = {
- include: [
- { relation: 'agencyMode', scope: { fields: ['name'] } },
- {
- relation: 'address',
- scope: { fields: ['nickname'] },
- },
- { relation: 'rows', scope: { fields: ['id'] } },
- {
- relation: 'client',
- scope: {
- fields: [
- 'salesPersonFk',
- 'name',
- 'isActive',
- 'isFreezed',
- 'isTaxDataChecked',
- ],
- include: {
- relation: 'salesPersonUser',
- scope: { fields: ['id', 'name'] },
- },
- },
- },
- ],
-};
-
const setData = (entity) => {
if (!entity) return;
getTotalRef.value && getTotalRef.value.fetch();
- data.value = useCardDescription(entity?.client?.name, entity?.id);
state.set('orderTotal', total);
};
@@ -88,10 +58,9 @@ const total = ref(0);
:url="`Orders/${entityId}`"
:filter="filter"
module="Order"
- :title="data.title"
- :subtitle="data.subtitle"
+ title="client.name"
@on-fetch="setData"
- data-key="orderData"
+ data-key="Order"
>
$props.id || route.params.id);
const summary = ref();
const quasar = useQuasar();
-const descriptorData = useArrayData('orderData');
+const descriptorData = useArrayData('Order');
const detailsColumns = ref([
{
name: 'item',
diff --git a/src/pages/Order/OrderList.vue b/src/pages/Order/OrderList.vue
index 6e4f0aac8..21cb5ed7e 100644
--- a/src/pages/Order/OrderList.vue
+++ b/src/pages/Order/OrderList.vue
@@ -81,7 +81,7 @@ const columns = computed(() => [
label: t('module.created'),
component: 'date',
cardVisible: true,
- format: (row) => toDateTimeFormat(row?.landed),
+ format: (row) => toDateTimeFormat(row?.created),
columnField: {
component: null,
},
diff --git a/src/pages/Parking/Card/ParkingBasicData.vue b/src/pages/Parking/Card/ParkingBasicData.vue
index 8e3433a5b..fcc9dbd24 100644
--- a/src/pages/Parking/Card/ParkingBasicData.vue
+++ b/src/pages/Parking/Card/ParkingBasicData.vue
@@ -1,23 +1,13 @@
(sectors = data)"
auto-load
/>
-
+
-
-
+
+
-
-
+
+
import VnCardBeta from 'components/common/VnCardBeta.vue';
import ParkingDescriptor from 'pages/Parking/Card/ParkingDescriptor.vue';
+import filter from './ParkingFilter.js';
diff --git a/src/pages/Parking/Card/ParkingDescriptor.vue b/src/pages/Parking/Card/ParkingDescriptor.vue
index d36ea16fc..0b7642c1c 100644
--- a/src/pages/Parking/Card/ParkingDescriptor.vue
+++ b/src/pages/Parking/Card/ParkingDescriptor.vue
@@ -1,10 +1,9 @@
-
-
-
+
+
+
diff --git a/src/pages/Parking/Card/ParkingFilter.js b/src/pages/Parking/Card/ParkingFilter.js
new file mode 100644
index 000000000..fd1855c45
--- /dev/null
+++ b/src/pages/Parking/Card/ParkingFilter.js
@@ -0,0 +1,4 @@
+export default {
+ fields: ['id', 'sectorFk', 'code', 'pickingOrder', 'row', 'column'],
+ include: [{ relation: 'sector', scope: { fields: ['id', 'description'] } }],
+};
diff --git a/src/pages/Parking/ParkingExprBuilder.js b/src/pages/Parking/ParkingExprBuilder.js
new file mode 100644
index 000000000..16d2262c8
--- /dev/null
+++ b/src/pages/Parking/ParkingExprBuilder.js
@@ -0,0 +1,10 @@
+export default (param, value) => {
+ switch (param) {
+ case 'code':
+ return { [param]: { like: `%${value}%` } };
+ case 'sectorFk':
+ return { [param]: value };
+ case 'search':
+ return { or: [{ code: { like: `%${value}%` } }, { id: value }] };
+ }
+};
diff --git a/src/pages/Parking/ParkingList.vue b/src/pages/Parking/ParkingList.vue
index bce87126e..fe6c93ba5 100644
--- a/src/pages/Parking/ParkingList.vue
+++ b/src/pages/Parking/ParkingList.vue
@@ -9,6 +9,7 @@ import CardList from 'components/ui/CardList.vue';
import VnLv from 'components/ui/VnLv.vue';
import ParkingFilter from './ParkingFilter.vue';
import ParkingSummary from './Card/ParkingSummary.vue';
+import exprBuilder from './ParkingExprBuilder.js';
import VnSection from 'src/components/common/VnSection.vue';
const stateStore = useStateStore();
@@ -23,19 +24,7 @@ onUnmounted(() => (stateStore.rightDrawer = false));
const filter = {
fields: ['id', 'sectorFk', 'code', 'pickingOrder'],
};
-
-function exprBuilder(param, value) {
- switch (param) {
- case 'code':
- return { [param]: { like: `%${value}%` } };
- case 'sectorFk':
- return { [param]: value };
- case 'search':
- return { or: [{ code: { like: `%${value}%` } }, { id: value }] };
- }
-}
-
[
]);
-
-
+
+