示例#1
0
        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);
                }
            }
        }