Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Imprimir Atributos adicionales (líneas) en pedido de cliente

Cuestiones sobre cómo utilizar Dolibarr, ayudas sobre las funcionalidades o cualquier cuestión que no está relacionada con un error.
toronana
Novato
Mensajes: 25
Registrado: Sab, 30/04/2016, 23:40

Imprimir Atributos adicionales (líneas) en pedido de cliente

Mensaje por toronana »

Hola, buenas
Alguien tiene algún dato de como hacer para recuperar e imprimir la información de Atributos adicionales (líneas).
Ya que son datos que se agregan al momento de crear el pedido y necesito que salgan impresas en el pdf.

Yo modifique la plantilla para ajustarlo a lo que necesitamos. pero no hay nada que me ayude a recuperar esos datos.

Saludos desde Cba, Arg.
Damian

Avatar de Usuario
aduart
Yoda
Mensajes: 1065
Registrado: Mié, 06/06/2012, 19:37

Mensaje por aduart »

Hola, lo bueno es que se puede, lo malo es que hay que tocar codigo (PHP).
Los atributos y sus valores estan en los objetos que se crean en el codigo, al momento
de generar los PDF.

Saludos,
Eduardo.

toronana
Novato
Mensajes: 25
Registrado: Sab, 30/04/2016, 23:40

Mensaje por toronana »

Gracias,
Si estoy tocando el php, ese no es el problema.

Estoy siguiendo este ayuda en Wikipedia, pero no he logrado dar con la tecla aun.
https://wiki.dolibarr.org/index.php/Extrafields

Me falta el dato de $rowid que no encuentro de donde obtenerlo.

Avatar de Usuario
aduart
Yoda
Mensajes: 1065
Registrado: Mié, 06/06/2012, 19:37

Mensaje por aduart »

Si, te paso algo que use y me ayudo, es imprimir el contenido de una variable
tipo array al log:

$oneline = $objectsrc;
$pp = print_r($oneline, true);
dol_syslog("---objectsrc: " . $pp);

En este caso la variable $objectsrc es la que quiero ver, tenes que habilitar el modulo
de log para que mande la info al archivo dolibarr.log

Lo que vos mencionas, $rowid, creo es la propiedad id, seria
$objectsrc->id

Eso no seria extrafield, es la clave unica del objeto en la tabla, en general.

Saludos,

Eduardo.

toronana
Novato
Mensajes: 25
Registrado: Sab, 30/04/2016, 23:40

Mensaje por toronana »

Buen Dato Aduart. Mil gracias.

Estuve tirando los logs.
y efectivamente es $object->rowid

Pero ahi me di cuenta que la información que obtengo es de los campos extras de los pedidos.
Pero no me devuelve los datos de campos extras de "líneas" de los pedidos.
Asi que voy a tener que meter código para consultar la bd.

Gua ver que me sale, despues les cuento,

Buscando en info en internet encontré que este tema estaba tocado en otra publicación aca en el foro, no lo habia encontrado antes.
https://www.dolibarr.es/foro/viewtopic.php?f=17&t=2782

Pero tampoco lo han solucionado, quedaron en el mismo punto que yo.

Saludos
Damian

osek2112
Novato
Mensajes: 3
Registrado: Dom, 01/10/2017, 14:21

Mensaje por osek2112 »

Hola:

Lo puedes añadir con el módulo AdrODT y para configurarlo y que aparezca en el PDF solo tienes que descargar la plantilla .odt y agregarle los tags ahí.

Sería algo así:

{line_options_xxxx}

*siendo xxxx el código del atributo que agregaste.

Saludos,

toronana
Novato
Mensajes: 25
Registrado: Sab, 30/04/2016, 23:40

Mensaje por toronana »

Gracias Osek,
Pero lo solucione modificando el php del modulo que imprime el pdf del pedido.
Publico lo que hice, por ahi le sirve a otro/a.

Dentro del condicional si existe el directorio.

Código: Seleccionar todo

if (file_exists($dir))
y justo antes del bucle

Código: Seleccionar todo

// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++)
inserte el siguiente código.

Código: Seleccionar todo

// Cargamos las lineas extras
$extrafields = new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element_line);
foreach ($object->lines as $line) 	{
          $line->fetch($line->rowid);
          $line->fetch_optionals($line->rowid,$extralabels);
}
Luego dentro del bucle podes usar la siguiente linea para recuperar los datos e imprimirlo donde quieran.

Código: Seleccionar todo

 $object->lines[$i]->array_options ['options_NOMBREQUELEASIGNAMOSALCONFIGURAR']
Suerte y Gracias
Damian

jsmedina
Novato
Mensajes: 31
Registrado: Dom, 17/09/2017, 01:42

Mensaje por jsmedina »

Hola Damian

Para que me quede más claro, ¿puedes enviar una captura de lo que has conseguido en un documento ejemplo?

No se si hablamos de lo mismo, pero yo tenía la necesidad que incorporar nuevas líneas también, donde se incluyeran los números de cuenta o información particular de la cotización. En ese momento, la solución que encontré fue incorporar las líneas como cadena traducida:
Imagen

Y lo he incorporado como código debajo de la siguiente función

Código: Seleccionar todo

	function _tableau_info(&$pdf, $object, $posy, $outputlangs)
de la siguiente manera:

Código: Seleccionar todo

// CUENTA EN PESOS
			if ($object->mode_reglement_code
			&& $object->mode_reglement_code != 'CHQ'
			&& $object->mode_reglement_code != 'VIR')
			{
				$pdf->SetFont('','B', $default_font_size - 1);
				$pdf->SetXY($this->marge_gauche, $posy);
				$titre = $outputlangs->transnoentities("BBVAMXN").':';
				$pdf->MultiCell(80, 5, $titre, 0, 'L');
				$pdf->SetFont('','', $default_font_size - 1);
				$pdf->SetXY($posxval, $posy);
				$datos = $outputlangs->transnoentities("BBVAMXN2");
				$pdf->MultiCell(90, 5, $datos, 0, 'L');
				$posy=$pdf->GetY()+1;
			}
			// CUENTA EN DOLARES
			if ($object->mode_reglement_code
			&& $object->mode_reglement_code != 'CHQ'
			&& $object->mode_reglement_code != 'VIR')
			{
				$pdf->SetFont('','B', $default_font_size - 1);
				$pdf->SetXY($this->marge_gauche, $posy);
				$titre2 = $outputlangs->transnoentities("BBVAUSD").':';
				$pdf->MultiCell(80, 5, $titre2, 0, 'L');
				$pdf->SetFont('','', $default_font_size - 1);
				$pdf->SetXY($posxval, $posy);
				$datos2 = $outputlangs->transnoentities("BBVAUSD2");
				$pdf->MultiCell(90, 5, $datos2,0,'L');
				$posy=$pdf->GetY()+1;
			}
Y el resultado es:
Imagen

Espero os sirva mi solución.

Un saludo¡!
Sebastián Medina
México - España

Versión de Dolibarr: 8.0

toronana
Novato
Mensajes: 25
Registrado: Sab, 30/04/2016, 23:40

Mensaje por toronana »

Hola Sebastian,
Por lo que veo, los datos tuyos son Constantes.
No es mala tu solución. Porque sino estarías grabando los datos en cada presupuesto o pedido..

En cambio, yo necesitaba variables en cada linea, que cambian en cada presupuesto o pedido.

Por ejemplo:
Imagen
Ahi por ejemplo se cargan Medidas, Papel, gramos, etc.. que difieren de cada pedido.

Esto se configura en el panel de Configuracion.
Imagen
Donde los atributos adicionales pertenecen al presupuesto en gral, mientras los de linea, a cada producto dentro del presupuesto.

¿Se entiende?

Saludos
Damian

JoseRuben
Novato
Mensajes: 2
Registrado: Jue, 19/10/2023, 18:27

Mensaje por JoseRuben »

hay forma de cambiar el ancho de las columnas de los extrafields lineas ya que agregue varias pero estan del mismo tamaño y hace que el fprmato no se vea bien
.