Hola a todos,
Siguiendo con el desarrollo de la aplicación Edit in place, continuamos agregándoles más truquitos a nuestro sistema de facturación.
En este post le voy a agregar los siguientes puntos:
1) Una Ventanita Inicializadora
2) Un control para la notificación de factura impresa
3) Un Control para saber si una factura es Original o es una copia
4) Un procedimiento de Membresía
5) Las Vistas en clarión, este tema por ser un poco largo será trato en un post exclusivo,
esperelo en nuestro proximo tema.
Una Ventanita Inicializadora
Es aquella que inicia el sistema con un mensaje de espera, o como usted quiera llamarlo, lo que me interesa es que usted aprenda como hacer esto. Para eso me posiciono en el menú del frame o pantalla del menú presionamos embeds, Local data, Windows Structure, así como se ve en la imagen.
Para crear la ventanita desde Windows Structure entre al source luego presione la tecla de Ctrl. + F, inmediatamente le va a presentar una ventana para que elija el tipo de ventana a diseñar, escoja la primera opción, así como se ve en la imagen.
.
Déle el tamaño que mejor le parezca a su ventanita Inicializadora, luego agréguele el mensaje que usted quiere que diga, yo en mi caso le puse este: Inicializando Sistema, Espere por favor, ahora guarde los cambios, le debe haberle quedado así como se observa en la imagen.
Luego de haber creado la estructura de la ventanita, váyase al init de la ventana del Frame en el Inicializer Procedure coloque el siguiente código.
Código: Seleccionar todo
!Inicialize the Procedure PP 6,400
SETCURSOR(Cursor:Wait)
OPEN(VentanaInicializadora)
ACCEPT
IF EVENT() = Event:OpenWindow
Código: Seleccionar todo
!Este codigo va en el init, Open Files Pp7,800
Acerca1() ! Llamando Splah
POST(EVENT:CloseWindow)
END
END
CLOSE(VentanaInicializadora )
SETCURSOR()
Control para la notificación de una factura impresa
Ahora le voy agregar a nuestro sistema de facturación un control para la notificación de una Factura Impresa, para hacer esto debemos entrar a nuestro diccionario y en la tabla de factura creamos un nuevo campo llamado ControlImpresion sería un Long(1) luego, grabe y déle convert a la tabla de factura para que asuma los cambio, volvamos a nuestra aplicación.
Ahora vamos al reporte de la factura, si ya lo tiene hecho le recomiendo mejor que se cree otro botón de reporte para que haga otra copia, Para que coloque los códigos de lugar en el nuevo reporte. Este código yo lo voy a poner en puntos legancy, ya usted lo puede reubicar donde mejor le parezca, para eso me voy al botón del menú y seleccionó el icono de legancy, ahí pongo los códigos, así como se observan la imagen.
luego ubicamos el primer punto, After Opening Reporte, ahí colocamos este código.
Código: Seleccionar todo
!After Opening Reporte
FAC:ControlImpresion=1
Put(Factura)
Thiswindow.reset(true)
Código: Seleccionar todo
!Before Opening the Window
If FAC:ControlImpresion=>1 Then
Message('Este Nro. de Factura ya fue Impreso','Aviso de Impresion',ICON:HAND)
RETURN Level:Notify
End !if
Control para saber si una factura es Original o es una copia
Ahora a nuestro sistema le agregaré un control, para saber si una factura es original o es una copia. En varios foros de clarión es visto haciendo esta misma pregunta sobre este tema, en la mayoría está sin repuesta o con una respuesta a media.
¿Cómo saber que una factura en un reporte es original o una copia?.
Hoy quiero dar una repuesta clara y precisa a este tema, no te desespere solo les pido que sean humildes y sigan los pasos.
Aclaración Importante
Para que no se confunda con el punto anteriormente descrito,Control de notificación de factura impresa, con este nuevo control que voy a crear, les recomiendo que deben crear otro botón de reporte y hacer una copia del anterior reporte de factura, por favor a esta copia quíteles los códigos que utilizo anteriormente, con esto ahorramos tiempo y comenzamos desde cero, para que se puedan ver los efectos.
Comencemos a crear el nuevo control de original o copia en una factura. Para hacer esto vamos a utilizar los campos anteriores que utilizamos en el punto anterior, este campo fue ControlImpresion sería Long(1).
Al nuevo botón de reporte yo lo voy a llamar “otro Reporte”, y le agrego una copia del anterior reporte, les voy a quitar los códigos que utilice anteriormente en el reporte, luego voy a crear un campo de memoria global llamado Glo:reporte sería un long (1),Al procedimiento lo voy a llamar OtroReporte. Ahora en el aceptar del botón, en el Control event handling, alter generanted source, aquí colocamos el siguiente código.
Código: Seleccionar todo
!Control Reporte
FAC:ControlImpresion = FAC:NumeroFactura
If Glo:Reporte=1
FAC:ControlImpresion+=1
end
ThisWindow.Reset(TRUE)
Ahora entramos al reporte y creamos tres campos de memoria local,
Loc:MensajeImpresion String (70) ! Despliega mensaje de original o copia
Loc:NoImpresion long (3) ! Contador de Impresión
Loc:Veces String(8) ! Mensaje de veces
Luego de haber creado estos campos, entonces entramos en embeds, en el Window manager (Reporte Manager) en el init initialized the procedure aquí coloque el siguiente código.
Código: Seleccionar todo
!El Init, inicializando procedimiento
FAC:ControlImpresion = FAC:ControlImpresion +1
Put(Factura)
ThisWindow.reset(true)
Código: Seleccionar todo
!Mesanje de Impresion
IF FAC:ControlImpresion = 1
Report$?Loc:MensajeImpresion {prop:hide} =true
Report$?Vece{prop:hide} =true
MensajeImpresion = ' Esta Salida es Original'
Else
MensajeImpresion = 'Esta Salida es una Copia se ha Impreso'
Vece='Veces'
End
IF SAL:ControlImpresion = 1
NoImpresion = 0
ELSE
NoImpresion = SAL:ControlImpresion
END
Si usted siguió los pasos tal como fueron descrito de seguro que su reporte quedó como
Se muestra la siguiente imagen
Termino aquí este truquito.
Un Procedimiento de Membresía
Yo no se como usted lo puede llamar en su país, en mi país yo lo llamo procedimiento de membresía, es aquel donde se guardan los datos de un negocio, esos datos son:
El nombre, el Eslogan, la Dirección, el Sector Barrio, la Ciudad y los Teléfonos.
Para eso creo un procedimiento de un solo registro para guarda esta información. Usted quizás se pregunte que importancia tiene esto, tiene una gran importancia por que guarda los datos relacionado con la empresa, ya con los datos guardado podemos ponerlos en todos los reportes del sistema.
Ahora voy hacer este truquito para que ustedes tengan una idea, por favor lo invito una vez más a que siga los pasos.
1- Crea estructura de tabla Membresía
Primeramente volvemos al diccionario de datos y creamos ahí una tabla que llamaremos Membresía.
Con la siguiente estructura que puede ser así o como a usted le guste.
Titulo1 String(100)
Titulo2 String(100)
Titulo3 String(100)
Titulo4 String(60)
Titulo5 String(100)
Titulo6 String(100)
También puede ser este modelo, de otra manera de hacer la membresía.
Nombre empresa String(100)
Eslogan Stringo(150) ¡Un para guardar el slogan
Dirección String(100)
SectorBario String(50)
Ciudad String(50)
Email: String(100)
Telefonos String(100)
Si usted quiere le pone una llave aunque sea al primer campo, si desea la puede dejar así, que le va a funcionar mucho mejor. Ahora guarde su diccionario váyase a la aplicación.
2-Creando Procedimiento Membresía
Ahora entramos al menú de nuestro sistema de facturación y creamos un opción llamada Configuraciones en esta creamos un item llamado Membresía, grabamos
Y diseñamos el procedimiento usando la tabla Membresía.
3- Modificando una tabla con un único registro
Si ya hizo su diseño y creo un browse con su formulario, así como se muestra en la siguiente imagen.
Yo le recomiendo que borre el browse y conserve el formulario por que con él es que vamos trabajar. Ahora vamos a crear un procedimiento para modificar una tabla con solo registro, pero primero debemos colocar el formulario en el procedimiento
Donde iba el Browse y desde ahí modifíquelo a su gusto talvez le quedo así como se observa en la imagen.
4- Colocándoles los códigos al formulario
Ahora procedemos a colocarles los códigos de lugar a este procedimientos, entramos en el embids de la ventana y nos vamos al Window manager,en el Init de la misma en el primer punto que dice “Enter Procedure scope” Prioridad 4,900 ahí ponemos este código.
Código: Seleccionar todo
GlobalRequest = ChangeRecord
Código: Seleccionar todo
!Inicializando tabla Membresia
Set(Membresia)
IF access:Membresia.Next()
access:Membresia.Insert()
END
5- Agregando los datos de membresía a un reporte o una Ventana
Ahora quiero enseñarle a poner los datos de la tabla membresía a un reporte, o a una ventana, solo lo voy hacer para el reporte, usted se encarga de ponerlos en la ventana es el mismo procedimientos para ambos.
Lo Primero que debemos hacer es entrar al reporte y poner la tabla membresía en el esquemático en otra tabla. Luego entramos al reporte en la parte de encabezado ahí
Colocamos los campos de dicha tabla, así como se observa en la imagen.
.
Ahora guarde los cambio hecho en su reporte y vayamos a colocar los códigos necesarios, hay varios punto donde usted puede poner este código, puede ser el Window Manager, en el Init, Open files, y también el Open PROCEDURE(*Windw, pWindow,<*Window pwoner),Virtual, aqui functiona muy bien para ventana. Yo en lo personal me gusta poner este código en el Next del reporte sería así:
Next (PROCEDURE(), Byts,Virtual después del parent, este código se coloca en todos los reporte que interviene en su sistema.
Código: Seleccionar todo
!Inicializando Membresía
SET(Membresía)
Access:Membresia.Next()
CONTINUARA
En mi próxima entrega estaré hablando con el tema: Creando Vistas en tabla tps de clarion, será uno de los mejores post que he publicado, por que les cambiará el estilo de hacer consultas en tablas con clarion.
Que Dios continué bendiciendo su vida y recuerden,
Que Cristo murio por todos nosotros y un dia nos quiere ver en su reino.
Bendiciones