Exemplo n.º 1
0
        public static bool TransferirCajaDiarioBoveda()
        {
            var idOficina = VendixGlobal.GetOficinaId();

            using (var scope = new TransactionScope())
            {
                try
                {
                    var cajasDiarios = Listar(x => x.IndCierre && x.TransBoveda == false && x.Caja.OficinaId == idOficina, includeProperties: "Caja");
                    var oBoveda      = BovedaBL.Obtener(x => x.OficinaId == idOficina && x.IndCierre == false);

                    foreach (var item in cajasDiarios)
                    {
                        item.TransBoveda = true;
                        Actualizar(item);

                        var movBoveda = new BovedaMov
                        {
                            BovedaId     = oBoveda.BovedaId,
                            CodOperacion = "TRE",
                            Glosa        = "CIERRE " + item.Caja.Denominacion + " " + VendixGlobal.GetFecha().ToShortDateString(),
                            Importe      = item.SaldoFinal,
                            IndEntrada   = true,
                            Estado       = true,
                            UsuarioRegId = VendixGlobal.GetUsuarioId(),
                            FechaReg     = VendixGlobal.GetFecha(),
                            CajaDiarioId = item.CajaDiarioId,
                        };
                        BovedaMovBL.Crear(movBoveda);
                    }

                    var oBovedaMov = BovedaMovBL.Listar(x => x.BovedaId == oBoveda.BovedaId && x.Estado);
                    oBoveda.Entradas   = oBovedaMov.Where(x => x.IndEntrada).Sum(x => x.Importe);
                    oBoveda.Salidas    = oBovedaMov.Where(x => x.IndEntrada == false).Sum(x => x.Importe);
                    oBoveda.SaldoFinal = oBoveda.SaldoInicial + oBoveda.Entradas - oBoveda.Salidas;
                    BovedaBL.Actualizar(oBoveda);

                    using (var db = new VENDIXEntities())
                    {
                        db.usp_CalificarCliente(idOficina);
                        db.SaveChanges();
                    }
                    scope.Complete();
                    return(true);
                }
                catch (Exception)
                {
                    scope.Dispose();
                    throw;
                }
            }
        }