Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Regenerar PDFs de facturas

Discusión sobre la creación de nuevos modulos
ADQA
Soldado
Mensajes: 64
Registrado: Mar, 08/10/2013, 10:20

Regenerar PDFs de facturas

Mensaje por ADQA »

Buenas tardes,

Tengo que volver a generar el PDF de cierto número de facturas, ya que en su momento se crearon con la plantilla equivocada. Para no tener que ir una a una se me ha ocurrido hacer un script en el que pongas el número de la primera factura y el de la última, y te regenere automáticamente los PDF, pero lo he estado mirando y, tratando de "aislar" el mismo proceso que utiliza Dolibarr para la creación de un PDF, no lo veo nada fácil.

A alguien se le ocurre alguna otra forma, o alguna idea más sencilla de cómo programar este script?

Muchas gracias

catrielr
C-3PO
Mensajes: 164
Registrado: Jue, 04/11/2010, 16:21

Mensaje por catrielr »

Hola, a ver si esto te sibe, si vas al listado de facturas, a la derecha ves un checkbox, selecciona las factuas que queres regenerar arriba de dodo hay una lista de desplegable, dentro hay una opcion de "Fusionar PDF" eso te genera un pdf con todas las factuas juntas.

ADQA
Soldado
Mensajes: 64
Registrado: Mar, 08/10/2013, 10:20

Mensaje por ADQA »

Hola! Gracias por tu respuesta catrielr. Pero lo que necesitaria es que me genere los pdf separados.

Gracias

ADQA
Soldado
Mensajes: 64
Registrado: Mar, 08/10/2013, 10:20

Mensaje por ADQA »

Bueno, al final no ha sido tan difícil adaptar el script.

Lo dejo por aquí por si a alguien le puede interesar. El modelo de factura que genera es "crabe". Se tiene que introducir el rango de facturas a regenerar, siendo el rowid el número a introducir en el campo del formulario. El archivo "generar-factures.php" se debe copiar en /htdocs

Saludos!

generar-factures.php

Código: Seleccionar todo

<?php	
$model = 'crabe';
if ( isset($_GET['regenerar']) ) {

	$primera = $_POST['primera'];
	$ultima = $_POST['ultima'];

	require 'main.inc.php';
	require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php';
	require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture-rec.class.php';
	require_once DOL_DOCUMENT_ROOT . '/compta/paiement/class/paiement.class.php';
	require_once DOL_DOCUMENT_ROOT . '/core/modules/facture/modules_facture.php';
	require_once DOL_DOCUMENT_ROOT . '/core/class/discount.class.php';
	require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php';
	require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php';
	require_once DOL_DOCUMENT_ROOT . '/core/class/html.formmargin.class.php';
	require_once DOL_DOCUMENT_ROOT . '/core/lib/invoice.lib.php';
	require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php';
	require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
	require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php';
	if (! empty($conf->commande->enabled))
		require_once DOL_DOCUMENT_ROOT . '/commande/class/commande.class.php';
	if (! empty($conf->projet->enabled)) {
		require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
		require_once DOL_DOCUMENT_ROOT . '/core/class/html.formprojet.class.php';
	}
	require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';

	for ( $id = $primera; $id<=$ultima; $id++ ) {

		$object = new Facture($db);

		$object->fetch($id);
		$object->fetch_thirdparty();

		// Save last template used to generate document
		if ($model)
			$object->setDocModel($user, $model, 'alpha');
		if (GETPOST('fk_bank')) { // this field may come from an external module
		    $object->fk_bank = GETPOST('fk_bank');
		} else {
		    $object->fk_bank = $object->fk_account;
		}

		// Define output language
		$outputlangs = $langs;
		$newlang = '';
		if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id');
		if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
		if (! empty($newlang))
		{
			$outputlangs = new Translate("", $conf);
			$outputlangs->setDefaultLang($newlang);
		}
		$result = $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
		if ($result <= 0)
		{
			setEventMessages($object->error, $object->errors, 'errors');
		    $action='';
		}
	}
	echo "S'han regenerat les factures des de la ".$primera." fins la ".$ultima;
}
?>
<form action="generar-factures.php?regenerar" method="POST">
	<p>Id de la primera factura a regenerar: <input type="text" name="primera"></p>
	<p>Id de l'&uacute;ltima factura a regenerar: <input type="text" name="ultima"></p>
	<p>Les factures es generaran amb la plantilla <?php echo $model ?>.</p>
	<p><button type="submit">Regenerar!</button></p>
</form>