Example #1
0
        public decimal?VentasEfectivo(string sucursal, byte num)
        {
            var ctxpos = new DataAccess.SirCoPOSDataContext();
            var ctxpv  = new DataAccess.SirCoPVDataContext();
            var fondo  = ctxpos.Fondos.Where(i => i.CajaSucursal == sucursal &&
                                             i.Tipo == Common.Constants.TipoFondo.Cajon &&
                                             i.CajaNumero == num &&
                                             !i.FechaCierre.HasValue).SingleOrDefault();

            if (fondo == null)
            {
                return(null);
            }

            var fecha = fondo.FechaApertura;
            var last  = fondo.Arqueos.OrderByDescending(i => i.Fecha).FirstOrDefault();

            if (last != null)
            {
                fecha = last.Fecha;
            }

            var q = from h in ctxpv.Pagos
                    where h.sucursal == fondo.CajaSucursal &&
                    h.idcajero == fondo.ResponsableId &&
                    h.estatus == "AP" && h.fum > fecha
                    from d in h.Detalle
                    where d.idformapago == (int)Common.Constants.FormaPago.EF
                    select d.importe;
            var sum = q.Sum();

            return(sum);
        }
Example #2
0
        // GET: Admin/FondoArqueos
        public ActionResult Index(int id)
        {
            var ctx = new DataAccess.SirCoPOSDataContext();
            var q   = ctx.FondoArqueos.Where(i => i.FondoId == id).OrderByDescending(i => i.Fecha);

            return(View(q));
        }
Example #3
0
        public ActionResult FormasPago(int id)
        {
            var ctx = new DataAccess.SirCoPOSDataContext();
            var q   = ctx.FondoArqueoFormaPagos.Where(i => i.FondoArqueoId == id);

            return(View(q));
        }
Example #4
0
        public void Transfer(byte from, byte to, decimal amount, int userId)
        {
            var now = Helpers.Common.GetNow();
            var ctx = new DataAccess.SirCoPOSDataContext();
            var gid = Guid.NewGuid();

            var cfrom = ctx.Fondos.Where(i => i.ResponsableId == userId && i.Tipo == (Common.Constants.TipoFondo)from).Single();
            var cto   = ctx.Fondos.Where(i => i.ResponsableId == userId && i.Tipo == (Common.Constants.TipoFondo)to).Single();

            cfrom.Movimientos.Add(new DataAccess.SirCoPOS.FondoMovimiento
            {
                Entrada    = false,
                Fecha      = now,
                Importe    = amount,
                Referencia = gid,
                UsuarioId  = userId
            });
            cfrom.Disponible -= amount;
            cto.Movimientos.Add(new DataAccess.SirCoPOS.FondoMovimiento
            {
                Entrada    = true,
                Fecha      = now,
                Importe    = amount,
                Referencia = gid,
                UsuarioId  = userId
            });
            cto.Disponible += amount;
            ctx.SaveChanges();
        }
Example #5
0
        protected override void Execute(CodeActivityContext context)
        {
            var ctx = new DataAccess.SirCoPOSDataContext();
            var ctxc = new DataAccess.SirCoCreditoDataContext();
            var reply = context.GetValue(this.Reply);

            var item = ctx.SolicitudesCreditoVales.Where(i => i.Id == reply.Id).Single();
            item.fechaAprobacion = DateTime.Now;
            item.Approved = reply.Approved;
            if (reply.Approved)
            {
                item.electronicaAprobacion = reply.Electronica;
                item.montoAprobacion = reply.MontoVale - item.ValeCliente.cantidad;
                item.ValeCliente.cantidad = reply.MontoVale.Value;

                var dis = ctxc.Distribuidores.Where(i => i.iddistrib == item.ValeCliente.iddistrib).Single();
                if (reply.LimiteCredito.HasValue && reply.LimiteCredito.Value != dis.limitecredito)
                {
                    item.creditoAprobacion = reply.LimiteCredito - dis.limitecredito;
                    dis.limitecredito = reply.LimiteCredito;
                    if (reply.Electronica.HasValue)
                        dis.solocalzado = (short)(reply.Electronica.Value ? 0 : 1);
                    dis.fum = DateTime.Now;
                    ctxc.SaveChanges();
                }
            }
            ctx.SaveChanges();
        }
Example #6
0
        // GET: Admin/Ventas
        public ActionResult Index(int?fondo)
        {
            var ctx = new DataAccess.SirCoPVDataContext();

            if (fondo.HasValue)
            {
                var ctxpos = new DataAccess.SirCoPOSDataContext();
                var f      = ctxpos.Fondos.Where(i => i.Id == fondo).SingleOrDefault();
                if (f == null)
                {
                    return(HttpNotFound());
                }
                var q = ctx.Ventas.Where(i => i.fum > f.FechaApertura &&
                                         i.idcajero == f.ResponsableId &&
                                         i.sucursal == f.CajaSucursal);
                if (f.FechaCierre.HasValue)
                {
                    q = q.Where(i => i.fum < f.FechaCierre);
                }
                var res = q.OrderByDescending(i => i.fum);
                return(View(q));
            }
            else
            {
                var date = DateTime.Today.AddDays(-15);
                var q    = ctx.Ventas.Where(i => i.fecha > date).OrderByDescending(i => i.fum).Take(50);
                return(View(q));
            }
        }
Example #7
0
        // GET: Admin/Fondos
        public ActionResult Index()
        {
            var admin = new BusinessLogic.Admin();
            var ctx   = new DataAccess.SirCoPOSDataContext();
            var ctxpv = new DataAccess.SirCoPVDataContext();
            var items = ctx.Cajas
                        .OrderByDescending(i => i.Disponible)
                        .ThenBy(i => i.Numero)
                        .Select(i => new Models.Caja
            {
                Item = i
            }).ToArray();

            foreach (var item in items)
            {
                var fondo = ctx.Fondos.Where(i => i.CajaSucursal == item.Item.Sucursal && i.CajaNumero == item.Item.Numero &&
                                             !i.FechaCierre.HasValue).SingleOrDefault();
                item.Fondo       = fondo?.Id;
                item.Responsable = fondo?.ResponsableId;
            }
            //foreach (var item in items.Where(i => i.Item.Tipo == Common.Constants.TipoFondo.Cajon))
            //{
            //    item.Ventas = admin.VentasEfectivo(item.Item.Sucursal, item.Item.Numero);
            //}
            return(View(items));
        }
Example #8
0
        public Empleado FindAuditorApertura(int id, int idcajero)
        {
            var ctx    = new DataAccess.SirCoNominaDataContext();
            var ctxpos = new DataAccess.SirCoPOSDataContext();
            var cajero = ctx.Empleados.Where(i => i.idempleado == idcajero &&
                                             i.estatus == "A").Single();

            var auditor = ctx.Empleados.Where(i => i.idempleado == id &&
                                              i.estatus == "A").SingleOrDefault();

            if (auditor != null)
            {
                var asuc = auditor.clave.Substring(0, 2);
                var suc  = cajero.clave.Substring(0, 2);

                if (!(cajero.idpuesto == (int)Common.Constants.Puesto.CJA ||
                      Common.Constants.Puestos.Gerentes.Contains(cajero.idpuesto)))
                {
                    return(null);
                }


                decimal?disponible = null;
                if (auditor.idpuesto == (int)Common.Constants.Puesto.CJA ||
                    Common.Constants.Puestos.Gerentes.Contains(auditor.idpuesto))
                {
                    var fondo = ctxpos.Fondos.Where(i => i.CajaSucursal == suc && i.ResponsableId == auditor.idempleado &&
                                                    !i.FechaCierre.HasValue)
                                .SingleOrDefault();
                    if (fondo == null)
                    {
                        return(null);
                    }
                    else
                    {
                        disponible = fondo.Disponible;
                    }
                }
                else if (!Common.Constants.Puestos.Admin.Contains(auditor.idpuesto))
                {
                    return(null);
                }

                return(new Empleado
                {
                    Id = auditor.idempleado,
                    ApellidoMaterno = auditor.apmaterno,
                    ApellidoPaterno = auditor.appaterno,
                    Nombre = auditor.nombre,
                    Usuario = auditor.usuariosistema,
                    Clave = auditor.clave,
                    Puesto = auditor.idpuesto,
                    Disponible = disponible
                });
            }
            return(null);
        }
Example #9
0
        public ActionResult Detalle(string sucursal, byte?numero)
        {
            var ctx  = new DataAccess.SirCoPOSDataContext();
            var item = ctx.Cajas.Where(i => i.Sucursal == sucursal && i.Numero == numero).SingleOrDefault();

            if (item == null)
            {
                return(HttpNotFound());
            }
            return(View(item));
        }
Example #10
0
        public Response <SaleResponse> Sale(SaleRequest item)
        {
            var uid = this.GetUserIdOrDefault() ?? 0;
            var res = this.Reply(() => {
                var multiple = false;
                if (item.Tipo == SaleType.Sale)
                {
                    var response = _process.Sale(item, uid);
                    if (response.Multiple)
                    {
                        item.Tipo = SaleType.Note;
                        multiple  = true;
                    }
                    else
                    {
                        return(response);
                    }
                }
                if (item.Tipo == SaleType.Note)
                {
                    var xml   = BusinessLogic.Helpers.Serializer.Serialize(item);
                    var ctx   = new DataAccess.SirCoPOSDataContext();
                    var eitem = new DataAccess.SirCoPOS.Nota
                    {
                        Date     = DateTime.Now,
                        CajeroId = uid,
                        Sucursal = item.Sucursal,
                        Data     = xml,
                        Multiple = multiple
                    };
                    ctx.Notas.Add(eitem);
                    ctx.SaveChanges();
                    return(new SaleResponse
                    {
                        Folio = $"Nota-{eitem.Id}"
                    });
                }
                return(null);
            });

            //if (res.Success)
            //{
            //    //var txt = System.Web.HttpUtility.UrlEncode($"Gracias por tu compra, folio: {res.Item.Folio}");
            //    //var url = $"http://dev.itnnovation.net:81/FCM/api/sendMessage?number={8112123587}&txt={txt}";
            //    var url = $"http://dev.itnnovation.net:81/FCM/api/sendMessage";

            //    var client = new WebClient();
            //    client.QueryString.Add("number", "8112123587");
            //    client.QueryString.Add("txt", $"Gracias por tu compra, folio: {res.Item.Folio}");
            //    var reqparm = new System.Collections.Specialized.NameValueCollection();
            //    //var response = client.UploadValues(url, "POST", reqparm);
            //}
            return(res);
        }
Example #11
0
        public Common.Entities.Cliente FindClienteByCode(Guid code)
        {
            var now  = BusinessLogic.Helpers.Common.GetNow();
            var ctx  = new DataAccess.SirCoPOSDataContext();
            var item = ctx.ClienteAccesos.Where(i => i.Codigo == code && i.FechaExpiracion > now).SingleOrDefault();

            if (item != null)
            {
                return(this.FindCliente(item.ClienteId, null));
            }
            return(null);
        }
Example #12
0
        public ActionResult FondoFormasPago(int id)
        {
            var ctx   = new DataAccess.SirCoPOSDataContext();
            var fondo = ctx.Fondos.Where(i => i.Id == id).SingleOrDefault();

            if (fondo == null)
            {
                return(HttpNotFound());
            }
            var model = fondo.FormasPago;

            return(View(model));
        }
Example #13
0
        public void Cancel(int idcajero, string sucursal, decimal importe, DateTime now, Guid gid, Common.Constants.FormaPago formaPago)
        {
            var ctx = new DataAccess.SirCoPOSDataContext();

            var fondo = ctx.Fondos.Where(i => i.ResponsableId == idcajero && !i.FechaCierre.HasValue).Single();

            if (formaPago == Common.Constants.FormaPago.EF)
            {
                fondo.Movimientos.Add(
                    new DataAccess.SirCoPOS.FondoMovimiento
                {
                    Importe    = importe,
                    UsuarioId  = null,
                    Entrada    = false,
                    Fecha      = now,
                    Referencia = gid,
                    Tipo       = "VentaCancela"
                });
                fondo.Disponible      -= importe;
                fondo.Caja.Disponible -= importe;
            }
            else
            {
                var fp = fondo.Caja.FormasPago.Where(i => i.FormaPago == (int)formaPago).SingleOrDefault();
                if (fp == null)
                {
                    fp = new DataAccess.SirCoPOS.CajaFormaPago
                    {
                        FormaPago = (int)formaPago,
                        Unidades  = 0,
                        Monto     = 0
                    };
                    fondo.Caja.FormasPago.Add(fp);
                }
                fp.Unidades--;
                fp.Monto -= importe;
                fondo.FormasPago.Add(new DataAccess.SirCoPOS.FondoFormaPago
                {
                    Entrada    = false,
                    Fecha      = now,
                    FormaPago  = (int)formaPago,
                    Monto      = importe,
                    Cantidad   = 1,
                    UsuarioId  = null,
                    Referencia = gid
                });
            }
            ctx.SaveChanges();
        }
Example #14
0
        protected override void Execute(CodeActivityContext context)
        {
            var ctx = new DataAccess.SirCoPOSDataContext();

            var gid = context.GetValue(this.GID);

            var item = ctx.SolicitudesCreditoVales.Where(i => i.Id == gid).Single();

            if (item.fechaAprobacion.HasValue)
            {
                throw new NotSupportedException();
            }

            item.fechaAprobacion = DateTime.Now;
            item.Approved        = false;
            ctx.SaveChanges();
        }
Example #15
0
        // GET: Admin/Fondos
        public ActionResult Index(string sucursal, byte?numero)
        {
            var ctx = new DataAccess.SirCoPOSDataContext();

            if (numero.HasValue)
            {
                var q = ctx.Fondos.Where(i => i.CajaSucursal == sucursal && i.CajaNumero == numero)
                        .OrderByDescending(i => i.FechaApertura);
                return(View(q));
            }
            else
            {
                var q = ctx.Fondos.Where(i => !i.FechaCierre.HasValue)
                        .OrderByDescending(i => i.FechaApertura);
                return(View(q));
            }
        }
Example #16
0
        public void ProcesarNotas()
        {
            var ctx = new DataAccess.SirCoPOSDataContext();
            var q   = ctx.Notas.Where(i => i.Venta == null)
                      .OrderBy(i => i.Date);

            foreach (var item in q)
            {
                var request = BusinessLogic.Helpers.Serializer.Deserialize <Common.Entities.SaleRequest>(item.Data);
                foreach (var pitem in request.Productos)
                {
                    _process.RequestProducto(pitem.Serie, item.CajeroId);
                }
                var res = _process.Sale(request, item.CajeroId);
                item.Venta = res.Folio;
                ctx.SaveChanges();
            }
        }
Example #17
0
        protected override void Execute(CodeActivityContext context)
        {
            var gid = context.GetValue(this.GID);

            var ctx  = new DataAccess.SirCoPOSDataContext();
            var item = ctx.SolicitudesCreditoVales.Where(i => i.Id == gid).Single();

            var accessToken = "xoxp-191473233024-192189952148-257230418000-7fcd073114b4ec5c16bce9ff43a8614b";

            accessToken = "xoxb-191473233024-810241754325-eTaqvz33dXjaOnEqnywvAy8a";
            var url = "https://slack.com/api/chat.postMessage";
            var cli = new WebClient();

            cli.Headers[HttpRequestHeader.ContentType]   = "application/json; charset=utf-8";
            cli.Headers[HttpRequestHeader.Authorization] = $"Bearer {accessToken}";

            dynamic data = new JObject();

            data.channel = "U5N5KU04C";
            data.text    = $"vale: {item.vale}\nSolicita: {item.monto} <http://localhost:39075/Solicitudes/Credito/{gid}|detalle>";
            data.as_user = true;

            var response = cli.UploadString(url, data.ToString());
        }
