public static bool TransferirSaldosBoveda(decimal pMonto, string pDescripcion, int pCajaDiarioId, int pBovedaId, int pOficinaId, int pUsuarioRegId) { using (var scope = new TransactionScope()) { try { using (var db = new VENDIXEntities()) { var oCajaDiario = db.CajaDiario.First(x => x.CajaDiarioId == pCajaDiarioId); var oficinaPersonaId = db.Oficina.First(x => x.OficinaId == pOficinaId).Usuario.PersonaId; db.MovimientoCaja.Add(new MovimientoCaja { CajaDiarioId = pCajaDiarioId, Operacion = "TRS", ImportePago = pMonto, ImporteRecibido = pMonto, MontoVuelto = 0, Descripcion = "TRANS A BOVEDA: " + pDescripcion, IndEntrada = false, Estado = true, PersonaId = oficinaPersonaId, UsuarioRegId = pUsuarioRegId, FechaReg = VendixGlobal.GetFecha() }); db.BovedaMov.Add(new BovedaMov { BovedaId = pBovedaId, CodOperacion = "TRE", Glosa = "TRANS DE CAJA: " + pDescripcion, Importe = pMonto, IndEntrada = true, Estado = true, CajaDiarioId = pCajaDiarioId, UsuarioRegId = pUsuarioRegId, FechaReg = VendixGlobal.GetFecha() }); db.SaveChanges(); 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.usp_ActualizarSaldosBoveda(pBovedaId); db.SaveChanges(); } scope.Complete(); return(true); } catch (Exception) { scope.Dispose(); return(false); } } }