public ActionResult AgregarLinea(StDocumentosVentasLineas model)
 {
     using (var service = GetService(model.Tipodocumento))
     {
         try
         {
             if (service is InventariosService)
             {
                 var agregarService = service as InventariosService;
                 var list           = model.Operacion == "0" ? agregarService.AgregarLinea(model.Referencia, model.Lote) : agregarService.EliminarLinea(model.Referencia, model.Lote);
                 return(Json(list));
             }
             else
             {
                 var agregarService = service as IAgregarLineaDocumentoMovile;
                 var list           = model.Operacion == "0" ? agregarService.AgregarLinea(model.Referencia, model.Lote) : agregarService.EliminarLinea(model.Referencia, model.Lote);
                 return(Json(list));
             }
         }
         catch (Exception ex)
         {
             var result = new AgregarLineaDocumentosModel()
             {
                 Error = ex.Message
             };
             return(Json(result));
         }
     }
 }
        private AgregarLineaDocumentosModel OperarLinea(string referencia, string lote, bool agregar)
        {
            var result = new AgregarLineaDocumentosModel();

            using (var tran = Marfil.Inf.Genericos.Helper.TransactionScopeBuilder.CreateTransactionObject())
            {
                var model = GetByReferencia(referencia);
                model = get(model.Id.ToString()) as ReservasstockModel;

                result.Referencia = model.Referencia;
                result.Fecha      = model.Fechadocumentocadena;
                model.Lineas      = (agregar
                    ? CrearNuevasLineas(model.Lineas, GenerarModeloLin(model, lote))
                    : EliminarLineas(model.Lineas, lote));

                edit(model);

                result.Lineas = model.Lineas
                                .Select(f => new AgregarLineaDocumentosLinModel()
                {
                    Lote        = string.Format("{0}{1}", f.Lote, Funciones.RellenaCod(f.Tabla?.ToString() ?? "0", 3)),
                    Largo       = f.SLargo,
                    Ancho       = f.SAncho,
                    Grueso      = f.SGrueso,
                    Cantidad    = f.Cantidad.ToString(),
                    Descripcion = f.Descripcion,
                    Fkarticulos = f.Fkarticulos,
                    Metros      = f.SMetros
                }).ToList();

                tran.Complete();
            }


            return(result);
        }
        public ActionResult BuscarDocumentoVentaProduccion(StDocumentoVenta model)
        {
            using (var service = GetService(model.Tipodocumento) as IGestionService)
            {
                try
                {
                    if (service is ReservasstockService)
                    {
                        var servicereservas = service as ReservasstockService;
                        var list            = servicereservas.GetByReferencia(model.Referencia);
                        list = servicereservas.get(list.Id.ToString()) as ReservasstockModel;
                        var result = new AgregarLineaDocumentosModel()
                        {
                            Fecha      = list.Fechadocumentocadena,
                            Referencia = list.Referencia,
                            Lineas     = list.Lineas.Select(f => new AgregarLineaDocumentosLinModel()
                            {
                                Fkarticulos = f.Fkarticulos,
                                Descripcion = f.Descripcion,
                                Lote        = f.Lote,
                                Cantidad    = f.Cantidad.ToString(),
                                Ancho       = f.SAncho,
                                Largo       = f.SLargo,
                                Grueso      = f.SGrueso,
                                Metros      = f.SMetros
                            }).ToList()
                        };
                        return(Json(result));
                    }
                    else if (service is EntregasService)
                    {
                        var servicereservas = service as EntregasService;
                        var list            = servicereservas.GetByReferencia(model.Referencia);
                        list = servicereservas.get(list.Id.ToString()) as AlbaranesModel;
                        var result = new AgregarLineaDocumentosModel()
                        {
                            Fecha      = list.Fechadocumentocadena,
                            Referencia = list.Referencia,
                            Lineas     = list.Lineas.Select(f => new AgregarLineaDocumentosLinModel()
                            {
                                Fkarticulos = f.Fkarticulos,
                                Descripcion = f.Descripcion,
                                Lote        = f.Lote,
                                Cantidad    = f.Cantidad.ToString(),
                                Ancho       = f.SAncho,
                                Largo       = f.SLargo,
                                Grueso      = f.SGrueso,
                                Metros      = f.SMetros
                            }).ToList()
                        };
                        return(Json(result));
                    }
                    else if (service is InventariosService)
                    {
                        var servicereservas = service as InventariosService;
                        var list            = servicereservas.GetByReferencia(model.Referencia);
                        list = servicereservas.get(list.Id.ToString()) as InventariosModel;
                        var result = new AgregarLineaInventariosDocumentosModel()
                        {
                            Fecha      = list.Fechadocumentocadena,
                            Referencia = list.Referencia,
                            Lineas     = list.Lineas.Select(f => new AgregarLineaInventariosDocumentosLinModel()
                            {
                                Fkarticulos  = f.Fkarticulos,
                                Descripcion  = f.Descripcion,
                                Lote         = string.Format("{0}{1}", f.Lote, Funciones.RellenaCod(f.Loteid, 3)),
                                Cantidad     = f.Cantidad.ToString(),
                                Ancho        = f.SAncho,
                                Largo        = f.SLargo,
                                Grueso       = f.SGrueso,
                                Metros       = f.SMetros,
                                Estado       = Funciones.GetEnumByStringValueAttribute(f.Estado),
                                Codigoestado = ((int)f.Estado).ToString()
                            }).ToList()
                        };
                        return(Json(result));
                    }

                    return(Json(new AgregarLineaDocumentosModel()
                    {
                        Error = "Operacion incorrecta"
                    }));
                }
                catch (Exception ex)
                {
                    return(Json(new AgregarLineaDocumentosModel()
                    {
                        Error = ex.Message
                    }));
                }
            }
        }