예제 #1
0
        public void ChangeTest()
        {
            var request = new Common.Entities.ChangeRequest
            {
                Sucursal = "01",
                Folio    = "422168",
                Items    = new Common.Entities.ChangeItem[]
                {
                    new Common.Entities.ChangeItem {
                        OldItem = "0000003518445", NewItem = "0000003518435"
                    },
                    new Common.Entities.ChangeItem {
                        OldItem = "0000003583185", NewItem = "0000003579528"
                    },
                    new Common.Entities.ChangeItem {
                        OldItem = "0000003584922", NewItem = "0000003584920"
                    }
                }
            };

            var ctx = new DataAccess.SirCoDataContext();

            ctx.UpdateSerieStatus("0000003518435", Status.CA, Status.AC, 0);
            ctx.UpdateSerieStatus("0000003579528", Status.CA, Status.AC, 0);
            ctx.UpdateSerieStatus("0000003584920", Status.CA, Status.AC, 0);

            var res = _context.Change(request, 0, request.Sucursal);

            Assert.AreEqual("027852", res.Devolucion);
            Assert.AreEqual("434054", res.Venta);
        }
예제 #2
0
        public Common.Entities.MedidasCorridas GetPrecios(int id)
        {
            var ctx      = new DataAccess.SirCoDataContext();
            var corridas = ctx.Corridas.Where(i => i.ArticuloId == id)
                           .Select(i => new Common.Entities.TallaPrecio
            {
                Corrida      = i.corrida,
                MedidaInicio = i.medini,
                MedidaFin    = i.medfin,
                Precio       = i.precio
            }).Distinct();


            var ctxc = new DataAccess.SirCoControlDataContext();
            var sucs = ctxc.Sucursales.Where(i => i.ordenweb.HasValue)
                       .Select(i => i.sucursal).ToArray();

            var status  = new string[] { Common.Constants.Status.ZC.ToString() };
            var medidas = ctx.Series.Where(i => i.ArticuloId == id &&
                                           !status.Contains(i.status))
                          .OrderBy(i => i.medida)
                          .Select(i => i.medida)
                          .Distinct();

            var res = new Common.Entities.MedidasCorridas
            {
                Corridas = corridas,
                Medidas  = medidas
            };

            return(res);
        }
예제 #3
0
        public static DataAccess.SirCo.Corrida GetCorrida(this DataAccess.SirCoDataContext ctx, DataAccess.SirCo.Serie item)
        {
            var corrida = ctx.Corridas.Where(i => i.marca == item.marca &&
                                             i.estilon == item.estilon &&
                                             i.proveedor == item.proveedors &&
                                             String.Compare(item.medida, i.medini) >= 0 &&
                                             String.Compare(item.medida, i.medfin) <= 0
                                             ).SingleOrDefault();

            return(corrida);
        }
예제 #4
0
        public ReciboDevolucionReport GetReciboDevolucion(string sucursal, string folio)
        {
            var ctxpv = new DataAccess.SirCoPVDataContext();
            var ctxc  = new DataAccess.SirCoControlDataContext();
            var ctx   = new DataAccess.SirCoDataContext();

            var devolucion = ctxpv.Devoluciones.Where(i => i.sucursal == sucursal && i.devolvta == folio).Single();

            var vendedor = this.GetEmpleado(devolucion.idvendedor);
            var cajero   = this.GetEmpleado(devolucion.idcajero);

            var suc           = ctxc.Sucursales.Where(i => i.sucursal == devolucion.sucursal).Single();
            var ventaSucursal = devolucion.referencia.Substring(0, 2);
            var ventaFolio    = devolucion.referencia.Substring(2);

            var item = new ReciboDevolucionReport
            {
                Recibo = new ReciboDevolucion
                {
                    SucursalId     = devolucion.sucursal,
                    SucursalNombre = suc.descrip,
                    Fecha          = devolucion.fum.Value,
                    VendedorId     = $"{devolucion.idvendedor}",
                    VendedorNombre = vendedor,
                    CajeroId       = $"{devolucion.idcajero}",
                    CajeroNombre   = cajero,
                    Folio          = devolucion.devolvta,
                    SucursalVenta  = ventaSucursal,
                    FolioVenta     = ventaFolio
                }
            };
            var plist = new List <Producto>();

            foreach (var det in devolucion.Detalles)
            {
                var serie = ctx.Series.Where(i => i.serie == det.serie).Single();

                plist.Add(
                    new Producto {
                    Serie       = det.serie,
                    Precio      = det.precio.Value,
                    Importe     = det.precdesc.Value,
                    Marca       = det.marca,
                    Descripcion = serie.Articulo.Descripcion
                });
            }
            item.Productos = plist;
            return(item);
        }
