fix: pay split count & pay split detail

This commit is contained in:
puriphatt 2024-12-18 18:03:04 +07:00
parent 1d4b101931
commit 8f99c5274e

View file

@ -147,7 +147,7 @@ const refSelectZoneEmployee = ref<InstanceType<typeof SelectZone>>();
const mrz = ref<Awaited<ReturnType<typeof parseResultMRZ>>>();
const toggleWorker = ref(true);
const tempTableProduct = ref<ProductServiceList[]>([]);
const tempPaySplitCount = ref(0);
const tempPaySplitCount = ref(1);
const tempPaySplit = ref<
{ no: number; amount: number; name?: string; invoice?: boolean }[]
>([]);
@ -455,7 +455,7 @@ async function fetchQuotation() {
const id = currentQuotationId.value || quotationFormData.value.id || '';
await quotationForm.assignFormData(id, quotationFormState.value.mode);
tempPaySplitCount.value = quotationFormData.value.paySplitCount || 0;
tempPaySplitCount.value = quotationFormData.value.paySplitCount || 1;
tempPaySplit.value = JSON.parse(
JSON.stringify(quotationFormData.value.paySplit),
);
@ -843,7 +843,7 @@ function toggleDeleteProduct(index: number) {
// find split count
tempPaySplitCount.value = Math.max(
...productServiceList.value.map((v) => v.installmentNo || 0),
...productServiceList.value.map((v) => v.installmentNo || 1),
);
quotationFormData.value.paySplitCount = tempPaySplitCount.value;
@ -859,7 +859,6 @@ async function assignWorkerToSelectedWorker() {
}
function convertToTable(nodes: Node[]) {
// TODO:
const _recursive = (v: Node): Node | Node[] => {
if (v.checked && v.children) return v.children.flatMap(_recursive);
if (v.checked) return v;
@ -868,7 +867,7 @@ function convertToTable(nodes: Node[]) {
const list = nodes.flatMap(_recursive).map((v) => v.value);
quotationFormData.value.paySplitCount = Math.max(
...list.map((v) => v.installmentNo || 0),
...list.map((v) => v.installmentNo || 1),
);
tempPaySplitCount.value = quotationFormData.value.paySplitCount;
@ -887,22 +886,29 @@ function convertToTable(nodes: Node[]) {
productServiceList.value = list;
tempTableProduct.value = JSON.parse(JSON.stringify(list));
quotationFormData.value.paySplit = Array.apply(
null,
new Array(quotationFormData.value.paySplitCount),
).map((_, i) => ({
no: i + 1,
amount: getPrice(list, (v) => {
return (
v.installmentNo === i + 1 ||
(i + 1 === quotationFormData.value.paySplitCount && !v.installmentNo)
);
}).finalPrice,
}));
if (nodes.length > 0) {
quotationFormData.value.paySplit = Array.apply(
null,
new Array(quotationFormData.value.paySplitCount),
).map((_, i) => ({
no: i + 1,
amount: getPrice(list, (v) => {
return (
v.installmentNo === i + 1 ||
(i + 1 === quotationFormData.value.paySplitCount && !v.installmentNo)
);
}).finalPrice,
}));
} else {
quotationFormData.value.paySplit = [];
quotationFormData.value.paySplitCount = 1;
quotationFormData.value.payCondition = 'Full';
}
tempPaySplit.value = JSON.parse(
JSON.stringify(quotationFormData.value.paySplit),
);
tempPaySplitCount.value = quotationFormData.value.paySplitCount;
pageState.productServiceModal = false;
}
@ -2109,7 +2115,7 @@ watch(
:date="v.date"
:pay-type="quotationFormData.payCondition"
:index="i"
:pay-split-count="quotationFormData.paySplitCount || 0"
:pay-split-count="quotationFormData.paySplitCount || 1"
@view="
() => {
selectedInstallmentNo = [v.invoice.installments[0].no];