From 3d4983ffad3c7adf8a89af10ddc36361b8e55ec1 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 22 四月 2026 10:01:29 +0800
Subject: [PATCH] fix: 本次开票金额需要重新计算

---
 src/views/salesManagement/invoiceRegistration/index.vue |   67 +++++++++++++++++++++++----------
 1 files changed, 47 insertions(+), 20 deletions(-)

diff --git a/src/views/salesManagement/invoiceRegistration/index.vue b/src/views/salesManagement/invoiceRegistration/index.vue
index 2f6e60c..8990f31 100644
--- a/src/views/salesManagement/invoiceRegistration/index.vue
+++ b/src/views/salesManagement/invoiceRegistration/index.vue
@@ -741,51 +741,78 @@
 };
 
 //鏈寮�绁ㄥけ鐒︽搷浣�
+const getInvoiceCalcUnitPrice = (row) => {
+	const baseNoInvoiceNum = parseFloat(
+		row.tempNoInvoiceNum ?? row.originalNoInvoiceNum ?? row.noInvoiceNum ?? 0
+	);
+	const baseNoInvoiceAmount = parseFloat(
+		row.tempnoInvoiceAmount ?? row.noInvoiceAmount ?? row.taxInclusiveTotalPrice ?? 0
+	);
+	if (!baseNoInvoiceNum) {
+		return 0;
+	}
+	return baseNoInvoiceAmount / baseNoInvoiceNum;
+};
+
 const invoiceNumBlur = (row) => {
 	if (!row.currentInvoiceNum) {
 		row.currentInvoiceNum = 0;
 	}
-	if (row.currentInvoiceNum > row.tempNoInvoiceNum) {
+	const baseNoInvoiceNum = parseFloat(
+		row.tempNoInvoiceNum ?? row.originalNoInvoiceNum ?? row.noInvoiceNum ?? 0
+	);
+	const baseNoInvoiceAmount = parseFloat(
+		row.tempnoInvoiceAmount ?? row.noInvoiceAmount ?? row.taxInclusiveTotalPrice ?? 0
+	);
+	const unitPrice = getInvoiceCalcUnitPrice(row);
+	if (!unitPrice) {
+		row.currentInvoiceAmount = 0;
+		row.noInvoiceNum = Number(baseNoInvoiceNum).toFixed(2);
+		row.noInvoiceAmount = Number(baseNoInvoiceAmount).toFixed(2);
+		return;
+	}
+	if (row.currentInvoiceNum > baseNoInvoiceNum) {
 		proxy.$modal.msgWarning("鏈寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟");
 		row.currentInvoiceNum = 0;
 	}
 	// 璁$畻鏈寮�绁ㄩ噾棰�
-	row.currentInvoiceAmount = (
-		row.currentInvoiceNum * row.taxInclusiveUnitPrice
-	).toFixed(2);
+	row.currentInvoiceAmount = (row.currentInvoiceNum * unitPrice).toFixed(2);
 	// 璁$畻鏈紑绁ㄦ暟
-	row.noInvoiceNum = (row.originalNoInvoiceNum - row.currentInvoiceNum).toFixed(
-		2
-	);
+	row.noInvoiceNum = (baseNoInvoiceNum - row.currentInvoiceNum).toFixed(2);
 	// 璁$畻鏈紑绁ㄩ噾棰�
-	row.noInvoiceAmount = (
-		row.tempnoInvoiceAmount - row.currentInvoiceAmount
-	).toFixed(2);
+	row.noInvoiceAmount = (row.noInvoiceNum * unitPrice).toFixed(2);
 };
 // 鏈寮�绁ㄩ噾棰濆け鐒︽搷浣�
 const invoiceAmountBlur = (row) => {
 	if (!row.currentInvoiceAmount) {
 		row.currentInvoiceAmount = 0;
 	}
+	const baseNoInvoiceNum = parseFloat(
+		row.tempNoInvoiceNum ?? row.originalNoInvoiceNum ?? row.noInvoiceNum ?? 0
+	);
+	const baseNoInvoiceAmount = parseFloat(
+		row.tempnoInvoiceAmount ?? row.noInvoiceAmount ?? row.taxInclusiveTotalPrice ?? 0
+	);
+	const unitPrice = getInvoiceCalcUnitPrice(row);
+	if (!unitPrice) {
+		row.currentInvoiceNum = 0;
+		row.noInvoiceNum = Number(baseNoInvoiceNum).toFixed(2);
+		row.noInvoiceAmount = Number(baseNoInvoiceAmount).toFixed(2);
+		return;
+	}
 	// 璁$畻鏄惁瓒呰繃寮�绁ㄦ�婚噾棰�
-	if (row.currentInvoiceAmount > row.tempnoInvoiceAmount) {
+	if (row.currentInvoiceAmount > baseNoInvoiceAmount) {
 		proxy.$modal.msgWarning("鏈寮�绁ㄩ噾棰濅笉寰楀ぇ浜庢湭寮�绁ㄩ噾棰�");
 		row.currentInvoiceAmount = 0;
 	}
 	// 璁$畻鏈寮�绁ㄦ暟
-	row.currentInvoiceNum = (
-		row.currentInvoiceAmount / row.taxInclusiveUnitPrice
-	).toFixed(2);
+	row.currentInvoiceNum = (row.currentInvoiceAmount / unitPrice).toFixed(2);
 	console.log("row.currentInvoiceNum ", row.currentInvoiceNum);
 	console.log(" row.originalNoInvoiceNum  ", row.originalNoInvoiceNum);
 	// 璁$畻鏈紑绁ㄦ暟
-	row.noInvoiceNum = (row.originalNoInvoiceNum - row.currentInvoiceNum).toFixed(
-		2
-	);
+	row.noInvoiceNum = (baseNoInvoiceNum - row.currentInvoiceNum).toFixed(2);
 	// 璁$畻鏈紑绁ㄩ噾棰�
-	row.noInvoiceAmount = (
-		row.tempnoInvoiceAmount - row.currentInvoiceAmount
-	).toFixed(2);
+	row.noInvoiceAmount = (row.noInvoiceNum * unitPrice).toFixed(2);
 };
 
 onMounted(() => {

--
Gitblit v1.9.3