internal static void VerifyInstalmentPolicy(Physical.PhysicalOrder order) { if (order.Instalment != null) { InstalmentPolicyDetail instalmentPolicyDetail = order.Instalment.InstalmentPolicyDetail(null); if (!instalmentPolicyDetail.IsActive) { throw new TransactionServerException(TransactionError.OrderTypeIsNotAcceptable, "Instalment policy is not active"); } } }
private static void Initialize(InstalmentPolicyDetail instalmentPolicyDetail, DataRow dataRow) { instalmentPolicyDetail.InstalmentPolicyId = (Guid)dataRow["InstalmentPolicyId"]; instalmentPolicyDetail.Period = (int)dataRow["Period"]; instalmentPolicyDetail.MinDownPayment = dataRow.GetItemValue <decimal>("MinDownPayment", 0); instalmentPolicyDetail.MaxDownPayment = dataRow.GetItemValue <decimal>("MaxDownPayment", 0); instalmentPolicyDetail.InterestRate = dataRow.GetItemValue <decimal>("InterestRate", 0); instalmentPolicyDetail.AdministrationFeeBase = dataRow["AdministrationFeeBase"].ToEnum <AdministrationFeeBaseType>(); instalmentPolicyDetail.AdministrationFee = dataRow.GetItemValue <decimal>("AdministrationFee", 0); instalmentPolicyDetail.ContractTerminateType = dataRow["ContractTerminateType"].ToEnum <ContractTerminateType>(); instalmentPolicyDetail.ContractTerminateFee = dataRow.GetItemValue <decimal>("ContractTerminateFee", 0); instalmentPolicyDetail.DownPaymentBasis = (int)dataRow["DownPaymentBasis"]; instalmentPolicyDetail.Frequence = (int)dataRow["Frequence"]; instalmentPolicyDetail.IsActive = (bool)dataRow["IsActive"]; //instalmentPolicyDetail.IsActive = false; }
internal static decimal CaculateInstalmentAdministrationFee(decimal value, decimal lot, InstalmentPolicyDetail instalmentPolicyDetail, CurrencyRate currencyRate) { decimal result = 0; switch (instalmentPolicyDetail.InstalmentFeeType) { case InstalmentFeeType.FixedAmountPerLot: result = lot * instalmentPolicyDetail.InstalmentFeeRate; result = Math.Round(result, currencyRate.TargetCurrency.Decimals, MidpointRounding.AwayFromZero); break; case InstalmentFeeType.ValueProportion: result = value * instalmentPolicyDetail.InstalmentFeeRate; result = -currencyRate.Exchange(-result); break; case InstalmentFeeType.FixedAmount: result = instalmentPolicyDetail.InstalmentFeeRate; result = Math.Round(result, currencyRate.TargetCurrency.Decimals, MidpointRounding.AwayFromZero); break; default: result = 0; break; } return(result); }