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
Regenerar PDFs de facturas
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.
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
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'ú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>