Jelajahi Sumber

【多币别】【供应商、客户放大镜新增币别、汇率;采购验收验退、销售出货退货、采购单新增币别必须与来源单据一致限制;采购明细表、销售明细表、销售利润表、毛利润分析表、出入库明细表、核销明细表、应付/应收总账等报表新增币别字段】【后端处理】

rainco 7 tahun lalu
induk
melakukan
366043d668
30 mengubah file dengan 147 tambahan dan 349 penghapusan
  1. 1 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 5 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/CustomerList.java
  3. 6 2
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/VendorList.java
  4. 5 1
      applications/document/document-server/src/main/resources/mapper/CustomerListMapper.xml
  5. 4 1
      applications/document/document-server/src/main/resources/mapper/VendorMapper.xml
  6. 12 110
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/AccountDetailsView.java
  7. 8 110
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Custmonth.java
  8. 9 110
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Vendmonth.java
  9. 2 0
      applications/money/money-server/src/main/resources/mapper/AccountDetailsViewMapper.xml
  10. 2 1
      applications/money/money-server/src/main/resources/mapper/CustmonthMapper.xml
  11. 10 8
      applications/money/money-server/src/main/resources/mapper/ProfitdetailMapper.xml
  12. 2 1
      applications/money/money-server/src/main/resources/mapper/VendmonthMapper.xml
  13. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/ProdInOutMapper.java
  14. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java
  15. 4 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/report/PurchaseReportDetail.java
  16. 10 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  17. 5 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  18. 3 0
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutMapper.xml
  19. 4 0
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml
  20. 2 0
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseReportMapper.xml
  21. 4 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/PurchaseDTO.java
  22. 2 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/mapper/ProdInOutMapper.java
  23. 4 2
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/SaleList.java
  24. 4 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SaleProfitView.java
  25. 7 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  26. 5 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  27. 5 0
      applications/sale/sale-server/src/main/resources/mapper/ProdInOutMapper.xml
  28. 3 1
      applications/sale/sale-server/src/main/resources/mapper/SaleListMapper.xml
  29. 13 0
      applications/sale/sale-server/src/main/resources/mapper/SaleMapper.xml
  30. 2 0
      applications/sale/sale-server/src/main/resources/mapper/SaleProfitViewMapper.xml

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

@@ -72,6 +72,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     CUSTOMER_ISCLOSE(79507, "客户资料已关闭"),
     REQUIREDFIELD_NULL(79508,"存在必填字段为空"),
     USER_EXIST(79509, ""),
+    CURRENCY_VALID(79510, "币别与源单据不一致不允许修改"),
 
     //采购 70000-71999
     PURCCHECKIN_POST_ERROR(70000,""),

+ 5 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/CustomerList.java

@@ -62,6 +62,11 @@ public class CustomerList extends CommonBaseEntity{
     private Double cu_preamount;
 
     private String cu_remark;
+
+    private String cu_currency;
+
+    //currencys
+    private Double cr_rate;
 //customeraddress
 
     private Long ca_cuid;

+ 6 - 2
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/VendorList.java

@@ -106,6 +106,12 @@ public class VendorList implements Serializable {
 
     private String ve_address;
 
+    private String ve_currency;
+
+    //currencys
+
+    private Double cr_rate;
+
     /* 从表字段 */
 
     private Integer vc_veid;
@@ -132,6 +138,4 @@ public class VendorList implements Serializable {
 
     private String vc_default;
 
-    private String ve_currency;
-
 }

+ 5 - 1
applications/document/document-server/src/main/resources/mapper/CustomerListMapper.xml

@@ -22,6 +22,7 @@
     <result column="cu_leftamount" jdbcType="DOUBLE" property="cu_leftamount" />
     <result column="cu_recamount" jdbcType="DOUBLE" property="cu_recamount" />
     <result column="cu_preamount" jdbcType="DOUBLE" property="cu_preamount" />
+    <result column="cu_currency" jdbcType="VARCHAR" property="cu_currency" />
     <result column="ca_cuid" jdbcType="INTEGER" property="ca_cuid" />
     <result column="ca_detno" jdbcType="INTEGER" property="ca_detno" />
     <result column="ca_person" jdbcType="VARCHAR" property="ca_person" />
@@ -38,6 +39,7 @@
     <result column="updaterName" property="updaterName" jdbcType="VARCHAR" />
     <result column="createTime" property="createTime" jdbcType="TIMESTAMP"/>
     <result column="cu_remark" property="cu_remark" jdbcType="VARCHAR"/>
+    <result column="cr_rate" property="cr_rate" jdbcType="DOUBLE"/>
   </resultMap>
 
 
@@ -55,7 +57,9 @@
   </select>
 
   <select id="selectDbFind" resultMap="BaseResultMap">
-    SELECT * FROM CUSTOMER LEFT JOIN CUSTOMERADDRESS ON CU_ID=CA_CUID AND CUSTOMERADDRESS.CA_DEFAULT=1
+    SELECT * FROM CUSTOMER
+    LEFT JOIN CUSTOMERADDRESS ON CU_ID=CA_CUID AND CUSTOMERADDRESS.CA_DEFAULT=1
+    left join currencys on cr_name = cu_currency and currencys.companyid = CUSTOMER.companyid
     <where>
       <if test="condition != null">
         ${condition}

+ 4 - 1
applications/document/document-server/src/main/resources/mapper/VendorMapper.xml

@@ -99,10 +99,13 @@
         <result column="vc_text5" property="vc_text5" jdbcType="VARCHAR" />
         <result column="vc_default" property="vc_default" jdbcType="VARCHAR" />
         <result column="ve_currency" property="ve_currency" jdbcType="VARCHAR" />
+        <result column="cr_rate" property="cr_rate" jdbcType="DOUBLE" />
     </resultMap>
 
     <select id="getListDataByCondition" resultMap="VendorListResultMapper">
-        SELECT * FROM VENDOR LEFT JOIN VENDORCONTACT ON VE_ID = VC_VEID and vc_default = 1
+        SELECT * FROM VENDOR
+        LEFT JOIN VENDORCONTACT ON VE_ID = VC_VEID and vc_default = 1
+        left join currencys on cr_name = ve_currency and currencys.companyid = VENDOR.companyid
         <where>
             <if test="condition!=null">
                 ${condition}

+ 12 - 110
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/AccountDetailsView.java

@@ -1,14 +1,18 @@
 package com.usoftchina.saas.money.po;
 
-import java.util.Date;
+import lombok.Data;
 
+import java.util.Date;
+@Data
 public class AccountDetailsView {
     private String sl_code;
 
     private String sl_kind;
 
     private String ve_name;
+
     private String cu_name;
+
     private Double sl_amount;
 
     private Integer pb_id;
@@ -18,121 +22,19 @@ public class AccountDetailsView {
     private String pb_code;
 
     private Double total;
-    private Date date;
-    private Long companyId;
-    private Double sl_orderamount;
-    private Double pbd_nowbalance;
-    private Date pb_date;
-
-    public Double getPbd_nowbalance() {
-        return pbd_nowbalance;
-    }
-
-    public void setPbd_nowbalance(Double pbd_nowbalance) {
-        this.pbd_nowbalance = pbd_nowbalance;
-    }
-
-    public Date getPb_date() {
-        return pb_date;
-    }
-
-    public void setPb_date(Date pb_date) {
-        this.pb_date = pb_date;
-    }
-
-    public Double getSl_orderamount() {
-        return sl_orderamount;
-    }
-
-    public void setSl_orderamount(Double sl_orderamount) {
-        this.sl_orderamount = sl_orderamount;
-    }
-
-    public String getCu_name() {
-        return cu_name;
-    }
-
-    public void setCu_name(String cu_name) {
-        this.cu_name = cu_name;
-    }
 
-    public Long getCompanyId() {
-        return companyId;
-    }
-
-    public void setCompanyId(Long companyId) {
-        this.companyId = companyId;
-    }
-
-    public Date getDate() {
-        return date;
-    }
-
-    public void setDate(Date date) {
-        this.date = date;
-    }
-
-    public String getSl_code() {
-        return sl_code;
-    }
-
-    public void setSl_code(String sl_code) {
-        this.sl_code = sl_code;
-    }
-
-    public String getSl_kind() {
-        return sl_kind;
-    }
-
-    public void setSl_kind(String sl_kind) {
-        this.sl_kind = sl_kind;
-    }
-
-    public String getVe_name() {
-        return ve_name;
-    }
-
-    public void setVe_name(String ve_name) {
-        this.ve_name = ve_name;
-    }
-
-    public Double getSl_amount() {
-        return sl_amount;
-    }
-
-    public void setSl_amount(Double sl_amount) {
-        this.sl_amount = sl_amount;
-    }
-
-    public Integer getPb_id() {
-        return pb_id;
-    }
+    private Date date;
 
-    public void setPb_id(Integer pb_id) {
-        this.pb_id = pb_id;
-    }
+    private Long companyId;
 
-    public String getPb_kind() {
-        return pb_kind;
-    }
+    private Double sl_orderamount;
 
-    public void setPb_kind(String pb_kind) {
-        this.pb_kind = pb_kind;
-    }
+    private Double pbd_nowbalance;
 
-    public String getPb_code() {
-        return pb_code;
-    }
+    private Date pb_date;
 
-    public void setPb_code(String pb_code) {
-        this.pb_code = pb_code;
-    }
+    private String currency;
 
-    public Double getTotal() {
-        return total;
-    }
+    private Double rate;
 
-    public void setTotal(Double total) {
-        this.total = total;
-    }
 }

+ 8 - 110
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Custmonth.java

@@ -1,6 +1,10 @@
 package com.usoftchina.saas.money.po;
 
+import lombok.Data;
+
+@Data
 public class Custmonth {
+
     private Integer cm_id;
 
     private Integer cm_yearmonth;
@@ -22,119 +26,13 @@ public class Custmonth {
     private Integer companyid;
 
     private Double cm_beginpreamount;
-    private Double cm_nowpayamount;
-    private Double cm_nowprepayamount;
-    private Double cm_endpreamount;
-
-    public Double getCm_beginpreamount() {
-        return cm_beginpreamount;
-    }
-
-    public void setCm_beginpreamount(Double cm_beginpreamount) {
-        this.cm_beginpreamount = cm_beginpreamount;
-    }
-
-    public Double getCm_nowpayamount() {
-        return cm_nowpayamount;
-    }
-
-    public void setCm_nowpayamount(Double cm_nowpayamount) {
-        this.cm_nowpayamount = cm_nowpayamount;
-    }
-
-    public Double getCm_nowprepayamount() {
-        return cm_nowprepayamount;
-    }
-
-    public void setCm_nowprepayamount(Double cm_nowprepayamount) {
-        this.cm_nowprepayamount = cm_nowprepayamount;
-    }
-
-    public Double getCm_endpreamount() {
-        return cm_endpreamount;
-    }
-
-    public void setCm_endpreamount(Double cm_endpreamount) {
-        this.cm_endpreamount = cm_endpreamount;
-    }
-
-    public Integer getCm_id() {
-        return cm_id;
-    }
-
-    public void setCm_id(Integer cm_id) {
-        this.cm_id = cm_id;
-    }
-
-    public Integer getCm_yearmonth() {
-        return cm_yearmonth;
-    }
 
-    public void setCm_yearmonth(Integer cm_yearmonth) {
-        this.cm_yearmonth = cm_yearmonth;
-    }
-
-    public Integer getCm_custid() {
-        return cm_custid;
-    }
-
-    public void setCm_custid(Integer cm_custid) {
-        this.cm_custid = cm_custid;
-    }
-
-    public String getCm_custcode() {
-        return cm_custcode;
-    }
-
-    public void setCm_custcode(String cm_custcode) {
-        this.cm_custcode = cm_custcode == null ? null : cm_custcode.trim();
-    }
-
-    public String getCm_custname() {
-        return cm_custname;
-    }
-
-    public void setCm_custname(String cm_custname) {
-        this.cm_custname = cm_custname == null ? null : cm_custname.trim();
-    }
-
-    public Double getCm_beginamount() {
-        return cm_beginamount;
-    }
-
-    public void setCm_beginamount(Double cm_beginamount) {
-        this.cm_beginamount = cm_beginamount;
-    }
-
-    public Double getCm_nowamount() {
-        return cm_nowamount;
-    }
-
-    public void setCm_nowamount(Double cm_nowamount) {
-        this.cm_nowamount = cm_nowamount;
-    }
-
-    public Double getCm_nowpreamount() {
-        return cm_nowpreamount;
-    }
-
-    public void setCm_nowpreamount(Double cm_nowpreamount) {
-        this.cm_nowpreamount = cm_nowpreamount;
-    }
+    private Double cm_nowpayamount;
 
-    public Double getCm_endamount() {
-        return cm_endamount;
-    }
+    private Double cm_nowprepayamount;
 
-    public void setCm_endamount(Double cm_endamount) {
-        this.cm_endamount = cm_endamount;
-    }
+    private Double cm_endpreamount;
 
-    public Integer getCompanyid() {
-        return companyid;
-    }
+    private String cm_currency;
 
-    public void setCompanyid(Integer companyid) {
-        this.companyid = companyid;
-    }
 }

+ 9 - 110
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Vendmonth.java

@@ -1,6 +1,10 @@
 package com.usoftchina.saas.money.po;
 
+import lombok.Data;
+
+@Data
 public class Vendmonth {
+
     private Integer vm_id;
 
     private Integer vm_yearmonth;
@@ -20,120 +24,15 @@ public class Vendmonth {
     private Double vm_endamount;
 
     private Integer companyid;
-    private Double vm_beginpreamount;
-    private Double vm_nowpayamount;
-    private Double vm_nowprepayamount;
-    private Double vm_endpreamount;
-
-    public Double getVm_beginpreamount() {
-        return vm_beginpreamount;
-    }
-
-    public void setVm_beginpreamount(Double vm_beginpreamount) {
-        this.vm_beginpreamount = vm_beginpreamount;
-    }
-
-    public Double getVm_nowpayamount() {
-        return vm_nowpayamount;
-    }
-
-    public void setVm_nowpayamount(Double vm_nowpayamount) {
-        this.vm_nowpayamount = vm_nowpayamount;
-    }
-
-    public Double getVm_nowprepayamount() {
-        return vm_nowprepayamount;
-    }
-
-    public void setVm_nowprepayamount(Double vm_nowprepayamount) {
-        this.vm_nowprepayamount = vm_nowprepayamount;
-    }
-
-    public Double getVm_endpreamount() {
-        return vm_endpreamount;
-    }
-
-    public void setVm_endpreamount(Double vm_endpreamount) {
-        this.vm_endpreamount = vm_endpreamount;
-    }
-
-    public Integer getVm_id() {
-        return vm_id;
-    }
-
-    public void setVm_id(Integer vm_id) {
-        this.vm_id = vm_id;
-    }
 
-    public Integer getVm_yearmonth() {
-        return vm_yearmonth;
-    }
-
-    public void setVm_yearmonth(Integer vm_yearmonth) {
-        this.vm_yearmonth = vm_yearmonth;
-    }
-
-    public Integer getVm_vendid() {
-        return vm_vendid;
-    }
-
-    public void setVm_vendid(Integer vm_vendid) {
-        this.vm_vendid = vm_vendid;
-    }
-
-    public String getVm_vendcode() {
-        return vm_vendcode;
-    }
-
-    public void setVm_vendcode(String vm_vendcode) {
-        this.vm_vendcode = vm_vendcode;
-    }
-
-    public String getVm_vendname() {
-        return vm_vendname;
-    }
-
-    public void setVm_vendname(String vm_vendname) {
-        this.vm_vendname = vm_vendname;
-    }
-
-    public Double getVm_beginamount() {
-        return vm_beginamount;
-    }
-
-    public void setVm_beginamount(Double vm_beginamount) {
-        this.vm_beginamount = vm_beginamount;
-    }
-
-    public Double getVm_nowamount() {
-        return vm_nowamount;
-    }
-
-    public void setVm_nowamount(Double vm_nowamount) {
-        this.vm_nowamount = vm_nowamount;
-    }
-
-    public Double getVm_nowpreamount() {
-        return vm_nowpreamount;
-    }
+    private Double vm_beginpreamount;
 
-    public void setVm_nowpreamount(Double vm_nowpreamount) {
-        this.vm_nowpreamount = vm_nowpreamount;
-    }
+    private Double vm_nowpayamount;
 
-    public Double getVm_endamount() {
-        return vm_endamount;
-    }
+    private Double vm_nowprepayamount;
 
-    public void setVm_endamount(Double vm_endamount) {
-        this.vm_endamount = vm_endamount;
-    }
+    private Double vm_endpreamount;
 
-    public Integer getCompanyid() {
-        return companyid;
-    }
+    private String vm_currency;
 
-    public void setCompanyid(Integer companyid) {
-        this.companyid = companyid;
-    }
 }

+ 2 - 0
applications/money/money-server/src/main/resources/mapper/AccountDetailsViewMapper.xml

@@ -16,6 +16,8 @@
     <result column="pb_date" property="pb_date" jdbcType="TIMESTAMP" />
     <result column="companyId" property="companyId" jdbcType="INTEGER" />
     <result column="pbd_nowbalance" property="pbd_nowbalance" jdbcType="DOUBLE" />
+    <result column="currency" property="currency" jdbcType="VARCHAR" />
+    <result column="rate" property="rate" jdbcType="DOUBLE" />
   </resultMap>
   <select id="selectByCondition" resultMap="BaseResultMap">
     select  *  from account_details_view

+ 2 - 1
applications/money/money-server/src/main/resources/mapper/CustmonthMapper.xml

@@ -16,10 +16,11 @@
     <result column="cm_nowpayamount" property="cm_nowpayamount" jdbcType="DOUBLE" />
     <result column="cm_nowprepayamount" property="cm_nowprepayamount" jdbcType="DOUBLE" />
     <result column="cm_endpreamount" property="cm_endpreamount" jdbcType="DOUBLE" />
+    <result column="cm_currency" property="cm_currency" jdbcType="VARCHAR" />
   </resultMap>
   <sql id="Base_Column_List" >
     cm_id, cm_yearmonth, cm_custid, cm_custcode, cm_custname, CM_BEGINAMOUNT, CM_NOWAMOUNT, 
-    CM_NOWPREAMOUNT, CM_ENDAMOUNT, companyid,cm_endpreamount,cm_nowprepayamount,cm_nowpayamount,cm_beginpreamount
+    CM_NOWPREAMOUNT, CM_ENDAMOUNT, companyid,cm_endpreamount,cm_nowprepayamount,cm_nowpayamount,cm_beginpreamount,cm_currency
   </sql>
 
   <select id="selectByCondition" resultMap="BaseResultMap">

+ 10 - 8
applications/money/money-server/src/main/resources/mapper/ProfitdetailMapper.xml

@@ -91,7 +91,6 @@ prodinout.companyid= prodiodetail.companyid
 		IFNULL(a.costamount,0) as costamount,
 		IFNULL(SUM(a.netamount - a.costamount),0) as profit,
 		IFNULL((SUM(a.netamount - a.costamount)/IFNULL(a.netamount,SUM(a.netamount - a.costamount))),0) as profitpresent
-
 		FROM
 		(
 		SELECT
@@ -99,9 +98,7 @@ prodinout.companyid= prodiodetail.companyid
 		pi_custname,
 		cu_type,
 		cu_sellername,
-		SUM(
-		IFNULL(pd_sendprice,0) * (IFNULL(pd_outqty,0) - IFNULL(pd_inqty,0))
-		) AS saamount,
+		SUM( (IFNULL( pd_sendprice, 0 ) * ( IFNULL( pd_outqty, 0 ) - IFNULL( pd_inqty, 0 ) )) * ifnull(cr_rate,1) ) AS saamount,,
 		SUM(
 		IFNULL(pd_netprice,0) * (IFNULL(pd_outqty,0) - IFNULL(pd_inqty,0))
 		) AS netamount,
@@ -111,7 +108,8 @@ prodinout.companyid= prodiodetail.companyid
 		FROM
 		prodinout,
 		prodiodetail,
-		customer
+		customer,
+		currencys
 		<where>
 			<if test="con != null">
 				${con}
@@ -120,9 +118,13 @@ prodinout.companyid= prodiodetail.companyid
 				and  prodinout.companyid = #{companyId}
 			</if>
 		</where>
-		and	pi_id = pd_piid
-		AND pi_custid = cu_id and pi_status = '已审核' and
-		prodinout.companyid= prodiodetail.companyid and prodiodetail.companyid = prodinout.companyid
+		AND	pi_id = pd_piid
+		AND pi_custid = cu_id
+		AND pi_status = '已审核'
+		AND prodinout.companyid= prodiodetail.companyid
+		AND prodiodetail.companyid = prodinout.companyid
+		AND currencys.cr_name = prodinout.pi_currency
+		AND currencys.companyid = prodinout.companyid
 		GROUP BY
 		pi_custcode,
 		pi_custname,

+ 2 - 1
applications/money/money-server/src/main/resources/mapper/VendmonthMapper.xml

@@ -16,10 +16,11 @@
     <result column="vm_nowpayamount" property="vm_nowpayamount" jdbcType="DOUBLE" />
     <result column="vm_nowprepayamount" property="vm_nowprepayamount" jdbcType="DOUBLE" />
     <result column="vm_endpreamount" property="vm_endpreamount" jdbcType="DOUBLE" />
+    <result column="vm_currency" property="vm_currency" jdbcType="VARCHAR" />
   </resultMap>
   <sql id="Base_Column_List" >
     vm_id, vm_yearmonth, vm_vendid, VM_VENDCODE, VM_VENDNAME, VM_BEGINAMOUNT, VM_NOWAMOUNT, 
-    VM_NOWPREAMOUNT, VM_ENDAMOUNT, companyid,vm_endpreamount,vm_nowprepayamount,vm_nowpayamount,vm_beginpreamount
+    VM_NOWPREAMOUNT, VM_ENDAMOUNT, companyid,vm_endpreamount,vm_nowprepayamount,vm_nowpayamount,vm_beginpreamount,vm_currency
   </sql>
 
   <select id="selectByCondition" resultMap="BaseResultMap">

+ 2 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/ProdInOutMapper.java

@@ -26,4 +26,6 @@ public interface ProdInOutMapper extends CommonBaseMapper<ProdInOut> {
     int checkQtyFromProdIn(Long id);
 
     void updateCreator(@Param("userId") Long userId,@Param("userName") String userName,@Param("id") Long pi_id);
+
+    String validateCurrency(@Param("piId") Long piId, @Param("piCurrency") String piCurrency);
 }

+ 2 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java

@@ -42,4 +42,6 @@ public interface PurchaseMapper extends CommonBaseMapper<Purchase>{
     Integer checkPurchaseRequiredField(Long id);
 
     Integer checkClose(Long id);
+
+    String validateCurrency(@Param("puId") Long piId, @Param("puCurrency") String piCurrency);
 }

+ 4 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/report/PurchaseReportDetail.java

@@ -68,6 +68,10 @@ public class PurchaseReportDetail extends CommonBaseEntity implements Serializab
 
     private String pu_shipaddresscode;
 
+    private String pu_currency;
+
+    private Double pu_rate;
+
     //从表字段
     private Long pd_id;
 

+ 10 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java

@@ -190,6 +190,11 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             messageLogService.save(baseDTO);
             return baseDTO;
         }
+        //校验有来源的验收验退币别是否与源单据一致
+        String piInoutno = getMapper().validateCurrency(pi_id,prodInOut.getPi_currency());
+        if(piInoutno!=null){
+            throw new BizException(BizExceptionCode.CURRENCY_VALID);
+        }
         //更新操作
         getMapper().updateByPrimaryKeySelective(prodInOut);
         //添加从表传输对象
@@ -460,11 +465,16 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         targetPi.setPi_vendid(sourcePi.getPi_vendid());
         targetPi.setPi_vendcode(sourcePi.getPi_vendcode());
         targetPi.setPi_vendname(sourcePi.getPi_vendname());
+        //来源采购
         targetPi.setPi_puid(sourcePi.getPi_puid());
         targetPi.setPi_pucode(sourcePi.getPi_pucode());
+        //记录来源
         targetPi.setPi_ioid(sourcePi.getId());
         targetPi.setPi_iocode(sourcePi.getPi_inoutno());
+        //币别、汇率
         targetPi.setPi_currency(sourcePi.getPi_currency());
+        targetPi.setPi_rate(sourcePi.getPi_rate());
+        //采购员
         targetPi.setPi_buyerid(sourcePi.getPi_buyerid());
         targetPi.setPi_buyercode(sourcePi.getPi_buyercode());
         targetPi.setPi_buyername(sourcePi.getPi_buyername());

+ 5 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -186,6 +186,11 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
             messageLogService.save(baseDTO);
             return baseDTO;
         }
+        //校验有来源的验收验退币别是否与源单据一致
+        String puCode = purchaseMapper.validateCurrency(pu_id,purchase.getPu_currency());
+        if(puCode!=null){
+            throw new BizException(BizExceptionCode.CURRENCY_VALID);
+        }
         //更新操作
         purchaseMapper.updateByPrimaryKeySelective(purchase);
         //添加从表传输对象

+ 3 - 0
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutMapper.xml

@@ -492,5 +492,8 @@
     update prodinout set creatorId = #{userId} , creatorName=#{userName} where pi_id=#{id}
   </update>
 
+  <select id="validateCurrency" resultType="java.lang.String">
+    select pi_inoutno from prodinout where ( ifnull(pi_pucode,'') != '' or ifnull(pi_iocode,'') != '' ) and  pi_id = #{piId} and pi_currency != #{piCurrency}
+  </select>
 
 </mapper>

+ 4 - 0
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml

@@ -477,4 +477,8 @@
     select count(1) from purchase where pu_id = #{id} and PU_ACCEPTSTATUSCODE='CLOSE'
   </select>
 
+  <select id="validateCurrency" resultType="java.lang.String">
+    select pu_code from purchase where ifnull(pu_sacode,'') != '' and  pu_id = #{puId} and pu_currency != #{puCurrency}
+  </select>
+
 </mapper>

+ 2 - 0
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseReportMapper.xml

@@ -51,6 +51,8 @@
     <result column="pu_text3" property="pu_text3" jdbcType="VARCHAR" />
     <result column="pu_text4" property="pu_text4" jdbcType="VARCHAR" />
     <result column="pu_text5" property="pu_text5" jdbcType="VARCHAR" />
+    <result column="pu_currency" property="pu_currency" jdbcType="VARCHAR" />
+    <result column="pu_rate" property="pu_rate" jdbcType="DOUBLE" />
     <result column="PD_ID" property="pd_id" jdbcType="INTEGER" />
     <result column="PD_PUID" property="pd_puid" jdbcType="INTEGER" />
     <result column="PD_CODE" property="pd_code" jdbcType="VARCHAR" />

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

@@ -66,4 +66,8 @@ public class PurchaseDTO extends CommonBaseEntity implements Serializable {
     private Long pu_said;
 
     private String pu_sacode;
+
+    private String pu_currency;
+
+    private Double pu_rate;
 }

+ 2 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/mapper/ProdInOutMapper.java

@@ -49,4 +49,6 @@ public interface ProdInOutMapper extends CommonBaseMapper<ProdInOut> {
     void updateCreator(@Param("userId") Long userId, @Param("userName") String userName, @Param("id") Long id);
 
     Integer checkSaleInQty(Long pi_id);
+
+    String validateCurrency(@Param("piId") Long piId, @Param("piCurrency") String piCurrency);
 }

+ 4 - 2
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/SaleList.java

@@ -71,6 +71,10 @@ public class SaleList implements Serializable {
 
     private Double sa_nettotal;
 
+    private String sa_currency;
+
+    private Double sa_rate;
+
     private Integer sd_id;
 
     private Integer sd_said;
@@ -117,8 +121,6 @@ public class SaleList implements Serializable {
     //已转数
     private Double sd_yqty;
 
-    private String sa_currency;
-
     //private ProductDTO productDTO;级联属性会导致分页查询出现BUG,设置数与查询数量不一致
     private Long pr_id;
     private String pr_code;

+ 4 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SaleProfitView.java

@@ -66,4 +66,8 @@ public class SaleProfitView {
     private String pr_brand;
 
     private String pr_orispeccode;
+
+    private String pi_currency;
+
+    private Double pi_rate;
 }

+ 7 - 1
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java

@@ -148,6 +148,11 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             messageLogService.save(baseDTO);
             return baseDTO;
         }
+        //校验来源销售订单或出货单 币别,必须与来源保持一致
+        String piInoutno = prodInOutMapper.validateCurrency(pi_id,prodInOut.getPi_currency());
+        if(piInoutno!=null){
+            throw new BizException(BizExceptionCode.CURRENCY_VALID);
+        }
         //更新操作
         prodInOutMapper.updateByPrimaryKeySelective(prodInOut);
         //添加从表传输对象
@@ -497,8 +502,9 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         //来源的单号
         targetPi.setPi_ioid(sourcePi.getId());
         targetPi.setPi_iocode(sourcePi.getPi_inoutno());
-        //币别、业务员
+        //币别、业务员、汇率
         targetPi.setPi_currency(sourcePi.getPi_currency());
+        targetPi.setPi_rate(sourcePi.getPi_rate());
         targetPi.setPi_sellerid(sourcePi.getPi_sellerid());
         targetPi.setPi_sellercode(sourcePi.getPi_sellercode());
         targetPi.setPi_seller(sourcePi.getPi_seller());

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

@@ -509,8 +509,9 @@ public class SaleServiceImpl implements SaleService{
 
         prodInOut.setPi_prstatus(Status.RECNONE.getDisplay());
         prodInOut.setPi_prstatuscode(Status.RECNONE.name());
-        //币别 业务员
+        //币别 业务员 汇率
         prodInOut.setPi_currency(sale.getSa_currency());
+        prodInOut.setPi_rate(sale.getSa_rate());
         prodInOut.setPi_sellerid(sale.getSa_sellerid());
         prodInOut.setPi_sellercode(sale.getSa_sellercode());
         prodInOut.setPi_seller(sale.getSa_seller());
@@ -630,6 +631,9 @@ public class SaleServiceImpl implements SaleService{
         purchase.setCreatorId(BaseContextHolder.getUserId());
         purchase.setCreateTime(new Date());
         purchase.setCreatorName(BaseContextHolder.getUserName());
+        //币别、汇率
+        purchase.setPu_currency(sale.getSa_currency());
+        purchase.setPu_rate(sale.getSa_rate());
         saleMapper.turnPurchase(purchase);
         Long purchaseId = purchase.getId();
         for (SaleList detail : dateilList){

+ 5 - 0
applications/sale/sale-server/src/main/resources/mapper/ProdInOutMapper.xml

@@ -621,4 +621,9 @@ update ProdInOut SET
     select count(1) from prodinout left join prodiodetail a on pi_id=pd_piid where
     pi_class='销售退货单' and ifnull(pd_inqty,0) > (select ifnull(pd_outqty,0) from prodiodetail where pd_id=a.pd_ioid) and pi_id=#{pi_id};
   </select>
+
+  <select id="validateCurrency" resultType="java.lang.String">
+    select pi_inoutno from prodinout where ( ifnull(pi_sacode,'') != '' or ifnull(pi_iocode,'') != '' ) and  pi_id = #{piId} and pi_currency != #{piCurrency}
+  </select>
+
 </mapper>

+ 3 - 1
applications/sale/sale-server/src/main/resources/mapper/SaleListMapper.xml

@@ -31,6 +31,8 @@
         <result column="sa_text5" property="sa_text5" jdbcType="VARCHAR" />
         <result column="sa_seller" property="sa_seller" jdbcType="VARCHAR" />
         <result column="sa_sellerid" property="sa_sellerid" jdbcType="INTEGER" />
+        <result column="sa_currency" property="sa_currency" jdbcType="VARCHAR"/>
+        <result column="sa_rate" property="sa_rate" jdbcType="DOUBLE" />
         <result column="sd_id" property="sd_id" jdbcType="INTEGER" />
         <result column="sd_said" property="sd_said" jdbcType="INTEGER" />
         <result column="sd_detno" property="sd_detno" jdbcType="INTEGER" />
@@ -54,7 +56,7 @@
         <result column="sd_text3" property="sd_text3" jdbcType="VARCHAR" />
         <result column="sd_text4" property="sd_text4" jdbcType="VARCHAR" />
         <result column="sd_text5" property="sd_text5" jdbcType="VARCHAR" />
-        <result column="sa_currency" property="sa_currency" jdbcType="VARCHAR"/>
+
         <result column="pr_id" property="pr_id"/>
         <result column="pr_code" property="pr_code"/>
         <result column="pr_detail" property="pr_detail"/>

+ 13 - 0
applications/sale/sale-server/src/main/resources/mapper/SaleMapper.xml

@@ -583,6 +583,12 @@
       <if test="pu_sacode != null" >
         pu_sacode,
       </if>
+      <if test="pu_currency != null" >
+        pu_currency,
+      </if>
+      <if test="pu_rate != null" >
+        pu_rate,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides="," >
       <if test="pu_code != null" >
@@ -687,6 +693,12 @@
       <if test="pu_sacode != null" >
         #{pu_sacode,jdbcType=VARCHAR},
       </if>
+      <if test="pu_currency != null" >
+        #{pu_currency,jdbcType=VARCHAR},
+      </if>
+      <if test="pu_rate != null" >
+        #{pu_rate,jdbcType=DOUBLE},
+      </if>
     </trim>
   </insert>
 
@@ -730,4 +742,5 @@
     update saledetail set sd_delivery = (select sa_delivery from sale where sa_id =#{id}  and sa_delivery is not null)
      where  sd_said = #{id}  and sd_delivery is null and exists (select 1 from sale where sa_id =#{id}  and sa_delivery is not null)
   </update>
+
 </mapper>

+ 2 - 0
applications/sale/sale-server/src/main/resources/mapper/SaleProfitViewMapper.xml

@@ -7,6 +7,8 @@
     <result column="sa_sellercode" property="sa_sellercode" jdbcType="VARCHAR" />
     <result column="sa_seller" property="sa_seller" jdbcType="VARCHAR" />
     <result column="sa_date" property="sa_date" jdbcType="TIMESTAMP" />
+    <result column="pi_currency" property="pi_currency" jdbcType="VARCHAR" />
+    <result column="pi_rate" property="pi_rate" jdbcType="DOUBLE" />
     <result column="pi_date" property="pi_date" jdbcType="TIMESTAMP" />
     <result column="pd_inoutno" property="pd_inoutno" jdbcType="VARCHAR" />
     <result column="pd_piclass" property="pd_piclass" jdbcType="VARCHAR" />