Implementación de SoftwareSistemas y desarrollo

Personalizaciones: Componentes SQL (parte 2 de 2)

Personalizaciones Componentes SQL
Share

CASO DE USO II: Modificación de Procedimiento Almacenado del informe Estados de OT (Store Procedure: CZSP_CREP_PP008_Predeterminada)

 

Requerimiento:

Se requiere personalizar la salida del reporte de CAPATAZ, Planeamiento y Control de Producción, Informes, PP008 ESTADOS DE OT, para que muestre el valor de la función de N_DESPACHO que tiene asignada cada artículo de las Órdenes de Trabajo. Este campo, lógicamente, no se encuentra en la consulta original del reporte.
 

Solución Propuesta:

a) Personalizar el Procedimiento Almacenado SQL del reporte PP008 ESTADOS DE OT de CAPATAZ denominado CZSP_CREP_PP008_Predeterminada, agregando el campo N_DESPACHO del artículo de la Orden de Trabajo.
 

Implementación:

a.1) Desde el menú principal de CAPATAZ, herramientas, ingresaremos al Editor SQL.
 

Personalizaciones CAPATAZ: Componentes SQL

 
a.2) Dentro del Editor SQL, seleccionaremos el Procedimiento Almacenado a modificar. En este caso, CZSP_CREP_PP008_Predeterminada y presionaremos el botón 5 Modificar.
 

Personalizaciones CAPATAZ: Componentes SQL

 

Referencias de la imagen anterior:

  1. Procedimiento CZSP_CREP_PP008_Predeterminada seleccionada para modificar.
  2. Panel que muestra el código SQL del procedimiento.
  3. Panel que muestra la lista de parámetros del procedimiento.
  4. Botón para copiar el componente SQL seleccionado.
  5. Botón para modificar el componente SQL seleccionado, dentro del panel de código SQL.
  6. Botón para exportar el script SQL de creación del componente SQL seleccionado (lo guarda en un archivo con el nombre del componente SQL, en la carpeta DOCUMENTOS).
  7. Botón Guardar, para guardar los cambios del componente.

 
a.3) Exportaremos el script original, para modificarlo en una consola SQL.
 

Personalizaciones CAPATAZ: Componentes SQL

 

Personalizaciones CAPATAZ: Componentes SQL

 
El código SQL particular de cada personalización, puede ser editado dentro del panel de CAPATAZ o con ayuda de una consola SqL, como el Administrador Sql (SQL Server Managment).
 
a.4) Editaremos el código SQL del procedimiento, para agregarle el campo n_despacho. Mostramos a continuación el código definitivo. Se resaltan las líneas personalizadas (38;48;64;72).
 

DROP PROCEDURE CZSP_CREP_PP008_PREDETERMINADA
GO
CREATE PROCEDURE CZSP_CREP_PP008_PREDETERMINADA (
                 @des_of           	AS VARCHAR(016) = '',
                 @has_of           	AS VARCHAR(016) = 'zzzzzzzzzzzzzzzz',
                 @des_art          	AS VARCHAR(015) = '',
                 @has_art          	AS VARCHAR(015) = 'zzzzzzzzzzzzzzz',
                 @des_comprob_orig 	AS VARCHAR(016) = '',
                 @has_comprob_orig 	AS VARCHAR(016) = 'zzzzzzzzzzzzzzzz',
                 @des_prod_ori     	AS VARCHAR(015) = '',
                 @has_prod_ori     	AS VARCHAR(015) = 'zzzzzzzzzzzzzzz',
                 @esta             	AS CHAR(1)      = 'A', 
                 @estg             	AS CHAR(1)      = 'G', 
                 @estf             	AS CHAR(1)      = 'F', 
                 @estc             	AS CHAR(1)      = 'C', 
                 @esti             	AS CHAR(1)    	= 'I', 
                 @externa         	AS BIT          = 1,     
                 @interna          	AS BIT          = 1,     
                 @pt               	AS CHAR(2)      = 'PT', 
                 @sc               	AS CHAR(2)      = 'SC', 
                 @in               	AS CHAR(2)      = 'IN', 
                 @ai               	AS CHAR(2)      = 'AR',
                 @vi             	AS CHAR(3)      = 'SCV',
                 @orden 			AS INT 			= 1
                 )
AS
BEGIN
SET NOCOUNT ON

