const system = require("../../../../system");
const Decimal = require('decimal.js');
/**
 * 附加税算法
 * 注意：1 由于销售方类型不同 所以算法不同 需要对参数验证单独处理
 * 
 * 税率的格式   传去除 %号的数值  比如：
 *   96%,  则这个值就传 "taxCostPriRat"=96 
 */
module.exports.calcInvoice = (valueAddedTax,addTaxRat) => {
  try {
    //参数验证
    verificationParams(valueAddedTax,addTaxRat);
    //附加税
    return calAddTax(valueAddedTax, addTaxRat);
  } catch (error) {
    return system.getResult(-1,`系统错误 错误信息 ${error}`);
  }
}

/**
 * 计算附加税 
 * @param {*} valueAddedTax 
 * @param {*} addTaxRat 
 */
let calAddTax=(valueAddedTax, addTaxRat)=>{
  if (addTaxRat == 0) {
    return 0
  } else {
    return new Decimal(valueAddedTax).mul(addTaxRat).div(100).toFixed(2);
  }
}


/**
 * 校验各种费率 的合法性
 * @param {*} params 
 * params
 */
let verificationParams = (valueAddedTax,addTaxRat) => {
  if(params.addTaxRat > 1){
    system.getResult(-1,`参数错误 销售方类型非法`);
  }
  params.addTaxRat = Number(addTaxRat || 0);
  params.valueAddedTax = Number(valueAddedTax || 0);
}