[ 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/compta/ -> paiement_charge.php (source)

   1  <?php
   2  /* Copyright (C) 2004-2005 Laurent Destailleur  <eldy@users.sourceforge.net>
   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: paiement_charge.php,v 1.17 2005/07/10 15:46:19 eldy Exp $
  19   * $Source: /cvsroot/dolibarr/dolibarr/htdocs/compta/paiement_charge.php,v $
  20   *
  21   */
  22  
  23  /**
  24          \file       htdocs/compta/paiement_charge.php
  25          \ingroup    compta
  26          \brief      Page de création d'un paiement d'une charge
  27          \version    $Revision: 1.17 $
  28  */
  29  
  30  include_once ("./pre.inc.php");
  31  include_once ("../chargesociales.class.php");
  32  include_once (DOL_DOCUMENT_ROOT."/compta/bank/account.class.php");
  33  
  34  $chid=isset($_GET["id"])?$_GET["id"]:$_POST["id"];
  35  
  36  /*
  37   * Actions ajoute paiement
  38   */
  39  if ($_POST["action"] == 'add_paiement')
  40  {
  41      if ($_POST["paiementtype"] > 0)
  42      {
  43  
  44          $datepaye = $db->idate(mktime(12, 0 , 0,
  45          $_POST["remonth"],
  46          $_POST["reday"],
  47          $_POST["reyear"]));
  48  
  49          $paiement_id = 0;
  50          $amounts = array();
  51          foreach ($_POST as $key => $value)
  52          {
  53              if (substr($key,0,7) == 'amount_')
  54              {
  55                  $other_chid = substr($key,7);
  56  
  57                  $amounts[$other_chid] = $_POST[$key];
  58              }
  59          }
  60  
  61          $db->begin();
  62  
  63          // Creation de la ligne paiement
  64          $paiement = new PaiementCharge($db);
  65          $paiement->chid         = $chid;
  66          $paiement->datepaye     = $datepaye;
  67          $paiement->amounts      = $amounts;   // Tableau de montant
  68          $paiement->paiementtype = $_POST["paiementtype"];
  69          $paiement->num_paiement = $_POST["num_paiement"];
  70          $paiement->note         = $_POST["note"];
  71          $paiement_id = $paiement->create($user);
  72  
  73          if ($paiement_id > 0)
  74          {
  75              // On determine le montant total du paiement
  76              $total=0;
  77              foreach ($paiement->amounts as $key => $value)
  78              {
  79                  $chid = $key;
  80                  $value = trim($value);
  81                  $amount = round(ereg_replace(",",".",$value), 2);   // Un round est ok si nb avec '.'
  82                  if (is_numeric($amount)) $total += $amount;
  83              }
  84              $total = ereg_replace(",",".",$total);
  85  
  86              // Insertion dans llx_bank
  87              $label = "Règlement charge";
  88              $acc = new Account($db, $_POST["accountid"]);
  89              $bank_line_id = $acc->addline($paiement->datepaye, $paiement->paiementtype, $label, -abs($total), $paiement->num_paiement, '', $user);
  90  
  91              // Mise a jour fk_bank dans llx_paiementcharge. On connait ainsi le paiement qui a généré l'écriture bancaire
  92              if ($bank_line_id > 0)
  93              {
  94                  $paiement->update_fk_bank($bank_line_id);
  95                  
  96                  // Mise a jour liens (pour chaque charge concernée par le paiement)
  97                  //foreach ($paiement->amounts as $key => $value)
  98                  //{
  99                  //    $chid = $key;
 100                  //    $fac = new Facture($db);
 101                  //    $fac->fetch($chid);
 102                  //    $fac->fetch_client();
 103                  //    $acc->add_url_line($bank_line_id, $paiement_id, DOL_URL_ROOT.'/compta/paiement/fiche.php?id=', "(paiement)");
 104                  //    $acc->add_url_line($bank_line_id, $fac->client->id, DOL_URL_ROOT.'/compta/fiche.php?socid=', $fac->client->nom);
 105                  //}
 106  
 107                  $db->commit();
 108  
 109                  $loc = DOL_URL_ROOT.'/compta/sociales/charges.php?id='.$chid;
 110                  Header("Location: $loc");
 111                  exit;
 112              }
 113              else {
 114                  $db->rollback();
 115                  $fiche_erreur_message = "Echec de la création entrée compte: ".$db->error();
 116              }
 117          }
 118          else
 119          {
 120              $db->rollback();
 121              $fiche_erreur_message = "Echec de la création du paiement: paiement_id=$paiement_id ".$db->error();
 122          }
 123      }
 124      else
 125      {
 126          $fiche_erreur_message = "Vous devez sélectionner un mode de paiement";
 127      }
 128  }
 129  
 130  /*
 131   * Sécurité accés client
 132   */
 133  if ($user->societe_id > 0) 
 134  {
 135    $action = '';
 136    $socidp = $user->societe_id;
 137  }
 138  
 139  /*
 140   * Affichage
 141   */
 142  
 143  llxHeader();
 144  
 145  $html=new Form($db);
 146  
 147  
 148  if ($fiche_erreur_message)
 149  {
 150    print "<div class=\"error\">$fiche_erreur_message</div><br>";
 151  }
 152  
 153  
 154  /*
 155   * Formulaire de creation d'un paiement de charge
 156   */
 157  if ($_GET["action"] == 'create') 
 158  {
 159  
 160        $charge = new ChargeSociales($db);
 161        $charge->fetch($chid);
 162  
 163        $total = $charge->amount;
 164  
 165        print_titre("Emettre un paiement d'une charge");
 166        print "<br>\n";
 167  
 168        print '<form action="paiement_charge.php" method="post">';
 169        print "<input type=\"hidden\" name=\"id\" value=\"$charge->id\">";
 170        print '<input type="hidden" name="action" value="add_paiement">';
 171        print '<table cellspacing="0" class="border" width="100%" cellpadding="2">';
 172  
 173        print "<tr class=\"liste_titre\"><td colspan=\"3\">Charge</td>";
 174  
 175        print '<tr><td>'.$langs->trans("Ref").':</td><td colspan="2">';
 176        print '<a href="charges.php?id='.$chid.'">'.$chid.'</a></td></tr>';
 177        print '<tr><td>'.$langs->trans("Type").":</td><td colspan=\"2\">$charge->type_libelle</td></tr>\n";
 178        print "<tr><td>Période :</td><td colspan=\"2\">$charge->periode</td></tr>\n";
 179        print '<tr><td>'.$langs->trans("Label").' :</td><td colspan="2">'.$charge->lib."</td></tr>\n";
 180        print "<tr><td>Date échéance :</td><td colspan=\"2\">".dolibarr_print_date($charge->date_ech)."</td></tr>\n";
 181  
 182        print '<tr><td>'.$langs->trans("AmountTTC").":</td><td colspan=\"2\">".price($charge->amount).' '.$langs->trans("Currency".$conf->monnaie).'</td></tr>';
 183  
 184        $sql = "SELECT sum(p.amount) FROM ".MAIN_DB_PREFIX."paiementcharge as p WHERE p.fk_charge = $chid;";
 185        $result = $db->query($sql);
 186        if ($result) {
 187          $sumpayed = $db->result(0,0);
 188          $db->free();
 189        }
 190        print '<tr><td>'.$langs->trans("AlreadyPayed").'</td><td colspan="2"><b>'.price($sumpayed).'</b> '.$langs->trans("Currency".$conf->monnaie).'</td></tr>';
 191  
 192        print "<tr class=\"liste_titre\"><td colspan=\"3\">".$langs->trans("Payment").'</td>';
 193  
 194        print "<input type=\"hidden\" name=\"chid\" value=\"$chid\">";
 195        
 196        print '<tr><td>'.$langs->trans("Date").' :</td><td>';
 197        $html->select_date();
 198        print "</td>";
 199        print '<td>'.$langs->trans("Comments").'</td></tr>';
 200        
 201        print '<tr><td>'.$langs->trans("Type").'</td><td>';
 202        $html->select_types_paiements($charge->paiementtype, "paiementtype");
 203        print "</td>\n";
 204  
 205        print '<td rowspan="4" valign="top"><textarea name="comment" wrap="soft" cols="40" rows="6"></textarea></td></tr>';      
 206  
 207        print "<tr><td>Numéro :</td><td><input name=\"num_paiement\" type=\"text\"><br><em>Numéro du chèque / virement</em></td></tr>\n";
 208  
 209        print '<tr><td>Compte à créditer :</td><td>';
 210        $html->select_comptes($charge->accountid, "accountid", 0, "courant=1");  // Affiche liste des comptes courant
 211        print '</td></tr>';
 212  
 213        print "<tr><td valign=\"top\">".$langs->trans("RemainderToPay").":</td><td><b>".price($total - $sumpayed).'</b> '.$langs->trans("Currency".$conf->monnaie).'</td></tr>';
 214  //      print "<tr><td valign=\"top\">Montant :</td><td><input name=\"amount\" type=\"text\"></td></tr>\n";
 215              
 216        /*
 217         * Autres charges impayées
 218         */
 219  //      $sql = "SELECT f.rowid as facid,f.facnumber,f.total_ttc,".$db->pdate("f.datef")." as df";
 220  //      $sql .= ", sum(pf.amount) as am";
 221  //      $sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
 222  //      $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON pf.fk_facture = f.rowid";
 223  //      $sql .= " WHERE f.fk_soc = ".$facture->socidp;
 224  //      $sql .= " AND f.paye = 0";
 225  //      $sql .= " AND f.fk_statut = 1";  // Statut=0 => non validée, Statut=2 => annulée
 226  //      $sql .= " GROUP BY f.facnumber";  
 227  //
 228  //    $result=$db->query($sql);
 229  //      if ($result)
 230  //        {
 231  //          $num = $db->num_rows($result);
 232  //          
 233  //          if ($num > 0)
 234  //        {
 235            $num = 1;
 236            $i = 0;
 237            print '<tr><td colspan="3">';
 238            print '<table class="noborder" width="100%">';
 239            print '<tr class="liste_titre">';
 240            print '<td>Charge</td><td align="center">Date échéance</td>';
 241            print '<td align="right">'.$langs->trans("AmountTTC").'</td>';          
 242            print '<td align="right">'.$langs->trans("AlreadyPayed").'</td>';
 243            print '<td align="right">'.$langs->trans("RemainderToPay").'</td>';
 244            print '<td align="right">'.$langs->trans("Amount").'</td>';
 245            print "</tr>\n";
 246            
 247            $var=True;
 248            $total=0;
 249            $totalrecu=0;
 250            
 251            while ($i < $num)
 252              {
 253                //$objp = $db->fetch_object($result);
 254                $objp = $charge;
 255                
 256                $var=!$var;
 257                
 258                print "<tr $bc[$var]>";
 259            
 260                print '<td><a href="sociales/charge.php?id='.$objp->id.'">' . $objp->id;
 261                print "</a></td>\n";
 262                
 263                if ($objp->date_ech > 0 )
 264              {
 265                print "<td align=\"center\">".dolibarr_print_date($objp->date_ech)."</td>\n";
 266              }
 267                else
 268              {
 269                print "<td align=\"center\"><b>!!!</b></td>\n";
 270              }
 271                
 272                print '<td align="right">'.price($objp->amount)."</td>";
 273  
 274                print '<td align="right">'.price($sumpayed)."</td>";
 275                
 276                print '<td align="right">'.price($objp->amount-$sumpayed)."</td>";
 277  
 278                print '<td align="right">';
 279                if ($sumpayed < $objp->amount)
 280              {
 281                $namef = "amount_".$objp->id;
 282                print '<input type="text" size="8" name="'.$namef.'">';
 283              }
 284                else
 285              {
 286                print '-';
 287              }
 288                print "</td>";
 289  
 290                print "</tr>\n";
 291                $total+=$objp->total;
 292                $total_ttc+=$objp->total_ttc;
 293                $totalrecu+=$objp->am;
 294                $i++;
 295              }
 296            if ($i > 1)
 297              {
 298                // Print total
 299                print "<tr ".$bc[!$var].">";
 300                print '<td colspan="2" align="left">'.$langs->trans("TotalTTC").':</td>';
 301                print "<td align=\"right\"><b>".price($total_ttc)."</b></td>";
 302                print "<td align=\"right\"><b>".price($totalrecu)."</b></td>";
 303                print "<td align=\"right\"><b>".price($total_ttc - $totalrecu)."</b></td>";
 304                print '<td align="center">&nbsp;</td>';
 305                print "</tr>\n";
 306              }
 307            print "</table></td></tr>\n";
 308  //        }
 309  //          $db->free();    
 310  //        }
 311  //      else
 312  //        {
 313  //          print $sql ."<br>".$db->error();
 314  //        }
 315        /*
 316         *
 317         */
 318  
 319        print '<tr><td colspan="3" align="center"><input type="submit" value="'.$langs->trans("Save").'"></td></tr>';
 320        print "</table>";
 321        print "</form>\n";      
 322  //    }
 323  } 
 324  
 325  
 326  $db->close();
 327  
 328  llxFooter("<em>Derni&egrave;re modification $Date: 2005/07/10 15:46:19 $ r&eacute;vision $Revision: 1.17 $</em>");
 329  ?>


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