46require
'../../main.inc.php';
56require_once DOL_DOCUMENT_ROOT.
'/core/class/discount.class.php';
57require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
58require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
59require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
60require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmargin.class.php';
61require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
62require_once DOL_DOCUMENT_ROOT.
'/core/lib/invoice.lib.php';
63require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
64require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
65require_once DOL_DOCUMENT_ROOT.
'/core/modules/facture/modules_facture.php';
66require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
67require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
68require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
69require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture-rec.class.php';
70require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
72 require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
75 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
76 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcategory.class.php';
80$langs->loadLangs(array(
'banks',
'bills',
'companies',
'products',
'categories',
'cashdesk'));
82$search_all = trim(
GETPOST(
'search_all',
'alphanohtml'));
85$action =
GETPOST(
'action',
'aZ09');
86$massaction =
GETPOST(
'massaction',
'alpha');
88$confirm =
GETPOST(
'confirm',
'alpha');
89$toselect =
GETPOST(
'toselect',
'array:int');
90$optioncss =
GETPOST(
'optioncss',
'alpha');
91$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'invoicelist';
94if ($contextpage ==
'poslist') {
104$search_refcustomer =
GETPOST(
'search_refcustomer',
'alpha');
105$search_type =
GETPOST(
'search_type',
'intcomma');
106$search_subtype =
GETPOST(
'search_subtype',
'intcomma');
107$search_project_ref =
GETPOST(
'search_project_ref',
'alpha');
108$search_project =
GETPOST(
'search_project',
'alpha');
109$search_company =
GETPOST(
'search_company',
'alpha');
110$search_company_alias =
GETPOST(
'search_company_alias',
'alpha');
111$search_parent_name = trim(
GETPOST(
'search_parent_name',
'alphanohtml'));
112$search_montant_ht =
GETPOST(
'search_montant_ht',
'alpha');
113$search_montant_vat =
GETPOST(
'search_montant_vat',
'alpha');
114$search_montant_localtax1 =
GETPOST(
'search_montant_localtax1',
'alpha');
115$search_montant_localtax2 =
GETPOST(
'search_montant_localtax2',
'alpha');
116$search_montant_ttc =
GETPOST(
'search_montant_ttc',
'alpha');
117$search_login =
GETPOST(
'search_login',
'alpha');
118$search_multicurrency_code =
GETPOST(
'search_multicurrency_code',
'alpha');
119$search_multicurrency_tx =
GETPOST(
'search_multicurrency_tx',
'alpha');
120$search_multicurrency_montant_ht =
GETPOST(
'search_multicurrency_montant_ht',
'alpha');
121$search_multicurrency_montant_vat =
GETPOST(
'search_multicurrency_montant_vat',
'alpha');
122$search_multicurrency_montant_ttc =
GETPOST(
'search_multicurrency_montant_ttc',
'alpha');
123$search_dispute_status =
GETPOST(
'search_dispute_status',
'intcomma');
124$search_status =
GETPOST(
'search_status',
'array:intcomma');
136$search_paymentmode =
GETPOST(
'search_paymentmode',
'intcomma');
137$search_paymentterms =
GETPOST(
'search_paymentterms',
'intcomma');
138$search_bankaccount =
GETPOST(
'search_bankaccount',
'intcomma');
139$search_fk_input_reason =
GETPOSTINT(
'search_fk_input_reason');
140$search_module_source =
GETPOST(
'search_module_source',
'alpha');
141$search_pos_source =
GETPOST(
'search_pos_source',
'alpha');
142$search_town =
GETPOST(
'search_town',
'alpha');
143$search_zip =
GETPOST(
'search_zip',
'alpha');
144$search_state =
GETPOST(
"search_state");
145$search_country =
GETPOST(
"search_country",
'aZ09');
146$search_customer_code =
GETPOST(
"search_customer_code",
'alphanohtml');
147$search_type_thirdparty =
GETPOST(
"search_type_thirdparty",
'intcomma');
148$search_user =
GETPOST(
'search_user',
'intcomma');
149$search_sale =
GETPOST(
'search_sale',
'intcomma');
151$search_date_startday =
GETPOSTINT(
'search_date_startday');
152$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
153$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
154$search_date_endday =
GETPOSTINT(
'search_date_endday');
155$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
156$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
157$search_date_start =
GETPOSTDATE(
'search_date_start',
'getpost');
158$search_date_end =
GETPOSTDATE(
'search_date_end',
'getpostend');
160$search_date_valid_startday =
GETPOSTINT(
'search_date_valid_startday');
161$search_date_valid_startmonth =
GETPOSTINT(
'search_date_valid_startmonth');
162$search_date_valid_startyear =
GETPOSTINT(
'search_date_valid_startyear');
163$search_date_valid_endday =
GETPOSTINT(
'search_date_valid_endday');
164$search_date_valid_endmonth =
GETPOSTINT(
'search_date_valid_endmonth');
165$search_date_valid_endyear =
GETPOSTINT(
'search_date_valid_endyear');
166$search_date_valid_start =
GETPOSTDATE(
'search_date_valid_start',
'getpost');
167$search_date_valid_end =
GETPOSTDATE(
'search_date_valid_end',
'getpostend');
168$search_note_private =
GETPOST(
'search_note_private',
'alpha');
169$search_note_public =
GETPOST(
'search_note_public',
'alpha');
171$search_datelimit_startday =
GETPOSTINT(
'search_datelimit_startday');
172$search_datelimit_startmonth =
GETPOSTINT(
'search_datelimit_startmonth');
173$search_datelimit_startyear =
GETPOSTINT(
'search_datelimit_startyear');
174$search_datelimit_endday =
GETPOSTINT(
'search_datelimit_endday');
175$search_datelimit_endmonth =
GETPOSTINT(
'search_datelimit_endmonth');
176$search_datelimit_endyear =
GETPOSTINT(
'search_datelimit_endyear');
177$search_datelimit_start =
GETPOSTDATE(
'search_datelimit_start',
'getpost');
178$search_datelimit_end =
GETPOSTDATE(
'search_datelimit_end',
'getpostend');
181$search_datec_start =
GETPOSTDATE(
'search_datec_start',
'getpost',
'tzuserrel');
182$search_datec_end =
GETPOSTDATE(
'search_datec_end',
'getpostend',
'tzuserrel');
183$search_datem_start =
GETPOSTDATE(
'search_datem_start',
'getpost',
'tzuserrel');
184$search_datem_end =
GETPOSTDATE(
'search_datem_end',
'getpostend',
'tzuserrel');
186$search_categ_cus =
GETPOST(
"search_categ_cus",
'intcomma');
187$searchCategoryInvoiceOperator = 0;
189 $searchCategoryInvoiceOperator =
GETPOSTINT(
'search_category_invoice_operator');
193$searchCategoryInvoiceList =
GETPOST(
'search_category_invoice_list',
'array:int');
196$search_product_category =
GETPOST(
'search_product_category',
'intcomma');
197$search_fac_rec_source_title =
GETPOST(
"search_fac_rec_source_title",
'alpha');
198$search_fk_fac_rec_source =
GETPOST(
'search_fk_fac_rec_source',
'int');
199$search_import_key = trim(
GETPOST(
"search_import_key",
"alpha"));
201$search_option =
GETPOST(
'search_option');
202if ($search_option ==
'late') {
203 $search_status = array(
'1');
207$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
208$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
210if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
215if ($contextpage ==
'poslist' && !
GETPOSTISSET(
'limit')) {
219$offset = $limit * $page;
220if (!$sortorder &&
getDolGlobalString(
'INVOICE_DEFAULT_UNPAYED_SORT_ORDER') && $search_status ==
'1') {
227 $sortfield =
'f.datef,f.rowid';
229$pageprev = $page - 1;
230$pagenext = $page + 1;
232$diroutputmassaction =
$conf->invoice->dir_output.
'/temp/massgeneration/'.$user->id;
240$hookmanager->initHooks(array($contextpage));
243$extrafields->fetch_name_optionals_label(
$object->table_element);
245$search_array_options = $extrafields->getOptionalsFromPost(
$object->table_element,
'',
'search_') ?: [];
248$fieldstosearchall = array(
250 'f.ref_client' =>
'RefCustomer',
251 'f.note_public' =>
'NotePublic',
252 's.nom' =>
"ThirdParty",
253 's.code_client' =>
"CustomerCodeShort",
254 's.name_alias' =>
"AliasNameShort",
257 'pd.description' =>
'ProductDescription',
259if (empty($user->socid)) {
260 $fieldstosearchall[
"f.note_private"] =
"NotePrivate";
266$checkedtypetiers =
'0';
268 'f.ref' => array(
'label' =>
"Ref",
'checked' =>
'1',
'position' => 5),
269 'f.ref_client' => array(
'label' =>
"RefCustomer",
'checked' =>
'-1',
'position' => 10),
270 'f.type' => array(
'label' =>
"Type",
'checked' =>
'0',
'position' => 15),
271 'f.subtype' => array(
'label' =>
"InvoiceSubtype",
'checked' =>
'0',
'position' => 17),
272 'f.datef' => array(
'label' =>
"DateInvoice",
'checked' =>
'1',
'position' => 20),
273 'f.date_valid' => array(
'label' =>
"DateValidation",
'checked' =>
'0',
'position' => 22),
274 'f.date_lim_reglement' => array(
'label' =>
"DateDue",
'checked' =>
'1',
'position' => 25),
275 'f.date_closing' => array(
'label' =>
"DateClosing",
'checked' =>
'0',
'position' => 30),
276 'p.ref' => array(
'label' =>
"ProjectRef",
'langfile' =>
'projects',
'checked' =>
'1',
'enabled' => (
isModEnabled(
'project') ?
'1' :
'0'),
'position' => 40),
277 'p.title' => array(
'label' =>
"ProjectLabel",
'langfile' =>
'projects',
'checked' =>
'0',
'enabled' => (
isModEnabled(
'project') ?
'1' :
'0'),
'position' => 41),
278 's.nom' => array(
'label' =>
"ThirdParty",
'checked' =>
'1',
'position' => 50),
279 's.name_alias' => array(
'label' =>
"AliasNameShort",
'checked' =>
'-1',
'position' => 51),
280 's.code_client' => array(
'label' =>
"CustomerCodeShort",
'checked' =>
'-1',
'position' => 52),
281 's2.nom' => array(
'label' =>
'ParentCompany',
'position' => 32,
'checked' =>
'0'),
282 's.town' => array(
'label' =>
"Town",
'checked' =>
'-1',
'position' => 55),
283 's.zip' => array(
'label' =>
"Zip",
'checked' =>
'-1',
'position' => 60),
284 'state.nom' => array(
'label' =>
"StateShort",
'checked' =>
'0',
'position' => 65),
285 'country.code_iso' => array(
'label' =>
"Country",
'checked' =>
'0',
'position' => 70),
286 'typent.code' => array(
'label' =>
"ThirdPartyType",
'checked' => $checkedtypetiers,
'position' => 75),
287 'f.fk_mode_reglement' => array(
'label' =>
"PaymentMode",
'checked' =>
'1',
'position' => 80),
288 'f.fk_cond_reglement' => array(
'label' =>
"PaymentConditionsShort",
'checked' =>
'0',
'position' => 85),
289 'ba.label' => array(
'label' =>
"DefaultBankAccount",
'langfile' =>
'banks',
'checked' =>
'0',
'enabled' => (
isModEnabled(
'bank') ?
'1' :
'0'),
'position' => 192),
290 'f.fk_input_reason' => array(
'label' =>
"Source",
'checked' => 0,
'enabled' => 1,
'position' => 88),
291 'f.module_source' => array(
'label' =>
"POSModule",
'langfile' =>
'cashdesk',
'checked' => ($contextpage ==
'poslist' ?
'1' :
'0'),
'enabled' => $showpos,
'position' => 90),
292 'f.pos_source' => array(
'label' =>
"POSTerminal",
'langfile' =>
'cashdesk',
'checked' => ($contextpage ==
'poslist' ?
'1' :
'0'),
'enabled' => $showpos,
'position' => 91),
293 'f.total_ht' => array(
'label' =>
"AmountHT",
'checked' =>
'1',
'position' => 95),
294 'f.total_tva' => array(
'label' =>
"AmountVAT",
'checked' =>
'0',
'position' => 100),
295 'f.total_localtax1' => array(
'label' => $langs->transcountry(
"AmountLT1",
$mysoc->country_code),
'checked' =>
'0',
'enabled' => (
$mysoc->localtax1_assuj ==
"1"),
'position' => 110),
296 'f.total_localtax2' => array(
'label' => $langs->transcountry(
"AmountLT2",
$mysoc->country_code),
'checked' =>
'0',
'enabled' => (
$mysoc->localtax2_assuj ==
"1"),
'position' => 120),
297 'f.total_ttc' => array(
'label' =>
"AmountTTC",
'checked' =>
'0',
'position' => 130),
298 'dynamount_payed' => array(
'label' =>
"AlreadyPaid",
'checked' =>
'0',
'position' => 140),
299 'rtp' => array(
'label' =>
"RemainderToPay",
'checked' =>
'0',
'position' => 150),
300 'f.multicurrency_code' => array(
'label' =>
'Currency',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
'multicurrency') ?
'0' :
'1'),
'position' => 280),
301 'f.multicurrency_tx' => array(
'label' =>
'CurrencyRate',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
'multicurrency') ?
'0' :
'1'),
'position' => 285),
302 'f.multicurrency_total_ht' => array(
'label' =>
'MulticurrencyAmountHT',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
'multicurrency') ?
'0' :
'1'),
'position' => 290),
303 'f.multicurrency_total_vat' => array(
'label' =>
'MulticurrencyAmountVAT',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
'multicurrency') ?
'0' :
'1'),
'position' => 291),
304 'f.multicurrency_total_ttc' => array(
'label' =>
'MulticurrencyAmountTTC',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
'multicurrency') ?
'0' :
'1'),
'position' => 292),
305 'multicurrency_dynamount_payed' => array(
'label' =>
'MulticurrencyAlreadyPaid',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
'multicurrency') ?
'0' :
'1'),
'position' => 295),
306 'multicurrency_rtp' => array(
'label' =>
'MulticurrencyRemainderToPay',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
'multicurrency') ?
'0' :
'1'),
'position' => 296),
307 'total_pa' => array(
'label' => ((
getDolGlobalString(
'MARGIN_TYPE') ==
'1') ?
'BuyingPrice' :
'CostPrice'),
'checked' =>
'0',
'position' => 300,
'enabled' => (!
isModEnabled(
'margin') || !$user->hasRight(
'margins',
'liretous') ?
'0' :
'1')),
308 'total_margin' => array(
'label' =>
'Margin',
'langfile' =>
'margins',
'checked' =>
'0',
'position' => 301,
'enabled' => (!
isModEnabled(
'margin') || !$user->hasRight(
'margins',
'liretous') ?
'0' :
'1')),
309 'total_margin_rate' => array(
'label' =>
'MarginRate',
'langfile' =>
'margins',
'checked' =>
'0',
'position' => 302,
'enabled' => (!
isModEnabled(
'margin') || !$user->hasRight(
'margins',
'liretous') || !
getDolGlobalString(
'DISPLAY_MARGIN_RATES') ?
'0' :
'1')),
310 'total_mark_rate' => array(
'label' =>
'MarkRate',
'langfile' =>
'margins',
'checked' =>
'0',
'position' => 303,
'enabled' => (!
isModEnabled(
'margin') || !$user->hasRight(
'margins',
'liretous') || !
getDolGlobalString(
'DISPLAY_MARK_RATES') ?
'0' :
'1')),
311 'f.datec' => array(
'label' =>
"DateCreation",
'checked' =>
'0',
'position' => 500),
312 'f.tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModificationShort',
'enabled' =>
'1',
'visible' => -1,
'notnull' => 1,
'position' => 502),
313 'u.login' => array(
'label' =>
"UserAuthor",
'checked' =>
'0',
'visible' => -1,
'position' => 504),
314 'sale_representative' => array(
'label' =>
"SaleRepresentativesOfThirdParty",
'checked' =>
'0',
'position' => 506),
319 'f.note_public' => array(
'label' =>
'NotePublic',
'checked' =>
'0',
'position' => 520,
'enabled' => (!
getDolGlobalInt(
'MAIN_LIST_HIDE_PUBLIC_NOTES'))),
320 'f.note_private' => array(
'label' =>
'NotePrivate',
'checked' =>
'0',
'position' => 521,
'enabled' => (!
getDolGlobalInt(
'MAIN_LIST_HIDE_PRIVATE_NOTES'))),
321 'f.fk_fac_rec_source' => array(
'label' =>
'GeneratedFromTemplate',
'checked' =>
'0',
'position' => 530,
'enabled' =>
'1'),
322 'f.import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' =>
'1',
'visible' => -2,
'position' => 990),
323 'f.dispute_status' => array(
'label' =>
"DisputeStatus",
'checked' =>
'-1',
'position' => 999),
324 'f.fk_statut' => array(
'label' =>
"Status",
'checked' =>
'1',
'position' => 1000),
328 $arrayfields[
'f.retained_warranty'] = array(
'label' => $langs->trans(
"RetainedWarranty"),
'checked' =>
'0',
'position' => 86);
331$subtypearray =
$object->getArrayOfInvoiceSubtypes(0);
332if (empty($subtypearray)) {
333 unset($arrayfields[
'f.subtype']);
337foreach (
$object->fields as $key => $val) {
340 if (!empty($val[
'visible'])) {
341 $visible = (int)
dol_eval((
string) $val[
'visible'], 1, 1,
'1');
343 if (array_key_exists($key, $arrayfields)) {
345 } elseif (array_key_exists(
'f.'.$key, $arrayfields)) {
347 } elseif (array_key_exists(
's.'.$key, $arrayfields)) {
351 $arrayfields[$newkey] = array(
352 'label' => $val[
'label'],
353 'checked' => (($visible < 0) ?
'0' :
'1'),
354 'enabled' => (string) (int) (abs($visible) != 3 && (bool)
dol_eval((string) $val[
'enabled'], 1)),
355 'position' => $val[
'position'],
356 'help' => empty($val[
'help']) ?
'' : $val[
'help'],
362include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
364$parameters = array(
'arrayfields' => &$arrayfields);
365$reshook = $hookmanager->executeHooks(
'completeArrayFields', $parameters, $object, $action);
368if ($contextpage ==
'poslist') {
369 $arrayfields[
"f.module_source"][
'checked'] = 1;
370 $arrayfields[
"f.pos_source"][
'checked'] = 1;
371 $arrayfields[
"f.date_lim_reglement"][
'checked'] = 0;
372 $arrayfields[
"f.total_ttc"][
'checked'] = 1;
373 $arrayfields[
"f.tms"][
'checked'] = 1;
374 $arrayfields[
"p.ref"][
'checked'] = 0;
382if (empty($user->socid) && !$user->hasRight(
'societe',
'client',
'voir')) {
383 $search_sale = $user->id;
387$fieldid = (!empty($ref) ?
'ref' :
'rowid');
388if (!empty($user->socid)) {
389 $socid = $user->socid;
391if (empty($user->socid) && !$user->hasRight(
'societe',
'client',
'voir')) {
392 $search_sale = $user->id;
402if (
GETPOST(
'cancel',
'alpha')) {
406if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') {
411$parameters = array(
'socid' => $socid,
'arrayfields' => &$arrayfields);
412$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
414 setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
418include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
421if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha')) {
424 $search_product_category =
'';
425 $searchCategoryInvoiceList = array();
427 $search_refcustomer =
'';
429 $search_subtype =
'';
430 $search_project_ref =
'';
431 $search_project =
'';
432 $search_company =
'';
433 $search_company_alias =
'';
434 $search_parent_name =
'';
435 $search_montant_ht =
'';
436 $search_montant_vat =
'';
437 $search_montant_localtax1 =
'';
438 $search_montant_localtax2 =
'';
439 $search_montant_ttc =
'';
441 $search_multicurrency_code =
'';
442 $search_multicurrency_tx =
'';
443 $search_multicurrency_montant_ht =
'';
444 $search_multicurrency_montant_vat =
'';
445 $search_multicurrency_montant_ttc =
'';
446 $search_dispute_status =
'';
448 $search_paymentmode =
'';
449 $search_paymentterms =
'';
450 $search_bankaccount =
'';
451 $search_fk_input_reason =
'';
452 $search_module_source =
'';
453 $search_pos_source =
'';
457 $search_country =
'';
458 $search_type_thirdparty =
'';
459 $search_customer_code =
'';
460 $search_date_startday =
'';
461 $search_date_startmonth =
'';
462 $search_date_startyear =
'';
463 $search_date_endday =
'';
464 $search_date_endmonth =
'';
465 $search_date_endyear =
'';
466 $search_date_start =
'';
467 $search_date_end =
'';
468 $search_date_valid_startday =
'';
469 $search_date_valid_startmonth =
'';
470 $search_date_valid_startyear =
'';
471 $search_date_valid_endday =
'';
472 $search_date_valid_endmonth =
'';
473 $search_date_valid_endyear =
'';
474 $search_date_valid_start =
'';
475 $search_date_valid_end =
'';
476 $search_datelimit_startday =
'';
477 $search_datelimit_startmonth =
'';
478 $search_datelimit_startyear =
'';
479 $search_datelimit_endday =
'';
480 $search_datelimit_endmonth =
'';
481 $search_datelimit_endyear =
'';
482 $search_datelimit_start =
'';
483 $search_datelimit_end =
'';
485 $search_datec_start =
'';
486 $search_datec_end =
'';
488 $search_datem_start =
'';
489 $search_datem_end =
'';
491 $search_fac_rec_source_title =
'';
493 $search_import_key =
'';
494 $search_categ_cus = 0;
498 $search_array_options = array();
501if (empty($reshook)) {
502 $objectclass =
'Facture';
503 $objectlabel =
'Invoices';
504 $permissiontoread = $user->hasRight(
"facture",
"lire");
505 $permissiontoadd = $user->hasRight(
"facture",
"creer");
506 $permissiontodelete = $user->hasRight(
"facture",
"supprimer");
507 $uploaddir =
$conf->invoice->dir_output;
508 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
511if ($action ==
'makepayment_confirm' && $user->hasRight(
'facture',
'paiement')) {
512 require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
513 $arrayofselected = is_array($toselect) ? $toselect : array();
514 if (!empty($arrayofselected)) {
517 $note_private =
GETPOST(
'note_private',
'restricthtml');
519 if (empty($paiementdate)) {
520 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Date")),
null,
'errors');
522 $action =
'makepayment';
526 foreach ($arrayofselected as $toselectid) {
529 $result = $facture->fetch($toselectid);
534 setEventMessage($facture->error,
'errors');
539 $sommePaiement = $facture->getSommePaiement(-1);
540 $paiementAmount = $sommePaiement[
'alreadypaid'];
542 $totalcreditnotes = $facture->getSumCreditNotesUsed();
543 $totaldeposits = $facture->getSumDepositsUsed();
545 $totalallpayments = $paiementAmount + $totalcreditnotes + $totaldeposits;
546 $remaintopay = (float)
price2num($facture->total_ttc - $totalallpayments);
549 $multicurrency_remaintopay = (float)
price2num($facture->multicurrency_total_ttc - $sommePaiement[
'alreadypaid_multicurrency']);
552 $parameters = array(
'remaintopay' => $remaintopay,
'multicurrency_remaintopay' => $multicurrency_remaintopay);
553 $reshook = $hookmanager->executeHooks(
'finalizeAmountOfInvoice', $parameters, $facture, $action);
555 if (!empty($remain = (
float) $hookmanager->resArray[
'remaintopay'])) {
556 $remaintopay = $remain;
558 if (!empty($multicurrency_remain = $hookmanager->resArray[
'multicurrency_remaintopay'])) {
559 $multicurrency_remaintopay = $multicurrency_remain;
561 } elseif ($reshook < 0) {
563 setEventMessages($facture->ref.
' '.$langs->trans(
"ProcessingError"), $hookmanager->errors,
'errors');
566 if ($remaintopay != 0) {
567 $resultBank = $facture->setBankAccount($bankid);
568 if ($resultBank < 0) {
569 setEventMessages($facture->error,
null,
'errors');
573 $paiement->datepaye = $paiementdate;
574 $paiement->amounts[$facture->id] = $remaintopay;
575 $paiement->multicurrency_amounts[$facture->id] = (float) $multicurrency_remaintopay;
576 $paiement->paiementid = $paiementid;
577 $paiement->note_private = $note_private;
578 $paiement_id = $paiement->create($user, 1, $facture->thirdparty);
579 if ($paiement_id < 0) {
580 $langs->load(
"errors");
581 setEventMessages($facture->ref.
' '.$langs->trans($paiement->error), $paiement->errors,
'errors');
584 $result = $paiement->addPaymentToBank($user,
'payment',
'', $bankid,
'',
'');
586 $langs->load(
"errors");
587 setEventMessages($facture->ref.
' '.$langs->trans($paiement->error), $paiement->errors,
'errors');
593 setEventMessage($langs->trans(
'NoPaymentAvailable', $facture->ref),
'warnings');
597 setEventMessage($langs->trans(
'BulkPaymentNotPossibleForInvoice', $facture->ref),
'warnings');
602 if (empty($errorpayment)) {
603 setEventMessage($langs->trans(
'PaymentRegisteredAndInvoiceSetToPaid', $facture->ref));
611} elseif ($massaction ==
'withdrawrequest') {
612 $langs->load(
"withdrawals");
614 if (!$user->hasRight(
'prelevement',
'bons',
'creer')) {
616 setEventMessages($langs->trans(
"NotEnoughPermissions"),
null,
'errors');
621 $arrayofselected = is_array($toselect) ? $toselect : array();
622 $listofbills = array();
623 foreach ($arrayofselected as $toselectid) {
625 $result = $objecttmp->fetch($toselectid);
627 $totalpaid = $objecttmp->getSommePaiement();
628 $totalcreditnotes = $objecttmp->getSumCreditNotesUsed();
629 $totaldeposits = $objecttmp->getSumDepositsUsed();
630 $objecttmp->resteapayer =
price2num($objecttmp->total_ttc - $totalpaid - $totalcreditnotes - $totaldeposits,
'MT');
633 $parameters = array(
'remaintopay' => $objecttmp->resteapayer);
634 $reshook = $hookmanager->executeHooks(
'finalizeAmountOfInvoice', $parameters, $objecttmp, $action);
636 if (!empty($remaintopay = $hookmanager->resArray[
'remaintopay'])) {
637 $objecttmp->resteapayer = $remaintopay;
639 } elseif ($reshook < 0) {
641 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"ProcessingError"), $hookmanager->errors,
'errors');
646 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"Draft"), $objecttmp->errors,
'errors');
647 } elseif ($objecttmp->paye || $objecttmp->resteapayer == 0) {
649 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"AlreadyPaid"), $objecttmp->errors,
'errors');
650 } elseif ($objecttmp->resteapayer < 0) {
652 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"AmountMustBePositive"), $objecttmp->errors,
'errors');
655 $rsql =
"SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande";
656 $rsql .=
" , pfd.date_traite as date_traite";
657 $rsql .=
" , pfd.amount";
658 $rsql .=
" , u.rowid as user_id, u.lastname, u.firstname, u.login";
659 $rsql .=
" FROM ".MAIN_DB_PREFIX.
"prelevement_demande as pfd";
660 $rsql .=
" , ".MAIN_DB_PREFIX.
"user as u";
661 $rsql .=
" WHERE fk_facture = ".((int) $objecttmp->id);
662 $rsql .=
" AND pfd.fk_user_demande = u.rowid";
663 $rsql .=
" AND pfd.traite = 0";
664 $rsql .=
" ORDER BY pfd.date_demande DESC";
667 $result_sql = $db->query($rsql);
669 $numprlv = $db->num_rows($result_sql);
674 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"RequestAlreadyDone"), $objecttmp->errors,
'warnings');
675 } elseif (!empty($objecttmp->mode_reglement_code) && $objecttmp->mode_reglement_code !=
'PRE') {
676 $langs->load(
"errors");
678 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"ErrorThisPaymentModeIsNotDirectDebit"), $objecttmp->errors,
'errors');
680 $listofbills[] = $objecttmp;
686 if (!empty($listofbills)) {
687 $nbwithdrawrequestok = 0;
688 foreach ($listofbills as $aBill) {
695 $sql =
"SELECT SUM(pfd.amount) as amount";
696 $sql .=
" FROM ".MAIN_DB_PREFIX.
"prelevement_demande as pfd";
700 $sql .=
" WHERE pfd.fk_facture = ".((int) $aBill->id);
702 $sql .=
" AND pfd.traite = 0";
704 $resql = $db->query($sql);
706 $obj = $db->fetch_object($resql);
708 $pending += (float) $obj->amount;
711 dol_print_error($db);
714 $sqlPending =
"SELECT SUM(pl.amount) as amount";
715 $sqlPending .=
" FROM ".$db->prefix().
"prelevement_lignes as pl";
716 $sqlPending .=
" INNER JOIN ".$db->prefix().
"prelevement as p ON p.fk_prelevement_lignes = pl.rowid";
720 $sqlPending .=
" WHERE p.fk_facture = ".((int) $aBill->id);
722 $sqlPending .=
" AND (pl.statut IS NULL OR pl.statut = 0)";
723 $resPending = $db->query($sqlPending);
725 if ($objPending = $db->fetch_object($resPending)) {
726 $pending += (float) $objPending->amount;
729 $db->free($resPending);
731 $requestAmount = $aBill->resteapayer - $pending;
734 $result = $aBill->demande_prelevement($user, $requestAmount,
'direct-debit',
'facture');
735 if ($requestAmount > 0) {
738 $nbwithdrawrequestok++;
741 setEventMessages($aBill->error, $aBill->errors,
'errors');
744 $aBill->error =
'WithdrawRequestErrorNilAmount';
745 $aBill->errors[] = $aBill->error;
746 setEventMessages($aBill->error, $aBill->errors,
'errors');
749 if ($nbwithdrawrequestok > 0) {
750 setEventMessages($langs->trans(
"WithdrawRequestsDone", $nbwithdrawrequestok),
null,
'mesgs');
762$form =
new Form($db);
766$facturestatic =
new Facture($db);
767$accountstatic =
new Account($db);
769$companystatic =
new Societe($db);
770$companyparent =
new Societe($db);
772$company_url_list = array();
777 if (empty($search_company)) {
778 $search_company = $soc->name;
784$title = $langs->trans(
'BillsCustomers').
' '.(($socid > 0 && $soc !==
null) ?
' - '.$soc->name :
'');
785$help_url =
'EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes';
787$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
788$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
793$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, ba.rowid as bid, ba.ref as bref, ba.label as blabel, ba.number as bnumber, ba.account_number as baccount_number, ba.fk_accountancy_journal as baccountancy_journal, f.total_ht, f.total_tva, f.total_ttc,';
794$sql .=
' f.localtax1 as total_localtax1, f.localtax2 as total_localtax2,';
795$sql .=
' f.fk_user_author,';
796$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,';
797$sql .=
' f.datef, f.date_valid, f.date_lim_reglement as datelimite,';
798$sql .=
" f.fk_input_reason,";
799$sql .=
" f.module_source, f.pos_source,";
800$sql .=
' f.paye as paye, f.fk_statut as status, f.import_key, f.close_code,';
801$sql .=
' f.datec as date_creation, f.tms as date_modification, f.date_closing as date_closing,';
802$sql .=
' f.retained_warranty, f.retained_warranty_date_limit, f.situation_final, f.situation_cycle_ref, f.situation_counter,';
803$sql .=
' f.payment_reference, f.dispute_status,';
804$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,';
805$sql .=
" s.parent as fk_parent,";
806$sql .=
" s2.nom as name2,";
807$sql .=
' typent.code as typent_code,';
808$sql .=
' state.code_departement as state_code, state.nom as state_name,';
809$sql .=
' country.code as country_code,';
810$sql .=
' f.fk_fac_rec_source,';
811$sql .=
' p.rowid as project_id, p.ref as project_ref, p.title as project_label,';
812$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';
822if (!empty($extrafields->attributes[
$object->table_element][
'label'])) {
823 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $val) {
824 $sql .= ($extrafields->attributes[
$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
828$parameters = array();
829$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters, $object, $action);
830$sql .= $hookmanager->resPrint;
831$sql = preg_replace(
'/,\s*$/',
'', $sql);
835$sql .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
836$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s2 ON s2.rowid = s.parent";
837$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as country on (country.rowid = s.fk_pays)";
838$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_typent as typent on (typent.id = s.fk_typent)";
839$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_departements as state on (state.rowid = s.fk_departement)";
840$sql .=
', '.MAIN_DB_PREFIX.
'facture as f';
842if ($sortfield ==
"f.datef") {
843 $hasAnotherfilter =
false;
844 foreach ($search_array_options as $v) {
845 if ($v !==
'' && (
string) $v !==
'-1') {
846 $hasAnotherfilter =
true;
850 if (!$hasAnotherfilter) {
851 $sql .= $db->hintindex(
'idx_facture_datef');
854if (isset($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
855 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element.
"_extrafields as ef on (f.rowid = ef.fk_object)";
857if (!empty($search_fac_rec_source_title)) {
858 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'facture_rec as facrec ON f.fk_fac_rec_source = facrec.rowid';
860$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"projet as p ON p.rowid = f.fk_projet";
861$sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'user AS u ON f.fk_user_author = u.rowid';
862$sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'bank_account as ba ON ba.rowid = f.fk_account';
864$parameters = array();
865$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters, $object, $action);
866$sql .= $hookmanager->resPrint;
868$sql .=
' WHERE f.fk_soc = s.rowid';
869$sql .=
' AND f.entity IN ('.getEntity(
'invoice').
')';
871 $sql .=
' AND s.rowid = '.((int) $socid);
875 $sql .=
' AND f.fk_user_author IS NULL';
877 $sql .=
' AND f.fk_user_author = '.((int) $userid);
883if ($search_refcustomer) {
886if ($search_type !=
'' && $search_type !=
'-1') {
887 $sql .=
" AND f.type IN (".$db->sanitize($db->escape($search_type)).
")";
889if ($search_subtype !=
'' && $search_subtype !=
'-1') {
890 $sql .=
" AND f.subtype IN (".$db->sanitize($db->escape($search_subtype)).
")";
892if ($search_project_ref) {
895if ($search_project) {
898if (empty($arrayfields[
's.name_alias'][
'checked']) && $search_company) {
899 $sql .=
natural_search(array(
"s.nom",
"s.name_alias"), $search_company);
901 if ($search_company) {
904 if ($search_company_alias) {
908if ($search_parent_name) {
911if ($search_customer_code) {
923if (strlen(trim($search_country))) {
925 $country_code_in_EEC = $country_code_in_EEC_without_me =
'';
926 foreach ($arrayofcode as $key => $value) {
927 $country_code_in_EEC .= ($country_code_in_EEC ?
"," :
"").
"'".$value.
"'";
928 if ($value !=
$mysoc->country_code) {
929 $country_code_in_EEC_without_me .= ($country_code_in_EEC_without_me ?
"," :
"").
"'".$value.
"'";
932 if ($search_country ==
'special_allnotme') {
933 $sql .=
" AND country.code <> '".$db->escape(
$mysoc->country_code).
"'";
934 } elseif ($search_country ==
'special_eec') {
935 $sql .=
" AND country.code IN (".$db->sanitize($country_code_in_EEC, 1).
")";
936 } elseif ($search_country ==
'special_eecnotme') {
937 $sql .=
" AND country.code IN (".$db->sanitize($country_code_in_EEC_without_me, 1).
")";
938 } elseif ($search_country ==
'special_noteec') {
939 $sql .=
" AND country.code NOT IN (".$db->sanitize($country_code_in_EEC, 1).
")";
944if ($search_type_thirdparty !=
'' && $search_type_thirdparty !=
'-1') {
945 $sql .=
" AND s.fk_typent IN (".$db->sanitize($db->escape($search_type_thirdparty)).
')';
947if ($search_montant_ht !=
'') {
950if ($search_montant_vat !=
'') {
953if ($search_montant_localtax1 !=
'') {
954 $sql .=
natural_search(
'f.localtax1', $search_montant_localtax1, 1);
956if ($search_montant_localtax2 !=
'') {
957 $sql .=
natural_search(
'f.localtax2', $search_montant_localtax2, 1);
959if ($search_montant_ttc !=
'') {
962if ($search_multicurrency_code !=
'') {
963 $sql .=
" AND f.multicurrency_code = '".$db->escape($search_multicurrency_code).
"'";
965if ($search_multicurrency_tx !=
'') {
966 $sql .=
natural_search(
'f.multicurrency_tx', $search_multicurrency_tx, 1);
968if ($search_multicurrency_montant_ht !=
'') {
969 $sql .=
natural_search(
'f.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
971if ($search_multicurrency_montant_vat !=
'') {
972 $sql .=
natural_search(
'f.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
974if ($search_multicurrency_montant_ttc !=
'') {
975 $sql .=
natural_search(
'f.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
978 $sql .=
natural_search(array(
'u.login',
'u.firstname',
'u.lastname'), $search_login);
980if ($search_dispute_status !=
'-1' && $search_dispute_status !=
'') {
981 if ($search_dispute_status ==
'0') {
982 $sql .=
" AND (f.dispute_status IS NULL OR f.dispute_status = 0)";
984 $sql .=
" AND f.dispute_status IN (".$db->sanitize($search_dispute_status).
")";
987if (is_array($search_status) && count($search_status) > 0) {
989 $search_statusArray = array_diff($search_status, [
'99']);
991 if (count($search_statusArray) > 0) {
992 $sqlstatus[] =
"f.fk_statut IN (" . $db->sanitize(implode(
',', array_map(
'intval', $search_statusArray))) .
")";
994 if (in_array(
'99', $search_status)) {
996 $sqlstatus[] =
"(f.fk_statut = ".Facture::STATUS_VALIDATED.
" AND EXISTS (SELECT pf.rowid FROM ".MAIN_DB_PREFIX.
"paiement_facture as pf WHERE pf.fk_facture = f.rowid))";
998 $sql .=
" AND (".implode(
" OR ", $sqlstatus).
")";
1001if ($search_paymentmode > 0) {
1002 $sql .=
" AND f.fk_mode_reglement = ".((int) $search_paymentmode);
1004if ($search_paymentterms > 0) {
1005 $sql .=
" AND f.fk_cond_reglement = ".((int) $search_paymentterms);
1007if ($search_bankaccount > 0) {
1008 $sql .=
" AND ba.rowid = ".((int) $search_bankaccount);
1010if ($search_fk_input_reason > 0) {
1011 $sql .=
" AND f.fk_input_reason = ".((int) $search_fk_input_reason);
1013if ($search_module_source) {
1014 $sql .=
natural_search(
"f.module_source", $search_module_source);
1016if ($search_pos_source) {
1019if ($search_date_start) {
1020 $sql .=
" AND f.datef >= '".$db->idate($search_date_start).
"'";
1022if ($search_date_end) {
1023 $sql .=
" AND f.datef <= '".$db->idate($search_date_end).
"'";
1025if ($search_date_valid_start) {
1026 $sql .=
" AND f.date_valid >= '".$db->idate($search_date_valid_start).
"'";
1028if ($search_date_valid_end) {
1029 $sql .=
" AND f.date_valid <= '".$db->idate($search_date_valid_end).
"'";
1031if ($search_datelimit_start) {
1032 $sql .=
" AND f.date_lim_reglement >= '".$db->idate($search_datelimit_start).
"'";
1034if ($search_datelimit_end) {
1035 $sql .=
" AND f.date_lim_reglement <= '".$db->idate($search_datelimit_end).
"'";
1037if ($search_note_public) {
1038 $sql .=
" AND f.note_public LIKE '%".$db->escape($db->escapeforlike($search_note_public)).
"%'";
1040if ($search_note_private) {
1041 $sql .=
" AND f.note_private LIKE '%".$db->escape($db->escapeforlike($search_note_private)).
"%'";
1043if ($search_datec_start) {
1044 $sql .=
" AND f.datec >= '".$db->idate($search_datec_start).
"'";
1046if ($search_datec_end) {
1047 $sql .=
" AND f.datec <= '".$db->idate($search_datec_end).
"'";
1049if ($search_datem_start) {
1050 $sql .=
" AND f.tms >= '".$db->idate($search_datem_start).
"'";
1052if ($search_datem_end) {
1053 $sql .=
" AND f.tms <= '".$db->idate($search_datem_end).
"'";
1055if ($search_option ==
'late') {
1056 $sql .=
" AND f.date_lim_reglement < '".$db->idate(
dol_now() -
$conf->invoice->client->warning_delay).
"'";
1061if (!empty($search_fac_rec_source_title)) {
1062 $sql .=
natural_search(
'facrec.titre', $search_fac_rec_source_title);
1064if ($search_fk_fac_rec_source) {
1065 $sql .=
' AND f.fk_fac_rec_source = ' . (int) $search_fk_fac_rec_source;
1067if ($search_import_key) {
1071if ($search_user > 0) {
1072 $sql .=
" AND EXISTS (";
1073 $sql .=
" SELECT ec.fk_c_type_contact, ec.element_id, ec.fk_socpeople";
1074 $sql .=
" FROM ".MAIN_DB_PREFIX.
"element_contact as ec";
1075 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"c_type_contact as tc";
1076 $sql .=
" ON ec.fk_c_type_contact = tc.rowid AND tc.element = 'facture' AND tc.source = 'internal'";
1077 $sql .=
" WHERE ec.element_id = f.rowid AND ec.fk_socpeople = ".((int) $search_user).
")";
1080if ($search_sale && $search_sale !=
'-1') {
1081 if ($search_sale == -2) {
1082 $sql .=
" AND ".getSalesRepresentativeSqlFilter(
'f.fk_soc', 0, 1);
1083 } elseif ($search_sale > 0) {
1084 $sql .=
" AND ".getSalesRepresentativeSqlFilter(
'f.fk_soc', (
int) $search_sale);
1089if (!empty($searchCategoryInvoiceList)) {
1090 $searchCategoryInvoiceSqlList = array();
1091 $listofcategoryid =
'';
1092 foreach ($searchCategoryInvoiceList as $searchCategoryInvoice) {
1093 if (intval($searchCategoryInvoice) == -2) {
1094 $searchCategoryInvoiceSqlList[] =
"NOT EXISTS (SELECT ck.fk_invoice FROM ".MAIN_DB_PREFIX.
"categorie_invoice as ck WHERE f.rowid = ck.fk_invoice)";
1095 } elseif (intval($searchCategoryInvoice) > 0) {
1096 if ($searchCategoryInvoiceOperator == 0) {
1097 $searchCategoryInvoiceSqlList[] =
" EXISTS (SELECT ck.fk_invoice FROM ".MAIN_DB_PREFIX.
"categorie_invoice as ck WHERE f.rowid = ck.fk_invoice AND ck.fk_categorie = ".((int) $searchCategoryInvoice).
")";
1099 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryInvoice);
1103 if ($listofcategoryid) {
1104 $searchCategoryInvoiceSqlList[] =
" EXISTS (SELECT ck.fk_invoice FROM ".MAIN_DB_PREFIX.
"categorie_invoice as ck WHERE f.rowid = ck.fk_invoice AND ck.fk_categorie IN (".$db->sanitize($listofcategoryid).
"))";
1106 if ($searchCategoryInvoiceOperator == 1) {
1107 if (!empty($searchCategoryInvoiceSqlList)) {
1108 $sql .=
" AND (".implode(
' OR ', $searchCategoryInvoiceSqlList).
")";
1111 if (!empty($searchCategoryInvoiceSqlList)) {
1112 $sql .=
" AND (".implode(
' AND ', $searchCategoryInvoiceSqlList).
")";
1118$searchCategoryProductList = $search_product_category ? array($search_product_category) : array();
1119$searchCategoryProductOperator = 0;
1120if (!empty($searchCategoryProductList)) {
1121 $searchCategoryProductSqlList = array();
1122 $listofcategoryid =
'';
1123 foreach ($searchCategoryProductList as $searchCategoryProduct) {
1124 if (intval($searchCategoryProduct) == -2) {
1125 $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)";
1126 } elseif (intval($searchCategoryProduct) > 0) {
1127 if ($searchCategoryProductOperator == 0) {
1128 $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).
")";
1130 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryProduct);
1134 if ($listofcategoryid) {
1135 $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).
"))";
1137 if ($searchCategoryProductOperator == 1) {
1138 if (!empty($searchCategoryProductSqlList)) {
1139 $sql .=
" AND (".implode(
' OR ', $searchCategoryProductSqlList).
")";
1142 if (!empty($searchCategoryProductSqlList)) {
1143 $sql .=
" AND (".implode(
' AND ', $searchCategoryProductSqlList).
")";
1147$searchCategoryCustomerList = $search_categ_cus ? array($search_categ_cus) : array();
1148$searchCategoryCustomerOperator = 0;
1150if (!empty($searchCategoryCustomerList)) {
1151 $searchCategoryCustomerSqlList = array();
1152 $listofcategoryid =
'';
1153 foreach ($searchCategoryCustomerList as $searchCategoryCustomer) {
1154 if (intval($searchCategoryCustomer) == -2) {
1155 $searchCategoryCustomerSqlList[] =
"NOT EXISTS (SELECT ck.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as ck WHERE s.rowid = ck.fk_soc)";
1156 } elseif (intval($searchCategoryCustomer) > 0) {
1157 if ($searchCategoryCustomerOperator == 0) {
1158 $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).
")";
1160 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryCustomer);
1164 if ($listofcategoryid) {
1165 $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).
"))";
1167 if ($searchCategoryCustomerOperator == 1) {
1168 if (!empty($searchCategoryCustomerSqlList)) {
1169 $sql .=
" AND (".implode(
' OR ', $searchCategoryCustomerSqlList).
")";
1172 if (!empty($searchCategoryCustomerSqlList)) {
1173 $sql .=
" AND (".implode(
' AND ', $searchCategoryCustomerSqlList).
")";
1178include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
1180$parameters = array();
1181$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action);
1182$sql .= $hookmanager->resPrint;
1187 $fieldstosearchallwithoutpd = array();
1188 $fieldstosearchallwithpd = array();
1189 foreach ($fieldstosearchall as $key => $val) {
1190 if (!preg_match(
'/^pd\./', $key)) {
1191 $fieldstosearchallwithoutpd[$key] = $val;
1193 $fieldstosearchallwithpd[$key] = $val;
1197 if (count($fieldstosearchallwithpd) > 0) {
1198 $sqltoadd .=
" OR EXISTS (SELECT pd.rowid FROM ".MAIN_DB_PREFIX.
"facturedet as pd WHERE pd.fk_facture = f.rowid";
1199 $sqltoadd .=
natural_search(array_keys($fieldstosearchallwithpd),
'__KEYTOSEARCH__');
1203 $sql .=
natural_search(array_keys($fieldstosearchallwithoutpd), $search_all, 0, 0, $sqltoadd);
1206$parameters = array();
1207$reshook = $hookmanager->executeHooks(
'printFieldListHaving', $parameters, $object, $action);
1208if (empty($reshook)) {
1209 $sql .= empty($hookmanager->resPrint) ?
"" :
" HAVING 1=1 ".$hookmanager->resPrint;
1211 $sql = $hookmanager->resPrint;
1215$nbtotalofrecords =
'';
1218 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
1219 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
1221 $resql = $db->query($sqlforcount);
1223 $objforcount = $db->fetch_object($resql);
1224 $nbtotalofrecords = $objforcount->nbtotalofrecords;
1226 dol_print_error($db);
1229 if (($page * $limit) > (
int) $nbtotalofrecords) {
1237$sql .= $db->order($sortfield, $sortorder);
1239 $sql .= $db->plimit($limit + 1, $offset);
1242$resql = $db->query($sql);
1244 dol_print_error($db);
1248$num = $db->num_rows($resql);
1250$arrayofselected = is_array($toselect) ? $toselect : array();
1252if ($num == 1 &&
getDolGlobalString(
'MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all) {
1253 $obj = $db->fetch_object($resql);
1256 header(
"Location: ".DOL_URL_ROOT.
'/compta/facture/card.php?id='.
$id);
1263llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'bodyforlist'.($contextpage ==
'poslist' ?
' '.$contextpage :
''));
1266if ($search_fk_fac_rec_source) {
1268 $object->fetch((
int) $search_fk_fac_rec_source);
1277 $param .=
'&mode='.urlencode($mode);
1279if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
1280 $param .=
'&contextpage='.urlencode($contextpage);
1282if ($limit > 0 && $limit !=
$conf->liste_limit) {
1283 $param .=
'&limit='.((int) $limit);
1285if ($optioncss !=
'') {
1286 $param .=
'&optioncss='.urlencode($optioncss);
1289 $param .=
'&show_files='.urlencode((
string) ($show_files));
1292 $param .=
'&search_all='.urlencode($search_all);
1295 $param .=
'&socid='.((int) $socid);
1297if ($search_date_startday) {
1298 $param .=
'&search_date_startday='.urlencode((
string) ($search_date_startday));
1300if ($search_date_startmonth) {
1301 $param .=
'&search_date_startmonth='.urlencode((
string) ($search_date_startmonth));
1303if ($search_date_startyear) {
1304 $param .=
'&search_date_startyear='.urlencode((
string) ($search_date_startyear));
1306if ($search_date_endday) {
1307 $param .=
'&search_date_endday='.urlencode((
string) ($search_date_endday));
1309if ($search_date_endmonth) {
1310 $param .=
'&search_date_endmonth='.urlencode((
string) ($search_date_endmonth));
1312if ($search_date_endyear) {
1313 $param .=
'&search_date_endyear='.urlencode((
string) ($search_date_endyear));
1315if ($search_date_valid_startday) {
1316 $param .=
'&search_date_valid_startday='.urlencode((
string) ($search_date_valid_startday));
1318if ($search_date_valid_startmonth) {
1319 $param .=
'&search_date_valid_startmonth='.urlencode((
string) ($search_date_valid_startmonth));
1321if ($search_date_valid_startyear) {
1322 $param .=
'&search_date_valid_startyear='.urlencode((
string) ($search_date_valid_startyear));
1324if ($search_date_valid_endday) {
1325 $param .=
'&search_date_valid_endday='.urlencode((
string) ($search_date_valid_endday));
1327if ($search_date_valid_endmonth) {
1328 $param .=
'&search_date_valid_endmonth='.urlencode((
string) ($search_date_valid_endmonth));
1330if ($search_date_valid_endyear) {
1331 $param .=
'&search_date_valid_endyear='.urlencode((
string) ($search_date_valid_endyear));
1333if ($search_datelimit_startday) {
1334 $param .=
'&search_datelimit_startday='.urlencode((
string) ($search_datelimit_startday));
1336if ($search_datelimit_startmonth) {
1337 $param .=
'&search_datelimit_startmonth='.urlencode((
string) ($search_datelimit_startmonth));
1339if ($search_datelimit_startyear) {
1340 $param .=
'&search_datelimit_startyear='.urlencode((
string) ($search_datelimit_startyear));
1342if ($search_datelimit_endday) {
1343 $param .=
'&search_datelimit_endday='.urlencode((
string) ($search_datelimit_endday));
1345if ($search_datelimit_endmonth) {
1346 $param .=
'&search_datelimit_endmonth='.urlencode((
string) ($search_datelimit_endmonth));
1348if ($search_datelimit_endyear) {
1349 $param .=
'&search_datelimit_endyear='.urlencode((
string) ($search_datelimit_endyear));
1352 $param .=
'&search_ref='.urlencode($search_ref);
1354if ($search_refcustomer) {
1355 $param .=
'&search_refcustomer='.urlencode($search_refcustomer);
1357if ($search_project_ref) {
1358 $param .=
'&search_project_ref='.urlencode($search_project_ref);
1360if ($search_project) {
1361 $param .=
'&search_project='.urlencode($search_project);
1363if ($search_type !=
'') {
1364 $param .=
'&search_type='.urlencode($search_type);
1366if ($search_subtype !=
'') {
1367 $param .=
'&search_subtype='.urlencode($search_subtype);
1369if ($search_company) {
1370 $param .=
'&search_company='.urlencode($search_company);
1372if ($search_company_alias) {
1373 $param .=
'&search_company_alias='.urlencode($search_company_alias);
1375if ($search_parent_name !=
'') {
1376 $param .=
'&search_parent_name='.urlencode($search_parent_name);
1379 $param .=
'&search_town='.urlencode($search_town);
1382 $param .=
'&search_zip='.urlencode($search_zip);
1384if ($search_country) {
1385 $param .=
"&search_country=".urlencode($search_country);
1387if ($search_type_thirdparty !=
'') {
1388 $param .=
'&search_type_thirdparty='.urlencode($search_type_thirdparty);
1390if ($search_customer_code) {
1391 $param .=
'&search_customer_code='.urlencode($search_customer_code);
1393if ($search_sale > 0) {
1394 $param .=
'&search_sale='.urlencode((
string) $search_sale);
1396if ($search_user > 0) {
1397 $param .=
'&search_user='.urlencode((
string) $search_user);
1400 $param .=
'&search_login='.urlencode($search_login);
1402if ($searchCategoryInvoiceOperator == 1) {
1403 $param .=
"&search_category_invoice_operator=".urlencode((
string) ($searchCategoryInvoiceOperator));
1405foreach ($searchCategoryInvoiceList as $searchCategoryInvoice) {
1406 $param .=
"&search_category_invoice_list[]=".urlencode($searchCategoryInvoice);
1408if ($search_product_category > 0) {
1409 $param .=
'&search_product_category='.urlencode((
string) $search_product_category);
1411if ($search_montant_ht !=
'') {
1412 $param .=
'&search_montant_ht='.urlencode($search_montant_ht);
1414if ($search_montant_vat !=
'') {
1415 $param .=
'&search_montant_vat='.urlencode($search_montant_vat);
1417if ($search_montant_localtax1 !=
'') {
1418 $param .=
'&search_montant_localtax1='.urlencode($search_montant_localtax1);
1420if ($search_montant_localtax2 !=
'') {
1421 $param .=
'&search_montant_localtax2='.urlencode($search_montant_localtax2);
1423if ($search_montant_ttc !=
'') {
1424 $param .=
'&search_montant_ttc='.urlencode($search_montant_ttc);
1426if ($search_multicurrency_code !=
'') {
1427 $param .=
'&search_multicurrency_code='.urlencode($search_multicurrency_code);
1429if ($search_multicurrency_tx !=
'') {
1430 $param .=
'&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
1432if ($search_multicurrency_montant_ht !=
'') {
1433 $param .=
'&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
1435if ($search_multicurrency_montant_vat !=
'') {
1436 $param .=
'&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
1438if ($search_multicurrency_montant_ttc !=
'') {
1439 $param .=
'&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
1441if ($search_dispute_status !=
'') {
1442 $param .=
'&search_dispute_status='.urlencode($search_dispute_status);
1444if (count($search_status) > 0) {
1445 foreach ($search_status as $key => $val) {
1446 $param .=
'&search_status[]='.urlencode($val);
1449if ($search_paymentmode > 0) {
1450 $param .=
'&search_paymentmode='.urlencode((
string) ($search_paymentmode));
1452if ($search_paymentterms > 0) {
1453 $param .=
'&search_paymentterms='.urlencode((
string) ($search_paymentterms));
1455if ($search_bankaccount > 0) {
1456 $param .=
'&search_bankaccount='.urlencode((
string) ($search_bankaccount));
1458if ($search_fk_input_reason > 0) {
1459 $param .=
'&search_fk_input_reason='.urlencode((
string) $search_fk_input_reason);
1461if ($search_module_source) {
1462 $param .=
'&search_module_source='.urlencode($search_module_source);
1464if ($search_pos_source) {
1465 $param .=
'&search_pos_source='.urlencode($search_pos_source);
1467if ($search_option) {
1468 $param .=
"&search_option=".urlencode($search_option);
1470if ($search_categ_cus > 0) {
1471 $param .=
'&search_categ_cus='.urlencode((
string) ($search_categ_cus));
1473if (!empty($search_fac_rec_source_title)) {
1474 $param .=
'&search_fac_rec_source_title='.urlencode($search_fac_rec_source_title);
1476if ($search_fk_fac_rec_source) {
1477 $param .=
'&search_fk_fac_rec_source=' . (int) $search_fk_fac_rec_source;
1479if ($search_import_key !=
'') {
1480 $param .=
'&search_import_key='.urlencode($search_import_key);
1484include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
1486$parameters = array(
'param' => &$param);
1487$reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters, $object, $action);
1488$param .= $hookmanager->resPrint;
1490$arrayofmassactions = array(
1491 'validate' => img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"Validate"),
1492 'generate_doc' => img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"ReGeneratePDF"),
1493 'builddoc' => img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"PDFMerge"),
1494 'presend' => img_picto(
'',
'email',
'class="pictofixedwidth"').$langs->trans(
"SendByMail"),
1497if (
isModEnabled(
'category') && $user->hasRight(
'facture',
'creer')) {
1498 $arrayofmassactions[
'preaffecttag'] = img_picto(
'',
'category',
'class="pictofixedwidth"').$langs->trans(
"AffectTag");
1500if ($user->hasRight(
'facture',
'paiement')) {
1501 $arrayofmassactions[
'makepayment'] = img_picto(
'',
'payment',
'class="pictofixedwidth"').$langs->trans(
"MakePaymentAndClassifyPayed");
1503if (
isModEnabled(
'prelevement') && $user->hasRight(
'prelevement',
'bons',
'creer')) {
1504 $langs->load(
"withdrawals");
1505 $arrayofmassactions[
'withdrawrequest'] = img_picto(
'',
'payment',
'class="pictofixedwidth"').$langs->trans(
"MakeWithdrawRequest");
1507if ($user->hasRight(
'facture',
'supprimer')) {
1509 $arrayofmassactions[
'predeletedraft'] = img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Deletedraft");
1512if ($user->hasRight(
"facture",
"creer")) {
1514 $arrayofmassactions[
'precreatecreditnote'] = img_picto(
'',
'undo',
'class="pictofixedwidth"').$langs->trans(
"cancelByCreditNote");
1517if (in_array($massaction, array(
'presend',
'predelete',
'makepayment'))) {
1518 $arrayofmassactions = array();
1520$massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
1525if ($contextpage !=
'poslist') {
1526 $url = DOL_URL_ROOT.
'/compta/facture/card.php?action=create';
1528 $url .=
'&socid='.urlencode((
string)
$object->socid);
1531 $url .=
'&fac_rec='.urlencode((
string)
$object->id);
1533 $newcardbutton =
'';
1534 $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'));
1535 $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'));
1536 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'Statistics'),
'',
'fa fa-chart-bar imgforviewmode', DOL_URL_ROOT.
'/compta/facture/stats/index.php?'.preg_replace(
'/(&|\?)*(mode|groupby)=[^&]+/',
'', $param),
'', ($mode ==
'statistics' ? 2 : 1), array(
'morecss' =>
'reposition'));
1538 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewBill'),
'',
'fa fa-plus-circle', $url,
'', $user->hasRight(
"facture",
"creer"));
1544print
'<form method="POST" id="searchFormList" name="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">'.
"\n";
1545if ($optioncss !=
'') {
1546 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
1548print
'<input type="hidden" name="token" value="'.newToken().
'">';
1549print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
1550if (!in_array($massaction, array(
'makepayment'))) {
1551 print
'<input type="hidden" name="action" value="list">';
1553print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
1554print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
1556print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
1557print
'<input type="hidden" name="socid" value="'.$socid.
'">';
1558print
'<input type="hidden" name="mode" value="'.$mode.
'">';
1560print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'bill', 0, $newcardbutton,
'', $limit, 0, 0, 1);
1562$topicmail =
"SendBillRef";
1563$modelmail =
"facture_send";
1565$trackid =
'inv'.$object->id;
1566include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
1568if ($massaction ==
'makepayment') {
1570 $formquestion = array(
1574 array(
'type' =>
'date',
'name' =>
'datepaiment',
'label' => $langs->trans(
"Date"),
'datenow' => 1),
1575 array(
'type' =>
'other',
'name' =>
'paiementid',
'label' => $langs->trans(
"PaymentMode"),
'value' => $form->select_types_paiements(
GETPOST(
'search_paymentmode'),
'paiementid',
'', 0, 0, 1, 0, 1,
'', 1)),
1576 array(
'type' =>
'other',
'name' =>
'bankid',
'label' => $langs->trans(
"BankAccount"),
'value' => $form->select_comptes(
'',
'bankid', 0,
'', 0,
'', 0,
'', 1)),
1577 array(
'type' =>
'other',
'name' =>
'note_private',
'label' => $langs->trans(
"Comments"),
'value' =>
'<textarea name="note_private" id="note_private" class="minwidth200" rows="3"></textarea>'),
1580 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
'MakePaymentAndClassifyPayed'), $langs->trans(
'EnterPaymentReceivedFromCustomer'),
'makepayment_confirm', $formquestion, 1, 0, 200, 500, 1);
1585 foreach ($fieldstosearchall as $key => $val) {
1586 $fieldstosearchall[$key] = $langs->trans($val);
1588 print
'<div class="divsearchfieldfilter">'.$langs->trans(
"FilterOnInto", $search_all).implode(
', ', $fieldstosearchall).
'</div>';
1594if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'read')) {
1596 $moreforfilter .= $formcategory->getFilterBox(Categorie::TYPE_INVOICE, $searchCategoryInvoiceList,
'minwidth300', $searchCategoryInvoiceOperator ? $searchCategoryInvoiceOperator : 0);
1598if ($user->hasRight(
"user",
"user",
"lire")) {
1599 $langs->load(
"commercial");
1600 $moreforfilter .=
'<div class="divsearchfield">';
1601 $tmptitle = $langs->trans(
'ThirdPartiesOfSaleRepresentative');
1602 $moreforfilter .= img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$formother->select_salesrepresentatives($search_sale,
'search_sale', $user, 0, $tmptitle,
'maxwidth200');
1603 $moreforfilter .=
'</div>';
1606if ($user->hasRight(
"user",
"user",
"lire")) {
1607 $moreforfilter .=
'<div class="divsearchfield">';
1608 $tmptitle = $langs->trans(
'LinkedToSpecificUsers');
1609 $moreforfilter .= img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$form->select_dolusers($search_user,
'search_user', $tmptitle,
null, 0,
'',
'',
'0', 0, 0,
'', 0,
'',
'maxwidth200');
1610 $moreforfilter .=
'</div>';
1613if (
isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire") && ($user->hasRight(
"produit",
"lire") || $user->hasRight(
"service",
"lire"))) {
1614 include_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1615 $moreforfilter .=
'<div class="divsearchfield">';
1616 $tmptitle = $langs->trans(
'IncludingProductWithTag');
1617 $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT,
'',
'parent', 0, 0, 1);
1618 $moreforfilter .= img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$form->selectarray(
'search_product_category', $cate_arbo, $search_product_category, $tmptitle, 0, 0,
'', 0, 0, 0,
'',
'maxwidth300 widthcentpercentminusx', 1);
1619 $moreforfilter .=
'</div>';
1621if (
isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire")) {
1622 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1623 $moreforfilter .=
'<div class="divsearchfield">';
1624 $tmptitle = $langs->trans(
'CustomersProspectsCategoriesShort');
1625 $moreforfilter .= img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$formother->select_categories(
'customer', $search_categ_cus,
'search_categ_cus', 1, $tmptitle);
1626 $moreforfilter .=
'</div>';
1629$moreforfilter .=
'<div class="divsearchfield">';
1630$moreforfilter .=
'<label for="search_option">'.$langs->trans(
'Alert').
' </label><input type="checkbox" name="search_option" id="search_option" value="late"'.($search_option ==
'late' ?
' checked' :
'').
'>';
1631$moreforfilter .=
'</div>';
1633$parameters = array();
1634$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1635if (empty($reshook)) {
1636 $moreforfilter .= $hookmanager->resPrint;
1638 $moreforfilter = $hookmanager->resPrint;
1641if (!empty($moreforfilter)) {
1642 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1643 print $moreforfilter;
1648$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
1649$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
$conf->main_checkbox_left_column);
1652if ($massactionbutton && $contextpage !=
'poslist') {
1653 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
1656print
'<div class="div-table-responsive">';
1657print
'<table class="tagtable nobottomiftotal liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
1661print
'<tr class="liste_titre_filter">';
1664if (
$conf->main_checkbox_left_column) {
1665 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
1666 $searchpicto = $form->showFilterButtons(
'left');
1672 print
'<td class="liste_titre">';
1676if (!empty($arrayfields[
'f.ref'][
'checked'])) {
1677 print
'<td class="liste_titre">';
1678 print
'<input class="flat maxwidth75imp" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
1682if (!empty($arrayfields[
'f.ref_client'][
'checked'])) {
1683 print
'<td class="liste_titre">';
1684 print
'<input class="flat maxwidth50imp" type="text" name="search_refcustomer" value="'.dol_escape_htmltag($search_refcustomer).
'">';
1688if (!empty($arrayfields[
'f.type'][
'checked'])) {
1689 print
'<td class="liste_titre maxwidthonsmartphone">';
1701 print $form->selectarray(
'search_type', $listtype, $search_type, 1, 0, 0,
'', 0, 0, 0,
'',
'maxwidth75');
1705if (!empty($arrayfields[
'f.subtype'][
'checked'])) {
1706 print
'<td class="liste_titre maxwidthonsmartphone center">';
1707 print $form->selectarray(
'search_subtype', $subtypearray, $search_subtype, 1, 0, 0,
'', 0, 0, 0,
'',
'maxwidth100');
1711if (!empty($arrayfields[
'f.datef'][
'checked'])) {
1712 print
'<td class="liste_titre center">';
1713 print
'<div class="nowrapfordate">';
1714 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1716 print
'<div class="nowrapfordate">';
1717 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1722if (!empty($arrayfields[
'f.date_valid'][
'checked'])) {
1723 print
'<td class="liste_titre center">';
1724 print
'<div class="nowrapfordate">';
1725 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'));
1727 print
'<div class="nowrapfordate">';
1728 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'));
1733if (!empty($arrayfields[
'f.date_lim_reglement'][
'checked'])) {
1734 print
'<td class="liste_titre center">';
1735 print
'<div class="nowrapfordate">';
1736 print $form->selectDate($search_datelimit_start ? $search_datelimit_start : -1,
'search_datelimit_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1738 print
'<div class="nowrapfordate">';
1739 print $form->selectDate($search_datelimit_end ? $search_datelimit_end : -1,
'search_datelimit_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1744if (!empty($arrayfields[
'p.ref'][
'checked'])) {
1745 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_project_ref" value="'.dol_escape_htmltag($search_project_ref).
'"></td>';
1748if (!empty($arrayfields[
'p.title'][
'checked'])) {
1749 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_project" value="'.dol_escape_htmltag($search_project).
'"></td>';
1752if (!empty($arrayfields[
's.nom'][
'checked'])) {
1753 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_company" value="'.dol_escape_htmltag((
string) $search_company).
'"'.($socid > 0 ?
" disabled" :
"").
'></td>';
1756if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
1757 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_company_alias" value="'.dol_escape_htmltag($search_company_alias).
'"></td>';
1760if (!empty($arrayfields[
's2.nom'][
'checked'])) {
1761 print
'<td class="liste_titre">';
1762 print
'<input class="flat maxwidth100" type="text" name="search_parent_name" value="'.dol_escape_htmltag($search_parent_name).
'">';
1766if (!empty($arrayfields[
's.code_client'][
'checked'])) {
1767 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_customer_code" value="'.dol_escape_htmltag($search_customer_code).
'"></td>';
1770if (!empty($arrayfields[
's.town'][
'checked'])) {
1771 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).
'"></td>';
1774if (!empty($arrayfields[
's.zip'][
'checked'])) {
1775 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_zip" value="'.dol_escape_htmltag($search_zip).
'"></td>';
1778if (!empty($arrayfields[
'state.nom'][
'checked'])) {
1779 print
'<td class="liste_titre">';
1780 print
'<input class="flat maxwidth50imp" type="text" name="search_state" value="'.dol_escape_htmltag($search_state).
'">';
1784if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
1785 print
'<td class="liste_titre center">';
1786 print $form->select_country($search_country,
'search_country',
'', 0,
'minwidth150imp maxwidth150',
'code2', 1, 0, 1, array(), 1);
1790if (!empty($arrayfields[
'typent.code'][
'checked'])) {
1791 print
'<td class="liste_titre maxwidthonsmartphone center">';
1792 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'),
'maxwidth100', 1);
1796if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked'])) {
1797 print
'<td class="liste_titre">';
1798 print $form->select_types_paiements($search_paymentmode,
'search_paymentmode',
'', 0, 1, 1, 0, 1,
'minwidth100 maxwidth100', 1);
1802if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked'])) {
1803 print
'<td class="liste_titre left">';
1804 print $form->getSelectConditionsPaiements((
int) $search_paymentterms,
'search_paymentterms', -1, 1, 1,
'minwidth100 maxwidth100');
1808if (!empty($arrayfields[
'ba.label'][
'checked'])) {
1809 print
'<td class="liste_titre">';
1810 $form->select_comptes($search_bankaccount,
'search_bankaccount', 0,
'', 1,
'', 0,
'maxwidth125');
1814if (!empty($arrayfields[
'f.fk_input_reason'][
'checked'])) {
1815 print
'<td class="liste_titre">';
1816 $form->selectInputReason($search_fk_input_reason,
'search_fk_input_reason',
'', 1,
'', 1);
1820if (!empty($arrayfields[
'f.module_source'][
'checked'])) {
1821 print
'<td class="liste_titre">';
1822 print
'<input class="flat maxwidth75" type="text" name="search_module_source" value="'.dol_escape_htmltag($search_module_source).
'">';
1826if (!empty($arrayfields[
'f.pos_source'][
'checked'])) {
1827 print
'<td class="liste_titre">';
1828 print
'<input class="flat maxwidth50" type="text" name="search_pos_source" value="'.dol_escape_htmltag($search_pos_source).
'">';
1831if (!empty($arrayfields[
'f.total_ht'][
'checked'])) {
1833 print
'<td class="liste_titre right">';
1834 print
'<input class="flat" type="text" size="4" name="search_montant_ht" value="'.dol_escape_htmltag($search_montant_ht).
'">';
1837if (!empty($arrayfields[
'f.total_tva'][
'checked'])) {
1839 print
'<td class="liste_titre right">';
1840 print
'<input class="flat" type="text" size="4" name="search_montant_vat" value="'.dol_escape_htmltag($search_montant_vat).
'">';
1843if (!empty($arrayfields[
'f.total_localtax1'][
'checked'])) {
1845 print
'<td class="liste_titre right">';
1846 print
'<input class="flat" type="text" size="4" name="search_montant_localtax1" value="'.dol_escape_htmltag($search_montant_localtax1).
'">';
1849if (!empty($arrayfields[
'f.total_localtax2'][
'checked'])) {
1851 print
'<td class="liste_titre right">';
1852 print
'<input class="flat" type="text" size="4" name="search_montant_localtax2" value="'.dol_escape_htmltag($search_montant_localtax2).
'">';
1855if (!empty($arrayfields[
'f.total_ttc'][
'checked'])) {
1857 print
'<td class="liste_titre right">';
1858 print
'<input class="flat" type="text" size="4" name="search_montant_ttc" value="'.dol_escape_htmltag($search_montant_ttc).
'">';
1861if (!empty($arrayfields[
'u.login'][
'checked'])) {
1863 print
'<td class="liste_titre center">';
1864 print
'<input class="flat" size="4" type="text" name="search_login" value="'.dol_escape_htmltag($search_login).
'">';
1867if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
1868 print
'<td class="liste_titre"></td>';
1870if (!empty($arrayfields[
'f.retained_warranty'][
'checked'])) {
1871 print
'<td class="liste_titre" align="right">';
1874if (!empty($arrayfields[
'dynamount_payed'][
'checked'])) {
1875 print
'<td class="liste_titre right">';
1878if (!empty($arrayfields[
'rtp'][
'checked'])) {
1879 print
'<td class="liste_titre">';
1882if (!empty($arrayfields[
'f.multicurrency_code'][
'checked'])) {
1884 print
'<td class="liste_titre">';
1885 print $form->selectMultiCurrency($search_multicurrency_code,
'search_multicurrency_code', 1);
1888if (!empty($arrayfields[
'f.multicurrency_tx'][
'checked'])) {
1890 print
'<td class="liste_titre">';
1891 print
'<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).
'">';
1894if (!empty($arrayfields[
'f.multicurrency_total_ht'][
'checked'])) {
1896 print
'<td class="liste_titre right">';
1897 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).
'">';
1900if (!empty($arrayfields[
'f.multicurrency_total_vat'][
'checked'])) {
1902 print
'<td class="liste_titre right">';
1903 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).
'">';
1906if (!empty($arrayfields[
'f.multicurrency_total_ttc'][
'checked'])) {
1908 print
'<td class="liste_titre right">';
1909 print
'<input class="flat width75" type="text" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).
'">';
1912if (!empty($arrayfields[
'multicurrency_dynamount_payed'][
'checked'])) {
1913 print
'<td class="liste_titre">';
1916if (!empty($arrayfields[
'multicurrency_rtp'][
'checked'])) {
1917 print
'<td class="liste_titre right">';
1920if (!empty($arrayfields[
'total_pa'][
'checked'])) {
1921 print
'<td class="liste_titre right">';
1924if (!empty($arrayfields[
'total_margin'][
'checked'])) {
1925 print
'<td class="liste_titre right">';
1928if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
1929 print
'<td class="liste_titre right">';
1932if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
1933 print
'<td class="liste_titre right">';
1938include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
1941$parameters = array(
'arrayfields' => $arrayfields);
1942$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action);
1943print $hookmanager->resPrint;
1945if (!empty($arrayfields[
'f.datec'][
'checked'])) {
1946 print
'<td class="liste_titre center">';
1947 print
'<div class="nowrapfordate">';
1948 print $form->selectDate($search_datec_start ? $search_datec_start : -1,
'search_datec_start', 1, 1, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'),
'tzuserrel');
1950 print
'<div class="nowrapfordate">';
1951 print $form->selectDate($search_datec_end ? $search_datec_end : -1,
'search_datec_end', 1, 1, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'),
'tzuserrel');
1956if (!empty($arrayfields[
'f.tms'][
'checked'])) {
1957 print
'<td class="liste_titre center">';
1958 print
'<div class="nowrapfordate">';
1959 print $form->selectDate($search_datem_start ? $search_datem_start : -1,
'search_datem_start', 1, 1, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'),
'tzuserrel');
1961 print
'<div class="nowrapfordate">';
1962 print $form->selectDate($search_datem_end ? $search_datem_end : -1,
'search_datem_end', 1, 1, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'),
'tzuserrel');
1967if (!empty($arrayfields[
'f.date_closing'][
'checked'])) {
1968 print
'<td class="liste_titre">';
1971if (!empty($arrayfields[
'f.note_public'][
'checked'])) {
1973 print
'<td class="liste_titre">';
1974 print
'<input class="flat maxwidth75" type="text" name="search_note_public" value="'.dol_escape_htmltag($search_note_public).
'">';
1977if (!empty($arrayfields[
'f.note_private'][
'checked'])) {
1979 print
'<td class="liste_titre">';
1980 print
'<input class="flat maxwidth75" type="text" name="search_note_private" value="'.dol_escape_htmltag($search_note_private).
'">';
1983if (!empty($arrayfields[
'f.fk_fac_rec_source'][
'checked'])) {
1985 print
'<td class="liste_titre maxwidthonsmartphone right">';
1986 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).
'">';
1990if (!empty($arrayfields[
'f.import_key'][
'checked'])) {
1991 print
'<td class="liste_titre maxwidthonsmartphone center">';
1992 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1996if (!empty($arrayfields[
'f.dispute_status'][
'checked'])) {
1997 print
'<td class="liste_titre center parentonrightofpage">';
1998 $liststatus = Facture::ARRAY_OF_DISPUTE_STATUS;
2000 print $form->selectarray(
'search_dispute_status', $liststatus, $search_dispute_status, 1, 0, 0,
'', 1, 0, 0,
'',
'search_status width100 onrightofpage', 1);
2004if (!empty($arrayfields[
'f.fk_statut'][
'checked'])) {
2005 print
'<td class="liste_titre center parentonrightofpage">';
2006 $liststatus = array(
2007 '0' => $langs->trans(
"BillShortStatusDraft"),
2008 '1' => $langs->trans(
"BillShortStatusNotPaid"),
2009 '99' => $langs->trans(
"BillStatusStarted"),
2010 '2' => $langs->trans(
"BillShortStatusPaid"),
2011 '3' => $langs->trans(
"BillShortStatusCanceled")
2014 print $form->multiselectarray(
'search_status', $liststatus, $search_status, 0, 0,
'search_status width100 onrightofpage', 1, 0);
2018if (!
$conf->main_checkbox_left_column) {
2019 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
2020 $searchpicto = $form->showFilterButtons();
2023} elseif ($contextpage ==
'poslist') {
2024 print
'<td class="liste_titre center actioncolumn"></td>';
2028$totalarray = array();
2029$totalarray[
'nbfield'] = 0;
2033print
'<tr class="liste_titre">';
2035if (
$conf->main_checkbox_left_column) {
2036 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
2037 $totalarray[
'nbfield']++;
2041 $totalarray[
'nbfield']++;
2043if (!empty($arrayfields[
'f.ref'][
'checked'])) {
2044 print_liste_field_titre($arrayfields[
'f.ref'][
'label'], $_SERVER[
'PHP_SELF'],
'f.ref',
'', $param,
'', $sortfield, $sortorder);
2045 $totalarray[
'nbfield']++;
2047if (!empty($arrayfields[
'f.ref_client'][
'checked'])) {
2048 print_liste_field_titre($arrayfields[
'f.ref_client'][
'label'], $_SERVER[
"PHP_SELF"],
'f.ref_client',
'', $param,
'', $sortfield, $sortorder);
2049 $totalarray[
'nbfield']++;
2051if (!empty($arrayfields[
'f.type'][
'checked'])) {
2052 print_liste_field_titre($arrayfields[
'f.type'][
'label'], $_SERVER[
"PHP_SELF"],
'f.type',
'', $param,
'', $sortfield, $sortorder);
2053 $totalarray[
'nbfield']++;
2055if (!empty($arrayfields[
'f.subtype'][
'checked'])) {
2056 print_liste_field_titre($arrayfields[
'f.subtype'][
'label'], $_SERVER[
"PHP_SELF"],
'f.subtype',
'', $param,
'', $sortfield, $sortorder);
2058if (!empty($arrayfields[
'f.datef'][
'checked'])) {
2059 print_liste_field_titre($arrayfields[
'f.datef'][
'label'], $_SERVER[
'PHP_SELF'],
'f.datef',
'', $param,
'', $sortfield, $sortorder,
'center ');
2060 $totalarray[
'nbfield']++;
2062if (!empty($arrayfields[
'f.date_valid'][
'checked'])) {
2063 print_liste_field_titre($arrayfields[
'f.date_valid'][
'label'], $_SERVER[
'PHP_SELF'],
'f.date_valid',
'', $param,
'', $sortfield, $sortorder,
'center ');
2064 $totalarray[
'nbfield']++;
2066if (!empty($arrayfields[
'f.date_lim_reglement'][
'checked'])) {
2067 print_liste_field_titre($arrayfields[
'f.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
"f.date_lim_reglement",
'', $param,
'', $sortfield, $sortorder,
'center ');
2068 $totalarray[
'nbfield']++;
2070if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2071 $langs->load(
"projects");
2072 print_liste_field_titre($arrayfields[
'p.ref'][
'label'], $_SERVER[
'PHP_SELF'],
"p.ref",
'', $param,
'', $sortfield, $sortorder);
2073 $totalarray[
'nbfield']++;
2075if (!empty($arrayfields[
'p.title'][
'checked'])) {
2076 print_liste_field_titre($arrayfields[
'p.title'][
'label'], $_SERVER[
'PHP_SELF'],
"p.title",
'', $param,
'', $sortfield, $sortorder);
2077 $totalarray[
'nbfield']++;
2079if (!empty($arrayfields[
's.nom'][
'checked'])) {
2080 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
'PHP_SELF'],
's.nom',
'', $param,
'', $sortfield, $sortorder);
2081 $totalarray[
'nbfield']++;
2083if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2085 print_liste_field_titre($arrayfields[
's.name_alias'][
'label'], $_SERVER[
'PHP_SELF'],
's.name_alias',
'', $param,
'', $sortfield, $sortorder);
2086 $totalarray[
'nbfield']++;
2088if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2089 print_liste_field_titre($arrayfields[
's2.nom'][
'label'], $_SERVER[
'PHP_SELF'],
's2.nom',
'', $param,
'', $sortfield, $sortorder);
2090 $totalarray[
'nbfield']++;
2092if (!empty($arrayfields[
's.code_client'][
'checked'])) {
2093 print_liste_field_titre($arrayfields[
's.code_client'][
'label'], $_SERVER[
'PHP_SELF'],
's.code_client',
'', $param,
'', $sortfield, $sortorder);
2094 $totalarray[
'nbfield']++;
2096if (!empty($arrayfields[
's.town'][
'checked'])) {
2097 print_liste_field_titre($arrayfields[
's.town'][
'label'], $_SERVER[
"PHP_SELF"],
's.town',
'', $param,
'', $sortfield, $sortorder);
2098 $totalarray[
'nbfield']++;
2100if (!empty($arrayfields[
's.zip'][
'checked'])) {
2101 print_liste_field_titre($arrayfields[
's.zip'][
'label'], $_SERVER[
"PHP_SELF"],
's.zip',
'', $param,
'', $sortfield, $sortorder);
2102 $totalarray[
'nbfield']++;
2104if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2105 print_liste_field_titre($arrayfields[
'state.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"state.nom",
"", $param,
'', $sortfield, $sortorder);
2106 $totalarray[
'nbfield']++;
2108if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2109 print_liste_field_titre($arrayfields[
'country.code_iso'][
'label'], $_SERVER[
"PHP_SELF"],
"country.code_iso",
"", $param,
'', $sortfield, $sortorder,
'center ');
2110 $totalarray[
'nbfield']++;
2112if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2113 print_liste_field_titre($arrayfields[
'typent.code'][
'label'], $_SERVER[
"PHP_SELF"],
"typent.code",
"", $param,
'', $sortfield, $sortorder,
'center ');
2114 $totalarray[
'nbfield']++;
2116if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked'])) {
2117 print_liste_field_titre($arrayfields[
'f.fk_mode_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"f.fk_mode_reglement",
"", $param,
"", $sortfield, $sortorder);
2118 $totalarray[
'nbfield']++;
2120if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked'])) {
2121 print_liste_field_titre($arrayfields[
'f.fk_cond_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"f.fk_cond_reglement",
"", $param,
"", $sortfield, $sortorder);
2122 $totalarray[
'nbfield']++;
2124if (!empty($arrayfields[
'ba.label'][
'checked'])) {
2125 print_liste_field_titre($arrayfields[
'ba.label'][
'label'], $_SERVER[
"PHP_SELF"],
"ba.label",
"", $param,
"", $sortfield, $sortorder);
2126 $totalarray[
'nbfield']++;
2128if (!empty($arrayfields[
'f.fk_input_reason'][
'checked'])) {
2129 print_liste_field_titre($arrayfields[
'f.fk_input_reason'][
'label'], $_SERVER[
'PHP_SELF'],
'f.fk_input_reason',
'', $param,
'', $sortfield, $sortorder);
2131if (!empty($arrayfields[
'f.module_source'][
'checked'])) {
2132 print_liste_field_titre($arrayfields[
'f.module_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.module_source",
"", $param,
"", $sortfield, $sortorder);
2133 $totalarray[
'nbfield']++;
2135if (!empty($arrayfields[
'f.pos_source'][
'checked'])) {
2136 print_liste_field_titre($arrayfields[
'f.pos_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.pos_source",
"", $param,
"", $sortfield, $sortorder);
2137 $totalarray[
'nbfield']++;
2139if (!empty($arrayfields[
'f.total_ht'][
'checked'])) {
2140 print_liste_field_titre($arrayfields[
'f.total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'f.total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
2141 $totalarray[
'nbfield']++;
2143if (!empty($arrayfields[
'f.total_tva'][
'checked'])) {
2144 print_liste_field_titre($arrayfields[
'f.total_tva'][
'label'], $_SERVER[
'PHP_SELF'],
'f.total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
2145 $totalarray[
'nbfield']++;
2147if (!empty($arrayfields[
'f.total_localtax1'][
'checked'])) {
2148 print_liste_field_titre($arrayfields[
'f.total_localtax1'][
'label'], $_SERVER[
'PHP_SELF'],
'f.localtax1',
'', $param,
'', $sortfield, $sortorder,
'right ');
2149 $totalarray[
'nbfield']++;
2151if (!empty($arrayfields[
'f.total_localtax2'][
'checked'])) {
2152 print_liste_field_titre($arrayfields[
'f.total_localtax2'][
'label'], $_SERVER[
'PHP_SELF'],
'f.localtax2',
'', $param,
'', $sortfield, $sortorder,
'right ');
2153 $totalarray[
'nbfield']++;
2155if (!empty($arrayfields[
'f.total_ttc'][
'checked'])) {
2156 print_liste_field_titre($arrayfields[
'f.total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'f.total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
2157 $totalarray[
'nbfield']++;
2159if (!empty($arrayfields[
'u.login'][
'checked'])) {
2160 print_liste_field_titre($arrayfields[
'u.login'][
'label'], $_SERVER[
"PHP_SELF"],
'u.login',
'', $param,
'', $sortfield, $sortorder,
'center ');
2161 $totalarray[
'nbfield']++;
2163if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2164 print_liste_field_titre($arrayfields[
'sale_representative'][
'label'], $_SERVER[
"PHP_SELF"],
"",
"",
"$param",
'', $sortfield, $sortorder);
2165 $totalarray[
'nbfield']++;
2167if (!empty($arrayfields[
'f.retained_warranty'][
'checked'])) {
2168 print_liste_field_titre($arrayfields[
'f.retained_warranty'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2169 $totalarray[
'nbfield']++;
2171if (!empty($arrayfields[
'dynamount_payed'][
'checked'])) {
2172 print_liste_field_titre($arrayfields[
'dynamount_payed'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2173 $totalarray[
'nbfield']++;
2175if (!empty($arrayfields[
'rtp'][
'checked'])) {
2176 print_liste_field_titre($arrayfields[
'rtp'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2177 $totalarray[
'nbfield']++;
2179if (!empty($arrayfields[
'f.multicurrency_code'][
'checked'])) {
2180 print_liste_field_titre($arrayfields[
'f.multicurrency_code'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_code',
'', $param,
'', $sortfield, $sortorder);
2181 $totalarray[
'nbfield']++;
2183if (!empty($arrayfields[
'f.multicurrency_tx'][
'checked'])) {
2184 print_liste_field_titre($arrayfields[
'f.multicurrency_tx'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_tx',
'', $param,
'', $sortfield, $sortorder);
2185 $totalarray[
'nbfield']++;
2187if (!empty($arrayfields[
'f.multicurrency_total_ht'][
'checked'])) {
2188 print_liste_field_titre($arrayfields[
'f.multicurrency_total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
2189 $totalarray[
'nbfield']++;
2191if (!empty($arrayfields[
'f.multicurrency_total_vat'][
'checked'])) {
2192 print_liste_field_titre($arrayfields[
'f.multicurrency_total_vat'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
2193 $totalarray[
'nbfield']++;
2195if (!empty($arrayfields[
'f.multicurrency_total_ttc'][
'checked'])) {
2196 print_liste_field_titre($arrayfields[
'f.multicurrency_total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
2197 $totalarray[
'nbfield']++;
2199if (!empty($arrayfields[
'multicurrency_dynamount_payed'][
'checked'])) {
2200 print_liste_field_titre($arrayfields[
'multicurrency_dynamount_payed'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2201 $totalarray[
'nbfield']++;
2203if (!empty($arrayfields[
'multicurrency_rtp'][
'checked'])) {
2204 print_liste_field_titre($arrayfields[
'multicurrency_rtp'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2205 $totalarray[
'nbfield']++;
2207if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2208 print_liste_field_titre($arrayfields[
'total_pa'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2209 $totalarray[
'nbfield']++;
2211if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2212 print_liste_field_titre($arrayfields[
'total_margin'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2213 $totalarray[
'nbfield']++;
2215if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2216 print_liste_field_titre($arrayfields[
'total_margin_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2217 $totalarray[
'nbfield']++;
2219if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2220 print_liste_field_titre($arrayfields[
'total_mark_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2221 $totalarray[
'nbfield']++;
2224include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
2226$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder,
'totalarray' => &$totalarray);
2227$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
2228print $hookmanager->resPrint;
2229if (!empty($arrayfields[
'f.datec'][
'checked'])) {
2230 print_liste_field_titre($arrayfields[
'f.datec'][
'label'], $_SERVER[
"PHP_SELF"],
"f.datec",
"", $param,
'', $sortfield, $sortorder,
'nowraponall center ');
2231 $totalarray[
'nbfield']++;
2233if (!empty($arrayfields[
'f.tms'][
'checked'])) {
2234 print_liste_field_titre($arrayfields[
'f.tms'][
'label'], $_SERVER[
"PHP_SELF"],
"f.tms",
"", $param,
'', $sortfield, $sortorder,
'nowraponall center ');
2235 $totalarray[
'nbfield']++;
2237if (!empty($arrayfields[
'f.date_closing'][
'checked'])) {
2238 print_liste_field_titre($arrayfields[
'f.date_closing'][
'label'], $_SERVER[
"PHP_SELF"],
"f.date_closing",
"", $param,
'', $sortfield, $sortorder,
'nowraponall center ');
2239 $totalarray[
'nbfield']++;
2241if (!empty($arrayfields[
'f.note_public'][
'checked'])) {
2242 print_liste_field_titre($arrayfields[
'f.note_public'][
'label'], $_SERVER[
"PHP_SELF"],
"f.note_public",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2243 $totalarray[
'nbfield']++;
2245if (!empty($arrayfields[
'f.note_private'][
'checked'])) {
2246 print_liste_field_titre($arrayfields[
'f.note_private'][
'label'], $_SERVER[
"PHP_SELF"],
"f.note_private",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2247 $totalarray[
'nbfield']++;
2249if (!empty($arrayfields[
'f.fk_fac_rec_source'][
'checked'])) {
2250 print_liste_field_titre($arrayfields[
'f.fk_fac_rec_source'][
'label'], $_SERVER[
"PHP_SELF"],
"facrec.titre",
"", $param,
'', $sortfield, $sortorder);
2251 $totalarray[
'nbfield']++;
2254if (!empty($arrayfields[
'f.import_key'][
'checked'])) {
2255 print_liste_field_titre($arrayfields[
'f.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"f.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
2256 $totalarray[
'nbfield']++;
2259if (!empty($arrayfields[
'f.dispute_status'][
'checked'])) {
2260 print_liste_field_titre($arrayfields[
'f.dispute_status'][
'label'], $_SERVER[
"PHP_SELF"],
"f.dispute_status,f.ref",
"", $param,
'', $sortfield, $sortorder,
'center ');
2261 $totalarray[
'nbfield']++;
2264if (!empty($arrayfields[
'f.fk_statut'][
'checked'])) {
2265 print_liste_field_titre($arrayfields[
'f.fk_statut'][
'label'], $_SERVER[
"PHP_SELF"],
"f.fk_statut,f.paye,f.type",
"", $param,
'', $sortfield, $sortorder,
'center ');
2266 $totalarray[
'nbfield']++;
2269if (!
$conf->main_checkbox_left_column) {
2270 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'maxwidthsearch center ');
2271 $totalarray[
'nbfield']++;
2272} elseif ($contextpage ==
'poslist') {
2273 print_liste_field_titre(
"Action", $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'center actioncolumn ');
2274 $totalarray[
'nbfield']++;
2279$projectstatic =
new Project($db);
2281$userstatic =
new User($db);
2287 $savnbfield = $totalarray[
'nbfield'];
2288 $totalarray = array();
2289 $totalarray[
'nbfield'] = 0;
2290 $totalarray[
'val'] = array();
2291 $totalarray[
'val'][
'f.total_ht'] = 0;
2292 $totalarray[
'val'][
'f.total_tva'] = 0;
2293 $totalarray[
'val'][
'f.total_localtax1'] = 0;
2294 $totalarray[
'val'][
'f.total_localtax2'] = 0;
2295 $totalarray[
'val'][
'f.total_ttc'] = 0;
2296 $totalarray[
'val'][
'dynamount_payed'] = 0;
2297 $totalarray[
'val'][
'rtp'] = 0;
2299 $typenArray = $formcompany->typent_array(1);
2301 $with_margin_info =
false;
2303 !empty($arrayfields[
'total_pa'][
'checked'])
2304 || !empty($arrayfields[
'total_margin'][
'checked'])
2305 || !empty($arrayfields[
'total_margin_rate'][
'checked'])
2306 || !empty($arrayfields[
'total_mark_rate'][
'checked'])
2309 $with_margin_info =
true;
2314 $imaxinloop = ($limit ? min($num, $limit) : $num);
2315 while ($i < $imaxinloop) {
2316 $obj = $db->fetch_object($resql);
2321 $datelimit = $db->jdate($obj->datelimite);
2323 $facturestatic->id = $obj->id;
2324 $facturestatic->ref = $obj->ref;
2325 $facturestatic->ref_client = $obj->ref_client;
2326 $facturestatic->ref_customer = $obj->ref_client;
2327 $facturestatic->type = $obj->type;
2328 $facturestatic->subtype = $obj->subtype;
2329 $facturestatic->total_ht = $obj->total_ht;
2330 $facturestatic->total_tva = $obj->total_tva;
2331 $facturestatic->total_ttc = $obj->total_ttc;
2332 $facturestatic->multicurrency_code = $obj->multicurrency_code;
2333 $facturestatic->multicurrency_tx = $obj->multicurrency_tx;
2334 $facturestatic->multicurrency_total_ht = $obj->multicurrency_total_ht;
2335 $facturestatic->multicurrency_total_tva = $obj->multicurrency_total_vat;
2336 $facturestatic->multicurrency_total_ttc = $obj->multicurrency_total_ttc;
2337 $facturestatic->status = $obj->status;
2338 $facturestatic->close_code = $obj->close_code;
2339 $facturestatic->total_ttc = $obj->total_ttc;
2340 $facturestatic->paye = $obj->paye;
2341 $facturestatic->socid = $obj->fk_soc;
2343 $facturestatic->date = $db->jdate($obj->datef);
2344 $facturestatic->date_validation = $db->jdate($obj->date_valid);
2345 $facturestatic->date_lim_reglement = $db->jdate($obj->datelimite);
2347 $facturestatic->note_public = $obj->note_public;
2348 $facturestatic->note_private = $obj->note_private;
2351 $facturestatic->retained_warranty = $obj->retained_warranty;
2352 $facturestatic->retained_warranty_date_limit = $obj->retained_warranty_date_limit;
2353 $facturestatic->situation_final = $obj->situation_final;
2354 $facturestatic->situation_cycle_ref = $obj->situation_cycle_ref;
2355 $facturestatic->situation_counter = $obj->situation_counter;
2358 $facturestatic->payment_reference = $obj->payment_reference;
2359 $facturestatic->dispute_status = $obj->dispute_status;
2361 $companystatic->id = $obj->socid;
2362 $companystatic->name = $obj->name;
2363 $companystatic->name_alias = $obj->alias;
2364 $companystatic->client = $obj->client;
2365 $companystatic->fournisseur = $obj->fournisseur;
2366 $companystatic->code_client = $obj->code_client;
2367 $companystatic->code_compta_client = $obj->code_compta_client;
2368 $companystatic->code_fournisseur = $obj->code_fournisseur;
2369 $companystatic->code_compta_fournisseur = $obj->code_compta_fournisseur;
2370 $companystatic->email = $obj->email;
2371 $companystatic->phone = $obj->phone;
2372 $companystatic->fax = $obj->fax;
2373 $companystatic->address = $obj->address;
2374 $companystatic->zip = $obj->zip;
2375 $companystatic->town = $obj->town;
2376 $companystatic->country_code = $obj->country_code;
2378 $projectstatic->id = $obj->project_id;
2379 $projectstatic->ref = $obj->project_ref;
2380 $projectstatic->title = $obj->project_label;
2382 $paiement = $facturestatic->getSommePaiement();
2383 $totalcreditnotes = $facturestatic->getSumCreditNotesUsed();
2384 $totaldeposits = $facturestatic->getSumDepositsUsed();
2385 $totalallpayments = $paiement + $totalcreditnotes + $totaldeposits;
2386 $remaintopay = $obj->total_ttc - $totalallpayments;
2388 $multicurrency_paiement = $facturestatic->getSommePaiement(1);
2389 $multicurrency_totalcreditnotes = $facturestatic->getSumCreditNotesUsed(1);
2390 $multicurrency_totaldeposits = $facturestatic->getSumDepositsUsed(1);
2392 $totalallpayments = $paiement + $totalcreditnotes + $totaldeposits;
2393 $remaintopay =
price2num($facturestatic->total_ttc - $totalallpayments);
2395 $multicurrency_totalpay = $multicurrency_paiement + $multicurrency_totalcreditnotes + $multicurrency_totaldeposits;
2396 $multicurrency_remaintopay = (float)
price2num($facturestatic->multicurrency_total_ttc - $multicurrency_totalpay);
2400 $multicurrency_remaintopay = 0;
2403 $remaincreditnote = $discount->getAvailableDiscounts($companystatic,
null,
'rc.fk_facture_source='.$facturestatic->id);
2404 $remaintopay = -$remaincreditnote;
2405 $totalallpayments =
price2num($facturestatic->total_ttc - $remaintopay);
2406 $multicurrency_remaincreditnote = $discount->getAvailableDiscounts($companystatic,
null,
'rc.fk_facture_source='.$facturestatic->id, 0, 0, 1);
2407 $multicurrency_remaintopay = -$multicurrency_remaincreditnote;
2408 $multicurrency_totalpay = (float)
price2num($facturestatic->multicurrency_total_ttc - $multicurrency_remaintopay);
2411 $facturestatic->alreadypaid = $paiement;
2412 $facturestatic->totalpaid = $paiement;
2413 $facturestatic->totalcreditnotes = $totalcreditnotes;
2414 $facturestatic->totaldeposits = $totaldeposits;
2416 $marginInfo = array();
2417 if ($with_margin_info) {
2418 $facturestatic->fetch_lines();
2419 $marginInfo = $formmargin->getMarginInfosArray($facturestatic);
2420 $total_ht += $obj->total_ht;
2421 $total_margin += $marginInfo[
'total_margin'];
2426 if ($mode ==
'kanban') {
2428 print
'<tr class="trkanban"><td colspan="'.$savnbfield.
'">';
2429 print
'<div class="box-flex-container kanban">';
2432 if ($massactionbutton || $massaction) {
2434 if (in_array(
$object->id, $arrayofselected)) {
2439 $arraydata = array(
'alreadypaid' => $paiement,
'thirdparty' => $companystatic->getNomUrl(1,
'', 12),
'userauthor' => $userstatic->getNomUrl(1),
'selected' => in_array(
$object->id, $arrayofselected));
2440 print $facturestatic->getKanbanView(
'', $arraydata);
2441 if ($i == ($imaxinloop - 1)) {
2448 print
'<tr data-rowid="'.$object->id.
'" class="oddeven row-with-select status'.
$object->status.((getDolGlobalInt(
'MAIN_FINISHED_LINES_OPACITY') == 1 && $obj->status > 1) ?
' opacitymedium' :
'').
'"';
2449 if ($contextpage ==
'poslist') {
2450 print
' onclick="if (event.target.closest(\'.dropdown, .actioncolumn, a, input\')) return; parent.$(\'#poslines\').load(\'invoice.php?action=history&placeid='.$obj->id.
'\',
function() {parent.$.colorbox.close();
';
2451 if (strpos($obj->ref, 'PROV
') !== false) {
2452 //If is a draft invoice, load var to be able to add products
2453 $place = str_replace(")", "", str_replace("(PROV-POS".$_SESSION["takeposterminal"]."-", "", $obj->ref));
2454 print 'parent.place=\
''.dol_escape_js($place).
'\'';
2461 if (
$conf->main_checkbox_left_column) {
2462 print
'<td class="nowrap center">';
2463 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
2465 if (in_array($obj->id, $arrayofselected)) {
2468 print
'<input id="cb'.$obj->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
2472 $totalarray[
'nbfield']++;
2478 print
'<td>'.(($offset * $limit) + $i).
'</td>';
2480 $totalarray[
'nbfield']++;
2485 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
2486 print
'<td class="nowraponall">';
2488 print
'<table class="nobordernopadding"><tr class="nocellnopadd">';
2490 print
'<td class="nobordernopadding nowraponall">';
2491 if ($contextpage ==
'poslist') {
2492 print dolPrintHTML($obj->ref);
2494 print $facturestatic->getNomUrl(1,
'', 200, 0,
'', 0, 1);
2498 $filepath =
$conf->invoice->multidir_output[$obj->entity] ??
$conf->invoice->dir_output;
2499 $filedir = $filepath.
'/'.$filename;
2501 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$obj->id;
2502 print $formfile->getDocumentsLink($facturestatic->element, $filename, $filedir);
2509 $totalarray[
'nbfield']++;
2514 if (!empty($arrayfields[
'f.ref_client'][
'checked'])) {
2515 $tdcss = (
getDolGlobalInt(
'MAIN_SHOW_GLOBAL_REF_CUSTOMER_SUPPLIER') ?
'class="minwidth400 maxwidth400"' :
'class="nowrap tdoverflowmax200"');
2516 print
'<td title="'.dolPrintHTMLForAttribute($obj->ref_client).
'" '.$tdcss.
'>';
2517 print
'<span class="doltext opacitymedium">';
2518 print dolPrintHTML($obj->ref_client);
2522 $totalarray[
'nbfield']++;
2527 if (!empty($arrayfields[
'f.type'][
'checked'])) {
2528 print
'<td class="nowraponall tdoverflowmax100" title="'.$facturestatic->getLibType().
'">';
2529 print $facturestatic->getLibType(2);
2532 $totalarray[
'nbfield']++;
2537 if (!empty($arrayfields[
'f.subtype'][
'checked'])) {
2539 if ($facturestatic->subtype > 0) {
2540 $labeltoshow = $facturestatic->getSubtypeLabel(
'facture');
2542 print
'<td class="nowraponall tdoverflowmax300" title="'.$labeltoshow.
'">';
2546 $totalarray[
'nbfield']++;
2551 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
2552 print
'<td class="nowraponall center">';
2556 $totalarray[
'nbfield']++;
2561 if (!empty($arrayfields[
'f.date_valid'][
'checked'])) {
2562 print
'<td class="nowraponall center">';
2566 $totalarray[
'nbfield']++;
2571 if (!empty($arrayfields[
'f.date_lim_reglement'][
'checked'])) {
2572 print
'<td class="nowraponall center">'.dol_print_date($datelimit,
'day');
2573 if ($facturestatic->hasDelay()) {
2574 print img_warning($langs->trans(
'Alert').
' - '.$langs->trans(
'Late'));
2578 $totalarray[
'nbfield']++;
2583 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2584 print
'<td class="nocellnopadd nowraponall">';
2585 if ($obj->project_id > 0) {
2586 print $projectstatic->getNomUrl(1);
2590 $totalarray[
'nbfield']++;
2595 if (!empty($arrayfields[
'p.title'][
'checked'])) {
2596 print
'<td class="nowraponall">';
2597 if ($obj->project_id > 0) {
2602 $totalarray[
'nbfield']++;
2607 if (!empty($arrayfields[
's.nom'][
'checked'])) {
2608 print
'<td class="tdoverflowmax150">';
2609 if ($contextpage ==
'poslist') {
2612 print $companystatic->getNomUrl(1,
'customer', 0, 0, -1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2616 $totalarray[
'nbfield']++;
2620 if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2621 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($companystatic->name_alias).
'">';
2625 $totalarray[
'nbfield']++;
2629 if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2630 print
'<td class="tdoverflowmax200">';
2631 if ($obj->fk_parent > 0) {
2632 if (!isset($company_url_list[$obj->fk_parent])) {
2633 $companyparent =
new Societe($db);
2634 $res = $companyparent->fetch($obj->fk_parent);
2636 $company_url_list[$obj->fk_parent] = $companyparent->getNomUrl(1);
2639 if (isset($company_url_list[$obj->fk_parent])) {
2640 print $company_url_list[$obj->fk_parent];
2645 $totalarray[
'nbfield']++;
2649 if (!empty($arrayfields[
's.code_client'][
'checked'])) {
2650 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($companystatic->code_client).
'">';
2654 $totalarray[
'nbfield']++;
2658 if (!empty($arrayfields[
's.town'][
'checked'])) {
2659 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($obj->town).
'">';
2660 print dolPrintLabel($obj->town);
2663 $totalarray[
'nbfield']++;
2667 if (!empty($arrayfields[
's.zip'][
'checked'])) {
2668 print
'<td class="nowraponall">';
2669 print dolPrintLabel($obj->zip);
2672 $totalarray[
'nbfield']++;
2676 if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2677 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($obj->state_name).
'">'.
dol_escape_htmltag($obj->state_name).
"</td>\n";
2679 $totalarray[
'nbfield']++;
2683 if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2684 $tmparray =
getCountry($obj->fk_pays,
'all');
2685 print
'<td class="center tdoverflowmax100" title="'.dol_escape_htmltag($tmparray[
'label']).
'">';
2686 print dolPrintLabel($tmparray[
'label']);
2689 $totalarray[
'nbfield']++;
2693 if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2694 if (!is_array($typenArray) || count($typenArray) == 0) {
2695 $typenArray = $formcompany->typent_array(1);
2697 print
'<td class="center tdoverflowmax100" title="'.dolPrintHTMLForAttribute($typenArray[$obj->typent_code]).
'">';
2698 if (!empty($obj->typent_code)) {
2699 print $typenArray[$obj->typent_code];
2703 $totalarray[
'nbfield']++;
2707 if (!empty($arrayfields[
'staff.code'][
'checked'])) {
2708 if (!is_array(
$conf->cache[
'staff']) || count(
$conf->cache[
'staff']) == 0) {
2709 $conf->cache[
'staff'] = $formcompany->effectif_array(1);
2711 print
'<td class="center tdoverflowmax100" title="'.dolPrintHTML(
$conf->cache[
'staff'][$obj->staff_code]).
'">';
2712 print
$conf->cache[
'staff'][$obj->staff_code];
2715 $totalarray[
'nbfield']++;
2720 if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked'])) {
2721 $s = $form->form_modes_reglement($_SERVER[
'PHP_SELF'], $obj->fk_mode_reglement,
'none',
'', -1, 0,
'', 1);
2722 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($s).
'">';
2726 $totalarray[
'nbfield']++;
2731 if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked'])) {
2732 $s = $form->form_conditions_reglement($_SERVER[
'PHP_SELF'], $obj->fk_cond_reglement,
'none', 0,
'', -1, -1, 1);
2733 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($s).
'">';
2737 $totalarray[
'nbfield']++;
2742 if (!empty($arrayfields[
'ba.label'][
'checked'])) {
2744 if (!empty($obj->bid)) {
2745 $accountstatic->id = $obj->bid;
2746 $accountstatic->ref = $obj->bref;
2747 $accountstatic->label = $obj->blabel;
2748 $accountstatic->number = $obj->bnumber;
2749 $accountstatic->account_number = $obj->baccount_number;
2750 $accountstatic->accountancy_journal = $obj->baccountancy_journal;
2751 print $accountstatic->getNomUrl(1);
2755 $totalarray[
'nbfield']++;
2760 if (!empty($arrayfields[
'f.fk_input_reason'][
'checked'])) {
2762 $form->formInputReason($_SERVER[
'PHP_SELF'], (
string) $obj->fk_input_reason,
'none');
2765 $totalarray[
'nbfield']++;
2770 if (!empty($arrayfields[
'f.module_source'][
'checked'])) {
2775 $totalarray[
'nbfield']++;
2779 if (!empty($arrayfields[
'f.pos_source'][
'checked'])) {
2784 $totalarray[
'nbfield']++;
2789 if (!empty($arrayfields[
'f.total_ht'][
'checked'])) {
2790 print
'<td class="right nowraponall"><span class="amount">'.price($obj->total_ht).
"</span></td>\n";
2792 $totalarray[
'nbfield']++;
2795 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_ht';
2797 $totalarray[
'val'][
'f.total_ht'] += $obj->total_ht;
2800 if (!empty($arrayfields[
'f.total_tva'][
'checked'])) {
2801 print
'<td class="right nowraponall amount">'.price($obj->total_tva).
"</td>\n";
2803 $totalarray[
'nbfield']++;
2806 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_tva';
2808 $totalarray[
'val'][
'f.total_tva'] += $obj->total_tva;
2811 if (!empty($arrayfields[
'f.total_localtax1'][
'checked'])) {
2812 print
'<td class="right nowraponall amount">'.price($obj->total_localtax1).
"</td>\n";
2814 $totalarray[
'nbfield']++;
2817 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_localtax1';
2819 $totalarray[
'val'][
'f.total_localtax1'] += $obj->total_localtax1;
2822 if (!empty($arrayfields[
'f.total_localtax2'][
'checked'])) {
2823 print
'<td class="right nowraponall amount">'.price($obj->total_localtax2).
"</td>\n";
2825 $totalarray[
'nbfield']++;
2828 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_localtax2';
2830 $totalarray[
'val'][
'f.total_localtax2'] += $obj->total_localtax2;
2833 if (!empty($arrayfields[
'f.total_ttc'][
'checked'])) {
2834 print
'<td class="right nowraponall amount">'.price($obj->total_ttc).
"</td>\n";
2836 $totalarray[
'nbfield']++;
2839 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'f.total_ttc';
2841 $totalarray[
'val'][
'f.total_ttc'] += $obj->total_ttc;
2844 $userstatic->id = $obj->fk_user_author;
2845 $userstatic->login = $obj->login;
2846 $userstatic->lastname = $obj->lastname;
2847 $userstatic->firstname = $obj->firstname;
2848 $userstatic->email = $obj->user_email;
2849 $userstatic->status = $obj->user_statut;
2850 $userstatic->entity = $obj->entity;
2851 $userstatic->photo = $obj->photo;
2852 $userstatic->office_phone = $obj->office_phone;
2853 $userstatic->office_fax = $obj->office_fax;
2854 $userstatic->user_mobile = $obj->user_mobile;
2855 $userstatic->job = $obj->job;
2856 $userstatic->gender = $obj->gender;
2859 if (!empty($arrayfields[
'u.login'][
'checked'])) {
2860 print
'<td class="tdoverflowmax100">';
2861 if ($userstatic->id) {
2862 print $userstatic->getNomUrl(-1);
2868 $totalarray[
'nbfield']++;
2872 if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2875 if ($obj->socid > 0) {
2876 $listsalesrepresentatives = $companystatic->getSalesRepresentatives($user);
2877 if ($listsalesrepresentatives < 0) {
2878 dol_print_error($db);
2880 $nbofsalesrepresentative = count($listsalesrepresentatives);
2881 if ($nbofsalesrepresentative > 6) {
2883 print $nbofsalesrepresentative;
2884 } elseif ($nbofsalesrepresentative > 0) {
2886 foreach ($listsalesrepresentatives as $val) {
2887 $userstatic->id = $val[
'id'];
2888 $userstatic->lastname = $val[
'lastname'];
2889 $userstatic->firstname = $val[
'firstname'];
2890 $userstatic->email = $val[
'email'];
2891 $userstatic->status = $val[
'statut'];
2892 $userstatic->entity = $val[
'entity'];
2893 $userstatic->photo = $val[
'photo'];
2894 $userstatic->login = $val[
'login'];
2895 $userstatic->office_phone = $val[
'office_phone'];
2896 $userstatic->office_fax = $val[
'office_fax'];
2897 $userstatic->user_mobile = $val[
'user_mobile'];
2898 $userstatic->job = $val[
'job'];
2899 $userstatic->gender = $val[
'gender'];
2901 print ($nbofsalesrepresentative < 2) ? $userstatic->getNomUrl(-1,
'', 0, 0, 12) : $userstatic->getNomUrl(-2);
2903 if ($j < $nbofsalesrepresentative) {
2913 $totalarray[
'nbfield']++;
2917 if (!empty($arrayfields[
'f.retained_warranty'][
'checked'])) {
2918 print
'<td align="right">'.(!empty($obj->retained_warranty) ?
price($obj->retained_warranty).
'%' :
' ').
'</td>';
2920 $totalarray[
'nbfield']++;
2924 if (!empty($arrayfields[
'dynamount_payed'][
'checked'])) {
2925 print
'<td class="right nowraponall amount">'.(!empty($totalallpayments) ?
price($totalallpayments, 0, $langs) :
' ').
'</td>';
2927 $totalarray[
'nbfield']++;
2930 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'dynamount_payed';
2932 $totalarray[
'val'][
'dynamount_payed'] += $totalallpayments;
2936 if (!empty($arrayfields[
'rtp'][
'checked'])) {
2937 print
'<td class="right nowraponall amount">';
2938 print(!empty($remaintopay) ?
price($remaintopay, 0, $langs) :
' ');
2941 $totalarray[
'nbfield']++;
2944 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'rtp';
2946 $totalarray[
'val'][
'rtp'] += $remaintopay;
2951 if (!empty($arrayfields[
'f.multicurrency_code'][
'checked'])) {
2952 if (!
getDolGlobalString(
'MAIN_SHOW_ONLY_CODE_MULTICURRENCY') && !empty($obj->multicurrency_code)) {
2953 $title = $obj->multicurrency_code.
' - '.$langs->transnoentitiesnoconv(
'Currency'.$obj->multicurrency_code);
2954 $label = $langs->transnoentitiesnoconv(
'Currency'.$obj->multicurrency_code);
2956 $title = $obj->multicurrency_code;
2957 $label = $obj->multicurrency_code;
2959 print
'<td class="nowraponall tdoverflowmax125" title="'.dolPrintHTMLForAttribute($title).
'">';
2960 print dolPrintHTML($label);
2963 $totalarray[
'nbfield']++;
2968 if (!empty($arrayfields[
'f.multicurrency_tx'][
'checked'])) {
2969 print
'<td class="nowraponall">';
2970 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$obj->id, $obj->multicurrency_tx,
'none', $obj->multicurrency_code);
2973 $totalarray[
'nbfield']++;
2976 $currencykey = !empty($obj->multicurrency_code) ? $obj->multicurrency_code :
$conf->currency;
2978 if (!empty($arrayfields[
'f.multicurrency_total_ht'][
'checked'])) {
2979 print
'<td class="right nowraponall amount">'.price($obj->multicurrency_total_ht).
"</td>\n";
2981 $totalarray[
'nbfield']++;
2982 $totalarray[
'pospercurrency'][$totalarray[
'nbfield']] =
'f.multicurrency_total_ht';
2984 $totalarray[
'valpercurrency'][$currencykey][
'f.multicurrency_total_ht'] = ($totalarray[
'valpercurrency'][$currencykey][
'f.multicurrency_total_ht'] ?? 0) + $obj->multicurrency_total_ht;
2987 if (!empty($arrayfields[
'f.multicurrency_total_vat'][
'checked'])) {
2988 print
'<td class="right nowraponall amount">'.price($obj->multicurrency_total_vat).
"</td>\n";
2990 $totalarray[
'nbfield']++;
2991 $totalarray[
'pospercurrency'][$totalarray[
'nbfield']] =
'f.multicurrency_total_vat';
2993 $totalarray[
'valpercurrency'][$currencykey][
'f.multicurrency_total_vat'] = ($totalarray[
'valpercurrency'][$currencykey][
'f.multicurrency_total_vat'] ?? 0) + $obj->multicurrency_total_vat;
2996 if (!empty($arrayfields[
'f.multicurrency_total_ttc'][
'checked'])) {
2997 print
'<td class="right nowraponall amount">'.price($obj->multicurrency_total_ttc).
"</td>\n";
2999 $totalarray[
'nbfield']++;
3000 $totalarray[
'pospercurrency'][$totalarray[
'nbfield']] =
'f.multicurrency_total_ttc';
3002 $totalarray[
'valpercurrency'][$currencykey][
'f.multicurrency_total_ttc'] = ($totalarray[
'valpercurrency'][$currencykey][
'f.multicurrency_total_ttc'] ?? 0) + $obj->multicurrency_total_ttc;
3005 if (!empty($arrayfields[
'multicurrency_dynamount_payed'][
'checked'])) {
3006 print
'<td class="right nowraponall amount">'.(!empty($multicurrency_totalpay) ?
price($multicurrency_totalpay, 0, $langs) :
' ').
'</td>';
3008 $totalarray[
'nbfield']++;
3013 if (!empty($arrayfields[
'multicurrency_rtp'][
'checked'])) {
3014 print
'<td class="right nowraponall amount">';
3015 print(!empty($multicurrency_remaintopay) ?
price($multicurrency_remaintopay, 0, $langs) :
' ');
3018 $totalarray[
'nbfield']++;
3023 if (!empty($arrayfields[
'total_pa'][
'checked'])) {
3024 print
'<td class="right nowrap">'.price($marginInfo[
'pa_total'], 0, $langs, 1, -1,
'MT').
'</td>';
3026 $totalarray[
'nbfield']++;
3027 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'total_pa';
3029 if (empty($totalarray[
'val'][
'total_pa'])) {
3030 $totalarray[
'val'][
'total_pa'] = 0;
3032 $totalarray[
'val'][
'total_pa'] += $marginInfo[
'pa_total'];
3035 if (!empty($arrayfields[
'total_margin'][
'checked'])) {
3036 print
'<td class="right nowrap">'.price($marginInfo[
'total_margin'], 0, $langs, 1, -1,
'MT').
'</td>';
3038 $totalarray[
'nbfield']++;
3039 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'total_margin';
3041 if (empty($totalarray[
'val'][
'total_margin'])) {
3042 $totalarray[
'val'][
'total_margin'] = 0;
3044 $totalarray[
'val'][
'total_margin'] += $marginInfo[
'total_margin'];
3047 if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
3048 print
'<td class="right nowrap">'.(($marginInfo[
'total_margin_rate'] ==
'') ?
'' :
price($marginInfo[
'total_margin_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
3050 $totalarray[
'nbfield']++;
3054 if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
3055 print
'<td class="right nowrap">'.(($marginInfo[
'total_mark_rate'] ==
'') ?
'' :
price($marginInfo[
'total_mark_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
3057 $totalarray[
'nbfield']++;
3058 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'total_mark_rate';
3060 if ($i >= $imaxinloop - 1) {
3061 if (!empty($total_ht)) {
3062 $totalarray[
'val'][
'total_mark_rate'] =
price2num($total_margin * 100 / $total_ht,
'MT');
3064 $totalarray[
'val'][
'total_mark_rate'] =
'';
3070 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
3072 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
3073 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
3074 print $hookmanager->resPrint;
3076 if (!empty($arrayfields[
'f.datec'][
'checked'])) {
3077 print
'<td class="nowraponall center">';
3078 print
dol_print_date($db->jdate($obj->date_creation),
'dayhour',
'tzuserrel');
3081 $totalarray[
'nbfield']++;
3085 if (!empty($arrayfields[
'f.tms'][
'checked'])) {
3086 print
'<td class="nowraponall center">';
3087 print
dol_print_date($db->jdate($obj->date_modification),
'dayhour',
'tzuserrel');
3090 $totalarray[
'nbfield']++;
3094 if (!empty($arrayfields[
'f.date_closing'][
'checked'])) {
3095 print
'<td class="nowraponall center">';
3096 print
dol_print_date($db->jdate($obj->date_closing),
'dayhour',
'tzuserrel');
3099 $totalarray[
'nbfield']++;
3103 if (!empty($arrayfields[
'f.note_public'][
'checked'])) {
3104 print
'<td class="sensiblehtmlcontent center">';
3105 print
'<div class="small lineheightsmall twolinesmax-normallineheight">'.dolPrintHTML(
dolGetFirstLineOfText($obj->note_public, 5)).
'</div>';
3108 $totalarray[
'nbfield']++;
3112 if (!empty($arrayfields[
'f.note_private'][
'checked'])) {
3113 print
'<td class="sensiblehtmlcontent center">';
3114 print
'<div class="small lineheightsmall twolinesmax-normallineheight">'.dolPrintHTML(
dolGetFirstLineOfText($obj->note_private, 5)).
'</div>';
3117 $totalarray[
'nbfield']++;
3121 if (!empty($arrayfields[
'f.fk_fac_rec_source'][
'checked'])) {
3122 print
'<td class="center">';
3123 if (!empty($obj->fk_fac_rec_source)) {
3125 $result = $facrec->fetch($obj->fk_fac_rec_source);
3127 setEventMessages($facrec->error, $facrec->errors,
'errors');
3129 print $facrec->getNomUrl();
3134 $totalarray[
'nbfield']++;
3139 if (!empty($arrayfields[
'f.import_key'][
'checked'])) {
3140 print
'<td class="nowrap center">'.dol_escape_htmltag($obj->import_key).
'</td>';
3142 $totalarray[
'nbfield']++;
3147 if (!empty($arrayfields[
'f.dispute_status'][
'checked'])) {
3148 print
'<td class="nowrap center">';
3149 if ($facturestatic->dispute_status) {
3150 $liststatus = Facture::ARRAY_OF_DISPUTE_STATUS;
3151 print $langs->trans($liststatus[$facturestatic->dispute_status][
'label']);
3155 $totalarray[
'nbfield']++;
3160 if (!empty($arrayfields[
'f.fk_statut'][
'checked'])) {
3161 print
'<td class="nowrap center">';
3162 print $facturestatic->getLibStatut(5, $totalallpayments);
3165 $totalarray[
'nbfield']++;
3171 if (!
$conf->main_checkbox_left_column) {
3172 print
'<td class="nowrap center">';
3173 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
3175 if (in_array($obj->id, $arrayofselected)) {
3178 print
'<input id="cb'.$obj->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
3182 $totalarray[
'nbfield']++;
3184 } elseif ($contextpage ==
'poslist') {
3185 print
'<td class="nowrap center actioncolumn">';
3187 print
'<a class="valignmiddle" href="#" onclick="event.stopPropagation(); parent.CloneTicket('.((int) $obj->id).
'); parent.$.colorbox.close(); return false;" title="'.
dol_escape_htmltag($langs->trans(
'CloneTicket')).
'">'.img_picto($langs->trans(
'CloneTicket'),
'clone').
'</a>';
3191 $totalarray[
'nbfield']++;
3202 $totalarray[
'val'][
'total_pa'] = (isset($totalarray[
'val'][
'total_pa']) ?
price2num($totalarray[
'val'][
'total_pa'],
'MT') : null);
3203 $totalarray[
'val'][
'total_margin'] = (isset($totalarray[
'val'][
'total_margin']) ?
price2num($totalarray[
'val'][
'total_margin'],
'MT') : null);
3206 include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
3212 foreach ($arrayfields as $key => $val) {
3213 if (!empty($val[
'checked'])) {
3217 if ($contextpage ==
'poslist' &&
$conf->main_checkbox_left_column) {
3220 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
3225$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
3226$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
3227print $hookmanager->resPrint;
3229print
'</table>'.
"\n";
3232print
'</form>'.
"\n";
3235if ($contextpage !=
'poslist') {
3236 $hidegeneratedfilelistifempty = 1;
3237 if ($massaction ==
'builddoc' || $action ==
'remove_file' || $show_files) {
3238 $hidegeneratedfilelistifempty = 0;
3242 $urlsource = $_SERVER[
'PHP_SELF'].
'?sortfield='.$sortfield.
'&sortorder='.$sortorder;
3243 $urlsource .= str_replace(
'&',
'&', $param);
3245 $filedir = $diroutputmassaction;
3246 $genallowed = $user->hasRight(
"facture",
"lire");
3247 $delallowed = $user->hasRight(
"facture",
"creer");
3250 print $formfile->showdocuments(
'massfilesarea_invoices',
'', $filedir, $urlsource, 0, $delallowed,
'', 1, 1, 0, 48, 1, $param, $title,
'',
'',
'',
null, $hidegeneratedfilelistifempty);
$id
Support class for third parties, contacts, members, users or resources.
if(! $sortfield) if(! $sortorder) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
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_now($mode='gmt')
Return date for now.
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...
GETPOSTDATE($prefix, $hourTime='', $gm='auto', $saverestore='')
Helper function that combines values of a dolibarr DatePicker (such as Form\selectDate) for year,...
dolGetFirstLineOfText($text, $nboflines=1, $charset='UTF-8')
Return first line of text.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_eval($s, $returnvalue=1, $hideerrors=1, $onlysimplestring='1')
Replace eval function to add more security.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0, $allowdash=0)
Clean a string to use it as a file name.
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.
natural_search($fields, $value, $mode=0, $nofirstand=0, $sqltoadd='')
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
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...
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0, $nodefault=0)
Return value of a param into GET or POST supervariable.
GETPOSTINT($paramname, $method=0, $nodefault=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
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.
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
invoice_rec_prepare_head($object)
Return array head with list of tabs to view object information.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $nodie=0, $mode='')
Check permissions of a user to show a page and an object.