Agregando campos extra a la informacion de la empresa…

He tenido que agregar un campo para la informacion de la empresa en mi instalacion de Vtiger. En mi caso, la empresa lleva un RFC, pero vtiger permite agregar solo informacion especifica y limitada al momento de que deseemos guardar, esto se hace entrando a Vtiger, en el menu “configuracion”->” Información de la Empresa ” y los campos que nos muestra son por ejemplo:

  • Nombre de la empresa
  • Logo
  • Pais
  • Telefono
  • website
  • etc. etc

Pero no tiene campos como RFC, No. Cuenta del banco,.. etc. Y cuando queremos agregar esa informacion que podriamos utilizar en reportes, o alguna personalizacion que deseemos realizar de cualquier tipo, entonces nos tenemos que limitar a agregarlo directamente solo en codigo manualmente. Para evitar esto me he decidido a dar un ejemplo de como agregar un campo extra llamado “RFC” a nuestra configuracion.

************ Agregar Campos de datos para la informacion de Empresa *********************

Tabla de la BD involucrada:

  • vtiger_organizationdetails

Aqui se guardan los datos de la empresa.

Archivos involucrados:

  • modules/Settings/EditCompanyDetails.php, modules/Settings/OrganizationConfig.php, modules/Settings/add2db.php, modules/Settings/language/xx_xx.lang.php
  • Smarty/templates/Settings/CompanyInfo.tpl, Smarty/templates/Settings/EditCompanyInfo.tpl

Agregar campos extra para datos de organizacion:
Para este ejemplo, agregaremos un campo para guardar el RFC (Registro Federal de Contribuyentes) que le corresponde a la empresa.

  1. Entonces primeramente se deben crear los campos necesarios en la tabla involucrada de la base de datos vtiger_organizationdetails (vista anteriormente).
ALTER TABLE vtiger_organizationdetails ADD COLUMN `rfc` VARCHAR(45)

Despues hay que agregar las lineas de codigo siguientes a los diferentes archivos involucrados:

Agregar los campos a las plantillas HTML

Archivos: Smarty/templates/Settings/CompanyInfo.tpl, Smarty/templates/Settings/EditCompanyInfo.tpl

  • En Smarty/templates/Settings/CompanyInfo.tpl

Linea: 94 (Aproximadamente)

<tr>
    <td><strong>{$MOD.LBL_ORGANIZATION_RFC}</strong></td>
    <td>{$ORGANIZATIONRFC}</td>
</tr>

Esto agrega una celda (con el valor del nuevo campo rfc) a la tabla que muestra la informacion de la empresa que actualmente esta guardado en la Base de Datos.

  • En Smarty/templates/Settings/EditCompanyInfo.tpl

Linea: 112 (Aproximadamente)

<tr>
    <td><strong>{$MOD.LBL_ORGANIZATION_RFC}</strong></td>
    <td><input type="text" name="organization_rfc" value="{$ORGANIZATIONRFC}"></td>
</tr>

Aqui hemos agregado un “Textfield” al formulario en donde la informacion de la empresa es modificada o agregada. Dicho “TextField” corresponde por supuesto al nuevo campo RFC que estamos agregando.

Hasta aqui ya estan listos los campos en las plantillas.

Ahora lo siguiente es agregar el codigo necesario para que vtiger tome en cuenta nuestro nuevo campo y con esto poder mostrarlo en la vista de datos, asi como en la vista de edicion y permitir que vtiger guarde en la base de datos el dato que escribamos en el formulario.

Agregando la funcionalidad  a Scripts PHP

Para esto tendremos que modificar los archivos:  modules/Settings/EditCompanyDetails.php, modules/Settings/OrganizationConfig.php, modules/Settings/add2db.php, modules/Settings/language/xx_xx.lang.php

  • En modules/Settings/OrganizationConfig.php Agregar:

-Linea: 36 (Aproximadamente)

$organization_rfc = $adb->query_result($result,0,'rfc');

Aqui hemos asignamos una variable $organization_rfc la cual obtiene el dato guardado en la base de datos.

-Linea: 66 (Aprox.)


if (isset($organization_rfc))
      $smarty->assign("ORGANIZATIONRFC",$organization_rfc);

Con estas lineas hemos asignado a la plantilla el valor obtenido en $organization_rfc para que sea mostrado.

  • En modules/Settings/EditCompanyDetails.php Agregar:

-Linea: 56 (Aprox.) Agregar:

$organization_rfc= $adb->query_result($result,0,'rfc');

Esto guarda en la variable $organization_rfc el dato actuelmente guardado en la base de datos.

