package com.amarsoft.acct.accounting.web; import com.amarsoft.app.accounting.cashflow.CashFlowHelper; import com.amarsoft.app.base.businessobject.BusinessObject; import com.amarsoft.app.base.businessobject.BusinessObjectManager; import com.amarsoft.app.base.trans.TransactionHelper; import com.amarsoft.app.base.util.DateHelper; /** * 一般还款测算 * @author Amarsoft核算团队 * */ public class PaymentCalculate{ private String transactionSerialNo; public String getTransactionSerialNo() { return transactionSerialNo; } public void setTransactionSerialNo(String transactionSerialNo) { this.transactionSerialNo = transactionSerialNo; } public BusinessObject run() throws Exception { if(transactionSerialNo == null || "".equals(transactionSerialNo)) { throw new Exception("交易流水为空!"); } BusinessObjectManager bomanager = BusinessObjectManager.createBusinessObjectManager(); BusinessObject transaction = TransactionHelper.loadTransaction(transactionSerialNo, bomanager); BusinessObject document = transaction.getBusinessObject(transaction.getString("DOCUMENTTYPE")); BusinessObject loan = transaction.getBusinessObject(transaction.getString("RelativeObjectType")); String payRuleType = CashFlowHelper.getPayRuleType(loan); document.setAttributeValue("PayRuleType", payRuleType); String transDate = transaction.getString("TransDate"); //对于生效日期不是在当天的进行换日交易的处理 while(loan.getString("BusinessDate").compareTo(transDate) < 0) { BusinessObject transaction1 = TransactionHelper.createTransaction("9090", null, loan, "", "", DateHelper.getBusinessDate(), bomanager); transaction1 = TransactionHelper.executeTransaction(transaction1, bomanager); } TransactionHelper.executeTransaction(transaction, bomanager); BusinessObject payment = transaction.getBusinessObject(transaction.getString("DocumentType")); bomanager.clear(); bomanager.updateBusinessObject(payment); bomanager.updateDB(); return payment; } }