feat(tpv): integrar ID de empresa en el proceso de pago y actualizar llamadas a la API
gitea/hedera-web/pipeline/pr-beta This commit looks good
Details
gitea/hedera-web/pipeline/pr-beta This commit looks good
Details
Se agregó la validación del ID de empresa en OrdersView. Se refactorizaron los métodos de transacción TPV para usar los nuevos endpoints de la API.
This commit is contained in:
parent
be54a93e63
commit
aae4f7a48a
|
@ -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>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { defineStore } from 'pinia';
|
||||
import { jApi } from 'boot/axios';
|
||||
import { api } from 'boot/axios';
|
||||
|
||||
export const tpvStore = defineStore('tpv', {
|
||||
actions: {
|
||||
|
@ -8,9 +8,9 @@ export const tpvStore = defineStore('tpv', {
|
|||
const status = route.query.tpvStatus;
|
||||
if (!(order && status)) return null;
|
||||
|
||||
await jApi.execQuery('CALL myTpvTransaction_end(#order, #status)', {
|
||||
order,
|
||||
status
|
||||
await api.post('tpvTransactions/end', {
|
||||
orderId: order,
|
||||
status: status
|
||||
});
|
||||
|
||||
if (status === 'ko') {
|
||||
|
@ -28,26 +28,32 @@ export const tpvStore = defineStore('tpv', {
|
|||
},
|
||||
|
||||
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 }
|
||||
const { data: transactions } = await api.get(
|
||||
'clients/transactions',
|
||||
{
|
||||
params: {
|
||||
orderFk: order
|
||||
}
|
||||
}
|
||||
);
|
||||
await this.realPay(payment.amount, payment.companyFk);
|
||||
if (transactions && transactions.length > 0) {
|
||||
const transaction = transactions[0];
|
||||
await this.realPay(
|
||||
transaction.amount * 100,
|
||||
transaction.merchantFk
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
async realPay(amount, company) {
|
||||
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: amount,
|
||||
urlOk: this.makeUrl('ok'),
|
||||
urlKo: this.makeUrl('ko'),
|
||||
company
|
||||
companyId: company
|
||||
});
|
||||
|
||||
const postValues = json.postValues;
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue