Browse Source

Merge remote-tracking branch 'origin/dev'

zhuth 7 years ago
parent
commit
6b77489947
77 changed files with 1264 additions and 286 deletions
  1. 4 2
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 7 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Operation.java
  3. 3 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/EndProductMapper.java
  4. 12 3
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/EndProductServiceImpl.java
  5. 20 0
      applications/commons/commons-server/src/main/resources/mapper/EndProductMapper.xml
  6. 25 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/CurrencyController.java
  7. 40 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java
  8. 3 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CurrencyMapper.java
  9. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CustAramountMapper.java
  10. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendApamountMapper.java
  11. 42 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  12. 15 10
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustAramountServiceImpl.java
  13. 19 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  14. 15 10
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendApamountServiceImpl.java
  15. 11 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  16. 20 0
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  17. 12 0
      applications/document/document-server/src/main/resources/mapper/CurrencyMapper.xml
  18. 7 0
      applications/document/document-server/src/main/resources/mapper/CustAramountMapper.xml
  19. 7 1
      applications/document/document-server/src/main/resources/mapper/VendApamountMapper.xml
  20. 10 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/SubledgerController.java
  21. 2 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/SubledgerMapper.java
  22. 139 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Custmonth.java
  23. 20 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/CustomerCheckView.java
  24. 40 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Payablesdetail.java
  25. 40 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Receivablesdetail.java
  26. 139 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Vendmonth.java
  27. 20 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VendorAcountView.java
  28. 1 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/SubledgerService.java
  29. 24 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/SubledgerServiceImpl.java
  30. 51 27
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  31. 6 3
      applications/money/money-server/src/main/resources/mapper/CustmonthMapper.xml
  32. 3 1
      applications/money/money-server/src/main/resources/mapper/CustomerCheckViewMapper.xml
  33. 7 2
      applications/money/money-server/src/main/resources/mapper/PayablesdetailMapper.xml
  34. 7 2
      applications/money/money-server/src/main/resources/mapper/ReceivablesdetailMapper.xml
  35. 17 0
      applications/money/money-server/src/main/resources/mapper/SubledgerMapper.xml
  36. 5 2
      applications/money/money-server/src/main/resources/mapper/VendmonthMapper.xml
  37. 2 0
      applications/money/money-server/src/main/resources/mapper/VendorAcountViewMapper.xml
  38. 1 0
      applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml
  39. 3 2
      applications/money/money-server/src/main/resources/mapper/VerificationdetMapper.xml
  40. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/ProdIODetailMapper.java
  41. 10 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  42. 4 0
      applications/purchase/purchase-server/src/main/resources/mapper/ProdIODetailMapper.xml
  43. 1 1
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml
  44. 9 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/apcheck/SaveOperationDataDetail.java
  45. 3 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ApCheckServiceImpl.java
  46. 8 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleDownServiceImpl.java
  47. 2 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/SaleDownServiceImpl.java
  48. 12 0
      applications/transfers/transfers-server/src/main/resources/mapper/SaledownMapper.xml
  49. 1 1
      frontend/saas-web/app/view/core/dbfind/ConDbfindTrigger.js
  50. 5 10
      frontend/saas-web/app/view/core/form/FormPanel.js
  51. 0 18
      frontend/saas-web/app/view/document/currencys/DatalistController.js
  52. 2 0
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  53. 46 2
      frontend/saas-web/app/view/money/payBalance/FormPanelController.js
  54. 3 0
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  55. 47 2
      frontend/saas-web/app/view/money/recBalance/FormPanelController.js
  56. 4 4
      frontend/saas-web/app/view/money/report/AccountBalance.js
  57. 31 5
      frontend/saas-web/app/view/money/report/CustomerCheck.js
  58. 4 4
      frontend/saas-web/app/view/money/report/OtherIODetail.js
  59. 61 28
      frontend/saas-web/app/view/money/report/PayDetail.js
  60. 62 30
      frontend/saas-web/app/view/money/report/RecDetail.js
  61. 18 1
      frontend/saas-web/app/view/money/report/TotalPayDetail.js
  62. 15 1
      frontend/saas-web/app/view/money/report/TotalRecDetail.js
  63. 32 6
      frontend/saas-web/app/view/money/report/VendorCheck.js
  64. 19 35
      frontend/saas-web/app/view/money/verification/FormPanel.js
  65. 14 0
      frontend/saas-web/app/view/money/verification/FormPanelController.js
  66. 5 0
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js
  67. 5 0
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js
  68. 8 38
      frontend/saas-web/app/view/sale/b2b/Purchase.js
  69. 2 2
      frontend/saas-web/app/view/sale/b2b/PurchaseDetail.js
  70. 1 1
      frontend/saas-web/app/view/sale/b2b/RecDataList.js
  71. 15 14
      frontend/saas-web/app/view/sale/b2b/recformpanel/FormPanel.js
  72. 0 8
      frontend/saas-web/app/view/sale/b2b/recformpanel/FormPanelController.js
  73. 1 1
      frontend/saas-web/app/view/sale/b2b/reconciliation/DataList.js
  74. 3 3
      frontend/saas-web/app/view/sale/b2b/reconciliation/FormPanel.js
  75. 1 0
      frontend/saas-web/app/view/sale/b2b/reconciliation/FormPanelModel.js
  76. 3 1
      frontend/saas-web/app/view/sale/report/SaleProfit.js
  77. 2 2
      frontend/saas-web/ext/packages/ux/src/feature/MySummary.js

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

@@ -46,11 +46,12 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_TURNPURCHASE_BEFORE(79351, "请先获取UU号(供应商:<u>%s</u>),再进行下单操作"),
     BIZ_NOVENDOR_SAVE(79352, "选择的供应商不存在或已禁用"),
     BIZ_NOCURRENCY_SAVE(79353, "选择的币别不存在"),
-    BIZ_NOPERIOD_UPDATE(79354, "期初日期所在期间结账,不能修改期初金额"),
-    BIZ_NOPERIOD_DELETE(79355, "期初日期所在期间结账,不能删除"),
+    BIZ_NOPERIOD_UPDATE(79354, "期初日期所在期间结账,不能修改期初金额"),
+    BIZ_NOPERIOD_DELETE(79355, "期初日期所在期间结账,不能删除"),
     BIZ_NOCUST_SAVE(79356, "选择的客户不存在或已禁用"),
     BIZ_SAMEVENDAP_SAVE(79357, "已存在相同供应商和币别的期初数据,不能新增"),
     BIZ_SAMECUSTAR_SAVE(79358, "已存在相同客户和币别的期初数据,不能新增"),
+    BIZ_MAINCURRENCY_DELETE(79359, "该币别为本位币,不能删除"),
 
     NO_OPRATIONDATA(79400,"无可操作单据"),
     NULL_DATA(23232,"无数据"),
@@ -92,6 +93,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     PURCHASE_ORDER_HASAUDIT(70002, "存在已审核单据,单据编号:%s"),
     PURCHASE_ORDER_HASUNAUDIT(70003, "存在未审核单据,单据编号:%s"),
     PURCHASE_ORDER_HASUPLOAD(70004, "已上传优软商务平台的采购订单不允许反审核,如交易信息发生变更请关闭该订单重新新增订单"),
+    PURCHASE_INOUTORDER_HASCHECK(70005, "反审核失败!该单存在已对账明细,不允许反审核"),
 
 
     //销售

+ 7 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Operation.java