예제 #5
0
        public ActionResult Producto(int?id, string marca, string modelo, int w = 100, int h = 100)
        {
            var ctx  = new DataAccess.SirCoDataContext();
            var ctxi = new DataAccess.SirCoImgDataContext();

            if (id.HasValue)
            {
                var item = ctx.Articulos.Where(i => i.Id == id).SingleOrDefault();
                if (item == null)
                {
                    return(HttpNotFound());
                }
                marca  = item.Marca;
                modelo = item.Modelo;
            }
            else
            {
                if (modelo.Length < 7)
                {
                    modelo = modelo.PadLeft(7);
                }
            }
            //=============================================================================================================================================
            var img = ctxi.Imagenes.Where(i => i.Marca == marca && i.Estilon == modelo).SingleOrDefault();

            if (img == null || img.Foto == null)
            {
                return(HttpNotFound());
            }

            var ms = new System.IO.MemoryStream();

            ImageResizer.ImageBuilder.Current.Build(img.Foto, ms,
                                                    new ImageResizer.ResizeSettings()
            {
                Mode   = ImageResizer.FitMode.None,
                Width  = w,
                Height = h,
                Format = "png"
            });
            ms.Position = 0;

            return(File(ms, "image/png", $"{marca}_{modelo.Replace(' ', '_')}.png"));
        }
예제 #6
0
        public Common.Entities.DevolucionView FindDevolucionView(string sucursal, string folio, int idcajero)
        {
            var ctx  = new DataAccess.SirCoPVDataContext();
            var ctxs = new DataAccess.SirCoDataContext();

            SirCoPOS.DataAccess.SirCoPV.Devolucion item;
            if (folio != null)
            {
                item = ctx.Devoluciones.Where(i => i.sucursal == sucursal && i.devolvta == folio).SingleOrDefault();
            }
            else
            {
                item = ctx.Devoluciones.Where(i => i.sucursal == sucursal && i.idcajero == idcajero)
                       .OrderByDescending(i => i.fum).First();
            }
            if (item == null)
            {
                return(null);
            }
            var res = new Common.Entities.DevolucionView
            {
                Sucursal  = item.sucursal,
                Folio     = item.devolvta,
                Productos = item.Detalles.Select(i =>
                                                 new ProductoView
                {
                    Serie  = i.serie,
                    Precio = i.precio,
                    Marca  = i.marca,
                    Modelo = i.estilon,
                    Medida = i.medida
                }).ToArray()
            };

            foreach (var det in res.Productos)
            {
                var ser = ctxs.Series.Where(i => i.serie == det.Serie).Single();
                det.ArticuloId = ser.ArticuloId;
            }
            return(res);
        }
예제 #7
0
        public IEnumerable <Common.Entities.SucursalExistencia> GetExistencias(int id, string medida)
        {
            var ctx = new DataAccess.SirCoDataContext();

            var status = new string[] {
                Common.Constants.Status.AC.ToString(),
                Common.Constants.Status.IF.ToString()
            };

            var ctxc = new DataAccess.SirCoControlDataContext();
            var sucs = ctxc.Sucursales.Where(i => i.ordenweb.HasValue)
                       .Select(i => i.sucursal).ToArray();

            var res = ctx.Series.Where(i => i.ArticuloId == id && i.medida == medida &&
                                       status.Contains(i.status) && sucs.Contains(i.sucursal))
                      .GroupBy(i => i.sucursal)
                      .Select(i => new Common.Entities.SucursalExistencia
            {
                Sucursal = i.Key,
                Count    = i.Count()
            });

            return(res);
        }
예제 #8
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);
        }
예제 #9
0
        public void CancelFormaPago_MD()
        {
            var sucursal = "01";

            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-09-01")); };

                var data = new List <DataAccess.SirCoControl.Sucursal> {
                    new DataAccess.SirCoControl.Sucursal {
                        idsucursal = 1, sucursal = "01", cajas = 434045
                    }
                }.AsQueryable();

                var mockSet = new Mock <DbSet <DataAccess.SirCoControl.Sucursal> >();
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.Provider).Returns(data.Provider);
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.Expression).Returns(data.Expression);
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.ElementType).Returns(data.ElementType);
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

                DataAccess.Fakes.ShimSirCoControlDataContext.AllInstances.SucursalesGet = (sctx) => {
                    return(mockSet.Object);
                };

                var pserie = "0000003668367";
                var prod   = _sale.ScanProducto(pserie, sucursal);
                Assert.IsNotNull(prod);
                //var vale = _context.CheckVale(nvale);

                var ctx = new DataAccess.SirCoDataContext();
                ctx.UpdateSerieStatus("0000003668367", Status.CA, Status.AC, 0);

                var ncliente = new Common.Entities.Cliente
                {
                    Id = 810374
                };

                //var cid = _process.AddCliente(ncliente);
                //Assert.IsNotNull(cid);

                var model = new Common.Entities.SaleRequest()
                {
                    Sucursal   = sucursal,
                    VendedorId = 0,
                    Cliente    = ncliente
                };
                model.Productos = new Common.Entities.SerieFormasPago[] {
                    new Common.Entities.SerieFormasPago {
                        Serie = pserie, FormasPago = new Common.Constants.FormaPago[] { Common.Constants.FormaPago.VA }
                    }
                };
                model.Pagos = new List <Common.Entities.Pago> {
                    new Common.Entities.Pago {
                        FormaPago = FormaPago.MD,
                        Importe   = 149
                    }
                };

                var folio = _context.Sale(model, 0);

                Assert.AreEqual("434046", folio.Folio);

                var ctxa   = new DataAccess.SirCoAPPDataContext();
                var dinero = ctxa.Dineros.Where(i => i.idsucursal == 1 && i.cliente == "144666").Single();
                var det    = dinero.Detalles.OrderByDescending(i => i.vigencia).ToArray();

                Assert.AreEqual(151, dinero.saldo);
                Assert.AreEqual(0, det[0].saldo);
                Assert.AreEqual(51, det[1].saldo);
                Assert.AreEqual(100, det[2].saldo);

                var request = new Common.Entities.CancelSaleRequest
                {
                    Sucursal = sucursal,
                    Folio    = "434046"
                };
                _context.CancelSale(request, 0);

                var ctxa2 = new DataAccess.SirCoAPPDataContext();
                dinero = ctxa2.Dineros.Where(i => i.idsucursal == 1 && i.cliente == "144666").Single();
                det    = dinero.Detalles.OrderByDescending(i => i.vigencia).ToArray();

                Assert.AreEqual(300, dinero.saldo);
                Assert.AreEqual(100, det[0].saldo);
                Assert.AreEqual(100, det[1].saldo);
                Assert.AreEqual(100, det[2].saldo);
            }
        }
예제 #10
0
        public Producto FindProducto(string marca, string modelo, string sucursal)
        {
            var ctx  = new DataAccess.SirCoDataContext();
            var ctxi = new DataAccess.SirCoImgDataContext();
            //var status = new string[] { Common.Constants.Status.ZC.ToString() };
            var item = ctx.Corridas.Include(i => i.Articulo)
                       .Where(i => i.marca == marca && i.estilon == modelo)
                       .OrderByDescending(i => i.ult_vta)
                       .FirstOrDefault();

            //var q = ctx.Series.Where(i => i.serie == serie
            //    && !status.Contains(i.status));
            //var item = q.Where(i => i.sucursal == sucursal).SingleOrDefault();
            //if (item == null)
            //{
            //    var ctxc = new DataAccess.SirCoControlDataContext();
            //    var sucs = ctxc.Sucursales.Where(i => i.ordenweb.HasValue)
            //        .Select(i => i.sucursal).ToArray();
            //    item = q.Where(i => sucs.Contains(i.sucursal)).SingleOrDefault();
            //}
            if (item != null)
            {
                if (item.ArticuloId > 0)
                {
                    var isElectronica = item.Articulo.iddivisiones == (int)Divisiones.Electronica;
                    var isParUnico    = _sale.IsParUnico(item.Articulo.idagrupacion);
                    var corrida       = item;
                    //if (corrida == null)
                    //    return null;
                    var qimg = ctxi.Imagenes.Where(i => i.Marca == item.marca && i.Estilon == item.estilon);

                    byte?maxPlazos = null;
                    if (isElectronica)
                    {
                        var com = new BusinessLogic.Data();
                        maxPlazos = com.GetParametro <byte?>($"{corrida.marca}{corrida.estilon.Replace(' ', '_')}", sucursal);
                        if (!maxPlazos.HasValue)
                        {
                            maxPlazos = com.GetParametro <byte?>(Common.Constants.Parametros.ELECTRONICA);
                        }
                    }

                    return(new Producto
                    {
                        Id = item.ArticuloId,
                        Corrida = corrida.corrida,
                        Marca = item.marca,
                        Modelo = item.estilon,
                        //Precio = corrida.precio,
                        //Serie = item.serie,
                        //Talla = item.medida,
                        Total = corrida.precio,
                        HasImage = qimg.Any(),
                        Electronica = isElectronica,
                        ParUnico = isParUnico,
                        MaxPlazos = maxPlazos,
                        //Sucursal = item.sucursal
                    });
                }
                else
                {
                    return(new Producto
                    {
                        Id = item.ArticuloId,
                        //Corrida = corrida.corrida,
                        Marca = item.marca,
                        Modelo = item.estilon
                                 //Precio = corrida.precio,

                                 //,Serie = item.serie
                                 //,Talla = item.medida,

                                 //Total = corrida.precio,
                                 //HasImage = qimg.Any(),
                                 //Electronica = isElectronica,
                                 //ParUnico = isParUnico,
                                 //MaxPlazos = maxPlazos
                    });
                }
            }
            return(null);
        }
예제 #11
0
        public void ReturnDifCorridaMismoPrecio2()
        {
            /*
             * 1	NULL	0000003678429	AC	539.00	CTA	    682	16-	A	15	17	324
             * 2	NULL	0000003522471	AC	539.00	CTA	    682	15	A	15	17	324
             * 3	NULL	0000003776476	AC	589.00	CTA	    682	19-	B	17-	21	324
             * 4	NULL	0000003776472	AC	589.00	CTA	    682	18-	B	17-	21	324
             * 5	NULL	0000003678238	AC	649.00	CTA	    682	24	C	21-	26	324
             * 6	NULL	0000003676610	AC	649.00	CTA	    682	25	C	21-	26	324
             */

            var ctx  = new DataAccess.SirCoPVDataContext();
            var sctx = new DataAccess.SirCoDataContext();

            var cor = sctx.Corridas.Where(i => i.marca == "KLI" && i.estilon == "      1" && i.corrida == "D").Single();

            cor.precio = 539;
            sctx.SaveChanges();

            var model = new Common.Entities.SaleRequest()
            {
                Sucursal   = "01",
                VendedorId = 132
            };

            model.Productos = new Common.Entities.SerieFormasPago[] {
                new Common.Entities.SerieFormasPago {
                    Serie = "0000003391871", FormasPago = new Common.Constants.FormaPago[] { Common.Constants.FormaPago.EF }
                }
            };
            model.Pagos = new Common.Entities.Pago[] {
                new Common.Entities.Pago {
                    FormaPago = Common.Constants.FormaPago.EF, Importe = 539
                }
            };

            _context.RequestProducto("0000003391871", 0);

            Common.Entities.SaleResponse folio = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-06")); };
                folio = _context.Sale(model, 0);
            }

            Assert.AreEqual("434054", folio.Folio);

            var crequest = new Common.Entities.ChangeRequest
            {
                Sucursal = "01",
                Folio    = "434054",
                Items    = new Common.Entities.ChangeItem[]
                {
                    new Common.Entities.ChangeItem {
                        OldItem = "0000003391871", NewItem = "0000003678429"
                    }
                }
            };

            _context.RequestProducto("0000003678429", 0);
            Common.Entities.ChangeResponse cres = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-07")); };
                cres = _context.Change(crequest, 0, "08");
            }

            Assert.AreEqual("295595", cres.Venta);
            Assert.AreEqual("023287", cres.Devolucion);

            var dev = ctx.Devoluciones.Where(i => i.sucursal == "08" && i.devolvta == "023287").Single();

            Assert.AreEqual(0, dev.disponible);
        }
예제 #12
0
        public void CambioPromoDifCorridaMismoPrecio()
        {
            /*
             * 1	NULL	0000003678429	AC	539.00	CTA	    682	16-	A	15	17	324
             * 2	NULL	0000003522471	AC	539.00	CTA	    682	15	A	15	17	324
             * 3	NULL	0000003776476	AC	589.00	CTA	    682	19-	B	17-	21	324
             * 4	NULL	0000003776472	AC	589.00	CTA	    682	18-	B	17-	21	324
             * 5	NULL	0000003678238	AC	649.00	CTA	    682	24	C	21-	26	324
             * 6	NULL	0000003676610	AC	649.00	CTA	    682	25	C	21-	26	324
             */

            var compro     = "0000003776476";
            var pago       = 412.3m;//589m;
            var disponible = 0;
            var cambio     = "0000003678429";

            var sctx = new DataAccess.SirCoDataContext();
            var cor  = sctx.Corridas.Where(i => i.marca == "CTA" && i.estilon == "    682" && i.corrida == "A").Single();

            cor.precio = 589m;
            sctx.SaveChanges();

            var model = new Common.Entities.SaleRequest()
            {
                Sucursal           = "01",
                VendedorId         = 132,
                PromocionesCupones = new Common.Entities.PromocionCuponItem[]
                {
                    new Common.Entities.PromocionCuponItem {
                        PromocionId = 200
                    }
                }
            };

            model.Productos = new Common.Entities.SerieFormasPago[] {
                new Common.Entities.SerieFormasPago {
                    Serie = compro, FormasPago = new Common.Constants.FormaPago[] { Common.Constants.FormaPago.EF }
                }
            };
            model.Pagos = new Common.Entities.Pago[] {
                new Common.Entities.Pago {
                    FormaPago = Common.Constants.FormaPago.EF, Importe = pago
                }
            };

            _context.RequestProducto(compro, 0);

            Common.Entities.SaleResponse folio = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.UtcNowGet = () => DateTime.Parse("2019-10-20").ToUniversalTime();
                folio = _context.Sale(model, 0);
            }

            Assert.AreEqual("434054", folio.Folio);

            var crequest = new Common.Entities.ChangeRequest
            {
                Sucursal = "01",
                Folio    = "434054",
                Items    = new Common.Entities.ChangeItem[]
                {
                    new Common.Entities.ChangeItem {
                        OldItem = compro, NewItem = cambio
                    }
                }
            };

            _context.RequestProducto(cambio, 0);
            Common.Entities.ChangeResponse cres = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.UtcNowGet = () => DateTime.Parse("2019-10-21").ToUniversalTime();
                cres = _context.Change(crequest, 0, "08");
            }

            Assert.AreEqual("295595", cres.Venta);
            Assert.AreEqual("023287", cres.Devolucion);

            var ctx = new DataAccess.SirCoPVDataContext();
            var dev = ctx.Devoluciones.Where(i => i.sucursal == "08" && i.devolvta == "023287").Single();

            Assert.AreEqual(disponible, dev.disponible);
        }