-Linea: 85 (Aprox.) Agregar:

if (isset($organization_rfc))
    $smarty->assign("ORGANIZATIONRFC",$organization_rfc);

Con las lineas anteriores asignamos  el valor de $organization_rfc, si es que ya hubiera un dato guardado, al formulario de edicion de datos de la empresa en la plentilla .tpl.

  • En el archivo modules/Settings/add2bd.php debemos agregar el codigo necesario para guardar o actualizar los datos que sean enviados mediente el formulario de Edicion de la Info de la empresa.

-Linea: 101 (Aprox.) debemos agregar dentro del bloque if($saveflag==”true”):

$organization_rfc=from_html($_REQUEST['organization_rfc']);

Con esta linea obtenemos el valor que proviene del formulario de Edicion de Info de la empresa, y lo guardamos en la variable $organization_rfc.

-Linea: 113 (Aprox). Modificar la consulta INSERT para agregar el nuevo campo RFC, y agregar la variable $organization_rfc al array de parametro $params

$sql="INSERT INTO vtiger_organizationdetails
       (organizationname, address, city, state, code, country, phone, fax, website, logoname, rfc)
      values (?,?,?,?,?,?,?,?,?,?,?)";

$params = array($organization_name, $organization_address, $organization_city, 
                $organization_state, $organization_code, $organization_country, 
                $organization_phone, $organization_fax, $organization_website,
                $organization_logoname, $organization_rfc );

-Linea: 140 (Aprox) Modificar la consulta de Actualizacion UPDATE incluyendo el nuevo campo RFC

$sql = "UPDATE vtiger_organizationdetails
          SET organizationname = ?, address = ?, city = ?, state = ?, code = ?, 
              country = ?, phone = ?, fax = ?, website = ?, logoname = ?, rfc=? 
        WHERE organizationname = ?";

$params = array($organization_name, $organization_address, $organization_city, 
                $organization_state, $organization_code, $organization_country,
                $organization_phone, $organization_fax, $organization_website,
                decode_html($organization_logoname),  $organization_rfc, $org_name);
  • Por ultimo, en modules/Settings/language/xx_xx.lang.php –> estos son los archivos de Lenguage del modulo Settings, ahi debemos agregar el valor para la traduccion de la Etiqueta del nuevo campo RFC.

Aqui debemos agregar un elemento al array $mod_strings de la siguiente manera:

'LBL_ORGANIZATION_RFC' => 'RFC',

En donde LBL_ORGANIZATION_RFC corresponde a la etiqueta usada en los archivos CompanyInfo.tpl y EditCompanyInfo.tpl identificado como {$MOD.LBL_ORGANIZATION_RFC}

Esto es todo el procedimiento para agregar campos extra a la informacion de la empresa.

Esto se realizo sobre una instalacion de Vtiger 5.1 el dia 11 de Diciembre del 2009.

Espero que sea de utilidad para alguien, si hay alguna duda por favor haganmela saber, con todo gusto la resolvemos.

Saudos cordiales.

“Chava”

Anuncios

