Exemplo n.º 1
0
        public async Task <IActionResult> Add([Bind("ExpenseId,ExpenseNumber,ExpenseSeq,ExpenseTotalSeq,Name,PersonId,ChartAccountId,CostCenterId,ConditionId,Total,CreateDate,DueDate,DuePayment,Comment,ModifiedDate,Deleted,BusinessEntityId,Id,Seq,Session,Total")] Expense expense, bool continueAdd, IEnumerable <TempFinancialSplit> parcelas)
        {
            if (ModelState.IsValid)
            {
                int _next = (_expenseServices.Query().Max(p => (int?)p.ExpenseId) ?? 0) + 1;
                expense.ExpenseNumber    = string.IsNullOrEmpty(expense.ExpenseNumber) ? expense.Name.ToString().ToString().Truncate(3, false).ToUpper() + _next.ToString() : expense.ExpenseNumber;
                expense.BusinessEntityId = _BusinessId;
                if (parcelas.Any())
                {
                    foreach (var item in parcelas)
                    {
                        Expense newexpense = _financialExtension.GetExpense(expense, _BusinessId, item);
                        //await _revenueServices.AddAsync(revenueParc);
                        ExpenseTrans expenseTrans = _financialExtension.GetExpenseTrans(newexpense, _BusinessId);
                        await _expenseTransServices.AddAsync(expenseTrans);
                    }
                }
                else
                {
                    if (expense.ExpenseTotalSeq > 1)
                    {
                        var parcelamento = _financialExtension.GenerateSplitPay(expense.ExpenseTotalSeq.Value, expense.Total, expense.DueDate, _currentUser);
                        foreach (var item in parcelamento)
                        {
                            Expense newexpense = _financialExtension.GetExpense(expense, _BusinessId, item);
                            newexpense.ExpenseSeq = item.Seq;
                            newexpense.DueDate    = item.DueDate;
                            expense.Total         = item.Total.Value;
                            ExpenseTrans expenseTrans = _financialExtension.GetExpenseTrans(newexpense, _BusinessId);
                            //await _revenueServices.AddAsync(revenueParc);
                            await _expenseTransServices.AddAsync(expenseTrans);
                        }
                    }
                    else
                    {
                        expense.ExpenseSeq      = 1;
                        expense.ExpenseTotalSeq = 1;
                        ExpenseTrans trans = _financialExtension.GetExpenseTrans(expense, _BusinessId);
                        await _expenseTransServices.AddAsync(trans);

                        //await _revenueServices.AddAsync(revenue);
                    }
                }
                return(continueAdd ? RedirectToAction(nameof(Add)) : RedirectToAction(nameof(List)));
            }
            LoadViewData();
            return(View(expense));
        }