diff --git a/src/pages/Ticket/Card/TicketFilter.js b/src/pages/Ticket/Card/TicketFilter.js
index daa204a7a..1b59c9d9c 100644
--- a/src/pages/Ticket/Card/TicketFilter.js
+++ b/src/pages/Ticket/Card/TicketFilter.js
@@ -68,5 +68,6 @@ export default {
],
},
},
+ { relation: 'currency' },
],
};
diff --git a/src/pages/Ticket/Card/TicketPicture.vue b/src/pages/Ticket/Card/TicketPicture.vue
index d6cc19bd1..438a63db6 100644
--- a/src/pages/Ticket/Card/TicketPicture.vue
+++ b/src/pages/Ticket/Card/TicketPicture.vue
@@ -5,11 +5,13 @@ import { useI18n } from 'vue-i18n';
import FetchData from 'components/FetchData.vue';
import CatalogItem from 'components/ui/CatalogItem.vue';
-
-import { toCurrency } from 'filters/index';
+import VnCurrency from 'src/components/ui/VnCurrency.vue';
+import { useArrayData } from 'composables/useArrayData';
const { t } = useI18n();
const route = useRoute();
+const arrayData = useArrayData('ticketData');
+const { store } = arrayData;
const salesFilter = {
include: {
@@ -37,7 +39,12 @@ const sales = ref([]);
{{ sale.quantity }}
{{ t('by') }}
- {{ toCurrency(sale?.price) }}
+
+
+
diff --git a/src/pages/Ticket/Card/TicketRightTotals.vue b/src/pages/Ticket/Card/TicketRightTotals.vue
new file mode 100644
index 000000000..c98104d61
--- /dev/null
+++ b/src/pages/Ticket/Card/TicketRightTotals.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ {{ $t('ticketSale.subtotal') }}:
+
+
+
+
+
+ {{ $t('ticketSale.tax') }}:
+
+
+
+
+
+ {{ $t('basicData.total') }}:
+
+
+
+
+
+
+
diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue
index a613f905a..31631ed7c 100644
--- a/src/pages/Ticket/Card/TicketSale.vue
+++ b/src/pages/Ticket/Card/TicketSale.vue
@@ -3,6 +3,7 @@ import { onMounted, ref, computed, watch, inject } from 'vue';
import { useI18n } from 'vue-i18n';
import { useRouter, useRoute } from 'vue-router';
import { useQuasar } from 'quasar';
+import { useState } from 'src/composables/useState';
import FetchData from 'components/FetchData.vue';
import FetchedTags from 'components/ui/FetchedTags.vue';
@@ -23,12 +24,16 @@ import useNotify from 'src/composables/useNotify.js';
import axios from 'axios';
import VnTable from 'src/components/VnTable/VnTable.vue';
import VnConfirm from 'src/components/ui/VnConfirm.vue';
+import VnCurrency from 'src/components/ui/VnCurrency.vue';
+import TicketRightTotals from './TicketRightTotals.vue';
import TicketProblems from 'src/components/TicketProblems.vue';
-import RightMenu from 'src/components/common/RightMenu.vue';
const app = inject('app');
const route = useRoute();
const router = useRouter();
const { t } = useI18n();
+const state = useState();
+const user = state.getUser();
+
const { notify } = useNotify();
const { openConfirmationModal } = useVnConfirm();
const editPriceProxyRef = ref(null);
@@ -130,7 +135,7 @@ const columns = computed(() => [
{
align: 'left',
label: t('globals.amount'),
- name: 'amount',
+ name: 'total',
},
{
align: 'left',
@@ -160,11 +165,6 @@ const getConfig = async () => {
ticketConfig.value = data;
};
-const onSalesFetched = (salesData) => {
- sales.value = salesData;
- for (let sale of salesData) sale.amount = getSaleTotal(sale);
-};
-
const getSaleTotal = (sale) => {
if (sale.quantity == null || sale.price == null) return null;
@@ -284,7 +284,9 @@ const selectedValidSales = computed(() => {
const onOpenEditPricePopover = async (sale) => {
edit.value = {
sale: JSON.parse(JSON.stringify(sale)),
- price: sale.price,
+ price: user.value.foreignCurrency
+ ? (sale.foreignPrice ?? sale.price)
+ : sale.price,
};
};
@@ -312,7 +314,10 @@ const changePrice = async (sale) => {
};
const updatePrice = async (sale, newPrice) => {
try {
- await axios.post(`Sales/${sale.id}/updatePrice`, { newPrice });
+ await axios.post(`Sales/${sale.id}/updatePrice`, {
+ newPrice,
+ isForeign: user.value.foreignCurrency,
+ });
sale.price = newPrice;
edit.value = { ...DEFAULT_EDIT };
notify('globals.dataSaved', 'positive');
@@ -362,7 +367,10 @@ const getNewPrice = computed(() => {
if (edit.value?.sale) {
const sale = edit.value.sale;
let newDiscount = sale.discount;
- let newPrice = edit.value.price || sale.price;
+ let newPrice = user.value.foreignCurrency
+ ? (sale.foreignPrice ?? sale.price)
+ : sale.price;
+ // let newPrice = edit.value.price || sale.price;
if (edit.value.discount != null) newDiscount = edit.value.discount;
@@ -476,7 +484,7 @@ const updateItem = async (row) => {
row.price = selectedItem.price;
row.discount = 0;
row.quantity = 0;
- row.amount = row.price * row.quantity;
+ row.total = 0;
}
endNewRow(selectedItem);
};
@@ -497,7 +505,7 @@ const addRow = (original = null) => {
quantity: original.quantity,
price: original.price,
discount: original.discount,
- amount: original.amount,
+ total: original.total,
isNew: true,
};
}
@@ -659,38 +667,7 @@ watch(
-
-
-
-
- {{ t('ticketSale.subtotal') }}:
-
- {{ toCurrency(store.data?.totalWithoutVat) }}
-
-
-
- {{ t('ticketSale.tax') }}:
-
- {{
- toCurrency(store.data?.totalWithVat - store.data?.totalWithoutVat)
- }}
-
-
-
- {{ t('basicData.total') }}:
-
- {{ toCurrency(store.data?.totalWithVat) }}
-
-
-
-
+
(sales = data)"
:create="{
onDataSaved: handleOnDataSave,
}"
@@ -814,7 +791,10 @@ watch(
- {{ toCurrency(row.price) }}
+
- {{ toCurrency(row.price) }}
+
+
+
@@ -850,14 +832,17 @@ watch(
@keyup.enter.stop="() => editManaProxyRef.save(row)"
v-model.number="edit.discount"
:label="t('ticketSale.discount')"
- type="number"
/>
{{ toPercentage(row.discount / 100) }}
-
- {{ toCurrency(getSaleTotal(row)) }}
+
+
diff --git a/src/pages/Ticket/Card/TicketService.vue b/src/pages/Ticket/Card/TicketService.vue
index a44dce5c4..789432c25 100644
--- a/src/pages/Ticket/Card/TicketService.vue
+++ b/src/pages/Ticket/Card/TicketService.vue
@@ -12,10 +12,14 @@ import VnInput from 'src/components/common/VnInput.vue';
import { useArrayData } from 'src/composables/useArrayData';
import useNotify from 'src/composables/useNotify.js';
import axios from 'axios';
+import TicketRightTotals from './TicketRightTotals.vue';
+import { useState } from 'src/composables/useState';
const route = useRoute();
const router = useRouter();
const { t } = useI18n();
+const state = useState();
+const user = state.getUser();
const ticketServiceTypeFetchRef = ref(null);
const ticketServiceCrudRef = ref(null);
const ticketServiceOptions = ref([]);
@@ -174,6 +178,7 @@ function beforeSave(data) {
auto-load
url="TicketServiceTypes"
/>
+
{
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -371,16 +391,28 @@ onMounted(async () => {
:item="props.row.item"
>
- {{ props.row.price }} €
+
+
+
{{ props.row.discount }} %
- {{
- toCurrency(
- props.row.quantity *
+
+
{{ dashIfEmpty(props.row.item.itemPackingTypeFk) }}
@@ -425,7 +457,12 @@ onMounted(async () => {
{{ props.row.quantity }}
{{ props.row.description }}
- {{ toCurrency(props.row.price) }}
+
+
+
{{ props.row.taxClass.description }}
{{
toCurrency(props.row.quantity * props.row.price)
diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue
index 039d3ca9e..17d55e16e 100644
--- a/src/pages/Ticket/TicketList.vue
+++ b/src/pages/Ticket/TicketList.vue
@@ -23,6 +23,9 @@ import { toTimeFormat } from 'src/filters/date';
import InvoiceOutDescriptorProxy from 'src/pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue';
import TicketProblems from 'src/components/TicketProblems.vue';
import VnSection from 'src/components/common/VnSection.vue';
+import VnSelectCompany from 'src/components/common/VnSelectCompany.vue';
+import VnSelectCurrency from 'src/components/common/VnSelectCurrency.vue';
+import VnCurrency from 'src/components/ui/VnCurrency.vue';
import { getAddresses } from 'src/pages/Customer/composables/getAddresses';
import { getAgencies } from 'src/pages/Route/Agency/composables/getAgencies';
@@ -219,7 +222,6 @@ const columns = computed(() => [
component: 'number',
inWhere: true,
},
- format: (row) => toCurrency(row.totalWithVat),
},
{
align: 'left',
@@ -563,7 +565,11 @@ function setReference(data) {
dense
square
>
- {{ row.totalWithVat }}
+
@@ -652,41 +658,43 @@ function setReference(data) {
-
- fetchAvailableAgencies(data)"
- />
-
+ fetchAvailableAgencies(data)"
+ />
-
- fetchAvailableAgencies(data)"
- />
-
+ fetchAvailableAgencies(data)"
+ />
-
-
-
+
+
+
diff --git a/src/router/modules/ticket.js b/src/router/modules/ticket.js
index bfcb78787..b9c96a6e6 100644
--- a/src/router/modules/ticket.js
+++ b/src/router/modules/ticket.js
@@ -9,6 +9,7 @@ const ticketCard = {
menu: [
'TicketBasicData',
'TicketSale',
+ 'TicketService',
'TicketLog',
'TicketExpedition',
'TicketDms',
@@ -19,7 +20,6 @@ const ticketCard = {
'TicketVolume',
'TicketComponents',
'TicketPackage',
- 'TicketService',
'TicketSaleTracking',
'TicketBoxing',
'TicketSms',