19 comentarios en “Agregando campos extra a la informacion de la empresa…

  1. Gracias… la informacion me ha sido de mucha utilidad, ademas espero modificar algunas cosas mas viendo lo sencillo que puede ser…

    Saludos desde chile

    1. Buen dia Ignacio, me da mucho gusto que esta informacion haya sido util. En cualquier cosa que pueda ayudar con todo gusto lo hare!!

      En estos momentos he estado algo ocupado, de hecho tengo asi ya bastante tiempo que no escribo en este blog, pero espero pronto dedicarme un poco mas para contribuir con todos los usuarios.

      Saludos

  2. Hola! Recién empecé a interesarme en viTiger y acabo de descargar la versión 2.1 junto con el pack para el español mexicano. Estoy empezando a hacer pruebas y me surgen muchas dudas que no siempre puedo aclarar en la wiki y puesto que no sé mucho de php, DEFINITIVAMENTE tu información me ha resultado de mucha utilidad y empezaré a probarla. OJALÁ y pudieras seguir posteando porque ¡tú si sabes de que hablas! y tienes mucho que aportar acerca de este tema.
    ¡Muchas gracias!

    1. Hola hernanjaime10

      Me da gusto que hayas entrado a leer mi blog, que por cierto lo tengo muy abandonado…

      La opcion que comentas es para los modulos estandar, por asi decirlo, de vtiger.
      Si puedes verificar haciendo click en “Configuracion”, despues buscas en el tablero la opcion de “Información de la Empresa”, es ahi a donde pretendemos agregar campos extra, vtiger no tiene una herramienta grafica para agregar campos extra a esta pantalla, o al menos no la conozco. Este articulo fue escrito para agregar campos a esta seccion de la configuracion en especifico.

      Espero haya respondido a tu duda.
      Gracias. Saludos

      Chava

      1. Si, muchas gracias.
        Ya que estas te queria consultar lo siguiente. Hace poco me meti con vtiger y quisiera que se visualice algun otro campo (por ejemplo del modulo Cuentas) en el listado principal, sin necesidad de entrar a los detalles, se entiende? Quisiera que aparezca por ejemplo un campo nuevo que agregue, al listado principal de Cuentas. Es posible? o Hay que tocar mucho codigo?
        Gracias

  3. Hernan :

    Si, muchas gracias.
    Ya que estas te queria consultar lo siguiente. Hace poco me meti con vtiger y quisiera que se visualice algun otro campo (por ejemplo del modulo Cuentas) en el listado principal, sin necesidad de entrar a los detalles, se entiende? Quisiera que aparezca por ejemplo un campo nuevo que agregue, al listado principal de Cuentas. Es posible? o Hay que tocar mucho codigo?
    Gracias

    Hola Hernan,
    Si es que he entendido bien, no requieres tocar nada de codigo, en el listado principal de Cuentas, la vista pòr defecto es “Todos”, es en la parte en donde dice “Filtros”, ahi puedes ver una lista desplegable con otras cuantas vistas ya configuradas, o bien, puedes crear una Nueva haciendo click en el Link que se encuentra a un lado que dice “Nueva”, ahi te pide algunos datos, como por ejemplo, el nobre de la nueva vista, y muy importante, tambien te pregunta si quieres que sea tu vista por defecto, tambien, es importante para que todos tus usuarios al abrir el catalogo de cuentas vean dicha vista es necesario marcar la casilla “Hacer publico”. Mas abajo viene la opcion de seleccionar los campos que quieres que se muestren, ahi puedes incluir cualquier campo, sea este un campo estandar o bien, un campo personalizado.
    Puedes agregar, si asi lo deseas, algunas reglas de filtrado, o bien, no agregar ninguna para mostrar todo.
    Solo faltaria guardar la vista y listo, siempre al abrir el catalogo de cuentas ya podras ver los campos que hayas seleccionado.

    Espero te sirva esta respuesta.

    Saludos.


    Chava

    1. Muchas gracias, si, es eso lo que necesito. Solo que no se por qué no me aparece la opción de “Hacer público” y por otro lado si creo el filtro con la cuenta del Admin no me aparece el filtro para seleccionar entrando con otro usuario. Por lo tanto me puse a investigar el tema y lei que los filtros los pueden ver los usuarios de jerarquìa mayor que el usuario que creó el filtro. Por lo tanto entiendo que al crearlo con el Admin ningun otro usuario podrá ver el filtro.
      Todo esto surge porque lo que quiero hacer es que para todos los usuarios les aparezca un filtro por default en los listados.

      Gracias nuevamente!

      1. Cuando entras con el usuario administrador, debido a que tiene mayor jerarquia, esta bien que no te muestre el filtro cuando inicias la sesion con otro usuario, para eso es la opcion “Hacer publico”, con eso cualquiera lo puede ver.

        Ahora, tu creaste el filtro con tu usuario admin, y entras a cuentas y lo puedes ver, ¿de acuerdo? Ahora bien, estas en el catalogo de cuentas, fijate que en la lista desplegable “Filtros” a un lado hay mas links de opciones, “Nuevo”, “Editar”, “Borrar”, “Permitir” o “Denegar”, Talvez te aparece un link “permitir” para que des click sobre el para poder permitir la Vista, es decir, por defecto, cuando creas una vista, digamos que esta en un modo como “Despublicado” o “desaprobado”, tienes que aprobarla para poder que se pùeda ver. Intenta primero con esto, ya luego habria que ver porque razon no te aparece la Opcion “Hacer publico”.

        La opcion de “Hacer publico” deberia aparecer cuando estas Editando o Creando una nueva vista, es una casilla de verificacion que tienes que marcar, en mi caso, tengo la Verison de Vtiger 5.2.0, y me aparecen Tres opciones, “Fijar por defecto”, “listar en metrica” y “Hacer publico”.

        Saludos.

      2. Sigo agradeciendo tu tiempo.
        Te cuento que las opciones que me aparecen al lado de el filtro creado por el Administrador son Nuevo, Editar y Borrar.

        Por otro lado, ni como administrador ni con otro usuario me aparece la opción de “Hacer público”, solo me aparecen “Fijar por defecto”, “listar en metrica”
        Supongo que se debe a que tengo la versión 5.1.0. Debería probar con la 5.2.0 :S

  4. hernanjaime10 :

    Sigo agradeciendo tu tiempo.
    Te cuento que las opciones que me aparecen al lado de el filtro creado por el Administrador son Nuevo, Editar y Borrar.

    Por otro lado, ni como administrador ni con otro usuario me aparece la opción de “Hacer público”, solo me aparecen “Fijar por defecto”, “listar en metrica”
    Supongo que se debe a que tengo la versión 5.1.0. Debería probar con la 5.2.0 :S

    Hola Hernan, puede ser eso, no recuerdo si esas funciones las tenia cuando use la version 5.1, pero es muy posible.

    No es problema el actualizar a la version 5.2, de hecho es muy pero muy sencillo.

    Haces un respaldo de la base de datos, despues descargas el paquete de vtiger la version mas reciente, hay que descomprimir en otro directorio diferente al que tienes actualmente con la version 5.1, por ejemplo:
    …/www/vtiger5.2/

    Despues entras a esa direccion en tu navegador, http://localhost/vtiger5.2/
    El asistente de instalacion y configuracion de Vtiger te pregunta si quieres actualizar o crear una instalacion nueva, seleccionar Actualizar, lo que sigue despues es dar el nombre de la base de datos de la version 5.1, no recuerdo los pasos exactos, pero si recuerdo esto. Una vez que le indiques esto, el mismo programa de instalacion te migra a la nueva version.

    *Nota: es muy importante que sepas que las modificaciones al codigo, personalizaciones de algunos templates que hayas hecho no te los migrara, puesto que la estructura de directorios y archivos con sus contenidos es totalmente nueva. Tendrias que actualizar a mano esos archivos.

    Una vez que hayas actualizado tu sistema ahora lo que sigue es mover o renombrar el directorio de Vtiger a su ruta de acceso normales decir, si en la 5.1 entrabas asi http://localhost/

    Entonces debes de mover tus archivos y directorios de Vtiger a tu directorio www/ o htdocs/

    Espero te sirva esta informacion.

    Saludos cordiales.


    Chava

  5. Hola! Fantástico trabajo!
    Me gustaría saber como añadir campos del cliente que yo he creado en la factura o incidencia para imprimirlo a PDF! Por lo que he podido investigar es en el header.php pero de programación voy justo, y quiero saber como se añaden mas campos.

    Muchas gracias Chava!

  6. Exelente pos

    por sierto tengo una duda, yo agrege un campo en pre-contactos desde la interfaz del vtiger, lo que quiero ahora es q cuando intente registrar un n.identificaicon que ya este me arroje un mensaje de advertencia, si no esta que me deje registrar el pre-contacto sin problema
    Agradeceria me ayudaras

    1. hola Breiton,

      Se me ocurre que puedes usar los workflows para hacer lo que quieres. Por ejemplo, yo tengo un workflow que ejecuta una funcion PHP despues de haber guardado un pedido nuevo, lo que me hace es copiar informacion capturada de un campo a otro. Tambien, por ejemplo, utilizo otro para contar los productos totales en unidades por tipo de empaque que selecciono en las lineas de pedido (Caja de 6, caja de 48, unidad, etc), esto tambien lo hago con un workflow que me ejecuta una funcion, este dato total lo guardo en un campo personalizado.

      Tengo un Script que registra las funciones personalizadas al Vtiger, con esto ya las puedes seleccionar en las tareas a ejecutar en un Workflow.

      Voy a darme a la tarea de escribir un post sobre como hacer esto. EN proximos dias lo hare.

      Otra cosa, tal vez lo que tu quieres es que al momento de capturar te indique que ya existe ese no. identificación, de ser así, tal vez lo que se debe programar es tambien JScript, hacer una petición ajax al servidor, verificar que el dato no este ya guardado.

      Es interesante, voy a a ver la manera de hacerlo, estoy algo ocupado por el momento, pero ten por seguro que voy a escribir algo sobre esto.

      Recibe un saludo!

      Chava

  7. yo estuve buscando y encontré que ya existe un filtro como el que quiero para el modulo de cuentas (accouts) pero me tiene muy confundido, no soy muy bueno para programar pero aun así e intentado con un código y me hace la busque y me dice si esta, pero cuando registro un pre-contacto que no esta no se guardan los datos. Agradecería me pudiera ayudar, e intentado varias veces pero la el código vtiger es un poco complejo para mi.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s