public async Task <IActionResult> Create([Bind("PayExpenseId,ProductId,ExpenseId,Description,Amount,Tax,PayExpenseDate")] PayExpense payExpense)
        {
            if (ModelState.IsValid)
            {
                payExpense.Product = await _context.Product.SingleOrDefaultAsync(p => p.ProductId == payExpense.ProductId);

                payExpense.Expense = await _context.Expense.SingleOrDefaultAsync(e => e.ExpenseId == payExpense.ExpenseId);

                if (payExpense.Product.Balance < (payExpense.Amount + payExpense.Tax))
                {
                    CreateInitial(payExpense.ProductId, payExpense.ExpenseId);
                    ModelState.AddModelError("", "Balance de Producto origen insuficiente.");
                    return(View(payExpense));
                }

                FunctionsConvert functionsConvert = new FunctionsConvert(_context);
                var _payExpense = functionsConvert.ConvertCurrency(payExpense, 0, 0);

                //restar el balance del producto origen
                payExpense.Product.Balance = payExpense.Product.Balance - _payExpense.Amount - _payExpense.Tax;

                payExpense.StatusPayExpense = Models.Enum.StatusCashFlow.Activo;
                payExpense.CreatedDate      = DateTime.Today;
                _context.Add(payExpense);
                //_context.Update(product);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            CreateInitial(payExpense.ProductId, payExpense.ExpenseId);
            return(View(payExpense));
        }
        public async Task <IActionResult> Edit(int id, [Bind("PayExpenseId,ProductId,ExpenseId,Description,Amount,Tax,PayExpenseDate,CreatedDate,StatusPayExpense")] PayExpense payExpense)
        {
            if (id != payExpense.PayExpenseId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    PayExpense payExpenseOld = await _context.PayExpense.SingleOrDefaultAsync(c => c.PayExpenseId == payExpense.PayExpenseId);

                    if (payExpense.Amount != payExpenseOld.Amount)
                    {
                        FunctionsConvert functionsConvert = new FunctionsConvert(_context);

                        var _amount = payExpense.Amount - payExpenseOld.Amount;
                        var _tax    = payExpense.Tax - payExpenseOld.Tax;

                        payExpense.Product = await _context.Product.SingleOrDefaultAsync(p => p.ProductId == payExpense.ProductId);

                        payExpense.Expense = await _context.Expense.SingleOrDefaultAsync(e => e.ExpenseId == payExpense.ExpenseId);

                        var _payExpense = functionsConvert.ConvertCurrency(payExpense, _amount, _tax);

                        if (payExpense.Product.Balance < (_payExpense.Amount + _payExpense.Tax))
                        {
                            CreateInitial(payExpense.ProductId, payExpense.ExpenseId);
                            ModelState.AddModelError("", "Balance de Producto origen insuficiente.");
                            return(View(payExpense));
                        }

                        payExpense.Product.Balance = payExpense.Product.Balance - _payExpense.Amount - _payExpense.Tax;
                        //_context.Update(product);
                    }

                    _context.Entry(payExpenseOld).State = EntityState.Detached; //detach old to update the new
                    _context.Update(payExpense);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PayExpenseExists(payExpense.PayExpenseId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            CreateInitial(payExpense.ProductId, payExpense.ExpenseId);
            return(View(payExpense));
        }
        // GET: PayExpenses/Create
        public IActionResult Create()
        {
            CreateInitial(0, 0);

            PayExpense payExpense = new PayExpense();

            payExpense.PayExpenseDate = DateTime.Today;
            return(View(payExpense));
        }
示例#4
0
 public void SortPayExpenses(string hdr, PayExpense[] temp)
 {
     switch (hdr)
     {
         case "Day":
             Array.Sort(temp, new PayExpense.ComparerByDay());
             break;
         case "Sum":
             Array.Sort(temp, new PayExpense.ComparerBySum());
             break;
         case "Category":
             Array.Sort(temp, new PayExpense.ComparerByCategory());
             break;
         default:
             Record.NeedToReverse = false;
             break;
     }
     if (Record.NeedToReverse)
         Array.Reverse(temp);
 }
示例#5
0
        public PayExpense ConvertCurrency(PayExpense payExpense, decimal _amount, decimal _tax)
        {
            PayExpense _payExpense = new PayExpense();

            if (_amount > 0)
            {
                _payExpense.Amount = _amount;
                _payExpense.Tax    = _tax;
            }
            else
            {
                _payExpense.Amount = payExpense.Amount;
                _payExpense.Tax    = payExpense.Tax;
            }

            var productFrom = _context.Product.SingleOrDefaultAsync(p => p.ProductId == payExpense.ProductId);
            var expenseTo   = _context.Expense.SingleOrDefaultAsync(p => p.ExpenseId == payExpense.ExpenseId);

            if (productFrom.Result.currency.CurrencyId != expenseTo.Result.currency.CurrencyId)
            {
                var currencyConvert = _context.CurrencyConvert.SingleOrDefaultAsync(p => p.CurrencyFromCurrencyId == expenseTo.Result.CurrencyId &&
                                                                                    p.CurrencyToCurrencyId == productFrom.Result.CurrencyId && p.StatusCurrency == Models.Enum.StatusCurrency.Activa &&
                                                                                    (p.DateValidFrom <= payExpense.PayExpenseDate && p.DateValidTo >= payExpense.PayExpenseDate));

                if (currencyConvert != null)
                {
                    if (_amount > 0)
                    {
                        _payExpense.Amount = _amount * currencyConvert.Result.Multiple;
                        _payExpense.Tax    = _tax * currencyConvert.Result.Multiple;
                    }
                    else
                    {
                        _payExpense.Amount = payExpense.Amount * currencyConvert.Result.Multiple;
                        _payExpense.Tax    = payExpense.Tax * currencyConvert.Result.Multiple;
                    }
                }
            }

            return(_payExpense);
        }