Esempio n. 1
0
        public void CreateExpenseGroup(Expense entity)
        {
            try
            {
                var dataProvider = new ExpenseProvider(_context);
                dataProvider.Create(entity);
                dataProvider.Commit();

                if (entity.ExpenseId == 0)
                {
                    entity.ExpenseId = dataProvider.GetGroupByKey(entity.PropertyCode, entity.Category, entity.ExpenseDate.Value);
                }

                if (entity.ExpenseId > 0)
                {
                    entity.ParentId = entity.ExpenseId;
                    dataProvider.Update(entity.ExpenseId, entity);
                    dataProvider.Commit();
                }
            }
            catch
            {
                throw;
            }
        }
Esempio n. 2
0
        private void CreateExpenseGroupAsNeeded(SummaryRebalanceTransactionModel model, DateTime transactionDate)
        {
            const string RebalanceApprovalNote = "Rebalance";

            var provider = new ExpenseProvider(_dbContext);

            foreach (RebalanceTransactionModel t in model.Transactions)
            {
                int id = provider.GetGroupByKey(t.FromProperty, DebitGroupCategory, transactionDate);
                if (id == 0)
                {
                    var expense = new Expense
                    {
                        ExpenseDate      = transactionDate,
                        Category         = DebitGroupCategory,
                        ExpenseAmount    = 0,
                        PropertyCode     = t.FromProperty,
                        ApprovalStatus   = RevenueApprovalStatus.Approved,
                        ApprovedNote     = RebalanceApprovalNote,
                        ConfirmationCode = string.Empty,
                    };
                    provider.CreateExpenseGroup(expense);
                }

                id = provider.GetGroupByKey(t.ToProperty, CreditGroupCategory, transactionDate);
                if (id == 0)
                {
                    var expense = new Expense
                    {
                        ExpenseDate      = transactionDate,
                        Category         = CreditGroupCategory,
                        ExpenseAmount    = 0,
                        PropertyCode     = t.ToProperty,
                        ApprovalStatus   = RevenueApprovalStatus.Approved,
                        ApprovedNote     = RebalanceApprovalNote,
                        ConfirmationCode = string.Empty,
                    };
                    provider.CreateExpenseGroup(expense);
                }
            }
        }
Esempio n. 3
0
        private bool CreateExpenseForTransaction(string propertyCode, double amount, DateTime transactionDate, string groupCategory, string category)
        {
            var provider = new ExpenseProvider(_dbContext);
            int groupId  = provider.GetGroupByKey(propertyCode, groupCategory, transactionDate);

            if (groupId > 0)
            {
                amount = -Math.Round(amount, 2);

                var expense = new Expense
                {
                    ExpenseDate      = transactionDate,
                    Category         = category,
                    ExpenseAmount    = (float)amount,
                    PropertyCode     = propertyCode,
                    ParentId         = groupId,
                    ApprovalStatus   = RevenueApprovalStatus.Approved,
                    ApprovedNote     = string.Empty,
                    ConfirmationCode = string.Empty,
                };

                provider.Create(expense);

                var entity = provider.Retrieve(groupId);
                if (entity != null)
                {
                    entity.ExpenseAmount += (float)amount;
                    provider.Update(entity.ExpenseId, entity);
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }