Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Formular un campo

Cuestiones sobre cómo utilizar Dolibarr, ayudas sobre las funcionalidades o cualquier cuestión que no está relacionada con un error.
joselgz
Novato
Mensajes: 2
Registrado: Mié, 15/01/2014, 03:26

Formular un campo

Mensaje por joselgz »

Buenas estoy implementando el Dolibarr, me parece una opcion muy buena.
Esty tratando de multiplicar 2 campos adicionales que configure en la facturacion, pero no logro ahcerlo, quisiera saber sobre como formular campos combinados, si hay algunos ejemplos a la mano.
Cree 3 campos 2 campos de datos y uno de resultado, pero no se como formular, si alguien me da una mano o me facilita algunos links de ejemplos o de informacion con respecto a este tema, estoy usando la ultima version de dolibarr 12.0

cristcampos
Novato
Mensajes: 8
Registrado: Vie, 17/07/2020, 16:28

Mensaje por cristcampos »

Hola
yo no lo he hecho nunca, pero en la configuración del modulo, cuando agregar un nuevo atributo o campo adicional existe uno en donde puede programarlo en base a otros:
se llama Campo computado

y en la ayuda sale esto:

Puede introducir aquí una fórmula utilizando otras propiedades de objeto o cualquier código PHP para obtener un valor calculado dinámico. Puede utilizar cualquier fórmula compatible con PHP, incluido el operador de condición "?" y los objetos globales siguientes: $db, $conf, $langs, $mysoc, $user, $object.
ATENCIÓN: Sólo algunas propiedades de $object pueden estar disponibles. Si necesita propiedades no cargadas, solo busque el objeto en su fórmula como en el segundo ejemplo.
Usando un campo computado significa que no puede ingresar ningún valor de la interfaz. Además, si hay un error de sintaxis, la fórmula puede devolver nada.

Ejemplo de fórmula:
$object->id < 10 ? round($object->id / 2, 2) : ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Ejemlo de recarga de objeto
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($obj->id ? $obj->id : ($obj->rowid ? $obj->rowid : $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5 : '-1'

Otro ejemplo de fórmula para forzar la carga del objeto y su objeto principal:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Proyecto principal no encontrado'


Saludos,