[ 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/telephonie/script/ -> facturation-emission.php (source)

   1  <?PHP
   2  /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
   3   *
   4   * This program is free software; you can redistribute it and/or modify
   5   * it under the terms of the GNU General Public License as published by
   6   * the Free Software Foundation; either version 2 of the License, or
   7   * (at your option) any later version.
   8   *
   9   * This program is distributed in the hope that it will be useful,
  10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12   * GNU General Public License for more details.
  13   *
  14   * You should have received a copy of the GNU General Public License
  15   * along with this program; if not, write to the Free Software
  16   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  17   *
  18   * $Id: facturation-emission.php,v 1.26 2005/12/05 16:34:18 rodolphe Exp $
  19   * $Source: /cvsroot/dolibarr/dolibarr/htdocs/telephonie/script/facturation-emission.php,v $
  20   *
  21   *
  22   * Script de facturation
  23   * Emets les factures compta en partant des factures téléphonique
  24   *
  25   */
  26  
  27  /**
  28     \file       htdocs/telephonie/script/facturation-emission.php
  29     \ingroup    telephonie
  30     \brief      Emission des factures
  31     \version    $Revision: 1.26 $
  32  */
  33  
  34  
  35  require  ("../../master.inc.php");
  36  
  37  $opt = getopt("l:c:");
  38  
  39  $limit = $opt['l'];
  40  $optcontrat = $opt['c'];
  41  
  42  if (strlen($limit) == 0 && strlen($optcontrat) == 0)
  43  {
  44    print "Usage :\n  php facturation-emission.php -l <limit>\n";
  45    exit;
  46  }
  47  
  48  require_once  (DOL_DOCUMENT_ROOT."/facture.class.php");
  49  require_once  (DOL_DOCUMENT_ROOT."/societe.class.php");
  50  require_once  (DOL_DOCUMENT_ROOT."/paiement.class.php");
  51  require_once (DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php");
  52  require_once (DOL_DOCUMENT_ROOT."/telephonie/lignetel.class.php");
  53  require_once (DOL_DOCUMENT_ROOT."/telephonie/facturetel.class.php");
  54  require_once (DOL_DOCUMENT_ROOT."/telephonie/telephonie.contrat.class.php");
  55  
  56  
  57  $error = 0;
  58  
  59  $datetime = time();
  60  $datetimeprev = $datetime; // Date du prélèvement
  61  
  62  $date = strftime("%d%h%Y%Hh%Mm%S",$datetime);
  63  
  64  $user = new User($db, 1);
  65  
  66  $month = strftime("%m", $datetime);
  67  $year = strftime("%Y", $datetime);
  68  
  69  if ($month == 1)
  70  {
  71    $month = "12";
  72    $year = $year - 1;
  73  }
  74  else
  75  {
  76    $month = substr("00".($month - 1), -2) ;
  77  }
  78  
  79  /*
  80   * Lecture du batch
  81   *
  82   */
  83  
  84  $sql = "SELECT MAX(rowid) FROM ".MAIN_DB_PREFIX."telephonie_facturation_batch";
  85  
  86  $resql = $db->query($sql);
  87    
  88  if ( $resql )
  89  {
  90    $row = $db->fetch_row($resql);
  91  
  92    $batch_id = $row[0];
  93  
  94    dolibarr_syslog("Traitement du batch ".$batch_id);
  95    $db->free($resql);
  96  }
  97  else
  98  {
  99    $error = 1;
 100    dolibarr_syslog("Erreur ".$error);
 101  }
 102  
 103  /*
 104   * Traitements
 105   *
 106   */
 107  
 108  if (!$error)
 109  {
 110    /***************************************************************
 111     *
 112     * Lectures des contrats a traiter
 113     *
 114     *
 115     ***************************************************************/
 116  
 117    dolibarr_syslog("Lecture des contrats");
 118        
 119    $sql = "SELECT distinct(c.rowid)";
 120    $sql .= " FROM ".MAIN_DB_PREFIX."telephonie_facture as f";
 121    $sql .= " ,    ".MAIN_DB_PREFIX."telephonie_societe_ligne as l";
 122    $sql .= " ,    ".MAIN_DB_PREFIX."telephonie_contrat as c";
 123  
 124    $sql .= " WHERE f.fk_facture IS NULL";
 125    $sql .= " AND f.fk_batch = ".$batch_id;
 126    $sql .= " AND f.isfacturable = 'oui'"; 
 127    $sql .= " AND f.fk_ligne = l.rowid ";
 128    $sql .= " AND l.fk_contrat = c.rowid";  
 129    
 130    if (strlen($optcontrat) >  0)
 131      {
 132        $sql .= " AND c.rowid=".$optcontrat;
 133        dolibarr_syslog("Limite sur le contrat : ".$optcontrat);
 134      }
 135    else
 136      {
 137        $sql .= " LIMIT $limit";
 138      }
 139    
 140    $contrats = array();
 141    
 142    $resql = $db->query($sql) ;
 143  
 144    if ( $resql )
 145      {
 146        $num = $db->num_rows($resql);      
 147        $i = 0;
 148        
 149        while ($i < $num)
 150      {
 151        $row = $db->fetch_row($resql);
 152        $contrats[$i] = $row[0];
 153        $i++;
 154      }            
 155        $db->free();
 156      }
 157    else
 158      {
 159        $error = 2;
 160        dolibarr_syslog("Erreur $error");
 161      }
 162  }
 163  /*
 164   *
 165   *
 166   */
 167  if (!$error)
 168  { 
 169    dolibarr_syslog("Nombre de contrats à facturer ".sizeof($contrats));
 170    
 171    $xcli = 0;
 172    $xclis = sizeof($contrats);
 173    
 174    foreach ($contrats as $contrat)
 175      {
 176        $xcli++;
 177        
 178        /* Lecture des factures téléphoniques du contrat */
 179        dolibarr_syslog($xcli."/".$xclis." Contrat à facturer id=".$contrat." (".memory_get_usage() .")");
 180        
 181        $sql = "SELECT f.rowid, s.idp FROM ";     
 182        $sql .=     MAIN_DB_PREFIX."telephonie_facture as f";
 183        $sql .= ",".MAIN_DB_PREFIX."telephonie_societe_ligne as l";
 184        $sql .= " ,    ".MAIN_DB_PREFIX."telephonie_contrat as c";
 185        $sql .= ",".MAIN_DB_PREFIX."societe as s";
 186  
 187        $sql .= " WHERE f.fk_batch = ".$batch_id;
 188        $sql .= " AND c.rowid = ".$contrat;
 189        $sql .= " AND l.fk_contrat = c.rowid";
 190        $sql .= " AND l.rowid = f.fk_ligne";
 191        $sql .= " AND s.idp = c.fk_soc_facture ";
 192        $sql .= " AND f.fk_facture IS NULL";
 193        $sql .= " AND f.isfacturable = 'oui'";  
 194  
 195        $sql .= " ORDER BY l.code_analytique ASC, l.rowid DESC";
 196        
 197        $numlignes = array();
 198        
 199        if ( $db->query($sql) )
 200      {
 201        $num = $db->num_rows();
 202        
 203        $i = 0;
 204        
 205        while ($i < $num)
 206          {
 207            $objp = $db->fetch_object();
 208            
 209            $numlignes[$i] = $objp->rowid;
 210            
 211            $i++;
 212          }            
 213        $db->free();
 214        
 215        dolibarr_syslog("Contrat $contrat : $i factures trouvées à générer");
 216  
 217        $factures_prev = array();
 218        $factures_a_mailer = array();
 219  
 220        if (sizeof($numlignes) > 0)
 221          {
 222            facture_contrat($db, $user, $contrat, $numlignes, $datetime, $factures_prev, $factures_a_mailer); 
 223          }
 224  
 225        if (sizeof($numlignes) > 0)
 226          {
 227            _prelevements($db, $user, $factures_prev); 
 228          }
 229  
 230        if (sizeof($numlignes) > 0)
 231          {
 232            _emails($db, $user, $contrat, $factures_a_mailer);
 233          }
 234  
 235      }
 236        else
 237      {
 238        $error = 1;
 239        print $db->error();
 240      }     
 241      }
 242  }
 243   
 244  
 245  function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$factures_prev, &$factures_a_mailer)
 246  {
 247    /*
 248     * Traitements
 249     *
 250     */
 251                                          
 252    $i = 0;          
 253    $error = 0;
 254    
 255    /* Ouverture de la transaction */
 256    
 257    if (! $db->query("BEGIN") )
 258      {
 259        $error++;
 260      }
 261    
 262    /* Lecture du contrat */
 263  
 264    if (!$error)
 265      {
 266        $contrat = new TelephonieContrat($db);
 267        if ( $contrat->fetch($contrat_id) >= 0)
 268      {
 269        
 270      }
 271        else
 272      {
 273        $error++;
 274        dolibarr_syslog("Impossible de lire le contrat");      
 275      }
 276      }
 277  
 278    /* Lecture de la société */
 279   
 280    if (!$error)
 281      {
 282        $soc = new Societe($db);
 283  
 284        if ($soc->fetch($contrat->client_facture_id) )
 285      {
 286        if ($verbose) dolibarr_syslog($soc->nom);
 287      }
 288        else
 289      {
 290        $error = 132;
 291      }
 292      }
 293        
 294    /* Recuperation des infos de factures dans la base
 295     * Creation de la facture
 296     *
 297     */          
 298    if (!$error)
 299      {
 300        if ($verbose) dolibarr_syslog("Création facture pour $soc->nom");
 301  
 302        $fac = new Facture($db, $soc->id);
 303        $cancel_facture = 1;
 304        $fac->date = $datetime;
 305        $fac->cond_reglement = 1;
 306        $fac->remise_percent = 0;
 307        
 308        $facid = $fac->create($user);
 309        
 310        if ($facid > 0)
 311      {
 312        
 313      }
 314        else
 315      {
 316        dolibarr_syslog("Erreur création objet facture");
 317        $error = 4;
 318      }          
 319      }
 320    
 321    /*
 322     * Lecture des différentes lignes rattachées
 323     *
 324     */
 325    if (!$error)
 326      {                
 327        foreach ($factel_ids as $factel_id)
 328      {
 329        /* Lecture de la facture téléphonique */
 330        
 331        $factel = new FactureTel($db);
 332        if ($factel->fetch($factel_id) == 0)
 333          {
 334            
 335          }
 336        else
 337          {
 338            dolibarr_syslog("ERREUR lecture facture téléphonique $factel_id");
 339            $error++;
 340          }
 341        
 342        /* Lecture de la ligne correspondante */
 343        
 344        $ligne = new LigneTel($db);
 345        if ($ligne->fetch($factel->ligne) == 1)
 346          {
 347            
 348          }
 349        else
 350          {
 351            dolibarr_syslog("ERREUR lecture ligne $factel->ligne");
 352            $error++;
 353          }
 354        
 355        if (!$error && $ligne->facturable) /* Test si on doit facturer ou non la ligne */
 356          {          
 357            $cancel_facture = 0;
 358            
 359            /* Création du lien entre les factures */
 360            
 361            if ($factel->affect_num_facture_compta($facid) == 0)
 362          {
 363            
 364          }
 365            else
 366          {
 367            $error++;
 368          }
 369            
 370            $soca = new Societe($db);
 371            $soca->fetch($ligne->client_id);
 372                      
 373            /* Insertion des lignes de factures */
 374            $libelle = "";
 375  
 376            if (strlen(trim($ligne->code_analytique)) > 0)
 377          {
 378            $libelle .= "".$ligne->code_analytique." ";
 379          }
 380  
 381            $dm = mktime (1,1,1,strftime("%m",$datetime), -1, strftime("%Y",$datetime));
 382  
 383            $libelle .= "Communications téléphoniques de la ligne $ligne->numero";
 384            $libelle .= " mois de ".strftime("%B %Y",$dm);
 385            if (trim($soca->ville))
 386          {
 387            $libelle .= " (".$soca->ville.")";
 388          }
 389  
 390            if (!$error)
 391          {
 392            $ventil = 0 ;
 393            if (defined("TELEPHONIE_COMPTE_VENTILATION"))
 394              {
 395  
 396                if (is_numeric(TELEPHONIE_COMPTE_VENTILATION))
 397              {              
 398                $ventil = TELEPHONIE_COMPTE_VENTILATION;
 399              }
 400              }
 401  
 402  
 403            $result = $fac->addline($facid,
 404                        $libelle,
 405                        $factel->cout_vente_remise,
 406                        1,
 407                        '19.6',
 408                        0,
 409                        0,'','',$ventil);          
 410          }                        
 411          }
 412                     
 413      } /* Fin de la boucle des lignes */
 414      }
 415  
 416    /*********************************/
 417    /*                               */      
 418    /* Ajout des services            */
 419    /*                               */
 420    /*********************************/
 421  
 422    if (!$error)
 423      {
 424        $sql = "SELECT s.libelle_facture, sc.montant";
 425        $sql .= " FROM ".MAIN_DB_PREFIX."telephonie_contrat_service as sc";
 426        $sql .= " , ".MAIN_DB_PREFIX."telephonie_service as s";
 427              
 428        $sql .= " WHERE sc.fk_contrat = ".$contrat_id;
 429        $sql .= " AND s.rowid = sc.fk_service";  
 430        $sql .= " AND sc.montant > 0";
 431  
 432        $resql = $db->query($sql) ;
 433  
 434        if ( $resql )
 435      {
 436        $num = $db->num_rows($resql);      
 437        $is = 0;
 438        
 439        while ($is < $num)
 440          {
 441            $row = $db->fetch_row($resql);
 442  
 443            $result = $fac->addline($facid,
 444                        $row[0],
 445                        $row[1],
 446                        1,
 447                        '19.6',
 448                        0,
 449                        0,
 450                        0);
 451            $is++;
 452          }            
 453        $db->free();
 454      }
 455        else
 456      {
 457        $error = 2;
 458        dolibarr_syslog("Erreur $error");
 459      }
 460      }
 461       
 462    /*********************************/
 463    /*                               */      
 464    /* Ajout rejets de prelevements  */
 465    /*                               */
 466    /*********************************/
 467    if (!$error)
 468      {
 469        $sql = "SELECT pr.rowid,".$db->pdate("pr.date_rejet");
 470        $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_rejet as pr";
 471        $sql .= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl";
 472        $sql .= " WHERE pl.fk_soc = ".$soc->id;
 473        $sql .= " AND pr.fk_prelevement_lignes = pl.rowid";
 474        $sql .= " AND afacturer = 1 LIMIT 1;";
 475        $resql = $db->query($sql) ;
 476        if ( $resql )
 477      {
 478        while ($row = $db->fetch_row($resql))
 479          {
 480            $result = $fac->addline($facid,
 481                        "Frais pour prélèvement rejeté du ".strftime("%d/%m/%Y",$row[1]),
 482                        15,
 483                        1,
 484                        '0',
 485                        0,
 486                        0,
 487                        0);
 488  
 489            $sqlu = "UPDATE ".MAIN_DB_PREFIX."prelevement_rejet as pr";
 490            $sqlu .= " SET afacturer=0";
 491            $sqlu .= " ,fk_facture=".$facid;
 492            $sqlu .= " WHERE rowid=".$row[0].";";
 493  
 494            $resqlu = $db->query($sqlu);
 495          }            
 496        $db->free($resql);
 497      }
 498        else
 499      {
 500        $error = 21;
 501        dolibarr_syslog($db->error());
 502        dolibarr_syslog("Erreur rejet prelevement");
 503      }
 504      }
 505  
 506  
 507    /*********************************/
 508    /*                               */      
 509    /* Validation de la facture      */
 510    /*                               */
 511    /*********************************/
 512    
 513    if (!$error && !$cancel_facture)
 514      {
 515        if ($verbose) dolibarr_syslog("Validation de la facture : $facid");
 516        
 517        $y = substr($year, -1);
 518        $m = substr("00".$month, -2);
 519        
 520        if ( $fac->set_valid($facid, $user, $soc) )
 521      {
 522        $valid_ok = 1;
 523      }
 524        else
 525      {
 526        $valid_ok = 0;
 527        $error = 5;
 528      }      
 529      }
 530  
 531    /**************************************/
 532    /*                                    */
 533    /* Factures détaillées                */
 534    /*                                    */
 535    /**************************************/
 536  
 537    if (!$error && !$cancel_facture)
 538      {
 539        foreach ($factel_ids as $factel_id)
 540      {
 541        /* Lecture de la facture téléphonique */
 542        
 543        $factel = new FactureTel($db);
 544        if ($factel->fetch($factel_id) == 0)
 545          {
 546            
 547          }
 548        else
 549          {
 550            dolibarr_syslog("ERREUR lecture facture téléphonique $factel_id");
 551            $error++;
 552          }
 553        
 554        /* Lecture de la ligne correspondante */
 555        
 556        $ligne = new LigneTel($db);
 557        if ($ligne->fetch($factel->ligne) == 1)
 558          {
 559            
 560          }
 561        else
 562          {
 563            dolibarr_syslog("ERREUR lecture ligne $factel->ligne");
 564            $error++;
 565          }
 566  
 567        /* Facture détaillée standard */
 568  
 569        if (!$error)
 570          {
 571            $facok = 0;
 572            
 573            // Différents modèles de factures détaillées
 574            
 575            $modele = "standard";
 576            if (strlen($ligne->pdfdetail) > 0)
 577          {
 578            $modele = $ligne->pdfdetail;
 579          }
 580            
 581            require_once (DOL_DOCUMENT_ROOT."/telephonie/pdf/pdfdetail_".$modele.".modules.php");
 582            $class = "pdfdetail_".$modele;
 583            
 584            $facdet = new $class($db, $ligne, $year, $month, $factel);
 585            
 586            if ($facdet->write_pdf_file($factel, $factel->ligne) == 0)
 587          {
 588            $facok++;
 589          }
 590            else
 591          {
 592            dolibarr_syslog("ERREUR lors de Génération du pdf détaillé");
 593            $error = 19;
 594          } 
 595          }
 596  
 597        /* Factures détaillées autres */
 598  
 599        if (!$error)
 600          {
 601            // Recherche des factures détaillées
 602            // et copie dans le répertoire de la facture
 603            // ID facture telephonique $factel_id
 604            $fdefacid = substr('0000'.$factel_id, -4);
 605            $fdedir = DOL_DATA_ROOT.'/telephonie/facture/';
 606  
 607            $fdedir .= substr($fdefacid,0,1)."/";
 608            $fdedir .= substr($fdefacid,1,1)."/";
 609            $fdedir .= substr($fdefacid,2,1)."/";
 610            $fdedir .= substr($fdefacid,3,1)."/";
 611      
 612            $fname = $fdedir . $fdefacid . "-detail.xls";
 613  
 614            if (file_exists($fname))
 615          {
 616            $fdefac = new Facture($db,"",$factel->fk_facture);
 617            $fdefac->fetch($factel->fk_facture);  
 618  
 619            $dest = FAC_OUTPUTDIR ."/".$fdefac->ref."/".$fdefac->ref."-".$fdefacid."-".$ligne->numero."-detail.xls";
 620  
 621            copy($fname, $dest);
 622          }
 623          }
 624      }          
 625      }
 626  
 627    /*********************************/
 628    /*                               */
 629    /* Creation du pdf de la facture */
 630    /*                               */
 631    /*********************************/
 632    
 633    if (!$error && !$cancel_facture && $valid_ok == 1)
 634      {
 635        if ($verbose) dolibarr_syslog("Génération du pdf facture : $facid");
 636        
 637        $fac->fetch($facid);
 638        $fac->fetch_client();
 639        $fac->client->rib();
 640        
 641        $message = "";
 642        
 643        if ($fac->client->bank_account->verif() && $ligne->mode_paiement == 'pre')
 644      {
 645        $message .= "Cette facture sera prélevée sur votre compte bancaire numéro : ";
 646        $message .= $fac->client->bank_account->number;
 647      }
 648        
 649        if ($verbose) dolibarr_syslog("Création du pdf facture : $facid");
 650        
 651        if (! facture_pdf_create($db, $facid, $message))
 652      {
 653        $error = 1;
 654        print "- ERREUR de génération du pdf de la facture\n";
 655      }
 656      }
 657    
 658    if (!$error && !$cancel_facture)
 659      {
 660        $db->query("COMMIT");      
 661        /* $soc
 662         * $ligne
 663         */
 664        
 665        if ($contrat->facturable)
 666      {
 667        array_push($factures_a_mailer, $facid);
 668        
 669        if ($soc->verif_rib())
 670          {
 671            array_push($factures_prev, $facid);
 672          }
 673        else
 674          {
 675            dolibarr_syslog("facture $facid non preleve, RIB incorrect");
 676          }      
 677      }
 678        
 679        if ($verbose) dolibarr_syslog("Commit de la transaction");;
 680      }
 681    else
 682      {
 683        $db->query("ROLLBACK");
 684        dolibarr_syslog("ROLLBACK de la transaction");;
 685      }    
 686  }
 687  
 688  function _prelevements($db, $user, $factures_prev)
 689  { 
 690    /********************************************************************
 691     *                                                                  *
 692     *                                                                  *
 693     * Emissions des demandes de prelevement                            *
 694     *                                                                  *
 695     *                                                                  *
 696     ********************************************************************/  
 697    //dolibarr_syslog("[PR] Debut demande de prelevement");
 698    //dolibarr_syslog("[PR] Nombre de factures ".sizeof($factures_prev)); 
 699    if (sizeof($factures_prev) > 0)
 700      {
 701        foreach ($factures_prev as $fac)
 702      {
 703        $fact = new Facture($db);
 704        $fact->fetch($fac);
 705        $fact->mode_reglement(3);
 706        $fact->demande_prelevement($user);
 707      }
 708      }
 709    //dolibarr_syslog("[PR] Fin demande de prelevement");
 710  }
 711  
 712  
 713  
 714  function _emails($db, $user, $contrat_id, $factures_a_mailer)
 715  {
 716    /********************************************************************
 717     *                                                                  *
 718     *                                                                  *
 719     * Envoi des factures par emails                                    *
 720     *                                                                  *
 721     *                                                                  *
 722     ********************************************************************/
 723    if (sizeof($factures_a_mailer) > 0)
 724      {
 725        foreach ($factures_a_mailer as $fac)
 726      {
 727        $fact = new Facture($db);
 728        $fact->fetch($fac);
 729  
 730        $contrat = new TelephonieContrat($db);
 731        $contrat->fetch($contrat_id);
 732  
 733        $emails = $contrat->get_contact_facture();
 734  
 735        $ligne = new LigneTel($db);
 736  
 737        if ($ligne->fetch_by_facture_number($fact->id) == 0)
 738          {
 739  
 740          }
 741  
 742        if (sizeof($emails > 0))
 743          {
 744            $sendto = "";
 745            for ($k = 0 ; $k < sizeof($emails) ; $k++)
 746            {
 747          $sendto .= html_entity_decode($emails[$k]) . ",";
 748            }
 749            $sendto = substr($sendto,0,strlen($sendto) - 1);
 750  
 751  
 752            dolibarr_syslog("[EM] Envoi email à ".html_entity_decode($sendto) );
 753  
 754            $subject = ereg_replace("#FACREF#",$fact->ref,TELEPHONIE_MAIL_FACTURATION_SUJET);
 755            $subject = ereg_replace("#CONTRAT#",$contrat->ref, $subject);
 756  
 757            $from = TELEPHONIE_EMAIL_FACTURATION_EMAIL;
 758            
 759            $message = "Bonjour,\n\n";
 760            $message .= "Veuillez trouver ci-joint notre facture numéro $fact->ref du ".strftime("%d/%m/%Y",$fact->date).".";
 761  
 762            $message .= "\nEgalement joint à ce mail le détails de vos communications.\n\n";
 763  
 764            $message .= TELEPHONIE_MAIL_FACTURATION_SIGNATURE;
 765            
 766            
 767            $mailfile = new DolibarrMail($subject,
 768                         $sendto,
 769                         $from,
 770                         $message);
 771            
 772            $mailfile->addr_bcc = TELEPHONIE_EMAIL_FACTURATION_EMAIL;
 773  
 774            $arr_file = array();          
 775            $arr_name = array();
 776            $arr_mime = array();
 777  
 778            $facfile = FAC_OUTPUTDIR . "/" . $fact->ref . "/" . $fact->ref . ".pdf";
 779  
 780            /*
 781             * Joint le fichier commercial supplémentaire
 782             */
 783            //array_push($arr_file, "/home/www/dolibarr/documents/hp65152.pdf");
 784            //array_push($arr_mime, "application/pdf");
 785            //array_push($arr_name, "hp65152.pdf");
 786  
 787            /*
 788             * Join la facture
 789             */
 790            array_push($arr_file, $facfile);
 791            array_push($arr_mime, "application/pdf");
 792            array_push($arr_name, $fact->ref.".pdf");
 793  
 794            $dir = FAC_OUTPUTDIR . "/" . $fact->ref . "/";
 795  
 796            $handle=opendir(FAC_OUTPUTDIR . "/" . $fact->ref . "/");
 797            /*
 798             * Joint les détails
 799             *
 800             */
 801            while (($file = readdir($handle))!==false)
 802          {
 803            if (is_readable($dir.$file) && substr($file, -11) == '-detail.pdf')
 804              {
 805                array_push($arr_file, $dir.$file);
 806                array_push($arr_mime, "application/pdf");
 807                array_push($arr_name, $file);
 808              }
 809            if (is_readable($dir.$file) && substr($file, -11) == '-detail.xls')
 810              {
 811                array_push($arr_file, $dir.$file);
 812                array_push($arr_mime, "application/vns.ms-excel");
 813                array_push($arr_name, $file);
 814              }
 815          }
 816            
 817            $mailfile->PrepareFile($arr_file, $arr_mime, $arr_name);
 818            
 819            if ( $mailfile->sendfile() )
 820          {
 821          
 822            for ($kj = 0 ; $kj < sizeof($contrat->contact_facture_id) ; $kj++)
 823            {
 824              $sendtoid = $contrat->contact_facture_id[$kj];
 825                
 826              $sendtox = $emails[$kj];
 827                
 828              $actioncode=9;
 829              $actionmsg="Envoyée à $sendtox";
 830              $actionmsg2="Envoi Facture par mail";
 831              
 832              $sql = "INSERT INTO ".MAIN_DB_PREFIX."actioncomm (datea,fk_action,fk_soc,note,fk_facture, fk_contact,fk_user_author, label, percent) VALUES (now(), '$actioncode' ,'$fact->socidp' ,'$actionmsg','$fact->id','$sendtoid','$user->id', '$actionmsg2',100);";
 833               
 834              if (! $db->query($sql) )
 835                {
 836              print $db->error();
 837                }
 838              else
 839                {
 840              //print "TOTO".$sendto. " ". $sendtoid ." \n";
 841                }
 842              
 843            }
 844            
 845          }
 846          }
 847        else
 848          {
 849            dolibarr_syslog("Aucun email trouvé");
 850          }
 851      }
 852      }
 853  }
 854  /*
 855   * FIN
 856   *
 857   */
 858  
 859  $db->close();
 860  
 861  dolibarr_syslog("Conso mémoire ".memory_get_usage() );
 862  
 863  ?>


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