0
1
Fork 0

Merge branch 'beta' into feature/catalog-view

This commit is contained in:
Javier Segarra 2025-04-17 15:48:00 +00:00
commit 79d30373f8
4 changed files with 58 additions and 38 deletions

View File

@ -14,7 +14,6 @@ import { storeToRefs } from 'pinia';
import { useUserStore } from 'stores/user';
const router = useRouter();
const jApi = inject('jApi');
const api = inject('api');
const { notify } = useNotify();
const { t } = useI18n();
@ -26,32 +25,30 @@ const fetchAddressesRef = ref(null);
const addresses = ref([]);
const defaultAddress = ref(null);
const clientId = ref(null);
const goToAddressDetails = (id = 0) =>
router.push({ name: 'addressDetails', params: { id } });
const getDefaultAddress = async () => {
try {
const [address] = await jApi.query(
'SELECT id, defaultAddressFk FROM myClient c'
);
defaultAddress.value = address.defaultAddressFk;
clientId.value = address.id;
const filter = { fields: ['defaultAddressFk'] };
const { data } = await api.get(`Clients/${userStore?.userId}`, {
params: { filter: JSON.stringify(filter) }
});
defaultAddress.value = data.defaultAddressFk;
} catch (error) {
console.error('Error getting default address:', error);
}
};
const changeDefaultAddress = async () => {
if (!clientId.value) return;
await jApi.execQuery(
`UPDATE myClient
SET defaultAddressFk = #defaultAddress
WHERE id = #id;`,
const changeDefaultAddress = async address => {
if (!userStore?.userId) return;
await api.patch(
`/Clients/${userStore?.user?.id}/updateAddress/${address.id}`,
{
defaultAddress: defaultAddress.value,
id: clientId.value
...address,
defaultAddressFk: defaultAddress.value
}
);
notify(t('defaultAddressModified'), 'positive');
@ -129,7 +126,7 @@ onMounted(async () => {
v-model="defaultAddress"
:val="address.id"
class="q-mr-sm"
@update:model-value="changeDefaultAddress"
@update:model-value="changeDefaultAddress(address)"
/>
</template>
<template #content>

View File

@ -13,6 +13,7 @@ import useNotify from 'src/composables/useNotify.js';
import { currency, formatDateTitle } from 'src/lib/filters.js';
import { tpvStore } from 'stores/tpv';
import { useAppStore } from 'stores/app';
import { useUserStore } from 'stores/user';
import { storeToRefs } from 'pinia';
const { t } = useI18n();
@ -26,6 +27,7 @@ const showAmountToPayDialog = ref(null);
const amountToPay = ref(null);
const orders = ref(null);
const debt = ref(0);
const userStore = useUserStore();
const tpv = tpvStore();
onMounted(async () => {
@ -57,9 +59,14 @@ const onConfirmPay = async () => {
return;
}
if (!userStore.companyId) {
notify(t('companyConfigError'), 'negative');
return;
}
const amount = amountToPay.value.toString().replace('.', ',');
amountToPay.value = parseFloat(amount);
await tpv.pay(amountToPay.value);
await tpv.pay(amountToPay.value, userStore.companyId);
};
</script>

View File

@ -1,22 +1,22 @@
import { defineStore } from 'pinia';
import { jApi } from 'boot/axios';
import { api } from 'boot/axios';
export const tpvStore = defineStore('tpv', {
actions: {
async check(route) {
const order = route.query.tpvOrder;
const orderId = route.query.tpvOrder;
const status = route.query.tpvStatus;
if (!(order && status)) return null;
if (!(orderId && status)) return null;
await jApi.execQuery('CALL myTpvTransaction_end(#order, #status)', {
order,
await api.post('tpvTransactions/end', {
orderId,
status
});
if (status === 'ko') {
const retry = confirm('retryPayQuestion');
if (retry) {
this.retryPay(order);
this.retryPay(orderId);
}
}
@ -27,27 +27,33 @@ export const tpvStore = defineStore('tpv', {
await this.realPay(amount * 100, company);
},
async retryPay(order) {
const payment = await jApi.getObject(
`SELECT t.amount, m.companyFk
FROM myTpvTransaction t
JOIN tpvMerchant m ON m.id = t.merchantFk
WHERE t.id = #order`,
{ order }
async retryPay(orderId) {
const { data: transactions } = await api.get(
'clients/transactions',
{
params: {
orderFk: orderId
}
}
);
await this.realPay(payment.amount, payment.companyFk);
if (transactions && transactions.length > 0) {
const [transaction] = transactions;
await this.realPay(
transaction.amount * 100,
transaction.merchantFk
);
}
},
async realPay(amount, company) {
async realPay(amount, companyId) {
if (!isNumeric(amount) || amount <= 0) {
throw new Error('payAmountError');
}
const json = await jApi.send('tpv/transaction', {
amount: parseInt(amount),
const { data: json } = await api.post('tpvTransactions/start', {
amount,
companyId,
urlOk: this.makeUrl('ok'),
urlKo: this.makeUrl('ko'),
company
urlKo: this.makeUrl('ko')
});
const postValues = json.postValues;

View File

@ -8,6 +8,7 @@ const { notify } = useNotify();
const TOKEN_MULTIMEDIA = 'tokenMultimedia';
const TOKEN = 'token';
export const useUserStore = defineStore('user', () => {
const token = ref('');
const tokenMultimedia = ref('');
@ -15,7 +16,7 @@ export const useUserStore = defineStore('user', () => {
const user = ref(null); // Usuario en uso => supplantedUser || mainUser
const supplantedUser = ref(null); // Usuario suplantado
const mainUser = ref(null); // Usuario principal logueado
const companyId = ref(null);
const keepLogin = ref(false);
const intervalId = ref(null);
const isCheckingToken = ref(false);
@ -40,6 +41,7 @@ export const useUserStore = defineStore('user', () => {
} else {
await fetchUser();
await fetchTokenConfig();
await fetchCompanyId();
await supplantInit();
startInterval();
}
@ -154,6 +156,7 @@ export const useUserStore = defineStore('user', () => {
await fetchTokenConfig();
startInterval();
await onLogin();
await fetchCompanyId();
} catch (error) {
throw new Error('Error logging in');
}
@ -283,6 +286,12 @@ export const useUserStore = defineStore('user', () => {
user.value.lang = lang;
};
const fetchCompanyId = async () => {
const { data } = await api.get('UserConfigs/getUserConfig');
companyId.value = data.companyFk;
};
const $reset = () => {
token.value = '';
tokenMultimedia.value = '';
@ -317,6 +326,7 @@ export const useUserStore = defineStore('user', () => {
tokenConfig,
isLoggedIn,
storage,
companyId,
getToken,
getTokenMultimedia,
setToken,