#8667: Modified ClientPayment #1622
|
@ -20,6 +20,7 @@ import VnFilter from 'components/VnTable/VnFilter.vue';
|
||||||
|
|
||||||
import CustomerNewPayment from 'src/pages/Customer/components/CustomerNewPayment.vue';
|
import CustomerNewPayment from 'src/pages/Customer/components/CustomerNewPayment.vue';
|
||||||
import InvoiceOutDescriptorProxy from 'src/pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue';
|
import InvoiceOutDescriptorProxy from 'src/pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue';
|
||||||
|
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
|
||||||
|
|
||||||
const { openConfirmationModal } = useVnConfirm();
|
const { openConfirmationModal } = useVnConfirm();
|
||||||
const { sendEmail, openReport } = usePrintService();
|
const { sendEmail, openReport } = usePrintService();
|
||||||
|
@ -89,15 +90,7 @@ const columns = computed(() => [
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('Employee'),
|
label: t('Employee'),
|
||||||
columnField: {
|
name: 'workerFk',
|
||||||
component: 'userLink',
|
|
||||||
attrs: ({ row }) => {
|
|
||||||
return {
|
|
||||||
workerId: row.workerFk,
|
|
||||||
name: row.userName,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -131,7 +124,6 @@ const columns = computed(() => [
|
||||||
align: 'left',
|
align: 'left',
|
||||||
name: 'balance',
|
name: 'balance',
|
||||||
label: t('Balance'),
|
label: t('Balance'),
|
||||||
format: ({ balance }) => toCurrency(balance),
|
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -146,12 +138,14 @@ const columns = computed(() => [
|
||||||
actions: [
|
actions: [
|
||||||
{
|
{
|
||||||
title: t('globals.downloadPdf'),
|
title: t('globals.downloadPdf'),
|
||||||
|
isPrimary: true,
|
||||||
icon: 'cloud_download',
|
icon: 'cloud_download',
|
||||||
show: (row) => row.isInvoice,
|
show: (row) => row.isInvoice,
|
||||||
action: (row) => showBalancePdf(row),
|
action: (row) => showBalancePdf(row),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('Send compensation'),
|
title: t('Send compensation'),
|
||||||
|
isPrimary: true,
|
||||||
icon: 'outgoing_mail',
|
icon: 'outgoing_mail',
|
||||||
show: (row) => !!row.isCompensation,
|
show: (row) => !!row.isCompensation,
|
||||||
action: ({ id }) =>
|
action: ({ id }) =>
|
||||||
|
@ -256,6 +250,12 @@ const showBalancePdf = ({ id }) => {
|
||||||
<template #column-balance="{ rowIndex }">
|
<template #column-balance="{ rowIndex }">
|
||||||
{{ toCurrency(balances[rowIndex]?.balance) }}
|
{{ toCurrency(balances[rowIndex]?.balance) }}
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
|
<template #column-workerFk="{ row }">
|
||||||
|
<span class="link" @click.stop>
|
||||||
|
{{ row.userName }}
|
||||||
jon marked this conversation as resolved
jsegarra
commented
@click.stop @click.stop
|
|||||||
|
<WorkerDescriptorProxy :id="row.workerFk" />
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
<template #column-description="{ row }">
|
<template #column-description="{ row }">
|
||||||
<span class="link" v-if="row.isInvoice" @click.stop>
|
<span class="link" v-if="row.isInvoice" @click.stop>
|
||||||
{{ t('bill', { ref: row.description }) }}
|
{{ t('bill', { ref: row.description }) }}
|
||||||
|
|
|
@ -3,18 +3,20 @@ import { onBeforeMount, reactive, ref } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { getClientRisk } from '../composables/getClientRisk';
|
|
||||||
import { useDialogPluginComponent } from 'quasar';
|
import { useDialogPluginComponent } from 'quasar';
|
||||||
import FormModelPopup from 'components/FormModelPopup.vue';
|
|
||||||
|
import { getClientRisk } from '../composables/getClientRisk';
|
||||||
import { usePrintService } from 'composables/usePrintService';
|
import { usePrintService } from 'composables/usePrintService';
|
||||||
import useNotify from 'src/composables/useNotify.js';
|
import useNotify from 'src/composables/useNotify.js';
|
||||||
|
|
||||||
|
import FormModelPopup from 'components/FormModelPopup.vue';
|
||||||
import FetchData from 'components/FetchData.vue';
|
import FetchData from 'components/FetchData.vue';
|
||||||
import FormModel from 'components/FormModel.vue';
|
|
||||||
import VnRow from 'components/ui/VnRow.vue';
|
import VnRow from 'components/ui/VnRow.vue';
|
||||||
import VnInputDate from 'components/common/VnInputDate.vue';
|
import VnInputDate from 'components/common/VnInputDate.vue';
|
||||||
import VnInputNumber from 'components/common/VnInputNumber.vue';
|
import VnInputNumber from 'components/common/VnInputNumber.vue';
|
||||||
import VnSelect from 'src/components/common/VnSelect.vue';
|
import VnSelect from 'src/components/common/VnSelect.vue';
|
||||||
import VnInput from 'src/components/common/VnInput.vue';
|
import VnInput from 'src/components/common/VnInput.vue';
|
||||||
|
import VnAccountNumber from 'src/components/common/VnAccountNumber.vue';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
@ -48,7 +50,7 @@ const maxAmount = ref();
|
||||||
const accountingType = ref({});
|
const accountingType = ref({});
|
||||||
jon marked this conversation as resolved
jsegarra
commented
Sobra el import de FormModel Sobra el import de FormModel
|
|||||||
const isCash = ref(false);
|
const isCash = ref(false);
|
||||||
const formModelRef = ref(false);
|
const formModelRef = ref(false);
|
||||||
|
const amountToReturn = ref();
|
||||||
const filterBanks = {
|
const filterBanks = {
|
||||||
fields: ['id', 'bank', 'accountingTypeFk'],
|
fields: ['id', 'bank', 'accountingTypeFk'],
|
||||||
include: { relation: 'accountingType' },
|
include: { relation: 'accountingType' },
|
||||||
|
@ -90,7 +92,7 @@ function setPaymentType(data, accounting) {
|
||||||
let descriptions = [];
|
let descriptions = [];
|
||||||
if (accountingType.value.receiptDescription)
|
if (accountingType.value.receiptDescription)
|
||||||
descriptions.push(accountingType.value.receiptDescription);
|
descriptions.push(accountingType.value.receiptDescription);
|
||||||
if (data.description) descriptions.push(data.description);
|
if (data.description > 0) descriptions.push(data.description);
|
||||||
data.description = descriptions.join(', ');
|
data.description = descriptions.join(', ');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +102,7 @@ const calculateFromAmount = (event) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const calculateFromDeliveredAmount = (event) => {
|
const calculateFromDeliveredAmount = (event) => {
|
||||||
initialData.amountToReturn = parseFloat(event) - initialData.amountPaid;
|
amountToReturn.value = event - initialData.amountPaid;
|
||||||
};
|
};
|
||||||
|
|
||||||
function onBeforeSave(data) {
|
function onBeforeSave(data) {
|
||||||
|
@ -121,17 +123,16 @@ async function onDataSaved(formData, { id }) {
|
||||||
recipient: formData.email,
|
recipient: formData.email,
|
||||||
});
|
});
|
||||||
|
|
||||||
jon marked this conversation as resolved
Outdated
jsegarra
commented
Prefiero usar useOpenURL Prefiero usar useOpenURL
https://redmine.verdnatura.es/issues/8810
|
|||||||
if (viewReceipt.value) openReport(`Receipts/${id}/receipt-pdf`);
|
if (viewReceipt.value) openReport(`Receipts/${id}/receipt-pdf`, {}, '_blank');
|
||||||
} finally {
|
} finally {
|
||||||
if ($props.promise) $props.promise();
|
if ($props.promise) $props.promise();
|
||||||
if (closeButton.value) closeButton.value.click();
|
if (closeButton.value) closeButton.value.click();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function accountShortToStandard({ target: { value } }) {
|
async function getSupplierClientReferences(value) {
|
||||||
if (!value) return (initialData.description = '');
|
if (!value) return (initialData.description = '');
|
||||||
initialData.compensationAccount = value.replace('.', '0'.repeat(11 - value.length));
|
const params = { bankAccount: value };
|
||||||
const params = { bankAccount: initialData.compensationAccount };
|
|
||||||
const { data } = await axios(`Clients/getClientOrSupplierReference`, { params });
|
const { data } = await axios(`Clients/getClientOrSupplierReference`, { params });
|
||||||
if (!data.clientId) {
|
if (!data.clientId) {
|
||||||
initialData.description = t('Supplier Compensation Reference', {
|
initialData.description = t('Supplier Compensation Reference', {
|
||||||
|
@ -241,17 +242,16 @@ async function getAmountPaid() {
|
||||||
@update:model-value="getAmountPaid()"
|
@update:model-value="getAmountPaid()"
|
||||||
/>
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
|
<div v-if="accountingType.code == 'compensation'">
|
||||||
<div v-if="data.bankFk?.accountingType?.code == 'compensation'">
|
|
||||||
<div class="text-h6">
|
<div class="text-h6">
|
||||||
{{ t('Compensation') }}
|
{{ t('Compensation') }}
|
||||||
</div>
|
</div>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInputNumber
|
<VnAccountNumber
|
||||||
jsegarra
commented
VnAccountNumber? VnAccountNumber?
|
|||||||
:label="t('Compensation account')"
|
:label="t('Compensation account')"
|
||||||
clearable
|
clearable
|
||||||
v-model="data.compensationAccount"
|
v-model="data.compensationAccount"
|
||||||
@blur="accountShortToStandard"
|
@blur="getSupplierClientReferences(data.compensationAccount)"
|
||||||
/>
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
</div>
|
</div>
|
||||||
|
@ -261,8 +261,7 @@ async function getAmountPaid() {
|
||||||
clearable
|
clearable
|
||||||
v-model="data.description"
|
v-model="data.description"
|
||||||
/>
|
/>
|
||||||
|
<div v-if="accountingType.code == 'cash'">
|
||||||
<div v-if="data.bankFk?.accountingType?.code == 'cash'">
|
|
||||||
<div class="text-h6">{{ t('Cash') }}</div>
|
<div class="text-h6">{{ t('Cash') }}</div>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInputNumber
|
<VnInputNumber
|
||||||
|
@ -274,7 +273,7 @@ async function getAmountPaid() {
|
||||||
<VnInputNumber
|
<VnInputNumber
|
||||||
:label="t('Amount to return')"
|
:label="t('Amount to return')"
|
||||||
disable
|
disable
|
||||||
v-model="data.amountToReturn"
|
v-model="amountToReturn"
|
||||||
/>
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
|
|
Loading…
Reference in New Issue
esto no puede ir en format?
Veo que tiene dependencia con balances pero yo creo que al hacerlo en el onfetch todavía no renderiza