Ejemplos Básicos
Ejemplos para el desarrollo de módulos o funcionalidades específicas
Unir archivos PDF
El framework incorpora una librería php que permite UNIR archivos PDF. Solo es necesario utilizar el archivo lib/pdf/mergepdf.php y enviarle por variable GET los archivos a unir.
Enlace:
https://sistema.soemgroup.com.ar/lib/pdf/mergepdf.php?get=all&$files
Tambien puede ser utilizado como fuente de una etiqueta embed (para mostrar el pdf en dentro de la ventana principal del sistema)
Enlazar flexCombo con un flexForm
Para habilitar la opción de agregar un boton al lado de un flexcombo que permita acceder al formulario relacionado al mismo (por ejemplo, en un flexCombo de clientes, que permite acceder al formulario de alta y/o modificación de un cliente) es necesario establecer la variable "urlInterfaz".
En el formulario (php), es necesario agregar la siguiente modificación (al código de la plantilla general)
$fflex = $ _POST['fflex'];
if($fflex=="")
$fflex = "grid";
$reloadCallback="
{id: '$id_refresh',url:false, fflex:'$fflex', method:'post',vars:''},
";
Envio de Correos
Utilizando el modelo de módulos "envio de correos" se generan los archivos necesarios para realizar envios de correo con una plantilla básica.
Una vez generada la carpeta con los achivos básicos, solo es necesario agregar archivos nuevos por cada envio de correo de nuevo que se desee hacer.
Para realizar un envio de correo solo se deben setear las siguientes variables:
- Asunto: es el asunto que tendrá el correo
- titulo: es lo que se visualizar en la parte superior del correo (como encabezado)
- cuerpo: es lo que se visualizar como CUERPO del correo. La idea es que este texto (string) se arme de acuerdo a lo que se quiere enviar, con información recuperada de la base de datos. Por ejemplo: información de una venta, información de una compra, información del recibo de mercaderías, etc.
- firma: aquí se hace un file_get_contents del archivo html que contiene la firma
Notese que abajo de estas variables include ("bodymail.php"); Este archivo contiene el diseño (planitilla) del correo y utilizar las variables definidas mas arriba. Esta plantilla puede ser editada para cambiar colores, estructura, etc.
Luego, se debe completar los posibles contactos (cuentas de correo) a los que se le puede enviar el correo electrónico. Por ejemplo: listar contactos de un cliente o proveedor. Mas abajo se listan los usuarios del sistema para enviar una copia del mensaje a sus cuentas de correo.
Por ultimo, se deberá definir la cuenta que realiza el envio y el nombre del remitente. Tener en cuenta que esta cuenta deberá estar configurada en el modulo "Cuentas de Correo" del sistema en cuestión (para versiones > 3.4) o configurada en el config.php (para versiones <= 3.3)
Si se desea enviar un archivo adjunto en el mensaje, solo se debe cambiar la variable sysname_adjunto por el nombre de la variable que contenga la dirección relativa del archivo a enviar (por lo general, en media/uploads/...)
Generar archivo PDF
Para generar archivos PDF se puede utilizar alguna de las siguientes librerias:
- FPDF: http://www.fpdf.org/
Se debe incluir la librería de la siguiente forma: include_once "../../../lib/pdf/fpdf.php"; - TCPDF: https://tcpdf.org/
Se debe incluir la librería de la siguiente forma: include_once "../../../lib/TCPDF/tcpdf.php";
Exportar Excel con formato
Para exportar archivo Excel con formato se debe utilizar la libreria PHPExcel
- PHPExcel: https://github.com/PHPOffice/PHPExcel
Se debe incluir la librería de la siguiente forma:
require_once "../../../lib/PHPExcel/PHPExcel.php";
require_once "../../../lib/PHPExcel/PHPExcel/IOFactory.php";
Barcode
define('IN_CB',true);
include_once "../../../lib/barcode/index.php";
include_once "../../../lib/barcode/FColor.php";
include_once "../../../lib/barcode/BarCode.php";
include_once "../../../lib/barcode/FDrawing.php";
// barcode technology
include_once "../../../lib/barcode/code128.barcode.php";
$color_black = new FColor(0,0,0);
$color_white = new FColor(255,255,255);
$code_generated = new code128(20,$color_black,$color_white,1,$codigo_barra_numero,2);
$drawing = new FDrawing(1024,1024,'../../../media/barcodes/barcode_'.$codigo_barra_numero.'.png',$color_white);
Bloquear un módulo según una variable global
Incluir el archivo php en cada archivo php inicial de un modulo.
En el archivo exampleBockMod.php, se deberá ejecutar el control (de acuerdo a las necesidades)
<?php // file exampleBockMod.php $idMod=$_POST["idMod"]; // ID DEL MODULO $sessionIdMenu=$_SESSION['sessionIdMenu']; // ID del cliente/organismo/efector generado en MENU.PHP // consulta a la BD (tabla propia a generar en cada sistema segun necesidades) $qr="select * from table_config_mod where sessionIdMenu=$sessionIdMenu and rela_flxcore01=$idMod"; $result = flex_query($qr,$link_msq); if(!$row = flex_fetch_assoc($result)) // si el modulo NO esta habilitado { echo "<div class='notification error'> <span class='strong'>Error:</span> El módulo no se encuentra habilitado para el cliente/organismo/efector </div>"; exit; } ?>
Permitir el acceso publico de un archivo/reporte
En el caso que se quiera publicar el acceso a un archivo o reporte (pdf, html, etc) se debe codificar el acceso para garantizar la seguridad.
El formato de la URL publica debería ser https://[SUBDOMINIO]/[PATH_RELATIVO_SIGNIFICATIVO]/[ID]/[CLAVE_ACCESO CODIFICADO] donde
- [SUBDOMINIO] debería ser un dominio o subdominio preferentemente distinto a donde esta alojado el sistema.
- [PATH_RELATIVO_SIGNIFICATIVO] debería ser un path para fácil identificar el acceso. El mismo no debe repetirse en el mismo sitio
- [ID] es opcional, es el ID del registro u algun otro campo para garantizar el no duplicado de la clave de acceso.
- [CLAVE_ACCESO CODIFICADO] es la clave codificada para acceder al archivo
A nivel servidor web es necesario crear la regla REWRITE para la nueva entrada (solicitar a área de gestión de servidores)
A nivel aplicación, se debe hacer un archivo como el siguiente código de ejemplo:
$ id_sysejem01=$ _GET["id"]; $ qr="Select * from sys_ejem_01_cab_reporte |
Para la generación del código se puede usar cualquier el generador que deseen.
Ejemplo básico.
function generarCodigoAlfanumerico($ id,$ longitud = 10) { $ caracteres = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $ codigo = ''; $ max = strlen($ caracteres) - 1; for ($ i = 0; $ i < $ longitud; $ i++) { $ codigo .= $ caracteres[random_int(0, $ max)]; } return md5($ id. "-".$ codigo); } |
En casos que se requiera mayor seguridad se puede usar funciones de encriptado y desencriptado de la URL.
En el caso se necesite dar un tiempo de vida a la URL, se puede usar una cadena de expiración en el dato encriptado para verificar la caducidad de la URL.
Consultar a equipo técnico por esos ejemplos.