public void GenerarMovimientoAlmacen(string lote, string fkalmacen, string fkzona)
        {
            var service            = new MovimientosstockService(_context, _db);
            var stockactualService = new StockactualService(_context, _db);

            service.GenerarMovimiento(stockactualService.GetArticuloPorLoteOCodigo(lote, fkalmacen, _context.Empresa), TipoOperacionService.MovimientoAlmacen, fkzona);
        }
        public ActionResult MovimientosAlmacen(StArticulosLotes model)
        {
            var almacen        = model.Fkalmacen;
            var referencialote = model.Referencialote;
            var service        = new StockactualService(ContextService, MarfilEntities.ConnectToSqlServer(ContextService.BaseDatos));
            var list           = service.GetArticuloPorLoteOCodigo(referencialote, almacen, ContextService.Empresa);

            return(Json(list));
        }
        // GET: api/Supercuentas/5
        public HttpResponseMessage Get()
        {
            var nvc            = HttpUtility.ParseQueryString(Request.RequestUri.Query);
            var almacen        = nvc["Fkalmacen"];
            var referencialote = nvc["Referencialote"];
            var service        = new StockactualService(ContextService, MarfilEntities.ConnectToSqlServer(ContextService.BaseDatos));
            var list           = service.GetArticuloPorLoteOCodigo(referencialote, almacen, ContextService.Empresa);
            var response       = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(JsonConvert.SerializeObject(list), Encoding.UTF8,
                                                 "application/json");
            return(response);
        }
        private ReservasstockLinVistaModel GenerarModeloLin(ReservasstockModel albaranObj, string lote)
        {
            var serviceStock     = new StockactualService(_context, _db);
            var articulosService = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var familiasService  = FService.Instance.GetService(typeof(FamiliasproductosModel), _context, _db) as FamiliasproductosService;
            var unidadesService  = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService;
            var obj = serviceStock.GetArticuloPorLoteOCodigo(lote, albaranObj.Fkalmacen, albaranObj.Empresa) as MovimientosstockModel;

            if (obj != null)
            {
                var fkarticulos  = obj.Fkarticulos;
                var articulosObj = articulosService.GetArticulo(fkarticulos, albaranObj.Fkclientes,
                                                                albaranObj.Fkmonedas.ToString(), albaranObj.Fkregimeniva, TipoFlujo.Venta);
                var familiaObj  = familiasService.get(ArticulosService.GetCodigoFamilia(fkarticulos)) as FamiliasproductosModel;
                var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel;
                var metros      = UnidadesService.CalculaResultado(unidadesObj, obj.Cantidad, obj.Largo, obj.Ancho, obj.Grueso, obj.Metros);
                obj.Metros = metros;
                return(new ReservasstockLinVistaModel()
                {
                    Modificarmedidas = false,
                    Lote = lote,
                    Decimalesmonedas = albaranObj.Decimalesmonedas,
                    Descuentocomercial = albaranObj.Porcentajedescuentocomercialcadena,
                    Descuentoprontopago = albaranObj.Porcentajedescuentoprontopagocadena,
                    Fkcuenta = albaranObj.Fkclientes,
                    Fkmonedas = albaranObj.Fkmonedas.ToString(),
                    Flujo = TipoFlujo.Venta,
                    Fkregimeniva = albaranObj.Fkregimeniva,
                    Portes = albaranObj.Costeportes.ToString(),
                    Fkalmacen = albaranObj.Fkalmacen,
                    Descuento = 0,
                    Precio = articulosObj.Precio ?? 0,
                    Fkarticulos = fkarticulos,
                    Lineas = new List <MovimientosstockModel>(new[] { obj })
                });
            }

            return(new ReservasstockLinVistaModel()
            {
                Fkmonedas = albaranObj.Fkmonedas.ToString()
            });
        }
