| 
					
				 | 
			
			
				@@ -11,6 +11,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const RptMemBase = require('./base'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const bindData = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const changeConst = require('../../const/change'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const Ledger = require('../ledger'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class rptMemChange extends RptMemBase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     constructor(ctx) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -84,10 +85,32 @@ class rptMemChange extends RptMemBase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return changeBills; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    async getChangeLedgerBillsData(showLevel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            await this.ctx.service.tender.checkTender(tid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    _getNewBillsTree(calcFields) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return new Ledger.billsTree(this.ctx, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id: 'ledger_id', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pid: 'ledger_pid', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            order: 'order', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            level: 'level', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rootId: -1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            keys: ['id', 'tender_id', 'ledger_id'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            stageId: 'id', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            calcFields: calcFields || ['deal_tp', 'total_price', 'sgfh_tp', 'sjcl_tp', 'qtcl_tp'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            calc: function (node, helper) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    _calcLeafXmjRela(billsTree) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (const node of billsTree.nodes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (node.b_code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const leafXmj = billsTree.getLeafXmjParent(node); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                node.leaf_xmj_id = leafXmj ? leafXmj.id : -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async getChangeLedgerBillsData(fields, showLevel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const billsData = await this.ctx.service.ledger.getData(this.ctx.tender.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const changeBillsData = await this.ctx.service.changeLedger.getAllDataByCondition({ where: { ccid: this.ctx.change.id } }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             billsData.push(...changeBillsData); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -96,7 +119,7 @@ class rptMemChange extends RptMemBase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             billsTree.loadDatas(billsData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             billsTree.calculateAll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (this._checkFieldsExist(fields, [''])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this._checkFieldsExist(fields, ['leaf_xmj_id'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 this._calcLeafXmjRela(billsTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -111,10 +134,17 @@ class rptMemChange extends RptMemBase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const posData = await this.ctx.service.pos.getAllDataByCondition({ where: {tid: this.ctx.tender.id }}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const changePosData = await this.ctx.service.changePos.getAllDataByCondition({ where: { ccid: this.ctx.change.id } }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             posData.push(...changePosData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.pos.loadDatas(posData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.pos.calculateAll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return this.pos.getDatas(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const pos = new Ledger.pos({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                id: 'id', ledgerId: 'lid', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                updateFields: ['contract_qty', 'qc_qty', 'postil'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calc: function (p) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pos.loadDatas(posData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pos.calculateAll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return pos.getDatas(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } catch (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -137,9 +167,9 @@ class rptMemChange extends RptMemBase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case 'mem_tender_info': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return [this.ctx.tender.info]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case 'mem_change_ledger_bills': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return this.getChangeLedgerBillsData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return this.getChangeLedgerBillsData(fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case 'mem_change_ledger_bills_filter': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return this.getChangeLedgerBillsData(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return this.getChangeLedgerBillsData(fields, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case 'mem_change_ledger_pos': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return this.getChangeLedgerPosData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             default: 
			 |