Browse Source

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

chenw 6 years ago
parent
commit
fe6c51124e
25 changed files with 397 additions and 73 deletions
  1. 1 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/CustmonthMapper.java
  2. 1 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/VendmonthMapper.java
  3. 5 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/MoneyReportServiceImpl.java
  4. 18 0
      applications/money/money-server/src/main/resources/mapper/CustmonthMapper.xml
  5. 27 27
      applications/money/money-server/src/main/resources/mapper/ProfitdetailMapper.xml
  6. 19 0
      applications/money/money-server/src/main/resources/mapper/VendmonthMapper.xml
  7. 1 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseReportMapper.java
  8. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/report/PurchasePay.java
  9. 3 6
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseReportServiceImpl.java
  10. 5 3
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseReportMapper.xml
  11. 1 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/mapper/SalerecViewMapper.java
  12. 2 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SalerecView.java
  13. 3 6
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleReportServiceImpl.java
  14. 5 2
      applications/sale/sale-server/src/main/resources/mapper/SalerecViewMapper.xml
  15. 0 1
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/SaleDownServiceImpl.java
  16. 0 11
      frontend/saas-web/app/model/report/SaleProfit.js
  17. 15 2
      frontend/saas-web/app/view/money/report/PayDetail.js
  18. 15 2
      frontend/saas-web/app/view/money/report/RecDetail.js
  19. 79 1
      frontend/saas-web/app/view/money/report/TotalPayDetail.js
  20. 79 1
      frontend/saas-web/app/view/money/report/TotalRecDetail.js
  21. 18 3
      frontend/saas-web/app/view/purchase/report/PurchasePay.js
  22. 6 0
      frontend/saas-web/app/view/sale/b2b/PurchaseDetail.js
  23. 9 0
      frontend/saas-web/app/view/sale/b2b/PurchaseDetailModel.js
  24. 3 3
      frontend/saas-web/app/view/sale/report/SaleProfit.js
  25. 80 1
      frontend/saas-web/app/view/sale/report/SaleRec.js

+ 1 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/CustmonthMapper.java

@@ -8,5 +8,6 @@ import java.util.Map;
 
 public interface CustmonthMapper {
     List<Custmonth> selectByCondition(@Param("con") String con, @Param("companyId") Long companyId);
+    List<Custmonth> selectCalculateFields(@Param("con") String con, @Param("companyId") Long companyId);
     void callCustm(Map<String, Integer> map);
 }

+ 1 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/VendmonthMapper.java

@@ -8,5 +8,6 @@ import java.util.Map;
 
 public interface VendmonthMapper {
     List<Vendmonth> selectByCondition(@Param("con") String con, @Param("companyId") Long companyId);
+    List<Vendmonth> selectCalculateFields(@Param("con") String con, @Param("companyId") Long companyId);
     void callVend(Map<String, Integer> map);
 }

+ 5 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/MoneyReportServiceImpl.java

