public ActionResult GetDocumento(StDocumentoVenta model)
 {
     using (var service = GetService(model.Tipodocumento))
     {
         try
         {
             var list = service.BuscarDocumento(model.Referencia);
             return(Json(list));
         }
         catch (Exception ex)
         {
             return(Json(new ErrorJson(ex.Message)));
         }
     }
 }
        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
                    }));
                }
            }
        }