Herramientas de usuario

Herramientas del sitio


ada:sicoferp:financiero:presupuesto:compromisos:rp_consulta

¡Esta es una revisión vieja del documento!


Compromisos - Consulta

La siguiente funcionalidad permite realizar la consulta de los compromisos.

Pestaña: Lista Compromisos

En esta pestaña se listan los compromisos.

Pestaña: Compromisos

En esta pestaña se encuentra la información asociada al compromiso

Contratos

Pestaña: Rubros

En esta pestaña se encuentra el rubro, la disponibilidad y el articulo que quedara asociado al compromiso.

Implementación del Botón "Exportar a PDF"

1. Propósito

Se ha implementado una funcionalidad que permite a los usuarios exportar los detalles de los registros consultados a formato PDF. Esta característica mejora la portabilidad y el archivo de los documentos generados por el sistema.

2. Módulos Afectados

La funcionalidad se ha agregado a las siguientes ventanas de consulta:

Disponibilidades (w_disponibilidad_cons) Compromisos (w_compromiso_cons) Recepciones de pedido (w_causacion_documento) Órdenes de pago (w_ordenes_pago_cons)

3. Componentes Técnicos Clave

La implementación se basa en los siguientes elementos de PowerBuilder:

Botón: cb_exportar_pdf Evento clicked: Llama a la función principal de generación de PDF. Función Principal: wf_generar_pdf() Responsabilidad: Contiene toda la lógica para iterar sobre los registros seleccionados, configurar las propiedades del PDF y generar los archivos.

4. Flujo de Ejecución

El proceso que sigue el sistema al hacer clic en el botón es el siguiente:

Verificación de Directorios: El sistema comprueba si la ruta C:\COMPROBANTES\[Modulo] existe. Si no, la crea. Iteración de Registros: Se recorre la lista principal (dw_lista) para identificar todas las filas que el usuario ha seleccionado. Preparación del DataStore: Para cada registro seleccionado: Se crea un uo_datastore en memoria. Se le asigna el DataObject del reporte correspondiente (ej: f_formato_documento(2, '01')). Se ejecuta el Retrieve() para cargar los datos específicos del registro. Configuración de Exportación a PDF: Se establecen las propiedades del DataWindow para la correcta generación del PDF. Este es el paso más crítico. Generación del Archivo: Se invoca la función ldw_dw.SaveAs(ls_pathfilename, PDF!, TRUE). Notificación: Al finalizar el bucle, se informa al usuario si la exportación fue exitosa o si no se seleccionó ningún registro.

5. Configuración Técnica y Dependencias (¡Muy Importante!)

Para que la exportación a PDF funcione correctamente en los equipos de los usuarios, se deben cumplir los siguientes requisitos, ya que se utiliza el método Distill!.

Método de Exportación: DataWindow.Export.PDF.Method = Distill!

Este método utiliza un motor externo para “destilar” un archivo PostScript a PDF, lo que ofrece alta fidelidad con el diseño original. Dependencia 1: Ghostscript

Requisito: Debe estar instalado en cada máquina cliente que vaya a utilizar esta funcionalidad. Configuración: La carpeta bin de la instalación de Ghostscript (que contiene gswin32c.exe) debe estar agregada a la variable de entorno PATH del sistema. De lo contrario, PowerBuilder no lo encontrará y el SaveAs devolverá un error -1. Dependencia 2: Impresora Virtual “Sybase DataWindow PS”

Requisito: Debe existir una impresora con el nombre exacto Sybase DataWindow PS. Instalación Manual: Ir a Dispositivos e Impresoras y Agregar una impresora. Seleccionar “Agregar una impresora local o de red con configuración manual”. Elegir “Usar un puerto existente” y seleccionar FILE: (Imprimir a un archivo). Seleccionar un controlador (driver) PostScript (PS). Uno genérico como HP LaserJet 2200 Series PS es una opción segura. Asignar el nombre exacto: Sybase DataWindow PS. No compartirla y finalizar la instalación.

6. Solución a Problemas Comunes Implementada en el Código

Durante el desarrollo, se encontraron y solucionaron los siguientes inconvenientes:

Problema: El contenido del reporte se cortaba horizontalmente, generando una segunda página en blanco a la derecha. Causa: Discrepancias entre el tamaño de papel del diseño del DataWindow y la configuración de la impresora virtual o los márgenes por defecto del motor de PDF. Solución: Se realiza configuración con la resolución de la pantalla para que permita la exportación correcta resolución de 1366 x 768.

continuación, se muestra el fragmento de código relevante de la función wf_generar_pdf en w_causacion_documentos.srw:

String ls_tipo, ls_ruta, ls_pathfilename,ls_valor,ls_estado long ll_selected, ll_count, ll_reintentos, ll_filesize, i, ll_estado_valido Decimal ld_cod_documento, ld_consecutivo_recep_pedido integer li_ret

uo_datastore ldw_dw ldw_dw = Create uo_datastore

ll_count = carpeta.pagina1.dw_lista.RowCount() ll_selected = 0

ls_ruta = “C:\COMPROBANTES\Causaciones” IF NOT DirectoryExists(“C:\COMPROBANTES”) THEN CreateDirectory(“C:\COMPROBANTES”) IF NOT DirectoryExists(ls_ruta) THEN CreateDirectory(ls_ruta)

FOR i = 1 TO ll_count

ll_estado_valido = 0
ld_consecutivo_recep_pedido = carpeta.pagina1.dw_lista.GetItemDecimal(i, "consecutivo")
ls_estado = carpeta.pagina1.dw_lista.GetItemString(i, "estado")	

IF carpeta.pagina1.dw_lista.IsSelected(i) AND ld_consecutivo_recep_pedido <> 0   THEN
	
	IF ls_estado = 'Y' or ls_estado = 'P' or ls_estado = 'p'   THEN
		MessageBox("Error", "No se pudo exportar la causación: " + String(ld_consecutivo_recep_pedido) &
		+ " El estado actual no es válido para este proceso.")  
		ll_estado_valido = 1
	END IF

	ld_cod_documento = carpeta.pagina1.dw_lista.GetItemDecimal(i, "codigo_documento")
			  
		guo_app.of_sql_embedded_context( sqlca )
		 SELECT VALOR_ALFA
			 INTO :ls_valor
			FROM M_CONSTANTES
		 WHERE TRIM(DESCRIPCION) = 'CAUSACION CONTABLE'
		  USING SQLCA;
		 
			ldw_dw.DataObject = ls_valor // f_formato_documento(4, '01')

			ldw_dw.SetTransObject(ts_transaccion)
			li_ret = ldw_dw.Retrieve(ld_cod_documento)     

			ls_pathfilename = ls_ruta + "\CXP" +' '+ String(ld_consecutivo_recep_pedido) + ".pdf"
			ldw_dw.Object.DataWindow.Export.PDF.Method = Distill!
			ldw_dw.Object.DataWindow.Printer = "Sybase DataWindow PS"
			ldw_dw.Modify("DataWindow.PDF.XSLFOP.Print=NO")
			ldw_dw.object.DataWindow.Export.PDF.Distill.CustomPostScript = "YES"		

			li_ret = ldw_dw.SaveAs(ls_pathfilename, PDF!, TRUE)

			IF li_ret <> 1 OR ll_estado_valido = 1 THEN
				MessageBox("Error", "No se pudo exportar la recepción de pedido: " + String(ld_consecutivo_recep_pedido))           
			END IF  
			ll_selected++  
	END IF
NEXT

IF ll_selected > 0 THEN

MessageBox("Información", "Se finalizó la exportación.")

ELSE

	MessageBox("Sin acción", "No se seleccionó ningún documento válido para ser exportado.")

END IF

RETURN 1

Desarrollado por: [Miguel Muñoz] Fecha: [02/07/2026] Versión de PB: 12.5

Inclusión de Código CPC DANE - Reporte de Compromisos

1. Descripción del Cambio

Se integró el campo “Código CPC DANE” en el reporte de detalles de compromiso. Para lograr una visualización limpia, se optimizó el diseño del reporte ocultando espacios innecesarios y priorizando la aparición de este nuevo dato.

2. Solución Funcional

Nueva Información: Ahora el reporte muestra el Código CPC DANE asociado a los artículos del compromiso, un dato necesario para la clasificación y reportes de la entidad. Mejora Visual: Se ajustó el diseño del reporte para ocultar campos que estaban en blanco o sin uso. Esto permitió liberar espacio y “pintar” el nuevo código de forma clara y ordenada sin saturar el documento.

3. Solución Técnica

Librería Modificada: sf01cmps.pbl Objeto Modificado: DataWindow r_compromiso_doc_det_cefit Detalles del Cambio: Consulta SQL: Se modificó la sentencia SQL del DataWindow para incluir un nuevo campo proveniente de la tabla maestra de artículos: MAESTRO_ARTICULOS.CODIGO_DANE. Ajuste de Layout: En el diseñador del DataWindow, se reorganizaron los objetos. Se ocultaron los campos que no contenían información para posicionar y hacer visible el nuevo campo de código DANE en el espacio recuperado.

4. Datos del Objeto

Módulo: [Nombre del Módulo, ej: Compras / Almacén] Reporte: Detalle de Compromisos (CEFIT). DataWindow: r_compromiso_doc_det_cefit.

ada/sicoferp/financiero/presupuesto/compromisos/rp_consulta.1784064463.txt.gz · Última modificación: 2026/07/14 21:27 por 192.168.175.197