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)); }
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); }
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); }