SELECT CZAP10.t_comp, CZAP10.n_of, CZAP11.tipo_orig, CZAP11.nro_orig, CZAP10.cod_articu, CZSTA11.descripcio, CZSTA11.desc_adic, CZSTA11.sinonimo, CZSTA11.cod_barra, 
				CZSTA11.unidad_med, CZAP10.cant, CZAP10.fecha_gen, CZAP10.fecha_prg, CZAP10.fecha_entr, CZAP10.fecha_lan, CZAP10.fecha_cie, CZAP10.estado, 
				CASE WHEN CZAP10.externa = 1 THEN 'EXT' ELSE 'INT' END AS Tipo, CZAP10.observacio, 
				CZAP10.copias, CZAP10.cod_deposi, CZSTA22.nombre_suc as nom_deposi, CZAP10.leyenda_1, CZAP10.leyenda_2, CZAP10.leyenda_3, CZAP10.leyenda_4, CZAP10.leyenda_5,
				CZAP10.contabiliz, CZAP10.usu_gen, CZAP10.id_db,
				SUBSTRING(CZSTA11.coment,1,250) AS coment1, SUBSTRING(CZSTA11.coment,251,500) AS coment2, 
				SUBSTRING(CZSTA11.coment,501,750) AS coment3, SUBSTRING(CZSTA11.coment,751,1000) AS coment4, 	  
				CZAP10.n_partida, CZSTA08.n_despacho,CZSTA08.fecha_vto, CZCATART.cat, CZAP11.cod_art_pr, CAST(CASE WHEN MAR.cuenta IS NULL THEN 0 ELSE 1 END AS BIT) AS 					multiarticulo, CZAP10.porc_avanc,
				CZAS31.FNDESPACHO
				INTO #TEMP		
		FROM CZAP10 
				INNER JOIN CZSTA11  ON CZAP10.cod_articu = CZSTA11.cod_articu 
				INNER JOIN CZAP11   ON CZAP10.t_comp = CZAP11.t_comp AND CZAP10.n_of = CZAP11.n_of 
				INNER JOIN CZSTA22  ON CZAP10.cod_deposi = CZSTA22.cod_sucurs 
				INNER JOIN CZCATART ON CZAP10.cod_articu = CZCATART.cod_articu 
				LEFT JOIN CZSTA08   ON CZAP10.n_partida = CZSTA08.n_partida
				LEFT JOIN (SELECT T_OT_HIJA as t_comp, N_OT_HIJA as n_of, COUNT(*) AS cuenta FROM CZAP49 GROUP BY T_OT_HIJA, N_OT_HIJA) MAR     
				                    ON CZAP10.t_comp = MAR.t_comp AND CZAP10.n_of = MAR.n_of
				LEFT JOIN CZAS31    ON CZAP10.cod_articu = CZAS31.cod_articu
		WHERE CZAP10.t_comp+CZAP10.n_of BETWEEN @des_of AND @has_of 
				AND CZAP11.cod_art_pr BETWEEN @des_prod_ori AND @has_prod_ori 
				AND CZAP11.tipo_orig+CZAP11.nro_orig BETWEEN @des_comprob_orig AND @has_comprob_orig 
				AND CZAP10.cod_articu BETWEEN @des_art AND @has_art		
				AND CZAP10.ESTADO IN(@estg, @esti, @estf, @estc) 
	   			AND (NOT CZAP10.externa = @interna OR CZAP10.externa = @externa) 
	   			AND CZCATART.cat IN (@pt, @sc, @in, @ai, @vi) AND CZAP10.TIPO = 'OT'
		UNION 
		SELECT CZAP10.t_comp, CZAP10.n_of, 'N/A' AS tipo_orig, '' AS nro_orig, CZAP10.cod_articu, CZSTA11.descripcio, CZSTA11.desc_adic, CZSTA11.sinonimo, CZSTA11.cod_barra, 
				CZSTA11.unidad_med, CZAP10.cant, CZAP10.fecha_gen, CZAP10.fecha_prg, CZAP10.fecha_entr, CZAP10.fecha_lan, CZAP10.fecha_cie, CZAP10.estado, 
				CASE WHEN CZAP10.externa = 1 THEN 'EXT' ELSE 'INT' END AS Tipo, CZAP10.observacio, 
				CZAP10.copias, CZAP10.cod_deposi, CZSTA22.nombre_suc as nom_deposi, CZAP10.leyenda_1, CZAP10.leyenda_2, CZAP10.leyenda_3, CZAP10.leyenda_4, CZAP10.leyenda_5, 				CZAP10.contabiliz, CZAP10.usu_gen, CZAP10.id_db,
				SUBSTRING(CZSTA11.coment,1,250) AS coment1, SUBSTRING(CZSTA11.coment,251,500) AS coment2, 
				SUBSTRING(CZSTA11.coment,501,750) AS coment3, SUBSTRING(CZSTA11.coment,751,1000) AS coment4,	  
				CZAP10.n_partida, CZSTA08.n_despacho,CZSTA08.fecha_vto, CZCATART.cat, '' AS cod_art_pr, CAST(CASE WHEN MAR.cuenta IS NULL THEN 0 ELSE 1 END AS BIT) AS 					multiarticulo, CZAP10.porc_avanc,
				CZAS31.FNDESPACHO
		FROM CZAP10 
				INNER JOIN CZSTA11  ON CZAP10.cod_articu = CZSTA11.cod_articu 
				INNER JOIN CZSTA22  ON CZAP10.cod_deposi = CZSTA22.cod_sucurs 
				INNER JOIN CZCATART ON CZAP10.cod_articu = CZCATART.cod_articu 
				LEFT JOIN CZSTA08   ON CZAP10.n_partida = CZSTA08.n_partida
				LEFT JOIN (SELECT T_OT_HIJA as t_comp, N_OT_HIJA as n_of, COUNT(*) AS cuenta FROM CZAP49 GROUP BY T_OT_HIJA, N_OT_HIJA) MAR     
				                    ON CZAP10.t_comp = MAR.t_comp AND CZAP10.n_of = MAR.n_of  
				LEFT JOIN CZAS31    ON CZAP10.cod_articu = CZAS31.cod_articu
		WHERE CZAP10.t_comp+CZAP10.n_of BETWEEN @des_of AND @has_of 
				AND CZAP10.cod_articu BETWEEN @des_art AND @has_art	
				AND CZAP10.ESTADO IN(@esta) 
	   			AND (NOT CZAP10.externa = @interna OR CZAP10.externa = @externa) 
	   			AND CZCATART.cat IN (@pt, @sc, @in, @ai, @vi) AND CZAP10.TIPO = 'OT'

IF @orden = 1 
BEGIN
    SELECT * FROM #TEMP ORDER BY t_comp, n_of
END
IF @orden = 2 
BEGIN
    SELECT * FROM #TEMP ORDER BY tipo_orig, nro_orig, t_comp, n_of
END
IF @orden = 3 
BEGIN
    SELECT * FROM #TEMP ORDER BY fecha_gen
END
IF @orden = 4 
BEGIN
    SELECT * FROM #TEMP ORDER BY cod_articu
END
IF @orden = 5
BEGIN
    SELECT * FROM #TEMP ORDER BY estado
END
IF @orden = 6
BEGIN
    SELECT * FROM #TEMP ORDER BY Tipo
END

END

 
a.5) Ejecutar el script personalizado, desde una consola SQL en la base de datos de la empresa, para que quede definido con la personalización deseada.
 

  • Comentario 1: con este procedimiento, el componente personalizado, NO se conservará ante cambios de versión.
  • Comentario 2: para que esta personalización sobreviva a cambios de versión y reintegraciones de empresa, una alternativa puede ser colocar el código sql de definición del componente (fondo verde) al final del componente POS_INTEGRA.SQL, accesible desde el EDITOR SQL de CAPATAZ.

 

Personalizaciones CAPATAZ: Componentes SQL

 

Referencias de la imagen anterior

  1. Código POS_INTEGRA.SQL, seleccionarlo para editar el código.
  2. Botón Modificar, permite editar el código en el panel de código.
  3. Panel de código SQL, para ver o modificar el componente.
  4. Botón Guardar, para guardar el código modificado.

 
De esta forma, luego de reintegrar la empresa o ante reintegraciones realizadas por un cambio de versión de CAPATAZ, se ejecutará este código POS_INTEGRA.SQL, redefiniendo los componentes personalizados deseados. En nuestro ejemplo, el componente CZSP_CREP_PP008_Predeterminada que corresponde a la consulta del informe PP008 ESTADOS DE OT.
 
Fin del CASO DE USO II.
 

Conclusiones

Seguramente, con los ejemplos mostrados en estas notas, los lectores por extrapolación podrán imaginar otras posibilidades de personalización, para cubrir los requerimientos claves de cada negocio.
Los usuarios no técnicos, pueden apoyarse en sus consultores CAPATAZ, o su proveedor CAPATAZ, para consultar acerca de la posibilidad de modificación de los componentes de CAPATAZ existentes.
En forma extensiva, es posible personalizar cualquier componente SQL provisto por CAPATAZ.
Finalmente, es posible también, con pequeños cambios en los procedimientos planteados, crear nuevos componentes SQL consumibles luego desde CAPATAZ, mediante las posibilidades de personalización.
En otras notas, seguiremos mostrando estas características adicionales, existentes desde hace varios años en CAPATAZ Software.
No duden en consultarnos, no dejen de seguir las notas de blog.
 

Ver nota anterior:
Personalizaciones: Componentes SQL (parte 1 de 2) por Daniel Villarreal

The following two tabs change content below.

Daniel Villarreal

Gerente de Producto at CAPATAZ Software
Ingeniero Electrónico. Se desempeñó en empresas como Fiat Auto Argentina y Delphi, supervisando mantenimiento y producción. Desde 2005 es Gerente de Producto en CAPATAZ Software, coordinando diseño y desarrollo de producto, testing, análisis funcional, documentación, control de cambios e implementación.

Latest posts by Daniel Villarreal (see all)

Comments (2)

  1. […]   Fin del CASO DE USO I. Próxima entrega: CASO DE USO II y conclusiones. […]

  2. Excelente Daniel, muy bueno para lidiar con esos detalles que nos solicitan los distintos clientes; de esas pequeñas cosas que nos hacen falta agregar, propias de cada una de las empresas donde implementamos Capataz.
    Voy a comenzar a utilizarlo.

Comment here