Example #5
0
        // GET: api/Supercuentas/5
        public HttpResponseMessage Get(string id)
        {
            var nvc            = HttpUtility.ParseQueryString(Request.RequestUri.Query);
            var almacen        = nvc["Fkalmacen"];
            var articulosdesde = nvc["FkarticulosDesde"];
            var articuloshasta = nvc["FkarticulosHasta"];
            var familiadesde   = nvc["FkfamiliaDesde"];
            var familiahasta   = nvc["FkfamiliaHasta"];
            var lotedesde      = nvc["LoteDesde"];
            var lotehasta      = nvc["LoteHasta"];
            var solotablas     = Funciones.Qbool(nvc["Solotablas"]);

            var service = new StockactualService(ContextService, MarfilEntities.ConnectToSqlServer(ContextService.BaseDatos));
            var list    = service.GetArticuloPorLoteOCodigo(id, almacen, ContextService.Empresa);

            var response = Request.CreateResponse(list == null ? HttpStatusCode.InternalServerError : HttpStatusCode.OK);

            response.Content = new StringContent(JsonConvert.SerializeObject(list), Encoding.UTF8,
                                                 "application/json");
            return(response);
        }
        public List <ReservasstockLinModel> CrearNuevasLineas(List <ReservasstockLinModel> listado, ReservasstockLinVistaModel model)
        {
            var stockactualService = new StockactualService(_context, _db);
            var articulosService   = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var familiasService    = FService.Instance.GetService(typeof(FamiliasproductosModel), _context, _db) as FamiliasproductosService;
            var unidadesService    = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService;
            var tiposivaService    = FService.Instance.GetService(typeof(TiposIvaModel), _context, _db) as TiposivaService;
            var monedasService     = FService.Instance.GetService(typeof(MonedasModel), _context, _db) as MonedasService;
            var monedasObj         = monedasService.get(model.Fkmonedas) as MonedasModel;

            var maxId = listado.Any() ? listado.Max(f => f.Id) + 1 : 1;

            foreach (var linea in model.Lineas)
            {
                if (!listado.Any(f => f.Lote == linea.Lote && f.Tabla == Funciones.Qint(linea.Loteid)))
                {
                    var articuloObj = articulosService.GetArticulo(linea.Fkarticulos, model.Fkcuenta, model.Fkmonedas, model.Fkregimeniva, model.Flujo);

                    var familiaObj = familiasService.get(ArticulosService.GetCodigoFamilia(linea.Fkarticulos)) as FamiliasproductosModel;

                    var ancho  = linea.Ancho;
                    var largo  = linea.Largo;
                    var grueso = linea.Grueso;
                    if (model.Modificarmedidas)
                    {
                        ancho  = model.Ancho;
                        largo  = model.Largo;
                        grueso = model.Grueso;
                    }
                    else
                    {
                        var item = familiaObj.Gestionstock
                        ? stockactualService.GetArticuloPorLoteOCodigo(
                            string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3)), model.Fkalmacen,
                            Empresa) as MovimientosstockModel : null;
                        ancho  = item?.Ancho ?? linea.Ancho;
                        largo  = item?.Largo ?? linea.Largo;
                        grueso = item?.Grueso ?? linea.Grueso;
                    }

                    var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel;
                    var tiposivaObj = tiposivaService.get(articuloObj.Fktiposiva) as TiposIvaModel;
                    var metros      = UnidadesService.CalculaResultado(unidadesObj, linea.Cantidad, largo, ancho, grueso, model.Metros);
                    linea.Metros = metros;
                    var bruto            = linea.Metros * model.Precio;
                    var importedescuento = Math.Round(((bruto) * model.Descuento / 100.0), model.Decimalesmonedas);
                    var total            = bruto - importedescuento;

                    listado.Add(new ReservasstockLinModel()
                    {
                        Id                            = maxId++,
                        Fkarticulos                   = linea.Fkarticulos,
                        Descripcion                   = articuloObj.Descripcion,
                        Lote                          = linea.Lote,
                        Tabla                         = Funciones.Qint(linea.Loteid),
                        Tblnum                        = Funciones.Qint(linea.Loteid),
                        Cantidad                      = linea.Cantidad,
                        Largo                         = largo,
                        Ancho                         = ancho,
                        Grueso                        = grueso,
                        Fkunidades                    = articuloObj.Fkunidades,
                        Metros                        = metros,
                        Precio                        = model.Precio,
                        Porcentajedescuento           = model.Descuento,
                        Importedescuento              = importedescuento,
                        Importe                       = total,
                        Decimalesmedidas              = unidadesObj.Decimalestotales,
                        Decimalesmonedas              = monedasObj.Decimales,
                        Fktiposiva                    = tiposivaObj.Id,
                        Porcentajeiva                 = tiposivaObj.PorcentajeIva,
                        Porcentajerecargoequivalencia = tiposivaObj.PorcentajeRecargoEquivalencia,
                        Bundle                        = model.Tipopieza == TipoPieza.Bundle ? model.Lote.Replace(linea.Lote, string.Empty) : string.Empty,
                        Caja                          = model.Caja,
                        Canal                         = model.Canal
                    }
                                );
                }
            }

            ValidarKit(listado, model);

            return(listado);
        }
        private List <TransformacioneslotesLinModel> GenerarLineasConStock(List <TransformacioneslotesLinModel> listado, TransformacioneslotesLinVistaModel model, ArticulosDocumentosModel articuloObj, int maxId)
        {
            var stockactualService = new StockactualService(_context, _db);
            var articulosService   = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var familiasService    = FService.Instance.GetService(typeof(FamiliasproductosModel), _context, _db) as FamiliasproductosService;
            var unidadesService    = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService;

            var lotesService = new LotesService(_context);

            foreach (var linea in model.Lineas)
            {
                if (!listado.Any(f => f.Lote == linea.Lote && f.Tabla == Funciones.Qint(linea.Loteid)))
                {
                    var stockObj =
                        _db.Stockhistorico.Single(
                            f =>
                            f.fkalmacenes == _context.Fkalmacen && f.empresa == _context.Empresa &&
                            f.lote == linea.Lote && f.loteid == linea.Loteid);
                    var loteObj = lotesService.Get(stockObj.id.ToString());
                    articuloObj = articulosService.GetArticulo(linea.Fkarticulos, model.Fkcuenta, model.Fkmonedas, model.Fkregimeniva, model.Flujo);
                    var familiaObj = familiasService.get(ArticulosService.GetCodigoFamilia(linea.Fkarticulos)) as FamiliasproductosModel;

                    var ancho  = linea.Ancho;
                    var largo  = linea.Largo;
                    var grueso = linea.Grueso;
                    var item   = familiaObj.Gestionstock
                        ? stockactualService.GetArticuloPorLoteOCodigo(
                        string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3)), model.Fkalmacen,
                        Empresa) as MovimientosstockModel : null;
                    if (model.Modificarmedidas)
                    {
                        ancho  = model.Ancho;
                        largo  = model.Largo;
                        grueso = model.Grueso;
                    }
                    else
                    {
                        ancho  = item?.Ancho ?? linea.Ancho;
                        largo  = item?.Largo ?? linea.Largo;
                        grueso = item?.Grueso ?? linea.Grueso;
                    }
                    if (linea.Cantidad > item.Cantidad)
                    {
                        throw new ValidationException(string.Format("La cantidad indicada para el lote {0} es superior a la que hay en el stock actual", string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3))));
                    }
                    var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel;

                    var metros = UnidadesService.CalculaResultado(unidadesObj, articuloObj.Lotefraccionable ? model.Cantidad : linea.Cantidad, largo, ancho, grueso, model.Metros);
                    linea.Metros = metros;

                    listado.Add(new TransformacioneslotesLinModel()
                    {
                        Id                = maxId++,
                        Fkarticulos       = linea.Fkarticulos,
                        Descripcion       = articuloObj.Descripcion,
                        Lote              = linea.Lote,
                        Tabla             = Funciones.Qint(linea.Loteid),
                        Cantidad          = articuloObj.Lotefraccionable ? model.Cantidad : linea.Cantidad,
                        Largo             = largo,
                        Ancho             = ancho,
                        Grueso            = grueso,
                        Fkunidades        = articuloObj.Fkunidades,
                        Metros            = metros,
                        Decimalesmedidas  = unidadesObj.Decimalestotales,
                        Canal             = model.Canal,
                        Flagidentifier    = Guid.NewGuid(),
                        Precio            = loteObj.Costenetocompra,
                        Tipodealmacenlote = loteObj.Tipodealmacenlote
                    }
                                );
                }
            }

            ValidarKit(listado, model);

            return(listado);
        }
