34 require
'../../main.inc.php';
35 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.class.php';
36 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
37 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/paiementfourn.class.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
39 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
41 $langs->loadLangs(array(
'companies',
'bills',
'banks',
'compta'));
44 $action =
GETPOST(
'action',
'alpha');
46 $facid =
GETPOST(
'facid',
'int');
47 $socid =
GETPOST(
'socid',
'int');
48 $accountid =
GETPOST(
'accountid');
50 $month =
GETPOST(
'month',
'int');
53 $search_ref=
GETPOST(
"search_ref",
"int");
54 $search_account=
GETPOST(
"search_account",
"int");
55 $search_paymenttype=
GETPOST(
"search_paymenttype");
56 $search_amount=
GETPOST(
"search_amount",
'alpha');
57 $search_company=
GETPOST(
"search_company",
'alpha');
58 $search_payment_num=
GETPOST(
'search_payment_num',
'alpha');
60 $sortfield =
GETPOST(
"sortfield",
'alpha');
61 $sortorder =
GETPOST(
"sortorder",
'alpha');
63 if (empty($page) || $page == -1) { $page = 0; }
64 $offset = $conf->liste_limit * $page;
65 $pageprev = $page - 1;
66 $pagenext = $page + 1;
67 $limit =
GETPOST(
'limit',
'int')?
GETPOST(
'limit',
'int'):$conf->liste_limit;
68 if (! $sortorder) $sortorder=
"DESC";
69 if (! $sortfield) $sortfield=
"p.rowid";
70 $optioncss =
GETPOST(
'optioncss',
'alpha');
72 $amounts = array();array();
73 $amountsresttopay=array();
76 $multicurrency_amounts=array();
77 $multicurrency_amountsresttopay=array();
80 if ($user->societe_id > 0)
82 $socid = $user->societe_id;
87 $hookmanager->initHooks(array(
'paymentsupplier'));
91 $extralabels = $extrafields->fetch_name_optionals_label(
'paymentsupplier');
92 $search_array_options=$extrafields->getOptionalsFromPost(
'paymentsupplier',
'',
'search_');
102 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha'))
107 $search_paymenttype=
"";
108 $search_payment_num=
"";
113 $search_array_options=array();
116 $parameters=array(
'socid'=>$socid);
117 $reshook=$hookmanager->executeHooks(
'doActions',$parameters,$object,$action);
118 if ($reshook < 0)
setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
122 if ($action ==
'add_paiement' || ($action ==
'confirm_paiement' && $confirm==
'yes'))
129 $atleastonepaymentnotnull = 0;
133 foreach ($_POST as $key => $value)
135 if (substr($key,0,7) ==
'amount_')
137 $cursorfacid = substr($key,7);
139 $totalpayment = $totalpayment + $amounts[$cursorfacid];
140 if (! empty($amounts[$cursorfacid])) $atleastonepaymentnotnull++;
141 $result=$tmpinvoice->fetch($cursorfacid);
143 $amountsresttopay[$cursorfacid]=
price2num($tmpinvoice->total_ttc - $tmpinvoice->getSommePaiement());
144 if ($amounts[$cursorfacid])
147 if ($amounts[$cursorfacid] && (abs($amounts[$cursorfacid]) > abs($amountsresttopay[$cursorfacid])))
150 $formquestion[
'text'] =
img_warning($langs->trans(
"PaymentHigherThanReminderToPaySupplier")).
' '.$langs->trans(
"HelpPaymentHigherThanReminderToPaySupplier");
153 if ($datepaye && ($datepaye < $tmpinvoice->date))
155 $langs->load(
"errors");
161 $formquestion[$i++]=array(
'type' =>
'hidden',
'name' => $key,
'value' => $_POST[$key]);
163 elseif (substr($key,0,21) ==
'multicurrency_amount_')
165 $cursorfacid = substr($key,21);
167 $multicurrency_totalpayment += $multicurrency_amounts[$cursorfacid];
168 if (! empty($multicurrency_amounts[$cursorfacid])) $atleastonepaymentnotnull++;
169 $result=$tmpinvoice->fetch($cursorfacid);
171 $multicurrency_amountsresttopay[$cursorfacid]=
price2num($tmpinvoice->total_ttc - $tmpinvoice->getSommePaiement(1));
172 if ($multicurrency_amounts[$cursorfacid])
175 if ($multicurrency_amounts[$cursorfacid] && (abs($multicurrency_amounts[$cursorfacid]) > abs($multicurrency_amountsresttopay[$cursorfacid])))
178 $formquestion[
'text'] =
img_warning($langs->trans(
"PaymentHigherThanReminderToPaySupplier")).
' '.$langs->trans(
"HelpPaymentHigherThanReminderToPaySupplier");
181 if ($datepaye && ($datepaye < $tmpinvoice->date))
183 $langs->load(
"errors");
189 $formquestion[$i++]=array(
'type' =>
'hidden',
'name' => $key,
'value' =>
GETPOST($key,
'int'));
194 if ($_POST[
'paiementid'] <= 0)
196 setEventMessages($langs->transnoentities(
'ErrorFieldRequired',$langs->transnoentities(
'PaymentMode')), null,
'errors');
200 if (! empty($conf->banque->enabled))
205 setEventMessages($langs->transnoentities(
'ErrorFieldRequired',$langs->transnoentities(
'AccountToCredit')), null,
'errors');
210 if (empty($totalpayment) && empty($multicurrency_totalpayment) && empty($atleastonepaymentnotnull))
212 setEventMessages($langs->transnoentities(
'ErrorFieldRequired',$langs->trans(
'PaymentAmount')), null,
'errors');
216 if (empty($datepaye))
218 setEventMessages($langs->transnoentities(
'ErrorFieldRequired',$langs->transnoentities(
'Date')), null,
'errors');
223 if ($totalpayment > 0 && $multicurrency_totalpayment > 0)
225 setEventMessages($langs->transnoentities(
'ErrorPaymentInBothCurrency'), null,
'errors');
233 if ($action ==
'add_paiement')
246 if ($action ==
'confirm_paiement' && $confirm ==
'yes')
258 $paiement->datepaye = $datepaye;
259 $paiement->amounts = $amounts;
260 $paiement->multicurrency_amounts = $multicurrency_amounts;
261 $paiement->paiementid = $_POST[
'paiementid'];
262 $paiement->num_paiement = $_POST[
'num_paiement'];
263 $paiement->note = $_POST[
'comment'];
266 $paiement_id = $paiement->create($user,(
GETPOST(
'closepaidinvoices')==
'on'?1:0));
267 if ($paiement_id < 0)
276 $result=$paiement->addPaymentToBank($user,
'payment_supplier',
'(SupplierInvoicePayment)',$accountid,
'',
'');
290 foreach ($paiement->amounts as $key => $amount)
293 if (is_numeric($amount) && $amount <> 0)
295 if ($invoiceid != 0) $invoiceid=-1;
296 else $invoiceid=$facid;
299 if ($invoiceid > 0) $loc = DOL_URL_ROOT.
'/fourn/facture/card.php?facid='.$invoiceid;
300 else $loc = DOL_URL_ROOT.
'/fourn/paiement/card.php?id='.$paiement_id;
301 header(
'Location: '.$loc);
317 $supplierstatic=
new Societe($db);
320 llxHeader(
'',$langs->trans(
'ListPayment'));
325 if ($action ==
'create' || $action ==
'confirm_paiement' || $action ==
'add_paiement')
328 $result = $object->fetch($facid);
331 $dateinvoice=($datefacture==
''?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:
''):$datefacture);
333 $sql =
'SELECT s.nom as name, s.rowid as socid,';
334 $sql.=
' f.rowid, f.ref, f.ref_supplier, f.amount, f.total_ttc as total, f.fk_mode_reglement, f.fk_account';
335 if (!$user->rights->societe->client->voir && !$socid) $sql .=
", sc.fk_soc, sc.fk_user ";
336 $sql.=
' FROM '.MAIN_DB_PREFIX.
'societe as s, '.MAIN_DB_PREFIX.
'facture_fourn as f';
337 if (!$user->rights->societe->client->voir && !$socid) $sql .=
", ".MAIN_DB_PREFIX.
"societe_commerciaux as sc";
338 $sql.=
' WHERE f.fk_soc = s.rowid';
339 $sql.=
' AND f.rowid = '.$facid;
340 if (!$user->rights->societe->client->voir && !$socid) $sql .=
" AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
341 $resql = $db->query($sql);
344 $num = $db->num_rows(
$resql);
347 $obj = $db->fetch_object(
$resql);
348 $total = $obj->total;
353 if (! empty($conf->use_javascript_ajax))
355 print "\n".
'<script type="text/javascript" language="javascript">';
356 print '$(document).ready(function () { 358 function _elemToJson(selector) 361 $.map(selector.serializeArray(), function(n,i) 363 subJson[n["name"]] = n["value"]; 368 function callForResult(imgId) 371 var form = $("#payment_form"); 373 json["invoice_type"] = $("#invoice_type").val(); 374 json["amountPayment"] = $("#amountpayment").attr("value"); 375 json["amounts"] = _elemToJson(form.find("input.amount")); 376 json["remains"] = _elemToJson(form.find("input.remain")); 379 json["imgClicked"] = imgId; 382 $.post("'.DOL_URL_ROOT.
'/compta/ajaxpayment.php", json, function(data) 384 json = $.parseJSON(data); 388 for (var key in json) 390 if (key == "result") { 391 if (json["makeRed"]) { 392 $("#"+key).addClass("error"); 394 $("#"+key).removeClass("error"); 396 json[key]=json["label"]+" "+json[key]; 397 $("#"+key).text(json[key]); 398 } else {console.log(key); 399 form.find("input[name*=\""+key+"\"]").each(function() { 400 $(this).attr("value", json[key]); 406 $("#payment_form").find("input.amount").change(function() { 409 $("#payment_form").find("input.amount").keyup(function() { 417 print ' $(document).ready(function () {';
418 print ' $(".AutoFillAmout").on(\'click touchstart\', function(){ 419 $("input[name="+$(this).data(\'rowname\')+"]").val($(this).data("value")).trigger("change"); 423 print ' </script>'.
"\n";
426 print '<form id="payment_form" name="addpaiement" action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">';
427 print '<input type="hidden" name="token" value="'.$_SESSION[
'newtoken'].
'">';
428 print '<input type="hidden" name="action" value="add_paiement">';
429 print '<input type="hidden" name="facid" value="'.$facid.
'">';
430 print '<input type="hidden" name="ref_supplier" value="'.$obj->ref_supplier.
'">';
431 print '<input type="hidden" name="socid" value="'.$obj->socid.
'">';
432 print '<input type="hidden" name="societe" value="'.$obj->name.
'">';
436 print '<table class="border" width="100%">';
438 print '<tr><td class="fieldrequired titlefieldcreate">'.$langs->trans(
'Company').
'</td><td>';
439 $supplierstatic->id=$obj->socid;
440 $supplierstatic->name=$obj->name;
441 print $supplierstatic->getNomUrl(1,
'supplier');
443 print '<tr><td class="fieldrequired">'.$langs->trans(
'Date').
'</td><td>';
444 print $form->selectDate($dateinvoice,
'',
'',
'', 0,
"addpaiement", 1, 1, 0,
'',
'', $object->date);
446 print '<tr><td class="fieldrequired">'.$langs->trans(
'PaymentMode').
'</td><td>';
447 $form->select_types_paiements(empty($_POST[
'paiementid'])?$obj->fk_mode_reglement:$_POST[
'paiementid'],
'paiementid');
449 if (! empty($conf->banque->enabled))
451 print '<tr><td class="fieldrequired">'.$langs->trans(
'Account').
'</td><td>';
452 $form->select_comptes(empty($accountid)?$obj->fk_account:$accountid,
'accountid',0,
'',2);
457 print '<tr><td> </td></tr>';
459 print '<tr><td>'.$langs->trans(
'Numero').
'</td><td><input name="num_paiement" type="text" value="'.(empty($_POST[
'num_paiement'])?
'':$_POST[
'num_paiement']).
'"></td></tr>';
460 print '<tr><td>'.$langs->trans(
'Comments').
'</td>';
461 print '<td class="tdtop">';
462 print '<textarea name="comment" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_3.
'">'.(empty($_POST[
'comment'])?
'':$_POST[
'comment']).
'</textarea></td></tr>';
467 $parameters=array(
'facid'=>$facid,
'ref'=>$ref,
'objcanvas'=>$objcanvas);
468 $reshook=$hookmanager->executeHooks(
'paymentsupplierinvoices',$parameters,$object,$action);
469 $error=$hookmanager->error; $errors=$hookmanager->errors;
475 $sql =
'SELECT f.rowid as facid, f.ref, f.ref_supplier, f.total_ht, f.total_ttc, f.multicurrency_total_ttc, f.datef as df,';
476 $sql.=
' SUM(pf.amount) as am, SUM(pf.multicurrency_amount) as multicurrency_am, f.date_lim_reglement as dlr';
477 $sql.=
' FROM '.MAIN_DB_PREFIX.
'facture_fourn as f';
478 $sql.=
' LEFT JOIN '.MAIN_DB_PREFIX.
'paiementfourn_facturefourn as pf ON pf.fk_facturefourn = f.rowid';
479 $sql.=
" WHERE f.entity = ".$conf->entity;
480 $sql.=
' AND f.fk_soc = '.$object->socid;
481 $sql.=
' AND f.paye = 0';
482 $sql.=
' AND f.fk_statut = 1';
483 $sql.=
' GROUP BY f.rowid, f.ref, f.ref_supplier, f.total_ht, f.total_ttc, f.multicurrency_total_ttc, f.datef, f.date_lim_reglement';
484 $resql = $db->query($sql);
487 $num = $db->num_rows(
$resql);
491 if ($object->type == 2) $sign=-1;
496 if (!empty($conf->use_javascript_ajax)){
498 print "\n".
'<script type="text/javascript" language="javascript">';
499 print ' $(document).ready(function () {';
500 print ' $(".AutoFillAmout").on(\'click touchstart\', function(){ 501 $("input[name="+$(this).data(\'rowname\')+"]").val($(this).data("value")); 504 print ' </script>'.
"\n";
507 print '<div class="div-table-responsive-no-min">';
508 print '<table class="tagtable liste'.($moreforfilter?
" listwithfilterbefore":
"").
'">'.
"\n";
510 print '<tr class="liste_titre">';
511 print
'<td>'.$langs->trans(
'Invoice').
'</td>';
512 print
'<td>'.$langs->trans(
'RefSupplier').
'</td>';
513 print
'<td align="center">'.$langs->trans(
'Date').
'</td>';
514 print
'<td align="center">'.$langs->trans(
'DateMaxPayment').
'</td>';
515 if (!empty($conf->multicurrency->enabled)) print
'<td>'.$langs->trans(
'Currency').
'</td>';
516 if (!empty($conf->multicurrency->enabled)) print
'<td align="right">'.$langs->trans(
'MulticurrencyAmountTTC').
'</td>';
517 if (!empty($conf->multicurrency->enabled)) print
'<td align="right">'.$langs->trans(
'MulticurrencyAlreadyPaid').
'</td>';
518 if (!empty($conf->multicurrency->enabled)) print
'<td align="right">'.$langs->trans(
'MulticurrencyRemainderToPay').
'</td>';
519 print
'<td align="right">'.$langs->trans(
'AmountTTC').
'</td>';
520 print
'<td align="right">'.$langs->trans(
'AlreadyPaid').
'</td>';
521 print
'<td align="right">'.$langs->trans(
'RemainderToPay').
'</td>';
522 print
'<td align="center">'.$langs->trans(
'PaymentAmount').
'</td>';
523 if (!empty($conf->multicurrency->enabled)) print
'<td align="center">'.$langs->trans(
'MulticurrencyPaymentAmount').
'</td>';
531 $objp = $db->fetch_object(
$resql);
534 $invoice->fetch($objp->facid);
535 $paiement = $invoice->getSommePaiement();
536 $creditnotes=$invoice->getSumCreditNotesUsed();
537 $deposits=$invoice->getSumDepositsUsed();
538 $alreadypayed=
price2num($paiement + $creditnotes + $deposits,
'MT');
539 $remaintopay=
price2num($invoice->total_ttc - $paiement - $creditnotes - $deposits,
'MT');
542 if (!empty($conf->multicurrency->enabled))
544 $multicurrency_payment = $invoice->getSommePaiement(1);
545 $multicurrency_creditnotes=$invoice->getSumCreditNotesUsed(1);
546 $multicurrency_deposits=$invoice->getSumDepositsUsed(1);
547 $multicurrency_alreadypayed=
price2num($multicurrency_payment + $multicurrency_creditnotes + $multicurrency_deposits,
'MT');
548 $multicurrency_remaintopay=
price2num($invoice->multicurrency_total_ttc - $multicurrency_payment - $multicurrency_creditnotes - $multicurrency_deposits,
'MT');
551 print
'<tr class="oddeven">';
555 $invoicesupplierstatic->ref=$objp->ref;
556 $invoicesupplierstatic->id=$objp->facid;
557 print $invoicesupplierstatic->getNomUrl(1);
561 print
'<td>'.$objp->ref_supplier.
'</td>';
566 print
'<td align="center">';
571 print
'<td align="center"><b>!!!</b></td>';
577 print
'<td align="center">';
580 if ($invoice->hasDelay())
589 print
'<td align="center"><b>--</b></td>';
593 if (!empty($conf->multicurrency->enabled))
596 print
'<td align="center">'.$objp->multicurrency_code.
"</td>\n";
598 print
'<td align="right">';
599 if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency)
601 print
price($objp->multicurrency_total_ttc);
605 print
'<td align="right">';
606 if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency)
608 print
price($objp->multicurrency_am);
612 print
'<td align="right">';
613 if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency)
615 print
price($objp->multicurrency_total_ttc - $objp->multicurrency_am);
620 print
'<td align="right">'.price($objp->total_ttc).
'</td>';
622 print
'<td align="right">'.price($objp->am).
'</td>';
624 print
'<td align="right">'.price($remaintopay).
'</td>';
627 print
'<td align="center">';
629 $namef =
'amount_'.$objp->facid;
630 $nameRemain =
'remain_'.$objp->facid;
632 if ($action !=
'add_paiement')
634 if (!empty($conf->use_javascript_ajax))
635 print
img_picto(
"Auto fill",
'rightarrow',
"class='AutoFillAmout' data-rowname='".$namef.
"' data-value='".($sign * $remaintopay).
"'");
636 print
'<input type="hidden" class="remain" name="'.$nameRemain.
'" value="'.$remaintopay.
'">';
641 print
'<input type="text" size="8" name="'.$namef.
'_disabled" value="'.
dol_escape_htmltag(
GETPOST($namef)).
'" disabled>';
647 if (! empty($conf->multicurrency->enabled))
649 print
'<td align="right">';
652 $namef =
'multicurrency_amount_'.$objp->facid;
653 $nameRemain =
'multicurrency_remain_'.$objp->facid;
655 if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency)
657 if ($action !=
'add_paiement')
659 if (!empty($conf->use_javascript_ajax))
660 print
img_picto(
"Auto fill",
'rightarrow',
"class='AutoFillAmout' data-rowname='".$namef.
"' data-value='".($sign * $multicurrency_remaintopay).
"'");
661 print
'<input type=hidden class="multicurrency_remain" name="'.$nameRemain.
'" value="'.$multicurrency_remaintopay.
'">';
662 print
'<input type="text" size="8" class="multicurrency_amount" name="'.$namef.
'" value="'.$_POST[$namef].
'">';
666 print
'<input type="text" size="8" name="'.$namef.
'_disabled" value="'.$_POST[$namef].
'" disabled>';
667 print
'<input type="hidden" name="'.$namef.
'" value="'.$_POST[$namef].
'">';
674 $total+=$objp->total_ht;
675 $total_ttc+=$objp->total_ttc;
676 $totalrecu+=$objp->am;
682 print
'<tr class="liste_total">';
683 print
'<td colspan="4" align="left">'.$langs->trans(
'TotalTTC').
':</td>';
684 if (!empty($conf->multicurrency->enabled)) print
'<td> </td>';
685 if (!empty($conf->multicurrency->enabled)) print
'<td> </td>';
686 if (!empty($conf->multicurrency->enabled)) print
'<td> </td>';
687 if (!empty($conf->multicurrency->enabled)) print
'<td> </td>';
688 print
'<td align="right"><b>'.price($total_ttc).
'</b></td>';
689 print
'<td align="right"><b>'.price($totalrecu).
'</b></td>';
690 print
'<td align="right"><b>'.price($total_ttc - $totalrecu).
'</b></td>';
691 print
'<td align="center" id="result" style="font-weight: bold;"></td>';
692 if (!empty($conf->multicurrency->enabled)) print
'<td align="right" id="multicurrency_result" style="font-weight: bold;"></td>';
708 if ($action !=
'add_paiement')
710 print
'<br><div class="center"><input type="checkbox" checked name="closepaidinvoices"> '.$langs->trans(
"ClosePaidInvoicesAutomatically");
711 print
'<br><input type="submit" class="button" value="'.$langs->trans(
'ToMakePayment').
'"></div>';
715 if ($action ==
'add_paiement')
717 $preselectedchoice=$addwarning?
'no':
'yes';
720 if (!empty($totalpayment)) $text=$langs->trans(
'ConfirmSupplierPayment',
price($totalpayment),$langs->trans(
"Currency".$conf->currency));
721 if (!empty($multicurrency_totalpayment))
723 $text.=
'<br>'.$langs->trans(
'ConfirmSupplierPayment',
price($multicurrency_totalpayment),$langs->trans(
"paymentInInvoiceCurrency"));
725 if (
GETPOST(
'closepaidinvoices'))
727 $text.=
'<br>'.$langs->trans(
"AllCompletelyPayedInvoiceWillBeClosed");
728 print
'<input type="hidden" name="closepaidinvoices" value="'.GETPOST(
'closepaidinvoices').
'">';
730 print $form->formconfirm($_SERVER[
'PHP_SELF'].
'?facid='.$facture->id.
'&socid='.$facture->socid.
'&type='.$facture->type,$langs->trans(
'PayedSuppliersPayments'),$text,
'confirm_paiement',$formquestion,$preselectedchoice);
744 $limit =
GETPOST(
'limit',
'int')?
GETPOST(
'limit',
'int'):$conf->liste_limit;
745 $sortfield =
GETPOST(
"sortfield",
'alpha');
746 $sortorder =
GETPOST(
"sortorder",
'alpha');
748 if ($page == -1 || $page == null) { $page = 0 ; }
749 $offset = $limit * $page ;
750 $pageprev = $page - 1;
751 $pagenext = $page + 1;
752 if (! $sortorder) $sortorder=
'DESC';
753 if (! $sortfield) $sortfield=
'p.datep';
755 $sql =
'SELECT p.rowid as pid, p.datep as dp, p.amount as pamount, p.num_paiement,';
756 $sql.=
' s.rowid as socid, s.nom as name,';
757 $sql.=
' c.code as paiement_type, c.libelle as paiement_libelle,';
758 $sql.=
' ba.rowid as bid, ba.label,';
759 if (!$user->rights->societe->client->voir) $sql .=
' sc.fk_soc, sc.fk_user,';
760 $sql.=
' SUM(f.amount)';
761 $sql.=
' FROM '.MAIN_DB_PREFIX.
'paiementfourn AS p';
762 $sql.=
' LEFT JOIN '.MAIN_DB_PREFIX.
'paiementfourn_facturefourn AS pf ON p.rowid=pf.fk_paiementfourn';
763 $sql.=
' LEFT JOIN '.MAIN_DB_PREFIX.
'facture_fourn AS f ON f.rowid=pf.fk_facturefourn';
764 $sql.=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_paiement AS c ON p.fk_paiement = c.id';
765 $sql.=
' LEFT JOIN '.MAIN_DB_PREFIX.
'societe AS s ON s.rowid = f.fk_soc';
766 $sql.=
' LEFT JOIN '.MAIN_DB_PREFIX.
'bank as b ON p.fk_bank = b.rowid';
767 $sql.=
' LEFT JOIN '.MAIN_DB_PREFIX.
'bank_account as ba ON b.fk_account = ba.rowid';
768 if (!$user->rights->societe->client->voir) $sql .=
", ".MAIN_DB_PREFIX.
"societe_commerciaux as sc";
769 $sql.=
" WHERE f.entity = ".$conf->entity;
770 if (!$user->rights->societe->client->voir) $sql .=
" AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
771 if ($socid > 0) $sql .=
' AND f.fk_soc = '.$socid;
775 if ($year > 0 && empty($day))
777 else if ($year > 0 && ! empty($day))
778 $sql.=
" AND p.datep BETWEEN '".$db->idate(
dol_mktime(0, 0, 0, $month, $day, $year)).
"' AND '".$db->idate(
dol_mktime(23, 59, 59, $month, $day, $year)).
"'";
780 $sql.=
" AND date_format(p.datep, '%m') = '".$month.
"'";
787 if ($search_account > 0) $sql .=
" AND b.fk_account=".$search_account;
788 if ($search_paymenttype !=
"") $sql .=
" AND c.code='".$db->escape($search_paymenttype).
"'";
789 if ($search_payment_num !=
'') $sql .=
natural_search(
'p.num_paiement', $search_payment_num);
790 if ($search_amount) $sql .=
natural_search(
'p.amount', $search_amount, 1);
791 if ($search_company) $sql .=
natural_search(
's.nom', $search_company);
792 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
793 $sql.=
" GROUP BY p.rowid, p.datep, p.amount, p.num_paiement, s.rowid, s.nom, c.code, c.libelle, ba.rowid, ba.label";
794 if (!$user->rights->societe->client->voir) $sql .=
", sc.fk_soc, sc.fk_user";
797 $sql.= $db->order($sortfield,$sortorder);
799 $nbtotalofrecords =
'';
800 if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
802 $result = $db->query($sql);
803 $nbtotalofrecords = $db->num_rows($result);
804 if (($page * $limit) > $nbtotalofrecords)
811 $sql.= $db->plimit($limit+1, $offset);
813 $resql = $db->query($sql);
816 $num = $db->num_rows(
$resql);
820 if (! empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) $param.=
'&contextpage='.urlencode($contextpage);
821 if ($limit > 0 && $limit != $conf->liste_limit) $param.=
'&limit='.urlencode($limit);
822 if ($day) $param.=($day?
"&day=".urlencode($day):
"");
823 if ($month) $param.=($month?
"&month=".urlencode($month):
"");
824 if ($year) $param.=($year?
"&year=".urlencode($year):
"");
825 if ($search_ref) $param.=($search_ref?
"&search_ref=".urlencode($search_ref):
"");
826 if ($search_company) $param.=($search_company?
"&search_company=".urlencode($search_company):
"");
827 if ($search_amount !=
'') $param.=($search_amount?
"&search_amount=".urlencode($search_amount):
"");
828 if ($search_payment_num) $param.=($search_payment_num?
"&search_payment_num=".urlencode($search_payment_num):
"");
829 if ($optioncss !=
'') $param.=
'&optioncss='.urlencode($optioncss);
831 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
833 $massactionbutton=$form->selectMassAction(
'', $massaction ==
'presend' ? array() : array(
'presend'=>$langs->trans(
"SendByMail"),
'builddoc'=>$langs->trans(
"PDFMerge")));
835 print_barre_liste($langs->trans(
'SupplierPayments'), $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num, $nbtotalofrecords,
'title_accountancy.png', 0,
'',
'', $limit);
837 print
'<form method="GET" action="'.$_SERVER[
"PHP_SELF"].
'">';
838 if ($optioncss !=
'') print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
839 print
'<input type="hidden" name="token" value="'.$_SESSION[
'newtoken'].
'">';
840 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
841 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
842 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
843 print
'<input type="hidden" name="page" value="'.$page.
'">';
848 $reshook=$hookmanager->executeHooks(
'printFieldPreListTitle',$parameters);
849 if (empty($reshook)) $moreforfilter .= $hookmanager->resPrint;
850 else $moreforfilter = $hookmanager->resPrint;
854 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
855 print $moreforfilter;
859 $varpage=empty($contextpage)?$_SERVER[
"PHP_SELF"]:$contextpage;
860 $selectedfields=$form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
862 print
'<div class="div-table-responsive">';
863 print
'<table class="tagtable liste'.($moreforfilter?
" listwithfilterbefore":
"").
'">'.
"\n";
866 print
'<tr class="liste_titre_filter">';
867 print
'<td class="liste_titre" align="left">';
868 print
'<input class="flat" type="text" size="4" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
870 print
'<td class="liste_titre" align="center">';
871 if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print
'<input class="flat width25 valignmiddle" type="text" maxlength="2" name="day" value="'.dol_escape_htmltag($day).
'">';
872 print
'<input class="flat width25 valignmiddle" type="text" maxlength="2" name="month" value="'.dol_escape_htmltag($month).
'">';
873 $formother->select_year($year?$year:-1,
'year',1, 20, 5);
875 print
'<td class="liste_titre" align="left">';
876 print
'<input class="flat" type="text" size="6" name="search_company" value="'.dol_escape_htmltag($search_company).
'">';
878 print
'<td class="liste_titre">';
879 $form->select_types_paiements($search_paymenttype,
'search_paymenttype',
'',2,1,1);
881 print
'<td class="liste_titre" align="left">';
882 print
'<input class="flat" type="text" size="4" name="search_payment_num" value="'.dol_escape_htmltag($search_payment_num).
'">';
884 print
'<td class="liste_titre">';
885 $form->select_comptes($search_account,
'search_account',0,
'',1);
887 print
'<td class="liste_titre" align="right">';
888 print
'<input class="flat" type="text" size="4" name="search_amount" value="'.dol_escape_htmltag($search_amount).
'">';
890 print
'<td class="liste_titre" align="right">';
891 $searchpicto=$form->showFilterAndCheckAddButtons(0);
896 print
'<tr class="liste_titre">';
903 print_liste_field_titre(
"Amount",$_SERVER[
"PHP_SELF"],
'p.amount',
'',$param,
'align="right"',$sortfield,$sortorder);
908 while ($i < min($num,$limit))
910 $objp = $db->fetch_object(
$resql);
912 print
'<tr class="oddeven">';
915 print
'<td class="nowrap"><a href="'.DOL_URL_ROOT.
'/fourn/paiement/card.php?id='.$objp->pid.
'">'.
img_object($langs->trans(
'ShowPayment'),
'payment').
' '.$objp->pid.
'</a></td>';
918 $dateformatforpayment =
'day';
919 if (! empty($conf->global->INVOICE_USE_HOURS_FOR_PAYMENT)) $dateformatforpayment=
'dayhour';
920 print
'<td class="nowrap" align="center">'.dol_print_date($db->jdate($objp->dp), $dateformatforpayment).
"</td>\n";
924 if ($objp->socid) print
'<a href="'.DOL_URL_ROOT.
'/societe/card.php?socid='.$objp->socid.
'">'.
img_object($langs->trans(
'ShowCompany'),
'company').
' '.
dol_trunc($objp->name,32).
'</a>';
929 $payment_type = $langs->trans(
"PaymentType".$objp->paiement_type)!=(
"PaymentType".$objp->paiement_type)?$langs->trans(
"PaymentType".$objp->paiement_type):$objp->paiement_libelle;
930 print
'<td>'.$payment_type.
' '.
dol_trunc($objp->num_paiement,32).
"</td>\n";
933 print
'<td>'.$objp->num_paiement.
'</td>';
936 if ($objp->bid) print
'<a href="'.DOL_URL_ROOT.
'/compta/bank/bankentries_list.php?account='.$objp->bid.
'">'.
img_object($langs->trans(
"ShowAccount"),
'account').
' '.
dol_trunc($objp->label,24).
'</a>';
940 print
'<td align="right">'.price($objp->pamount).
'</td>';
949 print
'<td> </td>';
img_warning($titlealt='default', $moreatt='')
Show warning logo.
load_fiche_titre($titre, $morehtmlright='', $picto='title_generic.png', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
GETPOST($paramname, $check='none', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
print
Draft customers invoices.
setEventMessages($mesg, $mesgs, $style='mesgs')
Set event messages in dol_events session object.
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '...' if string larger than length.
if(! empty($conf->facture->enabled) && $user->rights->facture->lire) if(! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire) if(! empty($conf->don->enabled) && $user->rights->societe->lire) if(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) if(! empty($conf->facture->enabled) &&! empty($conf->commande->enabled) && $user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) if(! empty($conf->facture->enabled) && $user->rights->facture->lire) if(! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire) $resql
Social contributions to pay.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm=false, $check=1)
Return a timestamp date built from detailed informations (by default a local PHP server timestamp) Re...
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
dol_print_error($db='', $error='', $errors=null)
Affiche message erreur system avec toutes les informations pour faciliter le diagnostic et la remonte...
Class to manage suppliers invoices.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields...
print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='title_generic.png', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0)
Print a title with navigation controls for pagination.
Class to manage third parties objects (customers, suppliers, prospects...)
dol_fiche_end($notab=0)
Show tab footer of a card.
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
if(GETPOST('cancel', 'alpha')) if(! GETPOST( 'confirmmassaction', 'alpha') &&$massaction !='presend' &&$massaction !='confirm_presend')
Draft customers invoices.
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='tzserver', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="")
Show title line of an array.
Class to manage payments for supplier invoices.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='')
Show picto whatever it's its name (generic function)
price2num($amount, $rounding='', $alreadysqlnb=0)
Function that return a number with universal decimal format (decimal separator is '...
dol_fiche_head($links=array(), $active='0', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='')
Show tab header of a card.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)