32 require
'../../main.inc.php';
33 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture-rec.class.php';
34 require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
35 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
36 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/class/doleditor.class.php';
39 require_once DOL_DOCUMENT_ROOT.
'/core/lib/invoice.lib.php';
40 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
41 require_once DOL_DOCUMENT_ROOT.
'/core/class/extrafields.class.php';
44 $langs->loadLangs(array(
'bills',
'compta',
'admin',
'other'));
46 $action =
GETPOST(
'action',
'alpha');
47 $massaction =
GETPOST(
'massaction',
'alpha');
48 $show_files =
GETPOST(
'show_files',
'int');
49 $confirm =
GETPOST(
'confirm',
'alpha');
50 $cancel =
GETPOST(
'cancel',
'alpha');
51 $toselect =
GETPOST(
'toselect',
'array');
52 $contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'invoicetemplatelist';
54 $socid =
GETPOST(
'socid',
'int');
56 $socid =
GETPOST(
'socid',
'int');
60 $lineid =
GETPOST(
'lineid',
'int');
62 if ($user->socid) $socid = $user->socid;
63 $objecttype =
'facture_rec';
64 if ($action ==
"create" || $action ==
"add") $objecttype =
'';
67 $search_ref =
GETPOST(
'search_ref');
68 $search_societe =
GETPOST(
'search_societe');
69 $search_montant_ht =
GETPOST(
'search_montant_ht');
70 $search_montant_vat =
GETPOST(
'search_montant_vat');
71 $search_montant_ttc =
GETPOST(
'search_montant_ttc');
72 $search_payment_mode =
GETPOST(
'search_payment_mode');
73 $search_payment_term =
GETPOST(
'search_payment_term');
74 $search_day =
GETPOST(
'search_day',
'int');
75 $search_year =
GETPOST(
'search_year',
'int');
76 $search_month =
GETPOST(
'search_month',
'int');
77 $search_day_date_when =
GETPOST(
'search_day_date_when',
'int');
78 $search_year_date_when =
GETPOST(
'search_year_date_when',
'int');
79 $search_month_date_when =
GETPOST(
'search_month_date_when',
'int');
80 $search_recurring =
GETPOST(
'search_recurring',
'int');
81 $search_frequency =
GETPOST(
'search_frequency',
'alpha');
82 $search_unit_frequency =
GETPOST(
'search_unit_frequency',
'alpha');
83 $search_status =
GETPOST(
'search_status',
'int');
85 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
86 $sortfield =
GETPOST(
"sortfield",
'alpha');
87 $sortorder =
GETPOST(
"sortorder",
'alpha');
89 if (empty($page) || $page == -1) { $page = 0; }
90 $offset = $limit * $page;
91 if (!$sortorder) $sortorder =
'DESC';
92 if (!$sortfield) $sortfield =
'f.titre';
93 $pageprev = $page - 1;
94 $pagenext = $page + 1;
97 if (($id > 0 || $ref) && $action !=
'create' && $action !=
'add')
99 $ret = $object->fetch($id, $ref);
107 $hookmanager->initHooks(array(
'invoicereclist'));
111 $extrafields->fetch_name_optionals_label($object->table_element);
113 $search_array_options = $extrafields->getOptionalsFromPost($object->table_element,
'',
'search_');
115 $permissionnote = $user->rights->facture->creer;
116 $permissiondellink = $user->rights->facture->creer;
117 $permissiontoedit = $user->rights->facture->creer;
119 $arrayfields = array(
120 'f.titre'=>array(
'label'=>$langs->trans(
"Ref"),
'checked'=>1),
121 's.nom'=>array(
'label'=>$langs->trans(
"ThirdParty"),
'checked'=>1),
122 'f.total'=>array(
'label'=>$langs->trans(
"AmountHT"),
'checked'=>1),
123 'f.tva'=>array(
'label'=>$langs->trans(
"AmountVAT"),
'checked'=>1),
124 'f.total_ttc'=>array(
'label'=>$langs->trans(
"AmountTTC"),
'checked'=>1),
125 'f.fk_mode_reglement'=>array(
'label'=>$langs->trans(
"PaymentMode"),
'checked'=>0),
126 'f.fk_cond_reglement'=>array(
'label'=>$langs->trans(
"PaymentTerm"),
'checked'=>0),
127 'recurring'=>array(
'label'=>$langs->trans(
"RecurringInvoiceTemplate"),
'checked'=>1),
128 'f.frequency'=>array(
'label'=>$langs->trans(
"Frequency"),
'checked'=>1),
129 'f.unit_frequency'=>array(
'label'=>$langs->trans(
"FrequencyUnit"),
'checked'=>1),
130 'f.nb_gen_done'=>array(
'label'=>$langs->trans(
"NbOfGenerationDoneShort"),
'checked'=>1),
131 'f.date_last_gen'=>array(
'label'=>$langs->trans(
"DateLastGenerationShort"),
'checked'=>1),
132 'f.date_when'=>array(
'label'=>$langs->trans(
"NextDateToExecutionShort"),
'checked'=>1),
133 'status'=>array(
'label'=>$langs->trans(
"Status"),
'checked'=>1,
'position'=>100),
134 'f.datec'=>array(
'label'=>$langs->trans(
"DateCreation"),
'checked'=>0,
'position'=>500),
135 'f.tms'=>array(
'label'=>$langs->trans(
"DateModificationShort"),
'checked'=>0,
'position'=>500),
138 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
144 $tmpthirdparty =
new Societe($db);
145 $res = $tmpthirdparty->fetch($socid);
146 if ($res > 0) $search_societe = $tmpthirdparty->name;
151 $tmpthirdparty =
new Societe($db);
152 $res = $tmpthirdparty->fetch($socid);
153 if ($res > 0) $search_societe = $tmpthirdparty->name;
160 if (
GETPOST(
'cancel',
'alpha')) { $action =
'list'; $massaction =
''; }
161 if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') { $massaction =
''; }
163 $parameters = array(
'socid' => $socid);
164 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
165 if ($reshook < 0)
setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
169 if (
GETPOST(
'cancel',
'alpha')) $action =
'';
172 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
175 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha'))
178 $search_societe =
'';
179 $search_montant_ht =
'';
180 $search_montant_vat =
'';
181 $search_montant_ttc =
'';
182 $search_payment_mode =
'';
183 $search_payment_term =
'';
187 $search_day_date_when =
'';
188 $search_year_date_when =
'';
189 $search_month_date_when =
'';
190 $search_recurring =
'';
191 $search_frequency =
'';
192 $search_unit_frequency =
'';
194 $search_array_options = array();
211 llxHeader(
'', $langs->trans(
"RepeatableInvoices"),
'ch-facture.html#s-fac-facture-rec');
213 $form =
new Form($db);
215 if (!empty($conf->projet->enabled)) { $formproject =
new FormProjets($db); }
216 $companystatic =
new Societe($db);
221 $today =
dol_mktime(23, 59, 59, $tmparray[
'mon'], $tmparray[
'mday'], $tmparray[
'year']);
228 $sql =
"SELECT s.nom as name, s.rowid as socid, f.rowid as facid, f.titre as title, f.total, f.tva as total_vat, f.total_ttc, f.frequency, f.unit_frequency,";
229 $sql .=
" f.nb_gen_done, f.nb_gen_max, f.date_last_gen, f.date_when, f.suspended,";
230 $sql .=
" f.datec, f.tms,";
231 $sql .=
" f.fk_cond_reglement, f.fk_mode_reglement";
233 if (!empty($extrafields->attributes[$object->table_element][
'label'])) {
234 foreach ($extrafields->attributes[$object->table_element][
'label'] as $key => $val) $sql .= ($extrafields->attributes[$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
' as options_'.$key :
'');
237 $parameters = array();
238 $reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters, $object);
239 $sql .= preg_replace(
'/^,/',
'', $hookmanager->resPrint);
240 $sql = preg_replace(
'/,\s*$/',
'', $sql);
242 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"facture_rec as f";
243 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"facture_rec_extrafields as ef ON ef.fk_object = f.rowid";
244 if (!$user->rights->societe->client->voir && !$socid) {
245 $sql .=
", ".MAIN_DB_PREFIX.
"societe_commerciaux as sc";
247 $sql .=
" WHERE f.fk_soc = s.rowid";
248 $sql .=
' AND f.entity IN ('.getEntity(
'invoice').
')';
249 if (!$user->rights->societe->client->voir && !$socid) {
250 $sql .=
" AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
253 if ($socid) $sql .=
' AND s.rowid = '.(int) $socid;
254 if ($search_societe) $sql .=
natural_search(
's.nom', $search_societe);
255 if ($search_montant_ht !=
'') $sql .=
natural_search(
'f.total', $search_montant_ht, 1);
256 if ($search_montant_vat !=
'') $sql .=
natural_search(
'f.tva', $search_montant_vat, 1);
257 if ($search_montant_ttc !=
'') $sql .=
natural_search(
'f.total_ttc', $search_montant_ttc, 1);
258 if (!empty($search_payment_mode) && $search_payment_mode !=
'-1') $sql .=
natural_search(
'f.fk_mode_reglement', $search_payment_mode, 1);
259 if (!empty($search_payment_term) && $search_payment_term !=
'-1') $sql .=
natural_search(
'f.fk_cond_reglement', $search_payment_term, 1);
260 if ($search_recurring ==
'1') $sql .=
' AND f.frequency > 0';
261 if ($search_recurring ==
'0') $sql .=
' AND (f.frequency IS NULL or f.frequency = 0)';
262 if ($search_frequency !=
'') $sql .=
natural_search(
'f.frequency', $search_frequency, 1);
263 if ($search_unit_frequency !=
'') $sql .=
' AND f.frequency > 0'.natural_search(
'f.unit_frequency', $search_unit_frequency);
264 if ($search_status !=
'' && $search_status >= -1)
266 if ($search_status == 0) $sql .=
' AND frequency = 0 AND suspended = 0';
267 if ($search_status == 1) $sql .=
' AND frequency != 0 AND suspended = 0';
268 if ($search_status == -1) $sql .=
' AND suspended = 1';
270 $sql .=
dolSqlDateFilter(
'f.date_last_gen', $search_day, $search_month, $search_year);
271 $sql .=
dolSqlDateFilter(
'f.date_when', $search_day_date_when, $search_month_date_when, $search_year_date_when);
273 $sql .= $db->order($sortfield, $sortorder);
275 $nbtotalofrecords =
'';
276 if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
278 $result = $db->query($sql);
279 $nbtotalofrecords = $db->num_rows($result);
280 if (($page * $limit) > $nbtotalofrecords)
287 $sql .= $db->plimit($limit + 1, $offset);
289 $resql = $db->query($sql);
292 $num = $db->num_rows(
$resql);
295 if (!empty($contextpage) && $contextpage !=
$_SERVER[
"PHP_SELF"]) $param .=
'&contextpage='.urlencode($contextpage);
296 if ($limit > 0 && $limit != $conf->liste_limit) $param .=
'&limit='.urlencode($limit);
297 if ($socid > 0) $param .=
'&socid='.urlencode($socid);
298 if ($search_day) $param .=
'&search_day='.urlencode($search_day);
299 if ($search_month) $param .=
'&search_month='.urlencode($search_month);
300 if ($search_year) $param .=
'&search_year='.urlencode($search_year);
301 if ($search_day_date_when) $param .=
'&search_day_date_when='.urlencode($search_day_date_when);
302 if ($search_month_date_when) $param .=
'&search_month_date_when='.urlencode($search_month_date_when);
303 if ($search_year_date_when) $param .=
'&search_year_date_when='.urlencode($search_year_date_when);
304 if ($search_ref) $param .=
'&search_ref='.urlencode($search_ref);
305 if ($search_societe) $param .=
'&search_societe='.urlencode($search_societe);
306 if ($search_montant_ht !=
'') $param .=
'&search_montant_ht='.urlencode($search_montant_ht);
307 if ($search_montant_vat !=
'') $param .=
'&search_montant_vat='.urlencode($search_montant_vat);
308 if ($search_montant_ttc !=
'') $param .=
'&search_montant_ttc='.urlencode($search_montant_ttc);
309 if ($search_payment_mode !=
'') $param .=
'&search_payment_mode='.urlencode($search_payment_mode);
310 if ($search_payment_term !=
'') $param .=
'&search_payment_term='.urlencode($search_payment_term);
311 if ($search_recurring !=
'' && $search_recurrning !=
'-1') $param .=
'&search_recurring='.urlencode($search_recurring);
312 if ($search_frequency > 0) $param .=
'&search_frequency='.urlencode($search_frequency);
313 if ($search_unit_frequency !=
'') $param .=
'&search_unit_frequency='.urlencode($search_unit_frequency);
314 if ($search_status !=
'') $param .=
'&search_status='.urlencode($search_status);
315 if ($optioncss !=
'') $param .=
'&optioncss='.urlencode($optioncss);
317 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
319 $massactionbutton = $form->selectMassAction(
'', $massaction ==
'presend' ? array() : array(
'presend'=>$langs->trans(
"SendByMail"),
'builddoc'=>$langs->trans(
"PDFMerge")));
321 $varpage = empty($contextpage) ?
$_SERVER[
"PHP_SELF"] : $contextpage;
322 $selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
325 print '<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
326 if ($optioncss !=
'')
print '<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
327 print '<input type="hidden" name="token" value="'.newToken().
'">';
328 print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
329 print '<input type="hidden" name="action" value="list">';
330 print '<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
331 print '<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
332 print '<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
333 print '<input type="hidden" name="search_status" value="'.$search_status.
'">';
335 $title = $langs->trans(
"RepeatableInvoices");
337 print_barre_liste($title, $page,
$_SERVER[
'PHP_SELF'], $param, $sortfield, $sortorder,
'', $num, $nbtotalofrecords,
'bill', 0,
'',
'', $limit, 0, 0, 1);
339 print '<span class="opacitymedium">'.$langs->trans(
"ToCreateAPredefinedInvoice", $langs->transnoentitiesnoconv(
"ChangeIntoRepeatableInvoice")).
'</span><br><br>';
345 print '<div class="div-table-responsive">';
346 print '<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
349 print '<tr class="liste_titre_filter">';
351 if (!empty($arrayfields[
'f.titre'][
'checked']))
353 print
'<td class="liste_titre left">';
354 print
'<input class="flat maxwidth100" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
358 if (!empty($arrayfields[
's.nom'][
'checked']))
360 print
'<td class="liste_titre left"><input class="flat" type="text" size="8" name="search_societe" value="'.dol_escape_htmltag($search_societe).
'"></td>';
362 if (!empty($arrayfields[
'f.total'][
'checked']))
365 print
'<td class="liste_titre right">';
366 print
'<input class="flat" type="text" size="5" name="search_montant_ht" value="'.dol_escape_htmltag($search_montant_ht).
'">';
369 if (!empty($arrayfields[
'f.tva'][
'checked']))
372 print
'<td class="liste_titre right">';
373 print
'<input class="flat" type="text" size="5" name="search_montant_vat" value="'.dol_escape_htmltag($search_montant_vat).
'">';
376 if (!empty($arrayfields[
'f.total_ttc'][
'checked']))
379 print
'<td class="liste_titre right">';
380 print
'<input class="flat" type="text" size="5" name="search_montant_ttc" value="'.dol_escape_htmltag($search_montant_ttc).
'">';
383 if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked']))
386 print
'<td class="liste_titre right">';
387 $form->select_conditions_paiements($search_payment_term,
'search_payment_term', -1, 1, 1,
'maxwidth100');
390 if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked']))
393 print
'<td class="liste_titre right">';
394 $form->select_types_paiements($search_payment_mode,
'search_payment_mode',
'', 0, 1, 1, 0, 1,
'maxwidth100');
397 if (!empty($arrayfields[
'recurring'][
'checked']))
400 print
'<td class="liste_titre" align="center">';
401 print $form->selectyesno(
'search_recurring', $search_recurring, 1,
false, 1);
404 if (!empty($arrayfields[
'f.frequency'][
'checked']))
407 print
'<td class="liste_titre" align="center">';
408 print
'<input class="flat" type="text" size="1" name="search_frequency" value="'.dol_escape_htmltag($search_frequency).
'">';
411 if (!empty($arrayfields[
'f.unit_frequency'][
'checked']))
414 print
'<td class="liste_titre" align="center">';
415 print
'<input class="flat" type="text" size="1" name="search_unit_frequency" value="'.dol_escape_htmltag($search_unit_frequency).
'">';
418 if (!empty($arrayfields[
'f.nb_gen_done'][
'checked']))
421 print
'<td class="liste_titre" align="center">';
425 if (!empty($arrayfields[
'f.date_last_gen'][
'checked']))
427 print
'<td class="liste_titre nowraponall" align="center">';
428 if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print
'<input class="flat valignmiddle" type="text" size="1" maxlength="2" name="search_day" value="'.$search_day.
'">';
429 print
'<input class="flat valignmiddle width25" type="text" size="1" maxlength="2" name="search_month" value="'.$search_month.
'">';
430 $formother->select_year($search_year ? $search_year : -1,
'search_year', 1, 20, 5, 0, 0,
'',
'widthauto valignmiddle');
434 if (!empty($arrayfields[
'f.date_when'][
'checked']))
436 print
'<td class="liste_titre nowraponall" align="center">';
437 if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print
'<input class="flat valignmiddle" type="text" size="1" maxlength="2" name="search_day_date_when" value="'.$search_day_date_when.
'">';
438 print
'<input class="flat valignmiddle width25" type="text" size="1" maxlength="2" name="search_month_date_when" value="'.$search_month_date_when.
'">';
439 $formother->select_year($search_year_date_when ? $search_year_date_when : -1,
'search_year_date_when', 1, 20, 5, 0, 0,
'',
'widthauto valignmiddle');
443 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
446 $parameters = array(
'arrayfields'=>$arrayfields);
447 $reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
448 print $hookmanager->resPrint;
450 if (!empty($arrayfields[
'f.datec'][
'checked']))
452 print
'<td class="liste_titre">';
456 if (!empty($arrayfields[
'f.tms'][
'checked']))
458 print
'<td class="liste_titre">';
462 if (!empty($arrayfields[
'status'][
'checked']))
464 print
'<td class="liste_titre" align="center">';
466 0=>$langs->trans(
"Draft"),
467 1=>$langs->trans(
"Active"),
468 -1=>$langs->trans(
"Disabled"),
470 print $form->selectarray(
'search_status', $liststatus, $search_status, -2);
474 print
'<td class="liste_titre" align="middle">';
475 $searchpicto = $form->showFilterButtons();
480 print
'<tr class="liste_titre">';
481 if (!empty($arrayfields[
'f.titre'][
'checked']))
print_liste_field_titre($arrayfields[
'f.titre'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.titre",
"", $param,
"", $sortfield, $sortorder);
482 if (!empty($arrayfields[
's.nom'][
'checked']))
print_liste_field_titre($arrayfields[
's.nom'][
'label'],
$_SERVER[
'PHP_SELF'],
"s.nom",
"", $param,
"", $sortfield, $sortorder);
483 if (!empty($arrayfields[
'f.total'][
'checked']))
print_liste_field_titre($arrayfields[
'f.total'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.total",
"", $param,
'class="right"', $sortfield, $sortorder);
484 if (!empty($arrayfields[
'f.tva'][
'checked']))
print_liste_field_titre($arrayfields[
'f.tva'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.tva",
"", $param,
'class="right"', $sortfield, $sortorder);
485 if (!empty($arrayfields[
'f.total_ttc'][
'checked']))
print_liste_field_titre($arrayfields[
'f.total_ttc'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.total_ttc",
"", $param,
'class="right"', $sortfield, $sortorder);
486 if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked']))
print_liste_field_titre($arrayfields[
'f.fk_cond_reglement'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.fk_cond_reglement",
"", $param,
'', $sortfield, $sortorder);
487 if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked']))
print_liste_field_titre($arrayfields[
'f.fk_mode_reglement'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.fk_mode_reglement",
"", $param,
'', $sortfield, $sortorder);
488 if (!empty($arrayfields[
'recurring'][
'checked']))
print_liste_field_titre($arrayfields[
'recurring'][
'label'],
$_SERVER[
'PHP_SELF'],
"recurring",
"", $param,
'class="center"', $sortfield, $sortorder);
489 if (!empty($arrayfields[
'f.frequency'][
'checked']))
print_liste_field_titre($arrayfields[
'f.frequency'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.frequency",
"", $param,
'align="center"', $sortfield, $sortorder);
490 if (!empty($arrayfields[
'f.unit_frequency'][
'checked']))
print_liste_field_titre($arrayfields[
'f.unit_frequency'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.unit_frequency",
"", $param,
'align="center"', $sortfield, $sortorder);
491 if (!empty($arrayfields[
'f.nb_gen_done'][
'checked']))
print_liste_field_titre($arrayfields[
'f.nb_gen_done'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.nb_gen_done",
"", $param,
'align="center"', $sortfield, $sortorder);
492 if (!empty($arrayfields[
'f.date_last_gen'][
'checked']))
print_liste_field_titre($arrayfields[
'f.date_last_gen'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.date_last_gen",
"", $param,
'align="center"', $sortfield, $sortorder);
493 if (!empty($arrayfields[
'f.date_when'][
'checked']))
print_liste_field_titre($arrayfields[
'f.date_when'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.date_when",
"", $param,
'align="center"', $sortfield, $sortorder);
494 if (!empty($arrayfields[
'f.datec'][
'checked']))
print_liste_field_titre($arrayfields[
'f.datec'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.datec",
"", $param,
'align="center"', $sortfield, $sortorder);
495 if (!empty($arrayfields[
'f.tms'][
'checked']))
print_liste_field_titre($arrayfields[
'f.tms'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.tms",
"", $param,
'align="center"', $sortfield, $sortorder);
497 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
498 if (!empty($arrayfields[
'status'][
'checked']))
print_liste_field_titre($arrayfields[
'status'][
'label'],
$_SERVER[
'PHP_SELF'],
"f.suspended,f.frequency",
"", $param,
'align="center"', $sortfield, $sortorder);
505 $totalarray = array();
506 while ($i < min($num, $limit))
508 $objp = $db->fetch_object(
$resql);
509 if (empty($objp))
break;
511 $companystatic->id = $objp->socid;
512 $companystatic->name = $objp->name;
514 $invoicerectmp->id = $objp->id ? $objp->id : $objp->facid;
515 $invoicerectmp->frequency = $objp->frequency;
516 $invoicerectmp->suspended = $objp->suspended;
517 $invoicerectmp->unit_frequency = $objp->unit_frequency;
518 $invoicerectmp->nb_gen_max = $objp->nb_gen_max;
519 $invoicerectmp->nb_gen_done = $objp->nb_gen_done;
520 $invoicerectmp->ref = $objp->title;
522 print
'<tr class="oddeven">';
524 if (!empty($arrayfields[
'f.titre'][
'checked']))
526 print
'<td class="nowrap tdoverflowmax200">';
527 print $invoicerectmp->getNomUrl(1);
530 if (!$i) $totalarray[
'nbfield']++;
532 if (!empty($arrayfields[
's.nom'][
'checked']))
534 print
'<td class="tdoverflowmax200">'.$companystatic->getNomUrl(1,
'customer').
'</td>';
535 if (!$i) $totalarray[
'nbfield']++;
537 if (!empty($arrayfields[
'f.total'][
'checked']))
539 print
'<td class="nowrap right">'.price($objp->total).
'</td>'.
"\n";
540 if (!$i) $totalarray[
'nbfield']++;
541 if (!$i) $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total';
542 $totalarray[
'val'][
'f.total'] += $objp->total;
544 if (!empty($arrayfields[
'f.tva'][
'checked']))
546 print
'<td class="nowrap right">'.price($objp->total_vat).
'</td>'.
"\n";
547 if (!$i) $totalarray[
'nbfield']++;
548 if (!$i) $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.tva';
549 $totalarray[
'val'][
'f.tva'] += $objp->total_vat;
551 if (!empty($arrayfields[
'f.total_ttc'][
'checked']))
553 print
'<td class="nowrap right">'.price($objp->total_ttc).
'</td>'.
"\n";
554 if (!$i) $totalarray[
'nbfield']++;
555 if (!$i) $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_ttc';
556 $totalarray[
'val'][
'f.total_ttc'] += $objp->total_ttc;
559 if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked']))
561 print
'<td class="right">';
562 $form->form_conditions_reglement(
'', $objp->fk_cond_reglement,
'none');
564 if (!$i) $totalarray[
'nbfield']++;
567 if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked']))
569 print
'<td class="right">';
570 $form->form_modes_reglement(
'', $objp->fk_mode_reglement,
'none');
572 if (!$i) $totalarray[
'nbfield']++;
574 if (!empty($arrayfields[
'recurring'][
'checked']))
576 print
'<td class="center">'.yn($objp->frequency ? 1 : 0).
'</td>';
577 if (!$i) $totalarray[
'nbfield']++;
579 if (!empty($arrayfields[
'f.frequency'][
'checked']))
581 print
'<td class="center">'.($objp->frequency > 0 ? $objp->frequency :
'').
'</td>';
582 if (!$i) $totalarray[
'nbfield']++;
584 if (!empty($arrayfields[
'f.unit_frequency'][
'checked']))
586 print
'<td class="center">'.($objp->frequency > 0 ? $objp->unit_frequency :
'').
'</td>';
587 if (!$i) $totalarray[
'nbfield']++;
589 if (!empty($arrayfields[
'f.nb_gen_done'][
'checked']))
591 print
'<td class="center">';
592 print ($objp->frequency > 0 ? $objp->nb_gen_done.($objp->nb_gen_max > 0 ?
' / '.$objp->nb_gen_max :
'') :
'<span class="opacitymedium">'.$langs->trans(
'NA').
'</span>');
594 if (!$i) $totalarray[
'nbfield']++;
597 if (!empty($arrayfields[
'f.date_last_gen'][
'checked']))
599 print
'<td class="center">';
600 print ($objp->frequency > 0 ?
dol_print_date($db->jdate($objp->date_last_gen),
'day') :
'<span class="opacitymedium">'.$langs->trans(
'NA').
'</span>');
602 if (!$i) $totalarray[
'nbfield']++;
605 if (!empty($arrayfields[
'f.date_when'][
'checked']))
607 print
'<td class="center">';
608 print
'<div class="nowraponall">';
609 print ($objp->frequency ? ($invoicerectmp->isMaxNbGenReached() ?
'<strike>' :
'').
dol_print_date($db->jdate($objp->date_when),
'day').($invoicerectmp->isMaxNbGenReached() ?
'</strike>' :
'') :
'<span class="opacitymedium">'.$langs->trans(
'NA').
'</span>');
610 if (!$invoicerectmp->isMaxNbGenReached())
612 if (!$objp->suspended && $objp->frequency > 0 && $db->jdate($objp->date_when) && $db->jdate($objp->date_when) < $now) print
img_warning($langs->trans(
"Late"));
614 print
img_info($langs->trans(
"MaxNumberOfGenerationReached"));
618 if (!$i) $totalarray[
'nbfield']++;
620 if (!empty($arrayfields[
'f.datec'][
'checked']))
622 print
'<td class="center">';
625 if (!$i) $totalarray[
'nbfield']++;
627 if (!empty($arrayfields[
'f.tms'][
'checked']))
629 print
'<td class="center">';
632 if (!$i) $totalarray[
'nbfield']++;
637 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
639 $parameters = array(
'arrayfields'=>$arrayfields,
'obj'=>$objp,
'i'=>$i,
'totalarray'=>&$totalarray);
640 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object);
641 print $hookmanager->resPrint;
643 if (!empty($arrayfields[
'status'][
'checked'])) {
644 print
'<td class="center">';
645 print $invoicerectmp->getLibStatut(3, 0);
647 if (!$i) $totalarray[
'nbfield']++;
650 print
'<td class="center">';
651 if ($user->rights->facture->creer && empty($invoicerectmp->suspended))
653 if ($invoicerectmp->isMaxNbGenReached())
655 print $langs->trans(
"MaxNumberOfGenerationReached");
656 } elseif (empty($objp->frequency) || $db->jdate($objp->date_when) <= $today)
658 print
'<a href="'.DOL_URL_ROOT.
'/compta/facture/card.php?action=create&socid='.$objp->socid.
'&fac_rec='.$objp->facid.
'">';
659 print $langs->trans(
"CreateBill").
'</a>';
661 print $form->textwithpicto(
'', $langs->trans(
"DateIsNotEnough"));
666 if (!$i) $totalarray[
'nbfield']++;
675 foreach ($arrayfields as $key => $val) {
if (!empty($val[
'checked'])) $colspan++; }
676 print
'<tr><td colspan="'.$colspan.
'" class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</td></tr>';
680 include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
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...
dol_now($mode= 'auto')
Return date for now.
Class to manage invoice templates.
img_warning($titlealt= 'default', $moreatt= '', $morecss= 'pictowarning')
Show warning logo.
setEventMessages($mesg, $mesgs, $style= 'mesgs', $messagekey= '')
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.
Class to manage third parties objects (customers, suppliers, prospects...)
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
dol_getdate($timestamp, $fast=false, $forcetimezone= '')
Return an array with locale date info.
restrictedArea($user, $features, $objectid=0, $tableandshare= '', $feature2= '', $dbt_keyfield= 'fk_soc', $dbt_select= 'rowid', $isdraft=0)
Check permissions of a user to show a page and an object.
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...
dolSqlDateFilter($datefield, $day_date, $month_date, $year_date, $excludefirstand=0)
Generate a SQL string to make a filter into a range (for second of date until last second of date) ...
print $_SERVER["PHP_SELF"]
Edit parameters.
dol_sort_array(&$array, $index, $order= 'asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by second index function, which produces ascending (default) or descending output...
print
Draft customers invoices.
dol_print_date($time, $format= '', $tzoutput= 'auto', $outputlangs= '', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) if(!empty($conf->don->enabled)&&$user->rights->don->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)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) $resql
Social contributions to pay.
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
img_info($titlealt= 'default')
Show info logo.