Browse Source

1.核销单插入中间表,核销单金额判断

heqinwei 7 năm trước cách đây
mục cha
commit
bb6723773a

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

@@ -218,7 +218,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
                 total1 += nowbalanceDet;
 
                 //单据金额
-                Double amount = det.getVd_amount();
+                Double amount = det.getSl_namount();
                 //核销金额
                 if(amount.doubleValue()>0 && nowbalanceDet.doubleValue()<0){
                     String msg = BizExceptionCode.MONEY_NOWAMOUNT_POSITIVE.getMessage();
@@ -262,7 +262,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
                 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.VERIFICATION_CHECK_BALANCE.getMessage());
+                    throw new BizException(500, BizExceptionCode.RECALANCE_OUTNOWBALANCE.getMessage());
                 }
             }
         }
@@ -270,14 +270,15 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
     }
 
     //插入中间表
-    private Subledger changSubledgerUntil(VerificationDTO verification){
+    private Subledger changSubledgerUntil(VerificationDTO verification, int cs){
         Subledger subledger = new Subledger();
         String kind = verification.getVc_kind();
         subledger.setCompanyId(BaseContextHolder.getCompanyId());
         subledger.setSl_code(verification.getVc_code());
+        Double amount1 = verification.getVc_amount1()==null?new Double(0):verification.getVc_amount1();
+        Double amount2 = verification.getVc_amount2()==null?new Double(0):verification.getVc_amount2();
 
-        if(kind.equals("receipts_offset_receivable") || kind.equals("prepaid_offset_payable") ||
-                kind.equals("receivable_offset_payable")){
+        if(kind.equals("receipts_offset_receivable") || kind.equals("prepaid_offset_payable") ){
 
             /*
              ['receipts_offset_receivable', '预收冲应收'],
@@ -286,27 +287,31 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
                 ['receivable_to_receivable', '应收转应收'],
                 ['payable_to_payable', '应付转应付']
              */
-            subledger.setSl_custid(0);
+            subledger.setSl_custid(verification.getVc_custid());
             subledger.setSl_vendid(verification.getVc_vendid());
+            subledger.setSl_amount(-amount2);
+            subledger.setSl_preamount(-amount1);
         }else{
-            subledger.setSl_custid(verification.getVc_custid());
-            subledger.setSl_vendid(0);
+            if( cs == 2){
+                subledger.setSl_custid(verification.getVc_turncustid());
+                subledger.setSl_vendid(verification.getVc_turnvendid());
+                subledger.setSl_amount(amount1);
+                subledger.setSl_preamount(new Double(0));
+            } else {
+                subledger.setSl_custid(verification.getVc_custid());
+                subledger.setSl_vendid(verification.getVc_vendid());
+                subledger.setSl_amount(-amount1);
+                subledger.setSl_preamount(new Double(0));
+            }
         }
-        Double amount1 = verification.getVc_amount1()==null?new Double(0):verification.getVc_amount1();
-        Double amount2 = verification.getVc_amount2()==null?new Double(0):verification.getVc_amount2();
+
         subledger.setSl_date(verification.getVc_date());
         subledger.setSl_ym(DateUtils.getYm(verification.getVc_date()));
-        subledger.setSl_amount(-amount2);
         subledger.setSl_orderamount(new Double(0));
         subledger.setSl_yamount(new Double(0));
         subledger.setSl_remark(verification.getVc_remark());
         subledger.setSl_discount(new Double(0));
         subledger.setSl_ym(DateUtils.getYm(verification.getVc_date()));
-        if(kind.equals("receipts_offset_receivable") || kind.equals("prepaid_offset_payable")){
-            subledger.setSl_preamount(-amount1);
-        }else{
-            subledger.setSl_preamount(new Double(0));
-        }
         kind = transferKind(kind);
         subledger.setSl_kind(kind);
         return subledger;
@@ -553,10 +558,20 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         formData.getMain().setVc_auditdate(new Date());
         baseDTO = this.saveFormData(formData);
         Long id = baseDTO.getId();
+
             VerificationDTO verificationDTO = formData.getMain();
-            Subledger subledger = changSubledgerUntil(verificationDTO);
+
+            Subledger subledger = changSubledgerUntil(verificationDTO, 1);
             subledgerMapper.insertSelective(subledger);
 
+        if ("receivable_to_receivable".equals(verificationDTO.getVc_kind()) ||
+                "receivable_offset_payable".equals(verificationDTO.getVc_kind())
+                || "payable_to_payable".equals(verificationDTO.getVc_kind())){
+            Subledger subledger1 = changSubledgerUntil(verificationDTO,2);
+            subledgerMapper.insertSelective(subledger1);
+
+        }
+
             //更新客户或者供应商的金额
             updateAuditCustomer(verificationDTO);
             updateAuditVendor(verificationDTO);