Example #8
0
        private List <AlbaranesLinModel> GenerarLineasConStock(List <AlbaranesLinModel> listado, AlbaranesLinVistaModel model, ArticulosDocumentosModel articuloObj, int maxId)
        {
            var stockactualService = new StockactualService(_context, _db);
            var articulosService   = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var familiasService    = FService.Instance.GetService(typeof(FamiliasproductosModel), _context, _db) as FamiliasproductosService;
            var unidadesService    = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService;
            var tiposivaService    = FService.Instance.GetService(typeof(TiposIvaModel), _context, _db) as TiposivaService;
            var monedasService     = FService.Instance.GetService(typeof(MonedasModel), _context, _db) as MonedasService;
            var monedasObj         = monedasService.get(model.Fkmonedas) as MonedasModel;

            foreach (var linea in model.Lineas)
            {
                if (!listado.Any(f => f.Lote == linea.Lote && f.Tabla == Funciones.Qint(linea.Loteid)))
                {
                    articuloObj = articulosService.GetArticulo(linea.Fkarticulos, model.Fkcuenta, model.Fkmonedas, model.Fkregimeniva, model.Flujo);
                    var familiaObj = familiasService.get(ArticulosService.GetCodigoFamilia(linea.Fkarticulos)) as FamiliasproductosModel;

                    var ancho  = linea.Ancho;
                    var largo  = linea.Largo;
                    var grueso = linea.Grueso;
                    var item   = familiaObj.Gestionstock
                        ? stockactualService.GetArticuloPorLoteOCodigo(
                        string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3)), model.Fkalmacen,
                        Empresa) as MovimientosstockModel : null;
                    if (model.Modificarmedidas)
                    {
                        ancho  = model.Ancho;
                        largo  = model.Largo;
                        grueso = model.Grueso;
                    }
                    else
                    {
                        ancho  = item?.Ancho ?? linea.Ancho;
                        largo  = item?.Largo ?? linea.Largo;
                        grueso = item?.Grueso ?? linea.Grueso;
                    }
                    if (linea.Cantidad > item.Cantidad)
                    {
                        throw new ValidationException(string.Format("La cantidad indicada para el lote {0} es superior a la que hay en el stock actual", string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3))));
                    }
                    var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel;
                    var tiposivaObj = tiposivaService.get(articuloObj.Fktiposiva) as TiposIvaModel;
                    var metros      = UnidadesService.CalculaResultado(unidadesObj, articuloObj.Lotefraccionable ? model.Cantidad :linea.Cantidad, largo, ancho, grueso, model.Metros);
                    linea.Metros = metros;
                    var bruto            = linea.Metros * model.Precio;
                    var importedescuento = Math.Round(((bruto) * model.Descuento / 100.0), model.Decimalesmonedas);
                    var total            = bruto - importedescuento;

                    listado.Add(new AlbaranesLinModel()
                    {
                        Nueva                         = true,
                        Id                            = maxId++,
                        Fkarticulos                   = linea.Fkarticulos,
                        Descripcion                   = articuloObj.Descripcion,
                        Lote                          = linea.Lote,
                        Tabla                         = Funciones.Qint(linea.Loteid),
                        Tblnum                        = Funciones.Qint(linea.Loteid),
                        Cantidad                      = articuloObj.Lotefraccionable ? model.Cantidad : linea.Cantidad,
                        Largo                         = largo,
                        Ancho                         = ancho,
                        Grueso                        = grueso,
                        Fkunidades                    = articuloObj.Fkunidades,
                        Metros                        = metros,
                        Precio                        = model.Precio,
                        Porcentajedescuento           = model.Descuento,
                        Importedescuento              = importedescuento,
                        Importe                       = total,
                        Decimalesmedidas              = unidadesObj.Decimalestotales,
                        Decimalesmonedas              = monedasObj.Decimales,
                        Fktiposiva                    = tiposivaObj.Id,
                        Porcentajeiva                 = tiposivaObj.PorcentajeIva,
                        Porcentajerecargoequivalencia = tiposivaObj.PorcentajeRecargoEquivalencia,
                        Bundle                        = model.Tipopieza == TipoPieza.Bundle ? model.Lote.Replace(linea.Lote, string.Empty) : string.Empty,
                        Caja                          = model.Caja,
                        Canal                         = model.Canal,
                        Flagidentifier                = Guid.NewGuid()
                    }
                                );
                }
            }

            ValidarKit(listado, model);

            return(listado);
        }