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);
111 setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
114if (empty($reshook)) {
115 if ($action ==
'setbankaccount' && $permissiontoadd) {
119 $result =
$object->update($user);
126 if ($action ==
'setdate_trans' && $permissiontosend) {
127 $result =
$object->setValueFrom(
'date_trans', $date_trans,
'',
null,
'date');
133 if ($action ==
'infotrans' && $permissiontosend) {
134 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
160 header(
"Location: card.php?id=".
$id.
"&error=$error");
166 if ($action ==
'setinfocredit' && $permissiontocreditdebit) {
169 if ((
$object->type !=
'bank-transfer' &&
$object->statut == BonPrelevement::STATUS_CREDITED) || (
$object->type ==
'bank-transfer' &&
$object->statut == BonPrelevement::STATUS_DEBITED)) {
171 setEventMessages(
'WithdrawalCantBeCreditedTwice', array(),
'errors');
173 $error =
$object->set_infocredit($user, $dt, ($salaryBonPl ?
'salary' :
''));
181 if ($action ==
'reopen' && $permissiontocreditdebit) {
183 $res =
$object->setStatut(BonPrelevement::STATUS_TRANSFERED);
189 if ($action ==
'setcancel' && $permissiontocreditdebit) {
191 $res =
$object->setStatut(BonPrelevement::STATUS_CANCELED);
197 if ($action ==
'confirm_delete' && $permissiontodelete) {
202 if ($savtype ==
'bank-transfer') {
203 header(
"Location: ".DOL_URL_ROOT.
'/compta/paymentbybanktransfer/index.php');
205 header(
"Location: ".DOL_URL_ROOT.
'/compta/prelevement/index.php');
219$form =
new Form($db);
221llxHeader(
'', $langs->trans(
"WithdrawalsReceipts"));
223if ($id > 0 || $ref) {
226 print
dol_get_fiche_head($head,
'requests', $langs->trans(
"WithdrawalsReceipts"), -1,
'payment');
228 if (
GETPOST(
'error',
'alpha') !=
'') {
229 print
'<div class="error">'.$object->getErrorString(
GETPOSTINT(
'error')).
'</div>';
232 $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>';
234 dol_banner_tab($object,
'ref', $linkback, 1,
'ref',
'ref');
236 print
'<div class="fichecenter">';
237 print
'<div class="underbanner clearboth"></div>';
238 print
'<table class="border centpercent tableforfield">';
241 print
'<tr><td class="titlefieldcreate">'.$langs->trans(
"Date").
'</td><td>'.
dol_print_date(
$object->datec,
'day').
'</td></tr>';
243 print
'<tr><td>'.$langs->trans(
"Amount").
'</td><td><span class="amount">'.
price(
$object->amount).
'</span></td></tr>';
246 if (!empty(
$object->date_trans)) {
247 $muser =
new User($db);
248 $muser->fetch(
$object->user_trans);
252 print
'<table class="nobordernopadding centpercent"><tr><td>';
253 print $langs->trans(
'TransData');
255 if ($action !=
'editdate_trans' && $permissiontosend) {
256 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>';
258 print
'</tr></table>';
260 if ($action ==
'editdate_trans' && $permissiontosend) {
261 print
'<form name="setdate_trans" action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="post">';
262 print
'<input type="hidden" name="token" value="'.newToken().
'">';
263 print
'<input type="hidden" name="action" value="setdate_trans">';
264 print $form->selectDate(
$object->date_trans,
'date_trans', 0, 0, 0,
"setdate_trans");
265 print
'<input type="submit" class="button button-edit smallpaddingimp valign middle" value="'.$langs->trans(
'Modify').
'">';
269 print
' <span class="opacitymedium">'.$langs->trans(
"By").
'</span> '.$muser->getNomUrl(-1).
'</td>';
275 print
'<tr><td>'.$langs->trans(
"TransMetod").
'</td><td>';
281 if (!empty(
$object->date_credit)) {
282 print
'<tr><td>'.$langs->trans(
'CreditDate').
'</td><td>';
291 print
'<div class="underbanner clearboth"></div>';
292 print
'<table class="border centpercent tableforfield">';
296 $fk_bank_account =
$object->fk_bank_account;
297 if (empty($fk_bank_account)) {
300 if ($fk_bank_account > 0) {
301 $result = $acc->fetch($fk_bank_account);
305 $labelofbankfield =
"BankToReceiveWithdraw";
306 if (
$object->type ==
'bank-transfer') {
307 $labelofbankfield =
'BankToPayCreditTransfer';
310 $caneditbank = $permissiontoadd;
311 if (
$object->status != $object::STATUS_DRAFT) {
323 print
'<tr><td class="titlefieldcreate">';
324 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
325 print $form->textwithpicto($langs->trans(
"BankAccount"), $langs->trans($labelofbankfield));
327 if (($action !=
'editbankaccount') && $caneditbank) {
328 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>';
330 print
'</tr></table>';
332 if ($action ==
'editfkbankaccount') {
333 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.
$object->id, (
string) $fk_bank_account,
'fk_bank_account', 0);
335 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?id='.
$object->id, (
string) $fk_bank_account,
'none');
341 print
'<tr><td class="titlefieldcreate">';
342 $labelfororderfield =
'WithdrawalFile';
343 if (
$object->type ==
'bank-transfer') {
344 $labelfororderfield =
'CreditTransferFile';
346 print $langs->trans($labelfororderfield).
'</td><td>';
348 $modulepart =
'prelevement';
349 if (
$object->type ==
'bank-transfer') {
350 $modulepart =
'paymentbybanktransfer';
354 $labelentity =
$conf->entity;
355 $relativepath =
'receipts/'.$object->ref.
'-'.$labelentity.
'.xml';
357 if ($type !=
'bank-transfer') {
358 $dir =
$conf->prelevement->dir_output;
360 $dir =
$conf->paymentbybanktransfer->dir_output;
363 $relativepath =
'receipts/'.$object->ref.
'.xml';
366 $relativepath =
'receipts/'.$object->ref.
'.xml';
369 print
'<a data-ajax="false" href="'.DOL_URL_ROOT.
'/document.php?type=text/plain&modulepart='.$modulepart.
'&file='.urlencode($relativepath).
'">'.$relativepath;
370 print img_picto(
'',
'download',
'class="paddingleft"');
375 $parameters = array();
376 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters, $object, $action);
377 print $hookmanager->resPrint;
389 if ($action ==
'delete') {
390 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.
$object->id, $langs->trans(
'Delete'), $langs->trans(
'ConfirmDeleteObject'),
'confirm_delete',
'', 0, 1);
403 if (empty(
$object->date_trans) && (($user->hasRight(
'prelevement',
'bons',
'send') &&
$object->type !=
'bank-transfer') || ($user->hasRight(
'paymentbybanktransfer',
'send') &&
$object->type ==
'bank-transfer')) && $action ==
'settransmitted') {
404 print
'<form method="post" name="userfile" action="requests.php?id='.$object->id.
'" enctype="multipart/form-data">';
405 print
'<input type="hidden" name="token" value="'.newToken().
'">';
406 print
'<input type="hidden" name="action" value="infotrans">';
407 print
'<table class="noborder centpercent">';
408 print
'<tr class="liste_titre">';
409 print
'<td colspan="3">'.$langs->trans(
"NotifyTransmision").
'</td></tr>';
410 print
'<tr class="oddeven"><td>'.$langs->trans(
"TransData").
'</td><td>';
411 print $form->selectDate(
'',
'', 0, 0, 0,
"userfile", 1, 1);
413 print
'<tr class="oddeven"><td>'.$langs->trans(
"TransMetod").
'</td><td>';
414 print $form->selectarray(
"methode",
$object->methodes_trans);
417 print
'<div class="center"><input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans(
"SetToStatusSent")).
'"></div>';
422 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') {
423 $btnLabel = (
$object->type ==
'bank-transfer') ? $langs->trans(
"ClassDebited") : $langs->trans(
"ClassCredited");
424 print
'<form name="infocredit" method="post" action="requests.php?id='.$object->id.
'">';
425 print
'<input type="hidden" name="token" value="'.newToken().
'">';
426 print
'<input type="hidden" name="action" value="setinfocredit">';
427 print
'<table class="noborder centpercent">';
428 print
'<tr class="liste_titre">';
429 print
'<td colspan="3">'.$langs->trans(
"NotifyCredit").
'</td></tr>';
430 print
'<tr class="oddeven"><td>'.$langs->trans(
'CreditDate').
'</td><td>';
431 print $form->selectDate(-1,
'', 0, 0, 0,
"infocredit", 1, 1, 0,
'',
'', array(array(
'adddateof' =>
$object->date_trans,
'labeladddateof' => $langs->transnoentitiesnoconv(
'TransData'))));
434 print
'<br><div class="center"><span class="opacitymedium">'.$langs->trans(
"ThisWillAlsoAddPaymentOnInvoice").
'</span></div>';
435 print
'<div class="center"><input type="submit" class="button" value="'.dol_escape_htmltag($btnLabel).
'"></div>';
441 if ($action !=
'settransmitted' && $action !=
'setcredited') {
442 print
"\n".
'<div class="tabsAction">'.
"\n";
443 $parameters = array();
444 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
445 if (empty($reshook)) {
446 if (empty(
$object->date_trans)) {
447 if (
$object->type ==
'bank-transfer') {
448 print dolGetButtonAction($langs->trans(
"SetToStatusSent"),
'',
'default',
'requests.php?action=settransmitted&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'paymentbybanktransfer',
'send'));
450 print dolGetButtonAction($langs->trans(
"SetToStatusSent"),
'',
'default',
'requests.php?action=settransmitted&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'prelevement',
'bons',
'send'));
455 if (
$object->status == BonPrelevement::STATUS_DEBITED ||
$object->status == BonPrelevement::STATUS_CREDITED) {
456 if (
$object->type ==
'bank-transfer') {
457 print dolGetButtonAction($langs->trans(
"ReOpen"),
'',
'default',
'requests.php?action=reopen&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'paymentbybanktransfer',
'debit'));
459 print dolGetButtonAction($langs->trans(
"ReOpen"),
'',
'default',
'requests.php?action=reopen&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'prelevement',
'bons',
'credit'));
464 if (
$object->status == BonPrelevement::STATUS_TRANSFERED) {
465 if (
$object->type ==
'bank-transfer') {
466 print dolGetButtonAction($langs->trans(
"ClassDebited"),
'',
'default',
'requests.php?action=setcredited&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'paymentbybanktransfer',
'debit'));
468 print dolGetButtonAction($langs->trans(
"ClassCredited"),
'',
'default',
'requests.php?action=setcredited&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'prelevement',
'bons',
'credit'));
473 if (
$object->status == BonPrelevement::STATUS_TRANSFERED) {
474 if (
$object->type ==
'bank-transfer') {
475 print dolGetButtonAction($langs->trans(
"Cancel"),
'',
'default',
'requests.php?action=setcancel&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'paymentbybanktransfer',
'debit'), array(
'attr' => array(
'classOverride' =>
'butAction butActionDanger'))).
"\n";
477 print dolGetButtonAction($langs->trans(
"Cancel"),
'',
'default',
'requests.php?action=setcancel&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'prelevement',
'bons',
'credit'), array(
'attr' => array(
'classOverride' =>
'butAction butActionDanger'))).
"\n";
481 if (
$object->type ==
'bank-transfer') {
482 print dolGetButtonAction($langs->trans(
"Delete"), $langs->trans(
"Delete"),
'delete',
'requests.php?action=delete&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'paymentbybanktransfer',
'create'), array(
'attr' => array(
'class' =>
'reposition'))).
"\n";
484 print dolGetButtonAction($langs->trans(
"Delete"), $langs->trans(
"Delete"),
'delete',
'requests.php?action=delete&token='.newToken().
'&id='.
$object->id,
'', $user->hasRight(
'prelevement',
'bons',
'creer'), array(
'attr' => array(
'class' =>
'reposition'))).
"\n";
494 $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, ";
495 $sql .=
" s.rowid as socid, s.nom as name";
496 $sql .=
" FROM ".MAIN_DB_PREFIX.
"prelevement_demande as pd";
497 $sql .=
", ".MAIN_DB_PREFIX.
"prelevement_bons as pb";
498 $sql .=
", ".MAIN_DB_PREFIX.
"facture as f";
499 $sql .=
", ".MAIN_DB_PREFIX.
"societe as s";
500 $sql .=
" WHERE pd.fk_prelevement_bons = ".((int) $id);
501 $sql .=
" AND pd.fk_prelevement_bons = pb.rowid";
502 $sql .=
" AND pb.entity = ".((int)
$conf->entity);
503 $sql .=
" AND pd.fk_facture = f.rowid AND f.fk_soc = s.rowid";
505 $sql .=
" AND s.rowid = ".((int) $socid);
507 $sql .= $db->order($sortfield, $sortorder);
510 $nbtotalofrecords =
'';
512 $result = $db->query($sql);
513 $nbtotalofrecords = $db->num_rows($result);
514 if (($page * $limit) > (int) $nbtotalofrecords) {
521 $sql .= $db->plimit($limit + 1, $offset);
523 $result = $db->query($sql);
526 $num = $db->num_rows($result);
529 $urladd =
"&id=".urlencode((
string) (
$id));
530 if ($limit > 0 && $limit !=
$conf->liste_limit) {
531 $urladd .=
'&limit='.((int) $limit);
534 print
'<form method="POST" action="'.$_SERVER [
'PHP_SELF'].
'" name="search_form">'.
"\n";
535 print
'<input type="hidden" name="token" value="'.newToken().
'"/>';
536 print
'<input type="hidden" name="id" value="'.$id.
'"/>';
537 print
'<input type="hidden" name="socid" value="'.$socid.
'"/>';
539 print
'<input type="hidden" name="page" value="'.$page.
'"/>';
541 if (!empty($limit)) {
542 print
'<input type="hidden" name="limit" value="'.$limit.
'"/>';
544 if (!empty($sortfield)) {
545 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'"/>';
547 if (!empty($sortorder)) {
548 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'"/>';
551 print_barre_liste($langs->trans(
"Requests"), $page, $_SERVER[
"PHP_SELF"], $urladd, $sortfield, $sortorder,
'', $num, $nbtotalofrecords,
'', 0,
'',
'', $limit);
553 print
'<div class="div-table-responsive-no-min">';
554 print
'<table class="noborder liste centpercent">';
555 print
'<tr class="liste_titre">';
557 print_liste_field_titre(
"Date", $_SERVER[
"PHP_SELF"],
"pd.date_demande",
'', $urladd,
'', $sortfield, $sortorder);
558 print_liste_field_titre(
"User", $_SERVER[
"PHP_SELF"],
"pd.fk_user_demande",
"", $urladd,
'', $sortfield, $sortorder);
559 print_liste_field_titre(
"Amount", $_SERVER[
"PHP_SELF"],
"pd.amount",
"", $urladd,
'class="right"', $sortfield, $sortorder);
560 print_liste_field_titre(
"Invoice", $_SERVER[
"PHP_SELF"],
"pd.fk_facture",
'', $urladd,
'', $sortfield, $sortorder);
566 while ($i < min($num, $limit)) {
567 $obj = $db->fetch_object($result);
569 print
'<tr class="oddeven">';
576 print
'<td class="tdoverflowmax150">';
581 $tmpuser =
new User($db);
582 $tmpuser->fetch($obj->fk_user_demande);
583 print $tmpuser->getNomUrl(1);
586 print
'<td class="right"><span class="amount">'.price($obj->amount).
"</span></td>\n";
589 $tmpinvoice =
new Facture($db);
590 $tmpinvoice->fetch($obj->fk_facture);
591 print $tmpinvoice->getNomUrl(1);
594 print
'<td class="right">';
595 print $obj->ext_payment_id;
600 $total += $obj->amount;
608 print
'<tr class="liste_total">';
609 print
'<td>'.$langs->trans(
"Total").
'</td>';
610 print
'<td> </td>';
611 print
'<td> </td>';
612 print
'<td class="right">';
613 if (empty($offset) && $num <= $limit) {
615 if ($total !=
$object->amount) {
616 print img_warning($langs->trans(
"TotalAmountOfdirectDebitOrderDiffersFromSumOfLines"));
621 print
'<td> </td>';
622 print
'<td> </td>';
632 dol_print_error($db);
$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...
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
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.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0, $nodefault=0)
Return value of a param into GET or POST supervariable.
GETPOSTINT($paramname, $method=0, $nodefault=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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).
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
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.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
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, $nodie=0, $mode='')
Check permissions of a user to show a page and an object.