Example #18
0
        //======================================================================================================================
        public CorteResponse GetCorteCaja(string sucursal, int idcajero)
        {
            var ctxpv  = new DataAccess.SirCoPVDataContext();
            var ctxpos = new DataAccess.SirCoPOSDataContext();

            var fondo = ctxpos.Fondos.Where(i => i.ResponsableId == idcajero && i.CajaSucursal == sucursal &&
                                            !i.FechaCierre.HasValue).SingleOrDefault();

            if (fondo == null)
            {
                return(null);
            }

            //var fecha = fondo.FechaApertura;
            //var fechaDocs = fecha;
            //var arqueo = fondo.Arqueos.OrderByDescending(i => i.Fecha).FirstOrDefault();
            //if (arqueo != null)
            //    fecha = arqueo.Fecha;

            //var q = from h in ctxpv.Pagos
            //        where h.sucursal == sucursal
            //            && h.idcajero == idcajero
            //            && h.estatus == "AP" && h.fum > fechaDocs
            //        from d in h.Detalle
            //        //where d.idformapago != (int)Common.Constants.FormaPago.EF
            //        group d by d.idformapago into g
            //        select new {
            //            FormaPago = g.Key,
            //            Count = g.Count(),
            //            Total = g.Sum(i => i.importe)
            //        };

            var res = new CorteResponse();

            //res.FormaPagoTotales = q.Where(i => i.FormaPago != (int)Common.Constants.FormaPago.EF)
            //    .ToArray().Select(i => new Common.Entities.FormaPagoCorte
            //{
            //    FormaPago = (Common.Constants.FormaPago)i.FormaPago,
            //    Count = i.Count,
            //    Total = i.Total
            //}).ToArray();

            //var ef = q.Where(i => i.FormaPago == (int)Common.Constants.FormaPago.EF).SingleOrDefault();
            //res.Ventas = ef?.Total ?? 0;
            //res.Caja = fondo.Disponible;

            //res.Importe = fondo.Disponible;

            res.Importe          = fondo.Caja.Disponible;
            res.FormaPagoTotales = fondo.Caja.FormasPago.Where(i => i.Unidades > 0).Select(i =>
                                                                                           new FormaPagoCorte {
                FormaPago = (Common.Constants.FormaPago)i.FormaPago,
                Count     = i.Unidades,
                Total     = i.Monto
            });

            //var qq = ctxpos.Cortes.Where(i => i.CajeroId == idcajero && i.Fecha > fondo.FechaApertura);
            //var formasPago = res.FormaPagoTotales.ToList();
            //foreach (var doc in qq)
            //{
            //    if(!ctxpos.Entry(doc).Collection(i => i.FormasPago).IsLoaded)
            //        ctxpos.Entry(doc).Collection(i => i.FormasPago).Load();
            //    foreach (var fp in doc.FormasPago)
            //    {
            //        var item = formasPago.Where(i => (int)i.FormaPago == fp.FormaPago).Single();
            //        item.Count -= fp.Entregado;
            //        item.Total -= fp.Monto;
            //        if (item.Count == 0)
            //        {
            //            formasPago.Remove(item);
            //        }
            //    }
            //}
            //res.FormaPagoTotales = formasPago;

            var ctx = new DataAccess.SirCoDataContext();

            //ESTA ES LA LINEA DONDE APARECE EL ERROR AL GENERAR EL CIERRE
            var qs   = ctx.Series.Where(i => i.status == "AB" && i.sucursal == sucursal); // && i.idusuariocaja == idcajero);
            var list = new List <Common.Entities.SeriePrecio>();

            foreach (var det in qs)
            {
                var cor = ctx.GetCorrida(det);
                list.Add(new SeriePrecio {
                    Serie = det.serie, Importe = cor.precio
                });
            }
            res.Series = list;
            return(res);
        }
Example #19
0
 public NoteService()
 {
     _ctx = new DataAccess.SirCoPOSDataContext();
 }
