Пример #1
0
        /// <summary>
        /// this method calculates a Parcel value from contract
        /// </summary>
        /// <param name="companyId"></param>
        /// <param name="paymentMethodId"></param>
        /// <param name="qtdParcel"></param>
        /// <param name="contractValue"></param>
        /// <returns></returns>
        public Decimal CalculateParcelsValue(Int32 companyId, Int32 financierOperationId, Int32 qtdParcels,
                                             Decimal contractValue)
        {
            var accountManager = new AccountManager(this);
            FinancierCondition financierCondition =
                accountManager.GetFinancierConditionByParcelCount(companyId, financierOperationId, qtdParcels) ??
                new FinancierCondition();

            return(Convert.ToDecimal(contractValue * financierCondition.MonthlyTax));
        }
Пример #2
0
        /// <summary>
        /// This method insert a new parcel
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public int Insert(Parcel entity, FinancierCondition financierCondition)
        {
            if (financierCondition == null)
            {
                financierCondition = new FinancierCondition();
            }

            //Set the Closed/Open Parcel
            if (entity.AccountId.HasValue)
            {
                entity.EffectedAmount = entity.Amount;
                entity.EffectedDate   = DateTime.Now;
            }

            if (Convert.ToBoolean(entity.IsRecurrent))
            {
                entity.EffectedAmount = null;
                entity.EffectedDate   = null;


                if (entity.RecurrentPeriod == 7)
                {
                    entity.DueDate = Convert.ToDateTime(entity.DueDate).AddDays(7);
                }
                else if (entity.RecurrentPeriod == 15)
                {
                    entity.DueDate = Convert.ToDateTime(entity.DueDate).AddDays(15);
                }
                else if (entity.RecurrentPeriod == 30)
                {
                    entity.DueDate = Convert.ToDateTime(entity.DueDate).AddMonths(1);
                }
                else
                {
                    entity.DueDate = Convert.ToDateTime(entity.DueDate).AddYears(1);
                }
            }

            //
            // After that, the code remains the same.
            //

            DbContext.Parcels.InsertOnSubmit(entity);
            DbContext.SubmitChanges();

            if (entity.BillId.HasValue)
            {
                return((int)entity.BillId);
            }
            else
            {
                return((int)entity.InvoiceId);
            }
        }
Пример #3
0
    protected void btnAdd_Click(object sender, ImageClickEventArgs e)
    {
        if (ucCurrFieldParcelCount.IntValue == 0)
        {
            ShowError("Quantidade de parcelas não pode ser zero!");
            return;
        }

        var financierCondition = new FinancierCondition
        {
            CompanyId            = Company.CompanyId,
            FinancierOperationId = OriginalFinancierOperation.FinancierOperationId,
            MonthlyTax           = ucCurrFieldMonthlyTax.CurrencyValue.Value,
            ParcelCount          = ucCurrFieldParcelCount.IntValue
        };

        AccountManager.InsertFinancierCondition(financierCondition);
        grdFinancierCondition.DataBind();
        ucCurrFieldMonthlyTax.Text = ucCurrFieldParcelCount.Text = String.Empty;
    }
 /// <summary>
 /// this method deletes a FinancierCondition
 /// </summary>
 /// <param name="entity"></param>
 public void DeleteFinancierCondition(FinancierCondition entity)
 {
     DbContext.FinancierConditions.DeleteOnSubmit(entity);
     DbContext.SubmitChanges();
 }
 /// <summary>
 /// this method updates a FinancierCondition
 /// </summary>
 /// <param name="original_entity"></param>
 /// <param name="entity"></param>
 public void UpdateFinancierCondition(FinancierCondition original_entity, FinancierCondition entity)
 {
     original_entity.CopyPropertiesFrom(entity);
     DbContext.SubmitChanges();
 }
 /// <summary>
 /// this method inserts a FinancierCondition
 /// </summary>
 /// <param name="entity"></param>
 public void InsertFinancierCondition(FinancierCondition entity)
 {
     DbContext.FinancierConditions.InsertOnSubmit(entity);
     DbContext.SubmitChanges();
 }
    protected void btnAdd_Click(object sender, ImageClickEventArgs e)
    {

        if (ucCurrFieldParcelCount.IntValue == 0)
        {
            ShowError("Quantidade de parcelas não pode ser zero!");
            return;
        }

        var financierCondition = new FinancierCondition
                                     {
                                         CompanyId = Company.CompanyId,
                                         FinancierOperationId = OriginalFinancierOperation.FinancierOperationId,
                                         MonthlyTax = ucCurrFieldMonthlyTax.CurrencyValue.Value,
                                         ParcelCount = ucCurrFieldParcelCount.IntValue
                                     };

        AccountManager.InsertFinancierCondition(financierCondition);
        grdFinancierCondition.DataBind();
        ucCurrFieldMonthlyTax.Text = ucCurrFieldParcelCount.Text = String.Empty;
    }
        private List<Parcel> CreateParcelList(decimal total, DateTime firstDatePayment, FinancierCondition condition)
        {
            List<Parcel> parcelList = new List<Parcel>();
            for (int i = 1; i <= condition.ParcelCount; i++)
            {
                decimal amount = Math.Round(total / condition.ParcelCount, 2);
                if (i == 1)
                    amount += (total - (amount * condition.ParcelCount));

                Parcel parcel = new Parcel();
                parcel.FinancierOperationId = condition.FinancierOperationId;
                parcel.Amount = amount;
                parcel.Description = i + "/" + condition.ParcelCount;
                parcel.DueDate = firstDatePayment.AddMonths(i - 1);
                parcel.CompanyId = condition.CompanyId;

                //if (condition.FinancierOperation.PaymentMethod.PaymentMethodTypeId == PaymentMethodType.CashOrOnLineTransfer)
                //{
                //    parcel.EffectedDate = DateTime.Now;
                //    parcel.EffectedAmount = parcel.Amount;
                //}

                parcelList.Add(parcel);
            }
            return parcelList;
        }
        public Sale SaveSale(Sale sale, Budget budget, Int32 userId, DateTime firstDatePayment, FinancierCondition condition)
        {
            var saleItemlist = (sale.SaleItems != null) ? sale.SaleItems.ToList() : new List<SaleItem>();

            //
            // Save Budget
            //
            if (budget != null)
            {
                Budget originalBudget = GetBudget(budget.BudgetId, budget.CompanyId);
                if (originalBudget != null)
                {
                    originalBudget.CopyPropertiesFrom(budget);
                    DbContext.SubmitChanges();
                }
                else
                    InsertBudget(budget, null);

                sale.BudgetId = budget.BudgetId;

                saleItemlist = CreateSaleItemList(budget.BudgetItems.ToList());
            }


            //
            // Save Sale
            //            
            var parcelList = CreateParcelList(saleItemlist.Sum(i => i.Quantity * i.UnitPrice), firstDatePayment, condition);

            return SaveSale(sale, saleItemlist, userId, parcelList);
        }