29require
'../../main.inc.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/lib/prelevement.lib.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
39require_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/ligneprelevement.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
44$langs->loadLangs(array(
'banks',
'categories',
'bills',
'companies',
'withdrawals'));
47$action =
GETPOST(
'action',
'aZ09');
57$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
58$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
60if (empty($page) || $page == -1) {
63$offset = $limit * $page;
68 $sortfield =
'pd.rowid';
77include DOL_DOCUMENT_ROOT.
'/core/actions_fetchobject.inc.php';
79$hookmanager->initHooks(array(
'directdebitprevcard',
'globalcard',
'directdebitprevlist'));
84$salaryBonPl =
$object->checkIfSalaryBonPrelevement();
87if ($type ==
'bank-transfer') {
88 $result =
restrictedArea($user,
'paymentbybanktransfer',
'',
'',
'');
90 $permissiontoadd = $user->hasRight(
'paymentbybanktransfer',
'create');
91 $permissiontosend = $user->hasRight(
'paymentbybanktransfer',
'send');
92 $permissiontocreditdebit = $user->hasRight(
'paymentbybanktransfer',
'debit');
93 $permissiontodelete = $user->hasRight(
'paymentbybanktransfer',
'read');
97 $permissiontoadd = $user->hasRight(
'prelevement',
'bons',
'creer');
98 $permissiontosend = $user->hasRight(
'prelevement',
'bons',
'send');
99 $permissiontocreditdebit = $user->hasRight(
'prelevement',
'bons',
'credit');
100 $permissiontodelete = $user->hasRight(
'prelevement',
'bons',
'read');
108$parameters = array(
'socid' => $socid);
109$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
114if (empty($reshook)) {
115 if ($action ==
'setbankaccount' && $permissiontoadd) {
123 if ($action ==
'setdate_trans' && $permissiontosend) {
124 $result =
$object->setValueFrom(
'date_trans', $date_trans,
'',
null,
'date');
130 if ($action ==
'infotrans' && $permissiontosend) {
131 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
157 header(
"Location: card.php?id=".
$id.
"&error=$error");
163 if ($action ==
'setinfocredit' && $permissiontocreditdebit) {
166 if ((
$object->type !=
'bank-transfer' &&
$object->statut == BonPrelevement::STATUS_CREDITED) || (
$object->type ==
'bank-transfer' &&
$object->statut == BonPrelevement::STATUS_DEBITED)) {
170 $error =
$object->set_infocredit($user, $dt, ($salaryBonPl ?
'salary' :
''));
178 if ($action ==
'reopen' && $permissiontocreditdebit) {
180 $res =
$object->setStatut(BonPrelevement::STATUS_TRANSFERED);
186 if ($action ==
'setcancel' && $permissiontocreditdebit) {
188 $res =
$object->setStatut(BonPrelevement::STATUS_CANCELED);
194 if ($action ==
'confirm_delete' && $permissiontodelete) {
198 if ($savtype ==
'bank-transfer') {
199 header(
"Location: ".DOL_URL_ROOT.
'/compta/paymentbybanktransfer/index.php');
201 header(
"Location: ".DOL_URL_ROOT.
'/compta/prelevement/index.php');
215llxHeader(
'', $langs->trans(
"WithdrawalsReceipts"));
217if ($id > 0 || $ref) {
220 print
dol_get_fiche_head($head,
'requests', $langs->trans(
"WithdrawalsReceipts"), -1,
'payment');
222 if (
GETPOST(
'error',
'alpha') !=
'') {
223 print
'<div class="error">'.$object->getErrorString(
GETPOSTINT(
'error')).
'</div>';
226 $linkback =
'<a href="'.DOL_URL_ROOT.
'/compta/prelevement/orders_list.php?restore_lastsearch_values=1'.(
$object->type !=
'bank-transfer' ?
'' :
'&type=bank-transfer').
'">'.$langs->trans(
"BackToList").
'</a>';
228 dol_banner_tab($object,
'ref', $linkback, 1,
'ref',
'ref');
230 print
'<div class="fichecenter">';
231 print
'<div class="underbanner clearboth"></div>';
232 print
'<table class="border centpercent tableforfield">';
235 print
'<tr><td class="titlefieldcreate">'.$langs->trans(
"Date").
'</td><td>'.
dol_print_date(
$object->datec,
'day').
'</td></tr>';
237 print
'<tr><td>'.$langs->trans(
"Amount").
'</td><td><span class="amount">'.
price(
$object->amount).
'</span></td></tr>';
240 if (!empty(
$object->date_trans)) {
242 $muser->fetch(
$object->user_trans);
246 print
'<table class="nobordernopadding centpercent"><tr><td>';
247 print $langs->trans(
'TransData');
249 if ($action !=
'editdate_trans' && $permissiontosend) {
250 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editdate_trans&token='.newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->trans(
'SetTransDate'), 1).
'</a></td>';
252 print
'</tr></table>';
254 if ($action ==
'editdate_trans' && $permissiontosend) {
255 print
'<form name="setdate_trans" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
256 print
'<input type="hidden" name="token" value="'.newToken().
'">';
257 print
'<input type="hidden" name="action" value="setdate_trans">';
258 print $form->selectDate(
$object->date_trans,
'date_trans', 0, 0, 0,
"setdate_trans");
259 print
'<input type="submit" class="button button-edit smallpaddingimp valign middle" value="'.$langs->trans(
'Modify').
'">';
263 print
' <span class="opacitymedium">'.$langs->trans(
"By").
'</span> '.$muser->getNomUrl(-1).
'</td>';
269 print
'<tr><td>'.$langs->trans(
"TransMetod").
'</td><td>';
275 if (!empty(
$object->date_credit)) {
276 print
'<tr><td>'.$langs->trans(
'CreditDate').
'</td><td>';
285 print
'<div class="underbanner clearboth"></div>';
286 print
'<table class="border centpercent tableforfield">';
290 $fk_bank_account =
$object->fk_bank_account;
291 if (empty($fk_bank_account)) {
294 if ($fk_bank_account > 0) {
295 $result = $acc->fetch($fk_bank_account);
299 $labelofbankfield =
"BankToReceiveWithdraw";
300 if (
$object->type ==
'bank-transfer') {
301 $labelofbankfield =
'BankToPayCreditTransfer';
304 $caneditbank = $permissiontoadd;
305 if (
$object->status != $object::STATUS_DRAFT) {
317 print
'<tr><td class="titlefieldcreate">';
318 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
319 print $form->textwithpicto($langs->trans(
"BankAccount"), $langs->trans($labelofbankfield));
321 if (($action !=
'editbankaccount') && $caneditbank) {
322 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editfkbankaccount&token='.newToken().
'&id='.
$object->id.
'">'.
img_edit($langs->trans(
'SetBankAccount'), 1).
'</a></td>';
324 print
'</tr></table>';
326 if ($action ==
'editfkbankaccount') {
327 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.
$object->id, (
string) $fk_bank_account,
'fk_bank_account', 0);
329 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.
$object->id, (
string) $fk_bank_account,
'none');
335 print
'<tr><td class="titlefieldcreate">';
336 $labelfororderfield =
'WithdrawalFile';
337 if (
$object->type ==
'bank-transfer') {
338 $labelfororderfield =
'CreditTransferFile';
340 print $langs->trans($labelfororderfield).
'</td><td>';
342 $modulepart =
'prelevement';
343 if (
$object->type ==
'bank-transfer') {
344 $modulepart =
'paymentbybanktransfer';
348 $labelentity =
$conf->entity;
349 $relativepath =
'receipts/'.$object->ref.
'-'.$labelentity.
'.xml';
351 if ($type !=
'bank-transfer') {
352 $dir =
$conf->prelevement->dir_output;
354 $dir =
$conf->paymentbybanktransfer->dir_output;
357 $relativepath =
'receipts/'.$object->ref.
'.xml';
360 $relativepath =
'receipts/'.$object->ref.
'.xml';
363 print
'<a data-ajax="false" href="'.DOL_URL_ROOT.
'/document.php?type=text/plain&modulepart='.$modulepart.
'&file='.urlencode($relativepath).
'">'.$relativepath;
364 print
img_picto(
'',
'download',
'class="paddingleft"');
369 $parameters = array();
370 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters, $object, $action);
371 print $hookmanager->resPrint;
383 if ($action ==
'delete') {
384 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id, $langs->trans(
'Delete'), $langs->trans(
'ConfirmDeleteObject'),
'confirm_delete',
'', 0, 1);
397 if (empty(
$object->date_trans) && (($user->hasRight(
'prelevement',
'bons',
'send') &&
$object->type !=
'bank-transfer') || ($user->hasRight(
'paymentbybanktransfer',
'send') &&
$object->type ==
'bank-transfer')) && $action ==
'settransmitted') {
398 print
'<form method="post" name="userfile" action="requests.php?id='.$object->id.
'" enctype="multipart/form-data">';
399 print
'<input type="hidden" name="token" value="'.newToken().
'">';
400 print
'<input type="hidden" name="action" value="infotrans">';
401 print
'<table class="noborder centpercent">';
402 print
'<tr class="liste_titre">';
403 print
'<td colspan="3">'.$langs->trans(
"NotifyTransmision").
'</td></tr>';
404 print
'<tr class="oddeven"><td>'.$langs->trans(
"TransData").
'</td><td>';
405 print $form->selectDate(
'',
'', 0, 0, 0,
"userfile", 1, 1);
407 print
'<tr class="oddeven"><td>'.$langs->trans(
"TransMetod").
'</td><td>';
408 print $form->selectarray(
"methode",
$object->methodes_trans);
411 print
'<div class="center"><input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans(
"SetToStatusSent")).
'"></div>';
416 if (
$object->status == BonPrelevement::STATUS_TRANSFERED && (($user->hasRight(
'prelevement',
'bons',
'credit') &&
$object->type !=
'bank-transfer') || ($user->hasRight(
'paymentbybanktransfer',
'debit') &&
$object->type ==
'bank-transfer')) && $action ==
'setcredited') {
417 $btnLabel = (
$object->type ==
'bank-transfer') ? $langs->trans(
"ClassDebited") : $langs->trans(
"ClassCredited");
418 print
'<form name="infocredit" method="post" action="requests.php?id='.$object->id.
'">';
419 print
'<input type="hidden" name="token" value="'.newToken().
'">';
420 print
'<input type="hidden" name="action" value="setinfocredit">';
421 print
'<table class="noborder centpercent">';
422 print
'<tr class="liste_titre">';
423 print
'<td colspan="3">'.$langs->trans(
"NotifyCredit").
'</td></tr>';
424 print
'<tr class="oddeven"><td>'.$langs->trans(
'CreditDate').
'</td><td>';
425 print $form->selectDate(-1,
'', 0, 0, 0,
"infocredit", 1, 1, 0,
'',
'', array(array(
'adddateof' =>
$object->date_trans,
'labeladddateof' => $langs->transnoentitiesnoconv(
'TransData'))));
428 print
'<br><div class="center"><span class="opacitymedium">'.$langs->trans(
"ThisWillAlsoAddPaymentOnInvoice").
'</span></div>';
429 print
'<div class="center"><input type="submit" class="button" value="'.dol_escape_htmltag($btnLabel).
'"></div>';
435 if ($action !=
'settransmitted' && $action !=
'setcredited') {
436 print
"\n".
'<div class="tabsAction">'.
"\n";
437 $parameters = array();
438 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
439 if (empty($reshook)) {
440 if (empty(
$object->date_trans)) {
441 if (
$object->type ==
'bank-transfer') {
442 print dolGetButtonAction($langs->trans(
"SetToStatusSent"),
'',
'default',
'requests.php?action=settransmitted&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'paymentbybanktransfer',
'send'));
444 print dolGetButtonAction($langs->trans(
"SetToStatusSent"),
'',
'default',
'requests.php?action=settransmitted&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'prelevement',
'bons',
'send'));
449 if (
$object->status == BonPrelevement::STATUS_DEBITED ||
$object->status == BonPrelevement::STATUS_CREDITED) {
450 if (
$object->type ==
'bank-transfer') {
451 print dolGetButtonAction($langs->trans(
"ReOpen"),
'',
'default',
'requests.php?action=reopen&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'paymentbybanktransfer',
'debit'));
453 print dolGetButtonAction($langs->trans(
"ReOpen"),
'',
'default',
'requests.php?action=reopen&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'prelevement',
'bons',
'credit'));
458 if (
$object->status == BonPrelevement::STATUS_TRANSFERED) {
459 if (
$object->type ==
'bank-transfer') {
460 print dolGetButtonAction($langs->trans(
"ClassDebited"),
'',
'default',
'requests.php?action=setcredited&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'paymentbybanktransfer',
'debit'));
462 print dolGetButtonAction($langs->trans(
"ClassCredited"),
'',
'default',
'requests.php?action=setcredited&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'prelevement',
'bons',
'credit'));
467 if (
$object->status == BonPrelevement::STATUS_TRANSFERED) {
468 if (
$object->type ==
'bank-transfer') {
469 print dolGetButtonAction($langs->trans(
"Cancel"),
'',
'cancel',
'requests.php?action=setcancel&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'paymentbybanktransfer',
'debit'));
471 print dolGetButtonAction($langs->trans(
"Cancel"),
'',
'cancel',
'requests.php?action=setcancel&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'prelevement',
'bons',
'credit'));
475 if (
$object->type ==
'bank-transfer') {
476 print dolGetButtonAction($langs->trans(
"Delete"),
'',
'delete',
'requests.php?action=delete&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'paymentbybanktransfer',
'create'));
478 print dolGetButtonAction($langs->trans(
"Delete"),
'',
'delete',
'requests.php?action=delete&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'prelevement',
'bons',
'creer'));
488 $sql =
"SELECT pd.rowid, pd.type, pd.ext_payment_id, pd.ext_payment_site, pd.amount, pd.fk_facture, pd.fk_user_demande, pd.date_demande, pd.traite, ";
489 $sql .=
" s.rowid as socid, s.nom as name";
490 $sql .=
" FROM ".MAIN_DB_PREFIX.
"prelevement_demande as pd";
491 $sql .=
", ".MAIN_DB_PREFIX.
"prelevement_bons as pb";
492 $sql .=
", ".MAIN_DB_PREFIX.
"facture as f";
493 $sql .=
", ".MAIN_DB_PREFIX.
"societe as s";
494 $sql .=
" WHERE pd.fk_prelevement_bons = ".((int) $id);
495 $sql .=
" AND pd.fk_prelevement_bons = pb.rowid";
496 $sql .=
" AND pb.entity = ".((int)
$conf->entity);
497 $sql .=
" AND pd.fk_facture = f.rowid AND f.fk_soc = s.rowid";
499 $sql .=
" AND s.rowid = ".((int) $socid);
501 $sql .=
$db->order($sortfield, $sortorder);
504 $nbtotalofrecords =
'';
506 $result =
$db->query($sql);
507 $nbtotalofrecords =
$db->num_rows($result);
508 if (($page * $limit) > (int) $nbtotalofrecords) {
515 $sql .=
$db->plimit($limit + 1, $offset);
517 $result =
$db->query($sql);
520 $num =
$db->num_rows($result);
523 $urladd =
"&id=".urlencode((
string) (
$id));
524 if ($limit > 0 && $limit !=
$conf->liste_limit) {
525 $urladd .=
'&limit='.((int) $limit);
528 print
'<form method="POST" action="'.$_SERVER [
'PHP_SELF'].
'" name="search_form">'.
"\n";
529 print
'<input type="hidden" name="token" value="'.newToken().
'"/>';
530 print
'<input type="hidden" name="id" value="'.$id.
'"/>';
531 print
'<input type="hidden" name="socid" value="'.$socid.
'"/>';
533 print
'<input type="hidden" name="page" value="'.$page.
'"/>';
535 if (!empty($limit)) {
536 print
'<input type="hidden" name="limit" value="'.$limit.
'"/>';
538 if (!empty($sortfield)) {
539 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'"/>';
541 if (!empty($sortorder)) {
542 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'"/>';
545 print_barre_liste($langs->trans(
"Requests"), $page, $_SERVER[
"PHP_SELF"], $urladd, $sortfield, $sortorder,
'', $num, $nbtotalofrecords,
'', 0,
'',
'', $limit);
547 print
'<div class="div-table-responsive-no-min">';
548 print
'<table class="noborder liste centpercent">';
549 print
'<tr class="liste_titre">';
551 print_liste_field_titre(
"Date", $_SERVER[
"PHP_SELF"],
"pd.date_demande",
'', $urladd,
'', $sortfield, $sortorder);
552 print_liste_field_titre(
"User", $_SERVER[
"PHP_SELF"],
"pd.fk_user_demande",
"", $urladd,
'', $sortfield, $sortorder);
553 print_liste_field_titre(
"Amount", $_SERVER[
"PHP_SELF"],
"pd.amount",
"", $urladd,
'class="right"', $sortfield, $sortorder);
554 print_liste_field_titre(
"Invoice", $_SERVER[
"PHP_SELF"],
"pd.fk_facture",
'', $urladd,
'', $sortfield, $sortorder);
560 while ($i < min($num, $limit)) {
561 $obj =
$db->fetch_object($result);
563 print
'<tr class="oddeven">';
570 print
'<td class="tdoverflowmax150">';
576 $tmpuser->fetch($obj->fk_user_demande);
577 print $tmpuser->getNomUrl(1);
580 print
'<td class="right"><span class="amount">'.price($obj->amount).
"</span></td>\n";
584 $tmpinvoice->fetch($obj->fk_facture);
585 print $tmpinvoice->getNomUrl(1);
588 print
'<td class="right">';
589 print $obj->ext_payment_id;
594 $total += $obj->amount;
602 print
'<tr class="liste_total">';
603 print
'<td>'.$langs->trans(
"Total").
'</td>';
604 print
'<td> </td>';
605 print
'<td> </td>';
606 print
'<td class="right">';
607 if (empty($offset) && $num <= $limit) {
609 if ($total !=
$object->amount) {
610 print
img_warning($langs->trans(
"TotalAmountOfdirectDebitOrderDiffersFromSumOfLines"));
615 print
'<td> </td>';
616 print
'<td> </td>';
$id
Support class for third parties, contacts, members, users or resources.
if(! $sortfield) if(! $sortorder) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage bank accounts.
Class to manage withdrawal receipts.
Class to manage invoices.
Class to manage withdrawals.
Class to manage Dolibarr users.
dol_is_file($pathoffile)
Return if path is a file.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
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.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_clone($srcobject, $native=2)
Create a clone of instance of object (new instance with same value for each properties) With native =...
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify fiche.
prelevement_prepare_head(BonPrelevement $object)
Prepare array with list of tabs.
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.