| [ Index ] |
|
Code source de Dolibarr 2.0.1 |
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"> </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ère modification $Date: 2005/07/10 15:46:19 $ révision $Revision: 1.17 $</em>"); 329 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
| Généré le : Mon Nov 26 12:29:37 2007 | par Balluche grâce à PHPXref 0.7 |
|