| 
					
				 | 
			
			
				@@ -218,7 +218,7 @@ class revisePriceCalc { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const decimal = this.ctx.tender.info.decimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const changeBills = await this.ctx.service.changeAuditList.getAllDataByCondition({ where: { cid: change.cid } }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const updateBills = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let total_price = 0, positive_tp = 0, negative_tp = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const sumBills = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (const b of changeBills) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const p = this.findChangeBillsPrice(b.code, b.name, b.unit, b.unit_price, change.cid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const settleGcl = b.gcl_id ? this.settleBills.find(x => { return x.lid === b.gcl_id; }) : null; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -231,16 +231,38 @@ class revisePriceCalc { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 bills_tp = this.ctx.helper.mul(b.unit_price, b.spamount, change.tp_decimal || decimal.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            total_price = this.ctx.helper.add(total_price, bills_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let sb = sumBills.find(x => { return x.gcl_id === b.gcl_id }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!sb) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sb = {gcl_id: b.gcl_id, unit_price: b.unit_price, v_qty: 0, uv_qty: 0, p_qty: 0, n_qty: 0 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sumBills.push(sb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (b.spamount >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                positive_tp = this.ctx.helper.add(positive_tp, bills_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sb.p_qty = this.ctx.helper.add(sb.p_qty, b.spamount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sb.n_qty = this.ctx.helper.add(sb.n_qty, b.spamount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (b.is_valuation) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sb.v_qty = this.ctx.helper.add(sb.v_qty, b.spamount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                negative_tp = this.ctx.helper.add(negative_tp, bills_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sb.uv_qty = this.ctx.helper.add(sb.uv_qty, b.spamount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let positive_tp = 0, negative_tp = 0, valuation_tp = 0, unvaluation_tp = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (const sb of sumBills) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sb.v_tp = this.ctx.helper.mul(sb.v_qty, sb.unit_price, change.tp_decimal || decimal.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sb.uv_tp = this.ctx.helper.mul(sb.uv_qty, sb.unit_price, change.tp_decimal || decimal.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sb.p_tp = this.ctx.helper.mul(sb.p_qty, sb.unit_price, change.tp_decimal || decimal.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sb.n_tp = this.ctx.helper.mul(sb.n_qty, sb.unit_price, change.tp_decimal || decimal.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            valuation_tp = this.ctx.helper.add(sb.v_tp, valuation_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            unvaluation_tp = this.ctx.helper.add(sb.uv_tp, unvaluation_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            positive_tp = this.ctx.helper.add(sb.p_tp, positive_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            negative_tp = this.ctx.helper.add(sb.n_tp, negative_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const total_price = this.ctx.helper.add(valuation_tp, unvaluation_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (updateBills.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             await transaction.updateRows(this.ctx.service.changeAuditList.tableName, updateBills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            await transaction.update(this.ctx.service.change.tableName, { total_price, positive_tp, negative_tp }, { where: { cid: change.cid } }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            await transaction.update(this.ctx.service.change.tableName, { total_price, positive_tp, negative_tp, valuation_tp, unvaluation_tp }, { where: { cid: change.cid } }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 |