public static string RealizarDesembolso(int pCreditoId) { var cajadiarioid = VendixGlobal.GetCajaDiarioId(); var usuarioid = VendixGlobal.GetUsuarioId(); int movimientoCajaId = 0; using (var scope = new TransactionScope()) { try { using (var db = new VENDIXEntities()) { var credito = db.Credito.Find(pCreditoId); credito.FechaDesembolso = VendixGlobal.GetFecha(); credito.Estado = "DES"; credito.UsuarioModId = usuarioid; credito.FechaMod = VendixGlobal.GetFecha(); CreditoBL.Actualizar(db, credito); var mov = new MovimientoCaja() { CajaDiarioId = cajadiarioid, Operacion = "DES", ImportePago = credito.MontoDesembolso, ImporteRecibido = credito.MontoDesembolso, MontoVuelto = 0, PersonaId = credito.PersonaId, Descripcion = "DESEMBOLSO CREDITO " + credito.CreditoId.ToString(), IndEntrada = false, Estado = true, UsuarioRegId = usuarioid, FechaReg = VendixGlobal.GetFecha(), OrdenVentaId = null, CreditoId = credito.CreditoId }; db.MovimientoCaja.Add(mov); db.SaveChanges(); movimientoCajaId = mov.MovimientoCajaId; var oCajaDiario = db.CajaDiario.Find(cajadiarioid); var qry = db.MovimientoCaja.Where(z => z.CajaDiarioId == oCajaDiario.CajaDiarioId && z.Estado).Select(x => new { x.ImportePago, x.IndEntrada }); if (qry.Count(x => x.IndEntrada) > 0) { oCajaDiario.Entradas = qry.Where(z => z.IndEntrada).Sum(x => x.ImportePago); } if (qry.Count(x => x.IndEntrada == false) > 0) { oCajaDiario.Salidas = qry.Where(z => z.IndEntrada == false).Sum(x => x.ImportePago); } oCajaDiario.SaldoFinal = oCajaDiario.SaldoInicial + oCajaDiario.Entradas - oCajaDiario.Salidas; db.SaveChanges(); } scope.Complete(); return(movimientoCajaId.ToString()); } catch (Exception ex) { scope.Dispose(); return(ex.Message); } } }
public override RelacionCobranza CrearObjeto(MovimientoCaja objMovientoCajaDatos, Boolean ConBoveda) { return new RelacionCobranzaDatos(objMovientoCajaDatos,ConBoveda); }
public RelacionCobranzaDatos(MovimientoCaja objMovientoCajaDatos, Boolean ConBoveda) : base(objMovientoCajaDatos, ConBoveda) { }
public async Task <IActionResult> PutIngresoInsumo([FromRoute] int id, [FromBody] IngresoInsumo ingresoInsumo) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != ingresoInsumo.IdIngresoInsumo) { return(BadRequest()); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { decimal costo = ingresoInsumo.Items.Sum(x => x.Costo); var ingresoInsumoBD = sn.Get <IngresoInsumo>(id); var caja = await sn.GetAsync <Caja>(ingresoInsumo.Caja.IdCaja); if ((ingresoInsumoBD.Costo + caja.Saldo) >= costo) { caja.Saldo += ingresoInsumoBD.Costo; caja.Saldo -= costo; } else { throw new Exception("La caja no tiene saldo suficiente."); } var items = sn.Query <ItemIngresoInsumo>() .Where(x => x.IdIngresoInsumo == id) .ToList(); foreach (var item in items) { if (item.Producto.EsInsumo) { InventarioInsumo inventario = await sn.Query <InventarioInsumo>() .Where(x => x.IdAlmacen == ingresoInsumo.Almacen.IdAlmacen && x.IdInsumo == item.Producto.IdProducto) .FirstOrDefaultAsync(); if (inventario != null && inventario.Stock >= (item.Cantidad * item.Factor)) { inventario.Stock = inventario.Stock - (item.Cantidad * item.Factor); } else { return(StatusCode(500, "Sin stock para el insumo: " + item.Producto.Nombre)); } } } sn.Delete(string.Format("FROM ItemIngresoInsumo WHERE IdIngresoInsumo = {0}", id)); foreach (var item in ingresoInsumo.Items) { if (item.Producto.EsInsumo) { InventarioInsumo inventario = await sn.Query <InventarioInsumo>() .Where(x => x.IdAlmacen == ingresoInsumo.Almacen.IdAlmacen && x.IdInsumo == item.Producto.IdProducto) .FirstOrDefaultAsync(); if (inventario == null) { sn.Save(new InventarioInsumo { IdAlmacen = ingresoInsumo.Almacen.IdAlmacen, IdInsumo = item.Producto.IdProducto, Stock = (item.Cantidad * item.Factor) }); } else { inventario.Stock = inventario.Stock + (item.Cantidad * item.Factor); } } item.IdIngresoInsumo = id; sn.Save(item); } MovimientoCaja movimiento = sn.Query <MovimientoCaja>() .Where(x => x.IdIngresoInsumo == id).FirstOrDefault(); movimiento.Importe = costo * -1; ingresoInsumoBD.Comentario = ingresoInsumo.Comentario; ingresoInsumoBD.Costo = costo; await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }