|  | @@ -262,19 +262,24 @@ module.exports = app => {
 | 
	
		
			
				|  |  |                      if (!b) continue;
 | 
	
		
			
				|  |  |                      const contract_tp = this.ctx.helper.mul(b.unit_price, sb.contract_qty, decimal.tp);
 | 
	
		
			
				|  |  |                      const qc_tp = this.ctx.helper.mul(b.unit_price, sb.qc_qty, decimal.tp);
 | 
	
		
			
				|  |  | +                    const positive_qc_tp = this.ctx.helper.mul(b.unit_price, sb.positive_qc_qty, decimal.tp);
 | 
	
		
			
				|  |  | +                    const negative_qc_tp = this.ctx.helper.mul(b.unit_price, sb.positive_qc_qty, decimal.tp);
 | 
	
		
			
				|  |  |                      const ex_stage_tp1 = this.ctx.helper.mul(b.unit_price, sb.ex_stage_qty1, decimal.tp);
 | 
	
		
			
				|  |  | -                    if (contract_tp == sb.contract_tp && qc_tp === sb.qc_tp && ex_stage_tp1 === sb.ex_stage_tp1) continue;
 | 
	
		
			
				|  |  | +                    if (contract_tp == sb.contract_tp && qc_tp === sb.qc_tp && ex_stage_tp1 === sb.ex_stage_tp1
 | 
	
		
			
				|  |  | +                        && positive_qc_tp === sb.positive_qc_tp && negative_qc_tp === sb.negative_qc_tp) continue;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      if (sb.times === stage.times && sb.order === 0) {
 | 
	
		
			
				|  |  |                          updateStageBills.push({
 | 
	
		
			
				|  |  | -                            id: sb.id, contract_tp, qc_tp, ex_stage_tp1,
 | 
	
		
			
				|  |  | +                            id: sb.id, contract_tp, qc_tp, positive_qc_tp, negative_qc_tp, ex_stage_tp1,
 | 
	
		
			
				|  |  |                          });
 | 
	
		
			
				|  |  |                      } else {
 | 
	
		
			
				|  |  |                          insertStageBills.push({
 | 
	
		
			
				|  |  |                              tid: stage.tid, lid: sb.lid, sid: stage.id, said: this.ctx.session.sessionUser.accountId,
 | 
	
		
			
				|  |  |                              times: stage.times, order: 0,
 | 
	
		
			
				|  |  |                              contract_qty: sb.contract_qty, contract_expr: sb.contract_expr, contract_tp,
 | 
	
		
			
				|  |  | -                            qc_qty: sb.qc_qty, qc_tp,
 | 
	
		
			
				|  |  | +                            qc_qty: sb.qc_qty, qc_tp, qc_minus_qty: sb.qc_minus_qty,
 | 
	
		
			
				|  |  | +                            positive_qc_qty: sb.positive_qc_qty, positive_qc_tp: sb.positive_qc_tp,
 | 
	
		
			
				|  |  | +                            negative_qc_qty: sb.negative_qc_qty, negative_qc_tp: sb.negative_qc_tp,
 | 
	
		
			
				|  |  |                              ex_stage_qty1: sb.ex_stage_qty1, ex_stage_tp1,
 | 
	
		
			
				|  |  |                              postil: sb.postil,
 | 
	
		
			
				|  |  |                          });
 | 
	
	
		
			
				|  | @@ -306,19 +311,23 @@ module.exports = app => {
 | 
	
		
			
				|  |  |                      const end_contract_tp = this.ctx.helper.mul(this.ctx.helper.div(end_contract_qty, activeQty), b.total_price, decimal.tp);
 | 
	
		
			
				|  |  |                      const contract_tp = preSb ? this.ctx.helper.sub(end_contract_tp, preSb.contract_tp) : end_contract_tp;
 | 
	
		
			
				|  |  |                      const qc_tp = this.ctx.helper.mul(b.unit_price, sb.qc_qty, decimal.tp);
 | 
	
		
			
				|  |  | +                    const positive_qc_tp = this.ctx.helper.mul(b.unit_price, sb.positive_qc_qty, decimal.tp);
 | 
	
		
			
				|  |  | +                    const negative_qc_tp = this.ctx.helper.mul(b.unit_price, sb.positive_qc_qty, decimal.tp);
 | 
	
		
			
				|  |  |                      const ex_stage_tp1 = this.ctx.helper.mul(b.unit_price, sb.ex_stage_qty1, decimal.tp);
 | 
	
		
			
				|  |  |                      if (contract_tp == sb.contract_tp && qc_tp === sb.qc_tp && ex_stage_tp1 === sb.ex_stage_tp1) continue;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      if (sb.times === stage.times && sb.order === 0) {
 | 
	
		
			
				|  |  |                          updateStageBills.push({
 | 
	
		
			
				|  |  | -                            id: sb.id, contract_tp, qc_tp, ex_stage_tp1,
 | 
	
		
			
				|  |  | +                            id: sb.id, contract_tp, qc_tp, ex_stage_tp1, positive_qc_tp, negative_qc_tp,
 | 
	
		
			
				|  |  |                          });
 | 
	
		
			
				|  |  |                      } else {
 | 
	
		
			
				|  |  |                          insertStageBills.push({
 | 
	
		
			
				|  |  |                              tid: stage.tid, lid: sb.lid, sid: stage.id, said: this.ctx.session.sessionUser.accountId,
 | 
	
		
			
				|  |  |                              times: stage.times, order: 0,
 | 
	
		
			
				|  |  |                              contract_qty: sb.contract_qty, contract_expr: sb.contract_expr, contract_tp,
 | 
	
		
			
				|  |  | -                            qc_qty: sb.qc_qty, qc_tp,
 | 
	
		
			
				|  |  | +                            qc_qty: sb.qc_qty, qc_tp, qc_minus_qty: sb.qc_minus_qty,
 | 
	
		
			
				|  |  | +                            positive_qc_qty: sb.positive_qc_qty, positive_qc_tp: sb.positive_qc_tp,
 | 
	
		
			
				|  |  | +                            negative_qc_qty: sb.negative_qc_qty, negative_qc_tp: sb.negative_qc_tp,
 | 
	
		
			
				|  |  |                              ex_stage_qty1: sb.ex_stage_qty1, ex_stage_tp1,
 | 
	
		
			
				|  |  |                              postil: sb.postil,
 | 
	
		
			
				|  |  |                          });
 |