本文整理汇总了C#中ISavingsContract.Clone方法的典型用法代码示例。如果您正苦于以下问题:C# ISavingsContract.Clone方法的具体用法?C# ISavingsContract.Clone怎么用?C# ISavingsContract.Clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ISavingsContract
的用法示例。
在下文中一共展示了ISavingsContract.Clone方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SpecialOperationDebit
public SavingDebitOperationEvent SpecialOperationDebit(ISavingsContract pSaving, DateTime pDate, OCurrency debitAmount,
string pDescription, User pUser, OSavingsMethods savingsMethod)
{
using (SqlConnection conn = _savingManager.GetConnection())
using (SqlTransaction sqlTransaction = conn.BeginTransaction())
{
try
{
if (pSaving is SavingBookContract)
{
decimal vBalance = CheckVirtualBalance((SavingBookContract) pSaving, debitAmount);
if (vBalance > 0)
{
List<string> messages = new List<string>
{
ServicesHelper.ConvertDecimalToString(
((SavingBookContract) pSaving).GetBalance().Value),
ServicesHelper.ConvertDecimalToString(vBalance),
((SavingBookContract) pSaving).Loans.Count.ToString(),
ServicesHelper.ConvertDecimalToString(
((SavingBookContract) pSaving).GetBalance().Value -
vBalance)
};
throw new OpenCbsSavingException(
OpenCbsSavingExceptionEnum.BalanceOnCurrentSavingAccountForTransfer, messages);
}
}
//// Create a fake Saving object
ISavingsContract savingSimulation = (ISavingsContract) pSaving.Clone();
// Do deposit to the fake Saving object
savingSimulation.SpecialOperationDebit(debitAmount, pDate, pDescription, pUser);
// Check balance simulation
if (!IsSavingBalanceCorrect(savingSimulation))
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.BalanceIsInvalid);
SavingDebitOperationEvent events = pSaving.SpecialOperationDebit(debitAmount, pDate, pDescription,
pUser);
_ePS.FireEvent(events, pSaving, sqlTransaction);
// Change overdraft state
if (pSaving is SavingBookContract)
{
if (pSaving.GetBalance() > 0)
{
((SavingBookContract) pSaving).InOverdraft = false;
UpdateOverdraftStatus(pSaving.Id, false);
}
}
sqlTransaction.Commit();
return events;
}
catch (Exception)
{
sqlTransaction.Rollback();
throw;
}
}
}
示例2: RepayLoanFromSaving
public List<SavingEvent> RepayLoanFromSaving(Loan loan,
RepaymentEvent repaymentEvent,
ISavingsContract savingsContract,
DateTime date,
OCurrency amount,
string description,
SqlTransaction sqlTransaction)
{
if (savingsContract.GetBalance() - amount < 0)
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.WithdrawAmountIsInvalid);
User user = User.CurrentUser;
Teller teller = Teller.CurrentTeller;
if (date.Hour == 0
&& date.Minute == 0
&& date.Second == 0)
{
date = new DateTime(date.Year, date.Month, date.Day, TimeProvider.Now.Hour, TimeProvider.Now.Minute,
TimeProvider.Now.Second);
}
ISavingsContract savingSimulation = (ISavingsContract) savingsContract.Clone();
savingSimulation.RepayLoanFromSaving(loan, repaymentEvent.Id, date, amount, description, user, teller);
List<SavingEvent> events = savingsContract.RepayLoanFromSaving(loan, repaymentEvent.Id, date, amount,
description, user, teller);
foreach (SavingEvent savingEvent in events)
{
_ePS.FireEvent(savingEvent, savingsContract, sqlTransaction);
}
return events;
}
示例3: SimulateCloseAccount
public ISavingsContract SimulateCloseAccount(ISavingsContract saving, DateTime date, User user, bool isDesactivateFees, Teller teller)
{
ISavingsContract savingSimulation = (ISavingsContract) saving.Clone();
savingSimulation.SimulateClose(date, user, "Close savings contract", isDesactivateFees, teller);
return savingSimulation;
}
示例4: LoanDisbursement
public List<SavingEvent> LoanDisbursement(ISavingsContract savings, Loan loan, DateTime date, string description, User user, bool disableFees)
{
using(SqlConnection conn = _savingManager.GetConnection())
using (SqlTransaction sqlTransaction = conn.BeginTransaction())
{
try
{
bool isPending = false;
OSavingsMethods savingsMethod = OSavingsMethods.Cash;
int? pendingEventId = null;
Teller teller = Teller.CurrentTeller;
if (date.Hour == 0 && date.Minute == 0 && date.Second == 0)
date = new DateTime(date.Year, date.Month, date.Day, TimeProvider.Now.Hour,
TimeProvider.Now.Minute,
TimeProvider.Now.Second);
ISavingsContract savingSimulation = (ISavingsContract) savings.Clone();
savingSimulation.LoanDisbursement(loan, date, description, user, disableFees, isPending,
savingsMethod,
pendingEventId, teller);
List<SavingEvent> events = savings.LoanDisbursement(loan, date, description,
user, false, isPending, savingsMethod,
pendingEventId, teller);
foreach (SavingEvent savingEvent in events)
{
_ePS.FireEvent(savingEvent, savings, sqlTransaction);
}
// Change overdraft state
if (savings is SavingBookContract)
{
if (savings.GetBalance() > 0)
{
((SavingBookContract) savings).InOverdraft = false;
UpdateOverdraftStatus(savings.Id, false);
}
}
sqlTransaction.Commit();
return events;
}
catch (Exception)
{
sqlTransaction.Rollback();
throw;
}
}
}
示例5: Deposit
public List<SavingEvent> Deposit(ISavingsContract saving, DateTime dateTime, OCurrency depositAmount,
string description, User user, bool isPending, OSavingsMethods savingsMethod, int? pendingEventId, Teller teller)
{
using (SqlConnection conn = _savingManager.GetConnection())
using (SqlTransaction sqlTransaction = conn.BeginTransaction())
{
try
{
if (!IsDepositAmountCorrect(depositAmount, saving, savingsMethod))
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.DepositAmountIsInvalid);
ISavingsContract savingSimulation = (ISavingsContract) saving.Clone();
// Create a fake Saving object
// Do deposit to the fake Saving object
savingSimulation.Deposit(depositAmount, dateTime, description, user, false, isPending, savingsMethod,
pendingEventId, teller);
if (!IsSavingBalanceCorrect(savingSimulation)) // Check balance simulation
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.BalanceIsInvalid);
List<SavingEvent> events = saving.Deposit(depositAmount, dateTime, description, user, false,
isPending,
savingsMethod, pendingEventId, teller);
foreach (SavingEvent savingEvent in events)
{
_ePS.FireEvent(savingEvent, saving, sqlTransaction);
}
// Change overdraft state
if (saving is SavingBookContract)
{
if (saving.GetBalance() > 0)
{
((SavingBookContract) saving).InOverdraft = false;
UpdateOverdraftStatus(saving.Id, false);
}
}
sqlTransaction.Commit();
return events;
}
catch (Exception)
{
sqlTransaction.Rollback();
throw;
}
}
}
示例6: ValidateWithdrawal
private void ValidateWithdrawal(OCurrency pWithdrawAmount, ISavingsContract pSaving, DateTime pDate, string pDescription, User pUser, Teller teller)
{
if (!IsWithdrawAmountCorrect(pWithdrawAmount, pSaving))
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.WithdrawAmountIsInvalid);
if (pSaving is SavingBookContract)
{
OCurrency fee;
if(((SavingBookContract) pSaving).RateWithdrawFees.HasValue)
{
fee = ((SavingBookContract) pSaving).RateWithdrawFees.Value*pWithdrawAmount;
}
else
{
fee = ((SavingBookContract) pSaving).FlatWithdrawFees;
}
OCurrency totalAmount = pWithdrawAmount + fee;
if (((SavingBookContract)pSaving).GetBalance() - totalAmount < 0)
CanUserMakeBalanceNegative();//Check if current user is allowed to make balance negative
decimal vBalance = CheckVirtualBalance((SavingBookContract) pSaving, totalAmount);
if (vBalance > 0)
{
List<string> messages = new List<string>
{
ServicesHelper.ConvertDecimalToString(((SavingBookContract) pSaving).GetBalance().Value),
ServicesHelper.ConvertDecimalToString(vBalance),
((SavingBookContract) pSaving).Loans.Count.ToString(),
ServicesHelper.ConvertDecimalToString(((SavingBookContract) pSaving).GetBalance().Value - vBalance)
};
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.BalanceOnCurrentSavingAccount, messages);
}
}
// Create a fake Saving object
ISavingsContract savingSimulation = (ISavingsContract)pSaving.Clone();
// Do withdraw in the fake Saving object
savingSimulation.Withdraw(pWithdrawAmount, pDate, pDescription, pUser, false, teller);
// Check balance simulation
if (!IsSavingBalanceCorrect(savingSimulation))
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.BalanceIsInvalid);
}
示例7: SpecialOperationCredit
private SavingCreditOperationEvent SpecialOperationCredit(ISavingsContract pSaving, DateTime pDate, OCurrency creditAmount,
string pDescription, User pUser, OSavingsMethods savingsMethod)
{
using (SqlConnection conn = _savingManager.GetConnection())
using (SqlTransaction sqlTransaction = conn.BeginTransaction())
{
try
{
//// Create a fake Saving object
ISavingsContract savingSimulation = (ISavingsContract) pSaving.Clone();
// Do deposit to the fake Saving object
savingSimulation.SpecialOperationCredit(creditAmount, pDate, pDescription, pUser);
// Check balance simulation
if (!IsSavingBalanceCorrect(savingSimulation))
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.BalanceIsInvalid);
SavingCreditOperationEvent events = pSaving.SpecialOperationCredit(creditAmount, pDate,
pDescription, pUser);
_ePS.FireEvent(events, pSaving, sqlTransaction);
sqlTransaction.Commit();
return events;
}
catch (Exception)
{
sqlTransaction.Rollback();
throw;
}
}
}
示例8: CheckTransfer
private void CheckTransfer(ISavingsContract to, ISavingsContract from, OCurrency amount, OCurrency fee, DateTime date, string description)
{
if (to == null)
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.TransferAccountIsInvalid);
if (to.Status == OSavingsStatus.Closed)
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.CreditTransferAccountInvalid);
if (from is SavingBookContract)
{
decimal vBalance = CheckVirtualBalance((SavingBookContract)from, amount + fee);
if (vBalance > 0)
{
List<string> messages = new List<string>
{
ServicesHelper.ConvertDecimalToString(((SavingBookContract) from).GetBalance().Value),
ServicesHelper.ConvertDecimalToString(vBalance),
((SavingBookContract) from).Loans.Count.ToString(),
ServicesHelper.ConvertDecimalToString(((SavingBookContract) from).GetBalance().Value - vBalance)
};
throw new OpenCbsSavingException(
OpenCbsSavingExceptionEnum.BalanceOnCurrentSavingAccountForTransfer, messages);
}
}
if (from.Id == to.Id)
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.SavingsContractForTransferIdenticals);
if (from.Product.Currency.Id != to.Product.Currency.Id)
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.SavingsContractForTransferNotSameCurrncy);
if (!IsTransferAmountCorrect(amount, from))
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.TransferAmountIsInvalid);
ISavingsContract fromCopy = (ISavingsContract)from.Clone();
ISavingsContract toCopy = (ISavingsContract)to.Clone();
fromCopy.Transfer(toCopy, amount, fee, date, description);
if (!IsSavingBalanceCorrect(fromCopy))
throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.BalanceIsInvalid);
}