31 require
'../../main.inc.php';
32 require_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
33 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
34 require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
35 require_once DOL_DOCUMENT_ROOT.
'/core/lib/bank.lib.php';
36 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/lib/prelevement.lib.php';
39 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
42 $langs->loadLangs(array(
'banks',
'categories',
'withdrawals',
'companies',
'bills'));
44 $type =
GETPOST(
'type',
'aZ09');
47 $action =
GETPOST(
'action',
'aZ09');
48 $massaction =
GETPOST(
'massaction',
'alpha');
49 $toselect =
GETPOST(
'toselect',
'array');
51 $mode =
GETPOST(
'mode',
'alpha') ?
GETPOST(
'mode',
'alpha') :
'real';
52 $format =
GETPOST(
'format',
'aZ09');
53 $id_bankaccount =
GETPOST(
'id_bankaccount',
'int');
56 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
58 if (empty($page) || $page == -1) {
61 $offset = $limit * $page;
63 $hookmanager->initHooks(array(
'directdebitcreatecard',
'globalcard'));
66 $socid =
GETPOST(
'socid',
'int');
68 $socid = $user->socid;
70 if ($type ==
'bank-transfer') {
71 $result =
restrictedArea($user,
'paymentbybanktransfer',
'',
'',
'');
85 if (
GETPOST(
'cancel',
'alpha')) {
89 $parameters = array(
'mode' => $mode,
'format' => $format,
'limit' => $limit,
'page' => $page,
'offset' => $offset);
90 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
95 if (empty($reshook)) {
97 if ($action ==
'modify') {
98 for ($i = 1; $i < 9; $i++) {
102 if ($action ==
'create') {
103 $default_account = ($type ==
'bank-transfer' ?
'PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT' :
'PRELEVEMENT_ID_BANKACCOUNT');
108 $res =
dolibarr_set_const($db, $default_account, $id_bankaccount,
'chaine', 0,
'', $conf->entity);
111 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
113 $bank->fetch($conf->global->{$default_account});
118 if (empty($bank->ics) && $type !==
'bank-transfer') {
119 $errormessage = str_replace(
'{url}', $bank->getNomUrl(1,
'',
'', -1, 1), $langs->trans(
"ErrorICSmissing",
'{url}'));
133 } elseif ($result == 0) {
134 $mesg = $langs->trans(
"NoInvoiceCouldBeWithdrawed", $format);
136 $mesg .=
'<br>'.
"\n";
137 foreach ($bprev->invoice_in_error as $key => $val) {
138 $mesg .=
'<span class="warning">'.$val.
"</span><br>\n";
141 if ($type !=
'bank-transfer') {
142 $texttoshow = $langs->trans(
"DirectDebitOrderCreated",
'{s}');
143 $texttoshow = str_replace(
'{s}', $bprev->getNomUrl(1), $texttoshow);
146 $texttoshow = $langs->trans(
"CreditTransferOrderCreated",
'{s}');
147 $texttoshow = str_replace(
'{s}', $bprev->getNomUrl(1), $texttoshow);
151 header(
"Location: ".DOL_URL_ROOT.
'/compta/prelevement/card.php?id='.urlencode($bprev->id).
'&type='.urlencode($type));
156 $objectclass =
"BonPrelevement";
157 if ($type ==
'bank-transfer') {
158 $uploaddir = $conf->paymentbybanktransfer->dir_output;
160 $uploaddir = $conf->prelevement->dir_output;
162 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
172 $thirdpartystatic =
new Societe($db);
173 if ($type !=
'bank-transfer') {
174 $invoicestatic =
new Facture($db);
179 $arrayofselected = is_array($toselect) ? $toselect : array();
181 $arrayofmassactions = array(
183 if (
GETPOST(
'nomassaction',
'int') || in_array($massaction, array(
'presend',
'predelete'))) {
184 $arrayofmassactions = array();
186 $massactionbutton =
$form->selectMassAction(
'', $arrayofmassactions);
189 $langs->load(
"errors");
190 $modulenametoshow =
"Withdraw";
191 if ($type ==
'bank-transfer') {
192 $modulenametoshow =
"PaymentByBankTransfer";
194 setEventMessages($langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv($modulenametoshow)),
null,
'errors');
198 $title = $langs->trans(
"NewStandingOrder");
199 if ($type ==
'bank-transfer') {
200 $title = $langs->trans(
"NewPaymentByBankTransfer");
209 $nb = $bprev->nbOfInvoiceToPay($type);
210 $pricetowithdraw = $bprev->SommeAPrelever($type);
214 print
'<table class="border centpercent tableforfield">';
216 $labeltoshow = $langs->trans(
"NbOfInvoiceToWithdraw");
217 if ($type ==
'bank-transfer') {
218 $labeltoshow = $langs->trans(
"NbOfInvoiceToPayByBankTransfer");
221 print
'<tr><td class="titlefield">'.$labeltoshow.
'</td>';
222 print
'<td class="nowraponall">';
226 print
'<tr><td>'.$langs->trans(
"AmountTotal").
'</td>';
227 print
'<td class="amount nowraponall">';
228 print
price($pricetowithdraw, 0, $langs, 1, -1, -1, $conf->currency);
239 print
'<div class="tabsAction">'.
"\n";
241 print
'<form action="'.$_SERVER[
'PHP_SELF'].
'?action=create" method="POST">';
242 print
'<input type="hidden" name="token" value="'.newToken().
'">';
243 print
'<input type="hidden" name="type" value="'.$type.
'">';
245 if ($pricetowithdraw) {
246 $title = $langs->trans(
'BankToReceiveWithdraw').
': ';
247 if ($type ==
'bank-transfer') {
248 $title = $langs->trans(
'BankToPayCreditTransfer').
': ';
250 print
'<span class="hideonsmartphone">'.$title.
'</span>';
253 $default_account = ($type ==
'bank-transfer' ?
'PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT' :
'PRELEVEMENT_ID_BANKACCOUNT');
255 print
$form->select_comptes(
getDolGlobalInt($default_account),
'id_bankaccount', 0,
"courant=1", 0,
'', 0,
'widthcentpercentminusx maxwidth300', 1);
256 print
' ';
258 if (empty($executiondate)) {
260 if ($type !=
'bank-transfer') {
269 print $langs->trans(
'ExecutionDate').
' ';
270 $datere = $executiondate;
271 print
$form->selectDate($datere,
're');
274 if ($mysoc->isInEEC()) {
275 $title = $langs->trans(
"CreateForSepa");
276 if ($type ==
'bank-transfer') {
277 $title = $langs->trans(
"CreateSepaFileForPaymentByBankTransfer");
280 if ($type !=
'bank-transfer') {
281 print
'<select name="format">';
282 print
'<option value="FRST"'.($format ==
'FRST' ?
' selected="selected"' :
'').
'>'.$langs->trans(
'SEPAFRST').
'</option>';
283 print
'<option value="RCUR"'.($format ==
'RCUR' ?
' selected="selected"' :
'').
'>'.$langs->trans(
'SEPARCUR').
'</option>';
286 print
'<input type="submit" class="butAction margintoponly maringbottomonly" value="'.$title.
'"/>';
288 $title = $langs->trans(
"CreateAll");
289 if ($type ==
'bank-transfer') {
290 $title = $langs->trans(
"CreateFileForPaymentByBankTransfer");
292 print
'<input type="hidden" name="format" value="ALL">'.
"\n";
293 print
'<input type="submit" class="butAction margintoponly maringbottomonly" value="'.$title.
'">'.
"\n";
296 if ($mysoc->isInEEC()) {
297 $title = $langs->trans(
"CreateForSepaFRST");
298 if ($type ==
'bank-transfer') {
299 $title = $langs->trans(
"CreateSepaFileForPaymentByBankTransfer");
301 print
'<a class="butActionRefused classfortooltip margintoponly maringbottomonly" href="#" title="'.$langs->trans(
"AmountMustBePositive").
'">'.$title.
"</a>\n";
303 if ($type !=
'bank-transfer') {
304 $title = $langs->trans(
"CreateForSepaRCUR");
305 print
'<a class="butActionRefused classfortooltip margintoponly maringbottomonly" href="#" title="'.$langs->trans(
"AmountMustBePositive").
'">'.$title.
"</a>\n";
308 $title = $langs->trans(
"CreateAll");
309 if ($type ==
'bank-transfer') {
310 $title = $langs->trans(
"CreateFileForPaymentByBankTransfer");
312 print
'<a class="butActionRefused classfortooltip margintoponly maringbottomonly" href="#">'.$title.
"</a>\n";
316 $titlefortab = $langs->transnoentitiesnoconv(
"StandingOrders");
317 $title = $langs->trans(
"CreateAll");
318 if ($type ==
'bank-transfer') {
319 $titlefortab = $langs->transnoentitiesnoconv(
"PaymentByBankTransfers");
320 $title = $langs->trans(
"CreateFileForPaymentByBankTransfer");
322 print
'<a class="butActionRefused classfortooltip margintoponly maringbottomonly" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv(
"NoInvoiceToWithdraw", $titlefortab, $titlefortab)).
'">';
338 $sql =
"SELECT f.ref, f.rowid, f.total_ttc, s.nom as name, s.rowid as socid,";
339 if ($type ==
'bank-transfer') {
340 $sql .=
" f.ref_supplier,";
342 $sql .=
" pfd.rowid as request_row_id, pfd.date_demande, pfd.amount";
343 if ($type ==
'bank-transfer') {
344 $sql .=
" FROM ".MAIN_DB_PREFIX.
"facture_fourn as f,";
346 $sql .=
" FROM ".MAIN_DB_PREFIX.
"facture as f,";
348 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
349 $sql .=
" ".MAIN_DB_PREFIX.
"prelevement_demande as pfd";
350 $sql .=
" WHERE s.rowid = f.fk_soc";
351 $sql .=
" AND f.entity IN (".getEntity(
'invoice').
")";
352 if (empty($conf->global->WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS)) {
353 $sql .=
" AND f.fk_statut = ".Facture::STATUS_VALIDATED;
356 $sql .=
" AND f.total_ttc > 0";
357 $sql .=
" AND pfd.traite = 0";
358 $sql .=
" AND pfd.ext_payment_id IS NULL";
359 if ($type ==
'bank-transfer') {
360 $sql .=
" AND pfd.fk_facture_fourn = f.rowid";
362 $sql .=
" AND pfd.fk_facture = f.rowid";
365 $sql .=
" AND f.fk_soc = ".((int) $socid);
368 $nbtotalofrecords =
'';
370 $result = $db->query(
$sql);
371 $nbtotalofrecords = $db->num_rows($result);
372 if (($page * $limit) > $nbtotalofrecords) {
379 $sql .= $db->plimit($limit + 1, $offset);
381 $resql = $db->query(
$sql);
383 $num = $db->num_rows($resql);
387 if ($limit > 0 && $limit != $conf->liste_limit) {
388 $param .=
'&limit='.((int) $limit);
391 $param .=
'&socid='.urlencode($socid);
394 $param .=
"&option=".urlencode($option);
397 print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
398 print
'<input type="hidden" name="token" value="'.newToken().
'">';
399 print
'<input type="hidden" name="page" value="'.$page.
'">';
400 if (!empty($limit)) {
401 print
'<input type="hidden" name="limit" value="'.$limit.
'"/>';
404 print
'<input type="hidden" name="type" value="'.$type.
'">';
407 $title = $langs->trans(
"InvoiceWaitingWithdraw");
408 if ($type ==
'bank-transfer') {
409 $title = $langs->trans(
"InvoiceWaitingPaymentByBankTransfer");
411 print_barre_liste($title, $page, $_SERVER[
'PHP_SELF'], $param,
'',
'', $massactionbutton, $num, $nbtotalofrecords,
'bill', 0,
'',
'', $limit);
413 $tradinvoice =
"Invoice";
414 if ($type ==
'bank-transfer') {
415 $tradinvoice =
"SupplierInvoice";
418 print
'<div class="div-table-responsive-no-min">';
419 print
'<table class="noborder centpercent">';
420 print
'<tr class="liste_titre">';
423 if ($massactionbutton || $massaction) {
424 print
'<td align="center">'.$form->showCheckAddButtons(
'checkforselect', 1).
'</td>';
427 print
'<td>'.$langs->trans($tradinvoice).
'</td>';
428 if ($type ==
'bank-transfer') {
429 print
'<td>'.$langs->trans(
"RefSupplier").
'</td>';
431 print
'<td>'.$langs->trans(
"ThirdParty").
'</td>';
432 print
'<td>'.$langs->trans(
"RIB").
'</td>';
433 print
'<td>'.$langs->trans(
"RUM").
'</td>';
434 print
'<td class="right">'.$langs->trans(
"AmountTTC").
'</td>';
435 print
'<td class="right">'.$langs->trans(
"DateRequest").
'</td>';
438 if ($massactionbutton || $massaction) {
439 print
'<td align="center">'.$form->showCheckAddButtons(
'checkforselect', 1).
'</td>';
445 require_once DOL_DOCUMENT_ROOT.
'/societe/class/companybankaccount.class.php';
447 while ($i < $num && $i < $limit) {
448 $obj = $db->fetch_object($resql);
451 $bac->fetch(0, $obj->socid);
453 $invoicestatic->id = $obj->rowid;
454 $invoicestatic->ref = $obj->ref;
455 $invoicestatic->ref_supplier = $obj->ref_supplier;
457 print
'<tr class="oddeven">';
461 if ($massactionbutton || $massaction) {
462 print
'<td class="nowrap center">';
464 if (in_array($obj->request_row_id, $arrayofselected)) {
467 print
'<input id="cb'.$obj->request_row_id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->request_row_id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
473 print
'<td class="tdoverflowmax150">';
474 print $invoicestatic->getNomUrl(1,
'withdraw');
477 if ($type ==
'bank-transfer') {
478 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($invoicestatic->ref_supplier).
'">';
484 print
'<td class="tdoverflowmax100">';
485 $thirdpartystatic->fetch($obj->socid);
486 print $thirdpartystatic->getNomUrl(1,
'ban');
492 if (!empty($bac->iban) || !empty($bac->bic)) {
493 print $bac->iban.(($bac->iban && $bac->bic) ?
' / ' :
'').$bac->bic;
494 if ($bac->verif() <= 0) {
495 print
img_warning(
'Error on default bank number for IBAN : '.$langs->trans($bac->error_message));
498 print
img_warning($langs->trans(
"IBANNotDefined"));
501 print
img_warning($langs->trans(
"NoBankAccountDefined"));
507 $rumtoshow = $thirdpartystatic->display_rib(
'rum');
510 $format = $thirdpartystatic->display_rib(
'format');
511 if ($type !=
'bank-transfer') {
513 print
' ('.$format.
')';
517 print
img_warning($langs->trans(
"NoBankAccountDefined"));
521 print
'<td class="right amount">';
522 print
price($obj->amount, 0, $langs, 0, 0, -1, $conf->currency);
525 print
'<td class="right">';
530 if ($massactionbutton || $massaction) {
531 print
'<td class="nowrap center">';
533 if (in_array($obj->request_row_id, $arrayofselected)) {
536 print
'<input id="cb'.$obj->request_row_id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->request_row_id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
545 if ($type ==
'bank-transfer') {
548 if ($massactionbutton || $massaction) {
551 print
'<tr class="oddeven"><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage bank accounts.
Class to manage withdrawal receipts.
Class to manage bank accounts description of third parties.
Class to manage suppliers invoices.
Class to manage invoices.
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.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
dol_time_plus_duree($time, $duration_value, $duration_unit, $ruleforendofmonth=0)
Add a delay to a date.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed informations (by default a local PHP server timestamp) Re...
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
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...
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.
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
prelevement_check_config($type='direct-debit')
Check need data to create standigns orders receipt file.
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.