예제 #13
0
        public void CambioMismaCorridaCambioPrecioMayorPromocion()
        {
            /*
             * 1	NULL	0000003678429	AC	539.00	CTA	    682	16-	A	15	17	324
             * 2	NULL	0000003522471	AC	539.00	CTA	    682	15	A	15	17	324
             * 3	NULL	0000003776476	AC	589.00	CTA	    682	19-	B	17-	21	324
             * 4	NULL	0000003776472	AC	589.00	CTA	    682	18-	B	17-	21	324
             * 5	NULL	0000003678238	AC	649.00	CTA	    682	24	C	21-	26	324
             * 6	NULL	0000003676610	AC	649.00	CTA	    682	25	C	21-	26	324
             */

            var model = new Common.Entities.SaleRequest()
            {
                Sucursal   = "01",
                VendedorId = 132
            };

            model.Productos = new Common.Entities.SerieFormasPago[] {
                new Common.Entities.SerieFormasPago {
                    Serie = "0000003678429", FormasPago = new Common.Constants.FormaPago[] { Common.Constants.FormaPago.EF }
                }
            };
            model.Pagos = new Common.Entities.Pago[] {
                new Common.Entities.Pago {
                    FormaPago = Common.Constants.FormaPago.EF, Importe = 539
                }
            };

            _context.RequestProducto("0000003678429", 0);

            Common.Entities.SaleResponse folio = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-06")); };
                folio = _context.Sale(model, 0);
            }

            Assert.AreEqual("434054", folio.Folio);

            var ctx = new DataAccess.SirCoPVDataContext();
            var det = ctx.VentasDetalle.Where(i => i.sucursal == model.Sucursal &&
                                              i.venta == "434054" && i.serie == "0000003678429").Single();

            det.idpromocion = 18;     //prueba
            det.precdesc    = 269.5m; //539 / 2 = 50%
            ctx.SaveChanges();

            var sctx = new DataAccess.SirCoDataContext();
            var cor  = sctx.Corridas.Where(i => i.marca == "CTA" && i.estilon.Trim() == "682" && i.corrida == "A").Single();

            cor.precio = 600;
            sctx.SaveChanges();

            var crequest = new Common.Entities.ChangeRequest
            {
                Sucursal = "01",
                Folio    = "434054",
                Items    = new Common.Entities.ChangeItem[]
                {
                    new Common.Entities.ChangeItem {
                        OldItem = "0000003678429", NewItem = "0000003522471"
                    }
                }
            };

            _context.RequestProducto("0000003522471", 0);
            Common.Entities.ChangeResponse cres = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-07")); };
                cres = _context.Change(crequest, 0, "08");
            }

            Assert.AreEqual("295595", cres.Venta);
            Assert.AreEqual("023287", cres.Devolucion);

            var dev = ctx.Devoluciones.Where(i => i.sucursal == "08" && i.devolvta == "023287").Single();

            Assert.AreEqual(0m, dev.disponible);

            var vdet = ctx.VentasDetalle.Where(i => i.sucursal == "08" && i.venta == "295595" && i.serie == "0000003522471").Single();

            Assert.AreEqual(539m, vdet.precio);
            Assert.AreEqual(269.5m, vdet.precdesc);
        }
예제 #14
0
        public void CancelFormaPago_CD()
        {
            var sucursal = "01";

            //var sucursalId = 1;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-09-01")); };

                var data = new List <DataAccess.SirCoControl.Sucursal> {
                    new DataAccess.SirCoControl.Sucursal {
                        idsucursal = 1, sucursal = "01", cajas = 434045
                    }
                }.AsQueryable();

                var mockSet = new Mock <DbSet <DataAccess.SirCoControl.Sucursal> >();
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.Provider).Returns(data.Provider);
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.Expression).Returns(data.Expression);
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.ElementType).Returns(data.ElementType);
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

                DataAccess.Fakes.ShimSirCoControlDataContext.AllInstances.SucursalesGet = (sctx) => {
                    return(mockSet.Object);
                };

                var pserie  = "0000003668367";
                var distrib = "005961";
                var prod    = _sale.ScanProducto(pserie, sucursal);
                Assert.IsNotNull(prod);

                var ctx = new DataAccess.SirCoDataContext();
                ctx.UpdateSerieStatus("0000003668367", Status.CA, Status.AC, 0);

                var dis = _sale.FindTarjetahabiente(distrib);

                var ncliente = new Common.Entities.Cliente
                {
                    DistribuidorId = 5730
                };

                //var cid = _process.AddCliente(ncliente);
                //Assert.IsNotNull(cid);

                var model = new Common.Entities.SaleRequest()
                {
                    Sucursal   = sucursal,
                    VendedorId = 0,
                    Cliente    = ncliente
                };
                model.Productos = new Common.Entities.SerieFormasPago[] {
                    new Common.Entities.SerieFormasPago {
                        Serie = pserie, FormasPago = new Common.Constants.FormaPago[] { Common.Constants.FormaPago.VA }
                    }
                };
                model.Pagos = new List <Common.Entities.Pago> {
                    new Common.Entities.Pago {
                        FormaPago    = FormaPago.CD,
                        Importe      = prod.Producto.Precio.Value,
                        Distribuidor = distrib,
                        Plazos       = 3
                    }
                };

                var ctxc = new SirCoPOS.DataAccess.SirCoCreditoDataContext();
                var ds   = ctxc.Distribuidores.Where(i => i.distrib == distrib).Single();
                Assert.AreEqual(11564.00M, ds.disponible);
                Assert.AreEqual(3436.00M, ds.saldo);

                var folio = _context.Sale(model, 0);

                Assert.AreEqual("434046", folio.Folio);
                ctxc.Entry(ds).Reload();
                Assert.AreEqual(11564.00M - prod.Producto.Precio.Value, ds.disponible);
                Assert.AreEqual(3436.00M + prod.Producto.Precio.Value, ds.saldo);

                var crequest = new Common.Entities.CancelSaleRequest
                {
                    Sucursal = sucursal,
                    Folio    = "434046"
                };
                _context.CancelSale(crequest, 0);

                ctxc.Entry(ds).Reload();
                Assert.AreEqual(11564.00M, ds.disponible);
                Assert.AreEqual(3436.00M, ds.saldo);
            }
        }
