32 require
'../../main.inc.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/sociales/class/chargesociales.class.php';
36 require_once DOL_DOCUMENT_ROOT.
'/compta/sociales/class/paymentsocialcontribution.class.php';
37 require_once DOL_DOCUMENT_ROOT.
'/salaries/class/salary.class.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
39 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
45 $hookmanager->initHooks(array(
'specialexpensesindex'));
48 $langs->loadLangs(array(
'compta',
'bills'));
52 $socid = $user->socid;
54 $result =
restrictedArea($user,
'tax|salaries',
'',
'',
'charges|');
56 $mode =
GETPOST(
"mode",
'alpha');
58 $filtre =
GETPOST(
"filtre",
'alpha');
60 $year = date(
"Y", time());
62 $optioncss =
GETPOST(
'optioncss',
'aZ');
64 $search_account =
GETPOST(
'search_account',
'int');
66 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
67 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
68 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
70 if (empty($page) || $page == -1) {
73 $offset = $limit * $page;
74 $pageprev = $page - 1;
75 $pagenext = $page + 1;
77 $sortfield =
"cs.date_ech";
88 $tva_static =
new Tva($db);
89 $ptva_static =
new PaymentVat($db);
92 $sal_static =
new Salary($db);
93 $accountstatic =
new Account($db);
95 llxHeader(
'', $langs->trans(
"SpecialExpensesArea"));
97 $title = $langs->trans(
"SpecialExpensesArea");
100 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
101 $param .=
'&contextpage='.$contextpage;
103 if ($limit > 0 && $limit != $conf->liste_limit) {
104 $param .=
'&limit='.$limit;
107 $param .=
'&sortfield='.$sortfield;
110 $param .=
'&sortorder='.$sortorder;
116 print
'<form method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
117 if ($optioncss !=
'') {
118 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
120 print
'<input type="hidden" name="token" value="'.newToken().
'">';
121 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
122 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
123 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
124 print
'<input type="hidden" name="page" value="'.$page.
'">';
125 print
'<input type="hidden" name="mode" value="'.$mode.
'">';
127 $nav = ($year ?
'<a href="index.php?year='.($year - 1).$param.
'">'.
img_previous($langs->trans(
"Previous"),
'class="valignbottom"').
"</a> ".$langs->trans(
"Year").
' '.$year.
' <a href="index.php?year='.($year + 1).$param.
'">'.
img_next($langs->trans(
"Next"),
'class="valignbottom"').
"</a>" :
"");
128 print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num, $totalnboflines,
'object_payment', 0, $nav,
'', $limit, 1);
131 $param .=
'&year='.$year;
134 print
'<span class="opacitymedium">'.$langs->trans(
"DescTaxAndDividendsArea").
'</span><br>';
137 if (
isModEnabled(
'tax') && $user->rights->tax->charges->lire) {
139 print
load_fiche_titre($langs->trans(
"SocialContributions").($year ?
' ('.$langs->trans(
"Year").
' '.$year.
')' :
''),
'',
'');
141 print
'<table class="noborder centpercent">';
142 print
'<tr class="liste_titre">';
143 print_liste_field_titre(
"PeriodEndDate", $_SERVER[
"PHP_SELF"],
"cs.date_ech",
"", $param,
'', $sortfield, $sortorder,
'nowraponall ');
146 print_liste_field_titre(
"ExpectedToPay", $_SERVER[
"PHP_SELF"],
"cs.amount",
"", $param,
'class="right"', $sortfield, $sortorder);
147 print_liste_field_titre(
"RefPayment", $_SERVER[
"PHP_SELF"],
"pc.rowid",
"", $param,
'', $sortfield, $sortorder);
148 print_liste_field_titre(
"DatePayment", $_SERVER[
"PHP_SELF"],
"pc.datep",
"", $param,
'align="center"', $sortfield, $sortorder);
153 print_liste_field_titre(
"PayedByThisPayment", $_SERVER[
"PHP_SELF"],
"pc.amount",
"", $param,
'class="right"', $sortfield, $sortorder);
156 $sql =
"SELECT c.id, c.libelle as label,";
157 $sql .=
" cs.rowid, cs.libelle, cs.fk_type as type, cs.periode, cs.date_ech, cs.amount as total,";
158 $sql .=
" pc.rowid as pid, pc.datep, pc.amount as totalpaid, pc.num_paiement as num_payment, pc.fk_bank,";
159 $sql .=
" pct.code as payment_code,";
160 $sql .=
" ba.rowid as bid, ba.ref as bref, ba.number as bnumber, ba.account_number, ba.fk_accountancy_journal, ba.label as blabel";
161 $sql .=
" FROM ".MAIN_DB_PREFIX.
"c_chargesociales as c,";
162 $sql .=
" ".MAIN_DB_PREFIX.
"chargesociales as cs";
163 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"paiementcharge as pc ON pc.fk_charge = cs.rowid";
164 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_paiement as pct ON pc.fk_typepaiement = pct.id";
165 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank as b ON pc.fk_bank = b.rowid";
166 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_account as ba ON b.fk_account = ba.rowid";
167 $sql .=
" WHERE cs.fk_type = c.id";
168 $sql .=
" AND cs.entity IN (".getEntity(
"tax").
")";
177 if (preg_match(
'/^cs\./', $sortfield) || preg_match(
'/^c\./', $sortfield) || preg_match(
'/^pc\./', $sortfield) || preg_match(
'/^pct\./', $sortfield)) {
178 $sql .= $db->order($sortfield, $sortorder);
183 dol_syslog(
"compta/charges/index.php: select payment", LOG_DEBUG);
184 $resql = $db->query($sql);
186 $num = $db->num_rows(
$resql);
191 while ($i < min($num, $limit)) {
192 $obj = $db->fetch_object(
$resql);
193 print
'<tr class="oddeven">';
195 $date = $obj->periode;
197 $date = $obj->date_ech;
199 print
'<td>'.dol_print_date($date,
'day').
'</td>';
202 $socialcontrib->id = $obj->rowid;
203 $socialcontrib->ref = $obj->label;
204 $socialcontrib->label = $obj->label;
205 print $socialcontrib->getNomUrl(1,
'20');
208 print
'<td><a href="'.DOL_URL_ROOT.
'/compta/sociales/list.php?filtre=cs.fk_type:'.$obj->type.
'">'.$obj->label.
'</a></td>';
210 print
'<td class="right"><span class="amount">'.price($obj->total).
'</span></td>';
212 $payment_sc_static->id = $obj->pid;
213 $payment_sc_static->ref = $obj->pid;
214 print
'<td>'.$payment_sc_static->getNomUrl(1).
"</td>\n";
216 print
'<td class="center">'.dol_print_date($db->jdate($obj->datep),
'day').
'</td>';
219 if ($obj->payment_code) {
220 print $langs->trans(
"PaymentTypeShort".$obj->payment_code).
' ';
222 print $obj->num_payment.
'</td>';
226 if ($obj->fk_bank > 0) {
228 $accountstatic->id = $obj->bid;
229 $accountstatic->ref = $obj->bref;
230 $accountstatic->number = $obj->bnumber;
231 $accountstatic->account_number = $obj->account_number;
232 $accountstatic->fk_accountancy_journal = $obj->fk_accountancy_journal;
233 $accountstatic->label = $obj->blabel;
235 print $accountstatic->getNomUrl(1);
242 print
'<td class="right">';
243 if ($obj->totalpaid) {
244 print
price($obj->totalpaid);
249 $total = $total + $obj->total;
250 $totalpaid = $totalpaid + $obj->totalpaid;
253 print
'<tr class="liste_total"><td colspan="3" class="liste_total">'.$langs->trans(
"Total").
'</td>';
254 print
'<td class="liste_total right"></td>';
255 print
'<td align="center" class="liste_total"> </td>';
256 print
'<td align="center" class="liste_total"> </td>';
257 print
'<td align="center" class="liste_total"> </td>';
261 print
'<td class="liste_total right">'.price($totalpaid).
"</td>";
270 if (
isModEnabled(
'tax') && $user->rights->tax->charges->lire) {
275 print
load_fiche_titre($langs->trans(
"VATDeclarations").($year ?
' ('.$langs->trans(
"Year").
' '.$year.
')' :
''),
'',
'');
277 $sql =
"SELECT ptva.rowid, pv.rowid as id_tva, pv.amount as amount_tva, ptva.amount, pv.label, pv.datev as dm, ptva.datep as date_payment, ptva.fk_bank, ptva.num_paiement as num_payment,";
278 $sql .=
" pct.code as payment_code,";
279 $sql .=
" ba.rowid as bid, ba.ref as bref, ba.number as bnumber, ba.account_number, ba.fk_accountancy_journal, ba.label as blabel";
280 $sql .=
" FROM ".MAIN_DB_PREFIX.
"tva as pv";
281 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_vat as ptva ON (ptva.fk_tva = pv.rowid)";
282 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank as b ON (ptva.fk_bank = b.rowid)";
283 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_account as ba ON b.fk_account = ba.rowid";
284 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_paiement as pct ON ptva.fk_typepaiement = pct.id";
285 $sql .=
" WHERE pv.entity IN (".getEntity(
"tax").
")";
291 if (preg_match(
'/^pv\./', $sortfield) || preg_match(
'/^ptva\./', $sortfield)) {
292 $sql .= $db->order($sortfield, $sortorder);
295 $result = $db->query($sql);
297 $num = $db->num_rows($result);
300 print
'<table class="noborder centpercent">';
301 print
'<tr class="liste_titre">';
302 print_liste_field_titre(
"PeriodEndDate", $_SERVER[
"PHP_SELF"],
"pv.datev",
"", $param,
'', $sortfield, $sortorder,
'nowraponall ');
304 print_liste_field_titre(
"ExpectedToPay", $_SERVER[
"PHP_SELF"],
"pv.amount",
"", $param,
'class="right"', $sortfield, $sortorder);
305 print_liste_field_titre(
"RefPayment", $_SERVER[
"PHP_SELF"],
"ptva.rowid",
"", $param,
'', $sortfield, $sortorder);
306 print_liste_field_titre(
"DatePayment", $_SERVER[
"PHP_SELF"],
"ptva.datep",
"", $param,
'align="center"', $sortfield, $sortorder);
311 print_liste_field_titre(
"PayedByThisPayment", $_SERVER[
"PHP_SELF"],
"ptva.amount",
"", $param,
'class="right"', $sortfield, $sortorder);
315 $obj = $db->fetch_object($result);
317 $total = $total + $obj->amount;
320 print
'<tr class="oddeven">';
321 print
'<td class="left">'.dol_print_date($db->jdate($obj->dm),
'day').
'</td>'.
"\n";
323 $tva_static->id = $obj->id_tva;
324 $tva_static->ref = $obj->label;
325 print
"<td>".$tva_static->getNomUrl(1).
"</td>\n";
327 print
'<td class="right"><span class="amount">'.price($obj->amount_tva).
"</span></td>";
330 $ptva_static->id = $obj->rowid;
331 $ptva_static->ref = $obj->rowid;
332 print
'<td class="left">'.$ptva_static->getNomUrl(1).
"</td>\n";
335 print
'<td class="center">'.dol_print_date($db->jdate($obj->date_payment),
'day').
"</td>\n";
339 if ($obj->payment_code) {
340 print $langs->trans(
"PaymentTypeShort".$obj->payment_code).
' ';
342 print $obj->num_payment.
'</td>';
347 if ($obj->fk_bank > 0) {
349 $accountstatic->id = $obj->bid;
350 $accountstatic->ref = $obj->bref;
351 $accountstatic->number = $obj->bnumber;
352 $accountstatic->account_number = $obj->account_number;
353 $accountstatic->fk_accountancy_journal = $obj->fk_accountancy_journal;
354 $accountstatic->label = $obj->blabel;
356 print $accountstatic->getNomUrl(1);
364 print
'<td class="right"><span class="amount">'.price($obj->amount).
"</span></td>";
369 print
'<tr class="liste_total"><td colspan="2">'.$langs->trans(
"Total").
'</td>';
370 print
'<td> </td>';
371 print
'<td> </td>';
372 print
'<td> </td>';
373 print
'<td> </td>';
374 print
'<td> </td>';
375 print
'<td class="right">'.price($total).
"</td>";
386 if ($mysoc->localtax1_assuj ==
"1" && $mysoc->localtax2_assuj ==
"1") {
389 } elseif ($mysoc->localtax1_assuj ==
"1") {
392 } elseif ($mysoc->localtax2_assuj ==
"1") {
400 while ($j < $numlt) {
405 print
load_fiche_titre($langs->transcountry(($j == 1 ?
"LT1Payments" :
"LT2Payments"), $mysoc->country_code).($year ?
' ('.$langs->trans(
"Year").
' '.$year.
')' :
''),
'',
'');
408 $sql =
"SELECT pv.rowid, pv.amount, pv.label, pv.datev as dm, pv.datep as dp";
409 $sql .=
" FROM ".MAIN_DB_PREFIX.
"localtax as pv";
410 $sql .=
" WHERE pv.entity = ".$conf->entity.
" AND localtaxtype = ".((int) $j);
416 if (preg_match(
'/^pv/', $sortfield)) {
417 $sql .= $db->order($sortfield, $sortorder);
420 $result = $db->query($sql);
422 $num = $db->num_rows($result);
426 print
'<div class="div-table-responsive-no-min">';
427 print
'<table class="noborder centpercent">';
428 print
'<tr class="liste_titre">';
429 print_liste_field_titre(
"PeriodEndDate", $_SERVER[
"PHP_SELF"],
"pv.datev",
"", $param,
'width="120"', $sortfield, $sortorder);
431 print_liste_field_titre(
"ExpectedToPay", $_SERVER[
"PHP_SELF"],
"pv.amount",
"", $param,
'class="right"', $sortfield, $sortorder);
432 print_liste_field_titre(
"RefPayment", $_SERVER[
"PHP_SELF"],
"pv.rowid",
"", $param,
'', $sortfield, $sortorder);
433 print_liste_field_titre(
"DatePayment", $_SERVER[
"PHP_SELF"],
"pv.datep",
"", $param,
'align="center"', $sortfield, $sortorder);
434 print_liste_field_titre(
"PayedByThisPayment", $_SERVER[
"PHP_SELF"],
"pv.amount",
"", $param,
'class="right"', $sortfield, $sortorder);
438 $obj = $db->fetch_object($result);
440 $total = $total + $obj->amount;
442 print
'<tr class="oddeven">';
443 print
'<td class="left">'.dol_print_date($db->jdate($obj->dm),
'day').
'</td>'.
"\n";
445 print
"<td>".$obj->label.
"</td>\n";
447 print
'<td class="right"><span class="amount">'.price($obj->amount).
"</span></td>";
450 $ptva_static->id = $obj->rowid;
451 $ptva_static->ref = $obj->rowid;
452 print
'<td class="left">'.$ptva_static->getNomUrl(1).
"</td>\n";
454 print
'<td class="center">'.dol_print_date($db->jdate($obj->dp),
'day').
"</td>\n";
455 print
'<td class="right"><span class="amount">'.price($obj->amount).
"</span></td>";
460 print
'<tr class="liste_total"><td class="right" colspan="2">'.$langs->trans(
"Total").
'</td>';
461 print
'<td class="right">'.price($total).
"</td>";
462 print
'<td align="center"> </td>';
463 print
'<td align="center"> </td>';
464 print
'<td class="right">'.price($total).
"</td>";
480 $parameters = array(
'user' => $user);
481 $reshook = $hookmanager->executeHooks(
'dashboardSpecialBills', $parameters, $object);
Class to manage bank accounts.
Classe permettant la gestion des paiements des charges La tva collectee n'est calculee que sur les fa...
Class to manage payments of social contributions.
Class to manage salary payments.
Put here description of your class.
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.
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
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.
img_previous($titlealt='default', $moreatt='')
Show previous logo.
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.
img_next($titlealt='default', $moreatt='')
Show next logo.
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.
if(!defined('NOTOKENRENEWAL')) if(!defined('NOLOGIN')) if(!defined('NOCSRFCHECK')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) if(!defined('NOIPCHECK')) if(!defined('NOBROWSERNOTIF')) llxHeader()
Header empty.
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.