public async Task <IActionResult> PutEntradaContable(int id, EntradaContable entradaContable) { if (id != entradaContable.Id) { return(BadRequest()); } _context.Entry(entradaContable).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!EntradaContableExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <ActionResult <EntradaContable> > PostEntradaContable(EntradaContable entradaContable) { //fecha automatica by ignacio entradaContable.Fecha = DateTime.Now; //moneda automatica entradaContable.MonedaId = (entradaContable.MonedaId > 0) ? entradaContable.MonedaId : 1; var moneda = await _context.Moneda.FindAsync(entradaContable.MonedaId); if (!ValidCreditsAndDebitsAmounts(entradaContable)) { return(BadRequest("Esta entrada contable está descuadrada.")); } if (!ValidMoveTypes(entradaContable)) { return(BadRequest("Esta entrada contable le hace falta un débito o crédito.")); } //monto automatica by ignacio entradaContable.Monto = (entradaContable.Monto > 0) ? entradaContable.Monto : entradaContable.DetalleEntradaContable.Sum(d => d.Monto) * moneda.Tasa; _context.EntradaContable.Add(entradaContable); await _context.SaveChangesAsync(); return(CreatedAtAction("GetEntradaContable", new { id = entradaContable.Id }, entradaContable)); }
private bool ValidMoveTypes(EntradaContable entradaContable) { if (entradaContable != null && entradaContable.DetalleEntradaContable?.Count > 0) { int?cantidadDbs = entradaContable.DetalleEntradaContable?.Where(d => d.TipoMovimiento == "DB")?.Count(); int?cantidadCds = entradaContable.DetalleEntradaContable?.Where(d => d.TipoMovimiento == "CR")?.Count(); if ((cantidadDbs != null && cantidadDbs >= 1) && (cantidadCds != null && cantidadCds >= 1)) { return(true); } return(false); } return(false); }
private bool ValidCreditsAndDebitsAmounts(EntradaContable entrada) { if (entrada != null && entrada.DetalleEntradaContable?.Count > 0) { double?montosDbs = entrada.DetalleEntradaContable?.Where(d => d.TipoMovimiento == "DB")?.Sum(d => d.Monto); double?montosCrs = entrada.DetalleEntradaContable?.Where(d => d.TipoMovimiento == "CR")?.Sum(d => d.Monto); if (montosCrs < montosDbs) { return(false); } return(true); } return(false); }