예제 #15
0
        public void CancelFormaPago_DV_CancelDV()
        {
            /*
             * 1	NULL	0000003678429	AC	539.00	CTA	    682	16-	A	15	17	324
             * 2	NULL	0000003522471	AC	539.00	CTA	    682	15	A	15	17	324
             * 3	NULL	0000003776476	AC	589.00	CTA	    682	19-	B	17-	21	324
             * 4	NULL	0000003776472	AC	589.00	CTA	    682	18-	B	17-	21	324
             * 5	NULL	0000003678238	AC	649.00	CTA	    682	24	C	21-	26	324
             * 6	NULL	0000003676610	AC	649.00	CTA	    682	25	C	21-	26	324
             */

            var model = new Common.Entities.SaleRequest()
            {
                Sucursal   = "01",
                VendedorId = 132
            };

            model.Productos = new Common.Entities.SerieFormasPago[] {
                new Common.Entities.SerieFormasPago {
                    Serie = "0000003678429", FormasPago = new Common.Constants.FormaPago[] { Common.Constants.FormaPago.EF }
                }
            };
            model.Pagos = new Common.Entities.Pago[] {
                new Common.Entities.Pago {
                    FormaPago = Common.Constants.FormaPago.EF, Importe = 539
                }
            };

            _context.RequestProducto("0000003678429", 0);

            var sctx   = new DataAccess.SirCoDataContext();
            var oserie = sctx.Series.Where(i => i.serie == "0000003678429").Single();

            Assert.AreEqual("CA", oserie.status);

            Common.Entities.SaleResponse folio = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-06")); };
                folio = _context.Sale(model, 0);
            }

            Assert.AreEqual("434054", folio.Folio);

            sctx.Entry(oserie).Reload();
            Assert.AreEqual("BA", oserie.status);

            var crequest = new Common.Entities.ChangeRequest
            {
                Sucursal = "01",
                Folio    = "434054",
                Items    = new Common.Entities.ChangeItem[]
                {
                    new Common.Entities.ChangeItem {
                        OldItem = "0000003678429", NewItem = "0000003522471"
                    }
                }
            };

            _context.RequestProducto("0000003522471", 0);
            Common.Entities.ChangeResponse cres = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-07")); };
                cres = _context.Change(crequest, 0, "08");
            }

            Assert.AreEqual("295595", cres.Venta);
            Assert.AreEqual("023287", cres.Devolucion);

            sctx.Entry(oserie).Reload();
            Assert.AreEqual("AC", oserie.status);

            var ctx = new DataAccess.SirCoPVDataContext();
            var dev = ctx.Devoluciones.Where(i => i.sucursal == "08" && i.devolvta == "023287").Single();

            Assert.AreEqual(0, dev.disponible);

            var cancel = new Common.Entities.CancelSaleRequest
            {
                Sucursal = "08",
                Folio    = "295595"
            };

            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-07")); };
                _context.CancelSale(cancel, 0);
            }

            ctx.Entry(dev).Reload();
            Assert.AreEqual(539, dev.disponible);

            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-07")); };
                _context.CancelReturn(dev.sucursal, dev.devolvta, 0);
            }
            ctx.Entry(dev).Reload();
            Assert.AreEqual("ZC", dev.estatus);

            sctx.Entry(oserie).Reload();
            Assert.AreEqual("BA", oserie.status);
        }
예제 #16
0
        public void ReturnDifCorridaDifPrecioDevolucion()
        {
            /*
             * ('0000003391871', 'venta')
             * ,('0000003391872', 'misma corrida')
             * ,('0000003485731', 'dif corrida, mismo precio')
             * ,('0000003556980', 'dif corrida, precio mayor')
             */
            var sctx = new DataAccess.SirCoDataContext();

            sctx.Database.ExecuteSqlCommand("update serie set status = 'AC' where serie = @serie",
                                            new System.Data.SqlClient.SqlParameter("@serie", "0000003556980"));

            var model = new Common.Entities.SaleRequest()
            {
                Sucursal   = "01",
                VendedorId = 132
            };

            model.Productos = new Common.Entities.SerieFormasPago[] {
                new Common.Entities.SerieFormasPago {
                    Serie = "0000003556980", FormasPago = new Common.Constants.FormaPago[] { Common.Constants.FormaPago.EF }
                }
            };
            model.Pagos = new Common.Entities.Pago[] {
                new Common.Entities.Pago {
                    FormaPago = Common.Constants.FormaPago.EF, Importe = 359
                }
            };

            _context.RequestProducto("0000003556980", 0);

            Common.Entities.SaleResponse folio = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-06")); };
                folio = _context.Sale(model, 0);
            }

            Assert.AreEqual("434054", folio.Folio);

            var crequest = new Common.Entities.ChangeRequest
            {
                Sucursal = "01",
                Folio    = "434054",
                Items    = new Common.Entities.ChangeItem[]
                {
                    new Common.Entities.ChangeItem {
                        OldItem = "0000003556980", NewItem = "0000003391871"
                    }
                }
            };

            _context.RequestProducto("0000003391871", 0);
            Common.Entities.ChangeResponse cres = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-07")); };
                cres = _context.Change(crequest, 0, "08");
            }

            Assert.AreEqual("295595", cres.Venta);
            Assert.AreEqual("023287", cres.Devolucion);

            var ctx = new DataAccess.SirCoPVDataContext();
            var dev = ctx.Devoluciones.Where(i => i.sucursal == "08" && i.devolvta == "023287").Single();

            Assert.AreEqual(30, dev.disponible);
        }
