BigDecimal 与 doubleValue 的使用 ,以及四舍五入
发布时间:2020-12-14 05:13:00 所属栏目:大数据 来源:网络整理
导读:/** * 保存发票信息 * @param controller * @return * @throws ParseException * @throws ActiveRecordException */ @Before(Tx. class ) public boolean addInvoice(QhyfController controller) throws Exception{ BizInvoiceInfo bizInvoiceInfo = new Biz
/** * 保存发票信息 * @param controller * @return * @throws ParseException * @throws ActiveRecordException */ @Before(Tx.class) public boolean addInvoice(QhyfController controller) throws Exception{ BizInvoiceInfo bizInvoiceInfo = new BizInvoiceInfo(); //参数获取 String uuid = controller.getPara("uuid"); boolean isTrue = false; String payId = controller.getPara("pay"); StringTools.isNotBlank(payId); if (this.maxHisId(payId)==0) { //履历表没有数据时,更新前,保存一次履历 saveHistoryInfo(payId,controller); } String invoiceNo = controller.getPara("invoiceNo"); String checkResult = controller.getPara("checkResult"); String invoiceMemo = controller.getPara("invoiceMemo"); String originalInvoiceNo = controller.getPara("originalInvoiceNo"); String invoiceName = controller.getPara("invoiceName"); BigDecimal invoiceNoTaxAmount =null; String checkCode = controller.getPara("checkCode"); String invoiceType = controller.getPara("invoiceType"); String invoiceCode = controller.getPara("invoiceCode"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //需求变更,菜单修改发票信息,可不选开票日期 2016/09/24 黎旭 START Date invoiceDate =null; if(StringUtils.notBlank(controller.getPara("invoiceDate"))){ invoiceDate = format.parse(controller.getPara("invoiceDate")); } // Date invoiceDate = format.parse(controller.getPara("invoiceDate")); //需求变更,菜单修改发票信息,可不选开票日期 2016/09/24 黎旭 END //需求变更,新增,修改发票信息发票金额和应收账款金额可以为空, 2016/09/26 刘果 START BigDecimal invoiceAmount = null; BigDecimal accountReceivable = null; String invoiceAmountTmp = controller.getPara("invoiceAmount"); String accountReceivableTmp = controller.getPara("accountReceivable"); String invoiceNoTaxAmountTmp = controller.getPara("invoiceNoTaxAmount"); if (StringUtils.notBlank(invoiceAmountTmp)) { // 发票金额不为空 invoiceAmount = new BigDecimal(invoiceAmountTmp.replace(",","")); } else { // } if (StringUtils.notBlank(accountReceivableTmp)) { // 应收账款金额不为空 accountReceivable = new BigDecimal(accountReceivableTmp.replace(","")); } else { // } if (StringUtils.notBlank(invoiceNoTaxAmountTmp)) { // 应收账款金额不为空 invoiceNoTaxAmount = new BigDecimal(invoiceNoTaxAmountTmp.replace(","")); } else { // } // 发票金额、应收账款金额 不为空时 if (invoiceAmount != null && accountReceivable != null ) { // 发票应收账款金额 accountReceivable 四舍五入 double resultInvoiceAccountReceivableB = accountReceivable.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); // 获取发票金额 invoiceAmount 四舍五入 double resultInvoiceAmountB = invoiceAmount.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); List<String> para = new ArrayList<String>(); //根据发票号和付款确认书编号查询当前发票已抵扣金额合计 para.add(invoiceNo); para.add(payId); String sql="CALL invoice_deduction_amount(?,?) "; // 执行SQL Record record = Db.findFirst(sql,para.toArray()); // 当前发票已抵扣金额 BigDecimal invoiceAmountCall = null; // 获取发票已抵扣金额 if(record!=null){ invoiceAmountCall = record.getBigDecimal("accountReceivable"); } // 发票剩余可用抵扣金额 double deductibleAmountAvailable = resultInvoiceAmountB ; // 发票已抵扣金额不为空 if (invoiceAmountCall != null ) { // 发票剩余可用抵扣金额 = 发票金额 - 当前发票已抵扣金额 deductibleAmountAvailable = resultInvoiceAmountB - invoiceAmountCall.doubleValue(); } // 该发票的应收账款金额不能大于发票剩余可用抵扣金额(已抵扣金额【%s】) AssertUtils.isTrue(resultInvoiceAccountReceivableB <= deductibleAmountAvailable,AlertUtils.getErrMsgWithCode("ME414E015",invoiceAmountCall == null ? 0 : invoiceAmountCall.doubleValue())); } if (!StringUtils.isBlank(uuid)) { //更新 StringTools.isNotBlank(uuid); if(!originalInvoiceNo.equals(invoiceNo)){ //查询是否存在相同发票 Record sameInvoiceRecord = null; String sameInvoiceSql = String.format( " SELECT" + " a.uuid,a.invoice_no" + " FROM %s a" + " WHERE a.sys_status = %s AND" + " a.invoice_no = ? AND" + " a.pay_id = ? ",BizInvoiceInfo.dao.getTable().getName(),BlConstant.SYS_STATUS_VALUE); sameInvoiceRecord = Db.findFirst(sameInvoiceSql,invoiceNo,payId); if(sameInvoiceRecord != null){ AssertUtils.isNull(sameInvoiceRecord.getStr("uuid"),sameInvoiceRecord.getStr("invoiceNo")+"发票已存在"); } } bizInvoiceInfo.set("uuid",uuid); //设置发票编号 bizInvoiceInfo.set("invoiceNo",invoiceNo); //设置发票名称 bizInvoiceInfo.set("invoiceName",invoiceName); //设置开票日期 bizInvoiceInfo.set("invoiceDate",invoiceDate); bizInvoiceInfo.set("checkResult",checkResult); bizInvoiceInfo.set("invoiceMemo",invoiceMemo); //设置发票金额 bizInvoiceInfo.set("invoiceAmount",invoiceAmount); bizInvoiceInfo.set("invoiceNoTaxAmount",invoiceNoTaxAmount); if(StringUtils.notBlank(checkCode)) bizInvoiceInfo.set("checkCode",checkCode); bizInvoiceInfo.set("invoiceType",invoiceType); bizInvoiceInfo.set("invoiceCode",invoiceCode); //设置应收账款金额 bizInvoiceInfo.set("accountReceivable",accountReceivable); isTrue = controller.merge(bizInvoiceInfo.getTable().getName(),bizInvoiceInfo); controller.setSessionAttr("historyFlag",true); } else { //查询是否存在相同发票 Record sameInvoiceRecord = null; String sameInvoiceSql = String.format( " SELECT" + " a.uuid,a.invoice_no" + " FROM %s a" + " WHERE a.sys_status = %s AND" + " a.invoice_no = ? AND" + " a.pay_id = ? ",BlConstant.SYS_STATUS_VALUE); sameInvoiceRecord = Db.findFirst(sameInvoiceSql,payId); if(sameInvoiceRecord != null){ AssertUtils.isNull(sameInvoiceRecord.getStr("uuid"),sameInvoiceRecord.getStr("invoiceNo")+"发票已存在"); } //新增 //参数设置 bizInvoiceInfo.set("payId",payId); //设置发票编号 bizInvoiceInfo.set("invoiceNo",invoiceDate); //设置发票金额 bizInvoiceInfo.set("invoiceAmount",invoiceAmount); bizInvoiceInfo.set("checkResult",invoiceMemo); //设置应收账款金额 bizInvoiceInfo.set("accountReceivable",accountReceivable); bizInvoiceInfo.set("invoiceNoTaxAmount",invoiceCode); isTrue = controller.merge(BizInvoiceInfo.dao.getTable().getName(),true); } return isTrue; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |