dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dolibarr-dev] Fwd: Creation d un document recapitulatif de factures imp


From: CONTACT EXPRESSIV
Subject: [Dolibarr-dev] Fwd: Creation d un document recapitulatif de factures impayées
Date: Fri, 28 Apr 2006 18:48:45 +0200
User-agent: KMail/1.9.1

Je poste donc un document récapitulatif qu'un client me demande. Il ne correspond apparement a aucune tache sur savannah mais il peut interresser certaine personne.

Le document en exemple est adapté a une societe de transport qui desire facturer des livraisons de produits, et ainsi présenter l'ensemble des factures en une seule fois.

J ai utilisé pour cela un contact (externe, Facture, Livraison) pour le point de livraison qui doit apparaitre dans le recapitulatif.

Mais il peut etre utilisé pour l impression reprenant l historique ou les relicats d un client dans le cadre d une societe de service.

- Creation d un nouveau modele de document recap-facture

dans /htdocs/includes/modules (Fichier joint : recap-facture.tar.gz) avec un

modele de recapitulatif.

-Stockage des documents dans le dossier /documents/societe/

-Modification de l administration du module societe pour activer l option.

#FICHIER /htdocs/admin/societe.php= >

#Ligne 65

$modrecappdf_addon_var = MODELRECAP_ADDON;

if ($_GET["action"] == 'setpdfrecap')

{

if (dolibarr_set_const($db, "MODELRECAP_ADDON",$_GET["value"]))

{

// la constante qui a été lue en avant du nouveau set

// on passe donc par une variable pour avoir un affichage cohérent

$modrecappdf_addon_var = $_GET["value"];

Header("Location: societe.php");

}

}

#Ligne 199

// ************************************

// MODELE de Recapitulatif

// ************************************

print_titre($langs->trans("FacSumModel"));

print '<table class="noborder" width="100%">';

print '<tr class="liste_titre">';

print '<td width="140">'.$langs->trans("Name").'</td><td>'.$langs->trans("Description").'</td>';

print '<td align="center" colspan="2">'.$langs->trans("Active").'</td>';

print "</tr>\n";

clearstatcache();

$dir = DOL_DOCUMENT_ROOT."/includes/modules/recap-facture/";

if(is_dir($dir))

{

$handle=opendir($dir);

$var=true;

while (($file = readdir($handle))!==false)

{

if (substr($file, strlen($file) -12) == '.modules.php' && substr($file,0,10) == 'pdf_recap_')

{

$name = substr($file, 10, strlen($file) - 22);

$classname = substr($file, 0, strlen($file) - 12);

$var=!$var;

print "<tr $bc[$var]><td>";

print $name;

print "</td><td>\n";

require_once($dir.$file);

$obj = new $classname();

print $obj->description;

print '</td><td align="center">';

if ($modrecappdf_addon_var == "$name")

{

print img_tick();

}

else

{

print "&nbsp;";

}

print "</td><td>\n";

print '<a href="">

print '</td></tr>';

}

}

closedir($handle);

}

else

{

print "<tr><td><b>ERROR</b>: $dir is not a directory !</td></tr>\n";

}

print '</table>';

#FICHIER /htdocs/societe.class.php

#LIGNE 708 //SUPPRESSION d un $ en trop

array_push($facimp, $objp->rowid);

#LIGNE 1562

// ***********************************

// CREATION DU PDF DE RECAP

// ***********************************

function facrecap_pdf_create($db, $socid, $message="")

{

global $langs;

$langs->load("bills");

$dir = DOL_DOCUMENT_ROOT . "/includes/modules/recap-facture/";

if (defined("MODELRECAP_ADDON") && MODELRECAP_ADDON)

{

$file = "pdf_recap_".MODELRECAP_ADDON.".modules.php";

$classname = "pdf_recap_".MODELRECAP_ADDON;

require_once($dir.$file);

$obj = new $classname($db);

$obj->message = $message;

if ( $obj->write_pdf_file($socid) > 0)

{

// Succès de la création de la facture. On génère le fichier meta

// facture_meta_create($db, $facid);

// et on supprime l'image correspondant au preview

// facture_delete_preview($db, $facid);

return 1; //TODO A MODIFIER

}

else

{

dolibarr_syslog("Erreur dans facrecap_pdf_create");

dolibarr_print_error($db,$obj->pdferror());

return 0;

}

}

else

{

print $langs->trans("Error")." ".$langs->trans("Error_MODELRECAP_ADDON_NotDefined");

return 0;

}

}

#FICHIER /htdocs/compta/fiche.php

#Ligne 342

// Récapitulatif de facture

if ($societe->client != 0 && $conf->facture->enabled && $user->rights->facture->creer) {

$langs->load("companies");

print "<a class=\"tabAction\" href="">

}

#Ligne 368 //MODIFICATION du code SWITCH a la place d un IF

/* ************************************

* ACTIONS

* ************************************

*/

