diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java index a2c9b39c6..36e0f8afc 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java @@ -34,7 +34,7 @@ public interface EmisSettleSubBillMapper extends BaseMapper public EmisSettleSubBill selectEmisSettleSubBillById(Long id); - public EmisSettleSubBill selectSettleSubBillByBillCode(String billCode); + public List selectSettleSubBillListByBillCode(String billCode); public EmisSettleSubBill selectSettleSubBillBySubBillNo(String subBillNo); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index a8c2f7165..fa6b3ecb6 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -1054,25 +1054,36 @@ public class EmisBaseService { public void redoGenerateBill(String billCode) throws EmisBizError{ log.error("===>Start 运单出账:"+billCode); - // 已确认的不允许出账 - EmisSettleSubBill querySubBill=getSettleSubBillByBillCode(billCode); - if(querySubBill!=null) { - if (!"0".equals(querySubBill.getBlConfirmCenter())) { + EmisSettleSubBill oldBill=null; + boolean isNewBill=true; + + // 已确认的不允许出账 + List oldSubBillList=getSettleSubBillListByBillCode(billCode); + if(oldSubBillList!=null ) { + if(oldSubBillList.size()>1 ) { + log.error("===>账已拆分不允许出账!"); + return; + } + + oldBill = oldSubBillList.get(0); + isNewBill=false; + if (!"0".equals(oldBill.getBlConfirmCenter())) { log.error("===>账单财务确认不允许出账!"); return; -// throw new EmisBizError(EmisBizErrorType.FAIL, "账单财务确认不允许出账"); } } - // 删除已出账单 - emisSettleSubBillMapper.deleteEmisSettleSubBillByBillCode(billCode); - emisSettleSubBillFeeitemMapper.deleteEmisSettleSubBillFeeitemByBillCode(billCode); - // 重新出账 EmisWaybill dt=emisWaybillMapper.selectEmisWaybillByBillCode(billCode); - // 生成分账单明细 - EmisSettleSubBill emisSettleSubBill=new EmisSettleSubBill(); + // 生成分账单明细,判断是否是新账单 + EmisSettleSubBill emisSettleSubBill=new EmisSettleSubBill(); + if(oldBill!=null){ +// emisSettleSubBill.setId(oldBill.getId()); + // 逻辑删除原账单重出账单 + emisSettleSubBillMapper.deleteEmisSettleSubBillByBillCode(billCode); + } + emisSettleSubBill.setBillCode(dt.getBillCode()); emisSettleSubBill.setBillNo(dt.getBillCode()); emisSettleSubBill.setBillDate(new Date()); @@ -1108,26 +1119,21 @@ public class EmisBaseService { emisSettleSubBill.setPayee(dt.getPayee()); emisSettleSubBill.setSalesmen(dt.getSalesmen()); emisSettleSubBill.setBlSpecialQuote(dt.getBlSpecialQuote()); -// emisSettleSubBill.setBlSensitive(); - emisSettleSubBillMapper.insertEmisSettleSubBill(emisSettleSubBill); + // 设置初始账单未确认 + emisSettleSubBill.setBlConfirmSite("0"); + emisSettleSubBill.setBlConfirmCenter("0"); + + emisSettleSubBillMapper.insertEmisSettleSubBill(emisSettleSubBill); // 如果是一口价,自动生成一条运费明细,其他则根据实际来计算 // 生成费用明细 if(dt.getCalcFeeType().equals("3")) { - -// EmisSettleSubBillFeeitem emisSettleSubBillFeeitem =new EmisSettleSubBillFeeitem(); -// emisSettleSubBillFeeitem.setSubBillNo(dt.getBillCode()); -// emisSettleSubBillFeeitem.setBillCode(dt.getBillCode()); -// emisSettleSubBillFeeitem.setBillFee(dt.getFreight()); -// emisSettleSubBillFeeitem.setCurrency(dt.getCurrency()); -// emisSettleSubBillFeeitem.setFeeCode("1001"); -// emisSettleSubBillFeeitem.setFeeName("运输费"); -// emisSettleSubBillFeeitem.setOrigFee(dt.getFreight()); -// emisSettleSubBillFeeitem.setRemark("一口价运输费"); -// emisSettleSubBillFeeitemMapper.insertEmisSettleSubBillFeeitem(emisSettleSubBillFeeitem); - }else{ + // 逻辑删除原来的费用明细,重新插入明细 + emisSettleSubBillFeeitemMapper.deleteEmisSettleSubBillFeeitemByBillCode(billCode); + + // 产生新的费用明细 List feeitemList = emisWaybillFeeitemMapper.selectFeeitemListByWaybillId(dt.getId()); for(EmisWaybillFeeitem feeitem:feeitemList){ EmisSettleSubBillFeeitem emisSettleSubBillFeeitem =new EmisSettleSubBillFeeitem(); @@ -1217,8 +1223,8 @@ public class EmisBaseService { * @param billCode * @return */ - public EmisSettleSubBill getSettleSubBillByBillCode(String billCode){ - return emisSettleSubBillMapper.selectSettleSubBillByBillCode(billCode); + public List getSettleSubBillListByBillCode(String billCode){ + return emisSettleSubBillMapper.selectSettleSubBillListByBillCode(billCode); } /** @@ -2554,8 +2560,15 @@ public class EmisBaseService { public boolean isBillLock(EmisWaybill emisWaybill) { // 财务已确认账单不允许修改 - EmisSettleSubBill emisSettleSubBill=getSettleSubBillByBillCode(emisWaybill.getBillCode()); - if(emisSettleSubBill!=null){ + List emisSettleSubBillList=getSettleSubBillListByBillCode(emisWaybill.getBillCode()); + if(emisSettleSubBillList!=null ){ + + if(emisSettleSubBillList.size()>1) { + // 已分单不允许修改 + return true; + } + + EmisSettleSubBill emisSettleSubBill= emisSettleSubBillList.get(0); if("1".equals(emisSettleSubBill.getBlConfirmCenter()) ){ // 财务确认出账明细锁账 return true; @@ -2563,7 +2576,7 @@ public class EmisBaseService { // 财务或业务确认不出账不允许修改 if("2".equals(emisSettleSubBill.getBlConfirmCenter()) - || "2".equals(emisSettleSubBill.getBlConfirmSite()) + || "2".equals(emisSettleSubBill.getBlConfirmSite()) ){ // 财务确认出账明细锁账 return true; diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillAjustApplyServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillAjustApplyServiceImpl.java index 6d24eaa45..f7074216c 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillAjustApplyServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillAjustApplyServiceImpl.java @@ -179,11 +179,20 @@ public class EmisWaybillAjustApplyServiceImpl extends EmisBaseService implements emisWaybillAjustApply.setCenterConfirmManCode(getCurrentUser().getEmpCode()); // 获取账单状态,若账单处于非未确认状态,不允许审核 - EmisSettleSubBill emisSettleSubBill=getSettleSubBillByBillCode(emisWaybillAjustApply.getBillCode()); - if("1".equals(emisSettleSubBill.getBlConfirmCenter())){ - throw new EmisBizError(EmisBizErrorType.FAIL,"已确认账单!"); + List emisSettleSubBillList=getSettleSubBillListByBillCode(emisWaybillAjustApply.getBillCode()); + if(emisSettleSubBillList!=null && emisSettleSubBillList.size()>1){ + throw new EmisBizError(EmisBizErrorType.FAIL,"账单已拆分,请先删除子账单!"); } + + EmisSettleSubBill emisSettleSubBill=emisSettleSubBillList.get(0); + if("1".equals(emisSettleSubBill.getBlConfirmCenter())){ + throw new EmisBizError(EmisBizErrorType.FAIL,"财务已确认账单,不允许审核,请先取消财务确认!"); + } + + + + // 运单更新 JSONObject jsonObject = JSONObject.parseObject(emisWaybillAjustApply.getJsonData()); JSONObject newValueJObj=jsonObject.getJSONObject("newValue"); diff --git a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml index dd4064c44..3330273a5 100644 --- a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml @@ -510,17 +510,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where a.id = #{id} - select id, bill_no, parent_bill_no, settle_bill_no, bill_code, bill_date, bill_fee, currency, settle_type, bl_split, bl_merge, bill_month, cust_no, cust_name, customer_code, customer_name, payee, salesmen, bl_special_quote, bl_sensitive, bl_confirm_center, confirm_center_date, confirm_center_note, confirm_center_man_code, confirm_center_code, bl_confirm_site, confirm_site_date, confirm_site_man_code, confirm_site_note, confirm_site_code, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_settle_sub_bill a - where a.del_flag='0' and a.bill_code = #{billCode} and a.parent_bill_no='0' limit 1 + where a.del_flag='0' and a.bill_code = #{billCode} @@ -653,7 +653,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" create_site = #{createSite}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0' @@ -666,7 +666,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0' @@ -679,7 +679,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0' @@ -693,7 +693,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_site = #{updateSite}, - where id in + where del_flag='0' and id in #{id} @@ -710,7 +710,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0' @@ -724,7 +724,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0' @@ -739,7 +739,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0' @@ -754,7 +754,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0' @@ -769,7 +769,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0' @@ -785,7 +785,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0' @@ -801,7 +801,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0' @@ -817,7 +817,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, update_site = #{updateSite}, - where id = #{id} + where id = #{id} and del_flag='0'