From 2ca7c44caede88852d8fd5ff5aed3e4ea4d6661d Mon Sep 17 00:00:00 2001 From: alexm Date: Fri, 21 Jun 2024 14:30:39 +0200 Subject: [PATCH 01/39] feat(AccountConnections): use VnToken --- src/pages/Account/AccountConnections.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/Account/AccountConnections.vue b/src/pages/Account/AccountConnections.vue index 98208e5f2d..4d16d1ecd2 100644 --- a/src/pages/Account/AccountConnections.vue +++ b/src/pages/Account/AccountConnections.vue @@ -29,15 +29,15 @@ const filter = { order: 'created DESC', }; -const urlPath = 'AccessTokens'; +const urlPath = 'VnTokens'; const refresh = () => paginateRef.value.fetch(); const navigate = (id) => router.push({ name: 'AccountSummary', params: { id } }); -const killSession = async (id) => { +const killSession = async ({ userId, created }) => { try { - await axios.delete(`${urlPath}/${id}`); + await axios.post(`${urlPath}/killSession`, { userId, created }); paginateRef.value.fetch(); notify(t('Session killed'), 'positive'); } catch (error) { @@ -86,7 +86,7 @@ const killSession = async (id) => { openConfirmationModal( t('Session will be killed'), t('Are you sure you want to continue?'), - () => killSession(row.id) + () => killSession(row) ) " outline From 8619abdfb425dd901818a50c7ec8fe5f34d66e7b Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 28 Aug 2024 14:03:37 +0200 Subject: [PATCH 02/39] feat: change navBar buttons --- src/components/NavBar.vue | 8 ++++- src/components/common/RightMenu.vue | 2 +- src/pages/Customer/Card/CustomerBasicData.vue | 36 ++++++++++++++----- src/pages/Zone/Card/ZoneEvents.vue | 2 +- 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index e80a293c62..00faaebc2f 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -24,7 +24,13 @@ const pinnedModulesRef = ref(); diff --git a/src/pages/Zone/Card/ZoneEvents.vue b/src/pages/Zone/Card/ZoneEvents.vue index e4fe5ff226..45c976cb2d 100644 --- a/src/pages/Zone/Card/ZoneEvents.vue +++ b/src/pages/Zone/Card/ZoneEvents.vue @@ -52,7 +52,7 @@ onUnmounted(() => (stateStore.rightDrawer = false)); @click="stateStore.toggleRightDrawer()" round dense - icon="menu" + icon="dock_to_left" > {{ t('globals.collapseMenu') }} From 72388af4184dc3b96edcff5899169287e28d4507 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 28 Aug 2024 14:04:48 +0200 Subject: [PATCH 03/39] feat: keyShortcut directive --- src/boot/keyShortcut.js | 32 ++++++++++++++++++++++++++++++++ src/boot/quasar.js | 2 ++ 2 files changed, 34 insertions(+) create mode 100644 src/boot/keyShortcut.js diff --git a/src/boot/keyShortcut.js b/src/boot/keyShortcut.js new file mode 100644 index 0000000000..2d84dcc6dc --- /dev/null +++ b/src/boot/keyShortcut.js @@ -0,0 +1,32 @@ +export default { + mounted: function (el, binding) { + const shortcut = binding.value ?? '+'; + + const { key, ctrl, alt, callback } = + typeof shortcut === 'string' + ? { + key: shortcut, + ctrl: true, + alt: true, + callback: () => + document.querySelector('button[shortcut="+"]')?.click(), + } + : binding.value; + + const handleKeydown = (event) => { + if (event.key === key && (!ctrl || event.ctrlKey) && (!alt || event.altKey)) { + callback(); + } + }; + + // Attach the event listener to the window + window.addEventListener('keydown', handleKeydown); + + el._handleKeydown = handleKeydown; + }, + unmounted: function (el) { + if (el._handleKeydown) { + window.removeEventListener('keydown', el._handleKeydown); + } + }, +}; diff --git a/src/boot/quasar.js b/src/boot/quasar.js index a8d9b7ad9a..00dd2cd5ed 100644 --- a/src/boot/quasar.js +++ b/src/boot/quasar.js @@ -1,6 +1,8 @@ import { boot } from 'quasar/wrappers'; import qFormMixin from './qformMixin'; +import keyShortcut from './keyShortcut'; export default boot(({ app }) => { app.mixin(qFormMixin); + app.directive('shortcut', keyShortcut); }); From 57c9035751936f7016494169726494e75ad349f3 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 28 Aug 2024 14:06:14 +0200 Subject: [PATCH 04/39] feat: add plus shortcut in VnTable --- src/components/VnTable/VnTable.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index 6c77d44dfc..efa8df61ca 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -281,6 +281,7 @@ defineExpose({ From 4880da8febbd9c9772ba70fb6ecbd4d3f0349858 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 29 Aug 2024 10:20:05 +0200 Subject: [PATCH 06/39] perf: add v-shortcut in VnCard --- src/components/common/VnCard.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/common/VnCard.vue b/src/components/common/VnCard.vue index a7fe651ad4..921b41a4c2 100644 --- a/src/components/common/VnCard.vue +++ b/src/components/common/VnCard.vue @@ -50,6 +50,7 @@ if (props.baseUrl) { diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue index bd7297b56b..2ea12bb05a 100644 --- a/src/pages/Ticket/Card/TicketSale.vue +++ b/src/pages/Ticket/Card/TicketSale.vue @@ -656,7 +656,7 @@ onUnmounted(() => (stateStore.rightDrawer = false));
{{ row.concept }} {{ row.item?.subName }} - + diff --git a/src/pages/Ticket/Card/TicketSaleTracking.vue b/src/pages/Ticket/Card/TicketSaleTracking.vue index e699d2bfdf..6978d92c84 100644 --- a/src/pages/Ticket/Card/TicketSaleTracking.vue +++ b/src/pages/Ticket/Card/TicketSaleTracking.vue @@ -412,7 +412,7 @@ const qCheckBoxController = (sale, action) => { {{ row.subName }} - +
diff --git a/src/pages/Ticket/Card/TicketSummary.vue b/src/pages/Ticket/Card/TicketSummary.vue index 1773846636..bc160846af 100644 --- a/src/pages/Ticket/Card/TicketSummary.vue +++ b/src/pages/Ticket/Card/TicketSummary.vue @@ -399,7 +399,6 @@ async function changeState(value) { {{ props.row.price }} € diff --git a/src/pages/Ticket/Card/TicketVolume.vue b/src/pages/Ticket/Card/TicketVolume.vue index 93da31e53a..68d2a1f734 100644 --- a/src/pages/Ticket/Card/TicketVolume.vue +++ b/src/pages/Ticket/Card/TicketVolume.vue @@ -145,7 +145,7 @@ onUnmounted(() => (stateStore.rightDrawer = false));
{{ row.item.name }} {{ row.item.subName }} - +
From 1f9d1b79ab0acadbba0922f186b8fe5624ecae52 Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 4 Sep 2024 10:17:57 +0200 Subject: [PATCH 19/39] refs #7283 refactor ItexDescriptor --- src/pages/Item/Card/ItemDescriptor.vue | 2 ++ src/pages/Item/Card/ItemDescriptorImage.vue | 6 +++++- src/pages/Item/Card/ItemDescriptorProxy.vue | 5 +++++ src/pages/Ticket/Card/TicketSummary.vue | 6 +++++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/pages/Item/Card/ItemDescriptor.vue b/src/pages/Item/Card/ItemDescriptor.vue index 8381f06243..e649b8c452 100644 --- a/src/pages/Item/Card/ItemDescriptor.vue +++ b/src/pages/Item/Card/ItemDescriptor.vue @@ -52,6 +52,7 @@ const available = ref(null); const visible = ref(null); const _warehouseFk = ref(null); const salixUrl = ref(); +console.log('warehouseItemDescriptor', _warehouseFk.value); const warehouseFk = computed({ get() { return _warehouseFk.value; @@ -82,6 +83,7 @@ const updateStock = async () => { warehouseFk: warehouseFk.value, dated: $props.dated, }; + console.log('params', params); const { data } = await axios.get(`Items/${entityId.value}/getVisibleAvailable`, { params, diff --git a/src/pages/Item/Card/ItemDescriptorImage.vue b/src/pages/Item/Card/ItemDescriptorImage.vue index d83f534b87..71977fb24f 100644 --- a/src/pages/Item/Card/ItemDescriptorImage.vue +++ b/src/pages/Item/Card/ItemDescriptorImage.vue @@ -48,7 +48,11 @@ const getWarehouseName = async (warehouseFk) => { where: { id: warehouseFk }, }; - const { data } = await axios.get('Warehouses/findOne', { filter }); + const { data } = await axios.get('Warehouses/findOne', { + params: { + filter: JSON.stringify(filter), + }, + }); if (!data) return; warehouseName.value = data.name; }; diff --git a/src/pages/Item/Card/ItemDescriptorProxy.vue b/src/pages/Item/Card/ItemDescriptorProxy.vue index 2b7b39a654..2ffc9080f1 100644 --- a/src/pages/Item/Card/ItemDescriptorProxy.vue +++ b/src/pages/Item/Card/ItemDescriptorProxy.vue @@ -15,6 +15,10 @@ const $props = defineProps({ type: Number, default: null, }, + warehouseFk: { + type: Number, + default: null, + }, }); @@ -26,6 +30,7 @@ const $props = defineProps({ :summary="ItemSummary" :dated="dated" :sale-fk="saleFk" + :warehouse-fk="warehouseFk" /> diff --git a/src/pages/Ticket/Card/TicketSummary.vue b/src/pages/Ticket/Card/TicketSummary.vue index 1773846636..2d02ad5ed8 100644 --- a/src/pages/Ticket/Card/TicketSummary.vue +++ b/src/pages/Ticket/Card/TicketSummary.vue @@ -383,7 +383,11 @@ async function changeState(value) { {{ props.row.itemFk }} - + {{ props.row.visible }} From 4602f4c7b3c4f98c90fdf900978e5551609c7512 Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 4 Sep 2024 12:25:05 +0200 Subject: [PATCH 20/39] refactor: deleted useless prop --- src/components/ui/FetchedTags.vue | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/components/ui/FetchedTags.vue b/src/components/ui/FetchedTags.vue index beaa85bfe6..a0edf85f83 100644 --- a/src/components/ui/FetchedTags.vue +++ b/src/components/ui/FetchedTags.vue @@ -2,10 +2,6 @@ import { computed } from 'vue'; const $props = defineProps({ - maxLength: { - type: Number, - required: true, - }, item: { type: Object, required: true, From 91164da2ebdf3db9a48f7170c305e7e6114e6882 Mon Sep 17 00:00:00 2001 From: jgallego Date: Wed, 4 Sep 2024 18:16:40 +0200 Subject: [PATCH 21/39] feat: refuncInvoiceForm component --- src/components/RefundInvoiceForm.vue | 173 ++++++++++++++++++ src/components/TransferInvoiceForm.vue | 12 +- .../Card/InvoiceOutDescriptorMenu.vue | 33 ++-- 3 files changed, 194 insertions(+), 24 deletions(-) create mode 100644 src/components/RefundInvoiceForm.vue diff --git a/src/components/RefundInvoiceForm.vue b/src/components/RefundInvoiceForm.vue new file mode 100644 index 0000000000..1b545103ad --- /dev/null +++ b/src/components/RefundInvoiceForm.vue @@ -0,0 +1,173 @@ + + + + + +en: + Refund invoice: Refund invoice + Rectificative type: Rectificative type + Class: Class + Type: Type + Refunded invoice: Refunded invoice + Inherit warehouse: Inherit the warehouse + Inherit warehouse tooltip: Select this option to inherit the warehouse when refunding the invoice + Accept: Accept + Error refunding invoice: Error refunding invoice +es: + Refund invoice: Abonar factura + Rectificative type: Tipo rectificativa + Class: Clase + Type: Tipo + Refunded invoice: Factura abonada + Inherit warehouse: Heredar el almacén + Inherit warehouse tooltip: Seleccione esta opción para heredar el almacén al abonar la factura. + Accept: Aceptar + Error refunding invoice: Error abonando factura + diff --git a/src/components/TransferInvoiceForm.vue b/src/components/TransferInvoiceForm.vue index 23c988ee74..f7050cdba6 100644 --- a/src/components/TransferInvoiceForm.vue +++ b/src/components/TransferInvoiceForm.vue @@ -2,13 +2,12 @@ import { ref, reactive } from 'vue'; import { useI18n } from 'vue-i18n'; import { useRouter } from 'vue-router'; -import { useQuasar } from 'quasar'; +import { useQuasar, useDialogPluginComponent } from 'quasar'; import VnConfirm from 'components/ui/VnConfirm.vue'; import VnRow from 'components/ui/VnRow.vue'; import FetchData from 'components/FetchData.vue'; import VnSelect from 'components/common/VnSelect.vue'; import FormPopup from './FormPopup.vue'; -import { useDialogPluginComponent } from 'quasar'; import axios from 'axios'; import useNotify from 'src/composables/useNotify.js'; @@ -18,18 +17,19 @@ const $props = defineProps({ default: () => {}, }, }); + const { dialogRef } = useDialogPluginComponent(); const quasar = useQuasar(); const { t } = useI18n(); const router = useRouter(); const { notify } = useNotify(); + +const rectificativeTypeOptions = ref([]); +const siiTypeInvoiceOutsOptions = ref([]); const checked = ref(true); const transferInvoiceParams = reactive({ id: $props.invoiceOutData?.id, }); - -const rectificativeTypeOptions = ref([]); -const siiTypeInvoiceOutsOptions = ref([]); const invoiceCorrectionTypesOptions = ref([]); const selectedClient = (client) => { @@ -43,9 +43,9 @@ const makeInvoice = async () => { const params = { id: transferInvoiceParams.id, cplusRectificationTypeFk: transferInvoiceParams.cplusRectificationTypeFk, + siiTypeInvoiceOutFk: transferInvoiceParams.siiTypeInvoiceOutFk, invoiceCorrectionTypeFk: transferInvoiceParams.invoiceCorrectionTypeFk, newClientFk: transferInvoiceParams.newClientFk, - siiTypeInvoiceOutFk: transferInvoiceParams.siiTypeInvoiceOutFk, makeInvoice: checked.value, }; diff --git a/src/pages/InvoiceOut/Card/InvoiceOutDescriptorMenu.vue b/src/pages/InvoiceOut/Card/InvoiceOutDescriptorMenu.vue index 0ded546888..6a3bb5a780 100644 --- a/src/pages/InvoiceOut/Card/InvoiceOutDescriptorMenu.vue +++ b/src/pages/InvoiceOut/Card/InvoiceOutDescriptorMenu.vue @@ -5,6 +5,7 @@ import { useRouter } from 'vue-router'; import { useQuasar } from 'quasar'; import TransferInvoiceForm from 'src/components/TransferInvoiceForm.vue'; +import RefundInvoiceForm from 'src/components/RefundInvoiceForm.vue'; import SendEmailDialog from 'components/common/SendEmailDialog.vue'; import useNotify from 'src/composables/useNotify'; @@ -37,7 +38,6 @@ const { openConfirmationModal } = useVnConfirm(); const quasar = useQuasar(); const salixUrl = ref(); const invoiceFormType = ref('pdf'); -const defaultEmailAddress = ref($props.invoiceOutData.client?.email); const showInvoicePdf = () => { const url = `api/InvoiceOuts/${$props.invoiceOutData.id}/download?access_token=${token}`; @@ -54,12 +54,6 @@ const showSendInvoiceDialog = (type) => { invoiceFormType.value = type; quasar.dialog({ component: SendEmailDialog, - componentProps: { - data: { - address: defaultEmailAddress.value, - }, - promise: sendEmailInvoice, - }, }); }; @@ -141,6 +135,15 @@ const showTransferInvoiceForm = async () => { }, }); }; + +const showRefundInvoiceForm = () => { + quasar.dialog({ + component: RefundInvoiceForm, + componentProps: { + invoiceOutData: $props.invoiceOutData, + }, + }); +}; - +
- + {{ t('shelving.list.newShelving') }} diff --git a/src/pages/Supplier/Card/SupplierAddresses.vue b/src/pages/Supplier/Card/SupplierAddresses.vue index 735b506252..818cc2efa2 100644 --- a/src/pages/Supplier/Card/SupplierAddresses.vue +++ b/src/pages/Supplier/Card/SupplierAddresses.vue @@ -46,7 +46,7 @@ const redirectToUpdateView = (addressData) => {