switch ($action) {

case 'changevalue':

print "<hr noshade>";

print "<form action="" method=\"post\">";

print "<input type=\"hidden\" name=\"action\" value=\"cabrecrut\">";

print "Cette société est un cabinet de recrutement : ";

print "<select name=\"selectvalue\">";

print "<option value=\"\">";

print "<option value=\"t\">Oui";

print "<option value=\"f\">Non";

print "</select>";

print "<input type=\"submit\" class=\"button\" value=\"".$langs->trans("Update")."\">";

print "</form>\n";

break;

case 'recap-pdf':

facrecap_pdf_create($db,$societe->id);

//********************************

// Affichage du lien vers le document

//********************************

print '<table width="100%"><tr><td width="50%" valign="top">';

$filename=sanitize_string($societe->id);

$filedir=$conf->societe->dir_output . '/' . sanitize_string($societe->id);

$urlsource=$_SERVER['PHP_SELF'].'?socid='.$societe->id;

$genallowed=0;

$delallowed=0;

$var=true;

print '<br>';

$html = new Form($db);

$html->show_documents('societe',$filename,$filedir,$urlsource,$genallowed,$delallowed);

print '</td></tr></table>';

break;

default:

/*

*

* Liste des contacts

*

*/

print '<table class="noborder" width="100%">';

print '<tr class="liste_titre"><td>'.$langs->trans("Firstname").' '.$langs->trans("Lastname").'</td>';

print '<td>'.$langs->trans("Poste").'</td><td>'.$langs->trans("Tel").'</td>';

print '<td>'.$langs->trans("Fax").'</td><td>'.$langs->trans("EMail").'</td>';

print "<td align=\"center\">&nbsp;</td>";

print '<td>&nbsp;</td>';

print "</tr>";

$sql = "SELECT p.idp, p.name, p.firstname, p.poste, p.phone, p.fax, p.email, p.note";

$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as p";

$sql.= " WHERE p.fk_soc = ".$societe->id;

$sql.= " ORDER by p.datec";

$result = $db->query($sql);

$i = 0 ; $num = $db->num_rows($result);

$var=1;

while ($i < $num)

{

$obj = $db->fetch_object($result);

$var = !$var;

print "<tr $bc[$var]>";

print '<td>';

print '<a href="" '.$obj->firstname.' '. $obj->name.'</a>&nbsp;';

if (trim($obj->note))

{

print '<br>'.nl2br(trim($obj->note));

}

print '</td>';

print '<td>'.$obj->poste.'&nbsp;</td>';

print '<td><a href="">

print '<td><a href="">

print '<td><a href="">

print '<td align="center">';

if ($user->rights->societe->contact->creer)

{

print "<a href="">

print img_edit();

print '</a>';

}

else print '&nbsp;';

print '</td>';

print '<td align="center"><a href="">

print img_object($langs->trans("Rendez-Vous"),"action");

print '</a></td>';

print "</tr>\n";

$i++;

$tag = !$tag;

}

print "</table><br>";

/*

* Listes des actions effectuées

*/

print '<table width="100%" class="noborder">';

print '<tr class="liste_titre"><td colspan="8"><a href="">

$sql = "SELECT a.id, ".$db->pdate("a.datea")." as da, c.code as acode, c.libelle, a.propalrowid, a.fk_user_author, fk_contact, u.code, u.rowid ";

$sql .= " FROM ".MAIN_DB_PREFIX."actioncomm as a, ".MAIN_DB_PREFIX."c_actioncomm as c, ".MAIN_DB_PREFIX."user as u ";

$sql .= " WHERE a.fk_soc = $societe->id ";

$sql .= " AND u.rowid = a.fk_user_author";

$sql .= " AND c.id=a.fk_action ";

$sql .= " ORDER BY a.datea DESC, a.id DESC";

$result=$db->query($sql);

if ($result)

{

$i = 0 ;

$num = $db->num_rows($result);

$var=true;

while ($i < $num)

{

$var = !$var;

$obj = $db->fetch_object($result);

print "<tr $bc[$var]>";

if ($oldyear == strftime("%Y",$obj->da) ) {

print '<td width="30" align="center">|</td>';

} else {

print '<td width="30" align="center">'.strftime("%Y",$obj->da)."</td>\n";

$oldyear = strftime("%Y",$obj->da);

}

if ($oldmonth == strftime("%Y%b",$obj->da) ) {

print '<td width="30" align="center">|</td>';

} else {

print '<td width="30" align="center">'.strftime("%b",$obj->da)."</td>\n";

$oldmonth = strftime("%Y%b",$obj->da);

}

print '<td width="20">'.strftime("%d",$obj->da)."</td>\n";

print '<td width="30">'.strftime("%H:%M",$obj->da)."</td>\n";

print '<td>&nbsp;</td>';

print '<td>';

if ($obj->propalrowid)

{

print '<a href="">

$transcode=$langs->trans("Action".$obj->acode);

$libelle=($transcode!="Action".$obj->acode?$transcode:$obj->libelle);

print $libelle;

print '</a></td>';

}

else

{

print '<a href="">

$transcode=$langs->trans("Action".$obj->acode);

$libelle=($transcode!="Action".$obj->acode?$transcode:$obj->libelle);

print $libelle;

print '</a></td>';

}

// Contact pour cette action

if ($obj->fk_contact) {

$contact = new Contact($db);

$contact->fetch($obj->fk_contact);

print '<td><a href="" '.$contact->fullname.'</a></td>';

} else {

print '<td>&nbsp;</td>';

}

print '<td><a href="">

print "</tr>\n";

$i++;

}

$db->free();

break;

/* } else {

dolibarr_print_error($db);*/

}

print "</table>";

}

} else {

print "Erreur";

}

--

MESSIN Enguerrand

SARL Expressiv

PIT de la Pompignane-T4

Rue de la veille poste

34055 Montpellier

tel/fax : 04-67-50-15-49

www.expressiv.net

Attachment: recap-facture.tar.gz
Description: application/tgz


reply via email to

[Prev in Thread] Current Thread [Next in Thread]