Puede suceder que se quiera cambiar el orden para que los artículos aparezcan, por ejemplo, por orden alfabético.
Para realizar esto, en versiones antiguas como la 4.4.2300 se debe personalizar la vista vTPV_Articulos_Familias, forzando la ordenación dentro de la propia vista. Consulta con el administrador del ERP para llevar a cabo estos pasos, ya que se necesita un perfil técnico para implementarlo.
NOTA:
Existe la posibilidad de personalizar la GRID desde el personalizador, mediante una vista personalizada del TPV objeto.
Consulta en este artículo la información.
Ya que SQL Server sobrescribe el ORDER BY de las vistas para ejecutarse de forma más eficiente, hay que utilizar un ORDER BY con offset, disponible desde la versión de SQL Server 2012.
Una vez creada la vista, hay que cambiar el campo SQL de la colección TPV_Articulos_Familias.
IF EXISTS(SELECT 1 FROM sys.views WHERE OBJECT_ID = OBJECT_ID('vPERS_TPV_Articulos_Familias')) DROP VIEW vPERS_TPV_Articulos_Familias GO CREATE VIEW [dbo].[vPERS_TPV_Articulos_Familias] AS -- ============================================= -- #AUTHOR: -- AXIUM -- #NAME: --- vPERS_TPV_Articulos_Familias -- #CREATION: -- 25/01/2021 -- #CLASIFICATION: -- 000-SISTEMA -- #DESCRIPTION: -- Personalización necesaria para devolver los campos necesarios para mostrar los artículos por familia ordenados por descrip -- #PARAMETERS: -- -- #OBSERVATIONS: -- -- #CHANGES: -- -- #EXAMPLE: -- -- ============================================= SELECT * FROM ( SELECT A.IdCaja, A.IdArticulo,A.IdFamilia, A.Descrip, A.IdDoc, 0 Precio, I.NombreFichero, dbo.Valor_Parametro('PATHIMAGENES', USER) + '\' + I.NombreFichero as PathImagen, '' as imgData, 1 AS Favoritos FROM vTPV_Cajas_Favoritos_Asociados A LEFT JOIN vImagenes_Articulos I ON A.IdArticulo = I.IdArticulo and I.Principal = 1 WHERE AsociadoACaja = 1 UNION ALL SELECT F.Idcaja, A.IdArticulo,A.IdFamilia, A.Descrip, A.IdDoc, 0 Precio, I.NombreFichero, dbo.Valor_Parametro('PATHIMAGENES', USER) + '\' + I.NombreFichero as PathImagen, '' as imgData, 0 AS Favoritos FROM vTPV_Cajas_Familias_Asociadas F INNER JOIN Articulos A ON A.IdFamilia = F.IdFamilia LEFT JOIN vImagenes_Articulos I on A.IdDoc = I.IdDocObjeto AND I.Principal = 1 WHERE F.AsociadoACaja = 1 -- el valor correcto es 1 ) X ORDER BY Descrip OFFSET 0 ROWS; GO ZPERMISOS 'vPERS_TPV_Articulos_Familias' GO sp_refreshview 'vPERS_TPV_Articulos_Familias' GO update objetos set SQL = 'Select * from vPERS_TPV_Articulos_Familias' where objeto ='TPV_Articulos_Familias' GO
Es importante tener en cuenta que este código sirve para ordenar los artículos devueltos al pulsar en una familia en el entorno táctil.
Si, por otra parte, se quiere personalizar el orden de las familias, se debe personalizar el procedimiento almacenado pTPV_Articulos_Familias_Personalizado, indicando aquí el orden deseado. Esta opción está disponible desde la versión 4.4.2300 hotfix 32.
A continuación, se muestra un ejemplo para mostrar las familias por orden descendente.
IF EXISTS (SELECT 1 FROM sys.Objects WHERE Object_id = OBJECT_ID('pTPV_Articulos_Familias_Personalizado')) DROP PROCEDURE [dbo].[pTPV_Articulos_Familias_Personalizado] GO CREATE PROCEDURE [dbo].[pTPV_Articulos_Familias_Personalizado] @IdCaja INT, @oXML XML OUTPUT -- ============================================= -- #AUTOR: -- CEESI -- #NAME: -- pTPV_Articulos_Familias_Personalizado -- #CREATION: -- 03/03/2021 -- #CLASIFICATION: -- TPV -- #DESCRIPTION: -- Personalizado de pTPV_Articulos_Familia -- #PARAMETERS: -- -- #OBSERVATIONS: -- Se llama desde pTPV_Articulos_Familia -- Retorno: 0 Error -- -1 OK y que SÍ siga con el proceso estándar -- -2 OK y que NO siga con el proceso estándar -- #CHANGES: -- -- #EXAMPLE: -- -- ============================================= AS DECLARE @PathImagenes VARCHAR(255) BEGIN TRY SELECT @PathImagenes = Valor FROM dbo.funTblValorParametro('PATHIMAGENES') SET @oXML = ( SELECT F.IdFamilia, F.IdDoc, F.Descrip, IdFamiliaPadre, I.NombreFichero, @PathImagenes + '\' + I.NombreFichero AS PathImagen, '' AS imgData, 1 Nivel, CAST(( SELECT F2.IdFamilia, F2.IdDoc, F2.Descrip, F2.IdFamiliaPadre, I2.NombreFichero, @PathImagenes + '\' + I2.NombreFichero AS PathImagen, '' AS imgData, 2 Nivel FROM Articulos_Familias F2 LEFT JOIN vImagenes_Articulos_Familia I2 ON F2.IdFamilia = I2.IdFamilia AND I2.Principal = 1 WHERE F2.IdFamiliaPadre = F.IdFamilia AND F2.NumeroNivel = 2 AND EXISTS (SELECT 1 FROM TPV_Cajas_Familias_Asociadas WHERE IdFamilia = F2.IdFamilia AND IdCaja = @IdCaja) ORDER BY F2.Descrip DESC FOR XML PATH('R') ) AS XML) Familias FROM Articulos_Familias F LEFT JOIN vImagenes_Articulos_Familia I ON F.IdFamilia = I.IdFamilia AND I.Principal = 1 WHERE F.NumeroNivel = 1 AND EXISTS (SELECT 1 FROM TPV_Cajas_Familias_Asociadas WHERE IdFamilia = F.IdFamilia AND IdCaja = @IdCaja) ORDER BY F.Descrip DESC FOR XML PATH('R'), ROOT('Familias') ) RETURN -2 END TRY BEGIN CATCH IF @@TRANCOUNT >0 BEGIN ROLLBACK TRAN END DECLARE @CatchError NVARCHAR(MAX) SET @CatchError = CASE WHEN ERROR_NUMBER()=3609 OR ERROR_NUMBER()=266 THEN 'Error en procedimiento' ELSE ERROR_MESSAGE() END SELECT @oXML = CAST('<Resultado><Respuesta><Estado>error</Estado><Mensaje>' + @CatchError + '</Mensaje></Respuesta><data /><view /></Resultado>' AS XML) RETURN 0 END CATCH GO ZPermisos 'pTPV_Articulos_Familias_Personalizado' GO
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo