[ Index ]
 

Code source de Dolibarr 2.0.1

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/htdocs/includes/modules/facture/ -> modules_facture.php (source)

   1  <?php
   2  /* Copyright (C) 2003-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
   3   * Copyright (C) 2004-2005 Laurent Destailleur  <eldy@users.sourceforge.net>
   4   * Copyright (C) 2004      Eric Seigne          <eric.seigne@ryxeo.com>
   5   * Copyright (C) 2005      Regis Houssin        <regis.houssin@cap-networks.com>
   6   *
   7   * This program is free software; you can redistribute it and/or modify
   8   * it under the terms of the GNU General Public License as published by
   9   * the Free Software Foundation; either version 2 of the License, or
  10   * (at your option) any later version.
  11   *
  12   * This program is distributed in the hope that it will be useful,
  13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15   * GNU General Public License for more details.
  16   *
  17   * You should have received a copy of the GNU General Public License
  18   * along with this program; if not, write to the Free Software
  19   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  20   * or see http://www.gnu.org/
  21   *
  22   * $Id: modules_facture.php,v 1.36 2005/12/07 14:06:20 rodolphe Exp $
  23   * $Source: /cvsroot/dolibarr/dolibarr/htdocs/includes/modules/facture/modules_facture.php,v $
  24   */
  25  
  26  /**
  27     \file       htdocs/includes/modules/facture/modules_facture.php
  28     \ingroup    facture
  29     \brief      Fichier contenant la classe mère de generation des factures en PDF
  30     et la classe mère de numérotation des factures
  31     \version    $Revision: 1.36 $
  32  */
  33  
  34  require_once(FPDF_PATH.'fpdf.php');
  35  require_once(DOL_DOCUMENT_ROOT."/product.class.php");
  36  require_once (DOL_DOCUMENT_ROOT."/compta/bank/account.class.php");   // Requis car utilisé dans les classes qui héritent
  37  
  38  
  39  /**
  40     \class      ModelePDFFactures
  41     \brief      Classe mère des modèles de facture
  42  */
  43  
  44  class ModelePDFFactures extends FPDF
  45  {
  46    var $error='';
  47  
  48    /** 
  49     *       \brief      Renvoi le dernier message d'erreur de création de facture
  50     */
  51    function pdferror()
  52    {
  53      return $this->error;
  54    }
  55  
  56    /** 
  57     *      \brief      Renvoi la liste des modèles actifs
  58     *      \param      db      Handler de base
  59     */
  60    function liste_modeles($db)
  61    {
  62      $liste=array();
  63      $sql ="";
  64          
  65      $resql = $db->query($sql);
  66      if ($resql)
  67        {
  68      $num = $db->num_rows($resql);
  69      $i = 0;
  70      while ($i < $num)
  71        {
  72          $row = $db->fetch_row($resql);
  73          $liste[$row[0]]=$row[1];
  74          $i++;
  75        }
  76        }
  77      else
  78        {
  79      return -1;
  80        }
  81      return $liste;
  82    }
  83  
  84  }
  85  
  86  /**
  87     \class      ModeleNumRefFactures
  88     \brief      Classe mère des modèles de numérotation des références de facture
  89  */
  90  
  91  class ModeleNumRefFactures
  92  {
  93    var $error='';
  94  
  95    /**     \brief      Renvoi la description par defaut du modele de numérotation
  96     *      \return     string      Texte descripif
  97     */
  98    function info()
  99    {
 100      global $langs;
 101      $langs->load("bills");
 102      return $langs->trans("NoDescription");
 103    }
 104  
 105    /**     \brief      Renvoi un exemple de numérotation
 106     *      \return     string      Example
 107     */
 108    function getExample()
 109    {
 110      global $langs;
 111      $langs->load("bills");
 112      return $langs->trans("NoExample");
 113    }
 114  
 115    /**     \brief      Test si les numéros déjà en vigueur dans la base ne provoquent pas de
 116     *                  de conflits qui empechera cette numérotation de fonctionner.
 117     *      \return     boolean     false si conflit, true si ok
 118     */
 119    function canBeActivated()
 120    {
 121      return true;
 122    }
 123  
 124    /**     \brief      Renvoi prochaine valeur attribuée
 125     *      \return     string      Valeur
 126     */
 127    function getNextValue()
 128    {
 129      global $langs;
 130      return $langs->trans("NotAvailable");
 131    }
 132  }
 133  
 134  
 135  /**
 136     \brief    Crée un facture sur disque en fonction du modèle de FACTURE_ADDON_PDF
 137     \param    db          objet base de donnée
 138     \param    facid        id de la facture à créer
 139     \param    message        message
 140     \return   int         0 si KO, 1 si OK
 141  */
 142  function facture_pdf_create($db, $facid, $message="")
 143  {
 144    global $langs;
 145    $langs->load("bills");
 146  
 147    $dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/";
 148  
 149    if (defined("FACTURE_ADDON_PDF") && FACTURE_ADDON_PDF)
 150      {
 151        $file = "pdf_".FACTURE_ADDON_PDF.".modules.php";
 152  
 153        $classname = "pdf_".FACTURE_ADDON_PDF;
 154        require_once($dir.$file);
 155  
 156        $obj = new $classname($db);
 157        $obj->message = $message;
 158  
 159        if ( $obj->write_pdf_file($facid) > 0)
 160      {
 161        // Succès de la création de la facture. On génère le fichier meta
 162        facture_meta_create($db, $facid);
 163        
 164        // et on supprime l'image correspondant au preview
 165        facture_delete_preview($db, $facid);
 166  
 167        return 1; //TODO A MODIFIER
 168      }
 169        else
 170      {
 171        dolibarr_syslog("Erreur dans facture_pdf_create");
 172        dolibarr_print_error($db,$obj->pdferror());
 173        return 0;
 174      }
 175  
 176      }
 177    else
 178      {
 179        print $langs->trans("Error")." ".$langs->trans("Error_FACTURE_ADDON_PDF_NotDefined");
 180        return 0;
 181      }
 182  }
 183  
 184  /**
 185     \brief       Créé un meta fichier à côté de la facture sur le disque pour faciliter les recherches en texte plein. Pourquoi ? tout simplement parcequ'en fin d'exercice quand je suis avec mon comptable je n'ai pas de connexion internet "rapide" pour retrouver en 2 secondes une facture non payée ou compliquée à gérer ... avec un rgrep c'est vite fait bien fait [eric seigne]
 186     \param        db          Objet base de donnée
 187     \param        facid        Id de la facture à créer
 188     \param       message     Message
 189  */
 190  function facture_meta_create($db, $facid, $message="")
 191  {
 192    global $langs,$conf;
 193    
 194    $fac = new Facture($db,"",$facid);
 195    $fac->fetch($facid);  
 196    $fac->fetch_client();
 197    
 198    if ($conf->facture->dir_output)
 199      {
 200        $facref = sanitize_string($fac->ref); 
 201        $dir = $conf->facture->dir_output . "/" . $facref ; 
 202        $file = $dir . "/" . $facref . ".meta";
 203        
 204        if (! file_exists($dir))
 205          {
 206        umask(0);
 207        if (! mkdir($dir, 0755))
 208              {
 209            $this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
 210            return 0;
 211              }
 212          }
 213        
 214        if (file_exists($dir))
 215      {
 216        $nblignes = sizeof($fac->lignes);
 217        $client = $fac->client->nom . " " . $fac->client->adresse . " " . $fac->client->cp . " " . $fac->client->ville;
 218        $meta = "REFERENCE=\"" . $fac->ref . "\"
 219  DATE=\"" . strftime("%d/%m/%Y",$fac->date) . "\"
 220  NB_ITEMS=\"" . $nblignes . "\"
 221  CLIENT=\"" . $client . "\"
 222  TOTAL_HT=\"" . $fac->total_ht . "\"
 223  TOTAL_TTC=\"" . $fac->total_ttc . "\"\n";
 224        
 225        for ($i = 0 ; $i < $nblignes ; $i++) {
 226          //Pour les articles
 227          $meta .= "ITEM_" . $i . "_QUANTITY=\"" . $fac->lignes[$i]->qty . "\"
 228  ITEM_" . $i . "_UNIT_PRICE=\"" . $fac->lignes[$i]->price . "\"
 229  ITEM_" . $i . "_TVA=\"" .$fac->lignes[$i]->tva_taux . "\"
 230  ITEM_" . $i . "_DESCRIPTION=\"" . str_replace("\r\n","",nl2br($fac->lignes[$i]->desc)) . "\"
 231  ";
 232        }
 233      }
 234        $fp = fopen ($file,"w");
 235        fputs($fp,$meta);
 236        fclose($fp);
 237      }
 238  }
 239  
 240  
 241  /**
 242     \brief       Supprime l'image de prévisualitation, pour le cas de régénération de facture
 243     \param        db          objet base de donnée
 244     \param        facid        id de la facture à créer
 245  */
 246  function facture_delete_preview($db, $facid)
 247  {
 248    global $langs,$conf;
 249  
 250    $fac = new Facture($db,"",$facid);
 251    $fac->fetch($facid);  
 252    $fac->fetch_client();
 253  
 254    if ($conf->facture->dir_output)
 255      {
 256        $facref = sanitize_string($fac->ref); 
 257        $dir = $conf->facture->dir_output . "/" . $facref ; 
 258        $file = $dir . "/" . $facref . ".pdf.png";
 259  
 260        if ( file_exists( $file ) && is_writable( $file ) )
 261      {
 262        if ( ! unlink($file) )
 263          {
 264            $this->error=$langs->trans("ErrorFailedToOpenFile",$file);
 265            return 0;
 266          }
 267      }
 268      }
 269  }
 270  
 271  ?>


Généré le : Mon Nov 26 12:29:37 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics