Kaynağa Gözat

资金模块-解决销售订单转采购单反审核问题

huangx 7 yıl önce
ebeveyn
işleme
b0f5a2e384

+ 2 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -70,6 +70,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     SALEOUT_POST_ERROR(72005,""),
     SALEOUT_UNAUDIT_ERROR(72006,"销售订单已转出货单,无法反审核"),
     SALE_ORDER_HASAUDIT(72003, "存在已审核单据,单据编号:%s"),
+    SALE_EXISTS_PURCHASE(72004, "存在已转的采购单据,单据编号:%s"),
 
     //资金
     PAYBALANCE_OUTNOWBALANCE(74001,"本次核销金额不能大于未核销金额"),
@@ -80,6 +81,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BEFORE_UNAUDIT(74006, "单据:<u>%s</u>未审核,无法反审核"),
     BANK_AMOUNT_NOTENOUGH(74004, "资金账号不足"),
     SUBLEDGER_NOT_EXIS(74005,"来源单据不存在"),
+    CHECK_SETACOUNT_EXIS(74006, "不能删除单据日期小于等于结账期间<u>%s</u>的单据"),
 
 
 

+ 2 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/PurchaseDetail.java

@@ -42,6 +42,8 @@ public class PurchaseDetail extends CommonBaseEntity implements Serializable {
 
     private Integer pd_saledetno;
 
+    private Long pd_saleid;
+
     private Integer pd_sdid;
 
     private String pd_text1;

+ 0 - 66
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/PurchaseDTO.java

@@ -1,66 +0,0 @@
-package com.usoftchina.saas.sale.dto;
-
-import com.usoftchina.saas.base.entity.CommonBaseEntity;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-@Data
-public class PurchaseDTO extends CommonBaseEntity implements Serializable {
-
-    private String pu_code;
-
-    private Date pu_date;
-
-    private Integer pu_vendid;
-
-    private String pu_vendcode;
-
-    private String pu_vendname;
-
-    private Integer pu_buyerid;
-
-    private String pu_buyercode;
-
-    private String pu_buyername;
-
-    private Date pu_delivery;
-
-    private Double pu_taxtotal;
-
-    private Double pu_total;
-
-    private String pu_remark;
-
-    private String pu_totalupper;
-
-    private String pu_printstatus;
-
-    private String pu_printstatuscode;
-
-    private String pu_acceptstatuscode;
-
-    private String pu_acceptstatus;
-
-    private String pu_statuscode;
-
-    private String pu_status;
-
-    private String pu_text1;
-
-    private String pu_text2;
-
-    private String pu_text3;
-
-    private String pu_text4;
-
-    private String pu_text5;
-
-    private String pu_shipaddresscode;
-
-    private String pu_auditman;
-
-    private Date pu_auditdate;
-
-}

+ 0 - 62
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/PurchaseDetailDTO.java

@@ -1,62 +0,0 @@
-package com.usoftchina.saas.sale.dto;
-
-import com.usoftchina.saas.base.entity.CommonBaseEntity;
-import com.usoftchina.saas.document.dto.ProductDTO;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-@Data
-public class PurchaseDetailDTO extends CommonBaseEntity implements Serializable {
-
-    private  Long pd_puid;
-
-    private String pd_code;
-
-    private Integer pd_detno;
-
-    private Long pd_prodid;
-
-    private String pd_prodcode;
-
-    private String pd_unit;
-
-    private Double pd_qty;
-
-    private Double pd_price;
-
-    private Double pd_taxprice;
-
-    private Double pd_total;
-
-    private Double pd_taxrate;
-
-    private Double pd_taxtotal;
-
-    private Double pd_acceptqty;
-
-    private Date pd_delivery;
-
-    private String pd_salecode;
-
-    private Integer pd_saledetno;
-
-    private Integer pd_sdid;
-
-    private String pd_text1;
-
-    private String pd_text2;
-
-    private String pd_text3;
-
-    private String pd_text4;
-
-    private String pd_text5;
-
-    private Double pd_yqty;
-
-    private  String pd_remark;
-
-    private ProductDTO productDTO;
-}

+ 0 - 156
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/PurchaseListDTO.java

@@ -1,156 +0,0 @@
-package com.usoftchina.saas.sale.dto;
-
-
-import com.usoftchina.saas.base.entity.CommonBaseEntity;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * @author: guq
- * @create: 2018-10-10 16:42
- **/
-@Data
-public class PurchaseListDTO extends CommonBaseEntity implements Serializable {
-
-    //主表信息
-    private  Integer pu_id;
-
-    private String pu_code;
-
-    private Date pu_date;
-
-    private Integer pu_vendid;
-
-    private String pu_vendcode;
-
-    private String pu_vendname;
-
-    private Integer pu_buyerid;
-
-    private String pu_buyercode;
-
-    private String pu_buyername;
-
-    private Date pu_delivery;
-
-    private Double pu_taxtotal;
-
-    private Double pu_total;
-
-    private String pu_remark;
-
-    private String pu_totalupper;
-
-    private String pu_printstatus;
-
-    private String pu_printstatuscode;
-
-    private String pu_acceptstatuscode;
-
-    private String pu_acceptstatus;
-
-    private String pu_statuscode;
-
-    private String pu_status;
-
-    private String pu_text1;
-
-    private String pu_text2;
-
-    private String pu_text3;
-
-    private String pu_text4;
-
-    private String pu_text5;
-
-    private String pu_shipaddresscode;
-
-    private Date pu_auditdate;
-
-    private String pu_auditman;
-
-    //从表字段
-    private Long pd_id;
-
-    private  Long pd_puid;
-
-    private String pd_code;
-
-    private Integer pd_detno;
-
-    private Integer pd_prodid;
-
-    private String pd_prodcode;
-
-    private String pd_unit;
-
-    private Double pd_qty;
-
-    private Double pd_price;
-
-    private Double pd_taxprice;
-
-    private Double pd_total;
-
-    private Double pd_taxrate;
-
-    private Double pd_taxtotal;
-
-    private Double pd_acceptqty;
-
-    private Date pd_delivery;
-
-    private String pd_salecode;
-
-    private Integer pd_saledetno;
-
-    private Integer pd_sdid;
-
-    private String pd_text1;
-
-    private String pd_text2;
-
-    private String pd_text3;
-
-    private String pd_text4;
-
-    private String pd_text5;
-
-    private Double pd_yqty;
-
-    private String pd_remark;
-
-    private String pd_ordercode;
-
-    //private ProductDTO productDTO;
-    private Long pr_id;
-    private String pr_code;
-    private String pr_detail;
-    private String pr_spec;
-    private String pr_unit;
-    private String pr_kind;
-    private String pr_orispeccode;
-    private long pr_whid;
-    private String pr_whcode;
-    private String pr_whname;
-    private long pr_zxbzs;
-    private long pr_leadtime;
-    private String pr_brand;
-    private String pr_standardprice;
-    private String pr_purcprice;
-    private String pr_saleprice;
-    private long pr_vendid;
-    private String pr_vendname;
-    private String pr_vendcode;
-    private Date pr_docdate;
-    private long pr_recordmanid;
-    private String pr_recordman;
-    private String pr_status;
-    private String pr_statuscode;
-    private String pr_text1;
-    private String pr_text2;
-    private String pr_text3;
-    private String pr_text4;
-}

+ 6 - 4
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/mapper/SaleMapper.java

@@ -2,8 +2,8 @@ package com.usoftchina.saas.sale.mapper;
 
 import com.usoftchina.saas.base.mapper.CommonBaseMapper;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
-import com.usoftchina.saas.sale.dto.PurchaseDTO;
-import com.usoftchina.saas.sale.dto.PurchaseDetailDTO;
+import com.usoftchina.saas.purchase.po.Purchase;
+import com.usoftchina.saas.purchase.po.PurchaseDetail;
 import com.usoftchina.saas.sale.po.Sale;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
@@ -45,9 +45,11 @@ public interface SaleMapper extends CommonBaseMapper<Sale> {
 
     void updateCreator(@Param("userId") Long userId, @Param("userName") String userName, @Param("id") Long id);
 
-    void turnPurchase(PurchaseDTO purchase);
+    void turnPurchase(Purchase purchase);
 
-    void turnPurchaseDetail(List<PurchaseDetailDTO> list);
+    void turnPurchaseDetail(List<PurchaseDetail> list);
 
     Integer selectPurchaseId(@Param("code") String code,@Param("companyid") Long companyid);
+
+    String checkIsTurnPurchase(@Param("id") Long id,@Param("companyid") Long companyid);
 }

+ 38 - 24
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java

@@ -19,6 +19,9 @@ import com.usoftchina.saas.document.entities.Product;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.purchase.po.Purchase;
+import com.usoftchina.saas.purchase.po.PurchaseDetail;
+import com.usoftchina.saas.purchase.po.PurchaseList;
 import com.usoftchina.saas.sale.dto.*;
 import com.usoftchina.saas.sale.mapper.*;
 import com.usoftchina.saas.sale.po.Sale;
@@ -29,6 +32,7 @@ import com.usoftchina.saas.sale.service.SaleService;
 import com.usoftchina.saas.storage.po.ProdIODetail;
 import com.usoftchina.saas.storage.po.ProdInOut;
 import com.usoftchina.saas.utils.BeanMapper;
+import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -285,6 +289,12 @@ public class SaleServiceImpl implements SaleService{
         if (num > 0) {
             throw new BizException(BizExceptionCode.SALEOUT_UNAUDIT_ERROR);
         }
+        //检查是否转采购订单
+        String purchaseCode = saleMapper.checkIsTurnPurchase(id,BaseContextHolder.getCompanyId());
+        if (purchaseCode != null && purchaseCode.length()>0){
+            throw new BizException(BizExceptionCode.SALE_EXISTS_PURCHASE.getCode(),
+                    String.format(BizExceptionCode.SALE_EXISTS_PURCHASE.getMessage(),purchaseCode));
+        }
         singleUnAudit(id);
     }
 
@@ -529,8 +539,15 @@ public class SaleServiceImpl implements SaleService{
         Sale sale = saleMapper.selectByPrimaryKey(id);
         List<SaleList> dateilList = saleListMapper.selectSaleListByCondition("sa_id="+id,BaseContextHolder.getCompanyId());
 
-        PurchaseDTO purchase = new PurchaseDTO();
-        List<PurchaseDetailDTO> listPurchaseDetail = new ArrayList<PurchaseDetailDTO>();
+        //判断是否已转采购单
+        String purchaseCode = saleMapper.checkIsTurnPurchase(id,BaseContextHolder.getCompanyId());
+        if (purchaseCode != null && purchaseCode.length()>0){
+            throw new BizException(BizExceptionCode.SALE_EXISTS_PURCHASE.getCode(),
+                    String.format(BizExceptionCode.SALE_EXISTS_PURCHASE.getMessage(),purchaseCode));
+        }
+
+        Purchase purchase = new Purchase();
+        List<PurchaseDetail> listPurchaseDetail = new ArrayList<PurchaseDetail>();
 
         //销售主表转采购主表
         Result<String> result = maxnumberService.getMaxnumber(BillCodeSeq.PURCHASE.getCaller(),false);
@@ -545,33 +562,30 @@ public class SaleServiceImpl implements SaleService{
 
         Long purchaseId = purchase.getId();
         for (SaleList detail : dateilList){
-            PurchaseDetailDTO purchaseDetailDTO = new PurchaseDetailDTO();
+            PurchaseDetail purchaseDetail = new PurchaseDetail();
             Double taxPrice = detail.getPr_purcprice()==null?new Double(0):Double.valueOf(detail.getPr_purcprice());
             Double taxrate = detail.getSd_taxrate()==null?new Double(0):detail.getSd_taxrate();
             Double qty = detail.getSd_qty()==null?new Double(0):detail.getSd_qty();
-            purchaseDetailDTO.setPd_prodid(Long.valueOf(String.valueOf(detail.getSd_prodid())));
-            purchaseDetailDTO.setPd_prodcode(detail.getSd_prodcode());
-            purchaseDetailDTO.setPd_detno(detail.getSd_detno());
-            purchaseDetailDTO.setPd_qty(detail.getSd_qty());
-            purchaseDetailDTO.setPd_price(taxPrice/(1+taxrate));
-            purchaseDetailDTO.setPd_salecode(sale.getSa_code());
-            purchaseDetailDTO.setPd_saledetno(detail.getSd_detno());
-            purchaseDetailDTO.setPd_taxrate(taxrate);
-            purchaseDetailDTO.setPd_taxprice(taxPrice);
-            purchaseDetailDTO.setPd_taxtotal(taxPrice*qty);
-            purchaseDetailDTO.setCompanyId(BaseContextHolder.getCompanyId());
-            purchaseDetailDTO.setCreatorId(BaseContextHolder.getUserId());
-            purchaseDetailDTO.setCreateTime(new Date());
-            purchaseDetailDTO.setCreatorName(BaseContextHolder.getUserName());
-            purchaseDetailDTO.setPd_puid(purchaseId);
-            purchaseDetailDTO.setPd_code(result.getData());
-            listPurchaseDetail.add(purchaseDetailDTO);
+            purchaseDetail.setPd_prodid(Long.valueOf(String.valueOf(detail.getSd_prodid())));
+            purchaseDetail.setPd_prodcode(detail.getSd_prodcode());
+            purchaseDetail.setPd_detno(detail.getSd_detno());
+            purchaseDetail.setPd_qty(detail.getSd_qty());
+            purchaseDetail.setPd_price(taxPrice/(1+taxrate));
+            purchaseDetail.setPd_salecode(sale.getSa_code());
+            purchaseDetail.setPd_saledetno(detail.getSd_detno());
+            purchaseDetail.setPd_saleid(sale.getId());
+            purchaseDetail.setPd_taxrate(taxrate);
+            purchaseDetail.setPd_taxprice(taxPrice);
+            purchaseDetail.setPd_taxtotal(taxPrice*qty);
+            purchaseDetail.setCompanyId(BaseContextHolder.getCompanyId());
+            purchaseDetail.setCreatorId(BaseContextHolder.getUserId());
+            purchaseDetail.setCreateTime(new Date());
+            purchaseDetail.setCreatorName(BaseContextHolder.getUserName());
+            purchaseDetail.setPd_puid(purchaseId);
+            purchaseDetail.setPd_code(result.getData());
+            listPurchaseDetail.add(purchaseDetail);
         }
-
         saleMapper.turnPurchaseDetail(listPurchaseDetail);
-
-
-
         DocBaseDTO baseDTO = new DocBaseDTO();
         baseDTO.setCode(result.getData());
         baseDTO.setId(Long.valueOf(String.valueOf(purchaseId)));

+ 10 - 4
applications/sale/sale-server/src/main/resources/mapper/SaleMapper.xml

@@ -421,11 +421,17 @@
   <update id="updateCreator">
     update sale set creatorId = #{userId} , creatorName=#{userName} where sa_id=#{id}
   </update>
-  
+
+  <select id="checkIsTurnPurchase"  resultType="java.lang.String">
+    select distinct pu_code from purchasedetail left join purchase on pd_puid=pu_id and
+    purchasedetail.companyid = purchase.companyid
+    where pd_saleid = #{id}
+    and purchasedetail.companyid= #{companyid}
+  </select>
   
   
   <!-- 销售订单转采购单-->
-  <insert id="turnPurchase" parameterType="com.usoftchina.saas.sale.dto.PurchaseDTO" >
+  <insert id="turnPurchase" parameterType="com.usoftchina.saas.purchase.po.Purchase" >
     <selectKey resultType="java.lang.Long" keyProperty="id">
       SELECT LAST_INSERT_ID() AS ID
     </selectKey>
@@ -633,7 +639,7 @@
     PD_DETNO, PD_PRODID, PD_PRODCODE,
     PD_UNIT, PD_QTY, PD_PRICE,PD_TAXPRICE,
     PD_TOTAL,PD_TAXRATE, PD_TAXTOTAL, PD_ACCEPTQTY,
-    PD_DELIVERY, PD_SALECODE, PD_SALEDETNO,
+    PD_DELIVERY, PD_SALECODE, PD_SALEDETNO,PD_SALEID,
     PD_SDID, companyId, updaterId,
     updateTime, pd_text1, pd_text2,
     pd_text3, pd_text4, pd_text5,
@@ -645,7 +651,7 @@
       #{item.pd_detno,jdbcType=INTEGER}, #{item.pd_prodid,jdbcType=INTEGER}, #{item.pd_prodcode,jdbcType=VARCHAR},
       #{item.pd_unit,jdbcType=VARCHAR}, #{item.pd_qty,jdbcType=DOUBLE}, #{item.pd_price,jdbcType=DOUBLE},#{item.pd_taxprice,jdbcType=DOUBLE},
       #{item.pd_total,jdbcType=DOUBLE},#{item.pd_taxrate,jdbcType=DOUBLE}, #{item.pd_taxtotal,jdbcType=DOUBLE}, #{item.pd_acceptqty,jdbcType=DOUBLE},
-      #{item.pd_delivery,jdbcType=DOUBLE}, #{item.pd_salecode,jdbcType=VARCHAR}, #{item.pd_saledetno,jdbcType=INTEGER},
+      #{item.pd_delivery,jdbcType=DOUBLE}, #{item.pd_salecode,jdbcType=VARCHAR}, #{item.pd_saledetno,jdbcType=INTEGER},#{item.pd_saleid,jdbcType=INTEGER},
       #{item.pd_sdid,jdbcType=INTEGER}, #{item.companyId,jdbcType=INTEGER}, #{item.updaterId,jdbcType=INTEGER},
       #{item.updateTime,jdbcType=TIMESTAMP}, #{item.pd_text1,jdbcType=VARCHAR}, #{item.pd_text2,jdbcType=VARCHAR},
       #{item.pd_text3,jdbcType=VARCHAR}, #{item.pd_text4,jdbcType=VARCHAR}, #{item.pd_text5,jdbcType=VARCHAR},