|
From: | CONTACT EXPRESSIV |
Subject: | [Dolibarr-dev] Creation d un document recapitulatif de factures impayées |
Date: | Tue, 25 Apr 2006 15:29:17 +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 des 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 = MOEDELRECAP_ADDON; if ($_GET["action"] == 'setpdfrecap') { if (dolibarr_set_const($db, "MOEDELRECAP_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 " "; } 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 688 array_push($facimp, $objp->rowid); #LIGNE 1480 // *********************************** // 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("MOEDELRECAP_ADDON") && MOEDELRECAP_ADDON) { $file = "pdf_recap_".MOEDELRECAP_ADDON.".modules.php"; $classname = "pdf_recap_".MOEDELRECAP_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_MOEDELRECAP_ADDON_NotDefined"); return 0; } } #FICHIER /htdocs/compta/fiche.php #Ligne 424 // Récapitulatif de facture if ($societe->client != 0 && $conf->facture->enabled && $user->rights->facture->creer) { $langs->load("bills"); print "<a class=\"tabAction\" href=""> } #Ligne 444 //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\"> </td>"; print '<td> </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> ';
if (trim($obj->note)) { print '<br>'.nl2br(trim($obj->note)); } print '</td>'; print '<td>'.$obj->poste.' </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 ' ';
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> </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> </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 |
[Prev in Thread] | Current Thread | [Next in Thread] |