dolibarr  17.0.4
payments.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2005-2010 Regis Houssin <regis.houssin@inodbox.com>
5  * Copyright (C) 2011-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
6  * Copyright (C) 2011-2014 Juanjo Menent <jmenent@2byte.es>
7  * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
8  * Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <https://www.gnu.org/licenses/>.
22  */
23 
30 // Load Dolibarr environment
31 require '../../main.inc.php';
32 require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php';
33 require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php';
34 require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/paymentvat.class.php';
35 require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
36 require_once DOL_DOCUMENT_ROOT.'/salaries/class/paymentsalary.class.php';
37 require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
38 
39 // Load translation files required by the page
40 $langs->loadLangs(array('compta', 'bills'));
41 
42 $mode = GETPOST("mode", 'alpha');
43 $year = GETPOST("year", 'int');
44 $filtre = GETPOST("filtre", 'alpha');
45 $optioncss = GETPOST('optioncss', 'alpha');
46 if (!$year && $mode != 'tvaonly') {
47  $year = date("Y", time());
48 }
49 
50 $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
51 $sortfield = GETPOST('sortfield', 'aZ09comma');
52 $sortorder = GETPOST('sortorder', 'aZ09comma');
53 $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
54 if (empty($page) || $page == -1) {
55  $page = 0;
56 } // If $page is not defined, or '' or -1
57 $offset = $limit * $page;
58 $pageprev = $page - 1;
59 $pagenext = $page + 1;
60 if (!$sortfield) {
61  $sortfield = "ptva.datep";
62 }
63 if (!$sortorder) {
64  $sortorder = "DESC";
65 }
66 
67 $object = new Tva($db);
68 
69 // Security check
70 if ($user->socid) {
71  $socid = $user->socid;
72 }
73 //$result = restrictedArea($user, 'tax|salaries', '', '', 'charges|');
74 $result = restrictedArea($user, 'tax', '', 'tva', 'charges');
75 
76 
77 /*
78  * View
79  */
80 
81 $tva_static = new Tva($db);
82 $tva = new Tva($db);
83 $accountlinestatic = new AccountLine($db);
84 $payment_vat_static = new PaymentVAT($db);
85 $sal_static = new PaymentSalary($db);
86 
87 llxHeader('', $langs->trans("VATExpensesArea"));
88 
89 $title = $langs->trans("VATPayments");
90 
91 $param = '';
92 if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
93  $param .= '&contextpage='.$contextpage;
94 }
95 if ($limit > 0 && $limit != $conf->liste_limit) {
96  $param .= '&limit='.$limit;
97 }
98 if ($sortfield) {
99  $param .= '&sortfield='.$sortfield;
100 }
101 if ($sortorder) {
102  $param .= '&sortorder='.$sortorder;
103 }
104 
105 
106 print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
107 if ($optioncss != '') {
108  print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
109 }
110 print '<input type="hidden" name="token" value="'.newToken().'">';
111 print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
112 print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
113 print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
114 print '<input type="hidden" name="page" value="'.$page.'">';
115 print '<input type="hidden" name="mode" value="'.$mode.'">';
116 
117 $center = '';
118 
119 print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'title_accountancy', 0, '', '', $limit);
120 
121 if ($year) {
122  $param .= '&year='.$year;
123 }
124 
125 if (isModEnabled('tax') && $user->rights->tax->charges->lire) {
126  print '<div class="div-table-responsive">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
127  print '<table class="noborder centpercent">';
128  print '<tr class="liste_titre">';
129  print_liste_field_titre("RefPayment", $_SERVER["PHP_SELF"], "ptva.rowid", "", $param, '', $sortfield, $sortorder);
130  print_liste_field_titre("VATDeclaration", $_SERVER["PHP_SELF"], "tva.rowid", "", $param, '', $sortfield, $sortorder);
131  print_liste_field_titre("Label", $_SERVER["PHP_SELF"], "tva.label", "", $param, '', $sortfield, $sortorder);
132  print_liste_field_titre("PeriodEndDate", $_SERVER["PHP_SELF"], "tva.datev", "", $param, '', $sortfield, $sortorder, 'nowraponall');
133  print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "ptva.datep", "", $param, 'align="center"', $sortfield, $sortorder);
134  print_liste_field_titre("PaymentMode", $_SERVER["PHP_SELF"], "pct.code", "", $param, '', $sortfield, $sortorder);
135  print_liste_field_titre("Numero", $_SERVER["PHP_SELF"], "ptva.num_paiement", "", $param, '', $sortfield, $sortorder, '', 'ChequeOrTransferNumber');
136  if (isModEnabled("banque")) {
137  print_liste_field_titre("BankTransactionLine", $_SERVER["PHP_SELF"], "ptva.fk_bank", "", $param, '', $sortfield, $sortorder);
138  print_liste_field_titre("BankAccount", $_SERVER["PHP_SELF"], "bank.ref", "", $param, '', $sortfield, $sortorder);
139  }
140  //print_liste_field_titre("TypeContrib", $_SERVER["PHP_SELF"], "tva.fk_type", "", $param, '', $sortfield, $sortorder);
141  print_liste_field_titre("ExpectedToPay", $_SERVER["PHP_SELF"], "tva.amount", "", $param, 'class="right"', $sortfield, $sortorder);
142  print_liste_field_titre("PayedByThisPayment", $_SERVER["PHP_SELF"], "ptva.amount", "", $param, 'class="right"', $sortfield, $sortorder);
143  print "</tr>\n";
144 
145  $sql = "SELECT tva.rowid, tva.label as label, b.fk_account, ptva.fk_bank";
146  $sql .= ", tva.datev";
147  $sql .= ", tva.amount as total,";
148  $sql .= " ptva.rowid as pid, ptva.datep, ptva.amount as totalpaid, ptva.num_paiement as num_payment,";
149  $sql .= " pct.code as payment_code";
150  $sql .= " FROM ".MAIN_DB_PREFIX."tva as tva,";
151  $sql .= " ".MAIN_DB_PREFIX."payment_vat as ptva";
152  $sql .= " INNER JOIN ".MAIN_DB_PREFIX."bank as b ON (b.rowid = ptva.fk_bank)";
153  $sql .= " INNER JOIN ".MAIN_DB_PREFIX."bank_account as bank ON (bank.rowid = b.fk_account)";
154  $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as pct ON ptva.fk_typepaiement = pct.id";
155  $sql .= " WHERE ptva.fk_tva = tva.rowid";
156  $sql .= " AND tva.entity = ".$conf->entity;
157  if ($year > 0) {
158  $sql .= " AND (";
159  // Si period renseignee on l'utilise comme critere de date, sinon on prend date echeance,
160  // ceci afin d'etre compatible avec les cas ou la periode n'etait pas obligatoire
161  $sql .= " (tva.datev IS NOT NULL AND tva.datev between '".$db->idate(dol_get_first_day($year))."' AND '".$db->idate(dol_get_last_day($year))."')";
162  $sql .= " OR (tva.datev IS NULL AND tva.datev between '".$db->idate(dol_get_first_day($year))."' AND '".$db->idate(dol_get_last_day($year))."')";
163  $sql .= ")";
164  }
165  if (preg_match('/^cs\./', $sortfield)
166  || preg_match('/^tva\./', $sortfield)
167  || preg_match('/^ptva\./', $sortfield)
168  || preg_match('/^pct\./', $sortfield)
169  || preg_match('/^bank\./', $sortfield)) {
170  $sql .= $db->order($sortfield, $sortorder);
171  }
172  //$sql.= $db->plimit($limit+1,$offset);
173  //print $sql;
174 
175  dol_syslog("compta/tva/payments.php: select payment", LOG_DEBUG);
176  $resql = $db->query($sql);
177  if ($resql) {
178  $num = $db->num_rows($resql);
179  $i = 0;
180  $total = 0;
181  $totalnb = 0;
182  $totalpaid = 0;
183 
184  while ($i < min($num, $limit)) {
185  $obj = $db->fetch_object($resql);
186 
187  $tva->id = $obj->rowid;
188  $tva->ref = $obj->rowid;
189  $tva->label = $obj->label;
190 
191  $payment_vat_static->id = $obj->pid;
192  $payment_vat_static->ref = $obj->pid;
193 
194  print '<tr class="oddeven">';
195 
196  // Ref payment
197  print '<td>'.$payment_vat_static->getNomUrl(1)."</td>\n";
198 
199  // VAT
200  print '<td>';
201  print $tva->getNomUrl(1, '20');
202  print '</td>';
203 
204  // Label
205  print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->label).'">'.dol_escape_htmltag($obj->label).'</td>';
206 
207  // Date
208  $date = $db->jdate($obj->datev);
209  print '<td class="center nowraponall">'.dol_print_date($date, 'day').'</td>';
210 
211  // Date payment
212  $datep = $db->jdate($obj->datep);
213  print '<td class="center nowraponalls">'.dol_print_date($datep, 'day').'</td>';
214 
215  // Type payment
216  $labelpaymenttype = '';
217  if ($obj->payment_code) {
218  $labelpaymenttype = $langs->trans("PaymentTypeShort".$obj->payment_code).' ';
219  }
220 
221  print '<td class="tdoverflowmax100" title="'.dol_escape_htmltag($labelpaymenttype).'">';
222  print dol_escape_htmltag($labelpaymenttype);
223  print '</td>';
224 
225  // Chq number
226  print '<td>'.dol_escape_htmltag($obj->num_payment).'</td>';
227 
228  if (isModEnabled("banque")) {
229  // Bank transaction
230  print '<td>';
231  $accountlinestatic->id = $obj->fk_bank;
232  print $accountlinestatic->getNomUrl(1);
233  print '</td>';
234 
235  // Account
236  print '<td>';
237  $account = new Account($db);
238  $account->fetch($obj->fk_account);
239  print $account->getNomUrl(1);
240  print '</td>';
241  }
242 
243  // Expected to pay
244  print '<td class="right"><span class="amount">'.price($obj->total).'</span></td>';
245 
246  // Paid
247  print '<td class="right"><span class="amount">';
248  if ($obj->totalpaid) {
249  print price($obj->totalpaid);
250  }
251  print '</span></td>';
252  print '</tr>';
253 
254  $total = $total + $obj->total;
255  $totalnb = $totalnb + $obj->nb;
256  $totalpaid = $totalpaid + $obj->totalpaid;
257  $i++;
258  }
259 
260  // Total
261  print '<tr class="liste_total"><td colspan="3" class="liste_total">'.$langs->trans("Total").'</td>';
262  print '<td class="liste_total right"></td>'; // A total here has no sense
263  print '<td align="center" class="liste_total">&nbsp;</td>';
264  print '<td align="center" class="liste_total">&nbsp;</td>';
265  if (isModEnabled("banque")) {
266  print '<td align="center" class="liste_total">&nbsp;</td>';
267  print '<td align="center" class="liste_total">&nbsp;</td>';
268  }
269  print '<td align="center" class="liste_total">&nbsp;</td>';
270  print '<td align="center" class="liste_total">&nbsp;</td>';
271  print '<td class="liste_total right">'.price($totalpaid)."</td>";
272  print "</tr>";
273  } else {
274  dol_print_error($db);
275  }
276  print '</table>';
277  print '</div>';
278 }
279 
280 print '</form>';
281 
282 // End of page
283 llxFooter();
284 $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 bank accounts.
Class to manage bank transaction lines.
Class to manage payments of salaries.
Class to manage payments of social contributions.
Put here description of your class.
Definition: tva.class.php:36
if(isModEnabled('facture') &&!empty($user->rights->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') &&!empty($user->rights->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)) $resql
Social contributions to pay.
Definition: index.php:745
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
Definition: date.lib.php:575
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
Definition: date.lib.php:594
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields.
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.
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
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.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
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.