| 
					
				 | 
			
			
				@@ -90,50 +90,59 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return await this.db.query(sql, [sid, importLid]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        async getChangeBillsWithUsedInfo(stage) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const sql = 'SELECT sic.* ' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                '  FROM ' + this.tableName + ' sic ' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                '  LEFT JOIN ' + this.ctx.service.stage.tableName + ' s ON sic.sid = s.id' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                '  WHERE sic.tid = ? And s.order <= ?'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const result = await this.db.query(sql, [stage.tid, stage.order]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         async getChangeWithUsedInfo(stage, importLid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const change = importLid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ? await this.getLeafXmjImportChange(stage.id, importLid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 : await this.getImportChange(stage.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (change.length === 0) return []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 引入变更,不计算已执行等???? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // const changeBills = await this.ctx.service.changeAuditList.getAllDataByCondition({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     where: { cid: change.map(x => { return x.cid; }) } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // const changeBillsIndex = {}, changeBillsPart = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // for (const cb of changeBills) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     changeBillsIndex[cb.id] = cb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     if (!changeBillsPart[cb.cid]) changeBillsPart[cb.cid] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     changeBillsPart[cb.cid].push(cb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // const stageChangeBills = await this.getEndStageImportChange(stage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // for (const scb of stageChangeBills) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     if (!scb.rela_qty) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     const cb = changeBillsIndex[scb.rela_cbid]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     if (cb) cb.used_qty = this.ctx.helper.add(cb.used_qty, scb.rela_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // for (const cid in changeBillsPart) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     const c = change.find(x => { return x.cid === cid }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     if (!c) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     for (const cb of changeBillsPart[cid]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         cb.tp = this.ctx.helper.mul(cb.spamount, cb.unit_price, c.tp_decimal || this.ctx.tender.info.decimal.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         cb.used_tp = this.ctx.helper.mul(cb.used_qty, cb.unit_price, this.ctx.tender.info.decimal.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         c.used_tp = this.ctx.helper.add(c.used_tp, cb.used_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         if (cb.spamount > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //             c.p_tp = this.ctx.helper.add(c.p_tp, cb.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //             c.p_used_tp = this.ctx.helper.add(c.p_used_tp, cb.used_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         } else if (cb.spamount < 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //             c.n_tp = this.ctx.helper.add(c.n_tp, cb.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //             c.n_used_tp = this.ctx.helper.add(c.n_used_tp, cb.used_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     c.used_pt = c.total_price ? this.ctx.helper.mul(this.ctx.helper.div(c.used_tp, c.total_price, 4), 100) : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     c.p_used_pt = c.p_tp ? this.ctx.helper.mul(this.ctx.helper.div(c.p_used_tp, c.p_tp, 4), 100) : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     c.n_used_pt = c.n_tp ? this.ctx.helper.mul(this.ctx.helper.div(c.n_used_tp, c.n_tp, 4), 100) : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const changeBills = await this.ctx.service.changeAuditList.getAllDataByCondition({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                where: { cid: change.map(x => { return x.cid; }) } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const changeBillsIndex = {}, changeBillsPart = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const cb of changeBills) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                changeBillsIndex[cb.id] = cb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!changeBillsPart[cb.cid]) changeBillsPart[cb.cid] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                changeBillsPart[cb.cid].push(cb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const stageChangeBills = await this.getChangeBillsWithUsedInfo(stage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const scb of stageChangeBills) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!scb.rela_qty) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const cb = changeBillsIndex[scb.rela_cbid]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (cb) cb.used_qty = this.ctx.helper.add(cb.used_qty, scb.rela_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const cid in changeBillsPart) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const c = change.find(x => { return x.cid === cid }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!c) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (const cb of changeBillsPart[cid]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cb.tp = this.ctx.helper.mul(cb.spamount, cb.unit_price, c.tp_decimal || this.ctx.tender.info.decimal.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cb.used_tp = this.ctx.helper.mul(cb.used_qty, cb.unit_price, this.ctx.tender.info.decimal.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    c.used_tp = this.ctx.helper.add(c.used_tp, cb.used_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (cb.spamount > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        c.p_tp = this.ctx.helper.add(c.p_tp, cb.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        c.p_used_tp = this.ctx.helper.add(c.p_used_tp, cb.used_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else if (cb.spamount < 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        c.n_tp = this.ctx.helper.add(c.n_tp, cb.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        c.n_used_tp = this.ctx.helper.add(c.n_used_tp, cb.used_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                c.used_pt = c.total_price ? this.ctx.helper.mul(this.ctx.helper.div(c.used_tp, c.total_price, 4), 100) : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                c.p_used_pt = c.p_tp ? this.ctx.helper.mul(this.ctx.helper.div(c.p_used_tp, c.p_tp, 4), 100) : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                c.n_used_pt = c.n_tp ? this.ctx.helper.mul(this.ctx.helper.div(c.n_used_tp, c.n_tp, 4), 100) : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return change; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |