Blog en el cual se emitirán temas relacionados a lenguajes de programación en modo básico y a la instalación de programas y consejos de los mismos para una mejor experiencia del usuario básico o intermedio.

Debug PHP con NetBeans y XAMPP





Cuando iniciamos algún proyecto PHP es muy común hacer nuestras pruebas con echo $variable; print_r($variable); o var_dump($variable), si tienes una herramienta como NetBeans tienes que conocer esta funcionalidad: Como Debugear con NetBeans IDE.



Aquí daremos a conocer como configurar nuestro XAMPP y NetBeans para debugear las variables.

PRIMER PASO
Si tienes corriendo apache, debemos deterner el servicio.


Luego debemos abrir php.ini, como indicamos en la imagen siguiente:


Las líneas a modificar son las siguientes:


Una vez que tenemos estas configuraciones volvemos a iniciar Apache:


Ahora podemos configurar nuestro IDE NetBeans



SEGUNDO PASO
Abrimos Herramientas - Propiedades


Y en la pestaña general confirmamos los siguientes datos:


luego...

Aplicamos y seleccionamos OK

Ahora tenemos que indicar en nuestro proyecto donde iniciará el debug.


Project URL es la ruta de tu proyecto, si tienes configurado algún puesto, como es mi caso, también debes incluir el puerto que utilizas.
Index File: especificar en que archivo iniciar el debug, por lo general se pone index.php pero para el ejemplo utilizaremos el script que indicamos en la imagen.

Confirmamos con OK.

Luego iniciamos el Debug.

Recordar que debemos indicar en que los beakpoint para detener el debug y verificar las variables, como se muestra en la siguiente imagen.


como podemos observar la variable $fechaHoy  el tipo de dato es string y el dato es 2016-08-20

y para continuar debugueando línea por línes utilizar las herramientas siguientes:


Sistema de Parqueo


Sistema de parque de vehículos, registra el ingreso y salida de vehículos a una cochera.


  • Estos registros cuentan con un estado "Libre" u "Ocupado".
  • Puede modificar el número de cochera en el que se encuentra
  • Al marcar salida puede realizar dos tipos de cobro: por día o por Noche, esto se debe a que las tarifas son distintos en estos turnos
  • Las tarifas dependen del tipo de vehículo
  • Luego de Marcar Salida deberá Generar Ticket para que cambie el estado de Ocupado a Libre
  • Al Generar Ticket puede imprimir y luego "Liberar Nro de Cochera", solo así cambiará el el estado a Libre
  • También puede Generar Reportes, esto es del lado administrador


usuario: pepito
contraseña: www.millergomez.com

Vtiger 5.4 Flujo de Trabajo Tarea Ejecutar Función


EJECUTAR UNA FUNCIÓN DESDE UN SCRIPT PHP EN VTIGER

Sabemos que los WorkFlow de Vtiger son de mucha ayuda desde el lado back, sin embargo hay funciones "extras" que el cliente nos sugiere, por ejemplo: Al actualizar un status del módulo SalesOrder cambiar el campo account_type del módulo de Account.


Los pasos a realizar en adelante será lo mismo para cualquier módulo.

Insertar data en tablas vtiger de forma manual

Para lecturar la funcionalidad en el workflow debemos tener en cuenta en qué módulo de vtiger iremos a ejecutar esto. y para ello debemos realizar el siguiente paso según la imagen.

Donde:

  • workflowtasks_entitymethod_id : es el id de la tabla com_vtiger_workflowtasks_entitymethod.
  • module_name : es el módulo desde donde se ejecutará (desde donde empieza la funcionalidad).
  • method_name : es el nombre del método que aparecerá en el sistema de vtiger
  • function_path : es la ruta desde donde se ejecutará el script
  • function_name : es el nombre de la función del fichero (function_path), eso quiere decir que dentro del mismo fichero puedes crear más de una función.



Donde:

  • id : es el último registro de la tabla anterior

Crear un nuevo flujo de trabajo desde la interfaz de vtiger

Con el paso anterior se ha logrado que el nombre de la función esté disponible para cuando nos toque crear una nueva funcionalidad.

Ahora nos dirigimos a la Configuración CRM de vtiger y realizaremos los pasos que nos indique la imagen:

Estos datos señalados con flechas rojas serán para este ejemplo: Si el campo status del módulo SalesOrder es Anulado entonces actualizaremos el campo account_type del módulo Account a Prospecto.

En seguida la nueva tarea será: Ejecutar Función

Solo nos faltaría crear el fichero [SalesOrderHandler.php] en la ruta que ingresamos en la tabla anterior. A continuación el script de ejemplo para nuestro caso.


Vtiger 5.4 Importar Módulos y Configuraciones



Para desarrollar alguna modificación en vtiger 5.4 debemos sacar una copia del proyecto en producción y de la base de datos. así que para una mejor comprensión a la copia llamaremos "PRUEBA" y al proyecto en producción llamaremos "ORIGINAL".


PASO 01:


Verificamos en la tabla vtiger_field de ambas base de datos ( bd_prueba y bd_original )



Esto para verificar el último registro de la tabla_original con referencia a la tabla_prueba, entonces nos servirá de guía para ir acoplando uno a uno los campos que faltan.
RECORDAR QUE podemos agregar los campos desde la interfaz de vtiger.




PASO 02: AGREGAR CAMPOS EN VTIGER


Verificamos que el siguiente registro que debemos hacer es la tabla vtiger_salesorderf pero lo haremos desde la interfaz, como mencionamos anteriormente.

La extensión o length del campo debemos verificar en la base de datos de prueba.

OJO si el orden no es el mismo que tiene en tu prueba, no es de que preocuparse pues esto al final podemos corregirlo en la misma Bd. Lo importante ahora es que la secuencia de la creación de FIELDs sean los mismos.




PASO 03: IMPORTAR MODULOS EN VTIGER


Descargar los módulos siguientes: Reglasdecomision.zip y Comisiones.zip
Nos dirigimos a: Configuración CRM -> Administrador de Módulos -> Módulos Personalizados -> Importar Nuevo

Importamos el primer módulos según la tabla vtiger_field comenzaremos por Reglasdecomision.zip:




PASO 04:


Si usted cree conveniente puede ingresar un nuevo registro en el módulo nuevo importado.




PASO 05:


CONTINUANDO  CON LA COMPARACIÓN entre las tablas vtiger_field de la bd_prueba y la “bd_original” podemos constatar que ahora podemos importar el módulo de comisiones.

Ahora ya tenemos instalados nuestros 2 módulos


Pero recuerda que aún tenemos que agregar más FIELDs




PASO 06:

Agregar tipo_usuario  en la tabla vtiger_users de forma manual
Este campo: tipo_usuario agregar tanto en la tabla vtiger_users como en vtiger_field 

vtiger_field:
29|XXX|tipo_usuario|vtiger_users|1|16|tipo_usuario|Tipo de Usuario|1|0|100|16|77|1|V~O|1|BAS|1

Donde XXX es el número siguiente del registro anterior.

vtiger_users:
agregar tipo_usuario varchar 20




PASO 07: IMPORTAR TABLAS A LA BASE DE DATOS VTIGER

Descargar las siguientes tablas: vtiger_tipo_usuario y vtiger_tipo_usuario_seq y desde tu administrador de bd que prefieres importar estas tablas.




PASO 08: CREAR NUEVO BLOQUE EN VTIGER

Primero modificaremos la tabla vtiger_field el registro siguiente:

14|183|commissionrate| vtiger_products|1|9|commissionrate|Comision Spiff|1|2|100|6|32|1|N~O|...

Modificar solo lo resaltado

Segundo crearemos un bloque con los sientes campos




PASO 09:

Remplazar los siguientes archivos que se modificaron con los nuevos requerimientos:


$path{}/GeneradorDeComisiones.php
$path{}/WSVtiger.php
$path{}/modules/SalesOrder/DetailView.php

$path{}/modules/SalesOrder/EditView.php

$path{}/modules/Comisiones/reporte.php
$path{}/modules/Comisiones/reporteDetail.php
$path{}/Smarty/templates/Buttons_List.tpl
$path{}/Smarty/templates/DetailView.tpl
$path{}/Smarty/templates/Inventory/InventoryActions.tpl
$path{}/vtlib/Vtiger/PDF/inventory/ContentViewer.php


Clic aquí para descargar todos.



PASO 10: AGREGAR PRIVILEGIOS DE ACCESO EN VTIGER



Vtiger 5.4 ejemplo de FLujo de Trabajo


Creación de Flujo de Trabajo con Vtiger 5.4 para cálculo de porcentaje de canje para módulo de Cotizaciones.



  1. Login con Usuario administrador
  2. Ir a Configuración
  3. Ir a Flujos de Trabajo
  4. Seleccionar - Nuevo Flujo de Trabajo
    1. Seleccionar - Para Módulo
    2. Crear un flujo de trabajo para: Cotizaciones
  5. En la nueva ventana agregar como descripción: calcula porcentaje de canje
  6. Cuando ejecutar el flujo de trabajo: Cada vez que se guarda la entidad.
  7. Condiciones



  1. Tareas - Seleccionar - Nueva Tarea - Actualizar Campos
  2. Resumen - Tarea - Descripción: obtiene porcentaje de canje
  3. Opeciones de la tarea .


    EJEMPLO PARA CREAR UN FLUJO DE TRABAJO



UPDATE al Comparar Dos Tablas en Mysql



Caso: Un cliente solicita actualizar todos los proveedores antiguos de ciertos productos como: bebidas, caramelos, etc. para ello nos entregan una lista en excel y el código del nuevo proveedor es 777

Libro1.xlsx
--------------------------------------
producto_cod | producto_name
--------------------------------------
333                   | Producto 1
444                   | Producto 2
555                   | Producto 3
111                   | Producto 4
222                   | Producto 5

y una lista "muy grande" digamos que 400  productos para cambiar de proveedor.

Una solución "rápida" que se le puede dar, en mi opinión, es pasar esta hoja excel a una tabla en tu base de datos; a la tabla la llamaremos cambios 

Resulta que en su tabla "productos_comprados" es de la siguiente manera:
--------------------------------------------------------------------
procom_id | proveedor_id | producto_id | fecha_compra
--------------------------------------------------------------------
1                | 344                 | 555              | 2015-03-10
2                | 345                 | 333              | 2015-03-10
3                | 345                 | 567              | 2015-03-10
4                | 345                 | 444              | 2015-03-10
5                | 344                 | 567              | 2015-03-10
6                | 345                 | 567              | 2015-03-10
7                | 344                 555              | 2015-03-10
8                | 345                 | 333              | 2015-03-10
9                | 345                 | 567              | 2015-03-10
10              | 345                 | 444              | 2015-03-10
11              | 344                 | 567              | 2015-03-10
12              | 345                 222              | 2015-03-10

entonces ya tenemos las dos tablas para ejecutar el UPDATE

Luego de ejecutar nuestra consulta UPDATE quedaría así nuestra tabla productos_comprados:
--------------------------------------------------------------------
procom_id | proveedor_id | producto_id | fecha_compra
--------------------------------------------------------------------
1                | 344                 | 555              | 2015-03-10
2                | 777                 333              | 2015-03-10
3                | 345                 | 567              | 2015-03-10
4                | 777                 444              | 2015-03-10
5                | 344                 | 567              | 2015-03-10
6                | 345                 | 567              | 2015-03-10
7                | 777                 555              | 2015-03-10
8                | 777                 333              | 2015-03-10
9                | 345                 | 567              | 2015-03-10
10              | 777                 444              | 2015-03-10
11              | 344                 | 567              | 2015-03-10
12              | 777                 222              | 2015-03-10

Portal de Comercio Electrónico





Este es un Portal de Comercio Electrónico donde los vendedores pueden registrar sus productos, estos productos son mostrados en el portal (la web) donde los clientes pueden visualizar cada detalle de los productos registrados.


El cliente, necesariamente tiene que estar registrado para poder procesar su carrito de compras. El carrito de compras incluye un costo de envío, este costo es calculado en base a la dirección del cliente en referencia a la ubicación de los proveedores (Trujillo - Perú).

Este portal consta de múltiples vendedores pero al momento que el cliente registra una compra solo se tendrá un solo recibo. desde el panel de administración se puede realizar las divisiones de las ganancias o costos generados por envíos para cada vendedor.