@@ -55,7 +55,6 @@ public class MoneyReportServiceImpl implements MoneyReportService {
     public Map<String, Object> payDetail(PageRequest page, ListReqDTO req) {
         return getListDATA(page, req, "payDetail");
     }
-
     @Override
     public Map<String, Object> recDetail(PageRequest page, ListReqDTO req) {
         return getListDATA(page, req, "recDetail");
@@ -312,7 +311,11 @@ public class MoneyReportServiceImpl implements MoneyReportService {
         if ("Supplier".equals(type) || "customercheck".equals(type)){
             arrs = JSONArray.toJSON(list1);
             map.put("calculate", arrs);
-        }else {
+        }else if("vendormonthdetails".equals(type)){
+            map.put("calculate", vendmonthMapper.selectCalculateFields(con, companyId));
+        }else if("custormonthdetails".equals(type)){
+            map.put("calculate", custmonthMapper.selectCalculateFields(con, companyId));
+        }else{
             map.put("calculate", arr);
         }
         return map;

+ 18 - 0
applications/money/money-server/src/main/resources/mapper/CustmonthMapper.xml

@@ -19,12 +19,30 @@
     <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" />
+    <result column="cm_rate" property="cm_rate" jdbcType="DOUBLE" />
   </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_currency
   </sql>
 
+  <select id="selectCalculateFields" resultMap="BaseResultMap">
+    select cm_currency,cm_rate,sum(cm_endamount) cm_endamount,sum(cm_endpreamount) cm_endpreamount from
+    (
+      select a.*,cr_rate cm_rate from custmonth a
+      left join currencys on cr_name = a.cm_currency and currencys.companyId = a.companyid
+      <where>
+        <if test="con != null">
+          ${con}
+        </if>
+        <if test="companyId != null">
+          and  a.companyId = #{companyId} and abs(cm_beginamount)+abs(cm_beginpreamount)+abs(cm_nowamount)+abs(cm_nowpreamount)+abs(cm_nowprepayamount)+abs(cm_nowpayamount)>0
+        </if>
+      </where>
+    ) x
+    group by cm_currency,cm_rate
+  </select>
+
   <select id="selectByCondition" resultMap="BaseResultMap">
       select  a.*,cr_rate cm_rate, cr_rate*(cm_endamount-cm_endpreamount) cm_amount_cr from custmonth a
       left join currencys on cr_name = a.cm_currency and currencys.companyId = a.companyid

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

@@ -25,10 +25,10 @@
 		  pi_custid,
 		  pi_custcode,
 		  pi_custname,
-		  sum(pd_sendprice*pi_rate) as saamount,
-		  sum(pd_price) as costamount,
-	  	  sum(pd_sendprice*pi_rate)-sum(pd_price) as profit,
-		  (sum(pd_sendprice*pi_rate)-sum(pd_price) )/sum(pd_sendprice*pi_rate) as profitpresent
+		  sum(pd_sendprice*pi_rate*(ifnull(pd_outqty,0)-ifnull(pd_inqty,0))) as saamount,
+		  sum(pd_total) as costamount,
+	  	  sum(pd_netprice*pi_rate*(ifnull(pd_outqty,0)-ifnull(pd_inqty,0)))-sum(pd_total) as profit,
+		  (sum(pd_netprice*pi_rate*(ifnull(pd_outqty,0)-ifnull(pd_inqty,0)))-sum(pd_total) )/sum(pd_netprice*pi_rate*(ifnull(pd_outqty,0)-ifnull(pd_inqty,0))) as profitpresent
 	  from prodiodetail
 	  left join prodinout on pd_piid=pi_Id
 	  left join customer on cu_id = pi_custid
@@ -48,29 +48,29 @@
 	<select id="selectCalculateFields" resultType="string">
 		SELECT ${fields}
 		from(
-		select
-		cu_type,
-		pi_custid,
-		pi_custcode,
-		pi_custname,
-		sum(pd_sendprice*pi_rate) as saamount,
-		sum(pd_price) as costamount,
-		sum(pd_sendprice*pi_rate)-sum(pd_price) as profit,
-		(sum(pd_sendprice*pi_rate)-sum(pd_price) )/sum(pd_sendprice*pi_rate) as profitpresent
-		from prodiodetail
-		left join prodinout on pd_piid=pi_Id
-		left join customer on cu_id = pi_custid
-		<where>
-			<if test="con != null">
-				${con}
-			</if>
-			<if test="companyId != null">
-				and prodinout.companyid = #{companyId}
-			</if>
-			and pi_class in('出货单','销售退货单')
-		</where>
-		group by pi_custid,pi_custcode,pi_custname,cu_type
-		ORDER BY pi_custname asc
+			select
+				cu_type,
+				pi_custid,
+				pi_custcode,
+				pi_custname,
+				sum(pd_sendprice*pi_rate*(ifnull(pd_outqty,0)-ifnull(pd_inqty,0))) as saamount,
+				sum(pd_total) as costamount,
+				sum(pd_netprice*pi_rate*(ifnull(pd_outqty,0)-ifnull(pd_inqty,0)))-sum(pd_total) as profit,
+				(sum(pd_netprice*pi_rate*(ifnull(pd_outqty,0)-ifnull(pd_inqty,0)))-sum(pd_total) )/sum(pd_netprice*pi_rate*(ifnull(pd_outqty,0)-ifnull(pd_inqty,0))) as profitpresent
+			from prodiodetail
+			left join prodinout on pd_piid=pi_Id
+			left join customer on cu_id = pi_custid
+			<where>
+				<if test="con != null">
+					${con}
+				</if>
+				<if test="companyId != null">
+					and prodinout.companyid = #{companyId}
+				</if>
+				and pi_class in('出货单','销售退货单')
+			</where>
+			group by pi_custid,pi_custcode,pi_custname,cu_type
+			ORDER BY pi_custname asc
 		) a
 	</select>
 

+ 19 - 0
applications/money/money-server/src/main/resources/mapper/VendmonthMapper.xml

@@ -19,6 +19,7 @@
     <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" />
+    <result column="vm_rate" property="vm_rate" jdbcType="DOUBLE" />
   </resultMap>
   <sql id="Base_Column_List" >
     vm_id, vm_yearmonth, vm_vendid, VM_VENDCODE, VM_VENDNAME, VM_BEGINAMOUNT, VM_NOWAMOUNT, 
@@ -39,6 +40,24 @@
     order by vm_yearmonth desc,vm_vendcode
   </select>
 
+  <select id="selectCalculateFields" resultMap="BaseResultMap">
+    select vm_currency,vm_rate,sum(vm_endamount) vm_endamount,sum(vm_endpreamount) vm_endpreamount from
+    (
+      select a.*,cr_rate vm_rate from vendmonth a
+      left join currencys on cr_name = a.vm_currency and currencys.companyId = a.companyid
+      <where>
+        <if test="con != null">
+          ${con}
+        </if>
+        <if test="companyId != null">
+          and a.companyid = #{companyId} and
+          abs(vm_beginamount)+abs(vm_beginpreamount)+abs(vm_nowamount)+abs(vm_nowpreamount)+abs(vm_nowprepayamount)+abs(vm_nowpayamount)>0
+        </if>
+      </where>
+    ) x
+    group by vm_currency,vm_rate
+  </select>
+
   <parameterMap id="ymParamMap" type="java.util.Map">
     <parameter property="v_YearMonth" jdbcType="INTEGER" mode="IN" />
     <parameter property="v_YearMonthTo" jdbcType="INTEGER" mode="IN" />

+ 1 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseReportMapper.java

@@ -11,7 +11,7 @@ public interface PurchaseReportMapper {
 
     List<PurchaseReportDetail> selectDetailByCondition(@Param("con") String con, @Param("companyId") Long companyId);
 
-    String selectPurchasePayCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
+    List<PurchasePay> selectPurchasePayCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 
     String selectDetailCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 }

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

@@ -43,4 +43,6 @@ public class PurchasePay  extends CommonBaseEntity implements Serializable {
     private String pb_manname;
 
     private String pi_currency;
+
+    private Double pi_rate;
 }

+ 3 - 6
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseReportServiceImpl.java

@@ -8,6 +8,7 @@ import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.purchase.mapper.PurchaseReportMapper;
+import com.usoftchina.saas.purchase.po.report.PurchasePay;
 import com.usoftchina.saas.purchase.service.PurchaseReportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -35,7 +36,7 @@ public class PurchaseReportServiceImpl implements PurchaseReportService{
         Long companyId = BaseContextHolder.getCompanyId();
         String con = req.getFinalCondition();
         String calculateFieldsSql = req.getCalculateFieldsSql();
-        JSONArray arr = null;
+        List<PurchasePay> arr = null;
         if (null == con) {
             con = "1=1";
         }
@@ -44,11 +45,7 @@ public class PurchaseReportServiceImpl implements PurchaseReportService{
         PageInfo pageInfo = new PageInfo(list);
         //取对应计算数据
         if (!StringUtils.isEmpty(calculateFieldsSql)) {
-            String res = purchaseReportMapper.selectPurchasePayCalculateFields(calculateFieldsSql, con, companyId);
-            try {
-                arr = JSONArray.parseArray(res);
-            } catch (Exception e) {
-            }
+            arr = purchaseReportMapper.selectPurchasePayCalculateFields(calculateFieldsSql, con, companyId);
         }
         map.put("list", pageInfo);
         map.put("calculate", arr);

+ 5 - 3
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseReportMapper.xml

@@ -22,6 +22,7 @@
     <result column="pi_total" property="pi_total" jdbcType="DOUBLE" />
     <result column="pb_manname" property="pb_manname" jdbcType="VARCHAR"/>
     <result column="pi_currency" property="pi_currency" jdbcType="VARCHAR"/>
+    <result column="pi_rate" property="pi_rate" jdbcType="DOUBLE"/>
   </resultMap>
   <resultMap id="ListMap" type="com.usoftchina.saas.purchase.po.report.PurchaseReportDetail">
     <id column="pu_id" property="pu_id" jdbcType="INTEGER" />
@@ -134,8 +135,9 @@
   </select>
 
 
-  <select id="selectPurchasePayCalculateFields" resultType="string">
-    select   ${fields}  from purchasepay_view
+  <select id="selectPurchasePayCalculateFields" resultMap="BaseResultMap">
+    select   pi_currency,pi_rate,sum(pbd_nowbalance) pbd_nowbalance,sum(pi_total) pi_total,sum(pi_nettotal) pi_nettotal from
+    purchasepay_view
     <where>
       <if test="con != null">
         ${con}
@@ -144,7 +146,7 @@
         and  companyId = #{companyId}
       </if>
     </where>
-    order by pb_id desc
+    group by pi_currency,pi_rate;
   </select>
 
   <select id="selectDetailCalculateFields" resultType="string">

+ 1 - 1
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/mapper/SalerecViewMapper.java

@@ -9,5 +9,5 @@ public interface SalerecViewMapper {
 
     List<SalerecView> selectByCondition(@Param("con") String con, @Param("companyId") Long companyId);
 
-    String selectCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
+    List<SalerecView> selectCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 }

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

@@ -43,4 +43,6 @@ public class SalerecView {
     private Double pi_nettotal;
 
     private String pi_currency;
+
+    private Double pi_rate;
 }

+ 3 - 6
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleReportServiceImpl.java

@@ -10,6 +10,7 @@ import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.sale.mapper.SaleListMapper;
 import com.usoftchina.saas.sale.mapper.SaleProfitViewMapper;
 import com.usoftchina.saas.sale.mapper.SalerecViewMapper;
+import com.usoftchina.saas.sale.po.report.SalerecView;
 import com.usoftchina.saas.sale.service.SaleReportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -69,7 +70,7 @@ public class SaleReportServiceImpl implements SaleReportService{
         Long companyId = BaseContextHolder.getCompanyId();
         String con = req.getFinalCondition();
         String calculateFieldsSql = req.getCalculateFieldsSql();
-        JSONArray arr = null;
+        List<SalerecView> arr = null;
         if (null == con) {
             con = "1=1";
         }
@@ -78,11 +79,7 @@ public class SaleReportServiceImpl implements SaleReportService{
         PageInfo pageInfo = new PageInfo(list);
         //取对应计算数据
         if (!StringUtils.isEmpty(calculateFieldsSql)) {
-            String res = salerecViewMapper.selectCalculateFields(calculateFieldsSql, con, companyId);
-            try {
-                arr = JSONArray.parseArray(res);
-            } catch (Exception e) {
-            }
+            arr = salerecViewMapper.selectCalculateFields(calculateFieldsSql, con, companyId);
         }
         map.put("list", pageInfo);
         map.put("calculate", arr);

+ 5 - 2
applications/sale/sale-server/src/main/resources/mapper/SalerecViewMapper.xml

@@ -19,6 +19,7 @@
     <result column="pi_nettotal" property="pi_nettotal" jdbcType="DOUBLE" />
     <result column="pi_total" property="pi_total" jdbcType="DOUBLE" />
     <result column="pi_currency" property="pi_currency" jdbcType="VARCHAR" />
+    <result column="pi_rate" property="pi_rate" jdbcType="DOUBLE" />
   </resultMap>
   <select id="selectByCondition" resultMap="BaseResultMap">
     select  *  from Salerec_View
@@ -33,8 +34,9 @@
     order by rb_date desc
   </select>
 
-  <select id="selectCalculateFields" resultType="string">
-    select   ${fields}  from Salerec_View
+  <select id="selectCalculateFields" resultMap="BaseResultMap">
+    select   pi_currency,pi_rate,sum(rbd_nowbalance) rbd_nowbalance,sum(pi_total) pi_total,sum(pi_nettotal) pi_nettotal from
+    Salerec_View
     <where>
       <if test="con != null">
         ${con}
@@ -43,5 +45,6 @@
         and  companyId = #{companyId}
       </if>
     </where>
+    group by pi_currency,pi_rate
   </select>
 </mapper>

+ 0 - 1
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/SaleDownServiceImpl.java

@@ -108,7 +108,6 @@ public class SaleDownServiceImpl implements SaleDownService{
                         detail.setSd_prodcode(null);
                         detail.setSd_prodid(null);
                         detail.setSd_prodspec(null);
-                        detail.setSd_produnit(null);
                         detail.setSd_orispeccode(null);
                     }
                     detail.setSd_said(main.getId());

+ 0 - 11
frontend/saas-web/app/model/report/SaleProfit.js

@@ -26,17 +26,6 @@ Ext.define('saas.model.report.SaleProfit', {
             depends: ['pd_ordertotal', 'pd_nettotal']
         }, 
         { name: 'pd_ordertotal', type: 'float' },//价税合计
-        { name: 'pd_ordertotal*pi_rate', type: 'float' ,
-            convert: function(v, rec) {
-                return Number(saas.util.BaseUtil.numberFormat((rec.get('pd_ordertotal') || 0.0), 2, false));
-            },
-            depends: ['pd_ordertotal']
-            /* convert: function(v, rec) {
-                var t = (rec.get('pd_ordertotal') || 0.0) * (rec.get('pi_rate') || 1.0);
-                return Number(saas.util.BaseUtil.numberFormat(t, 2, false));
-            },
-            depends: ['pd_ordertotal', 'pi_rate'] */
-        },//价税合计本位币
         { name: 'pd_price', type: 'float' },//成本单价
         { name: 'pd_total', type: 'float' },
         { name: 'pd_profit', type: 'float' },

+ 15 - 2
frontend/saas-web/app/view/money/report/PayDetail.js

@@ -132,7 +132,7 @@ Ext.define('saas.view.money.report.PayDetail', {
         renderer : function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
-        summaryType: 'sum',
+        summaryType: 'customize_last',
         disableMySummary:true,
         summaryRenderer: function(v) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
@@ -153,7 +153,20 @@ Ext.define('saas.view.money.report.PayDetail', {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
         mySummaryRenderer: function(grid, column, datas) {
-            return grid.store.sum(column.dataIndex)
+            let sum = 0;
+            Ext.each(grid.store.data.items,function(rec,index){
+                if((index+1)<grid.store.data.items.length){
+                    //校验是否变更了数据
+                    let nowGroup = rec.get('groupfield')
+                    let nextGroup = grid.store.data.items[index+1].get('groupfield')
+                    if(nowGroup!=nextGroup){
+                        sum+=rec.get('pd_remain')*rec.get('pd_rate')
+                    }
+                }else{
+                    sum+=rec.get('pd_remain')*rec.get('pd_rate')
+                }
+            });
+            return saas.util.BaseUtil.numberFormat(sum, 2, true);
         }
     }, {
         dataIndex: '',

+ 15 - 2
frontend/saas-web/app/view/money/report/RecDetail.js

@@ -134,7 +134,7 @@ Ext.define('saas.view.money.report.RecDetail', {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
         disableMySummary:true,
-        summaryType: 'sum',
+        summaryType: 'customize_last',
         summaryRenderer: function(v, d, f, m) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         }
@@ -154,7 +154,20 @@ Ext.define('saas.view.money.report.RecDetail', {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
         mySummaryRenderer: function(grid, column, datas) {
-            return grid.store.sum(column.dataIndex)
+            let sum = 0;
+            Ext.each(grid.store.data.items,function(rec,index){
+                if((index+1)<grid.store.data.items.length){
+                    //校验是否变更了数据
+                    let nowGroup = rec.get('groupfield')
+                    let nextGroup = grid.store.data.items[index+1].get('groupfield')
+                    if(nowGroup!=nextGroup){
+                        sum+=rec.get('rd_remain')*rec.get('rd_rate')
+                    }
+                }else{
+                    sum+=rec.get('rd_remain')*rec.get('rd_rate')
+                }
+            });
+            return saas.util.BaseUtil.numberFormat(sum, 2, true);
         }
     }, {
         dataIndex: '',

+ 79 - 1
frontend/saas-web/app/view/money/report/TotalPayDetail.js

@@ -159,5 +159,83 @@ Ext.define('saas.view.money.report.TotalPayDetail', {
     }, {
         dataIndex: '',
         flex: 1
-    }]
+    }],
+    
+    // 自定义合计逻辑,直接使用后台返回的内容作为合计栏内容
+    mySummaryConfig: {
+        renderSummaryData: [],
+        mySummaryTpl: [
+            '<table class="x-grid-row-mysummary x-mmmmmmmmmmmm">',
+                '<tbody>',
+                    '<tr>',
+                        '<tpl for=".">',
+                        '<td class="x-grid-cell x-grid-td x-grid-cell-numbercolumn-1526 x-unselectable x-mysummary-item">',
+                            '<div class="x-grid-cell-inner x-mysummary-item-cell">{label}',
+                                '{str}',
+                            '</div>',
+                        '</td>',
+                        '</tpl>',
+                    '</tr>',
+                '</tbody>',
+            '</table>',
+        ],
+        initSummarys: function() {
+            var me = this,
+            summaryData = me.renderSummaryData;
+            
+            var summarys = [{
+                str: summaryData
+            }];
+            this.summarys = summarys;
+            return summarys;
+        },
+        updateSummarys: function() {
+            var me = this,
+            summaryData = me.renderSummaryData;
+            var summarys = [{
+                str: summaryData
+            }];
+            this.summarys = summarys;
+            return summarys;
+        },
+        applySummarys: function(response) {
+            var me = this,
+            grid = me.grid;
+            var _res = response,
+            _calculateProperty = grid.calculateProperty;
+
+            var _root = _calculateProperty.split('.')[0];
+            eval('var ' + _root + ' = _res[_root];');
+            try {
+                summaryData = [];
+                try {
+                    summaryData = eval(_calculateProperty);
+
+                    if(!Ext.isArray(summaryData)) {
+                        summaryData = [];
+                    }
+                }catch(e) {
+                    // don't care this...
+                }
+                //自定义逻辑
+                if(summaryData.length>0){
+                    let message = '';
+                    Ext.each(summaryData,function(obj,index){
+                        recAmount = obj.vm_endamount-obj.vm_endpreamount
+                        if(index==0){
+                            message+='<span>应付余额(' + obj.vm_currency + ')(元):'+saas.util.BaseUtil.numberFormat(recAmount, 2, true)+'</span>'
+                        }else{
+                            message+='<span style="margin:0 0 0 20px">应付余额(' + obj.vm_currency + ')(元):'+saas.util.BaseUtil.numberFormat(recAmount, 2, true)+'</span>'
+                        }
+                    });
+                    me.renderSummaryData =message;
+                }else{
+                    me.renderSummaryData = '';
+                }
+            } catch (e) {
+                console.error(e);
+                saas.util.BaseUtil.showErrorToast(e.message);
+            }
+        }
+    }
 });

+ 79 - 1
frontend/saas-web/app/view/money/report/TotalRecDetail.js

@@ -156,5 +156,83 @@ Ext.define('saas.view.money.report.TotalRecDetail', {
     }, {
         dataIndex: '',
         flex: 1
-    }]
+    }],
+
+    // 自定义合计逻辑,直接使用后台返回的内容作为合计栏内容
+    mySummaryConfig: {
+        renderSummaryData: [],
+        mySummaryTpl: [
+            '<table class="x-grid-row-mysummary x-mmmmmmmmmmmm">',
+                '<tbody>',
+                    '<tr>',
+                        '<tpl for=".">',
+                        '<td class="x-grid-cell x-grid-td x-grid-cell-numbercolumn-1526 x-unselectable x-mysummary-item">',
+                            '<div class="x-grid-cell-inner x-mysummary-item-cell">{label}',
+                                '{str}',
+                            '</div>',
+                        '</td>',
+                        '</tpl>',
+                    '</tr>',
+                '</tbody>',
+            '</table>',
+        ],
+        initSummarys: function() {
+            var me = this,
+            summaryData = me.renderSummaryData;
+            
+            var summarys = [{
+                str: summaryData
+            }];
+            this.summarys = summarys;
+            return summarys;
+        },
+        updateSummarys: function() {
+            var me = this,
+            summaryData = me.renderSummaryData;
+            var summarys = [{
+                str: summaryData
+            }];
+            this.summarys = summarys;
+            return summarys;
+        },
+        applySummarys: function(response) {
+            var me = this,
+            grid = me.grid;
+            var _res = response,
+            _calculateProperty = grid.calculateProperty;
+
+            var _root = _calculateProperty.split('.')[0];
+            eval('var ' + _root + ' = _res[_root];');
+            try {
+                summaryData = [];
+                try {
+                    summaryData = eval(_calculateProperty);
+
+                    if(!Ext.isArray(summaryData)) {
+                        summaryData = [];
+                    }
+                }catch(e) {
+                    // don't care this...
+                }
+                //自定义逻辑
+                if(summaryData.length>0){
+                    let message = '';
+                    Ext.each(summaryData,function(obj,index){
+                        recAmount = obj.cm_endamount-obj.cm_endpreamount
+                        if(index==0){
+                            message+='<span>应收余额(' + obj.cm_currency + ')(元):'+saas.util.BaseUtil.numberFormat(recAmount, 2, true)+'</span>'
+                        }else{
+                            message+='<span style="margin:0 0 0 20px">应收余额(' + obj.cm_currency + ')(元):'+saas.util.BaseUtil.numberFormat(recAmount, 2, true)+'</span>'
+                        }
+                    });
+                    me.renderSummaryData =message;
+                }else{
+                    me.renderSummaryData = '';
+                }
+            } catch (e) {
+                console.error(e);
+                saas.util.BaseUtil.showErrorToast(e.message);
+            }
+        }
+    }
 });

+ 18 - 3
frontend/saas-web/app/view/purchase/report/PurchasePay.js

@@ -163,7 +163,7 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
             summaryData = me.renderSummaryData;
             
             var summarys = [{
-                str: JSON.stringify(summaryData)
+                str: summaryData
             }];
             this.summarys = summarys;
             return summarys;
@@ -172,7 +172,7 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
             var me = this,
             summaryData = me.renderSummaryData;
             var summarys = [{
-                str: JSON.stringify(summaryData)
+                str: summaryData
             }];
             this.summarys = summarys;
             return summarys;
@@ -196,7 +196,22 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
                 }catch(e) {
                     // don't care this...
                 }
-                me.renderSummaryData =summaryData;
+                //自定义逻辑
+                if(summaryData.length>0){
+                    let message = '';
+                    let tax = 0;//税额
+                    let payAmount = 0;//付款金额
+                    Ext.each(summaryData,function(obj,index){
+                        tax+=(obj.pi_total-obj.pi_nettotal)*obj.pi_rate
+                        payAmount = obj.pbd_nowbalance
+                        message+='<span style="margin:0 0 0 20px">付款金额(' + obj.pi_currency + ')(元):'+saas.util.BaseUtil.numberFormat(payAmount, 2, true)+'</span>'
+                    });
+                    message = '税额(本位币)(元):'+saas.util.BaseUtil.numberFormat(tax, 2, true)+message
+                    me.renderSummaryData =message;
+                }else{
+                    message = '税额(本位币)(元):0'
+                    me.renderSummaryData =message;
+                }
             } catch (e) {
                 console.error(e);
                 saas.util.BaseUtil.showErrorToast(e.message);

+ 6 - 0
frontend/saas-web/app/view/sale/b2b/PurchaseDetail.js

@@ -228,9 +228,15 @@ Ext.define('saas.view.sale.b2b.PurchaseDetail', {
             toolBtns: [{
                 xtype: 'button',
                 text: '转销售',
+                bind:{
+                    hidden:'{hideButton}'
+                },
                 handler: 'turnSale',
             }, {
                 xtype: 'button',
+                bind:{
+                    hidden:'{hideButton}'
+                },
                 text: '更新',
                 handler: 'onSave',
             }]

+ 9 - 0
frontend/saas-web/app/view/sale/b2b/PurchaseDetailModel.js

@@ -10,5 +10,14 @@ Ext.define('saas.view.sale.b2b.PurchaseDetailModel', {
         showAuditBtn: false, // 显示审核、反审核按钮
         showPrintBtn: false, // 显示打印按钮
         configurable: true, // 显示界面设置按钮
+    },
+
+    formulas:{
+        hideButton:{
+            bind:'{sa_statuscode}',
+            get:function(value){
+                return value == 'CLOSE';
+            }
+        }
     }
 });

+ 3 - 3
frontend/saas-web/app/view/sale/report/SaleProfit.js

@@ -155,7 +155,7 @@ Ext.define('saas.view.sale.report.SaleProfit', {
         dataIndex: 'pd_ordertotal',
         xtype: 'numbercolumn',
         width:120,
-        hidden:true,
+        //hidden:true,
         renderer : function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         }
@@ -165,7 +165,7 @@ Ext.define('saas.view.sale.report.SaleProfit', {
         dataIndex: 'pd_ordertotal*pi_rate',
         xtype: 'numbercolumn',
         width:120,
-        //hidden:true,
+        hidden:true,
         renderer : function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
@@ -193,7 +193,7 @@ Ext.define('saas.view.sale.report.SaleProfit', {
         }
     }, {
         text: '毛利润(元)',
-        dataIndex: 'pd_profit*pi_rate',
+        dataIndex: 'pd_profit',
         exportFormat: 'Amount',
         xtype: 'numbercolumn',
         renderer: function(v) {

+ 80 - 1
frontend/saas-web/app/view/sale/report/SaleRec.js

@@ -146,6 +146,85 @@ Ext.define('saas.view.sale.report.SaleRec', {
         text: '备注',
         dataIndex: 'rb_remark',
         width: 250
-    }]
+    }],
+
+    // 自定义合计逻辑,直接使用后台返回的内容作为合计栏内容
+    mySummaryConfig: {
+        renderSummaryData: [],
+        mySummaryTpl: [
+            '<table class="x-grid-row-mysummary x-mmmmmmmmmmmm">',
+                '<tbody>',
+                    '<tr>',
+                        '<tpl for=".">',
+                        '<td class="x-grid-cell x-grid-td x-grid-cell-numbercolumn-1526 x-unselectable x-mysummary-item">',
+                            '<div class="x-grid-cell-inner x-mysummary-item-cell">{label}',
+                                '{str}',
+                            '</div>',
+                        '</td>',
+                        '</tpl>',
+                    '</tr>',
+                '</tbody>',
+            '</table>',
+        ],
+        initSummarys: function() {
+            var me = this,
+            summaryData = me.renderSummaryData;
+            
+            var summarys = [{
+                str: summaryData
+            }];
+            this.summarys = summarys;
+            return summarys;
+        },
+        updateSummarys: function() {
+            var me = this,
+            summaryData = me.renderSummaryData;
+            var summarys = [{
+                str: summaryData
+            }];
+            this.summarys = summarys;
+            return summarys;
+        },
+        applySummarys: function(response) {
+            var me = this,
+            grid = me.grid;
+            var _res = response,
+            _calculateProperty = grid.calculateProperty;
+
+            var _root = _calculateProperty.split('.')[0];
+            eval('var ' + _root + ' = _res[_root];');
+            try {
+                summaryData = [];
+                try {
+                    summaryData = eval(_calculateProperty);
+
+                    if(!Ext.isArray(summaryData)) {
+                        summaryData = [];
+                    }
+                }catch(e) {
+                    // don't care this...
+                }
+                //自定义逻辑
+                if(summaryData.length>0){
+                    let message = '';
+                    let tax = 0;//税额
+                    let recAmount = 0;//收款金额
+                    Ext.each(summaryData,function(obj,index){
+                        tax+=(obj.pi_total-obj.pi_nettotal)*obj.pi_rate
+                        recAmount = obj.rbd_nowbalance
+                        message+='<span style="margin:0 0 0 20px">收款金额(' + obj.pi_currency + ')(元):'+saas.util.BaseUtil.numberFormat(recAmount, 2, true)+'</span>'
+                    });
+                    message = '税额(本位币)(元):'+saas.util.BaseUtil.numberFormat(tax, 2, true)+message
+                    me.renderSummaryData =message;
+                }else{
+                    message = '税额(本位币)(元):0'
+                    me.renderSummaryData =message;
+                }
+            } catch (e) {
+                console.error(e);
+                saas.util.BaseUtil.showErrorToast(e.message);
+            }
+        }
+    }
 
 });