| 
					
				 | 
			
			
				@@ -122,6 +122,24 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             await this.db.update(this.tableName, data, { where: { tid: tenderId } }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        async _getLedgerService() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (this.ctx.tender.data.status === auditConst.ledger.status.checked) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    const stageCount = this.ctx.service.stage.count({tid: this.ctx.tender.id}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (stageCount === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        const revise = await ctx.service.ledgerRevise.getLastestRevise(this.ctx.tender.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (revise.status === auditConst.revise.status.uncheck || revise.status === auditConst.revise.status.checkNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            return [this.ctx.service.reviseBills, this.ctx.service.revisePos]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return [this.ctx.service.ledger, this.ctx.service.pos]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch(err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         async savePrecision(tenderId, newPrecision, oldPrecision, decimal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const changePrecision = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const units = await this.ctx.service.ledger.getTenderUsedUnits(tenderId); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -146,16 +164,9 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             changeUnits = this._.flatten(changeUnits); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let billsService, posService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (this.ctx.tender.data.status === auditConst.ledger.status.checked) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                billsService = this.ctx.service.ledger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                posService = this.ctx.service.pos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                billsService = this.ctx.service.reviseBills; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                posService = this.ctx.service.revisePos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const [billsService, posService] = await this._getLedgerService(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (changeUnits.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (changeUnits.length > 0 && billsService && posService) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const bills = await billsService.getAllDataByCondition({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     columns: ['id', 'unit', 'unit_price', 'sgfh_qty', 'sjcl_qty', 'qtcl_qty', 'deal_qty'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     where: { tender_id: tenderId, unit: changeUnits, is_leaf: true }, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -295,18 +306,8 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let billsService = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (this.ctx.tender.data.ledger_status === auditConst.ledger.status.checked) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const stageCount = this.ctx.service.stage.count({tid: tenderId}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (stageCount === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    const revise = await ctx.service.ledgerRevise.getLastestRevise(tenderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (revise.status === auditConst.revise.status.uncheck || revise.status === auditConst.revise.status.checkNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        billsService = this.ctx.service.reviseBills; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                billsService = this.ctx.service.ledger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const [billsService] = await this._getLedgerService(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const changeBills = await this._reCalcLedger(tenderId, billsService, newDecimal, oldDecimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const [changeSj, changeSb, changeSo] = await this._reCalcStageExtra(tenderId, newDecimal, oldDecimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (changeBills.length > 0 || 
			 |