Example #20
0
        public Empleado FindAuditorEntrega(int id, int idcajero)
        {
            var ctx    = new DataAccess.SirCoNominaDataContext();
            var ctxpos = new DataAccess.SirCoPOSDataContext();
            var cajero = ctx.Empleados.Where(i => i.idempleado == idcajero &&
                                             i.estatus == "A").Single();

            var auditor = ctx.Empleados.Where(i => i.idempleado == id &&
                                              i.estatus == "A").SingleOrDefault();

            if (auditor != null)
            {
                var asuc = auditor.clave.Substring(0, 2);
                var suc  = cajero.clave.Substring(0, 2);
                if (Common.Constants.Puestos.Gerentes.Contains(cajero.idpuesto) ||
                    cajero.idpuesto == (int)Common.Constants.Puesto.CJA)
                {
                    if (Common.Constants.Puestos.Gerentes.Contains(auditor.idpuesto))
                    {
                        var fondo = ctxpos.Fondos.Where(i => i.ResponsableId == auditor.idempleado && !i.FechaCierre.HasValue).SingleOrDefault();
                        if (fondo == null)
                        {
                            return(null);
                        }
                    }
                    else if (auditor.idpuesto == (int)Common.Constants.Puesto.MEN)
                    {
                        var fondo = ctxpos.Fondos.Where(i => i.ResponsableId == auditor.idempleado && !i.FechaCierre.HasValue).SingleOrDefault();
                        if (fondo == null)
                        {
                            return(null);
                        }
                    }
                    else if (!Common.Constants.Puestos.Admin.Contains(auditor.idpuesto))
                    {
                        return(null);
                    }
                }
                //else if (cajero.idpuesto == (int)Common.Constants.Puesto.CJA)
                //{

                //}
                else
                {
                    return(null);
                }


                return(new Empleado
                {
                    Id = auditor.idempleado,
                    ApellidoMaterno = auditor.apmaterno,
                    ApellidoPaterno = auditor.appaterno,
                    Nombre = auditor.nombre,
                    Usuario = auditor.usuariosistema,
                    Clave = auditor.clave,
                    Puesto = auditor.idpuesto
                });
            }
            return(null);
        }
Example #21
0
        protected override void Execute(CodeActivityContext context)
        {
            var now = DateTime.Now;
            var ctx = new DataAccess.SirCoPOSDataContext();

            var request = context.GetValue(this.Request);

            var item = new DataAccess.SirCoPOS.SolicitudCreditoVale
            {
                Id          = Guid.NewGuid(),
                date        = DateTime.Now,
                electronica = request.Electronica,
                idusuario   = request.idusuario,
                monto       = request.Monto,
                vale        = request.Vale
            };

            ctx.SolicitudesCreditoVales.Add(item);
            ctx.SaveChanges();

            //-----------------------------
            bool?processing = null;
            var  cctx       = new DataAccess.SirCoCreditoDataContext();
            var  ctxc       = new DataAccess.SirCoControlDataContext();

            var vale = ctx.ValesCliente.Where(i => i.vale == request.Vale).Single();

            var ditem = cctx.Distribuidores.Where(i => i.iddistrib == item.ValeCliente.iddistrib).Single();

            if (ditem.tipodistrib == "NORMAL" && request.Monto == vale.cantidad)
            {
                if (request.Electronica && ditem.solocalzado == 1)
                {
                    ditem.solocalzado = 0;
                    cctx.SaveChanges();
                    processing = false;
                }
                //if (request.Electronica && ditem.solocalzado == 1)
                //{
                //    var q = cctx.Pagos.Where(i => i.distrib == ditem.distrib && i.status == "AP");
                //    var primero = q.OrderBy(i => i.fum)
                //        .FirstOrDefault();
                //    var fchecar = primero.fecha.Value.AddMonths(6);
                //    if (now > fchecar)
                //    {
                //        var dif = ditem.limitecredito - ditem.disponible;
                //        if (dif > 0)
                //        {
                //            var por = dif / ditem.limitecredito;
                //            if (por <= .1m)
                //            {
                //                ditem.solocalzado = 0;
                //                cctx.SaveChanges();
                //                processing = false;
                //            }
                //        }
                //        else
                //        {
                //            ditem.solocalzado = 0;
                //            cctx.SaveChanges();
                //            processing = false;
                //        }
                //    }
                //}
            }
            //-----------------------------

            var response = new Common.Entities.SolicitudCreditoResponse
            {
                Id         = item.Id,
                Processing = processing
            };

            context.SetValue(this.Response, response);
        }
