dolibarr  18.0.6
line.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
5  * Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
6  * Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <https://www.gnu.org/licenses/>.
20  */
21 
28 // Load Dolibarr environment
29 require '../../main.inc.php';
30 require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/ligneprelevement.class.php';
32 require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/rejetprelevement.class.php';
33 require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
34 require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
35 
36 // Load translation files required by the page
37 $langs->loadlangs(array('banks', 'categories', 'bills', 'companies', 'withdrawals'));
38 
39 // Get supervariables
40 $action = GETPOST('action', 'aZ09');
41 $id = GETPOST('id', 'int');
42 $socid = GETPOST('socid', 'int');
43 
44 $type = GETPOST('type', 'aZ09');
45 
46 $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
47 $sortorder = GETPOST('sortorder', 'aZ09comma');
48 $sortfield = GETPOST('sortfield', 'aZ09comma');
49 $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
50 if (empty($page) || $page < 0 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha')) {
51  // If $page is not defined, or '' or -1 or if we click on clear filters
52  $page = 0;
53 }
54 $offset = $limit * $page;
55 $pageprev = $page - 1;
56 $pagenext = $page + 1;
57 
58 if ($sortorder == "") {
59  $sortorder = "DESC";
60 }
61 if ($sortfield == "") {
62  $sortfield = "pl.fk_soc";
63 }
64 
65 
66 if ($type == 'bank-transfer') {
67  $result = restrictedArea($user, 'paymentbybanktransfer', '', '', '');
68 } else {
69  $result = restrictedArea($user, 'prelevement', '', '', 'bons');
70 }
71 
72 if ($type == 'bank-transfer') {
73  $permissiontoadd = $user->hasRight('paymentbybanktransfer', 'create');
74 } else {
75  $permissiontoadd = $user->hasRight('prelevement', 'bons', 'creer');
76 }
77 
78 $error = 0;
79 
80 
81 /*
82  * Actions
83  */
84 
85 if ($action == 'confirm_rejet' && $permissiontoadd) {
86  if (GETPOST("confirm") == 'yes') {
87  if (GETPOST('remonth', 'int')) {
88  $daterej = mktime(2, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
89  }
90 
91  if (empty($daterej)) {
92  $error++;
93  setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
94  } elseif ($daterej > dol_now()) {
95  $error++;
96  $langs->load("error");
97  setEventMessages($langs->transnoentities("ErrorDateMustBeBeforeToday"), null, 'errors');
98  }
99 
100  if (GETPOST('motif', 'alpha') == 0) {
101  $error++;
102  setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("RefusedReason")), null, 'errors');
103  }
104 
105  if (!$error) {
106  $lipre = new LignePrelevement($db);
107 
108  if ($lipre->fetch($id) == 0) {
109  $rej = new RejetPrelevement($db, $user, $type);
110 
111  $rej->create($user, $id, GETPOST('motif', 'alpha'), $daterej, $lipre->bon_rowid, GETPOST('facturer', 'int'));
112 
113  header("Location: line.php?id=".urlencode($id).'&type='.urlencode($type));
114  exit;
115  }
116  } else {
117  $action = "rejet";
118  }
119  } else {
120  header("Location: line.php?id=".urlencode($id).'&type='.urlencode($type));
121  exit;
122  }
123 }
124 
125 
126 /*
127  * View
128  */
129 
130 $form = new Form($db);
131 
132 if ($type == 'bank-transfer') {
133  require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
134  $invoicestatic = new FactureFournisseur($db);
135 } else {
136  require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
137  $invoicestatic = new Facture($db);
138 }
139 
140 $title = $langs->trans("WithdrawalsLine");
141 if ($type == 'bank-transfer') {
142  $title = $langs->trans("CreditTransferLine");
143 }
144 
145 llxHeader('', $title);
146 
147 $head = array();
148 
149 $h = 0;
150 $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/line.php?id='.((int) $id).'&type='.urlencode($type);
151 $head[$h][1] = $title;
152 $hselected = $h;
153 $h++;
154 
155 if ($id) {
156  $lipre = new LignePrelevement($db);
157 
158  if ($lipre->fetch($id) >= 0) {
159  $bon = new BonPrelevement($db);
160  $bon->fetch($lipre->bon_rowid);
161 
162  print dol_get_fiche_head($head, $hselected, $title, -1, 'payment');
163 
164  print '<table class="border centpercent tableforfield">';
165 
166  print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>';
167  print $id.'</td></tr>';
168 
169  print '<tr><td class="titlefield">'.$langs->trans("WithdrawalsReceipts").'</td><td>';
170  print $bon->getNomUrl(1).'</td></tr>';
171 
172  print '<tr><td>'.$langs->trans("Date").'</td><td>'.dol_print_date($bon->datec, 'day').'</td></tr>';
173 
174  print '<tr><td>'.$langs->trans("Amount").'</td><td><span class="amount">'.price($lipre->amount).'</span></td></tr>';
175 
176  print '<tr><td>'.$langs->trans("Status").'</td><td>'.$lipre->LibStatut($lipre->statut, 1).'</td></tr>';
177 
178  if ($lipre->statut == 3) {
179  $rej = new RejetPrelevement($db, $user, $type);
180  $resf = $rej->fetch($lipre->id);
181  if ($resf == 0) {
182  print '<tr><td>'.$langs->trans("RefusedReason").'</td><td>'.$rej->motif.'</td></tr>';
183 
184  print '<tr><td>'.$langs->trans("RefusedData").'</td><td>';
185  if ($rej->date_rejet == 0) {
186  /* Historique pour certaines install */
187  print $langs->trans("Unknown");
188  } else {
189  print dol_print_date($rej->date_rejet, 'day');
190  }
191  print '</td></tr>';
192 
193  print '<tr><td>'.$langs->trans("RefusedInvoicing").'</td><td>'.$rej->invoicing.'</td></tr>';
194  } else {
195  print '<tr><td>'.$resf.'</td></tr>';
196  }
197  }
198 
199  print '</table>';
200  print dol_get_fiche_end();
201  } else {
202  dol_print_error($db);
203  }
204 
205  if ($action == 'rejet' && $user->rights->prelevement->bons->credit) {
206  $soc = new Societe($db);
207  $soc->fetch($lipre->socid);
208 
209  $rej = new RejetPrelevement($db, $user, $type);
210 
211  print '<form name="confirm_rejet" method="post" action="line.php?id='.$id.'">';
212  print '<input type="hidden" name="token" value="'.newToken().'">';
213  print '<input type="hidden" name="action" value="confirm_rejet">';
214  print '<input type="hidden" name="type" value="'.$type.'">';
215  print '<table class="noborder centpercent">';
216 
217  print '<tr class="liste_titre">';
218  print '<td colspan="3">'.$langs->trans("WithdrawalRefused").'</td></tr>';
219 
220  //Select yes/no
221  print '<tr><td class="valid">'.$langs->trans("WithdrawalRefusedConfirm").' '.$soc->name.' ?</td>';
222  print '<td colspan="2" class="valid">';
223  print $form->selectyesno("confirm", 1, 0);
224  print '</td></tr>';
225 
226  //Date
227  print '<tr><td class="fieldrequired valid">'.$langs->trans("RefusedData").'</td>';
228  print '<td colspan="2" class="valid">';
229  print $form->selectDate('', '', '', '', '', "confirm_rejet");
230  print '</td></tr>';
231 
232  //Reason
233  print '<tr><td class="fieldrequired valid">'.$langs->trans("RefusedReason").'</td>';
234  print '<td class="valid">';
235  print $form->selectarray("motif", $rej->motifs, GETPOSTISSET('motif') ? GETPOST('motif', 'int') : '');
236  print '</td></tr>';
237 
238  //Facturer
239  print '<tr><td class="valid">'.$langs->trans("RefusedInvoicing").'</td>';
240  print '<td class="valid" colspan="2">';
241  print $form->selectarray("facturer", $rej->facturer, GETPOSTISSET('facturer') ? GETPOST('facturer', 'int') : '');
242  print '</td></tr>';
243  print '</table><br>';
244 
245  //Confirm Button
246  print '<div class="center"><input type="submit" class="button button-save" value='.$langs->trans("Confirm").'></div>';
247  print '</form>';
248  }
249 
250  /*
251  * Action bar
252  */
253  print '<div class="tabsAction">';
254 
255  if ($action == '') {
256  if ($bon->statut == BonPrelevement::STATUS_CREDITED) {
257  if ($lipre->statut == 2) {
258  if ($user->rights->prelevement->bons->credit) {
259  print '<a class="butActionDelete" href="line.php?action=rejet&type='.$type.'&id='.$lipre->id.'">'.$langs->trans("StandingOrderReject").'</a>';
260  } else {
261  print '<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("NotAllowed").'">'.$langs->trans("StandingOrderReject").'</a>';
262  }
263  }
264  } else {
265  print '<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("NotPossibleForThisStatusOfWithdrawReceiptORLine").'">'.$langs->trans("StandingOrderReject").'</a>';
266  }
267  }
268 
269  print '</div>';
270 
271  /*
272  * List of invoices
273  */
274  $sql = "SELECT pf.rowid";
275  $sql .= " ,f.rowid as facid, f.ref as ref, f.total_ttc, f.paye, f.fk_statut";
276  $sql .= " , s.rowid as socid, s.nom as name";
277  $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
278  $sql .= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl";
279  $sql .= " , ".MAIN_DB_PREFIX."prelevement as pf";
280  if ($type == 'bank-transfer') {
281  $sql .= " , ".MAIN_DB_PREFIX."facture_fourn as f";
282  } else {
283  $sql .= " , ".MAIN_DB_PREFIX."facture as f";
284  }
285  $sql .= " , ".MAIN_DB_PREFIX."societe as s";
286  $sql .= " WHERE pf.fk_prelevement_lignes = pl.rowid";
287  $sql .= " AND pl.fk_prelevement_bons = p.rowid";
288  $sql .= " AND f.fk_soc = s.rowid";
289  if ($type == 'bank-transfer') {
290  $sql .= " AND pf.fk_facture_fourn = f.rowid";
291  } else {
292  $sql .= " AND pf.fk_facture = f.rowid";
293  }
294  $sql .= " AND f.entity IN (".getEntity('invoice').")";
295  $sql .= " AND pl.rowid = ".((int) $id);
296  if ($socid) {
297  $sql .= " AND s.rowid = ".((int) $socid);
298  }
299  $sql .= $db->order($sortfield, $sortorder);
300  $sql .= $db->plimit($conf->liste_limit + 1, $offset);
301 
302  $result = $db->query($sql);
303 
304  if ($result) {
305  $num = $db->num_rows($result);
306  $i = 0;
307 
308  $urladd = "&id=".urlencode($id);
309 
310  print_barre_liste($langs->trans("Bills"), $page, "factures.php", $urladd, $sortfield, $sortorder, '', $num, 0, '');
311 
312  print"\n<!-- debut table -->\n";
313  print '<table class="noborder" width="100%" cellpadding="4">';
314  print '<tr class="liste_titre">';
315  print '<td>'.$langs->trans("Invoice").'</td>';
316  print '<td>'.$langs->trans("ThirdParty").'</td>';
317  print '<td class="right">'.$langs->trans("Amount").'</td><td class="right">'.$langs->trans("Status").'</td>';
318  print '</tr>';
319 
320  $total = 0;
321 
322  while ($i < min($num, $conf->liste_limit)) {
323  $obj = $db->fetch_object($result);
324 
325  print '<tr class="oddeven"><td>';
326 
327  print '<a href="'.DOL_URL_ROOT.'/compta/facture/card.php?facid='.$obj->facid.'">';
328  print img_object($langs->trans("ShowBill"), "bill");
329  print '</a>&nbsp;';
330 
331  if ($type == 'bank-transfer') {
332  print '<a href="'.DOL_URL_ROOT.'/fourn/facture/card.php?facid='.$obj->facid.'">'.$obj->ref."</a></td>\n";
333  } else {
334  print '<a href="'.DOL_URL_ROOT.'/compta/facture/card.php?facid='.$obj->facid.'">'.$obj->ref."</a></td>\n";
335  }
336 
337  if ($type == 'bank-transfer') {
338  print '<td><a href="'.DOL_URL_ROOT.'/fourn/card.php?socid='.$obj->socid.'">';
339  } else {
340  print '<td><a href="'.DOL_URL_ROOT.'/comm/card.php?socid='.$obj->socid.'">';
341  }
342  print img_object($langs->trans("ShowCompany"), "company").' '.$obj->name."</a></td>\n";
343 
344  print '<td class="right"><span class="amount">'.price($obj->total_ttc)."</span></td>\n";
345 
346  print '<td class="right">';
347  $invoicestatic->fetch($obj->facid);
348  print $invoicestatic->getLibStatut(5);
349  print "</td>\n";
350 
351  print "</tr>\n";
352 
353  $i++;
354  }
355 
356  print "</table>";
357 
358  $db->free($result);
359  } else {
360  dol_print_error($db);
361  }
362 }
363 
364 // End of page
365 llxFooter();
366 $db->close();
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:56
llxFooter()
Empty footer.
Definition: wrapper.php:70
Class to manage withdrawal receipts.
Class to manage suppliers invoices.
Class to manage invoices.
Class to manage generation of HTML components Only common components must be here.
Class to manage withdrawals.
Class to manage standing orders rejects.
Class to manage third parties objects (customers, suppliers, prospects...)
if(isModEnabled('facture') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') && $user->hasRight('don', 'lire')) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $sql
Social contributions to pay.
Definition: index.php:746
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
dol_get_fiche_end($notab=0)
Return tab footer of a card.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.