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);
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);
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 $parameters = array(
'remaintopay' => $remaintopay);
550 $reshook = $hookmanager->executeHooks(
'finalizeAmountOfInvoice', $parameters, $facture, $action);
552 if (!empty($remain = (
float) $hookmanager->resArray[
'remaintopay'])) {
553 $remaintopay = $remain;
555 } elseif ($reshook < 0) {
557 setEventMessages($facture->ref.
' '.$langs->trans(
"ProcessingError"), $hookmanager->errors,
'errors');
561 $multicurrency_remaintopay = (float)
price2num($facture->multicurrency_total_ttc - $sommePaiement[
'alreadypaid_multicurrency']);
563 if ($remaintopay != 0) {
564 $resultBank = $facture->setBankAccount($bankid);
565 if ($resultBank < 0) {
570 $paiement->datepaye = $paiementdate;
571 $paiement->amounts[$facture->id] = $remaintopay;
572 $paiement->multicurrency_amounts[$facture->id] = (float) $multicurrency_remaintopay;
573 $paiement->paiementid = $paiementid;
574 $paiement->note_private = $note_private;
575 $paiement_id = $paiement->create($user, 1, $facture->thirdparty);
576 if ($paiement_id < 0) {
577 $langs->load(
"errors");
578 setEventMessages($facture->ref.
' '.$langs->trans($paiement->error), $paiement->errors,
'errors');
581 $result = $paiement->addPaymentToBank($user,
'payment',
'', $bankid,
'',
'');
583 $langs->load(
"errors");
584 setEventMessages($facture->ref.
' '.$langs->trans($paiement->error), $paiement->errors,
'errors');
590 setEventMessage($langs->trans(
'NoPaymentAvailable', $facture->ref),
'warnings');
594 setEventMessage($langs->trans(
'BulkPaymentNotPossibleForInvoice', $facture->ref),
'warnings');
599 if (empty($errorpayment)) {
600 setEventMessage($langs->trans(
'PaymentRegisteredAndInvoiceSetToPaid', $facture->ref));
608} elseif ($massaction ==
'withdrawrequest') {
609 $langs->load(
"withdrawals");
611 if (!$user->hasRight(
'prelevement',
'bons',
'creer')) {
618 $arrayofselected = is_array($toselect) ? $toselect : array();
619 $listofbills = array();
620 foreach ($arrayofselected as $toselectid) {
622 $result = $objecttmp->fetch($toselectid);
624 $totalpaid = $objecttmp->getSommePaiement();
625 $totalcreditnotes = $objecttmp->getSumCreditNotesUsed();
626 $totaldeposits = $objecttmp->getSumDepositsUsed();
627 $objecttmp->resteapayer =
price2num($objecttmp->total_ttc - $totalpaid - $totalcreditnotes - $totaldeposits,
'MT');
630 $parameters = array(
'remaintopay' => $objecttmp->resteapayer);
631 $reshook = $hookmanager->executeHooks(
'finalizeAmountOfInvoice', $parameters, $objecttmp, $action);
633 if (!empty($remaintopay = $hookmanager->resArray[
'remaintopay'])) {
634 $objecttmp->resteapayer = $remaintopay;
636 } elseif ($reshook < 0) {
638 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"ProcessingError"), $hookmanager->errors,
'errors');
643 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"Draft"), $objecttmp->errors,
'errors');
644 } elseif ($objecttmp->paye || $objecttmp->resteapayer == 0) {
646 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"AlreadyPaid"), $objecttmp->errors,
'errors');
647 } elseif ($objecttmp->resteapayer < 0) {
649 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"AmountMustBePositive"), $objecttmp->errors,
'errors');
652 $rsql =
"SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande";
653 $rsql .=
" , pfd.date_traite as date_traite";
654 $rsql .=
" , pfd.amount";
655 $rsql .=
" , u.rowid as user_id, u.lastname, u.firstname, u.login";
656 $rsql .=
" FROM ".MAIN_DB_PREFIX.
"prelevement_demande as pfd";
657 $rsql .=
" , ".MAIN_DB_PREFIX.
"user as u";
658 $rsql .=
" WHERE fk_facture = ".((int) $objecttmp->id);
659 $rsql .=
" AND pfd.fk_user_demande = u.rowid";
660 $rsql .=
" AND pfd.traite = 0";
661 $rsql .=
" ORDER BY pfd.date_demande DESC";
664 $result_sql =
$db->query($rsql);
666 $numprlv =
$db->num_rows($result_sql);
671 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"RequestAlreadyDone"), $objecttmp->errors,
'warnings');
672 } elseif (!empty($objecttmp->mode_reglement_code) && $objecttmp->mode_reglement_code !=
'PRE') {
673 $langs->load(
"errors");
675 setEventMessages($objecttmp->ref.
' '.$langs->trans(
"ErrorThisPaymentModeIsNotDirectDebit"), $objecttmp->errors,
'errors');
677 $listofbills[] = $objecttmp;
683 if (!empty($listofbills)) {
684 $nbwithdrawrequestok = 0;
685 foreach ($listofbills as $aBill) {
692 $sql =
"SELECT SUM(pfd.amount) as amount";
693 $sql .=
" FROM ".MAIN_DB_PREFIX.
"prelevement_demande as pfd";
697 $sql .=
" WHERE pfd.fk_facture = ".((int) $aBill->id);
699 $sql .=
" AND pfd.traite = 0";
701 $resql =
$db->query($sql);
703 $obj =
$db->fetch_object($resql);
705 $pending += (float) $obj->amount;
711 $sqlPending =
"SELECT SUM(pl.amount) as amount";
712 $sqlPending .=
" FROM ".$db->prefix().
"prelevement_lignes as pl";
713 $sqlPending .=
" INNER JOIN ".$db->prefix().
"prelevement as p ON p.fk_prelevement_lignes = pl.rowid";
717 $sqlPending .=
" WHERE p.fk_facture = ".((int) $aBill->id);
719 $sqlPending .=
" AND (pl.statut IS NULL OR pl.statut = 0)";
720 $resPending =
$db->query($sqlPending);
722 if ($objPending =
$db->fetch_object($resPending)) {
723 $pending += (float) $objPending->amount;
726 $db->free($resPending);
728 $requestAmount = $aBill->resteapayer - $pending;
731 $result = $aBill->demande_prelevement($user, $requestAmount,
'direct-debit',
'facture');
732 if ($requestAmount > 0) {
735 $nbwithdrawrequestok++;
741 $aBill->error =
'WithdrawRequestErrorNilAmount';
742 $aBill->errors[] = $aBill->error;
746 if ($nbwithdrawrequestok > 0) {
747 setEventMessages($langs->trans(
"WithdrawRequestsDone", $nbwithdrawrequestok),
null,
'mesgs');
769$company_url_list = array();
774 if (empty($search_company)) {
775 $search_company = $soc->name;
781$title = $langs->trans(
'BillsCustomers').
' '.(($socid > 0 && $soc !==
null) ?
' - '.$soc->name :
'');
782$help_url =
'EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes';
784$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
785$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
790$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,';
791$sql .=
' f.localtax1 as total_localtax1, f.localtax2 as total_localtax2,';
792$sql .=
' f.fk_user_author,';
793$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,';
794$sql .=
' f.datef, f.date_valid, f.date_lim_reglement as datelimite,';
795$sql .=
" f.fk_input_reason,";
796$sql .=
" f.module_source, f.pos_source,";
797$sql .=
' f.paye as paye, f.fk_statut as status, f.import_key, f.close_code,';
798$sql .=
' f.datec as date_creation, f.tms as date_modification, f.date_closing as date_closing,';
799$sql .=
' f.retained_warranty, f.retained_warranty_date_limit, f.situation_final, f.situation_cycle_ref, f.situation_counter,';
800$sql .=
' f.payment_reference, f.dispute_status,';
801$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,';
802$sql .=
" s.parent as fk_parent,";
803$sql .=
" s2.nom as name2,";
804$sql .=
' typent.code as typent_code,';
805$sql .=
' state.code_departement as state_code, state.nom as state_name,';
806$sql .=
' country.code as country_code,';
807$sql .=
' f.fk_fac_rec_source,';
808$sql .=
' p.rowid as project_id, p.ref as project_ref, p.title as project_label,';
809$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';
819if (!empty($extrafields->attributes[
$object->table_element][
'label'])) {
820 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $val) {
821 $sql .= ($extrafields->attributes[
$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
825$parameters = array();
826$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters, $object, $action);
827$sql .= $hookmanager->resPrint;
828$sql = preg_replace(
'/,\s*$/',
'', $sql);
832$sql .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
833$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s2 ON s2.rowid = s.parent";
834$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as country on (country.rowid = s.fk_pays)";
835$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_typent as typent on (typent.id = s.fk_typent)";
836$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_departements as state on (state.rowid = s.fk_departement)";
837$sql .=
', '.MAIN_DB_PREFIX.
'facture as f';
839if ($sortfield ==
"f.datef") {
840 $hasAnotherfilter =
false;
841 foreach ($search_array_options as $v) {
842 if ($v !==
'' && (
string) $v !==
'-1') {
843 $hasAnotherfilter =
true;
847 if (!$hasAnotherfilter) {
848 $sql .=
$db->hintindex(
'idx_facture_datef');
851if (isset($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
852 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element.
"_extrafields as ef on (f.rowid = ef.fk_object)";
854if (!empty($search_fac_rec_source_title)) {
855 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'facture_rec as facrec ON f.fk_fac_rec_source = facrec.rowid';
857$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"projet as p ON p.rowid = f.fk_projet";
858$sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'user AS u ON f.fk_user_author = u.rowid';
859$sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'bank_account as ba ON ba.rowid = f.fk_account';
861$parameters = array();
862$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters, $object, $action);
863$sql .= $hookmanager->resPrint;
865$sql .=
' WHERE f.fk_soc = s.rowid';
866$sql .=
' AND f.entity IN ('.getEntity(
'invoice').
')';
868 $sql .=
' AND s.rowid = '.((int) $socid);
872 $sql .=
' AND f.fk_user_author IS NULL';
874 $sql .=
' AND f.fk_user_author = '.((int) $userid);
880if ($search_refcustomer) {
883if ($search_type !=
'' && $search_type !=
'-1') {
884 $sql .=
" AND f.type IN (".$db->sanitize(
$db->escape($search_type)).
")";
886if ($search_subtype !=
'' && $search_subtype !=
'-1') {
887 $sql .=
" AND f.subtype IN (".$db->sanitize(
$db->escape($search_subtype)).
")";
889if ($search_project_ref) {
892if ($search_project) {
895if (empty($arrayfields[
's.name_alias'][
'checked']) && $search_company) {
896 $sql .=
natural_search(array(
"s.nom",
"s.name_alias"), $search_company);
898 if ($search_company) {
901 if ($search_company_alias) {
905if ($search_parent_name) {
908if ($search_customer_code) {
920if (strlen(trim($search_country))) {
922 $country_code_in_EEC = $country_code_in_EEC_without_me =
'';
923 foreach ($arrayofcode as $key => $value) {
924 $country_code_in_EEC .= ($country_code_in_EEC ?
"," :
"").
"'".$value.
"'";
925 if ($value !=
$mysoc->country_code) {
926 $country_code_in_EEC_without_me .= ($country_code_in_EEC_without_me ?
"," :
"").
"'".$value.
"'";
929 if ($search_country ==
'special_allnotme') {
930 $sql .=
" AND country.code <> '".$db->escape(
$mysoc->country_code).
"'";
931 } elseif ($search_country ==
'special_eec') {
932 $sql .=
" AND country.code IN (".$db->sanitize($country_code_in_EEC, 1).
")";
933 } elseif ($search_country ==
'special_eecnotme') {
934 $sql .=
" AND country.code IN (".$db->sanitize($country_code_in_EEC_without_me, 1).
")";
935 } elseif ($search_country ==
'special_noteec') {
936 $sql .=
" AND country.code NOT IN (".$db->sanitize($country_code_in_EEC, 1).
")";
941if ($search_type_thirdparty !=
'' && $search_type_thirdparty !=
'-1') {
942 $sql .=
" AND s.fk_typent IN (".$db->sanitize(
$db->escape($search_type_thirdparty)).
')';
944if ($search_montant_ht !=
'') {
947if ($search_montant_vat !=
'') {
950if ($search_montant_localtax1 !=
'') {
951 $sql .=
natural_search(
'f.localtax1', $search_montant_localtax1, 1);
953if ($search_montant_localtax2 !=
'') {
954 $sql .=
natural_search(
'f.localtax2', $search_montant_localtax2, 1);
956if ($search_montant_ttc !=
'') {
959if ($search_multicurrency_code !=
'') {
960 $sql .=
" AND f.multicurrency_code = '".$db->escape($search_multicurrency_code).
"'";
962if ($search_multicurrency_tx !=
'') {
963 $sql .=
natural_search(
'f.multicurrency_tx', $search_multicurrency_tx, 1);
965if ($search_multicurrency_montant_ht !=
'') {
966 $sql .=
natural_search(
'f.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
968if ($search_multicurrency_montant_vat !=
'') {
969 $sql .=
natural_search(
'f.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
971if ($search_multicurrency_montant_ttc !=
'') {
972 $sql .=
natural_search(
'f.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
975 $sql .=
natural_search(array(
'u.login',
'u.firstname',
'u.lastname'), $search_login);
977if ($search_dispute_status !=
'-1' && $search_dispute_status !=
'') {
978 if ($search_dispute_status ==
'0') {
979 $sql .=
" AND (f.dispute_status IS NULL OR f.dispute_status = 0)";
981 $sql .=
" AND f.dispute_status IN (".$db->sanitize($search_dispute_status).
")";
984if (is_array($search_status) && count($search_status) > 0) {
985 $search_statusArray = $search_status;
986 $sql .=
" AND f.fk_statut IN (" .
$db->sanitize(implode(
',', array_map(
'intval', $search_statusArray))) .
")";
989if ($search_paymentmode > 0) {
990 $sql .=
" AND f.fk_mode_reglement = ".((int) $search_paymentmode);
992if ($search_paymentterms > 0) {
993 $sql .=
" AND f.fk_cond_reglement = ".((int) $search_paymentterms);
995if ($search_bankaccount > 0) {
996 $sql .=
" AND ba.rowid = ".((int) $search_bankaccount);
998if ($search_fk_input_reason > 0) {
999 $sql .=
" AND f.fk_input_reason = ".((int) $search_fk_input_reason);
1001if ($search_module_source) {
1002 $sql .=
natural_search(
"f.module_source", $search_module_source);
1004if ($search_pos_source) {
1007if ($search_date_start) {
1008 $sql .=
" AND f.datef >= '".$db->idate($search_date_start).
"'";
1010if ($search_date_end) {
1011 $sql .=
" AND f.datef <= '".$db->idate($search_date_end).
"'";
1013if ($search_date_valid_start) {
1014 $sql .=
" AND f.date_valid >= '".$db->idate($search_date_valid_start).
"'";
1016if ($search_date_valid_end) {
1017 $sql .=
" AND f.date_valid <= '".$db->idate($search_date_valid_end).
"'";
1019if ($search_datelimit_start) {
1020 $sql .=
" AND f.date_lim_reglement >= '".$db->idate($search_datelimit_start).
"'";
1022if ($search_datelimit_end) {
1023 $sql .=
" AND f.date_lim_reglement <= '".$db->idate($search_datelimit_end).
"'";
1025if ($search_note_public) {
1026 $sql .=
" AND p.note_public LIKE '%".$db->escape(
$db->escapeforlike($search_note_public)).
"%'";
1028if ($search_note_private) {
1029 $sql .=
" AND p.note_private LIKE '%".$db->escape(
$db->escapeforlike($search_note_private)).
"%'";
1031if ($search_datec_start) {
1032 $sql .=
" AND f.datec >= '".$db->idate($search_datec_start).
"'";
1034if ($search_datec_end) {
1035 $sql .=
" AND f.datec <= '".$db->idate($search_datec_end).
"'";
1037if ($search_datem_start) {
1038 $sql .=
" AND f.tms >= '".$db->idate($search_datem_start).
"'";
1040if ($search_datem_end) {
1041 $sql .=
" AND f.tms <= '".$db->idate($search_datem_end).
"'";
1043if ($search_option ==
'late') {
1044 $sql .=
" AND f.date_lim_reglement < '".$db->idate(
dol_now() -
$conf->invoice->client->warning_delay).
"'";
1049if (!empty($search_fac_rec_source_title)) {
1050 $sql .=
natural_search(
'facrec.titre', $search_fac_rec_source_title);
1052if ($search_fk_fac_rec_source) {
1053 $sql .=
' AND f.fk_fac_rec_source = ' . (int) $search_fk_fac_rec_source;
1055if ($search_import_key) {
1059if ($search_user > 0) {
1060 $sql .=
" AND EXISTS (";
1061 $sql .=
" SELECT ec.fk_c_type_contact, ec.element_id, ec.fk_socpeople";
1062 $sql .=
" FROM ".MAIN_DB_PREFIX.
"element_contact as ec";
1063 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"c_type_contact as tc";
1064 $sql .=
" ON ec.fk_c_type_contact = tc.rowid AND tc.element = 'facture' AND tc.source = 'internal'";
1065 $sql .=
" WHERE ec.element_id = f.rowid AND ec.fk_socpeople = ".((int) $search_user).
")";
1068if ($search_sale && $search_sale !=
'-1') {
1069 if ($search_sale == -2) {
1070 $sql .=
" AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = f.fk_soc)";
1071 } elseif ($search_sale > 0) {
1072 $sql .=
" AND EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = f.fk_soc AND sc.fk_user = ".((int) $search_sale).
")";
1077if (!empty($searchCategoryInvoiceList)) {
1078 $searchCategoryInvoiceSqlList = array();
1079 $listofcategoryid =
'';
1080 foreach ($searchCategoryInvoiceList as $searchCategoryInvoice) {
1081 if (intval($searchCategoryInvoice) == -2) {
1082 $searchCategoryInvoiceSqlList[] =
"NOT EXISTS (SELECT ck.fk_invoice FROM ".MAIN_DB_PREFIX.
"categorie_invoice as ck WHERE f.rowid = ck.fk_invoice)";
1083 } elseif (intval($searchCategoryInvoice) > 0) {
1084 if ($searchCategoryInvoiceOperator == 0) {
1085 $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).
")";
1087 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryInvoice);
1091 if ($listofcategoryid) {
1092 $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).
"))";
1094 if ($searchCategoryInvoiceOperator == 1) {
1095 if (!empty($searchCategoryInvoiceSqlList)) {
1096 $sql .=
" AND (".implode(
' OR ', $searchCategoryInvoiceSqlList).
")";
1099 if (!empty($searchCategoryInvoiceSqlList)) {
1100 $sql .=
" AND (".implode(
' AND ', $searchCategoryInvoiceSqlList).
")";
1106$searchCategoryProductList = $search_product_category ? array($search_product_category) : array();
1107$searchCategoryProductOperator = 0;
1108if (!empty($searchCategoryProductList)) {
1109 $searchCategoryProductSqlList = array();
1110 $listofcategoryid =
'';
1111 foreach ($searchCategoryProductList as $searchCategoryProduct) {
1112 if (intval($searchCategoryProduct) == -2) {
1113 $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)";
1114 } elseif (intval($searchCategoryProduct) > 0) {
1115 if ($searchCategoryProductOperator == 0) {
1116 $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).
")";
1118 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryProduct);
1122 if ($listofcategoryid) {
1123 $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).
"))";
1125 if ($searchCategoryProductOperator == 1) {
1126 if (!empty($searchCategoryProductSqlList)) {
1127 $sql .=
" AND (".implode(
' OR ', $searchCategoryProductSqlList).
")";
1130 if (!empty($searchCategoryProductSqlList)) {
1131 $sql .=
" AND (".implode(
' AND ', $searchCategoryProductSqlList).
")";
1135$searchCategoryCustomerList = $search_categ_cus ? array($search_categ_cus) : array();
1136$searchCategoryCustomerOperator = 0;
1138if (!empty($searchCategoryCustomerList)) {
1139 $searchCategoryCustomerSqlList = array();
1140 $listofcategoryid =
'';
1141 foreach ($searchCategoryCustomerList as $searchCategoryCustomer) {
1142 if (intval($searchCategoryCustomer) == -2) {
1143 $searchCategoryCustomerSqlList[] =
"NOT EXISTS (SELECT ck.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as ck WHERE s.rowid = ck.fk_soc)";
1144 } elseif (intval($searchCategoryCustomer) > 0) {
1145 if ($searchCategoryCustomerOperator == 0) {
1146 $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).
")";
1148 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryCustomer);
1152 if ($listofcategoryid) {
1153 $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).
"))";
1155 if ($searchCategoryCustomerOperator == 1) {
1156 if (!empty($searchCategoryCustomerSqlList)) {
1157 $sql .=
" AND (".implode(
' OR ', $searchCategoryCustomerSqlList).
")";
1160 if (!empty($searchCategoryCustomerSqlList)) {
1161 $sql .=
" AND (".implode(
' AND ', $searchCategoryCustomerSqlList).
")";
1166include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
1168$parameters = array();
1169$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action);
1170$sql .= $hookmanager->resPrint;
1175 $fieldstosearchallwithoutpd = array();
1176 $fieldstosearchallwithpd = array();
1177 foreach ($fieldstosearchall as $key => $val) {
1178 if (!preg_match(
'/^pd\./', $key)) {
1179 $fieldstosearchallwithoutpd[$key] = $val;
1181 $fieldstosearchallwithpd[$key] = $val;
1185 if (count($fieldstosearchallwithpd) > 0) {
1186 $sqltoadd .=
" OR EXISTS (SELECT pd.rowid FROM ".MAIN_DB_PREFIX.
"facturedet as pd WHERE pd.fk_facture = f.rowid";
1187 $sqltoadd .=
natural_search(array_keys($fieldstosearchallwithpd),
'__KEYTOSEARCH__');
1191 $sql .=
natural_search(array_keys($fieldstosearchallwithoutpd), $search_all, 0, 0, $sqltoadd);
1194$parameters = array();
1195$reshook = $hookmanager->executeHooks(
'printFieldListHaving', $parameters, $object, $action);
1196if (empty($reshook)) {
1197 $sql .= empty($hookmanager->resPrint) ?
"" :
" HAVING 1=1 ".$hookmanager->resPrint;
1199 $sql = $hookmanager->resPrint;
1203$nbtotalofrecords =
'';
1206 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
1207 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
1209 $resql =
$db->query($sqlforcount);
1211 $objforcount =
$db->fetch_object($resql);
1212 $nbtotalofrecords = $objforcount->nbtotalofrecords;
1217 if (($page * $limit) > (
int) $nbtotalofrecords) {
1225$sql .=
$db->order($sortfield, $sortorder);
1227 $sql .=
$db->plimit($limit + 1, $offset);
1230$resql =
$db->query($sql);
1236$num =
$db->num_rows($resql);
1238$arrayofselected = is_array($toselect) ? $toselect : array();
1240if ($num == 1 &&
getDolGlobalString(
'MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all) {
1241 $obj =
$db->fetch_object($resql);
1244 header(
"Location: ".DOL_URL_ROOT.
'/compta/facture/card.php?id='.
$id);
1251llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'bodyforlist'.($contextpage ==
'poslist' ?
' '.$contextpage :
''));
1254if ($search_fk_fac_rec_source) {
1256 $object->fetch((
int) $search_fk_fac_rec_source);
1265 $param .=
'&mode='.urlencode($mode);
1267if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
1268 $param .=
'&contextpage='.urlencode($contextpage);
1270if ($limit > 0 && $limit !=
$conf->liste_limit) {
1271 $param .=
'&limit='.((int) $limit);
1273if ($optioncss !=
'') {
1274 $param .=
'&optioncss='.urlencode($optioncss);
1277 $param .=
'&show_files='.urlencode((
string) ($show_files));
1280 $param .=
'&search_all='.urlencode($search_all);
1283 $param .=
'&socid='.((int) $socid);
1285if ($search_date_startday) {
1286 $param .=
'&search_date_startday='.urlencode((
string) ($search_date_startday));
1288if ($search_date_startmonth) {
1289 $param .=
'&search_date_startmonth='.urlencode((
string) ($search_date_startmonth));
1291if ($search_date_startyear) {
1292 $param .=
'&search_date_startyear='.urlencode((
string) ($search_date_startyear));
1294if ($search_date_endday) {
1295 $param .=
'&search_date_endday='.urlencode((
string) ($search_date_endday));
1297if ($search_date_endmonth) {
1298 $param .=
'&search_date_endmonth='.urlencode((
string) ($search_date_endmonth));
1300if ($search_date_endyear) {
1301 $param .=
'&search_date_endyear='.urlencode((
string) ($search_date_endyear));
1303if ($search_date_valid_startday) {
1304 $param .=
'&search_date_valid_startday='.urlencode((
string) ($search_date_valid_startday));
1306if ($search_date_valid_startmonth) {
1307 $param .=
'&search_date_valid_startmonth='.urlencode((
string) ($search_date_valid_startmonth));
1309if ($search_date_valid_startyear) {
1310 $param .=
'&search_date_valid_startyear='.urlencode((
string) ($search_date_valid_startyear));
1312if ($search_date_valid_endday) {
1313 $param .=
'&search_date_valid_endday='.urlencode((
string) ($search_date_valid_endday));
1315if ($search_date_valid_endmonth) {
1316 $param .=
'&search_date_valid_endmonth='.urlencode((
string) ($search_date_valid_endmonth));
1318if ($search_date_valid_endyear) {
1319 $param .=
'&search_date_valid_endyear='.urlencode((
string) ($search_date_valid_endyear));
1321if ($search_datelimit_startday) {
1322 $param .=
'&search_datelimit_startday='.urlencode((
string) ($search_datelimit_startday));
1324if ($search_datelimit_startmonth) {
1325 $param .=
'&search_datelimit_startmonth='.urlencode((
string) ($search_datelimit_startmonth));
1327if ($search_datelimit_startyear) {
1328 $param .=
'&search_datelimit_startyear='.urlencode((
string) ($search_datelimit_startyear));
1330if ($search_datelimit_endday) {
1331 $param .=
'&search_datelimit_endday='.urlencode((
string) ($search_datelimit_endday));
1333if ($search_datelimit_endmonth) {
1334 $param .=
'&search_datelimit_endmonth='.urlencode((
string) ($search_datelimit_endmonth));
1336if ($search_datelimit_endyear) {
1337 $param .=
'&search_datelimit_endyear='.urlencode((
string) ($search_datelimit_endyear));
1340 $param .=
'&search_ref='.urlencode($search_ref);
1342if ($search_refcustomer) {
1343 $param .=
'&search_refcustomer='.urlencode($search_refcustomer);
1345if ($search_project_ref) {
1346 $param .=
'&search_project_ref='.urlencode($search_project_ref);
1348if ($search_project) {
1349 $param .=
'&search_project='.urlencode($search_project);
1351if ($search_type !=
'') {
1352 $param .=
'&search_type='.urlencode($search_type);
1354if ($search_subtype !=
'') {
1355 $param .=
'&search_subtype='.urlencode($search_subtype);
1357if ($search_company) {
1358 $param .=
'&search_company='.urlencode($search_company);
1360if ($search_company_alias) {
1361 $param .=
'&search_company_alias='.urlencode($search_company_alias);
1363if ($search_parent_name !=
'') {
1364 $param .=
'&search_parent_name='.urlencode($search_parent_name);
1367 $param .=
'&search_town='.urlencode($search_town);
1370 $param .=
'&search_zip='.urlencode($search_zip);
1372if ($search_country) {
1373 $param .=
"&search_country=".urlencode($search_country);
1375if ($search_type_thirdparty !=
'') {
1376 $param .=
'&search_type_thirdparty='.urlencode($search_type_thirdparty);
1378if ($search_customer_code) {
1379 $param .=
'&search_customer_code='.urlencode($search_customer_code);
1381if ($search_sale > 0) {
1382 $param .=
'&search_sale='.urlencode((
string) $search_sale);
1384if ($search_user > 0) {
1385 $param .=
'&search_user='.urlencode((
string) $search_user);
1388 $param .=
'&search_login='.urlencode($search_login);
1390if ($searchCategoryInvoiceOperator == 1) {
1391 $param .=
"&search_category_invoice_operator=".urlencode((
string) ($searchCategoryInvoiceOperator));
1393foreach ($searchCategoryInvoiceList as $searchCategoryInvoice) {
1394 $param .=
"&search_category_invoice_list[]=".urlencode($searchCategoryInvoice);
1396if ($search_product_category > 0) {
1397 $param .=
'&search_product_category='.urlencode((
string) $search_product_category);
1399if ($search_montant_ht !=
'') {
1400 $param .=
'&search_montant_ht='.urlencode($search_montant_ht);
1402if ($search_montant_vat !=
'') {
1403 $param .=
'&search_montant_vat='.urlencode($search_montant_vat);
1405if ($search_montant_localtax1 !=
'') {
1406 $param .=
'&search_montant_localtax1='.urlencode($search_montant_localtax1);
1408if ($search_montant_localtax2 !=
'') {
1409 $param .=
'&search_montant_localtax2='.urlencode($search_montant_localtax2);
1411if ($search_montant_ttc !=
'') {
1412 $param .=
'&search_montant_ttc='.urlencode($search_montant_ttc);
1414if ($search_multicurrency_code !=
'') {
1415 $param .=
'&search_multicurrency_code='.urlencode($search_multicurrency_code);
1417if ($search_multicurrency_tx !=
'') {
1418 $param .=
'&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
1420if ($search_multicurrency_montant_ht !=
'') {
1421 $param .=
'&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
1423if ($search_multicurrency_montant_vat !=
'') {
1424 $param .=
'&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
1426if ($search_multicurrency_montant_ttc !=
'') {
1427 $param .=
'&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
1429if ($search_dispute_status !=
'') {
1430 $param .=
'&search_dispute_status='.urlencode($search_dispute_status);
1432if (count($search_status) > 0) {
1433 foreach ($search_status as $key => $val) {
1434 $param .=
'&search_status[]='.urlencode($val);
1437if ($search_paymentmode > 0) {
1438 $param .=
'&search_paymentmode='.urlencode((
string) ($search_paymentmode));
1440if ($search_paymentterms > 0) {
1441 $param .=
'&search_paymentterms='.urlencode((
string) ($search_paymentterms));
1443if ($search_bankaccount > 0) {
1444 $param .=
'&search_bankaccount='.urlencode((
string) ($search_bankaccount));
1446if ($search_fk_input_reason > 0) {
1447 $param .=
'&search_fk_input_reason='.urlencode((
string) $search_fk_input_reason);
1449if ($search_module_source) {
1450 $param .=
'&search_module_source='.urlencode($search_module_source);
1452if ($search_pos_source) {
1453 $param .=
'&search_pos_source='.urlencode($search_pos_source);
1455if ($search_option) {
1456 $param .=
"&search_option=".urlencode($search_option);
1458if ($search_categ_cus > 0) {
1459 $param .=
'&search_categ_cus='.urlencode((
string) ($search_categ_cus));
1461if (!empty($search_fac_rec_source_title)) {
1462 $param .=
'&search_fac_rec_source_title='.urlencode($search_fac_rec_source_title);
1464if ($search_fk_fac_rec_source) {
1465 $param .=
'&search_fk_fac_rec_source=' . (int) $search_fk_fac_rec_source;
1467if ($search_import_key !=
'') {
1468 $param .=
'&search_import_key='.urlencode($search_import_key);
1472include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
1474$parameters = array(
'param' => &$param);
1475$reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters, $object, $action);
1476$param .= $hookmanager->resPrint;
1478$arrayofmassactions = array(
1479 'validate' =>
img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"Validate"),
1480 'generate_doc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"ReGeneratePDF"),
1481 'builddoc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"PDFMerge"),
1482 'presend' =>
img_picto(
'',
'email',
'class="pictofixedwidth"').$langs->trans(
"SendByMail"),
1485if (
isModEnabled(
'category') && $user->hasRight(
'facture',
'creer')) {
1486 $arrayofmassactions[
'preaffecttag'] =
img_picto(
'',
'category',
'class="pictofixedwidth"').$langs->trans(
"AffectTag");
1488if ($user->hasRight(
'facture',
'paiement')) {
1489 $arrayofmassactions[
'makepayment'] =
img_picto(
'',
'payment',
'class="pictofixedwidth"').$langs->trans(
"MakePaymentAndClassifyPayed");
1491if (
isModEnabled(
'prelevement') && $user->hasRight(
'prelevement',
'bons',
'creer')) {
1492 $langs->load(
"withdrawals");
1493 $arrayofmassactions[
'withdrawrequest'] =
img_picto(
'',
'payment',
'class="pictofixedwidth"').$langs->trans(
"MakeWithdrawRequest");
1495if ($user->hasRight(
'facture',
'supprimer')) {
1497 $arrayofmassactions[
'predeletedraft'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Deletedraft");
1500if ($user->hasRight(
"facture",
"creer")) {
1502 $arrayofmassactions[
'precreatecreditnote'] =
img_picto(
'',
'undo',
'class="pictofixedwidth"').$langs->trans(
"cancelByCreditNote");
1505if (in_array($massaction, array(
'presend',
'predelete',
'makepayment'))) {
1506 $arrayofmassactions = array();
1508$massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
1513if ($contextpage !=
'poslist') {
1514 $url = DOL_URL_ROOT.
'/compta/facture/card.php?action=create';
1516 $url .=
'&socid='.urlencode((
string)
$object->socid);
1519 $url .=
'&fac_rec='.urlencode((
string)
$object->id);
1521 $newcardbutton =
'';
1522 $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'));
1523 $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'));
1524 $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'));
1526 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewBill'),
'',
'fa fa-plus-circle', $url,
'', $user->hasRight(
"facture",
"creer"));
1532print
'<form method="POST" id="searchFormList" name="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">'.
"\n";
1533if ($optioncss !=
'') {
1534 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
1536print
'<input type="hidden" name="token" value="'.newToken().
'">';
1537print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
1538if (!in_array($massaction, array(
'makepayment'))) {
1539 print
'<input type="hidden" name="action" value="list">';
1541print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
1542print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
1544print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
1545print
'<input type="hidden" name="socid" value="'.$socid.
'">';
1546print
'<input type="hidden" name="mode" value="'.$mode.
'">';
1548print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'bill', 0, $newcardbutton,
'', $limit, 0, 0, 1);
1550$topicmail =
"SendBillRef";
1551$modelmail =
"facture_send";
1553$trackid =
'inv'.$object->id;
1554include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
1556if ($massaction ==
'makepayment') {
1558 $formquestion = array(
1562 array(
'type' =>
'date',
'name' =>
'datepaiment',
'label' => $langs->trans(
"Date"),
'datenow' => 1),
1563 array(
'type' =>
'other',
'name' =>
'paiementid',
'label' => $langs->trans(
"PaymentMode"),
'value' => $form->select_types_paiements(
GETPOST(
'search_paymentmode'),
'paiementid',
'', 0, 0, 1, 0, 1,
'', 1)),
1564 array(
'type' =>
'other',
'name' =>
'bankid',
'label' => $langs->trans(
"BankAccount"),
'value' => $form->select_comptes(
'',
'bankid', 0,
'', 0,
'', 0,
'', 1)),
1565 array(
'type' =>
'other',
'name' =>
'note_private',
'label' => $langs->trans(
"Comments"),
'value' =>
'<textarea name="note_private" id="note_private" class="minwidth200" rows="3"></textarea>'),
1568 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
'MakePaymentAndClassifyPayed'), $langs->trans(
'EnterPaymentReceivedFromCustomer'),
'makepayment_confirm', $formquestion, 1, 0, 200, 500, 1);
1573 foreach ($fieldstosearchall as $key => $val) {
1574 $fieldstosearchall[$key] = $langs->trans($val);
1576 print
'<div class="divsearchfieldfilter">'.$langs->trans(
"FilterOnInto", $search_all).implode(
', ', $fieldstosearchall).
'</div>';
1582if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'read')) {
1584 $moreforfilter .= $formcategory->getFilterBox(Categorie::TYPE_INVOICE, $searchCategoryInvoiceList,
'minwidth300', $searchCategoryInvoiceOperator ? $searchCategoryInvoiceOperator : 0);
1586if ($user->hasRight(
"user",
"user",
"lire")) {
1587 $langs->load(
"commercial");
1588 $moreforfilter .=
'<div class="divsearchfield">';
1589 $tmptitle = $langs->trans(
'ThirdPartiesOfSaleRepresentative');
1590 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$formother->select_salesrepresentatives($search_sale,
'search_sale', $user, 0, $tmptitle,
'maxwidth200');
1591 $moreforfilter .=
'</div>';
1594if ($user->hasRight(
"user",
"user",
"lire")) {
1595 $moreforfilter .=
'<div class="divsearchfield">';
1596 $tmptitle = $langs->trans(
'LinkedToSpecificUsers');
1597 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$form->select_dolusers($search_user,
'search_user', $tmptitle,
null, 0,
'',
'',
'0', 0, 0,
'', 0,
'',
'maxwidth200');
1598 $moreforfilter .=
'</div>';
1601if (
isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire") && ($user->hasRight(
"produit",
"lire") || $user->hasRight(
"service",
"lire"))) {
1602 include_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1603 $moreforfilter .=
'<div class="divsearchfield">';
1604 $tmptitle = $langs->trans(
'IncludingProductWithTag');
1605 $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT,
'',
'parent', 0, 0, 1);
1606 $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);
1607 $moreforfilter .=
'</div>';
1609if (
isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire")) {
1610 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1611 $moreforfilter .=
'<div class="divsearchfield">';
1612 $tmptitle = $langs->trans(
'CustomersProspectsCategoriesShort');
1613 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$formother->select_categories(
'customer', $search_categ_cus,
'search_categ_cus', 1, $tmptitle);
1614 $moreforfilter .=
'</div>';
1617$moreforfilter .=
'<div class="divsearchfield">';
1618$moreforfilter .=
'<label for="search_option">'.$langs->trans(
'Alert').
' </label><input type="checkbox" name="search_option" id="search_option" value="late"'.($search_option ==
'late' ?
' checked' :
'').
'>';
1619$moreforfilter .=
'</div>';
1621$parameters = array();
1622$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1623if (empty($reshook)) {
1624 $moreforfilter .= $hookmanager->resPrint;
1626 $moreforfilter = $hookmanager->resPrint;
1629if (!empty($moreforfilter)) {
1630 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1631 print $moreforfilter;
1636$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
1637$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
$conf->main_checkbox_left_column);
1640if ($massactionbutton && $contextpage !=
'poslist') {
1641 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
1644print
'<div class="div-table-responsive">';
1645print
'<table class="tagtable nobottomiftotal liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
1649print
'<tr class="liste_titre_filter">';
1652if (
$conf->main_checkbox_left_column) {
1653 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
1654 $searchpicto = $form->showFilterButtons(
'left');
1660 print
'<td class="liste_titre">';
1664if (!empty($arrayfields[
'f.ref'][
'checked'])) {
1665 print
'<td class="liste_titre">';
1666 print
'<input class="flat maxwidth75imp" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
1670if (!empty($arrayfields[
'f.ref_client'][
'checked'])) {
1671 print
'<td class="liste_titre">';
1672 print
'<input class="flat maxwidth50imp" type="text" name="search_refcustomer" value="'.dol_escape_htmltag($search_refcustomer).
'">';
1676if (!empty($arrayfields[
'f.type'][
'checked'])) {
1677 print
'<td class="liste_titre maxwidthonsmartphone">';
1689 print $form->selectarray(
'search_type', $listtype, $search_type, 1, 0, 0,
'', 0, 0, 0,
'',
'maxwidth75');
1693if (!empty($arrayfields[
'f.subtype'][
'checked'])) {
1694 print
'<td class="liste_titre maxwidthonsmartphone" align="center">';
1695 print $form->selectarray(
'search_subtype', $subtypearray, $search_subtype, 1, 0, 0,
'', 0, 0, 0,
'',
'maxwidth100');
1699if (!empty($arrayfields[
'f.datef'][
'checked'])) {
1700 print
'<td class="liste_titre center">';
1701 print
'<div class="nowrapfordate">';
1702 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1704 print
'<div class="nowrapfordate">';
1705 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1710if (!empty($arrayfields[
'f.date_valid'][
'checked'])) {
1711 print
'<td class="liste_titre center">';
1712 print
'<div class="nowrapfordate">';
1713 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'));
1715 print
'<div class="nowrapfordate">';
1716 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'));
1721if (!empty($arrayfields[
'f.date_lim_reglement'][
'checked'])) {
1722 print
'<td class="liste_titre center">';
1723 print
'<div class="nowrapfordate">';
1724 print $form->selectDate($search_datelimit_start ? $search_datelimit_start : -1,
'search_datelimit_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1726 print
'<div class="nowrapfordate">';
1727 print $form->selectDate($search_datelimit_end ? $search_datelimit_end : -1,
'search_datelimit_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1732if (!empty($arrayfields[
'p.ref'][
'checked'])) {
1733 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_project_ref" value="'.dol_escape_htmltag($search_project_ref).
'"></td>';
1736if (!empty($arrayfields[
'p.title'][
'checked'])) {
1737 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_project" value="'.dol_escape_htmltag($search_project).
'"></td>';
1740if (!empty($arrayfields[
's.nom'][
'checked'])) {
1741 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>';
1744if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
1745 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_company_alias" value="'.dol_escape_htmltag($search_company_alias).
'"></td>';
1748if (!empty($arrayfields[
's2.nom'][
'checked'])) {
1749 print
'<td class="liste_titre">';
1750 print
'<input class="flat maxwidth100" type="text" name="search_parent_name" value="'.dol_escape_htmltag($search_parent_name).
'">';
1754if (!empty($arrayfields[
's.code_client'][
'checked'])) {
1755 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_customer_code" value="'.dol_escape_htmltag($search_customer_code).
'"></td>';
1758if (!empty($arrayfields[
's.town'][
'checked'])) {
1759 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).
'"></td>';
1762if (!empty($arrayfields[
's.zip'][
'checked'])) {
1763 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_zip" value="'.dol_escape_htmltag($search_zip).
'"></td>';
1766if (!empty($arrayfields[
'state.nom'][
'checked'])) {
1767 print
'<td class="liste_titre">';
1768 print
'<input class="flat maxwidth50imp" type="text" name="search_state" value="'.dol_escape_htmltag($search_state).
'">';
1772if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
1773 print
'<td class="liste_titre center">';
1774 print $form->select_country($search_country,
'search_country',
'', 0,
'minwidth150imp maxwidth150',
'code2', 1, 0, 1, array(), 1);
1778if (!empty($arrayfields[
'typent.code'][
'checked'])) {
1779 print
'<td class="liste_titre maxwidthonsmartphone center">';
1780 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);
1784if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked'])) {
1785 print
'<td class="liste_titre">';
1786 print $form->select_types_paiements($search_paymentmode,
'search_paymentmode',
'', 0, 1, 1, 0, 1,
'minwidth100 maxwidth100', 1);
1790if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked'])) {
1791 print
'<td class="liste_titre left">';
1792 print $form->getSelectConditionsPaiements((
int) $search_paymentterms,
'search_paymentterms', -1, 1, 1,
'minwidth100 maxwidth100');
1796if (!empty($arrayfields[
'ba.label'][
'checked'])) {
1797 print
'<td class="liste_titre">';
1798 $form->select_comptes($search_bankaccount,
'search_bankaccount', 0,
'', 1,
'', 0,
'maxwidth125');
1802if (!empty($arrayfields[
'f.fk_input_reason'][
'checked'])) {
1803 print
'<td class="liste_titre">';
1804 $form->selectInputReason($search_fk_input_reason,
'search_fk_input_reason',
'', 1,
'', 1);
1808if (!empty($arrayfields[
'f.module_source'][
'checked'])) {
1809 print
'<td class="liste_titre">';
1810 print
'<input class="flat maxwidth75" type="text" name="search_module_source" value="'.dol_escape_htmltag($search_module_source).
'">';
1814if (!empty($arrayfields[
'f.pos_source'][
'checked'])) {
1815 print
'<td class="liste_titre">';
1816 print
'<input class="flat maxwidth50" type="text" name="search_pos_source" value="'.dol_escape_htmltag($search_pos_source).
'">';
1819if (!empty($arrayfields[
'f.total_ht'][
'checked'])) {
1821 print
'<td class="liste_titre right">';
1822 print
'<input class="flat" type="text" size="4" name="search_montant_ht" value="'.dol_escape_htmltag($search_montant_ht).
'">';
1825if (!empty($arrayfields[
'f.total_tva'][
'checked'])) {
1827 print
'<td class="liste_titre right">';
1828 print
'<input class="flat" type="text" size="4" name="search_montant_vat" value="'.dol_escape_htmltag($search_montant_vat).
'">';
1831if (!empty($arrayfields[
'f.total_localtax1'][
'checked'])) {
1833 print
'<td class="liste_titre right">';
1834 print
'<input class="flat" type="text" size="4" name="search_montant_localtax1" value="'.dol_escape_htmltag($search_montant_localtax1).
'">';
1837if (!empty($arrayfields[
'f.total_localtax2'][
'checked'])) {
1839 print
'<td class="liste_titre right">';
1840 print
'<input class="flat" type="text" size="4" name="search_montant_localtax2" value="'.dol_escape_htmltag($search_montant_localtax2).
'">';
1843if (!empty($arrayfields[
'f.total_ttc'][
'checked'])) {
1845 print
'<td class="liste_titre right">';
1846 print
'<input class="flat" type="text" size="4" name="search_montant_ttc" value="'.dol_escape_htmltag($search_montant_ttc).
'">';
1849if (!empty($arrayfields[
'u.login'][
'checked'])) {
1851 print
'<td class="liste_titre" align="center">';
1852 print
'<input class="flat" size="4" type="text" name="search_login" value="'.dol_escape_htmltag($search_login).
'">';
1855if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
1856 print
'<td class="liste_titre"></td>';
1858if (!empty($arrayfields[
'f.retained_warranty'][
'checked'])) {
1859 print
'<td class="liste_titre" align="right">';
1862if (!empty($arrayfields[
'dynamount_payed'][
'checked'])) {
1863 print
'<td class="liste_titre right">';
1866if (!empty($arrayfields[
'rtp'][
'checked'])) {
1867 print
'<td class="liste_titre">';
1870if (!empty($arrayfields[
'f.multicurrency_code'][
'checked'])) {
1872 print
'<td class="liste_titre">';
1873 print $form->selectMultiCurrency($search_multicurrency_code,
'search_multicurrency_code', 1);
1876if (!empty($arrayfields[
'f.multicurrency_tx'][
'checked'])) {
1878 print
'<td class="liste_titre">';
1879 print
'<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).
'">';
1882if (!empty($arrayfields[
'f.multicurrency_total_ht'][
'checked'])) {
1884 print
'<td class="liste_titre right">';
1885 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).
'">';
1888if (!empty($arrayfields[
'f.multicurrency_total_vat'][
'checked'])) {
1890 print
'<td class="liste_titre right">';
1891 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).
'">';
1894if (!empty($arrayfields[
'f.multicurrency_total_ttc'][
'checked'])) {
1896 print
'<td class="liste_titre right">';
1897 print
'<input class="flat width75" type="text" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).
'">';
1900if (!empty($arrayfields[
'multicurrency_dynamount_payed'][
'checked'])) {
1901 print
'<td class="liste_titre">';
1904if (!empty($arrayfields[
'multicurrency_rtp'][
'checked'])) {
1905 print
'<td class="liste_titre right">';
1908if (!empty($arrayfields[
'total_pa'][
'checked'])) {
1909 print
'<td class="liste_titre right">';
1912if (!empty($arrayfields[
'total_margin'][
'checked'])) {
1913 print
'<td class="liste_titre right">';
1916if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
1917 print
'<td class="liste_titre right">';
1920if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
1921 print
'<td class="liste_titre right">';
1926include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
1929$parameters = array(
'arrayfields' => $arrayfields);
1930$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action);
1931print $hookmanager->resPrint;
1933if (!empty($arrayfields[
'f.datec'][
'checked'])) {
1934 print
'<td class="liste_titre center">';
1935 print
'<div class="nowrapfordate">';
1936 print $form->selectDate($search_datec_start ? $search_datec_start : -1,
'search_datec_start', 1, 1, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'),
'tzuserrel');
1938 print
'<div class="nowrapfordate">';
1939 print $form->selectDate($search_datec_end ? $search_datec_end : -1,
'search_datec_end', 1, 1, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'),
'tzuserrel');
1944if (!empty($arrayfields[
'f.tms'][
'checked'])) {
1945 print
'<td class="liste_titre center">';
1946 print
'<div class="nowrapfordate">';
1947 print $form->selectDate($search_datem_start ? $search_datem_start : -1,
'search_datem_start', 1, 1, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'),
'tzuserrel');
1949 print
'<div class="nowrapfordate">';
1950 print $form->selectDate($search_datem_end ? $search_datem_end : -1,
'search_datem_end', 1, 1, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'),
'tzuserrel');
1955if (!empty($arrayfields[
'f.date_closing'][
'checked'])) {
1956 print
'<td class="liste_titre">';
1959if (!empty($arrayfields[
'f.note_public'][
'checked'])) {
1961 print
'<td class="liste_titre">';
1962 print
'<input class="flat maxwidth75" type="text" name="search_note_public" value="'.dol_escape_htmltag($search_note_public).
'">';
1965if (!empty($arrayfields[
'f.note_private'][
'checked'])) {
1967 print
'<td class="liste_titre">';
1968 print
'<input class="flat maxwidth75" type="text" name="search_note_private" value="'.dol_escape_htmltag($search_note_private).
'">';
1971if (!empty($arrayfields[
'f.fk_fac_rec_source'][
'checked'])) {
1973 print
'<td class="liste_titre maxwidthonsmartphone right">';
1974 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).
'">';
1978if (!empty($arrayfields[
'f.import_key'][
'checked'])) {
1979 print
'<td class="liste_titre maxwidthonsmartphone center">';
1980 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1984if (!empty($arrayfields[
'f.dispute_status'][
'checked'])) {
1985 print
'<td class="liste_titre center parentonrightofpage">';
1986 $liststatus = Facture::ARRAY_OF_DISPUTE_STATUS;
1988 print $form->selectarray(
'search_dispute_status', $liststatus, $search_dispute_status, 1, 0, 0,
'', 1, 0, 0,
'',
'search_status width100 onrightofpage', 1);
1992if (!empty($arrayfields[
'f.fk_statut'][
'checked'])) {
1993 print
'<td class="liste_titre center parentonrightofpage">';
1994 $liststatus = array(
1995 '0' => $langs->trans(
"BillShortStatusDraft"),
1996 '1' => $langs->trans(
"BillShortStatusNotPaid"),
1997 '2' => $langs->trans(
"BillShortStatusPaid"),
1998 '3' => $langs->trans(
"BillShortStatusCanceled")
2001 print $form->multiselectarray(
'search_status', $liststatus, $search_status, 0, 0,
'minwidth125', 1, 0);
2005if (!
$conf->main_checkbox_left_column) {
2006 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
2007 $searchpicto = $form->showFilterButtons();
2018print
'<tr class="liste_titre">';
2020if (
$conf->main_checkbox_left_column) {
2021 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'align="center"', $sortfield, $sortorder,
'maxwidthsearch ');
2028if (!empty($arrayfields[
'f.ref'][
'checked'])) {
2029 print_liste_field_titre($arrayfields[
'f.ref'][
'label'], $_SERVER[
'PHP_SELF'],
'f.ref',
'', $param,
'', $sortfield, $sortorder);
2032if (!empty($arrayfields[
'f.ref_client'][
'checked'])) {
2033 print_liste_field_titre($arrayfields[
'f.ref_client'][
'label'], $_SERVER[
"PHP_SELF"],
'f.ref_client',
'', $param,
'', $sortfield, $sortorder);
2036if (!empty($arrayfields[
'f.type'][
'checked'])) {
2037 print_liste_field_titre($arrayfields[
'f.type'][
'label'], $_SERVER[
"PHP_SELF"],
'f.type',
'', $param,
'', $sortfield, $sortorder);
2040if (!empty($arrayfields[
'f.subtype'][
'checked'])) {
2041 print_liste_field_titre($arrayfields[
'f.subtype'][
'label'], $_SERVER[
"PHP_SELF"],
'f.subtype',
'', $param,
'', $sortfield, $sortorder);
2043if (!empty($arrayfields[
'f.datef'][
'checked'])) {
2044 print_liste_field_titre($arrayfields[
'f.datef'][
'label'], $_SERVER[
'PHP_SELF'],
'f.datef',
'', $param,
'', $sortfield, $sortorder,
'center ');
2047if (!empty($arrayfields[
'f.date_valid'][
'checked'])) {
2048 print_liste_field_titre($arrayfields[
'f.date_valid'][
'label'], $_SERVER[
'PHP_SELF'],
'f.date_valid',
'', $param,
'', $sortfield, $sortorder,
'center ');
2051if (!empty($arrayfields[
'f.date_lim_reglement'][
'checked'])) {
2052 print_liste_field_titre($arrayfields[
'f.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
"f.date_lim_reglement",
'', $param,
'', $sortfield, $sortorder,
'center ');
2055if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2056 $langs->load(
"projects");
2057 print_liste_field_titre($arrayfields[
'p.ref'][
'label'], $_SERVER[
'PHP_SELF'],
"p.ref",
'', $param,
'', $sortfield, $sortorder);
2060if (!empty($arrayfields[
'p.title'][
'checked'])) {
2061 print_liste_field_titre($arrayfields[
'p.title'][
'label'], $_SERVER[
'PHP_SELF'],
"p.title",
'', $param,
'', $sortfield, $sortorder);
2064if (!empty($arrayfields[
's.nom'][
'checked'])) {
2065 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
'PHP_SELF'],
's.nom',
'', $param,
'', $sortfield, $sortorder);
2068if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2070 print_liste_field_titre($arrayfields[
's.name_alias'][
'label'], $_SERVER[
'PHP_SELF'],
's.name_alias',
'', $param,
'', $sortfield, $sortorder);
2073if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2074 print_liste_field_titre($arrayfields[
's2.nom'][
'label'], $_SERVER[
'PHP_SELF'],
's2.nom',
'', $param,
'', $sortfield, $sortorder);
2077if (!empty($arrayfields[
's.code_client'][
'checked'])) {
2078 print_liste_field_titre($arrayfields[
's.code_client'][
'label'], $_SERVER[
'PHP_SELF'],
's.code_client',
'', $param,
'', $sortfield, $sortorder);
2081if (!empty($arrayfields[
's.town'][
'checked'])) {
2082 print_liste_field_titre($arrayfields[
's.town'][
'label'], $_SERVER[
"PHP_SELF"],
's.town',
'', $param,
'', $sortfield, $sortorder);
2085if (!empty($arrayfields[
's.zip'][
'checked'])) {
2086 print_liste_field_titre($arrayfields[
's.zip'][
'label'], $_SERVER[
"PHP_SELF"],
's.zip',
'', $param,
'', $sortfield, $sortorder);
2089if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2090 print_liste_field_titre($arrayfields[
'state.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"state.nom",
"", $param,
'', $sortfield, $sortorder);
2093if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2094 print_liste_field_titre($arrayfields[
'country.code_iso'][
'label'], $_SERVER[
"PHP_SELF"],
"country.code_iso",
"", $param,
'', $sortfield, $sortorder,
'center ');
2097if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2098 print_liste_field_titre($arrayfields[
'typent.code'][
'label'], $_SERVER[
"PHP_SELF"],
"typent.code",
"", $param,
'', $sortfield, $sortorder,
'center ');
2101if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked'])) {
2102 print_liste_field_titre($arrayfields[
'f.fk_mode_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"f.fk_mode_reglement",
"", $param,
"", $sortfield, $sortorder);
2105if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked'])) {
2106 print_liste_field_titre($arrayfields[
'f.fk_cond_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"f.fk_cond_reglement",
"", $param,
"", $sortfield, $sortorder);
2109if (!empty($arrayfields[
'ba.label'][
'checked'])) {
2110 print_liste_field_titre($arrayfields[
'ba.label'][
'label'], $_SERVER[
"PHP_SELF"],
"ba.label",
"", $param,
"", $sortfield, $sortorder);
2113if (!empty($arrayfields[
'f.fk_input_reason'][
'checked'])) {
2114 print_liste_field_titre($arrayfields[
'f.fk_input_reason'][
'label'], $_SERVER[
'PHP_SELF'],
'f.fk_input_reason',
'', $param,
'', $sortfield, $sortorder);
2116if (!empty($arrayfields[
'f.module_source'][
'checked'])) {
2117 print_liste_field_titre($arrayfields[
'f.module_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.module_source",
"", $param,
"", $sortfield, $sortorder);
2120if (!empty($arrayfields[
'f.pos_source'][
'checked'])) {
2121 print_liste_field_titre($arrayfields[
'f.pos_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.pos_source",
"", $param,
"", $sortfield, $sortorder);
2124if (!empty($arrayfields[
'f.total_ht'][
'checked'])) {
2125 print_liste_field_titre($arrayfields[
'f.total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'f.total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
2128if (!empty($arrayfields[
'f.total_tva'][
'checked'])) {
2129 print_liste_field_titre($arrayfields[
'f.total_tva'][
'label'], $_SERVER[
'PHP_SELF'],
'f.total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
2132if (!empty($arrayfields[
'f.total_localtax1'][
'checked'])) {
2133 print_liste_field_titre($arrayfields[
'f.total_localtax1'][
'label'], $_SERVER[
'PHP_SELF'],
'f.localtax1',
'', $param,
'', $sortfield, $sortorder,
'right ');
2136if (!empty($arrayfields[
'f.total_localtax2'][
'checked'])) {
2137 print_liste_field_titre($arrayfields[
'f.total_localtax2'][
'label'], $_SERVER[
'PHP_SELF'],
'f.localtax2',
'', $param,
'', $sortfield, $sortorder,
'right ');
2140if (!empty($arrayfields[
'f.total_ttc'][
'checked'])) {
2141 print_liste_field_titre($arrayfields[
'f.total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'f.total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
2144if (!empty($arrayfields[
'u.login'][
'checked'])) {
2145 print_liste_field_titre($arrayfields[
'u.login'][
'label'], $_SERVER[
"PHP_SELF"],
'u.login',
'', $param,
'', $sortfield, $sortorder,
'center ');
2148if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2149 print_liste_field_titre($arrayfields[
'sale_representative'][
'label'], $_SERVER[
"PHP_SELF"],
"",
"",
"$param",
'', $sortfield, $sortorder);
2152if (!empty($arrayfields[
'f.retained_warranty'][
'checked'])) {
2153 print_liste_field_titre($arrayfields[
'f.retained_warranty'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2156if (!empty($arrayfields[
'dynamount_payed'][
'checked'])) {
2157 print_liste_field_titre($arrayfields[
'dynamount_payed'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2160if (!empty($arrayfields[
'rtp'][
'checked'])) {
2161 print_liste_field_titre($arrayfields[
'rtp'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2164if (!empty($arrayfields[
'f.multicurrency_code'][
'checked'])) {
2165 print_liste_field_titre($arrayfields[
'f.multicurrency_code'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_code',
'', $param,
'', $sortfield, $sortorder);
2168if (!empty($arrayfields[
'f.multicurrency_tx'][
'checked'])) {
2169 print_liste_field_titre($arrayfields[
'f.multicurrency_tx'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_tx',
'', $param,
'', $sortfield, $sortorder);
2172if (!empty($arrayfields[
'f.multicurrency_total_ht'][
'checked'])) {
2173 print_liste_field_titre($arrayfields[
'f.multicurrency_total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
2176if (!empty($arrayfields[
'f.multicurrency_total_vat'][
'checked'])) {
2177 print_liste_field_titre($arrayfields[
'f.multicurrency_total_vat'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
2180if (!empty($arrayfields[
'f.multicurrency_total_ttc'][
'checked'])) {
2181 print_liste_field_titre($arrayfields[
'f.multicurrency_total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'f.multicurrency_total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
2184if (!empty($arrayfields[
'multicurrency_dynamount_payed'][
'checked'])) {
2185 print_liste_field_titre($arrayfields[
'multicurrency_dynamount_payed'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2188if (!empty($arrayfields[
'multicurrency_rtp'][
'checked'])) {
2189 print_liste_field_titre($arrayfields[
'multicurrency_rtp'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2192if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2193 print_liste_field_titre($arrayfields[
'total_pa'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2196if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2197 print_liste_field_titre($arrayfields[
'total_margin'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2200if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2201 print_liste_field_titre($arrayfields[
'total_margin_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2204if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2205 print_liste_field_titre($arrayfields[
'total_mark_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
2209include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
2211$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder,
'totalarray' => &
$totalarray);
2212$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
2213print $hookmanager->resPrint;
2214if (!empty($arrayfields[
'f.datec'][
'checked'])) {
2215 print_liste_field_titre($arrayfields[
'f.datec'][
'label'], $_SERVER[
"PHP_SELF"],
"f.datec",
"", $param,
'', $sortfield, $sortorder,
'nowraponall center ');
2218if (!empty($arrayfields[
'f.tms'][
'checked'])) {
2219 print_liste_field_titre($arrayfields[
'f.tms'][
'label'], $_SERVER[
"PHP_SELF"],
"f.tms",
"", $param,
'', $sortfield, $sortorder,
'nowraponall center ');
2222if (!empty($arrayfields[
'f.date_closing'][
'checked'])) {
2223 print_liste_field_titre($arrayfields[
'f.date_closing'][
'label'], $_SERVER[
"PHP_SELF"],
"f.date_closing",
"", $param,
'', $sortfield, $sortorder,
'nowraponall center ');
2226if (!empty($arrayfields[
'f.note_public'][
'checked'])) {
2227 print_liste_field_titre($arrayfields[
'f.note_public'][
'label'], $_SERVER[
"PHP_SELF"],
"f.note_public",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2230if (!empty($arrayfields[
'f.note_private'][
'checked'])) {
2231 print_liste_field_titre($arrayfields[
'f.note_private'][
'label'], $_SERVER[
"PHP_SELF"],
"f.note_private",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2234if (!empty($arrayfields[
'f.fk_fac_rec_source'][
'checked'])) {
2235 print_liste_field_titre($arrayfields[
'f.fk_fac_rec_source'][
'label'], $_SERVER[
"PHP_SELF"],
"facrec.titre",
"", $param,
'', $sortfield, $sortorder);
2239if (!empty($arrayfields[
'f.import_key'][
'checked'])) {
2240 print_liste_field_titre($arrayfields[
'f.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"f.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
2244if (!empty($arrayfields[
'f.dispute_status'][
'checked'])) {
2245 print_liste_field_titre($arrayfields[
'f.dispute_status'][
'label'], $_SERVER[
"PHP_SELF"],
"f.dispute_status,f.ref",
"", $param,
'', $sortfield, $sortorder,
'center ');
2249if (!empty($arrayfields[
'f.fk_statut'][
'checked'])) {
2250 print_liste_field_titre($arrayfields[
'f.fk_statut'][
'label'], $_SERVER[
"PHP_SELF"],
"f.fk_statut,f.paye,f.type",
"", $param,
'', $sortfield, $sortorder,
'center ');
2254if (!
$conf->main_checkbox_left_column) {
2255 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'maxwidthsearch center ');
2281 $typenArray = $formcompany->typent_array(1);
2283 $with_margin_info =
false;
2285 !empty($arrayfields[
'total_pa'][
'checked'])
2286 || !empty($arrayfields[
'total_margin'][
'checked'])
2287 || !empty($arrayfields[
'total_margin_rate'][
'checked'])
2288 || !empty($arrayfields[
'total_mark_rate'][
'checked'])
2291 $with_margin_info =
true;
2296 $imaxinloop = ($limit ? min($num, $limit) : $num);
2297 while ($i < $imaxinloop) {
2298 $obj =
$db->fetch_object($resql);
2303 $datelimit =
$db->jdate($obj->datelimite);
2305 $facturestatic->id = $obj->id;
2306 $facturestatic->ref = $obj->ref;
2307 $facturestatic->ref_client = $obj->ref_client;
2308 $facturestatic->ref_customer = $obj->ref_client;
2309 $facturestatic->type = $obj->type;
2310 $facturestatic->subtype = $obj->subtype;
2311 $facturestatic->total_ht = $obj->total_ht;
2312 $facturestatic->total_tva = $obj->total_tva;
2313 $facturestatic->total_ttc = $obj->total_ttc;
2314 $facturestatic->multicurrency_code = $obj->multicurrency_code;
2315 $facturestatic->multicurrency_tx = $obj->multicurrency_tx;
2316 $facturestatic->multicurrency_total_ht = $obj->multicurrency_total_ht;
2317 $facturestatic->multicurrency_total_tva = $obj->multicurrency_total_vat;
2318 $facturestatic->multicurrency_total_ttc = $obj->multicurrency_total_ttc;
2319 $facturestatic->status = $obj->status;
2320 $facturestatic->close_code = $obj->close_code;
2321 $facturestatic->total_ttc = $obj->total_ttc;
2322 $facturestatic->paye = $obj->paye;
2323 $facturestatic->socid = $obj->fk_soc;
2325 $facturestatic->date =
$db->jdate($obj->datef);
2326 $facturestatic->date_validation =
$db->jdate($obj->date_valid);
2327 $facturestatic->date_lim_reglement =
$db->jdate($obj->datelimite);
2329 $facturestatic->note_public = $obj->note_public;
2330 $facturestatic->note_private = $obj->note_private;
2333 $facturestatic->retained_warranty = $obj->retained_warranty;
2334 $facturestatic->retained_warranty_date_limit = $obj->retained_warranty_date_limit;
2335 $facturestatic->situation_final = $obj->retained_warranty_date_limit;
2336 $facturestatic->situation_final = $obj->retained_warranty_date_limit;
2337 $facturestatic->situation_cycle_ref = $obj->situation_cycle_ref;
2338 $facturestatic->situation_counter = $obj->situation_counter;
2341 $facturestatic->payment_reference = $obj->payment_reference;
2342 $facturestatic->dispute_status = $obj->dispute_status;
2344 $companystatic->id = $obj->socid;
2345 $companystatic->name = $obj->name;
2346 $companystatic->name_alias = $obj->alias;
2347 $companystatic->client = $obj->client;
2348 $companystatic->fournisseur = $obj->fournisseur;
2349 $companystatic->code_client = $obj->code_client;
2350 $companystatic->code_compta_client = $obj->code_compta_client;
2351 $companystatic->code_fournisseur = $obj->code_fournisseur;
2352 $companystatic->code_compta_fournisseur = $obj->code_compta_fournisseur;
2353 $companystatic->email = $obj->email;
2354 $companystatic->phone = $obj->phone;
2355 $companystatic->fax = $obj->fax;
2356 $companystatic->address = $obj->address;
2357 $companystatic->zip = $obj->zip;
2358 $companystatic->town = $obj->town;
2359 $companystatic->country_code = $obj->country_code;
2361 $projectstatic->id = $obj->project_id;
2362 $projectstatic->ref = $obj->project_ref;
2363 $projectstatic->title = $obj->project_label;
2365 $paiement = $facturestatic->getSommePaiement();
2366 $totalcreditnotes = $facturestatic->getSumCreditNotesUsed();
2367 $totaldeposits = $facturestatic->getSumDepositsUsed();
2368 $totalallpayments = $paiement + $totalcreditnotes + $totaldeposits;
2369 $remaintopay = $obj->total_ttc - $totalallpayments;
2371 $multicurrency_paiement = $facturestatic->getSommePaiement(1);
2372 $multicurrency_totalcreditnotes = $facturestatic->getSumCreditNotesUsed(1);
2373 $multicurrency_totaldeposits = $facturestatic->getSumDepositsUsed(1);
2375 $totalallpayments = $paiement + $totalcreditnotes + $totaldeposits;
2376 $remaintopay =
price2num($facturestatic->total_ttc - $totalallpayments);
2378 $multicurrency_totalpay = $multicurrency_paiement + $multicurrency_totalcreditnotes + $multicurrency_totaldeposits;
2379 $multicurrency_remaintopay = (float)
price2num($facturestatic->multicurrency_total_ttc - $multicurrency_totalpay);
2383 $multicurrency_remaintopay = 0;
2386 $remaincreditnote = $discount->getAvailableDiscounts($companystatic,
null,
'rc.fk_facture_source='.$facturestatic->id);
2387 $remaintopay = -$remaincreditnote;
2388 $totalallpayments =
price2num($facturestatic->total_ttc - $remaintopay);
2389 $multicurrency_remaincreditnote = $discount->getAvailableDiscounts($companystatic,
null,
'rc.fk_facture_source='.$facturestatic->id, 0, 0, 1);
2390 $multicurrency_remaintopay = -$multicurrency_remaincreditnote;
2391 $multicurrency_totalpay = (float)
price2num($facturestatic->multicurrency_total_ttc - $multicurrency_remaintopay);
2394 $facturestatic->alreadypaid = $paiement;
2395 $facturestatic->totalpaid = $paiement;
2396 $facturestatic->totalcreditnotes = $totalcreditnotes;
2397 $facturestatic->totaldeposits = $totaldeposits;
2399 $marginInfo = array();
2400 if ($with_margin_info) {
2401 $facturestatic->fetch_lines();
2402 $marginInfo = $formmargin->getMarginInfosArray($facturestatic);
2403 $total_ht += $obj->total_ht;
2404 $total_margin += $marginInfo[
'total_margin'];
2409 if ($mode ==
'kanban') {
2411 print
'<tr class="trkanban"><td colspan="'.$savnbfield.
'">';
2412 print
'<div class="box-flex-container kanban">';
2415 if ($massactionbutton || $massaction) {
2417 if (in_array(
$object->id, $arrayofselected)) {
2422 $arraydata = array(
'alreadypaid' => $paiement,
'thirdparty' => $companystatic->getNomUrl(1,
'', 12),
'userauthor' => $userstatic->getNomUrl(1),
'selected' => in_array(
$object->id, $arrayofselected));
2423 print $facturestatic->getKanbanView(
'', $arraydata);
2424 if ($i == ($imaxinloop - 1)) {
2431 print
'<tr data-rowid="'.$object->id.
'" class="oddeven row-with-select status'.
$object->status.((getDolGlobalInt(
'MAIN_FINISHED_LINES_OPACITY') == 1 && $obj->status > 1) ?
' opacitymedium' :
'').
'"';
2432 if ($contextpage ==
'poslist') {
2433 print
' onclick="parent.$(\'#poslines\').load(\'invoice.php?action=history&placeid='.$obj->id.
'\',
function() {parent.$.colorbox.close();
';
2434 if (strpos($obj->ref, 'PROV
') !== false) {
2435 //If is a draft invoice, load var to be able to add products
2436 $place = str_replace(")", "", str_replace("(PROV-POS".$_SESSION["takeposterminal"]."-", "", $obj->ref));
2437 print 'parent.place=\
''.dol_escape_js($place).
'\'';
2444 if (
$conf->main_checkbox_left_column) {
2445 print
'<td class="nowrap center">';
2446 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
2448 if (in_array($obj->id, $arrayofselected)) {
2451 print
'<input id="cb'.$obj->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
2461 print
'<td>'.(($offset * $limit) + $i).
'</td>';
2468 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
2469 print
'<td class="nowraponall">';
2471 print
'<table class="nobordernopadding"><tr class="nocellnopadd">';
2473 print
'<td class="nobordernopadding nowraponall">';
2474 if ($contextpage ==
'poslist') {
2477 print $facturestatic->getNomUrl(1,
'', 200, 0,
'', 0, 1);
2481 $filepath =
$conf->invoice->multidir_output[$obj->entity] ??
$conf->invoice->dir_output;
2482 $filedir = $filepath.
'/'.$filename;
2484 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$obj->id;
2485 print $formfile->getDocumentsLink($facturestatic->element, $filename, $filedir);
2497 if (!empty($arrayfields[
'f.ref_client'][
'checked'])) {
2498 $tdcss = (
getDolGlobalInt(
'MAIN_SHOW_GLOBAL_REF_CUSTOMER_SUPPLIER') ?
'class="minwidth400 maxwidth400"' :
'class="nowrap tdoverflowmax200"');
2499 print
'<td title="'.dolPrintHTMLForAttribute($obj->ref_client).
'" '.$tdcss.
'>';
2508 if (!empty($arrayfields[
'f.type'][
'checked'])) {
2509 print
'<td class="nowraponall tdoverflowmax100" title="'.$facturestatic->getLibType().
'">';
2510 print $facturestatic->getLibType(2);
2518 if (!empty($arrayfields[
'f.subtype'][
'checked'])) {
2520 if ($facturestatic->subtype > 0) {
2521 $labeltoshow = $facturestatic->getSubtypeLabel(
'facture');
2523 print
'<td class="nowraponall tdoverflowmax300" title="'.$labeltoshow.
'">';
2532 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
2533 print
'<td align="center" class="nowraponall">';
2542 if (!empty($arrayfields[
'f.date_valid'][
'checked'])) {
2543 print
'<td align="center" class="nowraponall">';
2552 if (!empty($arrayfields[
'f.date_lim_reglement'][
'checked'])) {
2553 print
'<td align="center" class="nowraponall">'.dol_print_date($datelimit,
'day');
2554 if ($facturestatic->hasDelay()) {
2555 print
img_warning($langs->trans(
'Alert').
' - '.$langs->trans(
'Late'));
2564 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2565 print
'<td class="nocellnopadd nowraponall">';
2566 if ($obj->project_id > 0) {
2567 print $projectstatic->getNomUrl(1);
2576 if (!empty($arrayfields[
'p.title'][
'checked'])) {
2577 print
'<td class="nowraponall">';
2578 if ($obj->project_id > 0) {
2588 if (!empty($arrayfields[
's.nom'][
'checked'])) {
2589 print
'<td class="tdoverflowmax150">';
2590 if ($contextpage ==
'poslist') {
2593 print $companystatic->getNomUrl(1,
'customer', 0, 0, -1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2601 if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2602 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($companystatic->name_alias).
'">';
2610 if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2611 print
'<td class="tdoverflowmax200">';
2612 if ($obj->fk_parent > 0) {
2613 if (!isset($company_url_list[$obj->fk_parent])) {
2615 $res = $companyparent->fetch($obj->fk_parent);
2617 $company_url_list[$obj->fk_parent] = $companyparent->getNomUrl(1);
2620 if (isset($company_url_list[$obj->fk_parent])) {
2621 print $company_url_list[$obj->fk_parent];
2630 if (!empty($arrayfields[
's.code_client'][
'checked'])) {
2631 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($companystatic->code_client).
'">';
2639 if (!empty($arrayfields[
's.town'][
'checked'])) {
2640 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($obj->town).
'">';
2648 if (!empty($arrayfields[
's.zip'][
'checked'])) {
2649 print
'<td class="nowraponall">';
2657 if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2658 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($obj->state_name).
'">'.
dol_escape_htmltag($obj->state_name).
"</td>\n";
2664 if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2665 $tmparray =
getCountry($obj->fk_pays,
'all');
2666 print
'<td class="center tdoverflowmax100" title="'.dol_escape_htmltag($tmparray[
'label']).
'">';
2674 if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2675 if (!is_array($typenArray) || count($typenArray) == 0) {
2676 $typenArray = $formcompany->typent_array(1);
2678 print
'<td class="center tdoverflowmax100" title="'.dolPrintHTMLForAttribute($typenArray[$obj->typent_code]).
'">';
2679 if (!empty($obj->typent_code)) {
2680 print $typenArray[$obj->typent_code];
2688 if (!empty($arrayfields[
'staff.code'][
'checked'])) {
2689 if (!is_array(
$conf->cache[
'staff']) || count(
$conf->cache[
'staff']) == 0) {
2690 $conf->cache[
'staff'] = $formcompany->effectif_array(1);
2692 print
'<td class="center tdoverflowmax100" title="'.dolPrintHTML(
$conf->cache[
'staff'][$obj->staff_code]).
'">';
2693 print
$conf->cache[
'staff'][$obj->staff_code];
2701 if (!empty($arrayfields[
'f.fk_mode_reglement'][
'checked'])) {
2702 $s = $form->form_modes_reglement($_SERVER[
'PHP_SELF'], $obj->fk_mode_reglement,
'none',
'', -1, 0,
'', 1);
2703 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($s).
'">';
2712 if (!empty($arrayfields[
'f.fk_cond_reglement'][
'checked'])) {
2713 $s = $form->form_conditions_reglement($_SERVER[
'PHP_SELF'], $obj->fk_cond_reglement,
'none', 0,
'', -1, -1, 1);
2714 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($s).
'">';
2723 if (!empty($arrayfields[
'ba.label'][
'checked'])) {
2725 if (!empty($obj->bid)) {
2726 $accountstatic->id = $obj->bid;
2727 $accountstatic->ref = $obj->bref;
2728 $accountstatic->label = $obj->blabel;
2729 $accountstatic->number = $obj->bnumber;
2730 $accountstatic->account_number = $obj->baccount_number;
2731 $accountstatic->accountancy_journal = $obj->baccountancy_journal;
2732 print $accountstatic->getNomUrl(1);
2741 if (!empty($arrayfields[
'f.fk_input_reason'][
'checked'])) {
2743 $form->formInputReason($_SERVER[
'PHP_SELF'], (
string) $obj->fk_input_reason,
'none');
2751 if (!empty($arrayfields[
'f.module_source'][
'checked'])) {
2760 if (!empty($arrayfields[
'f.pos_source'][
'checked'])) {
2770 if (!empty($arrayfields[
'f.total_ht'][
'checked'])) {
2771 print
'<td class="right nowraponall"><span class="amount">'.price($obj->total_ht).
"</span></td>\n";
2778 $totalarray[
'val'][
'f.total_ht'] += $obj->total_ht;
2781 if (!empty($arrayfields[
'f.total_tva'][
'checked'])) {
2782 print
'<td class="right nowraponall amount">'.price($obj->total_tva).
"</td>\n";
2789 $totalarray[
'val'][
'f.total_tva'] += $obj->total_tva;
2792 if (!empty($arrayfields[
'f.total_localtax1'][
'checked'])) {
2793 print
'<td class="right nowraponall amount">'.price($obj->total_localtax1).
"</td>\n";
2800 $totalarray[
'val'][
'f.total_localtax1'] += $obj->total_localtax1;
2803 if (!empty($arrayfields[
'f.total_localtax2'][
'checked'])) {
2804 print
'<td class="right nowraponall amount">'.price($obj->total_localtax2).
"</td>\n";
2811 $totalarray[
'val'][
'f.total_localtax2'] += $obj->total_localtax2;
2814 if (!empty($arrayfields[
'f.total_ttc'][
'checked'])) {
2815 print
'<td class="right nowraponall amount">'.price($obj->total_ttc).
"</td>\n";
2822 $totalarray[
'val'][
'f.total_ttc'] += $obj->total_ttc;
2825 $userstatic->id = $obj->fk_user_author;
2826 $userstatic->login = $obj->login;
2827 $userstatic->lastname = $obj->lastname;
2828 $userstatic->firstname = $obj->firstname;
2829 $userstatic->email = $obj->user_email;
2830 $userstatic->status = $obj->user_statut;
2831 $userstatic->entity = $obj->entity;
2832 $userstatic->photo = $obj->photo;
2833 $userstatic->office_phone = $obj->office_phone;
2834 $userstatic->office_fax = $obj->office_fax;
2835 $userstatic->user_mobile = $obj->user_mobile;
2836 $userstatic->job = $obj->job;
2837 $userstatic->gender = $obj->gender;
2840 if (!empty($arrayfields[
'u.login'][
'checked'])) {
2841 print
'<td class="tdoverflowmax100">';
2842 if ($userstatic->id) {
2843 print $userstatic->getNomUrl(-1);
2853 if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2856 if ($obj->socid > 0) {
2857 $listsalesrepresentatives = $companystatic->getSalesRepresentatives($user);
2858 if ($listsalesrepresentatives < 0) {
2861 $nbofsalesrepresentative = count($listsalesrepresentatives);
2862 if ($nbofsalesrepresentative > 6) {
2864 print $nbofsalesrepresentative;
2865 } elseif ($nbofsalesrepresentative > 0) {
2867 foreach ($listsalesrepresentatives as $val) {
2868 $userstatic->id = $val[
'id'];
2869 $userstatic->lastname = $val[
'lastname'];
2870 $userstatic->firstname = $val[
'firstname'];
2871 $userstatic->email = $val[
'email'];
2872 $userstatic->status = $val[
'statut'];
2873 $userstatic->entity = $val[
'entity'];
2874 $userstatic->photo = $val[
'photo'];
2875 $userstatic->login = $val[
'login'];
2876 $userstatic->office_phone = $val[
'office_phone'];
2877 $userstatic->office_fax = $val[
'office_fax'];
2878 $userstatic->user_mobile = $val[
'user_mobile'];
2879 $userstatic->job = $val[
'job'];
2880 $userstatic->gender = $val[
'gender'];
2882 print ($nbofsalesrepresentative < 2) ? $userstatic->getNomUrl(-1,
'', 0, 0, 12) : $userstatic->getNomUrl(-2);
2884 if ($j < $nbofsalesrepresentative) {
2898 if (!empty($arrayfields[
'f.retained_warranty'][
'checked'])) {
2899 print
'<td align="right">'.(!empty($obj->retained_warranty) ?
price($obj->retained_warranty).
'%' :
' ').
'</td>';
2905 if (!empty($arrayfields[
'dynamount_payed'][
'checked'])) {
2906 print
'<td class="right nowraponall amount">'.(!empty($totalallpayments) ?
price($totalallpayments, 0, $langs) :
' ').
'</td>';
2913 $totalarray[
'val'][
'dynamount_payed'] += $totalallpayments;
2917 if (!empty($arrayfields[
'rtp'][
'checked'])) {
2918 print
'<td class="right nowraponall amount">';
2919 print(!empty($remaintopay) ?
price($remaintopay, 0, $langs) :
' ');
2932 if (!empty($arrayfields[
'f.multicurrency_code'][
'checked'])) {
2933 if (!
getDolGlobalString(
'MAIN_SHOW_ONLY_CODE_MULTICURRENCY') && !empty($obj->multicurrency_code)) {
2934 $title = $obj->multicurrency_code.
' - '.$langs->transnoentitiesnoconv(
'Currency'.$obj->multicurrency_code);
2935 $label = $langs->transnoentitiesnoconv(
'Currency'.$obj->multicurrency_code);
2937 $title = $obj->multicurrency_code;
2938 $label = $obj->multicurrency_code;
2940 print
'<td class="nowraponall tdoverflowmax125" title="'.dolPrintHTMLForAttribute($title).
'">';
2949 if (!empty($arrayfields[
'f.multicurrency_tx'][
'checked'])) {
2950 print
'<td class="nowraponall">';
2951 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$obj->id, $obj->multicurrency_tx,
'none', $obj->multicurrency_code);
2958 if (!empty($arrayfields[
'f.multicurrency_total_ht'][
'checked'])) {
2959 print
'<td class="right nowraponall amount">'.price($obj->multicurrency_total_ht).
"</td>\n";
2965 if (!empty($arrayfields[
'f.multicurrency_total_vat'][
'checked'])) {
2966 print
'<td class="right nowraponall amount">'.price($obj->multicurrency_total_vat).
"</td>\n";
2972 if (!empty($arrayfields[
'f.multicurrency_total_ttc'][
'checked'])) {
2973 print
'<td class="right nowraponall amount">'.price($obj->multicurrency_total_ttc).
"</td>\n";
2979 if (!empty($arrayfields[
'multicurrency_dynamount_payed'][
'checked'])) {
2980 print
'<td class="right nowraponall amount">'.(!empty($multicurrency_totalpay) ?
price($multicurrency_totalpay, 0, $langs) :
' ').
'</td>';
2987 if (!empty($arrayfields[
'multicurrency_rtp'][
'checked'])) {
2988 print
'<td class="right nowraponall amount">';
2989 print(!empty($multicurrency_remaintopay) ?
price($multicurrency_remaintopay, 0, $langs) :
' ');
2997 if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2998 print
'<td class="right nowrap">'.price($marginInfo[
'pa_total'], 0, $langs, 1, -1,
'MT').
'</td>';
3006 $totalarray[
'val'][
'total_pa'] += $marginInfo[
'pa_total'];
3009 if (!empty($arrayfields[
'total_margin'][
'checked'])) {
3010 print
'<td class="right nowrap">'.price($marginInfo[
'total_margin'], 0, $langs, 1, -1,
'MT').
'</td>';
3018 $totalarray[
'val'][
'total_margin'] += $marginInfo[
'total_margin'];
3021 if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
3022 print
'<td class="right nowrap">'.(($marginInfo[
'total_margin_rate'] ==
'') ?
'' :
price($marginInfo[
'total_margin_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
3028 if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
3029 print
'<td class="right nowrap">'.(($marginInfo[
'total_mark_rate'] ==
'') ?
'' :
price($marginInfo[
'total_mark_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
3034 if ($i >= $imaxinloop - 1) {
3035 if (!empty($total_ht)) {
3044 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
3046 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &
$totalarray);
3047 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
3048 print $hookmanager->resPrint;
3050 if (!empty($arrayfields[
'f.datec'][
'checked'])) {
3051 print
'<td class="nowraponall center">';
3059 if (!empty($arrayfields[
'f.tms'][
'checked'])) {
3060 print
'<td class="nowraponall center">';
3061 print
dol_print_date(
$db->jdate($obj->date_modification),
'dayhour',
'tzuserrel');
3068 if (!empty($arrayfields[
'f.date_closing'][
'checked'])) {
3069 print
'<td class="nowraponall center">';
3077 if (!empty($arrayfields[
'f.note_public'][
'checked'])) {
3078 print
'<td class="sensiblehtmlcontent center">';
3079 print
'<div class="small lineheightsmall twolinesmax-normallineheight">'.dolPrintHTML(
dolGetFirstLineOfText($obj->note_public, 5)).
'</div>';
3086 if (!empty($arrayfields[
'f.note_private'][
'checked'])) {
3087 print
'<td class="sensiblehtmlcontent center">';
3088 print
'<div class="small lineheightsmall twolinesmax-normallineheight">'.dolPrintHTML(
dolGetFirstLineOfText($obj->note_private, 5)).
'</div>';
3095 if (!empty($arrayfields[
'f.fk_fac_rec_source'][
'checked'])) {
3096 print
'<td class="center">';
3097 if (!empty($obj->fk_fac_rec_source)) {
3099 $result = $facrec->fetch($obj->fk_fac_rec_source);
3103 print $facrec->getNomUrl();
3113 if (!empty($arrayfields[
'f.import_key'][
'checked'])) {
3114 print
'<td class="nowrap center">'.dol_escape_htmltag($obj->import_key).
'</td>';
3121 if (!empty($arrayfields[
'f.dispute_status'][
'checked'])) {
3122 print
'<td class="nowrap center">';
3123 if ($facturestatic->dispute_status) {
3124 $liststatus = Facture::ARRAY_OF_DISPUTE_STATUS;
3125 print $langs->trans($liststatus[$facturestatic->dispute_status][
'label']);
3134 if (!empty($arrayfields[
'f.fk_statut'][
'checked'])) {
3135 print
'<td class="nowrap center">';
3136 print $facturestatic->getLibStatut(5, $totalallpayments);
3145 if (!
$conf->main_checkbox_left_column) {
3146 print
'<td class="nowrap center">';
3147 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
3149 if (in_array($obj->id, $arrayofselected)) {
3152 print
'<input id="cb'.$obj->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
3171 include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
3177 foreach ($arrayfields as $key => $val) {
3178 if (!empty($val[
'checked'])) {
3182 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
3187$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
3188$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
3189print $hookmanager->resPrint;
3191print
'</table>'.
"\n";
3194print
'</form>'.
"\n";
3197if ($contextpage !=
'poslist') {
3198 $hidegeneratedfilelistifempty = 1;
3199 if ($massaction ==
'builddoc' || $action ==
'remove_file' || $show_files) {
3200 $hidegeneratedfilelistifempty = 0;
3204 $urlsource = $_SERVER[
'PHP_SELF'].
'?sortfield='.$sortfield.
'&sortorder='.$sortorder;
3205 $urlsource .= str_replace(
'&',
'&', $param);
3207 $filedir = $diroutputmassaction;
3208 $genallowed = $user->hasRight(
"facture",
"lire");
3209 $delallowed = $user->hasRight(
"facture",
"creer");
3212 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...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
GETPOSTDATE($prefix, $hourTime='', $gm='auto', $saverestore='')
Helper function that combines values of a dolibarr DatePicker (such as Form\selectDate) for year,...
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
dolPrintHTML($s, $allowiframe=0, $moreallowedtags=array())
Return a string (that can be on several lines) ready to be output on a HTML page.
dolGetFirstLineOfText($text, $nboflines=1, $charset='UTF-8')
Return first line of text.
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.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
dol_eval($s, $returnvalue=1, $hideerrors=1, $onlysimplestring='1')
Replace eval function to add more security.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0, $attop=0)
Set event message in dol_events session object.
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.
dolPrintLabel($s, $escapeonlyhtmltags=0)
Return a string label (so on 1 line only and that should not contains any HTML) ready to be output on...
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
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).
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
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.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
invoice_rec_prepare_head($object)
Return array head with list of tabs to view object information.
print $langs trans("Show") . '< td style="' . $timeColor . '" align="center"> s</td > badge status0 badge status4 badge status3 Error badge status8< td align="center">< span class="badge ' . $badge . '"></span ></td >< td align="center">< a href="#" class="button button-small" onclick="openLogModal(this)" data-req="' . dol_escape_htmltag($reqSafe) . '" data-res="' . dol_escape_htmltag($resSafe) . '" data-err="' . dol_escape_htmltag($errSafe) . '">< span class="fa fa-search-plus"></span ></a ></td ></tr >< tr >< td colspan="' . $colspan . '" class="opacitymedium"></td ></tr ></table ></div ></form > logModal none logModal none s a JSON string
buildzip.php
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.