Beispiel #1
0
 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");
         }
     }
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
        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);
        }