Mes améliorations

Bonjour,

Avant toute choses, je tiens à féliciter les développeurs officiels de Dolibarr pour leur travail et leur réactivités sur le forum.

Je poste ici, mes améliorations issues de mon expérience dolibarr. Je pense que cela peut être une piste d’améliorations de Dolibarr.
Je précise que mes connaissances en PHP sont basiques et que le code n’est pas de qualité, mais pour mon usage, cela me convient.

Les interventions
Dans la liste des interventions, la durée affichée est toujours nulle. Comme cela me gênais, j’ai donc palier au problèmes. Voici si dessous le patch que j’applique :

[code:1]— dolibarr-snapshot/htdocs/fichinter/index.php 2007-11-12 05:00:20.000000000 +0100
+++ devel/htdocs/fichinter/index.php 2007-12-05 09:25:27.000000000 +0100
@@ -75,6 +75,7 @@
if ($result)
{
$num = $db->num_rows($result);
+

 $fichinter_static=new Fichinter($db);

@@ -97,6 +98,16 @@
{
$objp = $db->fetch_object($result);
$var=!$var;
+
+ // Calcul des durées d’interventions
+ $sql="SELECT duree FROM ".MAIN_DB_PREFIX."fichinterdet WHERE fk_fichinter=".$objp->fichid;
+ $resultaj=$db->query($sql);
+ $numaj = $db->num_rows($resultaj);
+ $objp->duree=0;
+ while ($idet = mysql_fetch_row($resultaj)) { $objp->duree+=$idet[0]; }
+ $objp->duree/=3600;
+ $objp->duree=round($objp->duree,2);
+
print "";
print "fichid."\">".img_object($langs->trans("Show"«»),"task"«»).’ ‹ .$objp->ref."\n";
print ‹ socid. ›"> ›.img_object($langs->trans("ShowCompany"«»),"company"«»).’ ‹ .dolibarr_trunc($objp->nom,44)."\n";
@@ -109,6 +120,7 @@
$total += $objp->duree;
$i++;
}
+ $total=round($total,2);
print ‹  ›.$langs->trans("Total"«»). ›’;
print ‹  ›.price($total).’’;
print ‹  ›;
[/code:1]

Par la fiche, le patch est le suivant :

[code:1]— dolibarr-snapshot/htdocs/fichinter/fiche.php 2007-11-14 05:00:18.000000000 +0100
+++ devel/htdocs/fichinter/fiche.php 2007-12-05 19:43:47.000000000 +0100
@@ -577,6 +577,13 @@
}
print ‹  ›;
}
+
+ // Calcul de la durée totale
+ $sql="SELECT duree FROM ".MAIN_DB_PREFIX."fichinterdet WHERE fk_fichinter=".$fichinter->id;
+ $resultaj=$db->query($sql);
+ $numaj = $db->num_rows($resultaj);
+ $fichinter->duree=0;
+ while ($idet = mysql_fetch_row($resultaj)) { $fichinter->duree+=$idet[0]; }

    // Dur
    print ''.$langs->trans(\"TotalDuration\"«»).''.ConvertSecondToTime($fichinter->duree).'';

[/code:1]

Par contre, quand on ajoute une ligne, la durée totale de la fiche n’est pas mise à jour, cela aurait été plus propre que de faire le calcul à chaque fois.

Une amélioration (que je suis en train de réaliser mais non finalisée) est l’ajout dans le PDF des fiches d’interventions les lignes de détail et la durée.

Modèle de facture
J’ai souvent lu sur le forum, la nécéssité de rajouter un message sur les factures.

J’ai donc procédé comme suit :

Tout d’abord le patch :

[code:1]— dolibarr-snapshot/htdocs/includes/modules/facture/pdf_crabe.modules.php 2007-11-19 05:00:19.000000000 +0100
+++ devel/htdocs/includes/modules/facture/pdf_crabe.modules.php 2007-11-22 14:15:35.000000000 +0100
@@ -530,6 +530,8 @@
$pdf->MultiCell(80, 5, $lib_condition_paiement,0,‹ L ›);

         $posy=$pdf->GetY()+3;

+ $pdf->MultiCell(120, 5, $conf->global->FACTURE_MESSAGE,0,‹ L ›);
+ $posy=$pdf->GetY()+6;
}
[/code:1]

Cela passe par l’ajout d’une variable FACTURE_MESSAGE (par le menu Configuration -> Divers)
Un point a améliorer, serait de pouvoir configurer (comment ?) la position du message sur la facture.

Cordialement,

Heuu, sauf erreur, la durée se mets bien à jour chez moi depuis un CVS qui a une semaine …

Bonjour,

Chez moi, avec la CVS de ce jour, l’affichage des durées sont toujours nulle.

Par ex, dans la liste des interventions, si je prend l’intervention FI0712-0021, elle comprend 3 ligne avec des durées respectives de 0h30, 1h15, 0h30 soit un total de 2h15. Or dans la liste, la FI0712-0021 a une durée nulle. Dans le détail de l’intervention, celle ci à une durée nulle également (mais la durée de chaque ligne est OK).

Par contre, si je crée une nouvelle intervention, le système fonctionne au poil.

Normal (quoi que …), la mise à jour de la durée totale de l’intervention intervient au moment où tu valide une opération.
Sur les interventions déjà existantes, il te faut modifier/valider une opération pour que la durée totale soit mise à jour. Il te faut reprendre toutes les interventions, ou faire une requête SQL pou le faire sur toute ta base …

Ben je vais me faire une requete SQL, car sur la base de test j’ai pas beaucoup d’interventions, mais sur la base de prod, plus de 100 interventions !!! je compte pas le faire à la main

Cordialement,

Attention que désormais, les durées dans la base sont en secondes, alors qu’avant les améliorations, elles étaient en heures,minutes :wink:

Bonjour;

J’ai remarquer qu’il y a de l’ambiance ici; si vous pouvez aide moi à améliorer ma facture PDF.

J’utilise le modèle Crabe (version 2.2 stable), je cherche à ajouter une colonne avant la désignation pour affiché la référence du produit, et une 2ème colonne après la désignation pour affiché l’unité (heur, jour, kg, mèttre…)

Merci d’avance