46require
'../../main.inc.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
48require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
49require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
50if (isModEnabled(
'margin')) {
51 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmargin.class.php';
53require_once DOL_DOCUMENT_ROOT.
'/core/modules/facture/modules_facture.php';
54require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
55require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
56require_once DOL_DOCUMENT_ROOT.
'/core/class/discount.class.php';
57require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
58require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture-rec.class.php';
59require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
60require_once DOL_DOCUMENT_ROOT.
'/core/lib/invoice.lib.php';
61require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
62require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
63require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
64if (isModEnabled(
'order')) {
65 require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
69$langs->loadLangs(array(
'bills',
'companies',
'products',
'categories'));
71$search_all = trim((
GETPOST(
'search_all',
'alphanohtml') !=
'') ?
GETPOST(
'search_all',
'alphanohtml') :
GETPOST(
'sall',
'alphanohtml'));
77$action =
GETPOST(
'action',
'aZ09');
78$massaction =
GETPOST(
'massaction',
'alpha');
80$confirm =
GETPOST(
'confirm',
'alpha');
81$toselect =
GETPOST(
'toselect',
'array');
82$optioncss =
GETPOST(
'optioncss',
'alpha');
83$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'invoicelist';
86if ($contextpage ==
'poslist') {
92$search_refcustomer =
GETPOST(
'search_refcustomer',
'alpha');
93$search_type =
GETPOST(
'search_type',
'intcomma');
94$search_subtype =
GETPOST(
'search_subtype',
'intcomma');
95$search_project_ref =
GETPOST(
'search_project_ref',
'alpha');
96$search_project =
GETPOST(
'search_project',
'alpha');
97$search_company =
GETPOST(
'search_company',
'alpha');
98$search_company_alias =
GETPOST(
'search_company_alias',
'alpha');
99$search_parent_name = trim(
GETPOST(
'search_parent_name',
'alphanohtml'));
100$search_montant_ht =
GETPOST(
'search_montant_ht',
'alpha');
101$search_montant_vat =
GETPOST(
'search_montant_vat',
'alpha');
102$search_montant_localtax1 =
GETPOST(
'search_montant_localtax1',
'alpha');
103$search_montant_localtax2 =
GETPOST(
'search_montant_localtax2',
'alpha');
104$search_montant_ttc =
GETPOST(
'search_montant_ttc',
'alpha');
105$search_login =
GETPOST(
'search_login',
'alpha');
106$search_multicurrency_code =
GETPOST(
'search_multicurrency_code',
'alpha');
107$search_multicurrency_tx =
GETPOST(
'search_multicurrency_tx',
'alpha');
108$search_multicurrency_montant_ht =
GETPOST(
'search_multicurrency_montant_ht',
'alpha');
109$search_multicurrency_montant_vat =
GETPOST(
'search_multicurrency_montant_vat',
'alpha');
110$search_multicurrency_montant_ttc =
GETPOST(
'search_multicurrency_montant_ttc',
'alpha');
111$search_status =
GETPOST(
'search_status',
'intcomma');
112$search_paymentmode =
GETPOST(
'search_paymentmode',
'intcomma');
113$search_paymentterms =
GETPOST(
'search_paymentterms',
'intcomma');
114$search_module_source =
GETPOST(
'search_module_source',
'alpha');
115$search_pos_source =
GETPOST(
'search_pos_source',
'alpha');
116$search_town =
GETPOST(
'search_town',
'alpha');
117$search_zip =
GETPOST(
'search_zip',
'alpha');
118$search_state =
GETPOST(
"search_state");
119$search_country =
GETPOST(
"search_country",
'aZ09');
120$search_customer_code =
GETPOST(
"search_customer_code",
'alphanohtml');
121$search_type_thirdparty =
GETPOST(
"search_type_thirdparty",
'intcomma');
122$search_user =
GETPOST(
'search_user',
'intcomma');
123$search_sale =
GETPOST(
'search_sale',
'intcomma');
124$search_date_startday =
GETPOSTINT(
'search_date_startday');
125$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
126$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
127$search_date_endday =
GETPOSTINT(
'search_date_endday');
128$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
129$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
130$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
131$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
132$search_date_valid_startday =
GETPOSTINT(
'search_date_valid_startday');
133$search_date_valid_startmonth =
GETPOSTINT(
'search_date_valid_startmonth');
134$search_date_valid_startyear =
GETPOSTINT(
'search_date_valid_startyear');
135$search_date_valid_endday =
GETPOSTINT(
'search_date_valid_endday');
136$search_date_valid_endmonth =
GETPOSTINT(
'search_date_valid_endmonth');
137$search_date_valid_endyear =
GETPOSTINT(
'search_date_valid_endyear');
138$search_date_valid_start =
dol_mktime(0, 0, 0, $search_date_valid_startmonth, $search_date_valid_startday, $search_date_valid_startyear);
139$search_date_valid_end =
dol_mktime(23, 59, 59, $search_date_valid_endmonth, $search_date_valid_endday, $search_date_valid_endyear);
140$search_datelimit_startday =
GETPOSTINT(
'search_datelimit_startday');
141$search_datelimit_startmonth =
GETPOSTINT(
'search_datelimit_startmonth');
142$search_datelimit_startyear =
GETPOSTINT(
'search_datelimit_startyear');
143$search_datelimit_endday =
GETPOSTINT(
'search_datelimit_endday');
144$search_datelimit_endmonth =
GETPOSTINT(
'search_datelimit_endmonth');
145$search_datelimit_endyear =
GETPOSTINT(
'search_datelimit_endyear');
146$search_datelimit_start =
dol_mktime(0, 0, 0, $search_datelimit_startmonth, $search_datelimit_startday, $search_datelimit_startyear);
147$search_datelimit_end =
dol_mktime(23, 59, 59, $search_datelimit_endmonth, $search_datelimit_endday, $search_datelimit_endyear);
148$search_categ_cus =
GETPOST(
"search_categ_cus",
'intcomma');
149$search_product_category =
GETPOST(
'search_product_category',
'intcomma');
150$search_fac_rec_source_title =
GETPOST(
"search_fac_rec_source_title",
'alpha');
152$search_option =
GETPOST(
'search_option');
153if ($search_option ==
'late') {
154 $search_status =
'1';
158$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
159$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
161if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
164$offset = $limit * $page;
165if (!$sortorder &&
getDolGlobalString(
'INVOICE_DEFAULT_UNPAYED_SORT_ORDER') && $search_status ==
'1') {
172 $sortfield =
'f.datef';
174$pageprev = $page - 1;
175$pagenext = $page + 1;
177$diroutputmassaction = $conf->facture->dir_output.
'/temp/massgeneration/'.$user->id;
184$hookmanager->initHooks(array($contextpage));
188$extrafields->fetch_name_optionals_label(
$object->table_element);
190$search_array_options = $extrafields->getOptionalsFromPost(
$object->table_element,
'',
'search_');
193$fieldstosearchall = array(
195 'f.ref_client' =>
'RefCustomer',
196 'f.note_public' =>
'NotePublic',
197 's.nom' =>
"ThirdParty",
198 's.code_client' =>
"CustomerCodeShort",
199 's.name_alias' =>
"AliasNameShort",
202 'pd.description' =>
'Description',
204if (empty($user->socid)) {
205 $fieldstosearchall[
"f.note_private"] =
"NotePrivate";
208$checkedtypetiers = 0;
210 'f.ref' => array(
'label' =>
"Ref",
'checked' => 1,
'position' => 5),
211 'f.ref_client' => array(
'label' =>
"RefCustomer",
'checked' => -1,
'position' => 10),
212 'f.type' => array(
'label' =>
"Type",
'checked' => 0,
'position' => 15),
213 'f.subtype' => array(
'label' =>
"InvoiceSubtype",
'checked' => 0,
'position' => 17),
214 'f.datef' => array(
'label' =>
"DateInvoice",
'checked' => 1,
'position' => 20),
215 'f.date_valid' => array(
'label' =>
"DateValidation",
'checked' => 0,
'position' => 22),
216 'f.date_lim_reglement' => array(
'label' =>
"DateDue",
'checked' => 1,
'position' => 25),
217 'f.date_closing' => array(
'label' =>
"DateClosing",
'checked' => 0,
'position' => 30),
218 'p.ref' => array(
'label' =>
"ProjectRef",
'langs' =>
'projects',
'checked' => 1,
'enabled' => (!isModEnabled(
'project') ? 0 : 1),
'position' => 40),
219 'p.title' => array(
'label' =>
"ProjectLabel",
'checked' => 0,
'enabled' => (!isModEnabled(
'project') ? 0 : 1),
'position' => 41),
220 's.nom' => array(
'label' =>
"ThirdParty",
'checked' => 1,
'position' => 50),
221 's.name_alias' => array(
'label' =>
"AliasNameShort",
'checked' => -1,
'position' => 51),
222 's.code_client' => array(
'label' =>
"CustomerCodeShort",
'checked' => -1,
'position' => 52),
223 's2.nom' => array(
'label' =>
'ParentCompany',
'position' => 32,
'checked' => 0),
224 's.town' => array(
'label' =>
"Town",
'checked' => -1,
'position' => 55),
225 's.zip' => array(
'label' =>
"Zip",
'checked' => -1,
'position' => 60),
226 'state.nom' => array(
'label' =>
"StateShort",
'checked' => 0,
'position' => 65),
227 'country.code_iso' => array(
'label' =>
"Country",
'checked' => 0,
'position' => 70),
228 'typent.code' => array(
'label' =>
"ThirdPartyType",
'checked' => $checkedtypetiers,
'position' => 75),
229 'f.fk_mode_reglement' => array(
'label' =>
"PaymentMode",
'checked' => 1,
'position' => 80),
230 'f.fk_cond_reglement' => array(
'label' =>
"PaymentConditionsShort",
'checked' => 1,
'position' => 85),
231 'f.module_source' => array(
'label' =>
"POSModule",
'langs' =>
'cashdesk',
'checked' => ($contextpage ==
'poslist' ? 1 : 0),
'enabled' =>
"(isModEnabled('cashdesk') || isModEnabled('takepos') || getDolGlobalInt('INVOICE_SHOW_POS'))",
'position' => 90),
232 'f.pos_source' => array(
'label' =>
"POSTerminal",
'langs' =>
'cashdesk',
'checked' => ($contextpage ==
'poslist' ? 1 : 0),
'enabled' =>
"(isModEnabled('cashdesk') || isModEnabled('takepos') || getDolGlobalInt('INVOICE_SHOW_POS'))",
'position' => 91),
233 'f.total_ht' => array(
'label' =>
"AmountHT",
'checked' => 1,
'position' => 95),
234 'f.total_tva' => array(
'label' =>
"AmountVAT",
'checked' => 0,
'position' => 100),
235 'f.total_localtax1' => array(
'label' => $langs->transcountry(
"AmountLT1", $mysoc->country_code),
'checked' => 0,
'enabled' => ($mysoc->localtax1_assuj ==
"1"),
'position' => 110),
236 'f.total_localtax2' => array(
'label' => $langs->transcountry(
"AmountLT2", $mysoc->country_code),
'checked' => 0,
'enabled' => ($mysoc->localtax2_assuj ==
"1"),
'position' => 120),
237 'f.total_ttc' => array(
'label' =>
"AmountTTC",
'checked' => 0,
'position' => 130),
238 'dynamount_payed' => array(
'label' =>
"Received",
'checked' => 0,
'position' => 140),
239 'rtp' => array(
'label' =>
"Rest",
'checked' => 0,
'position' => 150),
240 'f.multicurrency_code' => array(
'label' =>
'Currency',
'checked' => 0,
'enabled' => (!isModEnabled(
'multicurrency') ? 0 : 1),
'position' => 280),
241 'f.multicurrency_tx' => array(
'label' =>
'CurrencyRate',
'checked' => 0,
'enabled' => (!isModEnabled(
'multicurrency') ? 0 : 1),
'position' => 285),
242 'f.multicurrency_total_ht' => array(
'label' =>
'MulticurrencyAmountHT',
'checked' => 0,
'enabled' => (!isModEnabled(
'multicurrency') ? 0 : 1),
'position' => 290),
243 'f.multicurrency_total_vat' => array(
'label' =>
'MulticurrencyAmountVAT',
'checked' => 0,
'enabled' => (!isModEnabled(
'multicurrency') ? 0 : 1),
'position' => 291),
244 'f.multicurrency_total_ttc' => array(
'label' =>
'MulticurrencyAmountTTC',
'checked' => 0,
'enabled' => (!isModEnabled(
'multicurrency') ? 0 : 1),
'position' => 292),
245 'multicurrency_dynamount_payed' => array(
'label' =>
'MulticurrencyAlreadyPaid',
'checked' => 0,
'enabled' => (!isModEnabled(
'multicurrency') ? 0 : 1),
'position' => 295),
246 'multicurrency_rtp' => array(
'label' =>
'MulticurrencyRemainderToPay',
'checked' => 0,
'enabled' => (!isModEnabled(
'multicurrency') ? 0 : 1),
'position' => 296),
247 'total_pa' => array(
'label' => ((
getDolGlobalString(
'MARGIN_TYPE') ==
'1') ?
'BuyingPrice' :
'CostPrice'),
'checked' => 0,
'position' => 300,
'enabled' => (!isModEnabled(
'margin') || !$user->hasRight(
'margins',
'liretous') ? 0 : 1)),
248 'total_margin' => array(
'label' =>
'Margin',
'checked' => 0,
'position' => 301,
'enabled' => (!isModEnabled(
'margin') || !$user->hasRight(
'margins',
'liretous') ? 0 : 1)),
249 'total_margin_rate' => array(
'label' =>
'MarginRate',
'checked' => 0,
'position' => 302,
'enabled' => (!isModEnabled(
'margin') || !$user->hasRight(
'margins',
'liretous') || !
getDolGlobalString(
'DISPLAY_MARGIN_RATES') ? 0 : 1)),
250 'total_mark_rate' => array(
'label' =>
'MarkRate',
'checked' => 0,
'position' => 303,
'enabled' => (!isModEnabled(
'margin') || !$user->hasRight(
'margins',
'liretous') || !
getDolGlobalString(
'DISPLAY_MARK_RATES') ? 0 : 1)),
251 'f.datec' => array(
'label' =>
"DateCreation",
'checked' => 0,
'position' => 500),
252 'f.tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModificationShort',
'enabled' => 1,
'visible' => -1,
'notnull' => 1,
'position' => 502),
253 'u.login' => array(
'label' =>
"UserAuthor",
'checked' => 1,
'visible' => -1,
'position' => 504),
254 'sale_representative' => array(
'label' =>
"SaleRepresentativesOfThirdParty",
'checked' => 0,
'position' => 506),
259 'f.note_public' => array(
'label' =>
'NotePublic',
'checked' => 0,
'position' => 520,
'enabled' => (!
getDolGlobalInt(
'MAIN_LIST_HIDE_PUBLIC_NOTES'))),
260 'f.note_private' => array(
'label' =>
'NotePrivate',
'checked' => 0,
'position' => 521,
'enabled' => (!
getDolGlobalInt(
'MAIN_LIST_HIDE_PRIVATE_NOTES'))),
261 'f.fk_fac_rec_source' => array(
'label' =>
'GeneratedFromTemplate',
'checked' => 0,
'position' => 530,
'enabled' =>
'1'),
262 'f.fk_statut' => array(
'label' =>
"Status",
'checked' => 1,
'position' => 1000),
266 $arrayfields[
'f.retained_warranty'] = array(
'label' => $langs->trans(
"RetainedWarranty"),
'checked' => 0,
'position' => 86);
269$subtypearray =
$object->getArrayOfInvoiceSubtypes(0);
270if (empty($subtypearray)) {
271 unset($arrayfields[
'f.subtype']);
275foreach (
$object->fields as $key => $val) {
278 if (!empty($val[
'visible'])) {
279 $visible = (int)
dol_eval($val[
'visible'], 1, 1,
'1');
281 if (array_key_exists($key, $arrayfields)) {
283 } elseif (array_key_exists(
'f.'.$key, $arrayfields)) {
285 } elseif (array_key_exists(
's.'.$key, $arrayfields)) {
289 $arrayfields[$newkey] = array(
290 'label' => $val[
'label'],
291 'checked' => (($visible < 0) ? 0 : 1),
292 'enabled' => (abs($visible) != 3 && (bool)
dol_eval($val[
'enabled'], 1)),
293 'position' => $val[
'position'],
294 'help' => empty($val[
'help']) ?
'' : $val[
'help'],
300include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
305'@phan-var-force array<string,array{label:string,checked?:int<0,1>,position?:int,help?:string}> $arrayfields';
307if (!$user->hasRight(
'societe',
'client',
'voir')) {
308 $search_sale = $user->id;
312$fieldid = (!empty($ref) ?
'ref' :
'rowid');
313if (!empty($user->socid)) {
314 $socid = $user->socid;
316$result =
restrictedArea($user,
'facture', $id,
'',
'',
'fk_soc', $fieldid);
323if (
GETPOST(
'cancel',
'alpha')) {
327if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') {
331$parameters = array(
'socid' => $socid,
'arrayfields' => &$arrayfields);
332$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
337include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
340if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha')) {
343 $search_product_category =
'';
345 $search_refcustomer =
'';
347 $search_subtype =
'';
348 $search_project_ref =
'';
349 $search_project =
'';
350 $search_company =
'';
351 $search_company_alias =
'';
352 $search_parent_name =
'';
353 $search_montant_ht =
'';
354 $search_montant_vat =
'';
355 $search_montant_localtax1 =
'';
356 $search_montant_localtax2 =
'';
357 $search_montant_ttc =
'';
359 $search_multicurrency_code =
'';
360 $search_multicurrency_tx =
'';
361 $search_multicurrency_montant_ht =
'';
362 $search_multicurrency_montant_vat =
'';
363 $search_multicurrency_montant_ttc =
'';
365 $search_paymentmode =
'';
366 $search_paymentterms =
'';
367 $search_module_source =
'';
368 $search_pos_source =
'';
372 $search_country =
'';
373 $search_type_thirdparty =
'';
374 $search_customer_code =
'';
375 $search_date_startday =
'';
376 $search_date_startmonth =
'';
377 $search_date_startyear =
'';
378 $search_date_endday =
'';
379 $search_date_endmonth =
'';
380 $search_date_endyear =
'';
381 $search_date_start =
'';
382 $search_date_end =
'';
383 $search_date_valid_startday =
'';
384 $search_date_valid_startmonth =
'';
385 $search_date_valid_startyear =
'';
386 $search_date_valid_endday =
'';
387 $search_date_valid_endmonth =
'';
388 $search_date_valid_endyear =
'';
389 $search_date_valid_start =
'';
390 $search_date_valid_end =
'';
391 $search_datelimit_startday =
'';
392 $search_datelimit_startmonth =
'';
393 $search_datelimit_startyear =
'';
394 $search_datelimit_endday =
'';
395 $search_datelimit_endmonth =
'';
396 $search_datelimit_endyear =
'';
397 $search_datelimit_start =
'';
398 $search_datelimit_end =
'';
399 $search_fac_rec_source_title =
'';
401 $search_categ_cus = 0;
403 $search_array_options = array();
406if (empty($reshook)) {
407 $objectclass =
'Facture';
408 $objectlabel =
'Invoices';
409 $permissiontoread = $user->hasRight(
"facture",
"lire");
410 $permissiontoadd = $user->hasRight(
"facture",
"creer");
411 $permissiontodelete = $user->hasRight(
"facture",
"supprimer");
412 $uploaddir = $conf->facture->dir_output;
413 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
416if ($action ==
'makepayment_confirm' && $user->hasRight(
'facture',
'paiement')) {
417 require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
418 $arrayofselected = is_array($toselect) ? $toselect : array();
419 if (!empty($arrayofselected)) {
423 if (empty($paiementdate)) {
424 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Date")),
null,
'errors');
426 $action =
'makepayment';
430 foreach ($arrayofselected as $toselectid) {
433 $result = $facture->fetch($toselectid);
442 $paiementAmount = $facture->getSommePaiement();
443 $totalcreditnotes = $facture->getSumCreditNotesUsed();
444 $totaldeposits = $facture->getSumDepositsUsed();
445 $totalpay = $paiementAmount + $totalcreditnotes + $totaldeposits;
446 $remaintopay =
price2num($facture->total_ttc - $totalpay);
449 $parameters = array(
'remaintopay' => $remaintopay);
450 $reshook = $hookmanager->executeHooks(
'finalizeAmountOfInvoice', $parameters, $facture, $action);
452 if (!empty($remain = $hookmanager->resArray[
'remaintopay'])) {
453 $remaintopay = $remain;
455 } elseif ($reshook < 0) {
457 setEventMessages($facture->ref.
' '.$langs->trans(
"ProcessingError"), $hookmanager->errors,
'errors');
460 if ($remaintopay != 0) {
461 $resultBank = $facture->setBankAccount($bankid);
462 if ($resultBank < 0) {
467 $paiement->datepaye = $paiementdate;
468 $paiement->amounts[$facture->id] = $remaintopay;
469 $paiement->multicurrency_amounts[$facture->id] = $remaintopay;
470 $paiement->paiementid = $paiementid;
471 $paiement_id = $paiement->create($user, 1, $facture->thirdparty);
472 if ($paiement_id < 0) {
473 $langs->load(
"errors");
474 setEventMessages($facture->ref.
' '.$langs->trans($paiement->error), $paiement->errors,
'errors');
477 $result = $paiement->addPaymentToBank($user,
'payment',
'', $bankid,
'',
'');
479 $langs->load(
"errors");
480 setEventMessages($facture->ref.
' '.$langs->trans($paiement->error), $paiement->errors,
'errors');
486 setEventMessage($langs->trans(
'NoPaymentAvailable', $facture->ref),
'warnings');
490 setEventMessage($langs->trans(
'BulkPaymentNotPossibleForInvoice', $facture->ref),
'warnings');
495 if (empty($errorpayment)) {
496 setEventMessage($langs->trans(
'PaymentRegisteredAndInvoiceSetToPaid', $facture->ref));
504} elseif ($massaction ==
'withdrawrequest') {
505 $langs->load(
"withdrawals");
507 if (!$user->hasRight(
'prelevement',
'bons',
'creer')) {
514 $arrayofselected = is_array($toselect) ? $toselect : array();
515 $listofbills = array();
516 foreach ($arrayofselected as $toselectid) {
518 $result = $objecttmp->fetch($toselectid);
520 $totalpaid = $objecttmp->getSommePaiement();
521 $totalcreditnotes = $objecttmp->getSumCreditNotesUsed();
522 $totaldeposits = $objecttmp->getSumDepositsUsed();
523 $objecttmp->resteapayer =
price2num($objecttmp->total_ttc - $totalpaid - $totalcreditnotes - $totaldeposits,
'MT');
526 $parameters = array(
'remaintopay' => $objecttmp->resteapayer);
527 $reshook = $hookmanager->executeHooks(
'finalizeAmountOfInvoice', $parameters, $objecttmp, $action);
529 if (!empty($remaintopay = $hookmanager->resArray[
'remaintopay'])) {
530 $objecttmp->resteapayer = $remaintopay;
532 } elseif ($reshook < 0) {
534 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"ProcessingError"), $hookmanager->errors,
'errors');
539 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"Draft"), $objecttmp->errors,
'errors');
540 } elseif ($objecttmp->paye || $objecttmp->resteapayer == 0) {
542 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"AlreadyPaid"), $objecttmp->errors,
'errors');
543 } elseif ($objecttmp->resteapayer < 0) {
545 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"AmountMustBePositive"), $objecttmp->errors,
'errors');
548 $rsql =
"SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande";
549 $rsql .=
" , pfd.date_traite as date_traite";
550 $rsql .=
" , pfd.amount";
551 $rsql .=
" , u.rowid as user_id, u.lastname, u.firstname, u.login";
552 $rsql .=
" FROM ".MAIN_DB_PREFIX.
"prelevement_demande as pfd";
553 $rsql .=
" , ".MAIN_DB_PREFIX.
"user as u";
554 $rsql .=
" WHERE fk_facture = ".((int) $objecttmp->id);
555 $rsql .=
" AND pfd.fk_user_demande = u.rowid";
556 $rsql .=
" AND pfd.traite = 0";
557 $rsql .=
" ORDER BY pfd.date_demande DESC";
559 $result_sql = $db->query($rsql);
561 $numprlv = $db->num_rows($result_sql);
566 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"RequestAlreadyDone"), $objecttmp->errors,
'warnings');
567 } elseif (!empty($objecttmp->mode_reglement_code) && $objecttmp->mode_reglement_code !=
'PRE') {
568 $langs->load(
"errors");
570 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"ErrorThisPaymentModeIsNotDirectDebit"), $objecttmp->errors,
'errors');
572 $listofbills[] = $objecttmp;
578 if (!empty($listofbills)) {
579 $nbwithdrawrequestok = 0;
580 foreach ($listofbills as $aBill) {
582 $result = $aBill->demande_prelevement($user, $aBill->resteapayer,
'direct-debit',
'facture');
585 $nbwithdrawrequestok++;
591 if ($nbwithdrawrequestok > 0) {
592 setEventMessages($langs->trans(
"WithdrawRequestsDone", $nbwithdrawrequestok),
null,
'mesgs');
604$form =
new Form($db);
608if (isModEnabled(
'margin')) {
611$bankaccountstatic =
new Account($db);
612$facturestatic =
new Facture($db);
614$companystatic =
new Societe($db);
615$companyparent =
new Societe($db);
617$company_url_list = array();
622 if (empty($search_company)) {
623 $search_company = $soc->name;
627$title = $langs->trans(
'BillsCustomers').
' '.($socid > 0 ?
' - '.$soc->name :
'');
628$help_url =
'EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes';
630$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
631$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
637 $sql =
'SELECT DISTINCT';
639$sql .=
' f.rowid as id, f.ref, f.ref_client, f.fk_soc, f.type, f.subtype, f.note_private, f.note_public, f.increment, f.fk_mode_reglement, f.fk_cond_reglement, f.total_ht, f.total_tva, f.total_ttc,';
640$sql .=
' f.localtax1 as total_localtax1, f.localtax2 as total_localtax2,';
641$sql .=
' f.fk_user_author,';
642$sql .=
' f.fk_multicurrency, f.multicurrency_code, f.multicurrency_tx, f.multicurrency_total_ht, f.multicurrency_total_tva as multicurrency_total_vat, f.multicurrency_total_ttc,';
643$sql .=
' f.datef, f.date_valid, f.date_lim_reglement as datelimite, f.module_source, f.pos_source,';
644$sql .=
' f.paye as paye, f.fk_statut, f.close_code,';
645$sql .=
' f.datec as date_creation, f.tms as date_modification, f.date_closing as date_closing,';
646$sql .=
' f.retained_warranty, f.retained_warranty_date_limit, f.situation_final, f.situation_cycle_ref, f.situation_counter,';
647$sql .=
' s.rowid as socid, s.nom as name, s.name_alias as alias, s.email, s.phone, s.fax, s.address, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur,';
648$sql .=
" s.parent as fk_parent,";
649$sql .=
" s2.nom as name2,";
650$sql .=
' typent.code as typent_code,';
651$sql .=
' state.code_departement as state_code, state.nom as state_name,';
652$sql .=
' country.code as country_code,';
653$sql .=
' f.fk_fac_rec_source,';
654$sql .=
' p.rowid as project_id, p.ref as project_ref, p.title as project_label,';
655$sql .=
' u.login, u.lastname, u.firstname, u.email as user_email, u.statut as user_statut, u.entity, u.photo, u.office_phone, u.office_fax, u.user_mobile, u.job, u.gender';
665if (!empty($extrafields->attributes[
$object->table_element][
'label'])) {
666 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $val) {
667 $sql .= ($extrafields->attributes[
$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
671$parameters = array();
672$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters, $object, $action);
673$sql .= $hookmanager->resPrint;
674$sql = preg_replace(
'/,\s*$/',
'', $sql);
678$sql .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
679$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s2 ON s2.rowid = s.parent";
680$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as country on (country.rowid = s.fk_pays)";
681$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_typent as typent on (typent.id = s.fk_typent)";
682$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_departements as state on (state.rowid = s.fk_departement)";
683$sql .=
', '.MAIN_DB_PREFIX.
'facture as f';
684if ($sortfield ==
"f.datef") {
685 $sql .= $db->hintindex(
'idx_facture_datef');
687if (isset($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
688 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element.
"_extrafields as ef on (f.rowid = ef.fk_object)";
691 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'facturedet as pd ON f.rowid = pd.fk_facture';
693if (!empty($search_fac_rec_source_title)) {
694 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'facture_rec as facrec ON f.fk_fac_rec_source = facrec.rowid';
696$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"projet as p ON p.rowid = f.fk_projet";
697$sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'user AS u ON f.fk_user_author = u.rowid';
699$parameters = array();
700$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters, $object);
701$sql .= $hookmanager->resPrint;
703$sql .=
' WHERE f.fk_soc = s.rowid';
704$sql .=
' AND f.entity IN ('.getEntity(
'invoice').
')';
706 $sql .=
' AND s.rowid = '.((int) $socid);
710 $sql .=
' AND f.fk_user_author IS NULL';
712 $sql .=
' AND f.fk_user_author = '.((int) $userid);
718if ($search_refcustomer) {
721if ($search_type !=
'' && $search_type !=
'-1') {
722 $sql .=
" AND f.type IN (".$db->sanitize($db->escape($search_type)).
")";
724if ($search_subtype !=
'' && $search_subtype !=
'-1') {
725 $sql .=
" AND f.subtype IN (".$db->sanitize($db->escape($search_subtype)).
")";
727if ($search_project_ref) {
730if ($search_project) {
733if (empty($arrayfields[
's.name_alias'][
'checked']) && $search_company) {
734 $sql .=
natural_search(array(
"s.nom",
"s.name_alias"), $search_company);
736 if ($search_company) {
739 if ($search_company_alias) {
743if ($search_parent_name) {
746if ($search_customer_code) {
758if (strlen(trim($search_country))) {
760 $country_code_in_EEC = $country_code_in_EEC_without_me =
'';
761 foreach ($arrayofcode as $key => $value) {
762 $country_code_in_EEC .= ($country_code_in_EEC ?
"," :
"").
"'".$value.
"'";
763 if ($value != $mysoc->country_code) {
764 $country_code_in_EEC_without_me .= ($country_code_in_EEC_without_me ?
"," :
"").
"'".$value.
"'";
767 if ($search_country ==
'special_allnotme') {
768 $sql .=
" AND country.code <> '".$db->escape($mysoc->country_code).
"'";
769 } elseif ($search_country ==
'special_eec') {
770 $sql .=
" AND country.code IN (".$db->sanitize($country_code_in_EEC, 1).
")";
771 } elseif ($search_country ==
'special_eecnotme') {
772 $sql .=
" AND country.code IN (".$db->sanitize($country_code_in_EEC_without_me, 1).
")";
773 } elseif ($search_country ==
'special_noteec') {
774 $sql .=
" AND country.code NOT IN (".$db->sanitize($country_code_in_EEC, 1).
")";
779if ($search_type_thirdparty !=
'' && $search_type_thirdparty !=
'-1') {
780 $sql .=
" AND s.fk_typent IN (".$db->sanitize($db->escape($search_type_thirdparty)).
')';
782if ($search_montant_ht !=
'') {
785if ($search_montant_vat !=
'') {
788if ($search_montant_localtax1 !=
'') {
789 $sql .=
natural_search(
'f.localtax1', $search_montant_localtax1, 1);
791if ($search_montant_localtax2 !=
'') {
792 $sql .=
natural_search(
'f.localtax2', $search_montant_localtax2, 1);
794if ($search_montant_ttc !=
'') {
797if ($search_multicurrency_code !=
'') {
798 $sql .=
" AND f.multicurrency_code = '".$db->escape($search_multicurrency_code).
"'";
800if ($search_multicurrency_tx !=
'') {
801 $sql .=
natural_search(
'f.multicurrency_tx', $search_multicurrency_tx, 1);
803if ($search_multicurrency_montant_ht !=
'') {
804 $sql .=
natural_search(
'f.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
806if ($search_multicurrency_montant_vat !=
'') {
807 $sql .=
natural_search(
'f.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
809if ($search_multicurrency_montant_ttc !=
'') {
810 $sql .=
natural_search(
'f.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
813 $sql .=
natural_search(array(
'u.login',
'u.firstname',
'u.lastname'), $search_login);
815if ($search_status !=
'-1' && $search_status !=
'') {
816 if (is_numeric($search_status) && $search_status >= 0) {
817 if ($search_status ==
'0') {
818 $sql .=
" AND f.fk_statut = 0";
820 if ($search_status ==
'1') {
821 $sql .=
" AND f.fk_statut = 1";
823 if ($search_status ==
'2') {
824 $sql .=
" AND f.fk_statut = 2";
826 if ($search_status ==
'3') {
827 $sql .=
" AND f.fk_statut = 3";
830 $sql .=
" AND f.fk_statut IN (".$db->sanitize($db->escape($search_status)).
")";
834if ($search_paymentmode > 0) {
835 $sql .=
" AND f.fk_mode_reglement = ".((int) $search_paymentmode);
837if ($search_paymentterms > 0) {
838 $sql .=
" AND f.fk_cond_reglement = ".((int) $search_paymentterms);
840if ($search_module_source) {
843if ($search_pos_source) {
846if ($search_date_start) {
847 $sql .=
" AND f.datef >= '".$db->idate($search_date_start).
"'";
849if ($search_date_end) {
850 $sql .=
" AND f.datef <= '".$db->idate($search_date_end).
"'";
852if ($search_date_valid_start) {
853 $sql .=
" AND f.date_valid >= '".$db->idate($search_date_valid_start).
"'";
855if ($search_date_valid_end) {
856 $sql .=
" AND f.date_valid <= '".$db->idate($search_date_valid_end).
"'";
858if ($search_datelimit_start) {
859 $sql .=
" AND f.date_lim_reglement >= '".$db->idate($search_datelimit_start).
"'";
861if ($search_datelimit_end) {
862 $sql .=
" AND f.date_lim_reglement <= '".$db->idate($search_datelimit_end).
"'";
864if ($search_option ==
'late') {
865 $sql .=
" AND f.date_lim_reglement < '".$db->idate(
dol_now() - $conf->facture->client->warning_delay).
"'";
870if (!empty($search_fac_rec_source_title)) {
871 $sql .=
natural_search(
'facrec.titre', $search_fac_rec_source_title);
874if ($search_user > 0) {
875 $sql .=
" AND EXISTS (";
876 $sql .=
" SELECT ec.fk_c_type_contact, ec.element_id, ec.fk_socpeople";
877 $sql .=
" FROM llx_element_contact as ec";
878 $sql .=
" INNER JOIN llx_c_type_contact as tc";
879 $sql .=
" ON ec.fk_c_type_contact = tc.rowid AND tc.element='facture' AND tc.source='internal'";
880 $sql .=
" WHERE ec.element_id = f.rowid AND ec.fk_socpeople = ".((int) $search_user).
")";
883if ($search_sale && $search_sale !=
'-1') {
884 if ($search_sale == -2) {
885 $sql .=
" AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = f.fk_soc)";
886 } elseif ($search_sale > 0) {
887 $sql .=
" AND EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = f.fk_soc AND sc.fk_user = ".((int) $search_sale).
")";
891$searchCategoryProductList = $search_product_category ? array($search_product_category) : array();
892$searchCategoryProductOperator = 0;
893if (!empty($searchCategoryProductList)) {
894 $searchCategoryProductSqlList = array();
895 $listofcategoryid =
'';
896 foreach ($searchCategoryProductList as $searchCategoryProduct) {
897 if (intval($searchCategoryProduct) == -2) {
898 $searchCategoryProductSqlList[] =
"NOT EXISTS (SELECT ck.fk_product FROM ".MAIN_DB_PREFIX.
"categorie_product as ck, ".MAIN_DB_PREFIX.
"facturedet as fd WHERE fd.fk_facture = f.rowid AND fd.fk_product = ck.fk_product)";
899 } elseif (intval($searchCategoryProduct) > 0) {
900 if ($searchCategoryProductOperator == 0) {
901 $searchCategoryProductSqlList[] =
" EXISTS (SELECT ck.fk_product FROM ".MAIN_DB_PREFIX.
"categorie_product as ck, ".MAIN_DB_PREFIX.
"facturedet as fd WHERE fd.fk_facture = f.rowid AND fd.fk_product = ck.fk_product AND ck.fk_categorie = ".((int) $searchCategoryProduct).
")";
903 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryProduct);
907 if ($listofcategoryid) {
908 $searchCategoryProductSqlList[] =
" EXISTS (SELECT ck.fk_product FROM ".MAIN_DB_PREFIX.
"categorie_product as ck, ".MAIN_DB_PREFIX.
"facturedet as fd WHERE fd.fk_facture = f.rowid AND fd.fk_product = ck.fk_product AND ck.fk_categorie IN (".$db->sanitize($listofcategoryid).
"))";
910 if ($searchCategoryProductOperator == 1) {
911 if (!empty($searchCategoryProductSqlList)) {
912 $sql .=
" AND (".implode(
' OR ', $searchCategoryProductSqlList).
")";
915 if (!empty($searchCategoryProductSqlList)) {
916 $sql .=
" AND (".implode(
' AND ', $searchCategoryProductSqlList).
")";
920$searchCategoryCustomerList = $search_categ_cus ? array($search_categ_cus) : array();
921$searchCategoryCustomerOperator = 0;
923if (!empty($searchCategoryCustomerList)) {
924 $searchCategoryCustomerSqlList = array();
925 $listofcategoryid =
'';
926 foreach ($searchCategoryCustomerList as $searchCategoryCustomer) {
927 if (intval($searchCategoryCustomer) == -2) {
928 $searchCategoryCustomerSqlList[] =
"NOT EXISTS (SELECT ck.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as ck WHERE s.rowid = ck.fk_soc)";
929 } elseif (intval($searchCategoryCustomer) > 0) {
930 if ($searchCategoryCustomerOperator == 0) {
931 $searchCategoryCustomerSqlList[] =
" EXISTS (SELECT ck.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as ck WHERE s.rowid = ck.fk_soc AND ck.fk_categorie = ".((int) $searchCategoryCustomer).
")";
933 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryCustomer);
937 if ($listofcategoryid) {
938 $searchCategoryCustomerSqlList[] =
" EXISTS (SELECT ck.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as ck WHERE s.rowid = ck.fk_soc AND ck.fk_categorie IN (".$db->sanitize($listofcategoryid).
"))";
940 if ($searchCategoryCustomerOperator == 1) {
941 if (!empty($searchCategoryCustomerSqlList)) {
942 $sql .=
" AND (".implode(
' OR ', $searchCategoryCustomerSqlList).
")";
945 if (!empty($searchCategoryCustomerSqlList)) {
946 $sql .=
" AND (".implode(
' AND ', $searchCategoryCustomerSqlList).
")";
951include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
953$parameters = array();
954$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action);
955$sql .= $hookmanager->resPrint;
958 $sql .=
natural_search(array_keys($fieldstosearchall), $search_all);
962$parameters = array();
963$reshook = $hookmanager->executeHooks(
'printFieldListHaving', $parameters, $object, $action);
964$sql .= empty($hookmanager->resPrint) ?
"" :
" HAVING 1=1 ".$hookmanager->resPrint;
967$nbtotalofrecords =
'';
970 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
971 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
973 $resql = $db->query($sqlforcount);
975 $objforcount = $db->fetch_object($resql);
976 $nbtotalofrecords = $objforcount->nbtotalofrecords;
981 if (($page * $limit) > $nbtotalofrecords) {
989$sql .= $db->order($sortfield, $sortorder);
991 $sql .= $db->plimit($limit + 1, $offset);
994$resql = $db->query($sql);
1000$num = $db->num_rows($resql);
1002$arrayofselected = is_array($toselect) ? $toselect : array();
1004if ($num == 1 &&
getDolGlobalString(
'MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all) {
1005 $obj = $db->fetch_object($resql);
1008 header(
"Location: ".DOL_URL_ROOT.
'/compta/facture/card.php?id='.$id);
1015llxHeader(
'', $title, $help_url, 0, 0,
'',
'',
'',
'bodyforlist');
1017$param =
'&socid='.urlencode((
string) ($socid));
1019 $param .=
'&mode='.urlencode($mode);
1021if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
1022 $param .=
'&contextpage='.urlencode($contextpage);
1024if ($limit > 0 && $limit != $conf->liste_limit) {
1025 $param .=
'&limit='.((int) $limit);
1028 $param .=
'&search_all='.urlencode($search_all);
1030if ($search_date_startday) {
1031 $param .=
'&search_date_startday='.urlencode((
string) ($search_date_startday));
1033if ($search_date_startmonth) {
1034 $param .=
'&search_date_startmonth='.urlencode((
string) ($search_date_startmonth));
1036if ($search_date_startyear) {
1037 $param .=
'&search_date_startyear='.urlencode((
string) ($search_date_startyear));
1039if ($search_date_endday) {
1040 $param .=
'&search_date_endday='.urlencode((
string) ($search_date_endday));
1042if ($search_date_endmonth) {
1043 $param .=
'&search_date_endmonth='.urlencode((
string) ($search_date_endmonth));
1045if ($search_date_endyear) {
1046 $param .=
'&search_date_endyear='.urlencode((
string) ($search_date_endyear));
1048if ($search_date_valid_startday) {
1049 $param .=
'&search_date_valid_startday='.urlencode((
string) ($search_date_valid_startday));
1051if ($search_date_valid_startmonth) {
1052 $param .=
'&search_date_valid_startmonth='.urlencode((
string) ($search_date_valid_startmonth));
1054if ($search_date_valid_startyear) {
1055 $param .=
'&search_date_valid_startyear='.urlencode((
string) ($search_date_valid_startyear));
1057if ($search_date_valid_endday) {
1058 $param .=
'&search_date_valid_endday='.urlencode((
string) ($search_date_valid_endday));
1060if ($search_date_valid_endmonth) {
1061 $param .=
'&search_date_valid_endmonth='.urlencode((
string) ($search_date_valid_endmonth));
1063if ($search_date_valid_endyear) {
1064 $param .=
'&search_date_valid_endyear='.urlencode((
string) ($search_date_valid_endyear));
1066if ($search_datelimit_startday) {
1067 $param .=
'&search_datelimit_startday='.urlencode((
string) ($search_datelimit_startday));
1069if ($search_datelimit_startmonth) {
1070 $param .=
'&search_datelimit_startmonth='.urlencode((
string) ($search_datelimit_startmonth));
1072if ($search_datelimit_startyear) {
1073 $param .=
'&search_datelimit_startyear='.urlencode((
string) ($search_datelimit_startyear));
1075if ($search_datelimit_endday) {
1076 $param .=
'&search_datelimit_endday='.urlencode((
string) ($search_datelimit_endday));
1078if ($search_datelimit_endmonth) {
1079 $param .=
'&search_datelimit_endmonth='.urlencode((
string) ($search_datelimit_endmonth));
1081if ($search_datelimit_endyear) {
1082 $param .=
'&search_datelimit_endyear='.urlencode((
string) ($search_datelimit_endyear));
1085 $param .=
'&search_ref='.urlencode($search_ref);
1087if ($search_refcustomer) {
1088 $param .=
'&search_refcustomer='.urlencode($search_refcustomer);
1090if ($search_project_ref) {
1091 $param .=
'&search_project_ref='.urlencode($search_project_ref);
1093if ($search_project) {
1094 $param .=
'&search_project='.urlencode($search_project);
1096if ($search_type !=
'') {
1097 $param .=
'&search_type='.urlencode($search_type);
1099if ($search_subtype !=
'') {
1100 $param .=
'&search_subtype='.urlencode($search_subtype);
1102if ($search_company) {
1103 $param .=
'&search_company='.urlencode($search_company);
1105if ($search_company_alias) {
1106 $param .=
'&search_company_alias='.urlencode($search_company_alias);
1108if ($search_parent_name !=
'') {
1109 $param .=
'&search_parent_name='.urlencode($search_parent_name);
1112 $param .=
'&search_town='.urlencode($search_town);
1115 $param .=
'&search_zip='.urlencode($search_zip);
1117if ($search_country) {
1118 $param .=
"&search_country=".urlencode($search_country);
1120if ($search_type_thirdparty !=
'') {
1121 $param .=
'&search_type_thirdparty='.urlencode($search_type_thirdparty);
1123if ($search_customer_code) {
1124 $param .=
'&search_customer_code='.urlencode($search_customer_code);
1126if ($search_sale > 0) {
1127 $param .=
'&search_sale='.urlencode((
string) $search_sale);
1129if ($search_user > 0) {
1130 $param .=
'&search_user='.urlencode((
string) $search_user);
1133 $param .=
'&search_login='.urlencode($search_login);
1135if ($search_product_category > 0) {
1136 $param .=
'&search_product_category='.urlencode((
string) $search_product_category);
1138if ($search_montant_ht !=
'') {
1139 $param .=
'&search_montant_ht='.urlencode($search_montant_ht);
1141if ($search_montant_vat !=
'') {
1142 $param .=
'&search_montant_vat='.urlencode($search_montant_vat);
1144if ($search_montant_localtax1 !=
'') {
1145 $param .=
'&search_montant_localtax1='.urlencode($search_montant_localtax1);
1147if ($search_montant_localtax2 !=
'') {
1148 $param .=
'&search_montant_localtax2='.urlencode($search_montant_localtax2);
1150if ($search_montant_ttc !=
'') {
1151 $param .=
'&search_montant_ttc='.urlencode($search_montant_ttc);
1153if ($search_multicurrency_code !=
'') {
1154 $param .=
'&search_multicurrency_code='.urlencode($search_multicurrency_code);
1156if ($search_multicurrency_tx !=
'') {
1157 $param .=
'&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
1159if ($search_multicurrency_montant_ht !=
'') {
1160 $param .=
'&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
1162if ($search_multicurrency_montant_vat !=
'') {
1163 $param .=
'&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
1165if ($search_multicurrency_montant_ttc !=
'') {
1166 $param .=
'&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
1168if ($search_status !=
'') {
1169 $param .=
'&search_status='.urlencode($search_status);
1171if ($search_paymentmode > 0) {
1172 $param .=
'&search_paymentmode='.urlencode((
string) ($search_paymentmode));
1174if ($search_paymentterms > 0) {
1175 $param .=
'&search_paymentterms='.urlencode((
string) ($search_paymentterms));
1177if ($search_module_source) {
1178 $param .=
'&search_module_source='.urlencode($search_module_source);
1180if ($search_pos_source) {
1181 $param .=
'&search_pos_source='.urlencode($search_pos_source);
1184 $param .=
'&show_files='.urlencode((
string) ($show_files));
1186if ($search_option) {
1187 $param .=
"&search_option=".urlencode($search_option);
1189if ($optioncss !=
'') {
1190 $param .=
'&optioncss='.urlencode($optioncss);
1192if ($search_categ_cus > 0) {
1193 $param .=
'&search_categ_cus='.urlencode((
string) ($search_categ_cus));
1195if (!empty($search_fac_rec_source_title)) {
1196 $param .=
'&search_fac_rec_source_title='.urlencode($search_fac_rec_source_title);
1200include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
1202$parameters = array(
'param' => &$param);
1203$reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters, $object, $action);
1204$param .= $hookmanager->resPrint;
1206$arrayofmassactions = array(
1207 'validate' =>
img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"Validate"),
1208 'generate_doc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"ReGeneratePDF"),
1209 'builddoc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"PDFMerge"),
1210 'presend' =>
img_picto(
'',
'email',
'class="pictofixedwidth"').$langs->trans(
"SendByMail"),
1213if ($user->hasRight(
'facture',
'paiement')) {
1214 $arrayofmassactions[
'makepayment'] =
img_picto(
'',
'payment',
'class="pictofixedwidth"').$langs->trans(
"MakePaymentAndClassifyPayed");
1216if (isModEnabled(
'prelevement') && $user->hasRight(
'prelevement',
'bons',
'creer')) {
1217 $langs->load(
"withdrawals");
1218 $arrayofmassactions[
'withdrawrequest'] =
img_picto(
'',
'payment',
'class="pictofixedwidth"').$langs->trans(
"MakeWithdrawRequest");
1220if ($user->hasRight(
'facture',
'supprimer')) {
1222 $arrayofmassactions[
'predeletedraft'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Deletedraft");
1224 $arrayofmassactions[
'predelete'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
1227if (in_array($massaction, array(
'presend',
'predelete',
'makepayment'))) {
1228 $arrayofmassactions = array();
1230$massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
1234if ($contextpage !=
'poslist') {
1235 $url = DOL_URL_ROOT.
'/compta/facture/card.php?action=create';
1236 if (!empty($socid)) {
1237 $url .=
'&socid='.$socid;
1239 $newcardbutton =
'';
1240 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewList'),
'',
'fa fa-bars imgforviewmode', $_SERVER[
"PHP_SELF"].
'?mode=common'.preg_replace(
'/(&|\?)*mode=[^&]+/',
'', $param),
'', ((empty($mode) || $mode ==
'common') ? 2 : 1), array(
'morecss' =>
'reposition'));
1241 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewKanban'),
'',
'fa fa-th-list imgforviewmode', $_SERVER[
"PHP_SELF"].
'?mode=kanban'.preg_replace(
'/(&|\?)*mode=[^&]+/',
'', $param),
'', ($mode ==
'kanban' ? 2 : 1), array(
'morecss' =>
'reposition'));
1243 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewBill'),
'',
'fa fa-plus-circle', $url,
'', $user->hasRight(
"facture",
"creer"));
1247print
'<form method="POST" id="searchFormList" name="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">'.
"\n";
1248if ($optioncss !=
'') {
1249 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
1251print
'<input type="hidden" name="token" value="'.newToken().
'">';
1252print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
1253if (!in_array($massaction, array(
'makepayment'))) {
1254 print
'<input type="hidden" name="action" value="list">';
1256print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
1257print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
1258print
'<input type="hidden" name="search_status" value="'.$search_status.
'">';
1259print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
1260print
'<input type="hidden" name="socid" value="'.$socid.
'">';
1261print
'<input type="hidden" name="mode" value="'.$mode.
'">';
1263print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'bill', 0, $newcardbutton,
'', $limit, 0, 0, 1);
1265$topicmail =
"SendBillRef";
1266$modelmail =
"facture_send";
1268$trackid =
'inv'.$object->id;
1269include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
1271if ($massaction ==
'makepayment') {
1273 $formquestion = array(
1277 array(
'type' =>
'date',
'name' =>
'datepaiment',
'label' => $langs->trans(
"Date"),
'datenow' => 1),
1278 array(
'type' =>
'other',
'name' =>
'paiementid',
'label' => $langs->trans(
"PaymentMode"),
'value' => $form->select_types_paiements(
GETPOST(
'search_paymentmode'),
'paiementid',
'', 0, 0, 1, 0, 1,
'', 1)),
1279 array(
'type' =>
'other',
'name' =>
'bankid',
'label' => $langs->trans(
"BankAccount"),
'value' => $form->select_comptes(
'',
'bankid', 0,
'', 0,
'', 0,
'', 1)),
1282 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
'MakePaymentAndClassifyPayed'), $langs->trans(
'EnterPaymentReceivedFromCustomer'),
'makepayment_confirm', $formquestion, 1, 0, 200, 500, 1);
1287 foreach ($fieldstosearchall as $key => $val) {
1288 $fieldstosearchall[$key] = $langs->trans($val);
1290 print
'<div class="divsearchfieldfilter">'.$langs->trans(
"FilterOnInto", $search_all).implode(
', ', $fieldstosearchall).
'</div>';
1295if ($user->hasRight(
"user",
"user",
"lire")) {
1296 $langs->load(
"commercial");
1297 $moreforfilter .=
'<div class="divsearchfield">';
1298 $tmptitle = $langs->trans(
'ThirdPartiesOfSaleRepresentative');
1299 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$formother->select_salesrepresentatives($search_sale,
'search_sale', $user, 0, $tmptitle,
'maxwidth200');
1300 $moreforfilter .=
'</div>';
1303if ($user->hasRight(
"user",
"user",
"lire")) {
1304 $moreforfilter .=
'<div class="divsearchfield">';
1305 $tmptitle = $langs->trans(
'LinkedToSpecificUsers');
1306 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$form->select_dolusers($search_user,
'search_user', $tmptitle,
'', 0,
'',
'', 0, 0, 0,
'', 0,
'',
'maxwidth200');
1307 $moreforfilter .=
'</div>';
1310if (isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire") && ($user->hasRight(
"produit",
"lire") || $user->hasRight(
"service",
"lire"))) {
1311 include_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1312 $moreforfilter .=
'<div class="divsearchfield">';
1313 $tmptitle = $langs->trans(
'IncludingProductWithTag');
1314 $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT,
null,
'parent',
null,
null, 1);
1315 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$form->selectarray(
'search_product_category', $cate_arbo, $search_product_category, $tmptitle, 0, 0,
'', 0, 0, 0, 0,
'maxwidth300 widthcentpercentminusx', 1);
1316 $moreforfilter .=
'</div>';
1318if (isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire")) {
1319 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1320 $moreforfilter .=
'<div class="divsearchfield">';
1321 $tmptitle = $langs->trans(
'CustomersProspectsCategoriesShort');
1322 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$formother->select_categories(
'customer', $search_categ_cus,
'search_categ_cus', 1, $tmptitle);
1323 $moreforfilter .=
'</div>';
1326$moreforfilter .=
'<div class="divsearchfield">';
1327$moreforfilter .=
'<label for="search_option">'.$langs->trans(
'Alert').
' </label><input type="checkbox" name="search_option" id="search_option" value="late"'.($search_option ==
'late' ?
' checked' :
'').
'>';
1328$moreforfilter .=
'</div>';
1330$parameters = array();
1331$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1332if (empty($reshook)) {
1333 $moreforfilter .= $hookmanager->resPrint;
1335 $moreforfilter = $hookmanager->resPrint;
1338if (!empty($moreforfilter)) {
1339 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1340 print $moreforfilter;
1344$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
1345$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
1348if ($massactionbutton && $contextpage !=
'poslist') {
1349 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
1352print
'<div class="div-table-responsive">';
1353print
'<table class="tagtable nobottomiftotal liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
1357print
'<tr class="liste_titre_filter">';
1361 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
1362 $searchpicto = $form->showFilterButtons(
'left');
1368 print
'<td class="liste_titre">';
1372if (!empty($arrayfields[
'f.ref'][
'checked'])) {
1373 print
'<td class="liste_titre" align="left">';
1374 print
'<input class="flat maxwidth50imp" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
1378if (!empty($arrayfields[
'f.ref_client'][
'checked'])) {
1379 print
'<td class="liste_titre">';
1380 print
'<input class="flat maxwidth50imp" type="text" name="search_refcustomer" value="'.dol_escape_htmltag($search_refcustomer).
'">';
1384if (!empty($arrayfields[
'f.type'][
'checked'])) {
1385 print
'<td class="liste_titre maxwidthonsmartphone">';
1397 print $form->selectarray(
'search_type', $listtype, $search_type, 1, 0, 0,
'', 0, 0, 0,
'',
'maxwidth100');
1401if (!empty($arrayfields[
'f.subtype'][
'checked'])) {
1402 print
'<td class="liste_titre maxwidthonsmartphone" align="center">';
1403 print $form->selectarray(
'search_subtype', $subtypearray, $search_subtype, 1, 0, 0,
'', 0, 0, 0,
'',
'maxwidth100');
1407if (!empty($arrayfields[
'f.datef'][
'checked'])) {
1408 print
'<td class="liste_titre center">';
1409 print
'<div class="nowrapfordate">';
1410 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1412 print
'<div class="nowrapfordate">';
1413 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1418if (!empty($arrayfields[
'f.date_valid'][
'checked'])) {
1419 print
'<td class="liste_titre center">';
1420 print
'<div class="nowrapfordate">';
1421 print $form->selectDate($search_date_valid_start ? $search_date_valid_start : -1,
'search_date_valid_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1423 print
'<div class="nowrapfordate">';
1424 print $form->selectDate($search_date_valid_end ? $search_date_valid_end : -1,
'search_date_valid_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1429if (!empty($arrayfields[
'f.date_lim_reglement'][
'checked'])) {
1430 print
'<td class="liste_titre center">';
1431 print
'<div class="nowrapfordate">';
1432 print $form->selectDate($search_datelimit_start ? $search_datelimit_start : -1,
'search_datelimit_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1434 print
'<div class="nowrapfordate">';
1435 print $form->selectDate($search_datelimit_end ? $search_datelimit_end : -1,
'search_datelimit_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1440if (!empty($arrayfields[
'p.ref'][
'checked'])) {
1441 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_project_ref" value="'.dol_escape_htmltag($search_project_ref).
'"></td>';
1444if (!empty($arrayfields[
'p.title'][
'checked'])) {
1445 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_project" value="'.dol_escape_htmltag($search_project).
'"></td>';
1448if (!empty($arrayfields[
's.nom'][
'checked'])) {
1449 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_company" value="'.dol_escape_htmltag($search_company).
'"'.($socid > 0 ?
" disabled" :
"").
'></td>';
1452if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
1453 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_company_alias" value="'.dol_escape_htmltag($search_company_alias).
'"></td>';
1456if (!empty($arrayfields[
's2.nom'][
'checked'])) {
1457 print
'<td class="liste_titre">';
1458 print
'<input class="flat maxwidth100" type="text" name="search_parent_name" value="'.dol_escape_htmltag($search_parent_name).
'">';
1462if (!empty($arrayfields[
's.code_client'][
'checked'])) {
1463 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_customer_code" value="'.dol_escape_htmltag($search_customer_code).
'"></td>';
1466if (!empty($arrayfields[
's.town'][
'checked'])) {
1467 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).
'"></td>';
1470if (!empty($arrayfields[
's.zip'][
'checked'])) {
1471 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_zip" value="'.dol_escape_htmltag($search_zip).
'"></td>';
1474if (!empty($arrayfields[
'state.nom'][
'checked'])) {
1475 print
'<td class="liste_titre">';
1476 print
'<input class="flat maxwidth50imp" type="text" name="search_state" value="'.dol_escape_htmltag($search_state).
'">';
1480if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
1481 print
'<td class="liste_titre center">';
1482 print $form->select_country($search_country,
'search_country',
'', 0,
'minwidth150imp maxwidth150',
'code2', 1, 0, 1,
null, 1);
1486if (!empty($arrayfields[
'typent.code'][
'checked'])) {
1487 print
'<td class="liste_titre maxwidthonsmartphone center">';
1488 print $form->selectarray(
"search_type_thirdparty", $formcompany->typent_array(0), $search_type_thirdparty, 1, 0, 0,
'', 0, 0, 0, (!
getDolGlobalString(
'SOCIETE_SORT_ON_TYPEENT') ?
'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT),
'maxwidth100', 1);
1492if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked'])) {
1493 print
'<td class="liste_titre">';
1494 print $form->select_types_paiements($search_paymentmode,
'search_paymentmode',
'', 0, 1, 1, 0, 1,
'minwidth100 maxwidth100', 1);
1498if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked'])) {
1499 print
'<td class="liste_titre left">';
1500 print $form->getSelectConditionsPaiements($search_paymentterms,
'search_paymentterms', -1, 1, 1,
'minwidth100 maxwidth100');
1504if (!empty($arrayfields[
'f.module_source'][
'checked'])) {
1505 print
'<td class="liste_titre">';
1506 print
'<input class="flat maxwidth75" type="text" name="search_module_source" value="'.dol_escape_htmltag($search_module_source).
'">';
1510if (!empty($arrayfields[
'f.pos_source'][
'checked'])) {
1511 print
'<td class="liste_titre">';
1512 print
'<input class="flat maxwidth50" type="text" name="search_pos_source" value="'.dol_escape_htmltag($search_pos_source).
'">';
1515if (!empty($arrayfields[
'f.total_ht'][
'checked'])) {
1517 print
'<td class="liste_titre right">';
1518 print
'<input class="flat" type="text" size="4" name="search_montant_ht" value="'.dol_escape_htmltag($search_montant_ht).
'">';
1521if (!empty($arrayfields[
'f.total_tva'][
'checked'])) {
1523 print
'<td class="liste_titre right">';
1524 print
'<input class="flat" type="text" size="4" name="search_montant_vat" value="'.dol_escape_htmltag($search_montant_vat).
'">';
1527if (!empty($arrayfields[
'f.total_localtax1'][
'checked'])) {
1529 print
'<td class="liste_titre right">';
1530 print
'<input class="flat" type="text" size="4" name="search_montant_localtax1" value="'.dol_escape_htmltag($search_montant_localtax1).
'">';
1533if (!empty($arrayfields[
'f.total_localtax2'][
'checked'])) {
1535 print
'<td class="liste_titre right">';
1536 print
'<input class="flat" type="text" size="4" name="search_montant_localtax2" value="'.dol_escape_htmltag($search_montant_localtax2).
'">';
1539if (!empty($arrayfields[
'f.total_ttc'][
'checked'])) {
1541 print
'<td class="liste_titre right">';
1542 print
'<input class="flat" type="text" size="4" name="search_montant_ttc" value="'.dol_escape_htmltag($search_montant_ttc).
'">';
1545if (!empty($arrayfields[
'u.login'][
'checked'])) {
1547 print
'<td class="liste_titre" align="center">';
1548 print
'<input class="flat" size="4" type="text" name="search_login" value="'.dol_escape_htmltag($search_login).
'">';
1551if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
1552 print
'<td class="liste_titre"></td>';
1554if (!empty($arrayfields[
'f.retained_warranty'][
'checked'])) {
1555 print
'<td class="liste_titre" align="right">';
1558if (!empty($arrayfields[
'dynamount_payed'][
'checked'])) {
1559 print
'<td class="liste_titre right">';
1562if (!empty($arrayfields[
'rtp'][
'checked'])) {
1563 print
'<td class="liste_titre">';
1566if (!empty($arrayfields[
'f.multicurrency_code'][
'checked'])) {
1568 print
'<td class="liste_titre">';
1569 print $form->selectMultiCurrency($search_multicurrency_code,
'search_multicurrency_code', 1);
1572if (!empty($arrayfields[
'f.multicurrency_tx'][
'checked'])) {
1574 print
'<td class="liste_titre">';
1575 print
'<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).
'">';
1578if (!empty($arrayfields[
'f.multicurrency_total_ht'][
'checked'])) {
1580 print
'<td class="liste_titre right">';
1581 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).
'">';
1584if (!empty($arrayfields[
'f.multicurrency_total_vat'][
'checked'])) {
1586 print
'<td class="liste_titre right">';
1587 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).
'">';
1590if (!empty($arrayfields[
'f.multicurrency_total_ttc'][
'checked'])) {
1592 print
'<td class="liste_titre right">';
1593 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).
'">';
1596if (!empty($arrayfields[
'multicurrency_dynamount_payed'][
'checked'])) {
1597 print
'<td class="liste_titre">';
1600if (!empty($arrayfields[
'multicurrency_rtp'][
'checked'])) {
1601 print
'<td class="liste_titre right">';
1604if (!empty($arrayfields[
'total_pa'][
'checked'])) {
1605 print
'<td class="liste_titre right">';
1608if (!empty($arrayfields[
'total_margin'][
'checked'])) {
1609 print
'<td class="liste_titre right">';
1612if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
1613 print
'<td class="liste_titre right">';
1616if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
1617 print
'<td class="liste_titre right">';
1622include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
1625$parameters = array(
'arrayfields' => $arrayfields);
1626$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action);
1627print $hookmanager->resPrint;
1629if (!empty($arrayfields[
'f.datec'][
'checked'])) {
1630 print
'<td class="liste_titre">';
1634if (!empty($arrayfields[
'f.tms'][
'checked'])) {
1635 print
'<td class="liste_titre">';
1639if (!empty($arrayfields[
'f.date_closing'][
'checked'])) {
1640 print
'<td class="liste_titre">';
1643if (!empty($arrayfields[
'f.note_public'][
'checked'])) {
1645 print
'<td class="liste_titre">';
1648if (!empty($arrayfields[
'f.note_private'][
'checked'])) {
1650 print
'<td class="liste_titre">';
1653if (!empty($arrayfields[
'f.fk_fac_rec_source'][
'checked'])) {
1655 print
'<td class="liste_titre maxwidthonsmartphone right">';
1656 print
'<input class="flat maxwidth50imp" type="text" name="search_fac_rec_source_title" id="search_fac_rec_source_title" value="'.dol_escape_htmltag($search_fac_rec_source_title).
'">';
1660if (!empty($arrayfields[
'f.fk_statut'][
'checked'])) {
1661 print
'<td class="liste_titre center parentonrightofpage">';
1662 $liststatus = array(
'0' => $langs->trans(
"BillShortStatusDraft"),
'0,1' => $langs->trans(
"BillShortStatusDraft").
'+'.$langs->trans(
"BillShortStatusNotPaid"),
'1' => $langs->trans(
"BillShortStatusNotPaid"),
'1,2' => $langs->trans(
"BillShortStatusNotPaid").
'+'.$langs->trans(
"BillShortStatusPaid"),
'2' => $langs->trans(
"BillShortStatusPaid"),
'3' => $langs->trans(
"BillShortStatusCanceled"));
1664 print $form->selectarray(
'search_status', $liststatus, $search_status, 1, 0, 0,
'', 0, 0, 0,
'',
'search_status width100 onrightofpage', 1);
1669 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
1670 $searchpicto = $form->showFilterButtons();
1676$totalarray = array();
1677$totalarray[
'nbfield'] = 0;
1681print
'<tr class="liste_titre">';
1683 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'align="center"', $sortfield, $sortorder,
'maxwidthsearch ');
1684 $totalarray[
'nbfield']++;
1688 $totalarray[
'nbfield']++;
1690if (!empty($arrayfields[
'f.ref'][
'checked'])) {
1691 print_liste_field_titre($arrayfields[
'f.ref'][
'label'], $_SERVER[
'PHP_SELF'],
'f.ref',
'', $param,
'', $sortfield, $sortorder);
1692 $totalarray[
'nbfield']++;
1694if (!empty($arrayfields[
'f.ref_client'][
'checked'])) {
1695 print_liste_field_titre($arrayfields[
'f.ref_client'][
'label'], $_SERVER[
"PHP_SELF"],
'f.ref_client',
'', $param,
'', $sortfield, $sortorder);
1696 $totalarray[
'nbfield']++;
1698if (!empty($arrayfields[
'f.type'][
'checked'])) {
1699 print_liste_field_titre($arrayfields[
'f.type'][
'label'], $_SERVER[
"PHP_SELF"],
'f.type',
'', $param,
'', $sortfield, $sortorder);
1700 $totalarray[
'nbfield']++;
1702if (!empty($arrayfields[
'f.subtype'][
'checked'])) {
1703 print_liste_field_titre($arrayfields[
'f.subtype'][
'label'], $_SERVER[
"PHP_SELF"],
'f.subtype',
'', $param,
'', $sortfield, $sortorder);
1705if (!empty($arrayfields[
'f.datef'][
'checked'])) {
1706 print_liste_field_titre($arrayfields[
'f.datef'][
'label'], $_SERVER[
'PHP_SELF'],
'f.datef',
'', $param,
'', $sortfield, $sortorder,
'center ');
1707 $totalarray[
'nbfield']++;
1709if (!empty($arrayfields[
'f.date_valid'][
'checked'])) {
1710 print_liste_field_titre($arrayfields[
'f.date_valid'][
'label'], $_SERVER[
'PHP_SELF'],
'f.date_valid',
'', $param,
'', $sortfield, $sortorder,
'center ');
1711 $totalarray[
'nbfield']++;
1713if (!empty($arrayfields[
'f.date_lim_reglement'][
'checked'])) {
1714 print_liste_field_titre($arrayfields[
'f.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
"f.date_lim_reglement",
'', $param,
'', $sortfield, $sortorder,
'center ');
1715 $totalarray[
'nbfield']++;
1717if (!empty($arrayfields[
'p.ref'][
'checked'])) {
1718 $langs->load(
"projects");
1719 print_liste_field_titre($arrayfields[
'p.ref'][
'label'], $_SERVER[
'PHP_SELF'],
"p.ref",
'', $param,
'', $sortfield, $sortorder);
1720 $totalarray[
'nbfield']++;
1722if (!empty($arrayfields[
'p.title'][
'checked'])) {
1723 print_liste_field_titre($arrayfields[
'p.title'][
'label'], $_SERVER[
'PHP_SELF'],
"p.title",
'', $param,
'', $sortfield, $sortorder);
1724 $totalarray[
'nbfield']++;
1726if (!empty($arrayfields[
's.nom'][
'checked'])) {
1727 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
'PHP_SELF'],
's.nom',
'', $param,
'', $sortfield, $sortorder);
1728 $totalarray[
'nbfield']++;
1730if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
1731 print_liste_field_titre($arrayfields[
's.name_alias'][
'label'], $_SERVER[
'PHP_SELF'],
's.name_alias',
'', $param,
'', $sortfield, $sortorder);
1732 $totalarray[
'nbfield']++;
1734if (!empty($arrayfields[
's2.nom'][
'checked'])) {
1735 print_liste_field_titre($arrayfields[
's2.nom'][
'label'], $_SERVER[
'PHP_SELF'],
's2.nom',
'', $param,
'', $sortfield, $sortorder);
1736 $totalarray[
'nbfield']++;
1738if (!empty($arrayfields[
's.code_client'][
'checked'])) {
1739 print_liste_field_titre($arrayfields[
's.code_client'][
'label'], $_SERVER[
'PHP_SELF'],
's.code_client',
'', $param,
'', $sortfield, $sortorder);
1740 $totalarray[
'nbfield']++;
1742if (!empty($arrayfields[
's.town'][
'checked'])) {
1743 print_liste_field_titre($arrayfields[
's.town'][
'label'], $_SERVER[
"PHP_SELF"],
's.town',
'', $param,
'', $sortfield, $sortorder);
1744 $totalarray[
'nbfield']++;
1746if (!empty($arrayfields[
's.zip'][
'checked'])) {
1747 print_liste_field_titre($arrayfields[
's.zip'][
'label'], $_SERVER[
"PHP_SELF"],
's.zip',
'', $param,
'', $sortfield, $sortorder);
1748 $totalarray[
'nbfield']++;
1750if (!empty($arrayfields[
'state.nom'][
'checked'])) {
1751 print_liste_field_titre($arrayfields[
'state.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"state.nom",
"", $param,
'', $sortfield, $sortorder);
1752 $totalarray[
'nbfield']++;
1754if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
1755 print_liste_field_titre($arrayfields[
'country.code_iso'][
'label'], $_SERVER[
"PHP_SELF"],
"country.code_iso",
"", $param,
'', $sortfield, $sortorder,
'center ');
1756 $totalarray[
'nbfield']++;
1758if (!empty($arrayfields[
'typent.code'][
'checked'])) {
1759 print_liste_field_titre($arrayfields[
'typent.code'][
'label'], $_SERVER[
"PHP_SELF"],
"typent.code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1760 $totalarray[
'nbfield']++;
1762if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked'])) {
1763 print_liste_field_titre($arrayfields[
'f.fk_mode_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"f.fk_mode_reglement",
"", $param,
"", $sortfield, $sortorder);
1764 $totalarray[
'nbfield']++;
1766if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked'])) {
1767 print_liste_field_titre($arrayfields[
'f.fk_cond_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"f.fk_cond_reglement",
"", $param,
"", $sortfield, $sortorder);
1768 $totalarray[
'nbfield']++;
1770if (!empty($arrayfields[
'f.module_source'][
'checked'])) {
1771 print_liste_field_titre($arrayfields[
'f.module_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.module_source",
"", $param,
"", $sortfield, $sortorder);
1772 $totalarray[
'nbfield']++;
1774if (!empty($arrayfields[
'f.pos_source'][
'checked'])) {
1775 print_liste_field_titre($arrayfields[
'f.pos_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.pos_source",
"", $param,
"", $sortfield, $sortorder);
1776 $totalarray[
'nbfield']++;
1778if (!empty($arrayfields[
'f.total_ht'][
'checked'])) {
1779 print_liste_field_titre($arrayfields[
'f.total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'f.total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
1780 $totalarray[
'nbfield']++;
1782if (!empty($arrayfields[
'f.total_tva'][
'checked'])) {
1783 print_liste_field_titre($arrayfields[
'f.total_tva'][
'label'], $_SERVER[
'PHP_SELF'],
'f.total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
1784 $totalarray[
'nbfield']++;
1786if (!empty($arrayfields[
'f.total_localtax1'][
'checked'])) {
1787 print_liste_field_titre($arrayfields[
'f.total_localtax1'][
'label'], $_SERVER[
'PHP_SELF'],
'f.localtax1',
'', $param,
'', $sortfield, $sortorder,
'right ');
1788 $totalarray[
'nbfield']++;
1790if (!empty($arrayfields[
'f.total_localtax2'][
'checked'])) {
1791 print_liste_field_titre($arrayfields[
'f.total_localtax2'][
'label'], $_SERVER[
'PHP_SELF'],
'f.localtax2',
'', $param,
'', $sortfield, $sortorder,
'right ');
1792 $totalarray[
'nbfield']++;
1794if (!empty($arrayfields[
'f.total_ttc'][
'checked'])) {
1795 print_liste_field_titre($arrayfields[
'f.total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'f.total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
1796 $totalarray[
'nbfield']++;
1798if (!empty($arrayfields[
'u.login'][
'checked'])) {
1799 print_liste_field_titre($arrayfields[
'u.login'][
'label'], $_SERVER[
"PHP_SELF"],
'u.login',
'', $param,
'', $sortfield, $sortorder,
'center ');
1800 $totalarray[
'nbfield']++;
1802if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
1803 print_liste_field_titre($arrayfields[
'sale_representative'][
'label'], $_SERVER[
"PHP_SELF"],
"",
"",
"$param",
'', $sortfield, $sortorder);
1804 $totalarray[
'nbfield']++;
1806if (!empty($arrayfields[
'f.retained_warranty'][
'checked'])) {
1807 print_liste_field_titre($arrayfields[
'f.retained_warranty'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
1808 $totalarray[
'nbfield']++;
1810if (!empty($arrayfields[
'dynamount_payed'][
'checked'])) {
1811 print_liste_field_titre($arrayfields[
'dynamount_payed'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
1812 $totalarray[
'nbfield']++;
1814if (!empty($arrayfields[
'rtp'][
'checked'])) {
1815 print_liste_field_titre($arrayfields[
'rtp'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
1816 $totalarray[
'nbfield']++;
1818if (!empty($arrayfields[
'f.multicurrency_code'][
'checked'])) {
1819 print_liste_field_titre($arrayfields[
'f.multicurrency_code'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_code',
'', $param,
'', $sortfield, $sortorder);
1820 $totalarray[
'nbfield']++;
1822if (!empty($arrayfields[
'f.multicurrency_tx'][
'checked'])) {
1823 print_liste_field_titre($arrayfields[
'f.multicurrency_tx'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_tx',
'', $param,
'', $sortfield, $sortorder);
1824 $totalarray[
'nbfield']++;
1826if (!empty($arrayfields[
'f.multicurrency_total_ht'][
'checked'])) {
1827 print_liste_field_titre($arrayfields[
'f.multicurrency_total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
1828 $totalarray[
'nbfield']++;
1830if (!empty($arrayfields[
'f.multicurrency_total_vat'][
'checked'])) {
1831 print_liste_field_titre($arrayfields[
'f.multicurrency_total_vat'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
1832 $totalarray[
'nbfield']++;
1834if (!empty($arrayfields[
'f.multicurrency_total_ttc'][
'checked'])) {
1835 print_liste_field_titre($arrayfields[
'f.multicurrency_total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
1836 $totalarray[
'nbfield']++;
1838if (!empty($arrayfields[
'multicurrency_dynamount_payed'][
'checked'])) {
1839 print_liste_field_titre($arrayfields[
'multicurrency_dynamount_payed'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
1840 $totalarray[
'nbfield']++;
1842if (!empty($arrayfields[
'multicurrency_rtp'][
'checked'])) {
1843 print_liste_field_titre($arrayfields[
'multicurrency_rtp'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
1844 $totalarray[
'nbfield']++;
1846if (!empty($arrayfields[
'total_pa'][
'checked'])) {
1847 print_liste_field_titre($arrayfields[
'total_pa'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
1848 $totalarray[
'nbfield']++;
1850if (!empty($arrayfields[
'total_margin'][
'checked'])) {
1851 print_liste_field_titre($arrayfields[
'total_margin'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
1852 $totalarray[
'nbfield']++;
1854if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
1855 print_liste_field_titre($arrayfields[
'total_margin_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
1856 $totalarray[
'nbfield']++;
1858if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
1859 print_liste_field_titre($arrayfields[
'total_mark_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
1860 $totalarray[
'nbfield']++;
1863include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
1865$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder,
'totalarray' => $totalarray);
1866$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
1867print $hookmanager->resPrint;
1868if (!empty($arrayfields[
'f.datec'][
'checked'])) {
1869 print_liste_field_titre($arrayfields[
'f.datec'][
'label'], $_SERVER[
"PHP_SELF"],
"f.datec",
"", $param,
'', $sortfield, $sortorder,
'nowraponall center ');
1870 $totalarray[
'nbfield']++;
1872if (!empty($arrayfields[
'f.tms'][
'checked'])) {
1873 print_liste_field_titre($arrayfields[
'f.tms'][
'label'], $_SERVER[
"PHP_SELF"],
"f.tms",
"", $param,
'', $sortfield, $sortorder,
'nowraponall center ');
1874 $totalarray[
'nbfield']++;
1876if (!empty($arrayfields[
'f.date_closing'][
'checked'])) {
1877 print_liste_field_titre($arrayfields[
'f.date_closing'][
'label'], $_SERVER[
"PHP_SELF"],
"f.date_closing",
"", $param,
'', $sortfield, $sortorder,
'nowraponall center ');
1878 $totalarray[
'nbfield']++;
1880if (!empty($arrayfields[
'f.note_public'][
'checked'])) {
1881 print_liste_field_titre($arrayfields[
'f.note_public'][
'label'], $_SERVER[
"PHP_SELF"],
"f.note_public",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
1882 $totalarray[
'nbfield']++;
1884if (!empty($arrayfields[
'f.note_private'][
'checked'])) {
1885 print_liste_field_titre($arrayfields[
'f.note_private'][
'label'], $_SERVER[
"PHP_SELF"],
"f.note_private",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
1886 $totalarray[
'nbfield']++;
1888if (!empty($arrayfields[
'f.fk_fac_rec_source'][
'checked'])) {
1889 print_liste_field_titre($arrayfields[
'f.fk_fac_rec_source'][
'label'], $_SERVER[
"PHP_SELF"],
"facrec.titre",
"", $param,
'', $sortfield, $sortorder);
1890 $totalarray[
'nbfield']++;
1892if (!empty($arrayfields[
'f.fk_statut'][
'checked'])) {
1893 print_liste_field_titre($arrayfields[
'f.fk_statut'][
'label'], $_SERVER[
"PHP_SELF"],
"f.fk_statut,f.paye,f.type",
"", $param,
'', $sortfield, $sortorder,
'center ');
1894 $totalarray[
'nbfield']++;
1897 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'maxwidthsearch center ');
1898 $totalarray[
'nbfield']++;
1903$projectstatic =
new Project($db);
1905$userstatic =
new User($db);
1911 $savnbfield = $totalarray[
'nbfield'];
1912 $totalarray = array();
1913 $totalarray[
'nbfield'] = 0;
1914 $totalarray[
'val'] = array();
1915 $totalarray[
'val'][
'f.total_ht'] = 0;
1916 $totalarray[
'val'][
'f.total_tva'] = 0;
1917 $totalarray[
'val'][
'f.total_localtax1'] = 0;
1918 $totalarray[
'val'][
'f.total_localtax1'] = 0;
1919 $totalarray[
'val'][
'f.total_ttc'] = 0;
1920 $totalarray[
'val'][
'totalam'] = 0;
1921 $totalarray[
'val'][
'rtp'] = 0;
1923 $typenArray = $formcompany->typent_array(1);
1925 $with_margin_info =
false;
1926 if (isModEnabled(
'margin') && (
1927 !empty($arrayfields[
'total_pa'][
'checked'])
1928 || !empty($arrayfields[
'total_margin'][
'checked'])
1929 || !empty($arrayfields[
'total_margin_rate'][
'checked'])
1930 || !empty($arrayfields[
'total_mark_rate'][
'checked'])
1933 $with_margin_info =
true;
1938 $imaxinloop = ($limit ? min($num, $limit) : $num);
1939 while ($i < $imaxinloop) {
1940 $obj = $db->fetch_object($resql);
1942 $datelimit = $db->jdate($obj->datelimite);
1944 $facturestatic->id = $obj->id;
1945 $facturestatic->ref = $obj->ref;
1946 $facturestatic->ref_client = $obj->ref_client;
1947 $facturestatic->ref_customer = $obj->ref_client;
1948 $facturestatic->type = $obj->type;
1949 $facturestatic->subtype = $obj->subtype;
1950 $facturestatic->total_ht = $obj->total_ht;
1951 $facturestatic->total_tva = $obj->total_tva;
1952 $facturestatic->total_ttc = $obj->total_ttc;
1953 $facturestatic->multicurrency_code = $obj->multicurrency_code;
1954 $facturestatic->multicurrency_tx = $obj->multicurrency_tx;
1955 $facturestatic->multicurrency_total_ht = $obj->multicurrency_total_ht;
1956 $facturestatic->multicurrency_total_tva = $obj->multicurrency_total_vat;
1957 $facturestatic->multicurrency_total_ttc = $obj->multicurrency_total_ttc;
1958 $facturestatic->statut = $obj->fk_statut;
1959 $facturestatic->status = $obj->fk_statut;
1960 $facturestatic->close_code = $obj->close_code;
1961 $facturestatic->total_ttc = $obj->total_ttc;
1962 $facturestatic->paye = $obj->paye;
1963 $facturestatic->socid = $obj->fk_soc;
1965 $facturestatic->date = $db->jdate($obj->datef);
1966 $facturestatic->date_validation = $db->jdate($obj->date_valid);
1967 $facturestatic->date_lim_reglement = $db->jdate($obj->datelimite);
1969 $facturestatic->note_public = $obj->note_public;
1970 $facturestatic->note_private = $obj->note_private;
1973 $facturestatic->retained_warranty = $obj->retained_warranty;
1974 $facturestatic->retained_warranty_date_limit = $obj->retained_warranty_date_limit;
1975 $facturestatic->situation_final = $obj->retained_warranty_date_limit;
1976 $facturestatic->situation_final = $obj->retained_warranty_date_limit;
1977 $facturestatic->situation_cycle_ref = $obj->situation_cycle_ref;
1978 $facturestatic->situation_counter = $obj->situation_counter;
1981 $companystatic->id = $obj->socid;
1982 $companystatic->name = $obj->name;
1983 $companystatic->name_alias = $obj->alias;
1984 $companystatic->client = $obj->client;
1985 $companystatic->fournisseur = $obj->fournisseur;
1986 $companystatic->code_client = $obj->code_client;
1987 $companystatic->code_compta_client = $obj->code_compta_client;
1988 $companystatic->code_fournisseur = $obj->code_fournisseur;
1989 $companystatic->code_compta_fournisseur = $obj->code_compta_fournisseur;
1990 $companystatic->email = $obj->email;
1991 $companystatic->phone = $obj->phone;
1992 $companystatic->fax = $obj->fax;
1993 $companystatic->address = $obj->address;
1994 $companystatic->zip = $obj->zip;
1995 $companystatic->town = $obj->town;
1996 $companystatic->country_code = $obj->country_code;
1998 $projectstatic->id = $obj->project_id;
1999 $projectstatic->ref = $obj->project_ref;
2000 $projectstatic->title = $obj->project_label;
2002 $paiement = $facturestatic->getSommePaiement();
2003 $totalcreditnotes = $facturestatic->getSumCreditNotesUsed();
2004 $totaldeposits = $facturestatic->getSumDepositsUsed();
2005 $totalpay = $paiement + $totalcreditnotes + $totaldeposits;
2006 $remaintopay = $obj->total_ttc - $totalpay;
2008 $multicurrency_paiement = $facturestatic->getSommePaiement(1);
2009 $multicurrency_totalcreditnotes = $facturestatic->getSumCreditNotesUsed(1);
2010 $multicurrency_totaldeposits = $facturestatic->getSumDepositsUsed(1);
2012 $totalpay = $paiement + $totalcreditnotes + $totaldeposits;
2013 $remaintopay =
price2num($facturestatic->total_ttc - $totalpay);
2015 $multicurrency_totalpay = $multicurrency_paiement + $multicurrency_totalcreditnotes + $multicurrency_totaldeposits;
2016 $multicurrency_remaintopay =
price2num($facturestatic->multicurrency_total_ttc - $multicurrency_totalpay);
2020 $multicurrency_remaintopay = 0;
2023 $remaincreditnote = $discount->getAvailableDiscounts($companystatic,
'',
'rc.fk_facture_source='.$facturestatic->id);
2024 $remaintopay = -$remaincreditnote;
2025 $totalpay =
price2num($facturestatic->total_ttc - $remaintopay);
2026 $multicurrency_remaincreditnote = $discount->getAvailableDiscounts($companystatic,
'',
'rc.fk_facture_source='.$facturestatic->id, 0, 0, 1);
2027 $multicurrency_remaintopay = -$multicurrency_remaincreditnote;
2028 $multicurrency_totalpay =
price2num($facturestatic->multicurrency_total_ttc - $multicurrency_remaintopay);
2031 $facturestatic->alreadypaid = $paiement;
2032 $facturestatic->totalpaid = $paiement;
2034 $marginInfo = array();
2035 if ($with_margin_info ===
true) {
2036 $facturestatic->fetch_lines();
2037 $marginInfo = $formmargin->getMarginInfosArray($facturestatic);
2038 $total_ht += $obj->total_ht;
2039 $total_margin += $marginInfo[
'total_margin'];
2044 if ($mode ==
'kanban') {
2046 print
'<tr class="trkanban"><td colspan="'.$savnbfield.
'">';
2047 print
'<div class="box-flex-container kanban">';
2050 if ($massactionbutton || $massaction) {
2052 if (in_array(
$object->id, $arrayofselected)) {
2057 $arraydata = array(
'alreadypaid' => $paiement,
'thirdparty' => $companystatic->getNomUrl(1,
'', 12),
'userauthor' => $userstatic->getNomUrl(1),
'selected' => in_array(
$object->id, $arrayofselected));
2058 print $facturestatic->getKanbanView(
'', $arraydata);
2059 if ($i == ($imaxinloop - 1)) {
2066 print
'<tr data-rowid="'.$object->id.
'" class="oddeven"';
2067 if ($contextpage ==
'poslist') {
2068 print
' onclick="parent.$(\'#poslines\').load(\'invoice.php?action=history&placeid='.$obj->id.
'\',
function() {parent.$.colorbox.close();
';
2069 if (strpos($obj->ref, 'PROV
') !== false) {
2070 //If is a draft invoice, load var to be able to add products
2071 $place = str_replace(")", "", str_replace("(PROV-POS".$_SESSION["takeposterminal"]."-", "", $obj->ref));
2072 print 'parent.place=\
''.dol_escape_js($place).
'\'';
2080 print
'<td class="nowrap center">';
2081 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
2083 if (in_array($obj->id, $arrayofselected)) {
2086 print
'<input id="cb'.$obj->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
2090 $totalarray[
'nbfield']++;
2096 print
'<td>'.(($offset * $limit) + $i).
'</td>';
2098 $totalarray[
'nbfield']++;
2103 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
2104 print
'<td class="nowraponall">';
2106 print
'<table class="nobordernopadding"><tr class="nocellnopadd">';
2108 print
'<td class="nobordernopadding nowraponall">';
2109 if ($contextpage ==
'poslist') {
2112 print $facturestatic->getNomUrl(1,
'', 200, 0,
'', 0, 1);
2117 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$obj->id;
2118 print $formfile->getDocumentsLink($facturestatic->element, $filename, $filedir);
2125 $totalarray[
'nbfield']++;
2130 if (!empty($arrayfields[
'f.ref_client'][
'checked'])) {
2131 print
'<td class="nowrap tdoverflowmax200">';
2135 $totalarray[
'nbfield']++;
2140 if (!empty($arrayfields[
'f.type'][
'checked'])) {
2141 print
'<td class="nowraponall tdoverflowmax100" title="'.$facturestatic->getLibType().
'">';
2142 print $facturestatic->getLibType(2);
2145 $totalarray[
'nbfield']++;
2150 if (!empty($arrayfields[
'f.subtype'][
'checked'])) {
2152 if ($facturestatic->subtype > 0) {
2153 $labeltoshow = $facturestatic->getSubtypeLabel(
'facture');
2155 print
'<td class="nowraponall tdoverflowmax300" title="'.$labeltoshow.
'">';
2159 $totalarray[
'nbfield']++;
2164 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
2165 print
'<td align="center" class="nowraponall">';
2169 $totalarray[
'nbfield']++;
2174 if (!empty($arrayfields[
'f.date_valid'][
'checked'])) {
2175 print
'<td align="center" class="nowraponall">';
2179 $totalarray[
'nbfield']++;
2184 if (!empty($arrayfields[
'f.date_lim_reglement'][
'checked'])) {
2185 print
'<td align="center" class="nowraponall">'.dol_print_date($datelimit,
'day');
2186 if ($facturestatic->hasDelay()) {
2187 print
img_warning($langs->trans(
'Alert').
' - '.$langs->trans(
'Late'));
2191 $totalarray[
'nbfield']++;
2196 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2197 print
'<td class="nocellnopadd nowraponall">';
2198 if ($obj->project_id > 0) {
2199 print $projectstatic->getNomUrl(1);
2203 $totalarray[
'nbfield']++;
2208 if (!empty($arrayfields[
'p.title'][
'checked'])) {
2209 print
'<td class="nowraponall">';
2210 if ($obj->project_id > 0) {
2215 $totalarray[
'nbfield']++;
2220 if (!empty($arrayfields[
's.nom'][
'checked'])) {
2221 print
'<td class="tdoverflowmax150">';
2222 if ($contextpage ==
'poslist') {
2225 print $companystatic->getNomUrl(1,
'customer', 0, 0, -1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2229 $totalarray[
'nbfield']++;
2233 if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2234 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($companystatic->name_alias).
'">';
2238 $totalarray[
'nbfield']++;
2242 if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2243 print
'<td class="tdoverflowmax200">';
2244 if ($obj->fk_parent > 0) {
2245 if (!isset($company_url_list[$obj->fk_parent])) {
2246 $companyparent =
new Societe($db);
2247 $res = $companyparent->fetch($obj->fk_parent);
2249 $company_url_list[$obj->fk_parent] = $companyparent->getNomUrl(1);
2252 if (isset($company_url_list[$obj->fk_parent])) {
2253 print $company_url_list[$obj->fk_parent];
2258 $totalarray[
'nbfield']++;
2262 if (!empty($arrayfields[
's.code_client'][
'checked'])) {
2263 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($companystatic->code_client).
'">';
2267 $totalarray[
'nbfield']++;
2271 if (!empty($arrayfields[
's.town'][
'checked'])) {
2272 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($obj->town).
'">';
2276 $totalarray[
'nbfield']++;
2280 if (!empty($arrayfields[
's.zip'][
'checked'])) {
2281 print
'<td class="nowraponall">';
2285 $totalarray[
'nbfield']++;
2289 if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2290 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($obj->state_name).
'">'.
dol_escape_htmltag($obj->state_name).
"</td>\n";
2292 $totalarray[
'nbfield']++;
2296 if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2297 $tmparray =
getCountry($obj->fk_pays,
'all');
2298 print
'<td class="center tdoverflowmax100" title="'.dol_escape_htmltag($tmparray[
'label']).
'">';
2302 $totalarray[
'nbfield']++;
2306 if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2307 print
'<td class="center">';
2308 if (!is_array($typenArray) || count($typenArray) == 0) {
2309 $typenArray = $formcompany->typent_array(1);
2311 if (!empty($obj->typent_code)) {
2312 print $typenArray[$obj->typent_code];
2316 $totalarray[
'nbfield']++;
2320 if (!empty($arrayfields[
'staff.code'][
'checked'])) {
2321 print
'<td class="center">';
2322 if (!is_array($conf->cache[
'staff']) || count($conf->cache[
'staff']) == 0) {
2323 $conf->cache[
'staff'] = $formcompany->effectif_array(1);
2325 print $conf->cache[
'staff'][$obj->staff_code];
2328 $totalarray[
'nbfield']++;
2333 if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked'])) {
2334 $s = $form->form_modes_reglement($_SERVER[
'PHP_SELF'], $obj->fk_mode_reglement,
'none',
'', -1, 0,
'', 1);
2335 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($s).
'">';
2339 $totalarray[
'nbfield']++;
2344 if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked'])) {
2345 $s = $form->form_conditions_reglement($_SERVER[
'PHP_SELF'], $obj->fk_cond_reglement,
'none', 0,
'', -1, -1, 1);
2346 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($s).
'">';
2350 $totalarray[
'nbfield']++;
2355 if (!empty($arrayfields[
'f.module_source'][
'checked'])) {
2360 $totalarray[
'nbfield']++;
2365 if (!empty($arrayfields[
'f.pos_source'][
'checked'])) {
2370 $totalarray[
'nbfield']++;
2375 if (!empty($arrayfields[
'f.total_ht'][
'checked'])) {
2376 print
'<td class="right nowraponall amount">'.price($obj->total_ht).
"</td>\n";
2378 $totalarray[
'nbfield']++;
2381 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_ht';
2383 $totalarray[
'val'][
'f.total_ht'] += $obj->total_ht;
2386 if (!empty($arrayfields[
'f.total_tva'][
'checked'])) {
2387 print
'<td class="right nowraponall amount">'.price($obj->total_tva).
"</td>\n";
2389 $totalarray[
'nbfield']++;
2392 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_tva';
2394 $totalarray[
'val'][
'f.total_tva'] += $obj->total_tva;
2397 if (!empty($arrayfields[
'f.total_localtax1'][
'checked'])) {
2398 print
'<td class="right nowraponall amount">'.price($obj->total_localtax1).
"</td>\n";
2400 $totalarray[
'nbfield']++;
2403 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_localtax1';
2405 $totalarray[
'val'][
'f.total_localtax1'] += $obj->total_localtax1;
2408 if (!empty($arrayfields[
'f.total_localtax2'][
'checked'])) {
2409 print
'<td class="right nowraponall amount">'.price($obj->total_localtax2).
"</td>\n";
2411 $totalarray[
'nbfield']++;
2414 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_localtax2';
2416 $totalarray[
'val'][
'f.total_localtax2'] += $obj->total_localtax2;
2419 if (!empty($arrayfields[
'f.total_ttc'][
'checked'])) {
2420 print
'<td class="right nowraponall amount">'.price($obj->total_ttc).
"</td>\n";
2422 $totalarray[
'nbfield']++;
2425 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_ttc';
2427 $totalarray[
'val'][
'f.total_ttc'] += $obj->total_ttc;
2430 $userstatic->id = $obj->fk_user_author;
2431 $userstatic->login = $obj->login;
2432 $userstatic->lastname = $obj->lastname;
2433 $userstatic->firstname = $obj->firstname;
2434 $userstatic->email = $obj->user_email;
2435 $userstatic->status = $obj->user_statut;
2436 $userstatic->entity = $obj->entity;
2437 $userstatic->photo = $obj->photo;
2438 $userstatic->office_phone = $obj->office_phone;
2439 $userstatic->office_fax = $obj->office_fax;
2440 $userstatic->user_mobile = $obj->user_mobile;
2441 $userstatic->job = $obj->job;
2442 $userstatic->gender = $obj->gender;
2445 if (!empty($arrayfields[
'u.login'][
'checked'])) {
2446 print
'<td class="tdoverflowmax200">';
2447 if ($userstatic->id) {
2448 print $userstatic->getNomUrl(-1);
2454 $totalarray[
'nbfield']++;
2458 if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2461 if ($obj->socid > 0) {
2462 $listsalesrepresentatives = $companystatic->getSalesRepresentatives($user);
2463 if ($listsalesrepresentatives < 0) {
2466 $nbofsalesrepresentative = count($listsalesrepresentatives);
2467 if ($nbofsalesrepresentative > 6) {
2469 print $nbofsalesrepresentative;
2470 } elseif ($nbofsalesrepresentative > 0) {
2472 foreach ($listsalesrepresentatives as $val) {
2473 $userstatic->id = $val[
'id'];
2474 $userstatic->lastname = $val[
'lastname'];
2475 $userstatic->firstname = $val[
'firstname'];
2476 $userstatic->email = $val[
'email'];
2477 $userstatic->status = $val[
'statut'];
2478 $userstatic->entity = $val[
'entity'];
2479 $userstatic->photo = $val[
'photo'];
2480 $userstatic->login = $val[
'login'];
2481 $userstatic->office_phone = $val[
'office_phone'];
2482 $userstatic->office_fax = $val[
'office_fax'];
2483 $userstatic->user_mobile = $val[
'user_mobile'];
2484 $userstatic->job = $val[
'job'];
2485 $userstatic->gender = $val[
'gender'];
2487 print ($nbofsalesrepresentative < 2) ? $userstatic->getNomUrl(-1,
'', 0, 0, 12) : $userstatic->getNomUrl(-2);
2489 if ($j < $nbofsalesrepresentative) {
2501 $totalarray[
'nbfield']++;
2505 if (!empty($arrayfields[
'f.retained_warranty'][
'checked'])) {
2506 print
'<td align="right">'.(!empty($obj->retained_warranty) ?
price($obj->retained_warranty).
'%' :
' ').
'</td>';
2508 $totalarray[
'nbfield']++;
2512 if (!empty($arrayfields[
'dynamount_payed'][
'checked'])) {
2513 print
'<td class="right nowraponall amount">'.(!empty($totalpay) ?
price($totalpay, 0, $langs) :
' ').
'</td>';
2515 $totalarray[
'nbfield']++;
2518 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalam';
2520 $totalarray[
'val'][
'totalam'] += $totalpay;
2524 if (!empty($arrayfields[
'rtp'][
'checked'])) {
2525 print
'<td class="right nowraponall amount">';
2526 print(!empty($remaintopay) ?
price($remaintopay, 0, $langs) :
' ');
2529 $totalarray[
'nbfield']++;
2532 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'rtp';
2534 $totalarray[
'val'][
'rtp'] += $remaintopay;
2539 if (!empty($arrayfields[
'f.multicurrency_code'][
'checked'])) {
2540 print
'<td class="nowraponall tdoverflowmax125" title="'.dol_escape_htmltag($obj->multicurrency_code.
' - '.$langs->transnoentitiesnoconv(
'Currency'.$obj->multicurrency_code)).
'">';
2542 print $langs->transnoentitiesnoconv(
'Currency'.$obj->multicurrency_code);
2548 $totalarray[
'nbfield']++;
2553 if (!empty($arrayfields[
'f.multicurrency_tx'][
'checked'])) {
2554 print
'<td class="nowraponall">';
2555 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid, $obj->multicurrency_tx,
'none', $obj->multicurrency_code);
2558 $totalarray[
'nbfield']++;
2562 if (!empty($arrayfields[
'f.multicurrency_total_ht'][
'checked'])) {
2563 print
'<td class="right nowraponall amount">'.price($obj->multicurrency_total_ht).
"</td>\n";
2565 $totalarray[
'nbfield']++;
2569 if (!empty($arrayfields[
'f.multicurrency_total_vat'][
'checked'])) {
2570 print
'<td class="right nowraponall amount">'.price($obj->multicurrency_total_vat).
"</td>\n";
2572 $totalarray[
'nbfield']++;
2576 if (!empty($arrayfields[
'f.multicurrency_total_ttc'][
'checked'])) {
2577 print
'<td class="right nowraponall amount">'.price($obj->multicurrency_total_ttc).
"</td>\n";
2579 $totalarray[
'nbfield']++;
2583 if (!empty($arrayfields[
'multicurrency_dynamount_payed'][
'checked'])) {
2584 print
'<td class="right nowraponall amount">'.(!empty($multicurrency_totalpay) ?
price($multicurrency_totalpay, 0, $langs) :
' ').
'</td>';
2586 $totalarray[
'nbfield']++;
2591 if (!empty($arrayfields[
'multicurrency_rtp'][
'checked'])) {
2592 print
'<td class="right nowraponall">';
2593 print(!empty($multicurrency_remaintopay) ?
price($multicurrency_remaintopay, 0, $langs) :
' ');
2596 $totalarray[
'nbfield']++;
2601 if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2602 print
'<td class="right nowrap">'.price($marginInfo[
'pa_total'], 0, $langs, 1, -1,
'MT').
'</td>';
2604 $totalarray[
'nbfield']++;
2605 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'total_pa';
2607 if (empty($totalarray[
'val'][
'total_pa'])) {
2608 $totalarray[
'val'][
'total_pa'] = 0;
2610 $totalarray[
'val'][
'total_pa'] += $marginInfo[
'pa_total'];
2613 if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2614 print
'<td class="right nowrap">'.price($marginInfo[
'total_margin'], 0, $langs, 1, -1,
'MT').
'</td>';
2616 $totalarray[
'nbfield']++;
2617 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'total_margin';
2619 if (empty($totalarray[
'val'][
'total_margin'])) {
2620 $totalarray[
'val'][
'total_margin'] = 0;
2622 $totalarray[
'val'][
'total_margin'] += $marginInfo[
'total_margin'];
2625 if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2626 print
'<td class="right nowrap">'.(($marginInfo[
'total_margin_rate'] ==
'') ?
'' :
price($marginInfo[
'total_margin_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
2628 $totalarray[
'nbfield']++;
2632 if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2633 print
'<td class="right nowrap">'.(($marginInfo[
'total_mark_rate'] ==
'') ?
'' :
price($marginInfo[
'total_mark_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
2635 $totalarray[
'nbfield']++;
2636 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'total_mark_rate';
2638 if ($i >= $imaxinloop - 1) {
2639 if (!empty($total_ht)) {
2640 $totalarray[
'val'][
'total_mark_rate'] =
price2num($total_margin * 100 / $total_ht,
'MT');
2642 $totalarray[
'val'][
'total_mark_rate'] =
'';
2648 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
2650 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
2651 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
2652 print $hookmanager->resPrint;
2654 if (!empty($arrayfields[
'f.datec'][
'checked'])) {
2655 print
'<td class="nowraponall center">';
2656 print
dol_print_date($db->jdate($obj->date_creation),
'dayhour',
'tzuser');
2659 $totalarray[
'nbfield']++;
2663 if (!empty($arrayfields[
'f.tms'][
'checked'])) {
2664 print
'<td class="nowraponall center">';
2665 print
dol_print_date($db->jdate($obj->date_modification),
'dayhour',
'tzuser');
2668 $totalarray[
'nbfield']++;
2672 if (!empty($arrayfields[
'f.date_closing'][
'checked'])) {
2673 print
'<td class="nowraponall center">';
2674 print
dol_print_date($db->jdate($obj->date_closing),
'dayhour',
'tzuser');
2677 $totalarray[
'nbfield']++;
2681 if (!empty($arrayfields[
'f.note_public'][
'checked'])) {
2682 print
'<td class="sensiblehtmlcontent center">';
2686 $totalarray[
'nbfield']++;
2690 if (!empty($arrayfields[
'f.note_private'][
'checked'])) {
2691 print
'<td class="center">';
2695 $totalarray[
'nbfield']++;
2699 if (!empty($arrayfields[
'f.fk_fac_rec_source'][
'checked'])) {
2700 print
'<td class="center">';
2701 if (!empty($obj->fk_fac_rec_source)) {
2703 $result = $facrec->fetch($obj->fk_fac_rec_source);
2707 print $facrec->getNomUrl();
2712 $totalarray[
'nbfield']++;
2716 if (!empty($arrayfields[
'f.fk_statut'][
'checked'])) {
2717 print
'<td class="nowrap center">';
2718 print $facturestatic->getLibStatut(5, $paiement);
2721 $totalarray[
'nbfield']++;
2728 print
'<td class="nowrap center">';
2729 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
2731 if (in_array($obj->id, $arrayofselected)) {
2734 print
'<input id="cb'.$obj->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
2738 $totalarray[
'nbfield']++;
2749 $totalarray[
'val'][
'total_pa'] = (isset($totalarray[
'val'][
'total_pa']) ?
price2num($totalarray[
'val'][
'total_pa'],
'MT') : null);
2750 $totalarray[
'val'][
'total_margin'] = (isset($totalarray[
'val'][
'total_margin']) ?
price2num($totalarray[
'val'][
'total_margin'],
'MT') : null);
2753 include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
2759 foreach ($arrayfields as $key => $val) {
2760 if (!empty($val[
'checked'])) {
2764 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
2769$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
2770$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
2771print $hookmanager->resPrint;
2773print
'</table>'.
"\n";
2776print
'</form>'.
"\n";
2779if ($contextpage !=
'poslist') {
2780 $hidegeneratedfilelistifempty = 1;
2781 if ($massaction ==
'builddoc' || $action ==
'remove_file' || $show_files) {
2782 $hidegeneratedfilelistifempty = 0;
2786 $urlsource = $_SERVER[
'PHP_SELF'].
'?sortfield='.$sortfield.
'&sortorder='.$sortorder;
2787 $urlsource .= str_replace(
'&',
'&', $param);
2789 $filedir = $diroutputmassaction;
2790 $genallowed = $user->hasRight(
"facture",
"lire");
2791 $delallowed = $user->hasRight(
"facture",
"creer");
2794 print $formfile->showdocuments(
'massfilesarea_invoices',
'', $filedir, $urlsource, 0, $delallowed,
'', 1, 1, 0, 48, 1, $param, $title,
'',
'',
'',
null, $hidegeneratedfilelistifempty);
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage bank accounts.
Class to manage absolute discounts.
Class to manage invoices.
const TYPE_REPLACEMENT
Replacement invoice.
const STATUS_DRAFT
Draft status.
const TYPE_STANDARD
Standard invoice.
const TYPE_SITUATION
Situation invoice.
const STATUS_VALIDATED
Validated (need to be paid)
const TYPE_DEPOSIT
Deposit invoice.
const TYPE_CREDIT_NOTE
Credit note invoice.
const STATUS_CLOSED
Classified paid.
Class to manage invoice templates.
Class to manage payments of customer invoices.
Class to manage projects.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage Dolibarr users.
getCountry($searchkey, $withcode='', $dbtouse=null, $outputlangs=null, $entconv=1, $searchlabel='')
Return country label, code or id from an id, code or label.
getCountriesInEEC()
Return list of countries that are inside the EEC (European Economic Community) Note: Try to keep this...
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dolPrintHTML($s, $allowiframe=0)
Return a string (that can be on several lines) ready to be output on a HTML page.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
dol_eval($s, $returnvalue=1, $hideerrors=1, $onlysimplestring='1')
Replace eval function to add more security.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0)
Set event message in dol_events session 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...
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_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
print_barre_liste($title, $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.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
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.