예제 #17
0
        public void ReturnDifCorridaMismoPrecio()
        {
            /*
             * ('0000003391871', 'venta')
             * ,('0000003391872', 'misma corrida')
             * ,('0000003485731', 'dif corrida, mismo precio')
             * ,('0000003556980', 'dif corrida, precio mayor')
             */

            var ctx  = new DataAccess.SirCoPVDataContext();
            var sctx = new DataAccess.SirCoDataContext();

            var cor = sctx.Corridas.Where(i => i.marca == "KLI" && i.estilon == "      1" && i.corrida == "D").Single();

            cor.precio = 339;
            sctx.SaveChanges();

            var model = new Common.Entities.SaleRequest()
            {
                Sucursal   = "01",
                VendedorId = 132
            };

            model.Productos = new Common.Entities.SerieFormasPago[] {
                new Common.Entities.SerieFormasPago {
                    Serie = "0000003391871", FormasPago = new Common.Constants.FormaPago[] { Common.Constants.FormaPago.EF }
                }
            };
            model.Pagos = new Common.Entities.Pago[] {
                new Common.Entities.Pago {
                    FormaPago = Common.Constants.FormaPago.EF, Importe = 339
                }
            };

            _context.RequestProducto("0000003391871", 0);

            Common.Entities.SaleResponse folio = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-06")); };
                folio = _context.Sale(model, 0);
            }

            Assert.AreEqual("434054", folio.Folio);

            var crequest = new Common.Entities.ChangeRequest
            {
                Sucursal = "01",
                Folio    = "434054",
                Items    = new Common.Entities.ChangeItem[]
                {
                    new Common.Entities.ChangeItem {
                        OldItem = "0000003391871", NewItem = "0000003485731"
                    }
                }
            };

            _context.RequestProducto("0000003485731", 0);
            Common.Entities.ChangeResponse cres = null;
            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-03-07")); };
                cres = _context.Change(crequest, 0, "08");
            }

            Assert.AreEqual("295595", cres.Venta);
            Assert.AreEqual("023287", cres.Devolucion);

            var dev = ctx.Devoluciones.Where(i => i.sucursal == "08" && i.devolvta == "023287").Single();

            Assert.AreEqual(0, dev.disponible);
        }
예제 #18
0
        public ReciboCompraReport GetReciboCompra(string sucursal, string folio)
        {
            var ctxpv = new DataAccess.SirCoPVDataContext();
            var ctxc  = new DataAccess.SirCoControlDataContext();
            var ctxn  = new DataAccess.SirCoNominaDataContext();
            var ctx   = new DataAccess.SirCoDataContext();
            var ctxa  = new DataAccess.SirCoAPPDataContext();

            var venta  = ctxpv.Ventas.Where(i => i.sucursal == sucursal && i.venta == folio).Single();
            var dinero = ctxa.DinerosDetalle.Where(i => i.sucnota == sucursal && i.nota == folio).SingleOrDefault();

            var vendedor = this.GetEmpleado(venta.idvendedor);
            var cajero   = this.GetEmpleado(venta.idcajero);

            var suc = ctxc.Sucursales.Where(i => i.sucursal == venta.sucursal).Single();

            var item = new ReciboCompraReport
            {
                Recibo = new Common.Entities.Reports.ReciboCompra
                {
                    SucursalId     = venta.sucursal,
                    SucursalNombre = suc.descrip,
                    RFC            = "CTO-911211JL9",
                    Direccion      = suc.calle,
                    Colonia        = suc.colonia,
                    Fecha          = venta.fum.Value,
                    VendedorId     = $"{venta.idvendedor}",
                    VendedorNombre = vendedor,
                    CajeroId       = $"{venta.idcajero}",
                    CajeroNombre   = cajero,
                    Folio          = venta.venta,
                    Efectivo       = 3975,
                    Descuento      = 500,
                    Cambio         = DateTime.Parse("2019-07-13"),
                    Dinero         = dinero?.importe
                }
            };

            var plist = new List <Common.Entities.Reports.Producto>();

            foreach (var det in venta.Detalles)
            {
                var serie = ctx.Series.Where(i => i.serie == det.serie).Single();

                plist.Add(
                    new Common.Entities.Reports.Producto {
                    Serie       = det.serie,
                    Precio      = det.precio.Value,
                    Importe     = det.precdesc.Value,
                    Marca       = det.marca,
                    Descripcion = serie.Articulo.Descripcion
                });
            }
            item.Productos = plist;

            var pdlist = new List <Common.Entities.Reports.Pago>();
            //if(!ctxpv.Entry(venta).Reference(i => i.Pago).IsLoaded)
            //    ctxpv.Entry(venta).Reference(i => i.Pago).Load();
            //if (!ctxpv.Entry(venta.Pago).Collection(i => i.Detalle).IsLoaded)
            //    ctxpv.Entry(venta.Pago).Collection(i => i.Detalle).Load();

            var pagos = venta.Pago.Detalle;

            foreach (var det in pagos)
            {
                var pa = new Pago
                {
                    FormaPago  = ((Common.Constants.FormaPago)det.idformapago).ToString(),
                    Importe    = det.importe.Value,
                    Referencia = null,
                    Folio      = null
                };
                pdlist.Add(pa);
            }
            item.Pagos = pdlist;

            var pplist = new List <Common.Entities.Reports.PlanPago>();
            var ctxcr  = new DataAccess.SirCoCreditoDataContext();
            //==============================================================================================
            var ppagos = ctxcr.PlanPagosDetalle.Where(i => i.sucursal == "447279");

            foreach (var det in ppagos)
            {
                pplist.Add(new PlanPago
                {
                    Pago    = (int)det.pago,
                    Date    = det.fechaaplicar,
                    Importe = det.importe
                });
            }
            item.PlanPagos = pplist;

            return(item);
        }
