Entity Module
Block
El registro de entidad se representa visualmente como formulario en la vista de edicion / vista de detalle. El bloque se comprende de un grupo del campo del módulo. Puede haber uno o más bloques en el módulo. Layout Editor proporciona la capacidad para que el administrador agregue bloques personalizados.
Field
Field es la unidad fundamental de la gestión de datos. El módulo puede tener uno o más campos. Sin embargo, la presencia de campo de entidad es obligatoria para el módulo.
UItypes for Fields in Modules
UI Tipe | Proposito | Ejemplo |
---|---|---|
1 | Un campo de una linea. Cambia su color cuando se selecciona | Ciudad |
2 | Lo mismo que el uitype 1, pero este es un campo obligatorio. Una estrella esta presente antes de la etiqueta del campo. Cambia de color cuando se selecciona. | Nombre de Cuenta |
3 | Un campo no se puede editar el texto de una sola línea que muestra la entrada de auto-generada e incremental, como número de factura. Es un campo obligatorio. Una estrella está presente antes de que la etiqueta del campo. Cuando cambia el color seleccionado. | AccessKey - Usuarios |
4 | Se utiliza para generar el tipo de AutoNumerico, configurado en cualquier módulo. | Numero de Cuenta |
5 | Contiene un enlace a "jscalendar" con él que puede ser usado para llenarlo. También se muestra las fechas actuales del formato de usuarios por debajo de ella. Toma fechas inut basado en el formato de fecha actual usuarios. No permitir que entre en fechas no válidas como 30 de febrero. No cambia de color en la selección. Generalmente se utiliza para tomar las entradas fechas de inicio. | Inicio de Soporte |
6 | Se trata de un campo de hora y fecha. Permite entrar en el tiempo utilizando menús desplegables y fecha utilizando un enlace a "jscalendar". La validez de la fecha y la hora se comprueba antes de la entrada. Es obligatorio que al introducir la fecha es mayor que o igual a la fecha actual. No cambia de color en la selección. | Fecha y Hora de Inicio |
7 | Un campo de texto de una sola línea que se utiliza principalmente para tomar una entrada numérica. Cambia de color cuando es seleccionado. | Empleados |
8 | Array JSON es almacenado y el valor se consume en cadenas separadas por coma | E-Mails => To, CC, BCC |
9 | Un campo de texto de una sola línea ¿Cuál es el porcentaje utilizado para aceptar entradas de los usuarios. Comprueba si la entrada es inferior a 100 o no, y da y de error de lo contrario. Los cambios en la selección de color. | % de Probabilidad |
10 | Sirve para crear un tipo de entrada de 'Modulo entidad vinculada', donde un campoesta vinculado a una entidad a partir de múltiples módulos (por ejemplo: Miembro del campo) -> Introducido por vtlib | Cuenta, Contacto en Recursos |
11 | Un campo de texto de una sola línea. No tiene comprueba la validez de los datos. Cambia de color cuando es seleccionado. | Telefono |
12 | Campo id de correo electrónico, almacena el correo electrónico de identificación único (de dirección de correo electrónico) Cuando el correo electrónico se envía desde el sistema. | Enviado desde |
13 | Un campo de texto de una sola línea. Se utiliza para tomar las direcciones e-mail desde la entrada del usuario. Comprueba la validez del correo electrónico introducida y da un error si no es válido. Cambia de color cuando es seleccionado. | Campo E-mail |
15 | Un combo desplegable que acepta la entrada del valor seleccionado en ella. Los valores en el menú desplegable Varian de módulo a módulo y se basan en roles. | Origen de Pre-Contactos |
16 | Un combo desplegable que acepte la entrada del valor seleccionado en ella. Los valores en el menú desplegable Varían de un módulo a otro, y no depende el rol (no basado en rol) del usuario actual. | Zona Horaria en Usuarios |
17 | campo sola línea de texto que se utiliza para aceptar los nombres de los sitios web de los usuarios. No comprueba la validez de la entrada. Los cambios en la selección de color. | Sitio Web |
19 | Área de texto utilizado por aceptar grandes entradas como "Descripción", "soluciones", etc. Los cambios en la selección de color. | Descripcion, Terminos de Condiciones |
20 | Igual que uitype 19, pero un campo obligatorio, es decir, que tiene que ser llenado y hay una estrella antes del presente fieldLabel. Los cambios en la selección de color. | Pregunta => FAQ |
21 | Extarea tamaño en torno a cinco líneas. Se utiliza para dar pequeños detalles como "Dirección de la calle" a partir la entrada del usuario. Los cambios en la selección de color. | Diraccion |
22 | Un área de texto que se utiliza para aceptar el campo "Título" en algunos módulos. Es un campo obligatorio. Una estrella está presente antes de la fieldLabel. Los cambios en la selección de color. | Campo titulo => Incidencias |
23 | Campo de fecha. Igual que uitype 5, pero en su mayoría se utilizan para tomar las entradas de fecha de terminacion. | Fecha de Finalizacion |
24 | Área de texto de tamaño en torno a cinco líneas. Se utiliza principalmente para tomar pequeños detalles como "Dirección de facturación" a partir la entrada del usuario. Cuando se selecciona un contacto, entonces, si el usuario consiente, la dirección de facturación se llena automáticamente con la dirección de contacto como la dirección de facturación. Es un campo obligatorio. Una estrella está presente antes de la TextLabel. Los cambios en la selección de color. | Campo como el de direccion permite tomar la direccion de facturacion si el usuario lo consiente. |
25 | Seguimiento de correo electrónico de estado (Se utiliza para contar el número de veces que se abre un correo electrónico). Se trata de un uitype especial valor para el cual se calcula basándose en los valores de la otra tabla. | Access Count |
26 | Folder de Documentos | Nombre de Folder |
27 | información de tipo de archivo (interno / externo). Este uitype es especial, ya que ofrece una selección de lista de selección en el lado izquierdo, donde la etiqueta que aparece y se basa en el tipo de entrada para los cambios de valor. | Tipo de Desacarga => Documentos [Interno / Externo] |
28 | El campo de titular de nombre de archivo (que anteriormente se fusionó con otra uitype). Ahora existe independiente de la otra uitype este campo, pero su tipo varía en función del valor de la otra uitype | Nombre del Archivo => Documentos |
30 | Este se compone de tres menús desplegables que se utilizan para Ajuste del tiempo de aviso en el caso de cualquier creación actividad. | Enviar Recordatorio |
31 | Theme | |
32 | Language | |
51 | Sirve para seleccionar una cuenta de una ventana emergente. | Miembro de => Cuentas, Cuenta => Contacto |
52 | Un combo desplegable que acepte la entrada del valor seleccionado en ella. La entrada es el nombre del controlador (como admin, standarduser etc.) para la entidad que está siendo creado. | Ultima Modificacion por |
53 | La combinación de un combo desplegable y un botón de radio que acepte la entrada del valor seleccionado en el combo. El valor del botón de opción, a su vez, decide los valores en el combo. La entrada es el nombre del usuario o grupo a una actividad que se asigna a. | Asignado a |
55 | Este uitype Proporciona una combinación de Tratamiento y Nombre. El campo de Tratamiento es un desplegable mientras que el campo Nombre es un campo de texto de línea que cambia de color en la selección. | Tratamiento y nombre |
56 | Una casilla de verificación que toma la entrada en forma de sí o no. | Activo [Si / No] |
57 | Un campo de texto no editable sola línea. Toma su entrada desde el enlace que aparece con ella. Se utiliza para seleccionar un contacto de una ventana emergente. Que contiene un enlace se puede utilizar para borrar el valor anterior. También contiene un enlace a una ventana emergente que añade un nuevo contacto. No cambia de color en la selección. | Reporta a => Contactos |
58 | Origen de Campaña | |
59 | Seleccionar Producto | |
61 | Nombre del Archivo en Documentos | |
63 | Duracion | Duracion en Horas => Incidencias |
66 | Relacionado | Relacionado a |
69 | Imagen | Imangen Producto |
70 | Fecha de Creacion | Fecha de Modificacion |
71 | Campo moneda | Costo actual |
72 | Campo moneda | Total => Factura |
73 | Account Name => Cotizaciones | |
75 | Nombre del Proveedor => Productos | |
76 | Nombre de la Oportunidad => Cotizacion | |
77 | Usuario asignado encargado del inventario. | Envargado del Inventario => Cotizaciones. |
78 | Nombre de la Cotizacion => Orden de venta | |
80 | Orden de Venta => Factura | |
81 | Proveedor => Orden de Compra | |
83 | Clase de Iva => Servicios | |
99 | Password => Usuarios | |
101 | Reporta a => Usuarios | |
104 | E-mail => Usuarios | |
105 | Imagen => Usuarios | |
106 | Nombre de Usuario => Usuarios | |
115 | Estado => Usuarios | |
116 | Hora Fin | |
117 | Moneda en Cotizacion | |
156 | Es Admin => Usuarios | |
255 | En los Pre-contactos y los contactos, el apellido es obligatorio, pero primero nombre no lo es. Cuando por primera vez el nombre está deshabilitado para el perfil, el saludo se maneja y ha añadido para el último nombre que utiliza este uitype. | Apellidos => Pre-contactos |
Campo(s) principal(es) del módulo a través de los cuales el registro se identifica por nombre (etiqueta a.k.a) se denomina Campo de Entidad.
Sharing Access
Webservices
................
Extension Module
El módulo de extensión agrega un comportamiento adicional al CRM y funciona con los datos existentes del módulo Entity o de otras fuentes. Ejemplo: Dashboard, Reportes, etc ... La plataforma proporciona API para facilitar el trabajo con los datos del módulo de entidad y define la estructura general a seguir para la implementación del módulo.
Language Pack
Para empezar a usar Console Tool > Create New Language Pack
Actualice los archivos de idioma php creados en la carpeta languages / languagecode_countrycode.
Exporte el paquete de idioma utilizando Language Export API
Layouts
Application UI is controlled by layout. CRM administrator can choose the default layout through Configuration Editor (available 6.4.0 onwards).
Themes
...................
Server APIs
Server API enables data flow control for a module. It is recommended for use when a module needs to access of other module data / state. The Server API will take measure to apply the required Sharing / Profile access restriction as configured for the logged in user. Also triggers configured Event handlers (Workflow etc...) for operations like Save / Delete.
- Attention
Using direct database queries is discouraged as developers might induce data-security issues unknowingly and increase risk.
Webservice ID
include_once 'include/Webservices/Utils.php';
$crmid = '1'; // ID of Leads record.
$wsid = vtws_getWebserviceEntityId('Leads', $crmid);
List Types
include_once 'include/Webservices/ModuleTypes.php';
$current_user = CRMEntity::getInstance('Users');
$current_user->retrieveCurrentUserInfoFromFile(1);
try {
$typeInformation = vtws_listtypes(array(), $current_user);
foreach ($typeInformation['types'] as $name) {
echo sprintf("%s\n", $name);
}
foreach ($typeInformation['information'] as $name => $information) {
echo sprintf("Name: %s, Label: %s, SingluarLabel: %s, IsEntity: %s \n",
$name, $information['label'], $information['singular'], ($information['isEntity']? "yes": "no"));
}
} catch (WebServiceException $ex) {
echo $ex->getMessage();
Describe
include_once 'include/Webservices/DescribeObject.php';
try {
$describe = vtws_describe('Leads', $current_user);
foreach ($describe['fields'] as $field) {
echo sprintf("%s (%s), Mandatory? %s \n", $field['name'],
$field['type']['name'], ($field['mandatory']? "yes": "no"));
}
} catch (WebServiceException $ex) {
echo $ex->getMessage();
}
Create
include_once 'include/Webservices/Create.php';
try {
$data = array (
'lastname' => 'LNAME',
'firstname'=> 'FNAME',
'company' => 'CNAME',
'assigned_user_id' => '19x1', // 19=Users Module ID, 1=First user Entity ID
);
$lead = vtws_create('Leads', $data, $current_user);
print_r($lead);
} catch (WebServiceException $ex) {
echo $ex->getMessage();
}
Retrieve
include_once 'include/Webservices/Retrieve.php';
try {
$wsid = vtws_getWebserviceEntityId('Leads', 'CRMID') // Module_Webservice_ID x CRM_ID
$lead = vtws_retrieve($wsid, $current_user);
print_r($lead);
} catch (WebServiceException $ex) {
echo $ex->getMessage();
}
Revise
include_once 'include/Webservices/Revise.php';
try {
$wsid = vtws_getWebserviceEntityId('Leads', 'CRMID') // Module_Webservice_ID x CRM_ID
$data = array('firstname' => 'FIRSTNAME', 'id' => $wsid);
$lead = vtws_revise($data, $current_user);
print_r($lead);
} catch (WebServiceException $ex) {
echo $ex->getMessage();
}
Query
include_once 'include/Webservices/Query.php';
try {
$q = "SELECT * FROM Leads WHERE lastname LIKE '%LNAME%'";
$q = $q . ';'; // NOTE: Make sure to terminate query with ;
$records = vtws_query($q, $current_user);
print_r($records);
} catch (WebServiceException $ex) {
echo $ex->getMessage();
}
Delete
include_once 'include/Webservices/Delete.php';
try {
$wsid = vtws_getWebserviceEntityId('Leads', 'CRMID') // Module_Webservice_ID x CRM_ID
vtws_delete($wsid, $current_user);
} catch (WebServiceException $ex) {
echo $ex-
>
getMessage();
}
Package Structure
Entity Module
<MODULENAME>.zip
manifest.xml
modules/
<MODULENAME>/
<MODULENAME>.php
views/
actions/
models/
crons/
MODULENAME.service
templates/
.tpl
resources/
languages/
en_us/
<MODULENAME>.php
settings/
views/
actions/
models/
templates/
.tpl
Extension Module
<MODULENAME>.zip
manifest.xml
modules/
<MODULENAME>/
<MODULENAME>.php
views/
actions/
models/
templates/
.tpl
resources/
languages/
en_us/
<MODULENAME>.php
Language Pack
<en_us>.zip
manifest.xml
modules/
Vtiger.php
Accounts.php
Contacts.php
Leads.php
Settings/
Vtiger.php
Layout Pack
<LAYOUTNAME>.zip
manifest.xml
layouts/
<NAME>/
libraries/
jquery/
jquery.min.js
skins/
application.js
application.css
modules/
Vtiger/
Header.tpl
Footer.tpl
dashboards/
DashBoardPreProcess.tpl
DashBoardContents.tpl
Users/
Login.tpl
Settings/
Vtiger/
ConfigEditorDetail.tpl
Theme Pack
<THEMENAME>.zip
manifest.xml
vlayout/
style.css
otherlayout/
style.css
Bundled Module
Note
Yet to be documented - please be patient.