@@ -87,11 +87,18 @@ public enum Operation {
      */
     TURNPURCHASE("msg.turnPurchase","msg.turnSuccess"),
 
+    /**
+     * 转销售
+     */
+    TURNSALE("msg.turnSale","msg.turnSuccess"),
+
     /**
      * 转销售验退单
      */
     TURNPRODOUTRETURN("msg.turnProdIOReturn","msg.turnSuccess");
 
+
+
     private final String title;
     private final String result;
 

+ 3 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/EndProductMapper.java

@@ -26,4 +26,7 @@ public interface EndProductMapper {
     int checkPay(Long companyId);
     int checkRec(Long companyId);
     void deleteSub(Long companyId);
+    void updateSubByPeriod(@Param("ym") String ym, @Param("companyId") Long companyId);
+    void updateCustArByPeriod(@Param("ym") String ym, @Param("companyId") Long companyId);
+    void updateVendApByPeriod(@Param("ym") String ym, @Param("companyId") Long companyId);
 }

+ 12 - 3
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/EndProductServiceImpl.java

@@ -32,7 +32,6 @@ public class EndProductServiceImpl implements EndProductService {
     private MessagelogMapper messagelogMapper;
     @Autowired
     private EndProductMapper endProductMapper;
-
     @Override
     public Map<String, Object> getPeriodData(PageRequest page, ListReqDTO listReqDTO) {
         //设置分页
@@ -76,20 +75,30 @@ public class EndProductServiceImpl implements EndProductService {
     @Transactional
     @Override
     public void unEndAccount() {
-        int payc = endProductMapper.checkPay(BaseContextHolder.getCompanyId());
+        //期初被使用可以反结账不做限制
+        /*
+         int payc = endProductMapper.checkPay(BaseContextHolder.getCompanyId());
         int recc = endProductMapper.checkRec(BaseContextHolder.getCompanyId());
         if(payc !=0 || recc != 0){
             throw new BizException(500, BizExceptionCode.EARLY_USERING.getMessage());
         }
         endProductMapper.deleteSub(BaseContextHolder.getCompanyId());
-
+        */
         String period = endProductMapper.selectUnPeriod(BaseContextHolder.getCompanyId());
         if (StringUtils.isEmpty(period)){
             throw new BizException(BizExceptionCode.BIZ_UNENDPRODUCT);
         }else{
+            //将sl_ym=当前期间的期初信息更新到上一期间
+            endProductMapper.updateSubByPeriod(period,BaseContextHolder.getCompanyId());
+            //将客户、供应商期初未当前期间的更新到上一期间
+            endProductMapper.updateCustArByPeriod(period,BaseContextHolder.getCompanyId());
+            endProductMapper.updateVendApByPeriod(period,BaseContextHolder.getCompanyId());
+            //更新明细账结账状态
             endProductMapper.updateRe(period, BaseContextHolder.getCompanyId());
             endProductMapper.updatePa(period, BaseContextHolder.getCompanyId());
+            //更新期间表状态
             endProductMapper.updatePeriodStatus(0L, period, BaseContextHolder.getCompanyId());
+            //记录日志
             messageLogService.customizeLog(new DocBaseDTO(Long.valueOf(period), period, "UNENDPRODUCT"), Operation.UNENDPRODUCT);
         }
     }

+ 20 - 0
applications/commons/commons-server/src/main/resources/mapper/EndProductMapper.xml

@@ -130,4 +130,24 @@
     DELETE from subledger where sl_ym =
     (select min(pd_detno) from periodsdetail where pd_status=0 and companyid=#{companyId}) and companyid = #{companyId}
   </delete>
+    <update  id="updateSubByPeriod">
+        update subledger
+        set sl_ym=#{ym},
+        sl_date=str_to_date(CONCAT(#{ym},'01'), '%Y%m%d')
+        where companyid = #{companyId} and
+        sl_ym >=  (select min(pd_detno) from periodsdetail where pd_status=0 and companyid=#{companyId})
+        and sl_kind='期初余额'
+    </update>
+    <update  id="updateCustArByPeriod">
+        update custAramount
+        set ca_begindate=str_to_date(CONCAT(#{ym},'01'), '%Y%m%d')
+        where companyid = #{companyId} and ca_begindate is not null and
+        date_format(ca_begindate, '%Y%m' ) = (select min(pd_detno) from periodsdetail where pd_status=0 and companyid=#{companyId})
+    </update>
+    <update  id="updateVendApByPeriod">
+        update Vendapamount
+        set va_begindate=str_to_date(CONCAT(#{ym},'01'), '%Y%m%d')
+        where companyid = #{companyId} and va_begindate is not null and
+        date_format(va_begindate, '%Y%m' ) >= (select min(pd_detno) from periodsdetail where pd_status=0 and companyid=#{companyId})
+    </update>
 </mapper>

+ 25 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/CurrencyController.java

@@ -4,16 +4,22 @@ import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.dto.DocReqDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
+import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.dto.CurrencyDTO;
 import com.usoftchina.saas.document.entities.Currency;
+import com.usoftchina.saas.document.mapper.CurrencyMapper;
 import com.usoftchina.saas.document.service.CurrencyService;
+import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -26,6 +32,8 @@ public class CurrencyController {
 
     @Autowired
     private CurrencyService currencyService;
+    @Autowired
+    private CurrencyMapper currencyMapper;
 
     @GetMapping("/list")
     public Result getAll(@PageDefault(number = 1, size = 10) PageRequest pageRequest, ListReqDTO listReqDTO){
@@ -52,8 +60,24 @@ public class CurrencyController {
 
     @PostMapping("/delete/{id}")
     public Result delete(@PathVariable("id") Long id){
+        Currency currency = currencyService.findByPrimaryKey(id);
+        if(currency.getCr_standard()==1){
+            //本位币无法删除
+            throw new BizException(BizExceptionCode.BIZ_MAINCURRENCY_DELETE);
+        }
+        //校验是否可以删除币别
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("v_type","currency");
+        map.put("v_id",0);
+        map.put("v_code",currency.getCr_name());
+        map.put("v_companyid",BaseContextHolder.getCompanyId());
+        map.put("v_res","");
+        currencyMapper.check(map);
+        Object result =  map.get("v_res");
+        if(!StringUtils.isEmpty(result)){
+            throw new BizException(-999999,result.toString());
+        }
         currencyService.removeByPrimaryKey(id);
         return Result.success();
     }
-
 }

+ 40 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java

@@ -40,4 +40,44 @@ public interface BankinformationMapper extends CommonBaseMapper<Bankinformation>
 
     int getBankNameSameById(@Param("name") String name, @Param("id") Long id, @Param("companyId") Long company);
 
+    /**
+     * 查询收款单中使用此资金账户的次数
+     * @param oldBankName
+     * @param companyId
+     * @return
+     */
+    int selectCountFromRecbalanceDet(@Param("oldBankName") String oldBankName, @Param("companyId") Long companyId);
+
+    /**
+     * 查询付款单中使用此资金账户的次数
+     * @param oldBankName
+     * @param companyId
+     * @return
+     */
+    int selectCountFromPaybalanceDet(@Param("oldBankName") String oldBankName, @Param("companyId") Long companyId);
+
+    /**
+     * 查询其他收入单中使用此资金账户的次数
+     * @param oldBankName
+     * @param companyId
+     * @return
+     */
+    int selectCountFromOthreceipts(@Param("oldBankName") String oldBankName, @Param("companyId") Long companyId);
+
+    /**
+     * 查询其他支出单中使用此资金账户的次数
+     * @param oldBankName
+     * @param companyId
+     * @return
+     */
+    int selectCountFromOthspendings(@Param("oldBankName") String oldBankName, @Param("companyId") Long companyId);
+
+    /**
+     * 查询资金转存中使用此资金账户的次数
+     * @param oldBankName
+     * @param companyId
+     * @return
+     */
+    int selectCountFromFundtransferDetail(@Param("oldBankName") String oldBankName, @Param("companyId") Long companyId);
+
 }

+ 3 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CurrencyMapper.java

@@ -6,6 +6,7 @@ import com.usoftchina.saas.document.entities.Currency;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 public interface CurrencyMapper extends CommonBaseMapper<Currency> {
 
@@ -17,5 +18,7 @@ public interface CurrencyMapper extends CommonBaseMapper<Currency> {
 
     int selectCountByName(@Param("name") String name, @Param("companyId") Long companyId);
 
+    void check(Map<String, Object> map);
+
     CurrencyDTO getStandard(@Param("companyId") Long companyId);
 }

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CustAramountMapper.java

@@ -39,4 +39,6 @@ public interface CustAramountMapper extends CommonBaseMapper<CustAramount> {
     void updateCodeAndNameByCustid(@Param("cu_id") Long cu_id);
 
     void deleteByCustid(@Param("cu_id") Long cu_id);
+
+    int checkVerification(@Param("cu_id") Long cu_id,@Param("currency") String currency);
 }

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendApamountMapper.java

@@ -37,4 +37,6 @@ public interface VendApamountMapper extends CommonBaseMapper<VendApamount> {
     void batchInsert(List<VendApamount> vendApamounts);
 
     void batchUpdate(List<VendApamount> vendApamounts);
+
+    int checkVerification(@Param("ve_id") Long ve_id,@Param("currency") String currency);
 }

+ 42 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java

@@ -53,7 +53,8 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
     @Transactional
     @Override
     public boolean save(Bankinformation bankinformation){
-        bankinformation.setCompanyId(BaseContextHolder.getCompanyId());
+        Long companyId = BaseContextHolder.getCompanyId();
+        bankinformation.setCompanyId(companyId);
         bankinformation.setBk_income(new Double(0));
         bankinformation.setBk_spending(new Double(0));
         bankinformation.setCreateTime(new Date());
@@ -95,6 +96,12 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
             bankinformation.setUpdaterId(BaseContextHolder.getUserId());
             bankinformation.setUpdaterName(BaseContextHolder.getUserName());
             bankinformation.setUpdateTime(new Date());
+            //判断是否已修改账户名称
+            String oldBankName = bankinformationMapper.selectByPrimaryKey(bid).getBk_bankname();
+            if (!bankinformation.getBk_bankname().equals(oldBankName)) {
+                enableUpdateBankName(oldBankName, companyId);
+            }
+
             //判断是否能修改期初金额
             Double beginamount = bankinformationMapper.selectamount(bankinformation.getId());
             Double fbeginamount = bankinformation.getBk_beginamount();
@@ -139,6 +146,40 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
         return true;
     }
 
+    /**
+     * 判断是否可以更新资金账户名称
+     * @param oldBankName
+     * @param companyId
+     */
+    private void enableUpdateBankName(String oldBankName, Long companyId){
+        int count = 0;
+        //收款单  recbalanceDet
+        count = bankinformationMapper.selectCountFromRecbalanceDet(oldBankName, companyId);
+        if (count > 0) {
+            throw new BizException(BizExceptionCode.BIZ_RELUPDATE_CODEANDNAME);
+        }
+        //付款单  paybalanceDet
+        count = bankinformationMapper.selectCountFromPaybalanceDet(oldBankName, companyId);
+        if (count > 0) {
+            throw new BizException(BizExceptionCode.BIZ_RELUPDATE_CODEANDNAME);
+        }
+        //其他收入单  othreceipts
+        count = bankinformationMapper.selectCountFromOthreceipts(oldBankName, companyId);
+        if (count > 0) {
+            throw new BizException(BizExceptionCode.BIZ_RELUPDATE_CODEANDNAME);
+        }
+        //其他支出单  othspendings
+        count = bankinformationMapper.selectCountFromOthspendings(oldBankName, companyId);
+        if (count > 0) {
+            throw new BizException(BizExceptionCode.BIZ_RELUPDATE_CODEANDNAME);
+        }
+        //资金转存  fundtransferdetail
+        count = bankinformationMapper.selectCountFromFundtransferDetail(oldBankName, companyId);
+        if (count > 0) {
+            throw new BizException(BizExceptionCode.BIZ_RELUPDATE_CODEANDNAME);
+        }
+    }
+
     @Transactional
     @Override
     public boolean removeByPrimaryKey(int id){

+ 15 - 10
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustAramountServiceImpl.java

@@ -90,6 +90,11 @@ public class CustAramountServiceImpl extends CommonBaseServiceImpl<CustAramountM
             if(checkBeginData > 0){
                 throw new BizException(BizExceptionCode.BIZ_NOPERIOD_DELETE);
             }
+            //已被核销,不能删除
+            int hasVerify=getMapper().checkVerification(custAramount.getCa_custid(),custAramount.getCa_currency());
+            if(hasVerify>0){
+                throw new BizException(BizExceptionCode.BIZ_RELDELETE);
+            }
             //删除中间表subledger数据
             String delcond="sl_kind='期初余额' and sl_currency='"+custAramount.getCa_currency()+"' and sl_custid='"+custAramount.getCa_custid()+"'"+
                     " and sl_ym="+ca_begindate;
@@ -347,17 +352,17 @@ public class CustAramountServiceImpl extends CommonBaseServiceImpl<CustAramountM
                         custAramount.setCa_recamount(oldCustAramount.getCa_recamount());
                         custAramount.setCa_preamount(oldCustAramount.getCa_preamount());
                         custAramount.setCa_begindate(oldCustAramount.getCa_begindate());
+                        custAramount.setUpdaterId(companyId);
+                        custAramount.setUpdateTime(new Date());
+                        //期初日期是否已结账
+                        int checkBeginData = getMapper().checkBeginData(sdf.format(custAramount.getCa_begindate()),companyId);
+                        if(checkBeginData > 0){
+                            err.append("第" + (i + 3) + "行 : "+BizExceptionCode.BIZ_NOPERIOD_UPDATE.getMessage()+"!<br/> ");
+                        }
+                        //更新余额
+                        custAramount.setCa_leftamount(custAramount.getCa_beginaramount()-custAramount.getCa_beginprerecamount()+custAramount.getCa_recamount()-custAramount.getCa_preamount());
+                        updateList.add(custAramount);
                     }
-                    custAramount.setUpdaterId(companyId);
-                    custAramount.setUpdateTime(new Date());
-                    //期初日期是否已结账
-                    int checkBeginData = getMapper().checkBeginData(sdf.format(custAramount.getCa_begindate()),companyId);
-                    if(checkBeginData > 0){
-                        err.append("第" + (i + 3) + "行 : "+BizExceptionCode.BIZ_NOPERIOD_UPDATE.getMessage()+"!<br/> ");
-                    }
-                    //更新余额
-                    custAramount.setCa_leftamount(custAramount.getCa_beginaramount()-custAramount.getCa_beginprerecamount()+custAramount.getCa_recamount()-custAramount.getCa_preamount());
-                    updateList.add(custAramount);
                 }else{
                     //新增
                     custAramount.setCreatorId(companyId);

+ 19 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java

@@ -67,6 +67,8 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
     private CustAramountService custAramountService;
     @Autowired
     private CustAramountMapper custAramountMapper;
+    @Autowired
+    private CurrencyMapper currencyMapper;
 
     @Override
     public PageInfo<CustomerList> getListData(PageRequest page, ListReqDTO req) {
@@ -488,6 +490,23 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
                     customerDTO.setCu_sellercode(employees.get(0).getEm_code());
                     customerDTO.setCu_sellername(employees.get(0).getEm_name());
                 }
+                //验证结算天数
+                Double promise = customerDTO.getCu_promisedays();
+                if (!StringUtils.isEmpty(promise)) {
+                    if (promise <= 0 || (promise - promise.intValue() != 0)) {
+                        err.append("客户编号为: " + customerDTO.getCu_code() + " 的结算天数: "+ promise +" 不为正整数,请确认数据是否正确");
+                        break;
+                    }
+                }
+                //币别验证
+                String currency = customerDTO.getCu_currency();
+                if (!StringUtils.isEmpty(currency)) {
+                    Integer count = currencyMapper.selectCountByName(currency, BaseContextHolder.getCompanyId());
+                    if (count == 0) {
+                        err.append("客户编号为: " + customerDTO.getCu_code() + " 的币别: "+ currency +" 在系统中不存在,请确认数据是否正确");
+                        break;
+                    }
+                }
                 customerDTO.setCu_status(Status.ENABLE.getDisplay());
                 customerDTO.setCu_statuscode(Status.ENABLE.name());
                 //编号不存在

+ 15 - 10
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendApamountServiceImpl.java

@@ -89,6 +89,11 @@ public class VendApamountServiceImpl extends CommonBaseServiceImpl<VendApamountM
             if(checkBeginData > 0){
                 throw new BizException(BizExceptionCode.BIZ_NOPERIOD_DELETE);
             }
+            //已被核销,不能删除
+            int hasVerify=getMapper().checkVerification(vendApamount.getVa_vendid(),vendApamount.getVa_currency());
+            if(hasVerify>0){
+                throw new BizException(BizExceptionCode.BIZ_RELDELETE);
+            }
             //删除中间表subledger数据
             String delcond="sl_kind='期初余额' and sl_currency='"+vendApamount.getVa_currency()+"' and sl_vendid='"+vendApamount.getVa_vendid()+"'"+
                     " and sl_ym="+va_begindate;
@@ -344,17 +349,17 @@ public class VendApamountServiceImpl extends CommonBaseServiceImpl<VendApamountM
                         vendApamount.setVa_payamount(oldVendApamount.getVa_payamount());
                         vendApamount.setVa_preamount(oldVendApamount.getVa_preamount());
                         vendApamount.setVa_begindate(oldVendApamount.getVa_begindate());
+                        vendApamount.setUpdaterId(companyId);
+                        vendApamount.setUpdateTime(new Date());
+                        //期初日期是否已结账
+                        int checkBeginData = getMapper().checkBeginData(sdf.format(vendApamount.getVa_begindate()),companyId);
+                        if(checkBeginData > 0){
+                            err.append("第" + (i + 3) + "行 : "+BizExceptionCode.BIZ_NOPERIOD_UPDATE.getMessage()+"!<br/> ");
+                        }
+                        //更新余额
+                        vendApamount.setVa_leftamount(vendApamount.getVa_beginapamount()-vendApamount.getVa_beginprepayamount()+vendApamount.getVa_payamount()-vendApamount.getVa_preamount());
+                        updateList.add(vendApamount);
                     }
-                    vendApamount.setUpdaterId(companyId);
-                    vendApamount.setUpdateTime(new Date());
-                    //期初日期是否已结账
-                    int checkBeginData = getMapper().checkBeginData(sdf.format(vendApamount.getVa_begindate()),companyId);
-                    if(checkBeginData > 0){
-                        err.append("第" + (i + 3) + "行 : "+BizExceptionCode.BIZ_NOPERIOD_UPDATE.getMessage()+"!<br/> ");
-                    }
-                    //更新余额
-                    vendApamount.setVa_leftamount(vendApamount.getVa_beginapamount()-vendApamount.getVa_beginprepayamount()+vendApamount.getVa_payamount()-vendApamount.getVa_preamount());
-                    updateList.add(vendApamount);
                 }else{
                     //新增
                     vendApamount.setCreatorId(companyId);

+ 11 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java

@@ -75,6 +75,9 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
     private  VendApamountService vendApamountService;
     @Autowired
     private VendApamountMapper vendApamountMapper;
+    @Autowired
+    private CurrencyMapper currencyMapper;
+
     @Value("${b2b.baseUrl.common}")
     private String b2bUrl;
 
@@ -479,6 +482,14 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
                 Vendor vendor = JSONObject.parseObject(main.getDd_maindata(), Vendor.class);
                 vendor.setVe_status(Status.ENABLE.getDisplay());
                 vendor.setVe_statuscode(Status.ENABLE.name());
+                //币别验证
+                String currency = vendor.getVe_currency();
+                if (!StringUtils.isEmpty(currency)) {
+                    Integer count = currencyMapper.selectCountByName(currency, companyId);
+                    if (count == 0) {
+                        throw new BizException(70110582, "供应商: " + vendor.getVe_code() + " 的币别: "+ currency +" 在系统中不存在,请确认数据是否正确");
+                    }
+                }
                 if (!StringUtils.isEmpty(vendor.getVe_type())) {
                     Vendorkind type = vendorkindService.getTypeByname(vendor.getVe_type());
                     if (null == type) {

+ 20 - 0
applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml

@@ -375,4 +375,24 @@
   <select id="getBankNameSameById" resultType="int">
     select count(*) from bankinformation where bk_bankname = #{name} and bk_id != #{id} and companyId =#{companyId}
   </select>
+
+  <select id="selectCountFromRecbalanceDet" resultType="int">
+    select count(*) from RecbalanceDet where rd_bankname = #{oldBankName} and companyid = #{companyId}
+  </select>
+
+  <select id="selectCountFromPaybalanceDet" resultType="int">
+    select count(*) from PaybalanceDet where pd_bankname = #{oldBankName} and companyid = #{companyId}
+  </select>
+
+  <select id="selectCountFromOthreceipts" resultType="int">
+    select count(*) from othreceipts where or_bankname = #{oldBankName} and companyid = #{companyId}
+  </select>
+
+  <select id="selectCountFromOthspendings" resultType="int">
+    select count(*) from Othspendings where os_bankname = #{oldBankName} and companyid = #{companyId}
+  </select>
+
+  <select id="selectCountFromFundtransferDetail" resultType="int">
+    select count(*) from FundtransferDetail where ftd_bankname = #{oldBankName} and companyid = #{companyId}
+  </select>
 </mapper>

+ 12 - 0
applications/document/document-server/src/main/resources/mapper/CurrencyMapper.xml

@@ -142,4 +142,16 @@
     <select id="getStandard" resultType="com.usoftchina.saas.document.dto.CurrencyDTO">
       select * from CURRENCYS where cr_standard = '1' and companyId = #{companyId}
     </select>
+
+    <select id="check" parameterMap="checkParamMap" statementType="CALLABLE">
+        CALL SP_LIMITBASE(?, ?, ?, ?,?)
+    </select>
+    <parameterMap id="checkParamMap" type="java.util.Map">
+        <parameter property="v_type" jdbcType="VARCHAR" mode="IN" />
+        <parameter property="v_id" jdbcType="INTEGER" mode="IN" />
+        <parameter property="v_code" jdbcType="VARCHAR" mode="IN" />
+        <parameter property="v_companyid" jdbcType="INTEGER" mode="IN" />
+        <parameter property="v_res" jdbcType="VARCHAR" mode="OUT" />
+    </parameterMap>
+
 </mapper>

+ 7 - 0
applications/document/document-server/src/main/resources/mapper/CustAramountMapper.xml

@@ -368,4 +368,11 @@
         delete from custaramount
         where ca_custid = #{cu_id}
     </delete>
+    <select id="checkVerification" resultType="java.lang.Integer">
+        select count(1) from subledger
+        where sl_kind='期初余额' and sl_custid=#{cu_id} and sl_currency=#{currency}
+        and (ifnull(sl_yamount,0)!=0
+             or exists(select 1 from verificationdet where vd_slid=sl_id)
+             or exists(select 1 from verificationdetail where vcd_slid=sl_id))
+    </select>
 </mapper>

+ 7 - 1
applications/document/document-server/src/main/resources/mapper/VendApamountMapper.xml

@@ -368,5 +368,11 @@
             where va_id = #{item.id}
         </foreach>
     </update>
-
+    <select id="checkVerification" resultType="java.lang.Integer">
+        select count(1) from subledger
+        where sl_kind='期初余额' and sl_vendid=#{ve_id} and sl_currency=#{currency}
+        and (ifnull(sl_yamount,0)!=0
+             or exists(select 1 from verificationdet where vd_slid=sl_id)
+             or exists(select 1 from verificationdetail where vcd_slid=sl_id))
+    </select>
 </mapper>

+ 10 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/SubledgerController.java

@@ -1,8 +1,10 @@
 package com.usoftchina.saas.money.controller;
 
+import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.money.mapper.SubledgerMapper;
+import com.usoftchina.saas.money.po.VerificationList;
 import com.usoftchina.saas.money.service.SubledgerService;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,4 +26,12 @@ public class SubledgerController {
     public Result getListData(PageRequest page, ListReqDTO condition){
         return Result.success(subledgerService.seleteList(page, condition));
     }
+
+    /**
+     * 核销单明细1放大镜特殊处理--应收转应收、应付转应付
+     */
+    @RequestMapping("/dbfindlist")
+    public Result getDbfindlistData(PageRequest page, ListReqDTO condition) {
+        return Result.success(subledgerService.getDbfindlistData(page, condition));
+    }
 }

+ 2 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/SubledgerMapper.java

@@ -32,4 +32,6 @@ public interface SubledgerMapper {
 
     void updateProdInOut(@Param("companyid") Long companyid , @Param("code") String code , @Param("kind") String kind ,
                          @Param("status") String status , @Param("statuscode") String statuscode);
+
+    List<Subledger>  selectSubledgerSpeBycondition(@Param("con") String con, @Param("companyId") Long companyId);
 }

+ 139 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Custmonth.java

@@ -35,4 +35,143 @@ public class Custmonth {
 
     private String cm_currency;
 
+    private Double cm_amount_cr;
+
+    private Double cm_rate;
+
+    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;
+    }
+
+    public String getCm_custname() {
+        return cm_custname;
+    }
+
+    public void setCm_custname(String cm_custname) {
+        this.cm_custname = cm_custname;
+    }
+
+    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;
+    }
+
+    public Double getCm_endamount() {
+        return cm_endamount;
+    }
+
+    public void setCm_endamount(Double cm_endamount) {
+        this.cm_endamount = cm_endamount;
+    }
+
+    public Integer getCompanyid() {
+        return companyid;
+    }
+
+    public void setCompanyid(Integer companyid) {
+        this.companyid = companyid;
+    }
+
+    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 String getCm_currency() {
+        return cm_currency;
+    }
+
+    public void setCm_currency(String cm_currency) {
+        this.cm_currency = cm_currency;
+    }
+
+    public Double getCm_amount_cr() {
+        return cm_amount_cr;
+    }
+
+    public void setCm_amount_cr(Double cm_amount_cr) {
+        this.cm_amount_cr = cm_amount_cr;
+    }
+
+    public Double getCm_rate() {
+        return cm_rate;
+    }
+
+    public void setCm_rate(Double cm_rate) {
+        this.cm_rate = cm_rate;
+    }
 }

+ 20 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/CustomerCheckView.java

@@ -13,6 +13,10 @@ public class CustomerCheckView {
 
     private  String pi_currency;
 
+    private Double pi_rate;
+
+    private Double pi_mytotal;
+
     private Date pi_date;
 
     private Integer pd_pdno;
@@ -45,6 +49,22 @@ public class CustomerCheckView {
 
     private Double pd_ordertotal;
 
+    public Double getPi_mytotal() {
+        return pi_mytotal;
+    }
+
+    public void setPi_mytotal(Double pi_mytotal) {
+        this.pi_mytotal = pi_mytotal;
+    }
+
+    public Double getPi_rate() {
+        return pi_rate;
+    }
+
+    public void setPi_rate(Double pi_rate) {
+        this.pi_rate = pi_rate;
+    }
+
     public Double getPd_ordertotal(){
         return pd_ordertotal;
     }

+ 40 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Payablesdetail.java

@@ -29,6 +29,14 @@ public class Payablesdetail {
 
     private Double pd_remain;
 
+    private Double pd_addpay_cr;
+
+    private Double pd_addpre_cr;
+
+    private Double pd_remain_cr;
+
+    private Double pd_rate;
+
     private Integer companyid;
 
     private Integer pd_status;
@@ -178,4 +186,36 @@ public class Payablesdetail {
     public void setPd_query(Integer pd_query) {
         this.pd_query = pd_query;
     }
+
+    public Double getPd_addpay_cr() {
+        return pd_addpay_cr;
+    }
+
+    public void setPd_addpay_cr(Double pd_addpay_cr) {
+        this.pd_addpay_cr = pd_addpay_cr;
+    }
+
+    public Double getPd_addpre_cr() {
+        return pd_addpre_cr;
+    }
+
+    public void setPd_addpre_cr(Double pd_addpre_cr) {
+        this.pd_addpre_cr = pd_addpre_cr;
+    }
+
+    public Double getPd_remain_cr() {
+        return pd_remain_cr;
+    }
+
+    public void setPd_remain_cr(Double pd_remain_cr) {
+        this.pd_remain_cr = pd_remain_cr;
+    }
+
+    public Double getPd_rate() {
+        return pd_rate;
+    }
+
+    public void setPd_rate(Double pd_rate) {
+        this.pd_rate = pd_rate;
+    }
 }

+ 40 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Receivablesdetail.java

@@ -29,6 +29,14 @@ public class Receivablesdetail {
 
     private Double rd_remain;
 
+    private Double rd_addrec_cr;
+
+    private Double rd_addpre_cr;
+
+    private Double rd_remain_cr;
+
+    private Double rd_rate;
+
     private Integer companyid;
 
     private Integer rd_status;
@@ -178,4 +186,36 @@ public class Receivablesdetail {
     public void setRd_query(Integer rd_query) {
         this.rd_query = rd_query;
     }
+
+    public Double getRd_addrec_cr() {
+        return rd_addrec_cr;
+    }
+
+    public void setRd_addrec_cr(Double rd_addrec_cr) {
+        this.rd_addrec_cr = rd_addrec_cr;
+    }
+
+    public Double getRd_addpre_cr() {
+        return rd_addpre_cr;
+    }
+
+    public void setRd_addpre_cr(Double rd_addpre_cr) {
+        this.rd_addpre_cr = rd_addpre_cr;
+    }
+
+    public Double getRd_remain_cr() {
+        return rd_remain_cr;
+    }
+
+    public void setRd_remain_cr(Double rd_remain_cr) {
+        this.rd_remain_cr = rd_remain_cr;
+    }
+
+    public Double getRd_rate() {
+        return rd_rate;
+    }
+
+    public void setRd_rate(Double rd_rate) {
+        this.rd_rate = rd_rate;
+    }
 }

+ 139 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Vendmonth.java

@@ -35,4 +35,143 @@ public class Vendmonth {
 
     private String vm_currency;
 
+    private Double vm_amount_cr;
+
+    private Double vm_rate;
+
+    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;
+    }
+
+    public void setVm_nowpreamount(Double vm_nowpreamount) {
+        this.vm_nowpreamount = vm_nowpreamount;
+    }
+
+    public Double getVm_endamount() {
+        return vm_endamount;
+    }
+
+    public void setVm_endamount(Double vm_endamount) {
+        this.vm_endamount = vm_endamount;
+    }
+
+    public Integer getCompanyid() {
+        return companyid;
+    }
+
+    public void setCompanyid(Integer companyid) {
+        this.companyid = companyid;
+    }
+
+    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 String getVm_currency() {
+        return vm_currency;
+    }
+
+    public void setVm_currency(String vm_currency) {
+        this.vm_currency = vm_currency;
+    }
+
+    public Double getVm_amount_cr() {
+        return vm_amount_cr;
+    }
+
+    public void setVm_amount_cr(Double vm_amount_cr) {
+        this.vm_amount_cr = vm_amount_cr;
+    }
+
+    public Double getVm_rate() {
+        return vm_rate;
+    }
+
+    public void setVm_rate(Double vm_rate) {
+        this.vm_rate = vm_rate;
+    }
 }

+ 20 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VendorAcountView.java

@@ -13,6 +13,10 @@ public class VendorAcountView {
 
     private String pi_currency;
 
+    private Double pi_rate;
+
+    private Double pi_mytotal;
+
     private Date pi_date;
 
     private Integer pd_pdno;
@@ -44,6 +48,22 @@ public class VendorAcountView {
     private int ym;
     private Double pd_ordertotal;
 
+    public Double getPi_rate() {
+        return pi_rate;
+    }
+
+    public void setPi_rate(Double pi_rate) {
+        this.pi_rate = pi_rate;
+    }
+
+    public Double getPi_mytotal() {
+        return pi_mytotal;
+    }
+
+    public void setPi_mytotal(Double pi_mytotal) {
+        this.pi_mytotal = pi_mytotal;
+    }
+
     public Double getPd_ordertotal(){
         return pd_ordertotal;
     }

+ 1 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/SubledgerService.java

@@ -11,4 +11,5 @@ import com.usoftchina.saas.page.PageRequest;
  **/
 public interface SubledgerService {
     PageInfo<Subledger> seleteList(PageRequest page, ListReqDTO reqDTO);
+    PageInfo<Subledger> getDbfindlistData(PageRequest page, ListReqDTO reqDTO);
 }

+ 24 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/SubledgerServiceImpl.java

@@ -52,4 +52,28 @@ public class SubledgerServiceImpl implements SubledgerService {
         subledgerList = subledgerMapper.selectSubledgerBycondition(con, companyId);
         return subledgerList;
     }
+
+    @Override
+    public PageInfo<Subledger> getDbfindlistData(PageRequest page, ListReqDTO reqDTO) {
+        //设置默认分页
+        if (null == page || page.getSize() == 0 || page.getNumber() == 0) {
+            page = new PageRequest();
+            page.setNumber(1);
+            page.setSize(10);
+        }
+        PageHelper.startPage(page.getNumber(), page.getSize());
+        List<Subledger> subledgerList = null;
+        Long companyId = BaseContextHolder.getCompanyId();
+        if (StringUtils.isEmpty(reqDTO)) {
+            return  null;
+        }
+        String con = reqDTO.getFinalCondition();
+        if (null == con) {
+            con = "1=1";
+        }
+        subledgerList = subledgerMapper.selectSubledgerSpeBycondition(con, companyId);
+        //取分页信息
+        PageInfo<Subledger> pageInfo = new PageInfo<Subledger>(subledgerList);
+        return pageInfo;
+    }
 }

+ 51 - 27
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java

@@ -137,6 +137,14 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
 
         Verification verification = BeanMapper.map(main,Verification.class);
         if(id.longValue() > 0 ){
+
+            //更新前判断数据库中的币别是否和当前币别一致
+            Verification oldVerification = getMapper().selectByPrimaryKey(id.intValue());
+            if(!oldVerification.getVc_currency().equals(main.getVc_currency())){
+                verificationdetailMapper.deleteByParentPrimaryKey(id);
+                verificationdetMapper.deleteByParentPrimaryKey(id);
+            }
+
             String kind = verification.getVc_kind();
             verification.setVc_kind(transferKind(kind));
             verification.setCompanyId(companyId);
@@ -212,36 +220,47 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
 
         String type = main.getVc_kind();
         type = transferKind(type);
+
+        for(Verificationdet det : items1){
+            //本次核销金额
+            Double nowbalanceDet = det.getVd_nowbalance()==null?new Double(0):det.getVd_nowbalance();
+            //单据金额
+            Double amount = det.getSl_namount();
+            //已核销金额
+            Double namount = det.getSl_namount()==null?new Double(0):det.getSl_namount();
+            //核销金额
+            if(amount.doubleValue()>0 && nowbalanceDet.doubleValue()<0){
+                String msg = BizExceptionCode.MONEY_NOWAMOUNT_POSITIVE.getMessage();
+                int code = BizExceptionCode.MONEY_NOWAMOUNT_POSITIVE.getCode();
+                String error = String.format(msg, det.getVd_slkind());
+                throw new BizException(code, error);
+            }
+            if(amount.doubleValue()<0 && nowbalanceDet.doubleValue()>0){
+                String msg = BizExceptionCode.MONEY_NOWAMOUNT_NEGATIVE.getMessage();
+                int code = BizExceptionCode.MONEY_NOWAMOUNT_NEGATIVE.getCode();
+                String error = String.format(msg, det.getVd_slkind());
+                throw new BizException(code, error);
+            }
+            Double nowbalance = det.getVd_nowbalance()==null?new Double(0):det.getVd_nowbalance();
+            if( Math.abs(namount.doubleValue()) <  Math.abs(nowbalanceDet.doubleValue()) ){
+                throw new BizException(500, BizExceptionCode.RECALANCE_OUTNOWBALANCE.getMessage());
+            }
+        }
         if(type.equals("receipts_offset_receivable") || type.equals("prepaid_offset_payable") ||
-                type.equals("receivable_offset_payable")){
+                type.equals("receivable_offset_payable")){//预收冲应收、预付冲应付、应收冲应付
             Double total1 = new Double(0);
             for(Verificationdet det : items1){
                 Double nowbalanceDet = det.getVd_nowbalance()==null?new Double(0):det.getVd_nowbalance();
                 total1 += nowbalanceDet;
-
-                //单据金额
-                Double amount = det.getSl_namount();
-                //核销金额
-                if(amount.doubleValue()>0 && nowbalanceDet.doubleValue()<0){
-                    String msg = BizExceptionCode.MONEY_NOWAMOUNT_POSITIVE.getMessage();
-                    int code = BizExceptionCode.MONEY_NOWAMOUNT_POSITIVE.getCode();
-                    String error = String.format(msg, det.getVd_slkind());
-                    throw new BizException(code, error);
-                }
-                if(amount.doubleValue()<0 && nowbalanceDet.doubleValue()>0){
-                    String msg = BizExceptionCode.MONEY_NOWAMOUNT_NEGATIVE.getMessage();
-                    int code = BizExceptionCode.MONEY_NOWAMOUNT_NEGATIVE.getCode();
-                    String error = String.format(msg, det.getVd_slkind());
-                    throw new BizException(code, error);
-                }
             }
             Double total2 = new Double(0);
             for(Verificationdetail detail : items2){
                 Double nowbalanceDet = detail.getVcd_nowbalance()==null?new Double(0):detail.getVcd_nowbalance();
                 total2 += nowbalanceDet;
-
                 //单据金额
                 Double amount = detail.getVcd_amount();
+                //已核销金额
+                Double namount = detail.getSl_namount()==null?new Double(0):detail.getSl_namount();
                 //核销金额
                 if(amount.doubleValue()>0 && nowbalanceDet.doubleValue()<0){
                     String msg = BizExceptionCode.MONEY_NOWAMOUNT_POSITIVE.getMessage();
@@ -255,20 +274,14 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
                     String error = String.format(msg, detail.getVcd_slkind());
                     throw new BizException(code, error);
                 }
+                if( Math.abs(namount.doubleValue()) <  Math.abs(nowbalanceDet.doubleValue()) ){
+                    throw new BizException(500, BizExceptionCode.RECALANCE_OUTNOWBALANCE.getMessage());
+                }
             }
             if(total1.doubleValue()!=total2.doubleValue()){
                 throw new BizException(500, BizExceptionCode.VERIFICATION_CHECK_BALANCE.getMessage());
             }
-        }else if(type.equals("receivable_to_receivable") || type.equals("payable_to_payable")){
-            for(Verificationdet det : items1){
-                Double namount = det.getSl_namount()==null?new Double(0):det.getSl_namount();
-                Double nowbalance = det.getVd_nowbalance()==null?new Double(0):det.getVd_nowbalance();
-                if(namount.doubleValue()<nowbalance.doubleValue()){
-                    throw new BizException(500, BizExceptionCode.RECALANCE_OUTNOWBALANCE.getMessage());
-                }
-            }
         }
-
     }
 
     //插入中间表
@@ -590,6 +603,11 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             if(items1!=null){
                 for(VerificationdetDTO det : items1){
                     Double nowbalanceDet = det.getVd_nowbalance()==null?new Double(0):det.getVd_nowbalance();
+                    Subledger sub = subledgerMapper.selectByPrimaryKey(Math.toIntExact(det.getVd_slid()));
+                    if (sub != null && sub.getSl_preamount() != 0 &&
+                            ("receivable_to_receivable".equals(verificationDTO.getVc_kind()) || "payable_to_payable".equals(verificationDTO.getVc_kind()))) {
+                        nowbalanceDet=-1*nowbalanceDet;
+                    }
                     updateAuditSubledeger(det.getVd_slid(),nowbalanceDet);
                 }
             }
@@ -879,6 +897,12 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         List<Verificationdetail> items2 = verificationdetailMapper.selectByFK(id);
         for(Verificationdet det : items1){
             Double nowbalanceDet = det.getVd_nowbalance()==null?new Double(0):det.getVd_nowbalance();
+            Subledger sub = subledgerMapper.selectByPrimaryKey(Math.toIntExact(det.getVd_slid()));
+            if (sub != null && sub.getSl_preamount() != 0 &&
+                    ("receivable_to_receivable".equals(verificationDTO.getVc_kind()) || "payable_to_payable".equals(verificationDTO.getVc_kind())
+                    || "应收转应收".equals(verificationDTO.getVc_kind()) || "应付转应付".equals(verificationDTO.getVc_kind()))) {
+                nowbalanceDet=-1*nowbalanceDet;
+            }
             updateResAuditSubledeger(det.getVd_slid(),nowbalanceDet);
         }
         for(Verificationdetail detail : items2){

+ 6 - 3
applications/money/money-server/src/main/resources/mapper/CustmonthMapper.xml

@@ -8,9 +8,11 @@
     <result column="cm_custcode" property="cm_custcode" jdbcType="VARCHAR" />
     <result column="cm_custname" property="cm_custname" jdbcType="VARCHAR" />
     <result column="cm_beginamount" property="cm_beginamount" jdbcType="DOUBLE" />
-   <result column="cm_nowamount" property="cm_nowamount" jdbcType="DOUBLE" />
+    <result column="cm_nowamount" property="cm_nowamount" jdbcType="DOUBLE" />
     <result column="cm_nowpreamount" property="cm_nowpreamount" jdbcType="DOUBLE" />
     <result column="cm_endamount" property="cm_endamount" jdbcType="DOUBLE" />
+    <result column="cm_amount_cr" property="cm_amount_cr" jdbcType="DOUBLE" />
+    <result column="cm_rate" property="cm_rate" jdbcType="DOUBLE" />
     <result column="companyid" property="companyid" jdbcType="INTEGER" />
     <result column="cm_beginpreamount" property="cm_beginpreamount" jdbcType="DOUBLE" />
     <result column="cm_nowpayamount" property="cm_nowpayamount" jdbcType="DOUBLE" />
@@ -24,13 +26,14 @@
   </sql>
 
   <select id="selectByCondition" resultMap="BaseResultMap">
-    select  *  from custmonth
+      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
     <where>
       <if test="con != null">
         ${con}
       </if>
       <if test="companyId != null">
-        and  companyId = #{companyId} and abs(cm_beginamount)+abs(cm_beginpreamount)+abs(cm_nowamount)+abs(cm_nowpreamount)+abs(cm_nowprepayamount)+abs(cm_nowpayamount)>0
+        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>
     order by cm_yearmonth desc,cm_custcode

+ 3 - 1
applications/money/money-server/src/main/resources/mapper/CustomerCheckViewMapper.xml

@@ -6,7 +6,9 @@
         <result column="pi_class" property="pi_class" jdbcType="VARCHAR" />
         <result column="pi_custcode" property="pi_custcode" jdbcType="VARCHAR" />
         <result column="pi_custname" property="pi_custname" jdbcType="VARCHAR" />
-        <result column="pi_custname" property="pi_custname" jdbcType="VARCHAR" />
+        <result column="pi_currency" property="pi_currency" jdbcType="VARCHAR" />
+        <result column="pi_rate" property="pi_rate" jdbcType="DOUBLE" />
+        <result column="pi_mytotal" property="pi_mytotal" jdbcType="DOUBLE" />
         <result column="pi_date" property="pi_date" jdbcType="TIMESTAMP" />
         <result column="pd_pdno" property="pd_pdno" jdbcType="INTEGER" />
         <result column="pr_code" property="pr_code" jdbcType="VARCHAR" />

+ 7 - 2
applications/money/money-server/src/main/resources/mapper/PayablesdetailMapper.xml

@@ -15,6 +15,10 @@
     <result column="pd_addpay" property="pd_addpay" jdbcType="DOUBLE" />
     <result column="pd_addpre" property="pd_addpre" jdbcType="DOUBLE" />
     <result column="pd_remain" property="pd_remain" jdbcType="DOUBLE" />
+    <result column="pd_addpay_cr" property="pd_addpay_cr" jdbcType="DOUBLE" />
+    <result column="pd_addpre_cr" property="pd_addpre_cr" jdbcType="DOUBLE" />
+    <result column="pd_remain_cr" property="pd_remain_cr" jdbcType="DOUBLE" />
+    <result column="pd_rate" property="pd_rate" jdbcType="DOUBLE" />
     <result column="companyid" property="companyid" jdbcType="INTEGER" />
     <result column="pd_status" property="pd_status" jdbcType="INTEGER" />
     <result column="pd_query" property="pd_query" jdbcType="INTEGER" />
@@ -28,13 +32,14 @@
   </sql>
 
   <select id="selectByCondition" resultMap="BaseResultMap">
-    select  *  from payablesdetail
+    select  a.*,cr_rate pd_rate, cr_rate*pd_addpay pd_addpay_cr, cr_rate*pd_addpre pd_addpre_cr, cr_rate*pd_remain pd_remain_cr from payablesdetail a
+    left join currencys on cr_name = a.pd_currency and a.companyId = currencys.companyId
     <where>
       <if test="con != null">
         ${con}
       </if>
       <if test="companyId != null">
-        and  companyId = #{companyId} and pd_query =1
+        and  a.companyId = #{companyId} and pd_query =1
       </if>
     </where>
     order by pd_vendid DESC, pd_detno asc, pd_date desc

+ 7 - 2
applications/money/money-server/src/main/resources/mapper/ReceivablesdetailMapper.xml

@@ -15,6 +15,10 @@
     <result column="rd_addrec" property="rd_addrec" jdbcType="DOUBLE" />
     <result column="rd_addpre" property="rd_addpre" jdbcType="DOUBLE" />
     <result column="rd_remain" property="rd_remain" jdbcType="DOUBLE" />
+    <result column="rd_addrec_cr" property="rd_addrec_cr" jdbcType="DOUBLE" />
+    <result column="rd_addpre_cr" property="rd_addpre_cr" jdbcType="DOUBLE" />
+    <result column="rd_remain_cr" property="rd_remain_cr" jdbcType="DOUBLE" />
+    <result column="rd_rate" property="rd_rate" jdbcType="DOUBLE" />
     <result column="companyid" property="companyid" jdbcType="INTEGER" />
     <result column="rd_status" property="rd_status" jdbcType="INTEGER" />
     <result column="rd_query" property="rd_query" jdbcType="INTEGER" />
@@ -28,13 +32,14 @@
   </sql>
 
   <select id="selectByCondition" resultMap="BaseResultMap">
-    select  *  from receivablesdetail
+    select  a.*,cr_rate rd_rate, cr_rate*rd_addrec rd_addrec_cr, cr_rate*rd_addpre rd_addpre_cr, cr_rate*rd_remain rd_remain_cr from receivablesdetail a
+    left join currencys on cr_name = a.rd_currency and currencys.companyId = a.companyid
     <where>
       <if test="con != null">
         ${con}
       </if>
       <if test="companyId != null">
-        and  companyId = #{companyId} and rd_query = 1
+        and  a.companyId = #{companyId} and rd_query = 1
       </if>
     </where>
     order by rd_custid DESC, rd_detno asc, rd_date desc

+ 17 - 0
applications/money/money-server/src/main/resources/mapper/SubledgerMapper.xml

@@ -275,4 +275,21 @@
     update prodinout set pi_prstatuscode=#{statuscode},pi_prstatus=#{status} where
     companyid=#{companyid} and pi_class=#{kind} and pi_inoutno=#{code}
   </update>
+
+  <select id="selectSubledgerSpeBycondition" resultMap="BaseResultMap">
+    select sl_id,sl_kind,sl_code,sl_custid,sl_vendid,sl_date,
+    (case when ifnull(sl_preamount,0)!=0 then ifnull(sl_orderamount,0)*(-1)  else sl_orderamount end ) as sl_orderamount,
+    (case when ifnull(sl_preamount,0)!=0 then ifnull(sl_yamount,0)*(-1)  else sl_yamount end ) as sl_yamount,
+    (case when ifnull(sl_preamount,0)!=0 then ifnull(sl_namount,0)*(-1)  else sl_namount end ) as sl_namount,
+    sl_remark,companyid,sl_ym,sl_currency
+    from subledger
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and   subledger.companyId = #{companyId}
+      </if>
+    </where>  order by sl_date desc
+  </select>
 </mapper>

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

@@ -11,6 +11,8 @@
     <result column="vm_nowamount" property="vm_nowamount" jdbcType="DOUBLE" />
     <result column="vm_nowpreamount" property="vm_nowpreamount" jdbcType="DOUBLE" />
     <result column="vm_endamount" property="vm_endamount" jdbcType="DOUBLE" />
+    <result column="vm_amount_cr" property="vm_amount_cr" jdbcType="DOUBLE" />
+    <result column="vm_rate" property="vm_rate" jdbcType="DOUBLE" />
     <result column="companyid" property="companyid" jdbcType="INTEGER" />
     <result column="vm_beginpreamount" property="vm_beginpreamount" jdbcType="DOUBLE" />
     <result column="vm_nowpayamount" property="vm_nowpayamount" jdbcType="DOUBLE" />
@@ -24,13 +26,14 @@
   </sql>
 
   <select id="selectByCondition" resultMap="BaseResultMap">
-    select  *  from vendmonth
+    select  a.*,cr_rate vm_rate, cr_rate*(vm_endamount-vm_endpreamount) vm_amount_cr 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  companyid = #{companyId} and abs(vm_beginamount)+abs(vm_beginpreamount)+abs(vm_nowamount)+abs(vm_nowpreamount)+abs(vm_nowprepayamount)+abs(vm_nowpayamount)>0
+        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>
     order by vm_yearmonth desc,vm_vendcode

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

@@ -7,6 +7,8 @@
     <result column="pi_vendcode" property="pi_vendcode" jdbcType="VARCHAR" />
     <result column="pi_vendname" property="pi_vendname" jdbcType="VARCHAR" />
     <result column="pi_currency" property="pi_currency" jdbcType="VARCHAR" />
+    <result column="pi_rate" property="pi_rate" jdbcType="DOUBLE" />
+    <result column="pi_mytotal" property="pi_mytotal" jdbcType="DOUBLE" />
     <result column="pi_date" property="pi_date" jdbcType="TIMESTAMP" />
     <result column="pd_pdno" property="pd_pdno" jdbcType="INTEGER" />
     <result column="pr_code" property="pr_code" jdbcType="VARCHAR" />

+ 1 - 0
applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml

@@ -602,6 +602,7 @@
       vc_custid = #{vc_custid,jdbcType=INTEGER},
       vc_custcode = #{vc_custcode,jdbcType=VARCHAR},
       vc_custname = #{vc_custname,jdbcType=VARCHAR},
+      vc_currency = #{vc_currency,jdbcType=VARCHAR},
       vc_turnvendid = #{vc_turnvendid,jdbcType=INTEGER},
       vc_turnvendcode = #{vc_turnvendcode,jdbcType=VARCHAR},
       vc_turnvendname = #{vc_turnvendname,jdbcType=VARCHAR},

+ 3 - 2
applications/money/money-server/src/main/resources/mapper/VerificationdetMapper.xml

@@ -481,8 +481,9 @@
   <select id="selectByFK" parameterType="long" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List" />,
-    <include refid="subledger_Column_List" />
-    from verificationdet left join subledger on sl_id=vd_slid and subledger.companyid=verificationdet.companyId
+    (case when vc_kind in ('应收转应收','应付转应付') and ifnull(sl_preamount,0)!=0 then sl_yamount*(-1) else sl_yamount end) as sl_yamount,
+    (case when vc_kind in ('应收转应收','应付转应付') and ifnull(sl_preamount,0)!=0 then sl_namount*(-1) else sl_namount end) as sl_namount
+    from verificationdet left join subledger on sl_id=vd_slid and subledger.companyid=verificationdet.companyId left join verification on verificationdet.vd_vcid=vc_id
       where vd_vcid=#{vc_id} order by vd_id
   </select>
 

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

@@ -35,4 +35,6 @@ public interface ProdIODetailMapper extends CommonBaseMapper<ProdIODetail> {
     void getDefaultWarehouseByProduct(@Param("pi_id") Long pi_id);
 
     void updateApcheckStatus(ProdInOutStatusDTO prodInOutStatusDTO);
+
+    int selectApCheckCountByFK(Long id);
 }

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

@@ -297,6 +297,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             }
             ProdInOutDTO dto = formData.getMain();
             dto.setPi_inoutno(code == null ? dto.getPi_inoutno() : code);
+            dto.setId(id);
             singleAudit(dto);
             baseDTO = getBaseDTOById(id,formData.getMain().getPi_class(),formData.getMain().getPi_inoutno());
         }
@@ -381,7 +382,15 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         String pi_statuscode = prodInOutDTO.getPi_statuscode();
         if(StringUtils.isEmpty(pi_statuscode)||(!StringUtils.isEmpty(pi_statuscode)&&!pi_statuscode.equals(Status.AUDITED.name()))){
             throw  new BizException(BizExceptionCode.BIZ_UNAUDITED);
-        };
+        }
+        //明细已对账,不允许反审核
+        if (ConfigsCache.current().enableB2B()) {
+            //明细已对账数量
+            int count = prodIODetailMapper.selectApCheckCountByFK(prodInOutDTO.getId());
+            if (count > 0) {
+                throw new BizException(BizExceptionCode.PURCHASE_INOUTORDER_HASCHECK);
+            }
+        }
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("inoutNo",pi_inoutno);
         map.put("class", pi_class);

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

@@ -686,4 +686,8 @@
     AND pd_pdno = #{detno, jdbcType=INTEGER}
     AND companyid = #{companyId, jdbcType=INTEGER}
   </update>
+
+  <select id="selectApCheckCountByFK" resultType="int">
+    SELECT COUNT(*) FROM prodiodetail WHERE pd_piid = #{id} and apcheckStatus = '已对账'
+  </select>
 </mapper>

+ 1 - 1
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -206,7 +206,7 @@
 
   <sql id="Prodinout_Column_List" >
     prodinout.pi_id pi_id,prodinout.pi_inoutno pi_inoutno,prodinout.pi_class pi_class,prodinout.pi_date pi_date,prodinout.pi_vendid pi_vendid,prodinout.pi_vendcode pi_vendcode,prodinout.pi_vendname pi_vendname,prodinout.pi_custid pi_custid,prodinout.pi_custcode pi_custcode,prodinout.pi_custname pi_custname,prodinout.pi_puid pi_puid,prodinout.pi_pucode pi_pucode,prodinout.pi_said pi_said,prodinout.pi_sacode pi_sacode,prodinout.pi_total pi_total,prodinout.pi_address pi_address,prodinout.pi_ioid pi_ioid,prodinout.pi_status pi_status,prodinout.pi_statuscode pi_statuscode,prodinout.pi_printstatus pi_printstatus,prodinout.pi_printstatuscode pi_printstatuscode,prodinout.companyid companyid,prodinout.updaterId updaterId,prodinout.updatetime updatetime,prodinout.pi_text1 pi_text1,prodinout.pi_text2 pi_text2,prodinout.pi_text3 pi_text3,prodinout.pi_text4 pi_text4,prodinout.pi_text5 pi_text5,prodinout.pi_nettotal pi_nettotal,prodinout.pi_auditdate pi_auditdate,prodinout.pi_auditman pi_auditman,prodinout.pi_remark pi_remark,
-prodinout.creatorName creatorName,prodinout.creatorId creatorId,prodinout.createTime createTime,prodinout.updaterName updaterName,prodinout.pi_macode pi_macode,prodinout.pi_maid pi_maid,prodinout.pi_prstatuscode pi_prstatuscode,prodinout.pi_prstatus pi_prstatus,prodinout.pi_iocode pi_iocode,prodinout.pi_currency pi_currency,pi_rate,b2bStatus
+prodinout.creatorName creatorName,prodinout.creatorId creatorId,prodinout.createTime createTime,prodinout.updaterName updaterName,prodinout.pi_macode pi_macode,prodinout.pi_maid pi_maid,prodinout.pi_prstatuscode pi_prstatuscode,prodinout.pi_prstatus pi_prstatus,prodinout.pi_iocode pi_iocode,prodinout.pi_currency pi_currency,pi_rate,prodinout.b2bStatus,
   </sql>
   <sql id="Prodiodetail_Column_List" >
     prodiodetail.pd_id pd_id,prodiodetail.pd_piid pd_piid,prodiodetail.pd_inoutno pd_inoutno,prodiodetail.pd_piclass pd_piclass,prodiodetail.pd_pdno pd_pdno,prodiodetail.pd_ordercode pd_ordercode,prodiodetail.pd_orderdetno pd_orderdetno,prodiodetail.pd_prodid pd_prodid,prodiodetail.pd_prodcode pd_prodcode,prodiodetail.pd_unit pd_unit,prodiodetail.pd_inqty pd_inqty,prodiodetail.pd_outqty pd_outqty,prodiodetail.pd_orderprice pd_orderprice,prodiodetail.pd_sendprice pd_sendprice,prodiodetail.pd_price pd_price,prodiodetail.pd_total pd_total,prodiodetail.pd_taxrate pd_taxrate,prodiodetail.pd_netprice pd_netprice,prodiodetail.pd_nettotal pd_nettotal,prodiodetail.pd_whid pd_whid,prodiodetail.pd_whcode pd_whcode,prodiodetail.pd_whname pd_whname,prodiodetail.pd_inwhid pd_inwhid,prodiodetail.pd_inwhcode pd_inwhcode,prodiodetail.pd_inwhname pd_inwhname,prodiodetail.pd_orderid pd_orderid,prodiodetail.pd_sdid pd_sdid,prodiodetail.pd_status pd_status,prodiodetail.pd_remark pd_remark,prodiodetail.pd_text1 pd_text1,prodiodetail.pd_text2 pd_text2,prodiodetail.pd_text3 pd_text3,

+ 9 - 0
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/apcheck/SaveOperationDataDetail.java

@@ -29,6 +29,15 @@ public class SaveOperationDataDetail implements Serializable {
     private Long custUserUU;
     private Long pidate;
     private Long sourceDate;
+    private Double price;
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
 
     public String getInoutno() {
         return inoutno;

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

@@ -210,6 +210,9 @@ public class ApCheckServiceImpl implements ApCheckService {
             String url = b2bUrl + SAVEAPCHECKURL;
             //String url = "http://10.1.51.139:8889" + SAVEAPCHECKURL;
             saveOperationData.setEnUu(enUU);
+            saveOperationData.getItems().forEach(saveOperationDataDetail -> {
+                saveOperationDataDetail.setSourceDate(new Date().getTime());
+            });
             try {
                 responseEntity = AccessUtils.postForEntity(url, account, URLEncoder.encode(JsonUtils.toJsonString(saveOperationData), "UTF-8"));
             } catch (Exception e){

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

@@ -3,11 +3,14 @@ package com.usoftchina.saas.sale.service.impl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.api.CommonService;
 import com.usoftchina.saas.commons.api.MaxnumberService;
+import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.exception.BizException;
@@ -44,6 +47,9 @@ public class SaleDownServiceImpl implements SaleDownService{
     @Autowired
     private SaleService saleService;
 
+    @Autowired
+    private MessageLogService messageLogService;
+
     @Override
     public PageInfo getListData(PageRequest page, ListReqDTO req) {
         PageHelper.startPage(page.getNumber(), page.getSize());
@@ -105,6 +111,7 @@ public class SaleDownServiceImpl implements SaleDownService{
             saledownMapper.batchUpdate(updateDetails);
         }
         baseDTO = new DocBaseDTO(sa_id, sa_code, BillCodeSeq.SALEDOWN.getName());
+        messageLogService.update(baseDTO);
         return baseDTO;
     }
 
@@ -157,6 +164,7 @@ public class SaleDownServiceImpl implements SaleDownService{
         sd.setSa_turnstatuscode("TURNSALE");
         sd.setSa_turndate(new Date());
         saledownMapper.updateByPrimaryKeySelective(sd);
+        messageLogService.customizeLog(baseDTO, Operation.TURNSALE);
         return baseDTO;
     }
 

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

@@ -86,6 +86,8 @@ public class SaleDownServiceImpl implements SaleDownService{
             main.setCompanyId(companyId);
             main.setSa_status(Status.UNAUDITED.getDisplay());
             main.setSa_statuscode(Status.UNAUDITED.name());
+            main.setSa_turnstatus("未转销售");
+            main.setSa_turnstatuscode("UNTURNSALE");
             main.setSa_seller(emp.getData().getRealname());
             main.setSa_sellerid(emp.getData().getId());
             saledownMapper.insertSelective(main);

+ 12 - 0
applications/transfers/transfers-server/src/main/resources/mapper/SaledownMapper.xml

@@ -200,6 +200,12 @@
       <if test="updaterId != null" >
         updaterId,
       </if>
+      <if test="sa_turnstatus != null" >
+        sa_turnstatus,
+      </if>
+      <if test="sa_turnstatuscode != null" >
+        sa_turnstatuscode,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides="," >
       <if test="sa_code != null" >
@@ -289,6 +295,12 @@
       <if test="updaterId != null" >
         #{updaterId,jdbcType=INTEGER},
       </if>
+      <if test="sa_turnstatus != null" >
+        #{sa_turnstatus,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_turnstatuscode != null" >
+        #{sa_turnstatuscode,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.transfers.po.SaleDown" >

+ 1 - 1
frontend/saas-web/app/view/core/dbfind/ConDbfindTrigger.js

@@ -75,13 +75,13 @@ Ext.define('saas.view.core.form.field.ConDbfindTrigger', {
                     let value = f.dbValues[f.dbfinds[1].from];
                     field1.setValue(value);
                     field1.publishState('value', value);
+                    me.fireEvent('change');
                 }else {
                     f.ownerCt.dbValues = {};
                 }
             });
             field1.on('blur', function(f) {
                 f.ownerCt.dbValues = f.dbValues;
-                me.fireEvent('change', this)
             });
 
             field2.on('validChange', function() {

+ 5 - 10
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -378,17 +378,12 @@ Ext.define('saas.view.core.form.FormPanel', {
         });
 
         store.removeAll();
-        if (detailData.length > 0) {
 
-            for(let j = 0; j < detailData.length; j++) {
-                let d = detailData[j];
-                let o = {};
-                o[detnoColumn] = j + 1;
-                let r = store.add(o)[0];
-                for(let k in d) {
-                    r.set(k, d[k]);
-                }
-            }
+        if (detailData.length > 0) {
+            store.loadData(detailData.map(function(d, i) {
+                d[detnoColumn] = i + 1;
+                return d;
+            }));
         }
 
         me.isValid();

+ 0 - 18
frontend/saas-web/app/view/document/currencys/DatalistController.js

@@ -4,24 +4,6 @@
 Ext.define('saas.view.document.currencys.DatalistController', {
     extend: 'saas.view.document.kind.KindController',
     alias: 'controller.document-currencys-datalist',
-    
-    insertActionColumn:function(columns){
-        var me=this;
-        if(columns.length>0 && columns[0].xtype!='actioncolumn'){
-            return Ext.Array.insert(columns,0,[{
-                xtype:'actioncolumn',
-                text:'操作',
-                align: 'center',
-                items: [{
-                    tooltip: '编辑',
-                    iconCls: 'x-fa fa-pencil fa-fw',
-                    handler: me.onEdit,
-                    scope:this
-                }]
-            }]);
-        }
-        return columns;
-    },
     onEdit:function(grid,row,col){
         var dk = grid.ownerCt.ownerCt;
         var dataKind=dk.getViewModel().getData()['dataKind'].value,

+ 2 - 0
frontend/saas-web/app/view/money/payBalance/FormPanel.js

@@ -601,6 +601,8 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
 
         var flag = sum_pd_amount + pb_discounts - sum_pbd_nowbalance;
         viewModel.set("pb_preamount", flag);
+        viewModel.set("pb_pbdamount",sum_pbd_nowbalance);
+        viewModel.set("pb_pdamount",sum_pd_amount);
         if (flag != 0) {
             var t = flag > 0 ? '大' : '小';
 

+ 46 - 2
frontend/saas-web/app/view/money/payBalance/FormPanelController.js

@@ -96,8 +96,7 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
                         return false;
                     }
                     Ext.apply(f, {
-                        defaultCondition: "sl_vendid = "+pb_vendid+" and sl_currency ='"+pb_currency+"' AND sl_custid = 0 AND (  sl_kind IN ( '采购验收单','采购验退单' ) OR ( sl_kind = '期初余额' AND sl_ym = (select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) ) "+
-                        ") and sl_namount<>0 "
+                        defaultCondition: "sl_vendid = "+pb_vendid+" and sl_currency ='"+pb_currency+"' AND sl_custid = 0 AND sl_kind IN ( '采购验收单','采购验退单', '期初余额' ) and ifnull(sl_preamount,0)=0 and sl_namount<>0 "
                     });
                 }
             },
@@ -237,6 +236,51 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
             me.save();
         }
     },
+
+    onAudit: function(){
+        var me = this,
+        form = this.getView(),
+        viewModel = me.getViewModel(),
+        id = viewModel.get(form._idField);
+
+        var dirty = form.isDirty();
+
+        if(id && dirty) {
+            saas.util.BaseUtil.showConfirm('提示', form.dirtyAuditText)
+            .then(function(yes) {
+                if(yes == 'yes') {
+                    me.onSave();
+                }
+            });
+            return;
+        }
+
+        var valid = form.isValid();
+
+        if(!valid) {
+            saas.util.BaseUtil.showErrorToast(form.invalidText);
+            return false;
+        }
+
+        if(!form.beforeAudit()) {
+            return false;
+        }
+
+        var store1 = viewModel.get('detail0').detailStore,
+            store2 = viewModel.get('detail1').detailStore;
+
+        var sum_pd_amount = store1.sum('pd_amount'); // 付款金额合计
+        var pb_discounts = viewModel.get('pb_discounts'); // 折扣金额
+        var sum_pbd_nowbalance = store2.sum('pbd_nowbalance'); // 本次核销金额合计
+
+        var flag = sum_pd_amount + pb_discounts - sum_pbd_nowbalance;
+         viewModel.set("pb_pbdamount",sum_pbd_nowbalance);
+         viewModel.set("pb_pdamount",sum_pd_amount);
+         viewModel.set("pb_preamount",flag);
+
+        me.audit();
+    },
+
     // vendnamechange:function(dbfindtrigger){
     //     var me = this,
     //         viewModel = me.getViewModel(),

+ 3 - 0
frontend/saas-web/app/view/money/recBalance/FormPanel.js

@@ -607,6 +607,9 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         var flag = sum_rd_amount + rb_discounts - sum_rbd_nowbalance;
 
         viewModel.set("rb_preamount", flag);
+        viewModel.set("rb_rbdamount",sum_rbd_nowbalance);
+        viewModel.set("rb_rdamount",sum_rd_amount);
+        viewModel.set("rb_preamount",sum_rd_amount-sum_rbd_nowbalance);
         if (flag != 0) {
             var t = flag > 0 ? '大' : '小';
 

+ 47 - 2
frontend/saas-web/app/view/money/recBalance/FormPanelController.js

@@ -140,8 +140,7 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                         return false;
                     }
                     Ext.apply(f, {
-                        defaultCondition: "sl_custid = "+rb_custid+" and sl_currency ='"+rb_currency+"' AND sl_custid <> 0 AND (  sl_kind IN ( '出货单', '销售退货单' ) OR ( sl_kind = '期初余额' AND sl_ym = (select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) ) "+
-                        ") and sl_namount<>0 "
+                        defaultCondition: "sl_custid = "+rb_custid+" and sl_currency ='"+rb_currency+"' AND sl_custid <> 0 AND  sl_kind IN ( '出货单', '销售退货单', '期初余额'  ) and ifnull(sl_preamount,0)=0 and sl_namount<>0 "
                     });
                 }
             },
@@ -205,6 +204,52 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
             me.save();
         }
     },
+
+    onAudit: function(){
+        var me = this,
+        form = this.getView(),
+        viewModel = me.getViewModel(),
+        id = viewModel.get(form._idField);
+
+        var dirty = form.isDirty();
+
+        if(id && dirty) {
+            saas.util.BaseUtil.showConfirm('提示', form.dirtyAuditText)
+            .then(function(yes) {
+                if(yes == 'yes') {
+                    me.onSave();
+                }
+            });
+            return;
+        }
+
+        var valid = form.isValid();
+
+        if(!valid) {
+            saas.util.BaseUtil.showErrorToast(form.invalidText);
+            return false;
+        }
+
+        if(!form.beforeAudit()) {
+            return false;
+        }
+
+        var store1 = viewModel.get('detail0').detailStore,
+            store2 = viewModel.get('detail1').detailStore;
+
+        var sum_rd_amount = store1.sum('rd_amount'); // 付款金额合计
+        var rb_discounts = viewModel.get('rb_discounts'); // 折扣金额
+        var sum_rbd_nowbalance = store2.sum('rbd_nowbalance'); // 本次核销金额合计
+
+        var flag = sum_rd_amount + rb_discounts - sum_rbd_nowbalance;
+        viewModel.set("rb_rbdamount",sum_rbd_nowbalance);
+        viewModel.set("rb_rdamount",sum_rd_amount);
+        viewModel.set("rb_preamount",sum_rd_amount-sum_rbd_nowbalance);
+        viewModel.set("rb_preamount",flag);
+
+        me.audit();
+    },
+
     custnamechange:function(dbfindtrigger){
         var me = this,
             viewModel = me.getViewModel(),

+ 4 - 4
frontend/saas-web/app/view/money/report/AccountBalance.js

@@ -39,6 +39,10 @@ Ext.define('saas.view.money.report.AccountBalance', {
         text: '账户名称',
         dataIndex: 'bankname',
         width: 150
+    },{
+        text: '币别',
+        dataIndex: 'currency',
+        width: 80,
     }, {
         text: '业务类型',
         dataIndex: 'kind',
@@ -69,10 +73,6 @@ Ext.define('saas.view.money.report.AccountBalance', {
         summaryRenderer: function(v, d, f, m) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         }
-    },{
-        text: '币别',
-        dataIndex: 'currency',
-        width: 80,
     }, {
         text: '往来单位',
         dataIndex: 'bname',

+ 31 - 5
frontend/saas-web/app/view/money/report/CustomerCheck.js

@@ -155,15 +155,41 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
             var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
-        summaryType: 'sum',
-        summaryLabel: '价税合计',
-        summaryRenderer: function(v) {
-            return saas.util.BaseUtil.numberFormat(v, 2, true);
-        }
+        // summaryType: 'sum',
+        // summaryLabel: '价税合计(本位币)',
+        // summaryRenderer: function(v) {
+        //     return saas.util.BaseUtil.numberFormat(v, 2, true);
+        // }
     },{
         text: '币别',
         dataIndex: 'pi_currency',
         width: 80
+    },{
+        text: '汇率',
+        dataIndex: 'pi_rate',
+        exportFormat: 'Integer',
+        xtype: 'numbercolumn',
+        width: 100,
+        renderer: function(v) {
+            return saas.util.BaseUtil.numberFormat(v, 4, false);
+        }
+    },{
+        text: '价税合计(本位币)',
+        width: 140,
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'pi_mytotal',
+        renderer : function(v, m, r) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryLabel: '价税合计(本位币)',
+        summaryRenderer: function(v,m,r) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        }
     }],
 
     listeners: {

+ 4 - 4
frontend/saas-web/app/view/money/report/OtherIODetail.js

@@ -80,6 +80,10 @@ Ext.define('saas.view.money.report.OtherIODetail', {
         text: '资金账户',
         dataIndex: 'bl_bankname',
         width: 150
+    },{
+        text: '币别',
+        dataIndex: 'bk_currency',
+        width: 80,
     }, {
         text: '收入(元)',
         dataIndex: 'bl_income',
@@ -107,10 +111,6 @@ Ext.define('saas.view.money.report.OtherIODetail', {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         }
     }, {
-        text: '币别',
-        dataIndex: 'bk_currency',
-        width: 80,
-    },{
         text: '往来单位',
         dataIndex: 'bl_assname',
         width: 200,

+ 61 - 28
frontend/saas-web/app/view/money/report/PayDetail.js

@@ -51,6 +51,14 @@ Ext.define('saas.view.money.report.PayDetail', {
         dataIndex: 'pd_currency',
         align:'center',
         width: 65
+    },{
+        text: '汇率',
+        dataIndex: 'pd_rate',
+        align:'center',
+        width: 65,
+        renderer: function (v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 6, false);
+        }
     },{
         text: '增加应付(元)',
         xtype: 'numbercolumn',
@@ -60,10 +68,27 @@ Ext.define('saas.view.money.report.PayDetail', {
         renderer : function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
-        summaryLabel: '增加应付',
         summaryType: 'sum',
+        disableMySummary:true,
+        summaryRenderer: function(v) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+    },{
+        text: '增加应付(本位币)(元)',
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'pd_addpay_cr',
+        width: 160,
+        renderer : function(v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+        summaryLabel: '增加应付(本位币)',
+        summaryType: 'customize_sum',
         summaryRenderer: function(v) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+        mySummaryRenderer: function(grid, column, datas) {
+            return grid.store.sum(column.dataIndex)
         }
     }, {
         text: '增加预付(元)',
@@ -74,10 +99,27 @@ Ext.define('saas.view.money.report.PayDetail', {
         renderer : function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
-        summaryLabel: '增加预付',
         summaryType: 'sum',
+        disableMySummary:true,
+        summaryRenderer: function(v) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        }
+    },{
+        text: '增加预付(本位币)(元)',
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'pd_addpre_cr',
+        width: 160,
+        renderer : function(v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+        summaryLabel: '增加预付(本位币)',
+        summaryType: 'customize_sum',
         summaryRenderer: function(v) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+        mySummaryRenderer: function(grid, column, datas) {
+            return grid.store.sum(column.dataIndex)
         }
     }, {
         text: '应付余额(元)',
@@ -88,36 +130,27 @@ Ext.define('saas.view.money.report.PayDetail', {
         renderer : function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
-        summaryLabel: '应收余额(合计)',
-        summaryType: 'customize_last',
+        summaryType: 'sum',
+        disableMySummary:true,
+        summaryRenderer: function(v) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        }
+    },{
+        text: '应付余额(元)',
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'pd_remain_cr',
+        width: 160,
+        renderer : function(v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+        summaryLabel: '应付余额(本位币)',
+        summaryType: 'customize_sum',
         summaryRenderer: function(v) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
         mySummaryRenderer: function(grid, column, datas) {
-            var store = grid.store,
-            dataIndex = column.dataIndex,
-            groupField = store.getGroupField(),
-            count = datas.length,
-            data = datas,
-            lasts = {},
-            keys = [],
-            arr = [];
-
-            for(var i = 0; i < count; i++) {
-                var d = data[i];
-                var n = Number(d[dataIndex]);
-                var v = isNaN(n) ? 0 : n;
-                var gv = d[groupField];
-
-                lasts[gv] = v;
-            }
-
-            keys = Ext.Object.getAllKeys(lasts);
-            arr = keys.map(function(key) {
-                return lasts[key];
-            });
-
-            return saas.util.BaseUtil.numberFormat(Ext.Array.sum(arr), 2, true);
+            return grid.store.sum(column.dataIndex)
         }
     }, {
         dataIndex: '',

+ 62 - 30
frontend/saas-web/app/view/money/report/RecDetail.js

@@ -52,6 +52,14 @@ Ext.define('saas.view.money.report.RecDetail', {
         dataIndex: 'rd_currency',
         align:'center',
         width: 65
+    },{
+        text: '汇率',
+        dataIndex: 'rd_rate',
+        align:'center',
+        width: 65,
+        renderer: function (v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 6, false);
+        }
     }, {
         text: '增加应收(元)',
         dataIndex: 'rd_addrec',
@@ -61,11 +69,28 @@ Ext.define('saas.view.money.report.RecDetail', {
         renderer: function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
-        summaryLabel: '增加应收',
         summaryType: 'sum',
+        disableMySummary:true,
         summaryRenderer: function(v, d, f, m) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         }
+    },{
+        text: '增加应收(本位币)(元)',
+        dataIndex: 'rd_addrec_cr',
+        exportFormat: 'Amount',
+        xtype: 'numbercolumn',
+        width: 160,
+        renderer: function(v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+        summaryLabel: '增加应收(本位币)',
+        summaryType: 'customize_sum',
+        summaryRenderer: function(v, d, f, m) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+        mySummaryRenderer: function(grid, column, datas) {
+            return grid.store.sum(column.dataIndex)
+        }
     }, {
         text: '增加预收(元)',
         xtype: 'numbercolumn',
@@ -75,11 +100,28 @@ Ext.define('saas.view.money.report.RecDetail', {
         renderer: function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
-        summaryLabel: '增加预收',
+        disableMySummary:true,
         summaryType: 'sum',
         summaryRenderer: function(v, d, f, m) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         }
+    },{
+        text: '增加预收(本位币)(元)',
+        dataIndex: 'rd_addpre_cr',
+        exportFormat: 'Amount',
+        xtype: 'numbercolumn',
+        width: 160,
+        renderer: function(v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+        summaryLabel: '增加预收(本位币)',
+        summaryType: 'customize_sum',
+        summaryRenderer: function(v, d, f, m) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+        mySummaryRenderer: function(grid, column, datas) {
+            return grid.store.sum(column.dataIndex)
+        }
     }, {
         text: '应收余额(元)',
         xtype: 'numbercolumn',
@@ -89,37 +131,27 @@ Ext.define('saas.view.money.report.RecDetail', {
         renderer: function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
-        summaryLabel: '应收余额(合计)',
-        summaryType: 'customize_last',
+        disableMySummary:true,
+        summaryType: 'sum',
+        summaryRenderer: function(v, d, f, m) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        }
+    },{
+        text: '应收余额(本位币)(元)',
+        dataIndex: 'rd_remain_cr',
+        exportFormat: 'Amount',
+        xtype: 'numbercolumn',
+        width: 160,
+        renderer: function(v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        },
+        summaryLabel: '应收余额(本位币)',
+        summaryType: 'customize_sum',
         summaryRenderer: function(v, d, f, m) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
-        mySummaryRenderer: function (grid, column, datas) {
-            datas = datas || [];
-            var store = grid.store,
-                dataIndex = column.dataIndex,
-                groupField = store.getGroupField(),
-                count = datas.length,
-                data = datas,
-                lasts = {},
-                keys = [],
-                arr = [];
-
-            for (var i = 0; i < count; i++) {
-                var d = data[i];
-                var n = Number(d[dataIndex]);
-                var v = isNaN(n) ? 0 : n;
-                var gv = d[groupField];
-
-                lasts[gv] = v;
-            }
-
-            keys = Ext.Object.getAllKeys(lasts);
-            arr = keys.map(function (key) {
-                return lasts[key];
-            });
-
-            return saas.util.BaseUtil.numberFormat(Ext.Array.sum(arr), 2, true);
+        mySummaryRenderer: function(grid, column, datas) {
+            return grid.store.sum(column.dataIndex)
         }
     }, {
         dataIndex: '',

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

@@ -44,6 +44,14 @@ Ext.define('saas.view.money.report.TotalPayDetail', {
         dataIndex: 'vm_currency',
         align:'center',
         width: 65,
+    }, {
+        text: '汇率',
+        dataIndex: 'vm_rate',
+        align:'center',
+        width: 65,
+        renderer: function (v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 6, false);
+        }
     }, {
         text: '期初',
         columns: [{
@@ -130,11 +138,20 @@ Ext.define('saas.view.money.report.TotalPayDetail', {
         exportFormat: 'Amount',
         xtype: 'numbercolumn',
         width: 120,
+        renderer: function(v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        }
+    },{
+        text: '应付余额(本位币)(元)',
+        dataIndex: 'vm_amount_cr',
+        exportFormat: 'Amount',
+        xtype: 'numbercolumn',
+        width: 160,
         renderer: function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
         summaryType: 'sum',
-        summaryLabel: '应付余额',
+        summaryLabel: '应付余额(本位币)',
         summaryRenderer: function(v, d, f, m) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         }

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

@@ -44,6 +44,11 @@ Ext.define('saas.view.money.report.TotalRecDetail', {
         dataIndex: 'cm_currency',
         align:'center',
         width: 65,
+    }, {
+        text: '汇率',
+        dataIndex: 'cm_rate',
+        align:'center',
+        width: 65,
     }, {
         text: '期初',
         columns: [{
@@ -130,11 +135,20 @@ Ext.define('saas.view.money.report.TotalRecDetail', {
         exportFormat: 'Amount',
         xtype: 'numbercolumn',
         width: 120,
+        renderer: function(v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 2, true);
+        }
+    }, {
+        text: '应收余额(本位币)(元)',
+        dataIndex: 'cm_amount_cr',
+        exportFormat: 'Amount',
+        xtype: 'numbercolumn',
+        width: 160,
         renderer: function(v, m, r) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         },
         summaryType: 'sum',
-        summaryLabel: '应收余额',
+        summaryLabel: '应收余额(本位币)',
         summaryRenderer: function(v, d, f, m) {
             return saas.util.BaseUtil.numberFormat(v, 2, true);
         }

+ 32 - 6
frontend/saas-web/app/view/money/report/VendorCheck.js

@@ -153,18 +153,44 @@ Ext.define('saas.view.money.report.VendorCheck', {
         exportFormat: 'Amount',
         dataIndex: 'pd_ordertotal',
         width: 120,
-        summaryType: 'sum',
-        summaryLabel: '价税合计',
         renderer: function(v) {
-            return saas.util.BaseUtil.numberFormat(v, 2, true);
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
         },
-        summaryRenderer: function(v) {
-            return saas.util.BaseUtil.numberFormat(v, 2, true);
-        }
+        // summaryType: 'sum',
+        // summaryLabel: '价税合计(本位币)',
+        // summaryRenderer: function(v) {
+        //     return saas.util.BaseUtil.numberFormat(v, 2, true);
+        // }
     },{
         text: '币别',
         dataIndex: 'pi_currency',
         width: 80
+    },{
+        text: '汇率',
+        dataIndex: 'pi_rate',
+        exportFormat: 'Integer',
+        xtype: 'numbercolumn',
+        width: 100,
+        renderer: function(v) {
+            return saas.util.BaseUtil.numberFormat(v, 4, false);
+        }
+    },{
+        text: '价税合计(本位币)',
+        width: 140,
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'pi_mytotal',
+        renderer : function(v, m, r) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryLabel: '价税合计(本位币)'
     }],
 
     listeners: {

+ 19 - 35
frontend/saas-web/app/view/money/verification/FormPanel.js

@@ -556,9 +556,9 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             from: 'cr_rate',
                             to: 'vc_rate'
                         }],
-                        // listeners: {
-                        //     change: 'clearDetails'
-                        // },
+                        listeners: {
+                            change: 'clearDetails'
+                        },
                         supFieldConfig: {
                             xtype: 'numberfield',
                             readOnly: false,
@@ -720,9 +720,9 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             from: 'cr_rate',
                             to: 'vc_rate'
                         }],
-                        // listeners: {
-                        //     change: 'clearDetails'
-                        // },
+                        listeners: {
+                            change: 'clearDetails'
+                        },
                         supFieldConfig: {
                             xtype: 'numberfield',
                             readOnly: false,
@@ -804,9 +804,9 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             from: 'cr_rate',
                             to: 'vc_rate'
                         }],
-                        // listeners: {
-                        //     change: 'clearDetails'
-                        // },
+                        listeners: {
+                            change: 'clearDetails'
+                        },
                         supFieldConfig: {
                             xtype: 'numberfield',
                             readOnly: false,
@@ -928,52 +928,36 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 defaultConditions: {
                     receipts_offset_receivable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0 ' +
                         'and sl_ym<=DATE_FORMAT(str_to_date(\'{vc_date}\', \'%Y-%m-%d\'),\'%Y%m\')' +
-                        ' and ((sl_kind=\'收款单\') or ' +
-                              '( sl_id =(select sl_id from subledger where ifnull(sl_custid,0)={vc_custid} and sl_kind=\'期初余额\' ' +
-                                            'and sl_ym>=(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) order by sl_ym limit 1)))',
+                        ' and sl_kind in (\'收款单\',\'期初余额\')',
 
                         'ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
                         'and sl_ym<=DATE_FORMAT(str_to_date(\'{vc_date}\', \'%Y-%m-%d\'),\'%Y%m\')' +
-                        ' and (sl_kind in (\'出货单\',\'销售退货单\') or '+
-                        '( sl_id =(select sl_id from subledger where ifnull(sl_custid,0)={vc_custid} and sl_kind=\'期初余额\' ' +
-                        'and sl_ym>=(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) order by sl_ym limit 1)))'
+                        ' and sl_kind in (\'出货单\',\'销售退货单\',\'期初余额\')'
                     ],
                     prepaid_offset_payable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0 ' +
                         'and sl_ym<=DATE_FORMAT(str_to_date(\'{vc_date}\', \'%Y-%m-%d\'),\'%Y%m\')' +
-                        ' and ((sl_kind=\'付款单\') or ' +
-                        '( sl_id =(select sl_id from subledger where ifnull(sl_vendid,0)={vc_vendid} and sl_kind=\'期初余额\'' +
-                        'and sl_ym>=(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) order by sl_ym limit 1)))',
+                        ' and  sl_kind in(\'付款单\',\'期初余额\')',
 
 
                         'ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0' +
                         ' and sl_ym<=DATE_FORMAT(str_to_date(\'{vc_date}\', \'%Y-%m-%d\'),\'%Y%m\')' +
-                        ' and (sl_kind in (\'采购验收单\',\'采购验退单\') or ' +
-                        '( sl_id =(select sl_id from subledger where ifnull(sl_vendid,0)={vc_vendid} and sl_kind=\'期初余额\'' +
-                        ' and sl_ym>=(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) order by sl_ym limit 1)))'
+                        ' and sl_kind in (\'采购验收单\',\'采购验退单\',\'期初余额\')'
                     ],
                     receivable_offset_payable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
                         ' and sl_ym<=DATE_FORMAT(str_to_date(\'{vc_date}\', \'%Y-%m-%d\'),\'%Y%m\')' +
-                        ' and ((sl_kind in (\'出货单\',\'销售退货单\')) or ' +
-                        '( sl_id =(select sl_id from subledger where ifnull(sl_custid,0)={vc_custid} and sl_kind=\'期初余额\' ' +
-                        'and sl_ym>=(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) order by sl_ym limit 1)))',
+                        ' and sl_kind in (\'出货单\',\'销售退货单\',\'期初余额\')',
 
                         'ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
                         ' and sl_ym<=DATE_FORMAT(str_to_date(\'{vc_date}\', \'%Y-%m-%d\'),\'%Y%m\')' +
-                        ' and (sl_kind in (\'采购验收单\',\'采购验退单\') or ' +
-                        '( sl_id =(select sl_id from subledger where ifnull(sl_vendid,0)={vc_vendid} and sl_kind=\'期初余额\' ' +
-                        'and sl_ym>=(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) order by sl_ym limit 1)))'
+                        ' and sl_kind in (\'采购验收单\',\'采购验退单\',\'期初余额\')'
                     ],
-                    receivable_to_receivable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
+                    receivable_to_receivable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_custid,0)={vc_custid} and ifnull(sl_namount,0)<>0 ' +
                         ' and sl_ym<=DATE_FORMAT(str_to_date(\'{vc_date}\', \'%Y-%m-%d\'),\'%Y%m\')' +
-                        ' and ((sl_kind in (\'出货单\',\'销售退货单\')) or' +
-                        '( sl_id =(select sl_id from subledger where ifnull(sl_custid,0)={vc_custid} and sl_kind=\'期初余额\' ' +
-                        'and sl_ym>=(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) order by sl_ym limit 1)))'
+                        ' and sl_kind in (\'出货单\',\'销售退货单\',\'期初余额\',\'收款单\')'
                     ],
-                    payable_to_payable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0' +
+                    payable_to_payable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_namount,0)<>0' +
                         ' and sl_ym<=DATE_FORMAT(str_to_date(\'{vc_date}\', \'%Y-%m-%d\'),\'%Y%m\')' +
-                        ' and (sl_kind in (\'采购验收单\',\'采购验退单\') or ' +
-                        '( sl_id =(select sl_id from subledger where ifnull(sl_vendid,0)={vc_vendid} and sl_kind=\'期初余额\' ' +
-                        ' and sl_ym>=(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) order by sl_ym limit 1)))'
+                        ' and sl_kind in (\'采购验收单\',\'采购验退单\',\'期初余额\',\'付款单\')'
                     ]
                 }
             },

+ 14 - 0
frontend/saas-web/app/view/money/verification/FormPanelController.js

@@ -119,6 +119,13 @@ Ext.define('saas.view.money.verification.FormPanelController', {
                 },
                 beforequery: function(f) {
                     var defaultCondition = this.getDefaultCondition(0);
+                    var form = me.getView(),
+                        viewModel = me.getViewModel();
+                    var kind=viewModel.get('vc_kind');
+                    console.log(kind);
+                    if (kind == 'receivable_to_receivable' || kind == 'payable_to_payable'){
+                        f.dataUrl='/api/money/subledger/dbfindlist';
+                    }
                     if(!defaultCondition) {
                         return false;
                     }
@@ -127,7 +134,14 @@ Ext.define('saas.view.money.verification.FormPanelController', {
                     });
                 },
                 beforetriggerclick: function(f) {
+                    console.log('beforetriggerclick');
                     var defaultCondition = this.getDefaultCondition(0);
+                    var form = me.getView(),
+                        viewModel = me.getViewModel();
+                    var kind=viewModel.get('vc_kind');
+                    if (kind == 'receivable_to_receivable' || kind == 'payable_to_payable'){
+                        f.dataUrl='/api/money/subledger/dbfindlist';
+                    }
                     if(!defaultCondition) {
                         return false;
                     }

+ 5 - 0
frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js

@@ -353,6 +353,11 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                     dataIndex: "pd_ordercode",
                     width: 150.0,
                     ignore: true,
+                },{
+                    text: "对账状态",
+                    dataIndex: "apcheckStatus",
+                    width: 100.0,
+                    ignore: true,
                 }, {
                     text: "备注",
                     dataIndex: "pd_remark",

+ 5 - 0
frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js

@@ -351,6 +351,11 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                     dataIndex: "iocode",
                     width: 150.0,
                     ignore: true
+                },{
+                    text: "对账状态",
+                    dataIndex: "apcheckStatus",
+                    width: 100.0,
+                    ignore: true,
                 }, {
                     text: "备注",
                     dataIndex: "pd_remark",

+ 8 - 38
frontend/saas-web/app/view/sale/b2b/Purchase.js

@@ -17,43 +17,43 @@ Ext.define('saas.view.sale.b2b.Purchase', {
         Ext.apply(this, {
             searchField: [{
                 xtype: 'textfield',
-                name: 'keyword',
+                name: 'sa_custname',
                 columnWidth: 0.15,
                 emptyText:'请输入客户名称'
             }, {
                 xtype: 'condatefield',
-                name: 'date',
+                name: 'createTime',
                 fieldLabel: '日期',
                 columnWidth: 0.5,
                 labelWidth: 50,
             }, {
                 xtype: 'textfield',
-                name: 'keyword',
+                name: 'sa_salecode',
                 labelWidth: 0,
                 columnWidth: 0.15,
                 emptyText: '销售单号'
             }, {
                 xtype: 'checkbox',
-                name: 'status',
+                name: 'sa_sendstatus',
                 fieldLabel: '已结案',
                 columnWidth: 0.1,
                 labelWidth: 50,
                 getCondition: function(v) {
                     if(v) {
-                        return 'status=' + Number(v);
+                        return "sa_sendstatus='已关闭'";
                     }else {
                         return '1=1';
                     }
                 }
             }, {
                 xtype: 'checkbox',
-                name: 'status',
+                name: 'sa_sendstatus',
                 fieldLabel: '待出货',
                 columnWidth: 0.1,
                 labelWidth: 50,
                 getCondition: function(v) {
                     if(v) {
-                        return 'status=' + Number(v);
+                        return "sa_sendstatus='未出库'";
                     }else {
                         return '1=1';
                     }
@@ -169,35 +169,5 @@ Ext.define('saas.view.sale.b2b.Purchase', {
         }
 
         return conditionValue;
-    },
-
-    getExtraParams: function(store, op, condition) {
-        var temp = {};
-
-        for(let x = 0; x < condition.length; x++) {
-            let c = condition[x];
-            if(c.field == 'keyword') {
-                temp.keyword = c.value;
-            }else if(c.field == 'date') {
-                temp.fromDate = new Date(c.value.split(',')[0]).getTime();
-                temp.endDate = new Date(c.value.split(',')[1]).getTime();
-            }else if(c.field == 'quoted') {
-                temp.quoted = c.value == 'all' ? null : c.value;
-            }else if(c.field == 'closed') {
-                // temp.endDate = c.value == 'all' ? null : (
-                //     c.value == '0' ? 
-                // );
-            }
-        }
-        let obj = {
-            pageNumber: store.exportNumber?store.exportNumber:op._page,
-            pageSize: store.exportPageSize?store.exportPageSize:store.pageSize
-        };
-        for(let k in temp) {
-            if(!!temp[k]) {
-                obj[k] = temp[k];
-            }
-        }
-        return obj;
-     },
+    }
 });

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

@@ -62,9 +62,9 @@ Ext.define('saas.view.sale.b2b.PurchaseDetail', {
                     vtype: 'positiveNumber'
                 }
             }, {
-                name: "sa_status",
+                name: "sa_turnstatus",
                 xtype: "textfield",
-                fieldLabel: "单状态",
+                fieldLabel: "单状态",
                 readOnly: true
             }, {
                 xtype: 'textfield',

+ 1 - 1
frontend/saas-web/app/view/sale/b2b/RecDataList.js

@@ -124,7 +124,7 @@ Ext.define('saas.view.sale.b2b.RecDataList', {
                             var idValue = record.get('apId'),
                             id = 'sale-b2b-recformpanel-formpanel-' + idValue;
                             var ar_date = tableView.ownerCt.ownerCt.down('[name=ar_date]');
-                            saas.util.BaseUtil.openTab('sale-b2b-recformpanel-formpanel', "应收对账单("+idValue+")", id, {
+                            saas.util.BaseUtil.openTab('sale-b2b-recformpanel-formpanel', "应收对账单", id, {
                                 currency:record.get('currency'),
                                 customerUU:record.get('custUU'),
                                 suuorname:record.get('custName'),

+ 15 - 14
frontend/saas-web/app/view/sale/b2b/recformpanel/FormPanel.js

@@ -94,10 +94,10 @@ Ext.define('saas.view.sale.b2b.recformpanel.FormPanel', {
             checkOnly:true,
             type:'checkboxmodel',
             hideCheckField:'haveChecked',
-            hideCheckVal:'已对账',
+            hideCheckVal:1,
             listeners:{
                 select:function(selModel,record,c,d){
-                    if(record.get('haveChecked')=='已对账'){
+                    if(record.get('haveChecked')==1){
                         selModel.deselect(record)
                     }
                 }
@@ -122,6 +122,14 @@ Ext.define('saas.view.sale.b2b.recformpanel.FormPanel', {
             text: "对账状态",
             width: 100.0,
             dataIndex: "haveChecked",
+            renderer:function(v,m,r){
+                if(v==0){
+                    return '未对账'
+                }else if(v==1){
+                    return '已对账'
+                }
+                return v;
+            }
         }, { 
             text: "客户PO",
             width: 140.0,
@@ -159,7 +167,7 @@ Ext.define('saas.view.sale.b2b.recformpanel.FormPanel', {
             xtype:'numbercolumn',
             ignore: true,
             renderer: function (v, m, r) {
-                return saas.util.BaseUtil.numberFormat(v, 0, false);
+                return saas.util.BaseUtil.numberFormat(v, 3, false);
             }
         },{
             text: "发货数量",
@@ -168,7 +176,7 @@ Ext.define('saas.view.sale.b2b.recformpanel.FormPanel', {
             dataIndex: "qty",
             ignore: true,
             renderer: function (v, m, r) {
-                return saas.util.BaseUtil.numberFormat(v, 0, false);
+                return saas.util.BaseUtil.numberFormat(v, 3, false);
             }
         },{
             text: "含税单价",
@@ -177,7 +185,7 @@ Ext.define('saas.view.sale.b2b.recformpanel.FormPanel', {
             dataIndex: "orderprice",
             ignore: true,
             renderer: function (v, m, r) {
-                return saas.util.BaseUtil.numberFormat(v, 2, false);
+                return saas.util.BaseUtil.numberFormat(v, 4, false);
             }
         },{
             text: "税率%",
@@ -194,7 +202,7 @@ Ext.define('saas.view.sale.b2b.recformpanel.FormPanel', {
             width: 100.0,
             dataIndex: "money",
             renderer: function (v, m, r) {
-                return saas.util.BaseUtil.numberFormat(v, 2, false);
+                return saas.util.BaseUtil.numberFormat(v, 4, false);
             }
         },{
             text: "对账人",
@@ -220,6 +228,7 @@ Ext.define('saas.view.sale.b2b.recformpanel.FormPanel', {
             xtype: 'combo',
             displayField: 'display',
             value:me.currency,
+            editable:false,
             valueField: 'value',
             emptyText: '请选择',
             fieldLabel:'币别',
@@ -283,14 +292,6 @@ Ext.define('saas.view.sale.b2b.recformpanel.FormPanel', {
                     thisPeriodSendAmount : main.thisPeriodSendAmount?main.thisPeriodSendAmount.amount:'',
                     totalCount : main.totalCount?main.totalCount.amount:''
                 };
-                Ext.each(res.data.items,function(item,index){
-                    if(item.haveChecked==0){
-                        item.haveChecked = null
-                    }
-                    if(item.haveChecked==1){
-                        item.haveChecked = '已对账'
-                    }
-                })
                 viewModel.setData({detailgrid:res.data.items});
                 var o = [];
                 Ext.each(res.data.currencys,function(item,index){

+ 0 - 8
frontend/saas-web/app/view/sale/b2b/recformpanel/FormPanelController.js

@@ -43,14 +43,6 @@ Ext.define('saas.view.sale.b2b.recformpanel.FormPanelController', {
                     mainDate.totalCount = main.totalCount.amount
                 }
                 viewModel.setData(mainDate);
-                Ext.each(res.data.items,function(item,index){
-                    if(item.haveChecked==0){
-                        item.haveChecked = null
-                    }
-                    if(item.haveChecked==1){
-                        item.haveChecked = '已对账'
-                    }
-                })
                 viewModel.setData({detailgrid:res.data.items});
                 var o = [];
                 Ext.each(res.data.currencys,function(item,index){

+ 1 - 1
frontend/saas-web/app/view/sale/b2b/reconciliation/DataList.js

@@ -97,7 +97,7 @@ Ext.define('saas.view.sale.b2b.reconciliation.DataList', {
                     xtype:'numbercolumn', 
                     width : 110.0,
                     renderer: function (v, m, r) {
-                        return saas.util.BaseUtil.numberFormat(v, 2, false);
+                        return saas.util.BaseUtil.numberFormat(v, 4, false);
                     }
                 },{
                     text : '对账人', 

+ 3 - 3
frontend/saas-web/app/view/sale/b2b/reconciliation/FormPanel.js

@@ -130,7 +130,7 @@ Ext.define('saas.view.sale.b2b.reconciliation.FormPanel', {
                     dataIndex: "checkQty",
                     ignore: true,
                     renderer: function (v, m, r) {
-                        return saas.util.BaseUtil.numberFormat(v, 0, false);
+                        return saas.util.BaseUtil.numberFormat(v, 3, false);
                     }
                 },{
                     text: "含税单价",
@@ -139,7 +139,7 @@ Ext.define('saas.view.sale.b2b.reconciliation.FormPanel', {
                     xtype:'numbercolumn',
                     ignore: true,
                     renderer: function (v, m, r) {
-                        return saas.util.BaseUtil.numberFormat(v, 2, false);
+                        return saas.util.BaseUtil.numberFormat(v, 4, false);
                     }
                 },{
                     text: "税率%",
@@ -156,7 +156,7 @@ Ext.define('saas.view.sale.b2b.reconciliation.FormPanel', {
                     width: 100.0,
                     dataIndex: "amount",
                     renderer: function (v, m, r) {
-                        return saas.util.BaseUtil.numberFormat(v, 2, false);
+                        return saas.util.BaseUtil.numberFormat(v, 4, false);
                     }
                 }],
                 initColumns: function() {

+ 1 - 0
frontend/saas-web/app/view/sale/b2b/reconciliation/FormPanelModel.js

@@ -17,6 +17,7 @@ Ext.define('saas.view.sale.b2b.reconciliation.FormPanelModel', {
         showCopyBtn: false, // 显示复制按钮
         showAuditBtn: false, // 显示审核、反审核按钮
         showPrintBtn: false, // 显示打印按钮
+        showLogBtn: false, // 显示操作日志按钮
         configurable: false, // 显示界面设置按钮
 
         detailBindeFields: [], // 从表绑定列

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

@@ -11,7 +11,9 @@ Ext.define('saas.view.sale.report.SaleProfit', {
     listUrl: '/api/sale/report/saleProfit',
     defaultCondition: null,
     reportTitle: '销售毛利润表',
-    QueryWidth:0.2, 	
+    QueryWidth:0.2,
+    allowCust: true,
+
     searchItems: [{
         xtype: 'textfield',
         name: 'pr_detail',

+ 2 - 2
frontend/saas-web/ext/packages/ux/src/feature/MySummary.js

@@ -181,9 +181,9 @@ Ext.define('Ext.ux.feature.MySummary', {
         };
 
         Ext.Array.each(columns, function(c) {
-            var summaryType = c._summaryType || c.summaryType;
+            var summaryType =  c._summaryType || c.summaryType;
 
-            if(summaryType) {
+            if(!c.disableMySummary&&summaryType) {
                 summarys.push({
                     name: c.dataIndex,
                     label: me.getSummaryLabel(c),