Example #22
0
        public ActionResult Credito(Guid id)
        {
            var ctx  = new DataAccess.SirCoPOSDataContext();
            var cctx = new DataAccess.SirCoCreditoDataContext();
            var ctxc = new DataAccess.SirCoControlDataContext();

            var item = ctx.SolicitudesCreditoVales.Where(i => i.Id == id).SingleOrDefault();

            if (item == null)
            {
                return(HttpNotFound());
            }

            var ditem = cctx.Distribuidores.Where(i => i.iddistrib == item.ValeCliente.iddistrib).Single();

            //var usado = ctx.PlanPagos.Where(i => i.vale == vale).Sum(i => i.saldo);
            //var disponible = Math.Min(item.limitevale.Value, item.disponible.Value) - usado;

            var model = new Models.Distribuidor
            {
                Id            = ditem.iddistrib,
                Cuenta        = ditem.distrib,
                Nombre        = ditem.nombre,
                ApMaterno     = ditem.appaterno,
                ApPaterno     = ditem.apmaterno,
                Status        = ditem.idestatus.Value,
                Electronica   = ditem.solocalzado == 0,
                Plazos        = ditem.idperiodicidad.Value,
                Promocion     = ditem.promocion == 1,
                Disponible    = ditem.disponible,
                Date          = ditem.fum,
                Tipo          = ditem.tipodistrib,
                LimiteVale    = ditem.limitevale,
                LimiteCredito = ditem.limitecredito
            };
            var q       = cctx.Pagos.Where(i => i.distrib == ditem.distrib && i.status == "AP");
            var primero = q.OrderBy(i => i.fum)
                          .FirstOrDefault();

            if (primero != null)
            {
                model.PrimerPago = primero.fum;
            }

            var ultimos = q.OrderByDescending(i => i.fum)
                          .Select(i => new Models.Pago {
                Fecha     = i.fecha.Value,
                Descuento = i.descuento.Value,
                Subtotal  = i.subtotal.Value,
                Importe   = i.importe.Value
            })
                          .Take(10);

            ViewBag.ultimos = ultimos;

            var qd = cctx.PlanPagos.Where(i =>
                                          i.distrib == ditem.distrib &&
                                          i.saldo > 0 &&
                                          i.status == "AP");
            var saldo = qd.Any() ?
                        qd.Sum(i => i.saldo) : 0;

            ViewBag.saldodis = saldo;

            var cliente = cctx.Clientes.Where(i => i.idcliente == item.ValeCliente.idcliente).Single();
            var suc     = ctxc.Sucursales.Where(i => i.idsucursal == cliente.idsucursal).Single();

            var qp = cctx.PlanPagos.Where(i =>
                                          i.cliente == cliente.cliente && i.succliente == suc.sucursal &&
                                          i.saldo > 0 &&
                                          i.status == "AP");
            var saldodis = qp.Where(i => i.distrib == ditem.distrib).Any() ?
                           qp.Where(i => i.distrib == ditem.distrib).Sum(i => i.saldo) : 0;

            ViewBag.saldocli = saldodis;

            var saldoot = qp.Where(i => i.distrib != ditem.distrib).Any() ?
                          qp.Where(i => i.distrib != ditem.distrib).Sum(i => i.saldo) : 0;

            ViewBag.saldoOtros = saldoot;

            var credito = new Models.SolicitudCliente
            {
                Vale        = item.vale,
                ApMaterno   = cliente.apmaterno,
                ApPaterno   = cliente.appaterno,
                Electronica = item.electronica,
                Id          = cliente.idcliente,
                Cliente     = cliente.cliente,
                Nombre      = cliente.nombre,
                MontoVale   = item.ValeCliente.cantidad,
                Monto       = item.monto,
                Faltante    = item.monto - item.ValeCliente.cantidad
            };

            ViewBag.credito = credito;

            var uid = this.User.GetUID();

            if (item.idusuarioAprobacion.HasValue)
            {
                ViewBag.mia = uid == item.idusuarioAprobacion;
            }
            ViewBag.completado = item.fechaAprobacion.HasValue;

            ViewBag.id = id;
            return(View(model));
        }