Forráskód Böngészése

合同金额修改

ouyj 2 hete
szülő
commit
c2c2895033

+ 24 - 13
src/main/webapp/yw/contract/contractFlowCustom/js/contract.js

@@ -563,27 +563,39 @@ function calculatePrice(row) {
 // 计算所有物品的总价
 function calculateTotalPrice() { 
     var total = 0;
+    var hasMaterial = false;
     
     $(".startTr1:not(.hide)").each(function() {
+        hasMaterial = true; // 标记有物料行
         var qty = parseFloat($(this).find(".qty").val()) || 0;
         var priceTax = parseFloat($(this).find(".priceTax").val()) || 0;
         var subTotal = qty * priceTax;
         total += subTotal;
     });
     
-    // 如果合同金额为空或与自动计算金额相同,则更新合同金额
-    var contractMoney = parseFloat($("#contract_money").val()) || 0;
+    // 获取当前合同金额和手动输入标记
+    var contractMoney = parseFloat($("#contract_money").val());
     var manualInput = $("#contract_money").data("manual-input") || false; 
     
-    // 如果合同金额小于物料总金额,自动更新合同金额
-    if (contractMoney < total) {
-        $("#contract_money").val(total.toFixed(2));
-        manualInput = false; // 重置手动输入标记
-    }
-    
-    if (!manualInput || contractMoney === 0 || contractMoney === total) {
-        $("#contract_money").val(total.toFixed(2));
-        
+    if (hasMaterial) {
+        // 有物料时,检查是否需要更新合同金额
+        // 如果是手动输入且大于物料总额,保留用户输入
+        // 否则,使用物料总额
+        if (manualInput && contractMoney > total) {
+            // 保留用户手动输入的较大值
+            // 不更新合同金额
+        } else {
+            // 自动更新为物料总额
+            $("#contract_money").val(total.toFixed(2));
+            // 重置手动输入标记
+            $("#contract_money").removeData("manual-input");
+        }
+    } else {
+        // 没有物料时,只有非手动输入才清空
+        if (!manualInput) {
+            $("#contract_money").val("");
+        }
+        // 注意:如果是手动输入,即使没有物料也保留用户输入
     }
     
     $("#totalPrice").val(total.toFixed(2));
@@ -653,12 +665,11 @@ function hideInlineError(element) {
 //检查是否需要删除合同付款信息
 function checkAndRemovePaymentInfo() {
     var hasMaterial = $(".startTr1:not(.hide)").length > 0; 
-    // 如果没有物料,则合同金额置0且删除所有付款信息
+    // 如果没有物料,则删除所有付款信息
     if (!hasMaterial ) {
     	$(".startTr2:not(.hide)").each(function() {
             $(this).remove();
         }); 
-        $("#contract_money").val("0");
     }
 }
 

+ 7 - 4
src/main/webapp/yw/contract/contractFlowCustom/processContract.jsp

@@ -159,11 +159,11 @@
             }); 
             
             $("#contract_money").on('blur', function() {
-                var contractMoney = parseFloat($(this).val()) || 0;
+                var contractMoney = parseFloat($(this).val());
                 var totalPrice = parseFloat($("#totalPrice").val()) || 0;
                 
                 // 只有当totalPrice有值且合同金额小于物料总金额时,才进行提示和修正
-                if (totalPrice > 0 && contractMoney < totalPrice) {
+                if (totalPrice > 0 && (!contractMoney || contractMoney < totalPrice)) {
                 	$(this).removeData("manual-input");
                 	 $("#contract_money").val(totalPrice);
                 	 addError("合同金额不能小于物料总金额: " + totalPrice.toFixed(2));  
@@ -274,7 +274,7 @@
  	 			if(rs == true){
  	 				var detailSize = $('.startTr1:not(.hide)').length;
  	 				if(detailSize > 0){
- 	 					var contract_money = parseFloat($("#contract_money").val()) || 0;
+ 	 					var contract_money = parseFloat($("#contract_money").val());
  	 		            var totalPrice = parseFloat($("#totalPrice").val()) || 0;
  	 					if(totalPrice > 0) {
  	 						if(!contract_money){
@@ -325,7 +325,10 @@
         
         // 页面加载完成后初始化总价
         $(document).ready(function() {
-            calculateTotalPrice();
+            // 只在有物料时才计算总价,避免将空值设置为0
+            if ($('.startTr1:not(.hide)').length > 0) {
+                calculateTotalPrice();
+            }
         });
     </script>
     <style type="text/css">

+ 15 - 9
src/main/webapp/yw/contract/contractFlowCustom/startContract.jsp

@@ -111,10 +111,11 @@
             updateContractMoneyState();
             
             $("#contract_money").on('blur', function() {
-                var contractMoney = parseFloat($(this).val()) || 0;
+                var contractMoney = parseFloat($(this).val());
                 var totalPrice = parseFloat($("#totalPrice").val()) || 0;
                 
-                if (contractMoney < totalPrice) {
+                // 只有当totalPrice有值且合同金额小于物料总金额时,才进行提示和修正
+                if (totalPrice > 0 && (!contractMoney || contractMoney < totalPrice)) {
                 	 $(this).removeData("manual-input");
                 	 $("#contract_money").val(totalPrice);
                 	 addError("合同金额不能小于物料总金额: " + totalPrice.toFixed(2));  
@@ -194,13 +195,15 @@
  			if(rs == true){
  				var detailSize = $('.startTr1:not(.hide)').length;
  				if(detailSize > 0){
- 					var contract_money = parseFloat($("#contract_money").val()) || 0;
+ 					var contract_money = parseFloat($("#contract_money").val());
  		            var totalPrice = parseFloat($("#totalPrice").val()) || 0;
- 					if(!contract_money){
- 						$("#contract_money").val(totalPrice);
- 					}else if(contract_money < totalPrice){
- 						addError("合同金额不能小于物料总金额: " + totalPrice.toFixed(2));  
- 						rs = false;
+ 					if(totalPrice > 0) {
+ 						if(!contract_money){
+ 							$("#contract_money").val(totalPrice);
+ 						}else if(contract_money < totalPrice){
+ 							addError("合同金额不能小于物料总金额: " + totalPrice.toFixed(2));  
+ 							rs = false;
+ 						}
  					}
  				}
  			}
@@ -242,7 +245,10 @@
         
         // 页面加载完成后初始化总价
         $(document).ready(function() {
-            calculateTotalPrice();
+            // 只在有物料时才计算总价,避免将空值设置为0
+            if ($('.startTr1:not(.hide)').length > 0) {
+                calculateTotalPrice();
+            }
         });
     </script>
     <style type="text/css">