예제 #19
0
        public void CancelFormaPago_VD()
        {
            var sucursal = "01";

            using (ShimsContext.Create())
            {
                System.Fakes.ShimDateTime.NowGet = () => { return(DateTime.Parse("2019-09-01")); };

                var data = new List <DataAccess.SirCoControl.Sucursal> {
                    new DataAccess.SirCoControl.Sucursal {
                        idsucursal = 1, sucursal = "01", cajas = 434045
                    }
                }.AsQueryable();

                var mockSet = new Mock <DbSet <DataAccess.SirCoControl.Sucursal> >();
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.Provider).Returns(data.Provider);
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.Expression).Returns(data.Expression);
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.ElementType).Returns(data.ElementType);
                mockSet.As <IQueryable <DataAccess.SirCoControl.Sucursal> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

                DataAccess.Fakes.ShimSirCoControlDataContext.AllInstances.SucursalesGet = (sctx) => {
                    return(mockSet.Object);
                };

                var pserie = "0000003668367";
                var nvale  = "123";
                var prod   = _sale.ScanProducto(pserie, sucursal);
                Assert.IsNotNull(prod);
                //var vale = _context.CheckVale(nvale);

                var ctx = new DataAccess.SirCoDataContext();
                ctx.UpdateSerieStatus("0000003668367", Status.CA, Status.AC, 0);

                var ncliente = new Common.Entities.Cliente
                {
                    Id = 810374
                };

                //var cid = _process.AddCliente(ncliente);
                //Assert.IsNotNull(cid);

                var model = new Common.Entities.SaleRequest()
                {
                    Sucursal   = sucursal,
                    VendedorId = 0,
                    Cliente    = ncliente
                };
                model.Productos = new Common.Entities.SerieFormasPago[] {
                    new Common.Entities.SerieFormasPago {
                        Serie = pserie, FormasPago = new Common.Constants.FormaPago[] { Common.Constants.FormaPago.VA }
                    }
                };
                model.Pagos = new List <Common.Entities.Pago> {
                    new Common.Entities.Pago {
                        FormaPago    = FormaPago.VD,
                        Importe      = prod.Producto.Precio.Value,
                        Vale         = nvale,
                        Plazos       = 13,
                        FechaAplicar = DateTime.Parse("2019-11-05")
                                       //ClienteId = cid,
                    }
                };

                var ctxa = new DataAccess.SirCoAPPDataContext();
                var vd   = ctxa.ValesDigital.Where(i => i.idvaledigital == 2).Single();
                Assert.AreEqual(2000, vd.disponible);

                var ctxc = new DataAccess.SirCoCreditoDataContext();
                var dis  = ctxc.Distribuidores.Where(i => i.distrib == "003763").Single();
                Assert.AreEqual(24057.39m, dis.saldo);
                Assert.AreEqual(73442.61m, dis.disponible);

                var folio = _context.Sale(model, 0);

                Assert.AreEqual("434046", folio.Folio);

                ctxa.Entry(vd).Reload();
                Assert.AreEqual(2000 - prod.Producto.Precio.Value, vd.disponible);
                ctxc.Entry(dis).Reload();
                Assert.AreEqual(24057.39m + prod.Producto.Precio.Value, dis.saldo);
                Assert.AreEqual(73442.61m - prod.Producto.Precio.Value, dis.disponible);

                var crequest = new Common.Entities.CancelSaleRequest
                {
                    Sucursal = sucursal,
                    Folio    = "434046"
                };
                _context.CancelSale(crequest, 0);

                ctxa.Entry(vd).Reload();
                Assert.AreEqual(2000, vd.disponible);
                ctxc.Entry(dis).Reload();
                Assert.AreEqual(24057.39m, dis.saldo);
                Assert.AreEqual(73442.61m, dis.disponible);
            }
        }