42require
'../main.inc.php';
43require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
44require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
45require_once DOL_DOCUMENT_ROOT.
'/core/class/discount.class.php';
46require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
48require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
49if (isModEnabled(
'margin')) {
50 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmargin.class.php';
52require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
53require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
54require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
55require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
58$langs->loadLangs(array(
'orders',
'sendings',
'deliveries',
'companies',
'compta',
'bills',
'stocks',
'products'));
61$action =
GETPOST(
'action',
'aZ09');
62$massaction =
GETPOST(
'massaction',
'alpha');
64$confirm =
GETPOST(
'confirm',
'alpha');
65$toselect =
GETPOST(
'toselect',
'array');
66$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'orderlist';
67$optioncss =
GETPOST(
'optioncss',
'alpha');
68$mode =
GETPOST(
'mode',
'alpha');
71 $userschilds = $user->getAllChildIds();
75$search_datecloture_start =
GETPOSTINT(
'search_datecloture_start');
76if (empty($search_datecloture_start)) {
79$search_datecloture_end =
GETPOSTINT(
'search_datecloture_end');
80if (empty($search_datecloture_end)) {
90$search_all = trim((
GETPOST(
'search_all',
'alphanohtml') !=
'') ?
GETPOST(
'search_all',
'alphanohtml') :
GETPOST(
'sall',
'alphanohtml'));
91$search_product_category =
GETPOST(
'search_product_category',
'intcomma');
92$search_id =
GETPOST(
'search_id',
'int');
93$search_ref =
GETPOST(
'search_ref',
'alpha') !=
'' ?
GETPOST(
'search_ref',
'alpha') :
GETPOST(
'sref',
'alpha');
94$search_ref_customer =
GETPOST(
'search_ref_customer',
'alpha');
95$search_company =
GETPOST(
'search_company',
'alpha');
96$search_company_alias =
GETPOST(
'search_company_alias',
'alpha');
97$search_parent_name = trim(
GETPOST(
'search_parent_name',
'alphanohtml'));
98$search_town =
GETPOST(
'search_town',
'alpha');
99$search_zip =
GETPOST(
'search_zip',
'alpha');
100$search_state =
GETPOST(
'search_state',
'alpha');
101$search_country =
GETPOST(
'search_country',
'aZ09');
102$search_type_thirdparty =
GETPOST(
'search_type_thirdparty',
'intcomma');
103$search_user =
GETPOST(
'search_user',
'intcomma');
104$search_sale =
GETPOST(
'search_sale',
'intcomma');
105$search_total_ht =
GETPOST(
'search_total_ht',
'alpha');
106$search_total_vat =
GETPOST(
'search_total_vat',
'alpha');
107$search_total_ttc =
GETPOST(
'search_total_ttc',
'alpha');
108$search_warehouse =
GETPOST(
'search_warehouse',
'intcomma');
110$search_multicurrency_code =
GETPOST(
'search_multicurrency_code',
'alpha');
111$search_multicurrency_tx =
GETPOST(
'search_multicurrency_tx',
'alpha');
112$search_multicurrency_montant_ht =
GETPOST(
'search_multicurrency_montant_ht',
'alpha');
113$search_multicurrency_montant_vat =
GETPOST(
'search_multicurrency_montant_vat',
'alpha');
114$search_multicurrency_montant_ttc =
GETPOST(
'search_multicurrency_montant_ttc',
'alpha');
116$search_login =
GETPOST(
'search_login',
'alpha');
117$search_categ_cus =
GETPOST(
"search_categ_cus",
'intcomma');
118$search_billed =
GETPOST(
'search_billed',
'intcomma');
119$search_status =
GETPOST(
'search_status',
'intcomma');
120$search_project_ref =
GETPOST(
'search_project_ref',
'alpha');
121$search_project =
GETPOST(
'search_project',
'alpha');
122$search_shippable =
GETPOST(
'search_shippable',
'aZ09');
124$search_fk_cond_reglement =
GETPOST(
'search_fk_cond_reglement',
'intcomma');
125$search_fk_shipping_method =
GETPOST(
'search_fk_shipping_method',
'intcomma');
126$search_fk_mode_reglement =
GETPOST(
'search_fk_mode_reglement',
'intcomma');
127$search_fk_input_reason =
GETPOST(
'search_fk_input_reason',
'intcomma');
129$diroutputmassaction = $conf->commande->multidir_output[$conf->entity].
'/temp/massgeneration/'.$user->id;
133$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
134$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
136if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
140$offset = $limit * $page;
141$pageprev = $page - 1;
142$pagenext = $page + 1;
144 $sortfield =
'c.ref';
150$show_shippable_command =
GETPOST(
'show_shippable_command',
'aZ09');
154$hookmanager->initHooks(array(
'orderlist'));
158$extrafields->fetch_name_optionals_label(
$object->table_element);
159$search_array_options = $extrafields->getOptionalsFromPost(
$object->table_element,
'',
'search_');
162$fieldstosearchall = array(
164 'c.ref_client' =>
'RefCustomerOrder',
165 'pd.description' =>
'Description',
166 's.nom' =>
"ThirdParty",
167 's.name_alias' =>
"AliasNameShort",
170 'c.note_public' =>
'NotePublic',
172if (empty($user->socid)) {
173 $fieldstosearchall[
"c.note_private"] =
"NotePrivate";
176$checkedtypetiers = 0;
178 'c.rowid' => array(
'label' =>
"ID",
'checked' => 1,
'enabled' =>
getDolGlobalInt(
'MAIN_SHOW_TECHNICAL_ID'),
'position' => 1),
179 'c.ref' => array(
'label' =>
"Ref",
'checked' => 1,
'position' => 5,
'searchall' => 1),
180 'c.ref_client' => array(
'label' =>
"RefCustomerOrder",
'checked' => -1,
'position' => 10,
'searchall' => 1),
181 'p.ref' => array(
'label' =>
"ProjectRef",
'checked' => -1,
'enabled' => (!isModEnabled(
'project') ? 0 : 1),
'position' => 20),
182 'p.title' => array(
'label' =>
"ProjectLabel",
'checked' => 0,
'enabled' => (!isModEnabled(
'project') ? 0 : 1),
'position' => 25),
183 's.nom' => array(
'label' =>
"ThirdParty",
'checked' => 1,
'position' => 30,
'searchall' => 1),
184 's.name_alias' => array(
'label' =>
"AliasNameShort",
'checked' => -1,
'position' => 31,
'searchall' => 1),
185 's2.nom' => array(
'label' =>
'ParentCompany',
'position' => 32,
'checked' => 0),
186 's.town' => array(
'label' =>
"Town",
'checked' => -1,
'position' => 35,
'searchall' => 1),
187 's.zip' => array(
'label' =>
"Zip",
'checked' => -1,
'position' => 40,
'searchall' => 1),
188 'state.nom' => array(
'label' =>
"StateShort",
'checked' => 0,
'position' => 45),
189 'country.code_iso' => array(
'label' =>
"Country",
'checked' => 0,
'position' => 50),
190 'typent.code' => array(
'label' =>
"ThirdPartyType",
'checked' => $checkedtypetiers,
'position' => 55),
191 'c.date_commande' => array(
'label' =>
"OrderDateShort",
'checked' => 1,
'position' => 60,
'csslist' =>
'nowraponall'),
192 'c.date_delivery' => array(
'label' =>
"DateDeliveryPlanned",
'checked' => 1,
'enabled' => !
getDolGlobalString(
'ORDER_DISABLE_DELIVERY_DATE'),
'position' => 65,
'csslist' =>
'nowraponall'),
193 'c.fk_shipping_method' => array(
'label' =>
"SendingMethod",
'checked' => -1,
'position' => 66 ,
'enabled' => isModEnabled(
"shipping")),
194 'c.fk_cond_reglement' => array(
'label' =>
"PaymentConditionsShort",
'checked' => -1,
'position' => 67),
195 'c.fk_mode_reglement' => array(
'label' =>
"PaymentMode",
'checked' => -1,
'position' => 68),
196 'c.fk_input_reason' => array(
'label' =>
"Origin",
'checked' => -1,
'position' => 69),
197 'c.total_ht' => array(
'label' =>
"AmountHT",
'checked' => 1,
'position' => 75),
198 'c.total_vat' => array(
'label' =>
"AmountVAT",
'checked' => 0,
'position' => 80),
199 'c.total_ttc' => array(
'label' =>
"AmountTTC",
'checked' => 0,
'position' => 85),
200 'c.multicurrency_code' => array(
'label' =>
'Currency',
'checked' => 0,
'enabled' => (!isModEnabled(
"multicurrency") ? 0 : 1),
'position' => 90),
201 'c.multicurrency_tx' => array(
'label' =>
'CurrencyRate',
'checked' => 0,
'enabled' => (!isModEnabled(
"multicurrency") ? 0 : 1),
'position' => 95),
202 'c.multicurrency_total_ht' => array(
'label' =>
'MulticurrencyAmountHT',
'checked' => 0,
'enabled' => (!isModEnabled(
"multicurrency") ? 0 : 1),
'position' => 100),
203 'c.multicurrency_total_vat' => array(
'label' =>
'MulticurrencyAmountVAT',
'checked' => 0,
'enabled' => (!isModEnabled(
"multicurrency") ? 0 : 1),
'position' => 105),
204 'c.multicurrency_total_ttc' => array(
'label' =>
'MulticurrencyAmountTTC',
'checked' => 0,
'enabled' => (!isModEnabled(
"multicurrency") ? 0 : 1),
'position' => 110),
205 'u.login' => array(
'label' =>
"Author",
'checked' => 1,
'position' => 115),
206 'sale_representative' => array(
'label' =>
"SaleRepresentativesOfThirdParty",
'checked' => 0,
'position' => 116),
207 'total_pa' => array(
'label' => (
getDolGlobalString(
'MARGIN_TYPE') ==
'1' ?
'BuyingPrice' :
'CostPrice'),
'checked' => 0,
'position' => 300,
'enabled' => (!isModEnabled(
'margin') || !$user->hasRight(
"margins",
"liretous") ? 0 : 1)),
208 'total_margin' => array(
'label' =>
'Margin',
'checked' => 0,
'position' => 301,
'enabled' => (!isModEnabled(
'margin') || !$user->hasRight(
"margins",
"liretous") ? 0 : 1)),
209 'total_margin_rate' => array(
'label' =>
'MarginRate',
'checked' => 0,
'position' => 302,
'enabled' => (!isModEnabled(
'margin') || !$user->hasRight(
"margins",
"liretous") || !
getDolGlobalString(
'DISPLAY_MARGIN_RATES') ? 0 : 1)),
210 'total_mark_rate' => array(
'label' =>
'MarkRate',
'checked' => 0,
'position' => 303,
'enabled' => (!isModEnabled(
'margin') || !$user->hasRight(
"margins",
"liretous") || !
getDolGlobalString(
'DISPLAY_MARK_RATES') ? 0 : 1)),
211 'c.datec' => array(
'label' =>
"DateCreation",
'checked' => 0,
'position' => 120),
212 'c.tms' => array(
'label' =>
"DateModificationShort",
'checked' => 0,
'position' => 125),
213 'c.date_cloture' => array(
'label' =>
"DateClosing",
'checked' => 0,
'position' => 130),
214 'c.note_public' => array(
'label' =>
'NotePublic',
'checked' => 0,
'enabled' => (!
getDolGlobalInt(
'MAIN_LIST_HIDE_PUBLIC_NOTES')),
'position' => 135,
'searchall' => 1),
215 'c.note_private' => array(
'label' =>
'NotePrivate',
'checked' => 0,
'enabled' => (!
getDolGlobalInt(
'MAIN_LIST_HIDE_PRIVATE_NOTES')),
'position' => 140),
216 'shippable' => array(
'label' =>
"Shippable",
'checked' => 1,
'enabled' => (isModEnabled(
"shipping")),
'position' => 990),
217 'c.facture' => array(
'label' =>
"Billed",
'checked' => 1,
'enabled' => (!
getDolGlobalString(
'WORKFLOW_BILL_ON_SHIPMENT')),
'position' => 995),
218 'c.import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'visible' => -2,
'position' => 999),
219 'c.fk_statut' => array(
'label' =>
"Status",
'checked' => 1,
'position' => 1000)
222$parameters = array(
'fieldstosearchall' => $fieldstosearchall);
223$reshook = $hookmanager->executeHooks(
'completeFieldsToSearchAll', $parameters, $object, $action);
225 $fieldstosearchall = empty($hookmanager->resArray[
'fieldstosearchall']) ? array() : $hookmanager->resArray[
'fieldstosearchall'];
226} elseif ($reshook == 0) {
227 $fieldstosearchall = array_merge($fieldstosearchall, empty($hookmanager->resArray[
'fieldstosearchall']) ? array() : $hookmanager->resArray[
'fieldstosearchall']);
231include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
236'@phan-var-force array<string,array{label:string,checked?:int<0,1>,position?:int,help?:string}> $arrayfields';
242 $socid = $user->socid;
245$permissiontoreadallthirdparty = $user->hasRight(
'societe',
'client',
'voir');
257if (
GETPOST(
'cancel',
'alpha')) {
261if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend' && $massaction !=
'confirm_createbills') {
265$parameters = array(
'socid' => $socid,
'arrayfields' => &$arrayfields);
266$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
271if (empty($reshook)) {
273 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
276 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
279 $search_product_category =
'';
282 $search_ref_customer =
'';
283 $search_company =
'';
284 $search_company_alias =
'';
285 $search_parent_name =
'';
290 $search_country =
'';
291 $search_type_thirdparty =
'';
292 $search_total_ht =
'';
293 $search_total_vat =
'';
294 $search_total_ttc =
'';
295 $search_warehouse =
'';
296 $search_multicurrency_code =
'';
297 $search_multicurrency_tx =
'';
298 $search_multicurrency_montant_ht =
'';
299 $search_multicurrency_montant_vat =
'';
300 $search_multicurrency_montant_ttc =
'';
302 $search_dateorder_start =
'';
303 $search_dateorder_end =
'';
304 $search_datedelivery_start =
'';
305 $search_datedelivery_end =
'';
306 $search_project_ref =
'';
307 $search_project =
'';
311 $search_array_options = array();
312 $search_categ_cus = 0;
313 $search_datecloture_start =
'';
314 $search_datecloture_end =
'';
315 $search_fk_cond_reglement =
'';
316 $search_fk_shipping_method =
'';
317 $search_fk_mode_reglement =
'';
318 $search_fk_input_reason =
'';
320 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')
321 ||
GETPOST(
'button_search_x',
'alpha') ||
GETPOST(
'button_search.x',
'alpha') ||
GETPOST(
'button_search',
'alpha')) {
326 $objectclass =
'Commande';
327 $objectlabel =
'Orders';
328 $permissiontoread = $user->hasRight(
"commande",
"lire");
329 $permissiontoadd = $user->hasRight(
"commande",
"creer");
330 $permissiontodelete = $user->hasRight(
"commande",
"supprimer");
332 $permissiontovalidate = $user->hasRight(
"commande",
"order_advance",
"validate");
333 $permissiontoclose = $user->hasRight(
"commande",
"order_advance",
"close");
334 $permissiontocancel = $user->hasRight(
"commande",
"order_advance",
"annuler");
335 $permissiontosendbymail = $user->hasRight(
"commande",
"order_advance",
"send");
337 $permissiontovalidate = $user->hasRight(
"commande",
"creer");
338 $permissiontoclose = $user->hasRight(
"commande",
"creer");
339 $permissiontocancel = $user->hasRight(
"commande",
"creer");
340 $permissiontosendbymail = $user->hasRight(
"commande",
"creer");
342 $uploaddir = $conf->commande->multidir_output[$conf->entity];
343 $triggersendname =
'ORDER_SENTBYMAIL';
346 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
348 if ($massaction ==
'confirm_createbills') {
349 $orders =
GETPOST(
'toselect',
'array');
350 $createbills_onebythird =
GETPOSTINT(
'createbills_onebythird');
351 $validate_invoices =
GETPOSTINT(
'validate_invoices');
356 $TFactThird = array();
357 $TFactThirdNbLines = array();
359 $nb_bills_created = 0;
365 $nbOrders = is_array($orders) ? count($orders) : 1;
367 foreach ($orders as $id_order) {
369 if ($cmd->fetch($id_order) <= 0) {
372 $cmd->fetch_thirdparty();
375 if (!empty($createbills_onebythird) && !empty($TFactThird[$cmd->socid])) {
377 $objecttmp = $TFactThird[$cmd->socid];
380 $objecttmp->socid = $cmd->socid;
381 $objecttmp->thirdparty = $cmd->thirdparty;
383 $objecttmp->type = $objecttmp::TYPE_STANDARD;
384 $objecttmp->cond_reglement_id = !empty($cmd->cond_reglement_id) ? $cmd->cond_reglement_id : $cmd->thirdparty->cond_reglement_id;
385 $objecttmp->mode_reglement_id = !empty($cmd->mode_reglement_id) ? $cmd->mode_reglement_id : $cmd->thirdparty->mode_reglement_id;
387 $objecttmp->fk_project = $cmd->fk_project;
388 $objecttmp->multicurrency_code = $cmd->multicurrency_code;
389 if (empty($createbills_onebythird)) {
390 $objecttmp->ref_client = $cmd->ref_client;
394 if (empty($datefacture)) {
398 $objecttmp->date = $datefacture;
399 $objecttmp->origin =
'commande';
400 $objecttmp->origin_id = $id_order;
402 $objecttmp->array_options = $cmd->array_options;
404 $res = $objecttmp->create($user);
408 $lastref = $objecttmp->ref;
409 $lastid = $objecttmp->id;
411 $TFactThird[$cmd->socid] = $objecttmp;
412 $TFactThirdNbLines[$cmd->socid] = 0;
414 $langs->load(
"errors");
415 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
420 if ($objecttmp->id > 0) {
421 $res = $objecttmp->add_object_linked($objecttmp->origin, $id_order);
424 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
429 $lines = $cmd->lines;
430 if (empty($lines) && method_exists($cmd,
'fetch_lines')) {
432 $lines = $cmd->lines;
436 $num = count($lines);
438 for ($i = 0; $i < $num; $i++) {
439 $desc = ($lines[$i]->desc ? $lines[$i]->desc :
'');
441 if (!empty($createbills_onebythird)) {
445 if ($lines[$i]->subprice < 0 && !
getDolGlobalString(
'INVOICE_KEEP_DISCOUNT_LINES_AS_IN_ORIGIN')) {
448 $discount->fk_soc = $objecttmp->socid;
449 $discount->socid = $objecttmp->socid;
450 $discount->amount_ht = abs($lines[$i]->total_ht);
451 $discount->amount_tva = abs($lines[$i]->total_tva);
452 $discount->amount_ttc = abs($lines[$i]->total_ttc);
453 $discount->tva_tx = $lines[$i]->tva_tx;
454 $discount->fk_user = $user->id;
455 $discount->description = $desc;
456 $discountid = $discount->create($user);
457 if ($discountid > 0) {
458 $result = $objecttmp->insert_discount($discountid);
467 $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0);
470 if ($lines[$i]->date_debut_prevue) {
471 $date_start = $lines[$i]->date_debut_prevue;
473 if ($lines[$i]->date_debut_reel) {
474 $date_start = $lines[$i]->date_debut_reel;
476 if ($lines[$i]->date_start) {
477 $date_start = $lines[$i]->date_start;
481 if ($lines[$i]->date_fin_prevue) {
482 $date_end = $lines[$i]->date_fin_prevue;
484 if ($lines[$i]->date_fin_reel) {
485 $date_end = $lines[$i]->date_fin_reel;
487 if ($lines[$i]->date_end) {
488 $date_end = $lines[$i]->date_end;
491 if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
496 if (method_exists($lines[$i],
'fetch_optionals')) {
497 $lines[$i]->fetch_optionals();
498 $array_options = $lines[$i]->array_options;
501 $objecttmp->context[
'createfromclone'] =
'createfromclone';
503 $rang = ($nbOrders > 1) ? -1 : $lines[$i]->rang;
505 if (!empty($createbills_onebythird)) {
506 $TFactThirdNbLines[$cmd->socid]++;
507 $rang = $TFactThirdNbLines[$cmd->socid];
510 $result = $objecttmp->addline(
512 $lines[$i]->subprice,
515 $lines[$i]->localtax1_tx,
516 $lines[$i]->localtax2_tx,
517 $lines[$i]->fk_product,
518 $lines[$i]->remise_percent,
522 $lines[$i]->info_bits,
523 $lines[$i]->fk_remise_except,
528 $lines[$i]->special_code,
532 $lines[$i]->fk_fournprice,
545 $errors[] = $objecttmp->error;
549 if ($result > 0 && $lines[$i]->product_type == 9) {
550 $fk_parent_line = $result;
559 if (!empty($createbills_onebythird) && empty($TFactThird[$cmd->socid])) {
560 $TFactThird[$cmd->socid] = $objecttmp;
562 $TFact[$objecttmp->id] = $objecttmp;
567 $TAllFact = empty($createbills_onebythird) ? $TFact : $TFactThird;
570 if (!$error && $validate_invoices) {
571 $massaction = $action =
'builddoc';
573 foreach ($TAllFact as &$objecttmp) {
574 $result = $objecttmp->validate($user);
581 $id = $objecttmp->id;
585 $upload_dir = $conf->facture->dir_output;
586 $permissiontoadd = $user->hasRight(
'facture',
'creer');
591 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
595 $massaction = $action =
'confirm_createbills';
601 if ($nb_bills_created == 1) {
602 if (
getDolGlobalInt(
'MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_ONE') == 1) {
604 header(
'Location: '.DOL_URL_ROOT.
'/compta/facture/card.php?id='.urlencode((
string) $lastid));
607 $texttoshow = $langs->trans(
'BillXCreated',
'{s1}');
608 $texttoshow = str_replace(
'{s1}',
'<a href="'.DOL_URL_ROOT.
'/compta/facture/card.php?id='.urlencode((
string) ($lastid)).
'">'.$lastref.
'</a>', $texttoshow);
611 if (
getDolGlobalInt(
'MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_MANY') == 1) {
613 header(
"Location: ".DOL_URL_ROOT.
'/compta/facture/list.php?mainmenu=billing&leftmenu=customers_bills');
616 setEventMessages($langs->trans(
'BillCreated', $nb_bills_created),
null,
'mesgs');
622 $param .=
'&mode='.urlencode($mode);
624 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
625 $param .=
'&contextpage='.urlencode($contextpage);
627 if ($limit > 0 && $limit != $conf->liste_limit) {
628 $param .=
'&limit='.((int) $limit);
630 if ($optioncss !=
'') {
631 $param .=
'&optioncss='.urlencode($optioncss);
634 $param .=
'&search_all='.urlencode($search_all);
637 $param .=
'&show_files='.urlencode((
string) ($show_files));
640 $param .=
'&socid='.urlencode((
string) ($socid));
642 if ($search_status !=
'') {
643 $param .=
'&search_status='.urlencode($search_status);
645 if ($search_orderday) {
646 $param .=
'&search_orderday='.urlencode($search_orderday);
648 if ($search_ordermonth) {
649 $param .=
'&search_ordermonth='.urlencode($search_ordermonth);
651 if ($search_orderyear) {
652 $param .=
'&search_orderyear='.urlencode($search_orderyear);
654 if ($search_deliveryday) {
655 $param .=
'&search_deliveryday='.urlencode($search_deliveryday);
657 if ($search_deliverymonth) {
658 $param .=
'&search_deliverymonth='.urlencode($search_deliverymonth);
660 if ($search_deliveryyear) {
661 $param .=
'&search_deliveryyear='.urlencode($search_deliveryyear);
664 $param .=
'&search_id='.urlencode((
string) $search_id);
667 $param .=
'&search_ref='.urlencode($search_ref);
669 if ($search_company) {
670 $param .=
'&search_company='.urlencode($search_company);
672 if ($search_ref_customer) {
673 $param .=
'&search_ref_customer='.urlencode($search_ref_customer);
675 if ($search_user > 0) {
676 $param .=
'&search_user='.urlencode((
string) ($search_user));
678 if ($search_sale > 0) {
679 $param .=
'&search_sale='.urlencode((
string) ($search_sale));
681 if ($search_total_ht !=
'') {
682 $param .=
'&search_total_ht='.urlencode($search_total_ht);
684 if ($search_total_vat !=
'') {
685 $param .=
'&search_total_vat='.urlencode($search_total_vat);
687 if ($search_total_ttc !=
'') {
688 $param .=
'&search_total_ttc='.urlencode($search_total_ttc);
690 if ($search_project_ref >= 0) {
691 $param .=
"&search_project_ref=".urlencode($search_project_ref);
693 if ($search_billed !=
'') {
694 $param .=
'&search_billed='.urlencode($search_billed);
697 header(
"Location: ".$_SERVER[
'PHP_SELF'].
'?'.$param);
703 $_GET[
"origin"] = $_POST[
"origin"];
704 $_GET[
"originid"] = $_POST[
"originid"];
705 if (!empty($errors)) {
714if ($action ==
'validate' && $permissiontoadd) {
715 if (
GETPOST(
'confirm') ==
'yes') {
716 $objecttmp =
new $objectclass($db);
719 foreach ($toselect as $checked) {
720 if ($objecttmp->fetch($checked)) {
721 if ($objecttmp->statut == 0) {
722 if (!empty($objecttmp->fk_warehouse)) {
723 $idwarehouse = $objecttmp->fk_warehouse;
727 if ($objecttmp->valid($user, $idwarehouse)) {
728 setEventMessages($langs->trans(
'hasBeenValidated', $objecttmp->ref),
null,
'mesgs');
734 $langs->load(
"errors");
735 setEventMessages($langs->trans(
'ErrorIsNotADraft', $objecttmp->ref),
null,
'errors');
750if ($action ==
'shipped' && $permissiontoadd) {
751 if (
GETPOST(
'confirm') ==
'yes') {
752 $objecttmp =
new $objectclass($db);
755 foreach ($toselect as $checked) {
756 if ($objecttmp->fetch($checked)) {
757 if ($objecttmp->statut == 1 || $objecttmp->statut == 2) {
758 if ($objecttmp->cloture($user)) {
759 setEventMessages($langs->trans(
'StatusOrderDelivered', $objecttmp->ref),
null,
'mesgs');
761 setEventMessages($langs->trans(
'ErrorOrderStatusCantBeSetToDelivered'),
null,
'errors');
765 $langs->load(
"errors");
766 setEventMessages($langs->trans(
'ErrorIsNotADraft', $objecttmp->ref),
null,
'errors');
783if (!$error && $massaction ===
'setbilled' && $permissiontoclose) {
786 $objecttmp =
new $objectclass($db);
788 foreach ($toselect as $toselectid) {
789 $result = $objecttmp->fetch($toselectid);
791 $result = $objecttmp->classifyBilled($user, 0);
819$form =
new Form($db);
823if (isModEnabled(
'margin')) {
826$companystatic =
new Societe($db);
827$company_url_list = array();
829$projectstatic =
new Project($db);
833$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
834$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
836$title = $langs->trans(
"Orders");
837$help_url =
"EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes";
843 $sql =
'SELECT DISTINCT';
845$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,';
846$sql .=
" s.parent as fk_parent,";
847$sql .=
" s2.nom as name2,";
848$sql .=
" typent.code as typent_code,";
849$sql .=
" state.code_departement as state_code, state.nom as state_name,";
850$sql .=
" country.code as country_code,";
851$sql .=
' c.rowid, c.ref, c.total_ht, c.total_tva, c.total_ttc, c.ref_client, c.fk_user_author,';
852$sql .=
' c.fk_multicurrency, c.multicurrency_code, c.multicurrency_tx, c.multicurrency_total_ht, c.multicurrency_total_tva as multicurrency_total_vat, c.multicurrency_total_ttc,';
853$sql .=
' c.date_valid, c.date_commande, c.note_public, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as billed,';
854$sql .=
' c.date_creation as date_creation, c.tms as date_modification, c.date_cloture as date_cloture,';
855$sql .=
' p.rowid as project_id, p.ref as project_ref, p.title as project_label,';
856$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,';
857$sql .=
' c.fk_cond_reglement,c.deposit_percent,c.fk_mode_reglement,c.fk_shipping_method,';
858$sql .=
' c.fk_input_reason, c.import_key';
861if (!empty($extrafields->attributes[
$object->table_element][
'label'])) {
862 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $val) {
863 $sql .= ($extrafields->attributes[
$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
868$parameters = array();
869$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters, $object, $action);
870$sql .= $hookmanager->resPrint;
871$sql = preg_replace(
'/,\s*$/',
'', $sql);
875$sql .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
876$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s2 ON s2.rowid = s.parent";
877$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as country on (country.rowid = s.fk_pays)";
878$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_typent as typent on (typent.id = s.fk_typent)";
879$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_departements as state on (state.rowid = s.fk_departement)";
880$sql .=
', '.MAIN_DB_PREFIX.
'commande as c';
881if (!empty($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
882 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"commande_extrafields as ef on (c.rowid = ef.fk_object)";
885 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'commandedet as pd ON c.rowid=pd.fk_commande';
887$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"projet as p ON p.rowid = c.fk_projet";
888$sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'user as u ON c.fk_user_author = u.rowid';
890$parameters = array();
891$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters, $object, $action);
892$sql .= $hookmanager->resPrint;
894$sql .=
' WHERE c.fk_soc = s.rowid';
895$sql .=
' AND c.entity IN ('.getEntity(
'commande').
')';
897 $sql .=
' AND s.rowid = '.((int) $socid);
901if (!$permissiontoreadallthirdparty) {
902 $sql .=
" AND (EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = c.fk_soc AND sc.fk_user = ".((int) $user->id).
")";
904 $sql .=
" OR EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = c.fk_soc AND sc.fk_user IN (".$db->sanitize(implode(
',', $userschilds)).
"))";
915if ($search_ref_customer) {
919 $sql .=
natural_search(array_keys($fieldstosearchall), $search_all);
921if ($search_billed !=
'' && $search_billed >= 0) {
922 $sql .=
' AND c.facture = '.((int) $search_billed);
924if ($search_status !=
'') {
925 if ($search_status <= 3 && $search_status >= -1) {
926 if ($search_status == 1 && !isModEnabled(
'shipping')) {
927 $sql .=
' AND c.fk_statut IN (1,2)';
929 $sql .=
' AND c.fk_statut = '.((int) $search_status);
932 if ($search_status == -2) {
934 $sql .=
" AND (c.fk_statut IN (1,2))";
936 if ($search_status == -3) {
939 $sql .=
' AND (c.fk_statut IN (1,2,3))';
943if ($search_datecloture_start) {
944 $sql .=
" AND c.date_cloture >= '".$db->idate($search_datecloture_start).
"'";
946if ($search_datecloture_end) {
947 $sql .=
" AND c.date_cloture <= '".$db->idate($search_datecloture_end).
"'";
949if ($search_dateorder_start) {
950 $sql .=
" AND c.date_commande >= '".$db->idate($search_dateorder_start).
"'";
952if ($search_dateorder_end) {
953 $sql .=
" AND c.date_commande <= '".$db->idate($search_dateorder_end).
"'";
955if ($search_datedelivery_start) {
956 $sql .=
" AND c.date_livraison >= '".$db->idate($search_datedelivery_start).
"'";
958if ($search_datedelivery_end) {
959 $sql .=
" AND c.date_livraison <= '".$db->idate($search_datedelivery_end).
"'";
970if ($search_country) {
971 $sql .=
" AND s.fk_pays IN (".$db->sanitize($search_country).
')';
973if ($search_type_thirdparty && $search_type_thirdparty !=
'-1') {
974 $sql .=
" AND s.fk_typent IN (".$db->sanitize($search_type_thirdparty).
')';
976if (empty($arrayfields[
's.name_alias'][
'checked']) && $search_company) {
977 $sql .=
natural_search(array(
"s.nom",
"s.name_alias"), $search_company);
979 if ($search_company) {
982 if ($search_company_alias) {
986if ($search_parent_name) {
989if ($search_total_ht !=
'') {
992if ($search_total_vat !=
'') {
995if ($search_total_ttc !=
'') {
998if ($search_warehouse !=
'' && $search_warehouse > 0) {
1001if ($search_multicurrency_code !=
'') {
1002 $sql .=
" AND c.multicurrency_code = '".$db->escape($search_multicurrency_code).
"'";
1004if ($search_multicurrency_tx !=
'') {
1005 $sql .=
natural_search(
'c.multicurrency_tx', $search_multicurrency_tx, 1);
1007if ($search_multicurrency_montant_ht !=
'') {
1008 $sql .=
natural_search(
'c.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
1010if ($search_multicurrency_montant_vat !=
'') {
1011 $sql .=
natural_search(
'c.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
1013if ($search_multicurrency_montant_ttc !=
'') {
1014 $sql .=
natural_search(
'c.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
1017 $sql .=
natural_search(array(
"u.login",
"u.firstname",
"u.lastname"), $search_login);
1019if ($search_project_ref !=
'') {
1022if ($search_project !=
'') {
1025if ($search_fk_cond_reglement > 0) {
1026 $sql .=
" AND c.fk_cond_reglement = ".((int) $search_fk_cond_reglement);
1028if ($search_fk_shipping_method > 0) {
1029 $sql .=
" AND c.fk_shipping_method = ".((int) $search_fk_shipping_method);
1031if ($search_fk_mode_reglement > 0) {
1032 $sql .=
" AND c.fk_mode_reglement = ".((int) $search_fk_mode_reglement);
1034if ($search_fk_input_reason > 0) {
1035 $sql .=
" AND c.fk_input_reason = ".((int) $search_fk_input_reason);
1038if ($search_user > 0) {
1039 $sql .=
" AND EXISTS (";
1040 $sql .=
" SELECT ec.fk_c_type_contact, ec.element_id, ec.fk_socpeople";
1041 $sql .=
" FROM llx_element_contact as ec";
1042 $sql .=
" INNER JOIN llx_c_type_contact as tc";
1043 $sql .=
" ON ec.fk_c_type_contact = tc.rowid AND tc.element='commande' AND tc.source='internal'";
1044 $sql .=
" WHERE ec.element_id = c.rowid AND ec.fk_socpeople = ".((int) $search_user).
")";
1047if ($search_sale && $search_sale !=
'-1') {
1048 if ($search_sale == -2) {
1049 $sql .=
" AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = c.fk_soc)";
1050 } elseif ($search_sale > 0) {
1051 $sql .=
" AND EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = c.fk_soc AND sc.fk_user = ".((int) $search_sale).
")";
1055$searchCategoryCustomerOperator = -1;
1056$searchCategoryCustomerList = array($search_categ_cus);
1057if (!empty($searchCategoryCustomerList)) {
1058 $searchCategoryCustomerSqlList = array();
1059 $listofcategoryid =
'';
1060 foreach ($searchCategoryCustomerList as $searchCategoryCustomer) {
1061 if (intval($searchCategoryCustomer) == -2) {
1062 $searchCategoryCustomerSqlList[] =
"NOT EXISTS (SELECT cs.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as cs WHERE s.rowid = cs.fk_soc)";
1063 } elseif (intval($searchCategoryCustomer) > 0) {
1064 if ($searchCategoryCustomerOperator == 0) {
1065 $searchCategoryCustomerSqlList[] =
" EXISTS (SELECT cs.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as cs WHERE s.rowid = cs.fk_soc AND cs.fk_categorie = ".((int) $searchCategoryCustomer).
")";
1067 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryCustomer);
1071 if ($listofcategoryid) {
1072 $searchCategoryCustomerSqlList[] =
" EXISTS (SELECT cs.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as cs WHERE s.rowid = cs.fk_soc AND cs.fk_categorie IN (".$db->sanitize($listofcategoryid).
"))";
1074 if ($searchCategoryCustomerOperator == 1) {
1075 if (!empty($searchCategoryCustomerSqlList)) {
1076 $sql .=
" AND (".implode(
' OR ', $searchCategoryCustomerSqlList).
")";
1079 if (!empty($searchCategoryCustomerSqlList)) {
1080 $sql .=
" AND (".implode(
' AND ', $searchCategoryCustomerSqlList).
")";
1085$searchCategoryProductOperator = -1;
1086$searchCategoryProductList = array($search_product_category);
1087if (!empty($searchCategoryProductList)) {
1088 $searchCategoryProductSqlList = array();
1089 $listofcategoryid =
'';
1090 foreach ($searchCategoryProductList as $searchCategoryProduct) {
1091 if (intval($searchCategoryProduct) == -2) {
1092 $searchCategoryProductSqlList[] =
"NOT EXISTS (SELECT ck.fk_product FROM ".MAIN_DB_PREFIX.
"categorie_product as ck, ".MAIN_DB_PREFIX.
"commandedet as cd WHERE cd.fk_commande = c.rowid AND cd.fk_product = ck.fk_product)";
1093 } elseif (intval($searchCategoryProduct) > 0) {
1094 if ($searchCategoryProductOperator == 0) {
1095 $searchCategoryProductSqlList[] =
" EXISTS (SELECT ck.fk_product FROM ".MAIN_DB_PREFIX.
"categorie_product as ck, ".MAIN_DB_PREFIX.
"commandedet as cd WHERE cd.fk_commande = c.rowid AND cd.fk_product = ck.fk_product AND ck.fk_categorie = ".((int) $searchCategoryProduct).
")";
1097 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryProduct);
1101 if ($listofcategoryid) {
1102 $searchCategoryProductSqlList[] =
" EXISTS (SELECT ck.fk_product FROM ".MAIN_DB_PREFIX.
"categorie_product as ck, ".MAIN_DB_PREFIX.
"commandedet as cd WHERE cd.fk_commande = c.rowid AND cd.fk_product = ck.fk_product AND ck.fk_categorie IN (".$db->sanitize($listofcategoryid).
"))";
1104 if ($searchCategoryProductOperator == 1) {
1105 if (!empty($searchCategoryProductSqlList)) {
1106 $sql .=
" AND (".implode(
' OR ', $searchCategoryProductSqlList).
")";
1109 if (!empty($searchCategoryProductSqlList)) {
1110 $sql .=
" AND (".implode(
' AND ', $searchCategoryProductSqlList).
")";
1115include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
1117$parameters = array();
1118$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action);
1119$sql .= $hookmanager->resPrint;
1122$parameters = array();
1123$reshook = $hookmanager->executeHooks(
'printFieldListHaving', $parameters, $object, $action);
1124$sql .= empty($hookmanager->resPrint) ?
"" :
" HAVING 1=1 ".$hookmanager->resPrint;
1128$nbtotalofrecords =
'';
1131 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
1132 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
1133 $resql = $db->query($sqlforcount);
1135 $objforcount = $db->fetch_object($resql);
1136 $nbtotalofrecords = $objforcount->nbtotalofrecords;
1141 if (($page * $limit) > $nbtotalofrecords) {
1148$sql .= $db->order($sortfield, $sortorder);
1150 $sql .= $db->plimit($limit + 1, $offset);
1154$resql = $db->query($sql);
1162 $soc->fetch($socid);
1163 $title = $langs->trans(
'CustomersOrders').
' - '.$soc->name;
1164 if (empty($search_company)) {
1165 $search_company = $soc->name;
1168 $title = $langs->trans(
'CustomersOrders');
1170if (strval($search_status) ==
'0') {
1171 $title .=
' - '.$langs->trans(
'StatusOrderDraftShort');
1173if ($search_status == 1) {
1174 $title .=
' - '.$langs->trans(
'StatusOrderValidatedShort');
1176if ($search_status == 2) {
1177 $title .=
' - '.$langs->trans(
'StatusOrderSentShort');
1179if ($search_status == 3) {
1180 $title .=
' - '.$langs->trans(
'StatusOrderToBillShort');
1182if ($search_status == -1) {
1183 $title .=
' - '.$langs->trans(
'StatusOrderCanceledShort');
1185if ($search_status == -2) {
1186 $title .=
' - '.$langs->trans(
'StatusOrderToProcessShort');
1188if ($search_status == -3) {
1189 $title .=
' - '.$langs->trans(
'StatusOrderValidated').
', '.(!isModEnabled(
'shipping') ?
'' : $langs->trans(
"StatusOrderSent").
', ').$langs->trans(
'StatusOrderToBill');
1191if ($search_status == -4) {
1192 $title .=
' - '.$langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort");
1195$num = $db->num_rows($resql);
1197$arrayofselected = is_array($toselect) ? $toselect : array();
1199if ($num == 1 &&
getDolGlobalString(
'MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all) {
1200 $obj = $db->fetch_object($resql);
1202 header(
"Location: ".DOL_URL_ROOT.
'/commande/card.php?id='.$id);
1209llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'bodyforlist mod-order page-list');
1211$arrayofselected = is_array($toselect) ? $toselect : array();
1215 $param .=
'&mode='.urlencode($mode);
1217if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
1218 $param .=
'&contextpage='.urlencode($contextpage);
1220if ($limit > 0 && $limit != $conf->liste_limit) {
1221 $param .=
'&limit='.((int) $limit);
1224 $param .=
'&search_all='.urlencode($search_all);
1227 $param .=
'&socid='.((int) $socid);
1229if ($search_status !=
'') {
1230 $param .=
'&search_status='.urlencode($search_status);
1232if ($search_datecloture_start) {
1233 $param .=
'&search_datecloture_startday='.dol_print_date($search_datecloture_start,
'%d').
'&search_datecloture_startmonth='.
dol_print_date($search_datecloture_start,
'%m').
'&search_datecloture_startyear='.
dol_print_date($search_datecloture_start,
'%Y');
1235if ($search_datecloture_end) {
1236 $param .=
'&search_datecloture_endday='.dol_print_date($search_datecloture_end,
'%d').
'&search_datecloture_endmonth='.
dol_print_date($search_datecloture_end,
'%m').
'&search_datecloture_endyear='.
dol_print_date($search_datecloture_end,
'%Y');
1238if ($search_dateorder_start) {
1239 $param .=
'&search_dateorder_start_day='.dol_print_date($search_dateorder_start,
'%d').
'&search_dateorder_start_month='.
dol_print_date($search_dateorder_start,
'%m').
'&search_dateorder_start_year='.
dol_print_date($search_dateorder_start,
'%Y');
1241if ($search_dateorder_end) {
1242 $param .=
'&search_dateorder_end_day='.dol_print_date($search_dateorder_end,
'%d').
'&search_dateorder_end_month='.
dol_print_date($search_dateorder_end,
'%m').
'&search_dateorder_end_year='.
dol_print_date($search_dateorder_end,
'%Y');
1244if ($search_datedelivery_start) {
1245 $param .=
'&search_datedelivery_start_day='.dol_print_date($search_datedelivery_start,
'%d').
'&search_datedelivery_start_month='.
dol_print_date($search_datedelivery_start,
'%m').
'&search_datedelivery_start_year='.
dol_print_date($search_datedelivery_start,
'%Y');
1247if ($search_datedelivery_end) {
1248 $param .=
'&search_datedelivery_end_day='.dol_print_date($search_datedelivery_end,
'%d').
'&search_datedelivery_end_month='.
dol_print_date($search_datedelivery_end,
'%m').
'&search_datedelivery_end_year='.
dol_print_date($search_datedelivery_end,
'%Y');
1251 $param .=
'&search_id='.urlencode((
string) $search_id);
1254 $param .=
'&search_ref='.urlencode($search_ref);
1256if ($search_company) {
1257 $param .=
'&search_company='.urlencode($search_company);
1259if ($search_company_alias) {
1260 $param .=
'&search_company_alias='.urlencode($search_company_alias);
1262if ($search_parent_name !=
'') {
1263 $param .=
'&search_parent_name='.urlencode($search_parent_name);
1265if ($search_ref_customer) {
1266 $param .=
'&search_ref_customer='.urlencode($search_ref_customer);
1268if ($search_user > 0) {
1269 $param .=
'&search_user='.urlencode((
string) ($search_user));
1271if ($search_sale > 0) {
1272 $param .=
'&search_sale='.urlencode((
string) ($search_sale));
1274if ($search_total_ht !=
'') {
1275 $param .=
'&search_total_ht='.urlencode($search_total_ht);
1277if ($search_total_vat !=
'') {
1278 $param .=
'&search_total_vat='.urlencode($search_total_vat);
1280if ($search_total_ttc !=
'') {
1281 $param .=
'&search_total_ttc='.urlencode($search_total_ttc);
1283if ($search_warehouse !=
'') {
1284 $param .=
'&search_warehouse='.urlencode((
string) ($search_warehouse));
1287 $param .=
'&search_login='.urlencode($search_login);
1289if ($search_multicurrency_code !=
'') {
1290 $param .=
'&search_multicurrency_code='.urlencode($search_multicurrency_code);
1292if ($search_multicurrency_tx !=
'') {
1293 $param .=
'&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
1295if ($search_multicurrency_montant_ht !=
'') {
1296 $param .=
'&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
1298if ($search_multicurrency_montant_vat !=
'') {
1299 $param .=
'&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
1301if ($search_multicurrency_montant_ttc !=
'') {
1302 $param .=
'&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
1304if ($search_project_ref >= 0) {
1305 $param .=
"&search_project_ref=".urlencode($search_project_ref);
1307if ($search_town !=
'') {
1308 $param .=
'&search_town='.urlencode($search_town);
1310if ($search_zip !=
'') {
1311 $param .=
'&search_zip='.urlencode($search_zip);
1313if ($search_state !=
'') {
1314 $param .=
'&search_state='.urlencode($search_state);
1316if ($search_country !=
'') {
1317 $param .=
'&search_country='.urlencode((
string) ($search_country));
1319if ($search_type_thirdparty && $search_type_thirdparty !=
'-1') {
1320 $param .=
'&search_type_thirdparty='.urlencode((
string) ($search_type_thirdparty));
1322if ($search_product_category !=
'') {
1323 $param .=
'&search_product_category='.urlencode((
string) ($search_product_category));
1325if (($search_categ_cus > 0) || ($search_categ_cus == -2)) {
1326 $param .=
'&search_categ_cus='.urlencode((
string) ($search_categ_cus));
1329 $param .=
'&show_files='.urlencode((
string) ($show_files));
1331if ($optioncss !=
'') {
1332 $param .=
'&optioncss='.urlencode($optioncss);
1334if ($search_billed !=
'') {
1335 $param .=
'&search_billed='.urlencode($search_billed);
1337if ($search_fk_cond_reglement > 0) {
1338 $param .=
'&search_fk_cond_reglement='.urlencode((
string) ($search_fk_cond_reglement));
1340if ($search_fk_shipping_method > 0) {
1341 $param .=
'&search_fk_shipping_method='.urlencode((
string) ($search_fk_shipping_method));
1343if ($search_fk_mode_reglement > 0) {
1344 $param .=
'&search_fk_mode_reglement='.urlencode((
string) ($search_fk_mode_reglement));
1346if ($search_fk_input_reason > 0) {
1347 $param .=
'&search_fk_input_reason='.urlencode((
string) ($search_fk_input_reason));
1351include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
1354$parameters = array();
1355$reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters, $object, $action);
1356$param .= $hookmanager->resPrint;
1359$arrayofmassactions = array(
1360 'generate_doc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"ReGeneratePDF"),
1361 'builddoc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"PDFMerge"),
1363if ($permissiontovalidate) {
1364 $arrayofmassactions[
'prevalidate'] =
img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"Validate");
1366if ($permissiontoclose) {
1367 $arrayofmassactions[
'preshipped'] =
img_picto(
'',
'dolly',
'class="pictofixedwidth"').$langs->trans(
"ClassifyShipped");
1369if (isModEnabled(
'invoice') && $user->hasRight(
"facture",
"creer")) {
1370 $arrayofmassactions[
'createbills'] =
img_picto(
'',
'bill',
'class="pictofixedwidth"').$langs->trans(
"CreateInvoiceForThisCustomer");
1372if ($permissiontoclose) {
1373 $arrayofmassactions[
'setbilled'] =
img_picto(
'',
'bill',
'class="pictofixedwidth"').$langs->trans(
"ClassifyBilled");
1375if ($permissiontocancel) {
1376 $arrayofmassactions[
'cancelorders'] =
img_picto(
'',
'close_title',
'class="pictofixedwidth"').$langs->trans(
"CancelOrder");
1378if (!empty($permissiontodelete)) {
1379 $arrayofmassactions[
'predelete'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
1381if ($permissiontosendbymail) {
1382 $arrayofmassactions[
'presend'] =
img_picto(
'',
'email',
'class="pictofixedwidth"').$langs->trans(
"SendByMail");
1384if (in_array($massaction, array(
'presend',
'predelete',
'createbills'))) {
1385 $arrayofmassactions = array();
1387$massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
1389$url = DOL_URL_ROOT.
'/commande/card.php?action=create';
1390if (!empty($socid)) {
1391 $url .=
'&socid='.$socid;
1394$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'));
1395$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'));
1397$newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewOrder'),
'',
'fa fa-plus-circle', $url,
'', ($contextpage ==
'orderlist' || $contextpage ==
'billableorders') && $permissiontoadd);
1400print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">'.
"\n";
1401if ($optioncss !=
'') {
1402 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
1404print
'<input type="hidden" name="token" value="'.newToken().
'">';
1405print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
1406print
'<input type="hidden" name="action" value="list">';
1407print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
1408print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
1409print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
1410print
'<input type="hidden" name="search_status" value="'.$search_status.
'">';
1411print
'<input type="hidden" name="socid" value="'.$socid.
'">';
1412print
'<input type="hidden" name="page_y" value="">';
1413print
'<input type="hidden" name="mode" value="'.$mode.
'">';
1416print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'order', 0, $newcardbutton,
'', $limit, 0, 0, 1);
1418$topicmail =
"SendOrderRef";
1419$modelmail =
"order_send";
1421$trackid =
'ord'.$object->id;
1422include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
1424if ($massaction ==
'prevalidate') {
1425 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassValidation"), $langs->trans(
"ConfirmMassValidationQuestion"),
"validate",
null,
'', 0, 200, 500, 1);
1427if ($massaction ==
'preshipped') {
1428 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"CloseOrder"), $langs->trans(
"ConfirmCloseOrder"),
"shipped",
null,
'', 0, 200, 500, 1);
1431if ($massaction ==
'createbills') {
1432 print
'<input type="hidden" name="massaction" value="confirm_createbills">';
1434 print
'<table class="noborder centpercent">';
1437 print $langs->trans(
'DateInvoice');
1440 print $form->selectDate(
'',
'', 0, 0, 0,
'', 1, 1);
1445 print $langs->trans(
'CreateOneBillByThird');
1448 print $form->selectyesno(
'createbills_onebythird',
getDolGlobalString(
'MAIN_ORDERLIST_CREATEBILLS_ONEBYTHIRD',
'no'), 1);
1453 print $langs->trans(
'ValidateInvoices');
1457 print $form->selectyesno(
'validate_invoices', 0, 1, 1);
1458 $langs->load(
"errors");
1459 print
' ('.$langs->trans(
"WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal").
')';
1461 print $form->selectyesno(
'validate_invoices', 0, 1);
1463 if (!empty($conf->workflow->enabled) &&
getDolGlobalString(
'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER')) {
1464 print
' <span class="opacitymedium">'.$langs->trans(
"IfValidateInvoiceIsNoOrderStayUnbilled").
'</span>';
1466 print
' <span class="opacitymedium">'.$langs->trans(
"OptionToSetOrderBilledNotEnabled").
'</span>';
1472 print
'<div class="center">';
1473 print
'<input type="submit" class="button" id="createbills" name="createbills" value="'.$langs->trans(
'CreateInvoiceForThisCustomer').
'"> ';
1474 print
'<input type="submit" class="button button-cancel" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
1481 foreach ($fieldstosearchall as $key => $val) {
1482 $fieldstosearchall[$key] = $langs->trans($val);
1483 $setupstring .= $key.
"=".$val.
";";
1485 print
'<!-- Search done like if MYOBJECT_QUICKSEARCH_ON_FIELDS = '.$setupstring.
' -->'.
"\n";
1486 print
'<div class="divsearchfieldfilter">'.$langs->trans(
"FilterOnInto", $search_all).implode(
', ', $fieldstosearchall).
'</div>';
1492if ($user->hasRight(
"user",
"user",
"lire")) {
1493 $langs->load(
"commercial");
1494 $moreforfilter .=
'<div class="divsearchfield">';
1495 $tmptitle = $langs->trans(
'ThirdPartiesOfSaleRepresentative');
1496 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$formother->select_salesrepresentatives($search_sale,
'search_sale', $user, 0, $tmptitle,
'maxwidth250 widthcentpercentminusx');
1497 $moreforfilter .=
'</div>';
1500if ($user->hasRight(
"user",
"user",
"lire")) {
1501 $moreforfilter .=
'<div class="divsearchfield">';
1502 $tmptitle = $langs->trans(
'LinkedToSpecificUsers');
1503 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$form->select_dolusers($search_user,
'search_user', $tmptitle,
'', 0,
'',
'', 0, 0, 0,
'', 0,
'',
'maxwidth250 widthcentpercentminusx');
1504 $moreforfilter .=
'</div>';
1508if (isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire") && ($user->hasRight(
"produit",
"lire") || $user->hasRight(
"service",
"lire"))) {
1509 include_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1510 $moreforfilter .=
'<div class="divsearchfield">';
1511 $tmptitle = $langs->trans(
'IncludingProductWithTag');
1512 $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT,
null,
'parent',
null,
null, 1);
1513 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$form->selectarray(
'search_product_category', $cate_arbo, $search_product_category, $tmptitle, 0, 0,
'', 0, 0, 0, 0,
'maxwidth300 widthcentpercentminusx', 1);
1514 $moreforfilter .=
'</div>';
1517if (isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire")) {
1518 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1519 $moreforfilter .=
'<div class="divsearchfield">';
1520 $tmptitle = $langs->trans(
'CustomersProspectsCategoriesShort');
1521 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$formother->select_categories(
'customer', $search_categ_cus,
'search_categ_cus', 1, $tmptitle,
'maxwidth300 widthcentpercentminusx');
1522 $moreforfilter .=
'</div>';
1525if (isModEnabled(
'stock') &&
getDolGlobalString(
'WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER')) {
1526 require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
1528 $moreforfilter .=
'<div class="divsearchfield">';
1529 $tmptitle = $langs->trans(
'Warehouse');
1530 $moreforfilter .=
img_picto($tmptitle,
'stock',
'class="pictofixedwidth"').$formproduct->selectWarehouses($search_warehouse,
'search_warehouse',
'', 1, 0, 0, $tmptitle, 0, 0, array(),
'maxwidth250 widthcentpercentminusx');
1531 $moreforfilter .=
'</div>';
1533$parameters = array();
1534$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1535if (empty($reshook)) {
1536 $moreforfilter .= $hookmanager->resPrint;
1538 $moreforfilter = $hookmanager->resPrint;
1541if (!empty($moreforfilter)) {
1542 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1543 print $moreforfilter;
1547$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
1548$htmlofselectarray = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
1549$selectedfields = ($mode !=
'kanban' ? $htmlofselectarray :
'');
1550$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons(
'checkforselect', 1) :
'');
1553 $selectedfields .=
'<script>';
1554 $selectedfields .=
' $(document).ready(function() {';
1555 $selectedfields .=
' console.log("Autoclick on checkforselects");';
1556 $selectedfields .=
' $("#checkforselects").click();';
1557 $selectedfields .=
' $("#massaction").val("createbills").change();';
1558 $selectedfields .=
' });';
1559 $selectedfields .=
'</script>';
1562print
'<div class="div-table-responsive">';
1563print
'<table class="tagtable nobottomiftotal liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
1567print
'<tr class="liste_titre_filter">';
1570 print
'<td class="liste_titre center maxwidthsearch">';
1571 $searchpicto = $form->showFilterButtons(
'left');
1577if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
1578 print
'<td class="liste_titre">';
1579 print
'<input class="flat" size="6" type="text" name="search_id" value="'.dol_escape_htmltag($search_id).
'">';
1584if (!empty($arrayfields[
'c.ref'][
'checked'])) {
1585 print
'<td class="liste_titre">';
1586 print
'<input class="flat" size="6" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
1590if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
1591 print
'<td class="liste_titre" align="left">';
1592 print
'<input class="flat" type="text" size="6" name="search_ref_customer" value="'.dol_escape_htmltag($search_ref_customer).
'">';
1596if (!empty($arrayfields[
'p.ref'][
'checked'])) {
1597 print
'<td class="liste_titre"><input type="text" class="flat" size="6" name="search_project_ref" value="'.dol_escape_htmltag($search_project_ref).
'"></td>';
1600if (!empty($arrayfields[
'p.title'][
'checked'])) {
1601 print
'<td class="liste_titre"><input type="text" class="flat" size="6" name="search_project" value="'.dol_escape_htmltag($search_project).
'"></td>';
1604if (!empty($arrayfields[
's.nom'][
'checked'])) {
1605 print
'<td class="liste_titre" align="left">';
1606 print
'<input class="flat maxwidth100" type="text" name="search_company" value="'.dol_escape_htmltag($search_company).
'">';
1610if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
1611 print
'<td class="liste_titre" align="left">';
1612 print
'<input class="flat maxwidth100" type="text" name="search_company_alias" value="'.dol_escape_htmltag($search_company_alias).
'">';
1616if (!empty($arrayfields[
's2.nom'][
'checked'])) {
1617 print
'<td class="liste_titre">';
1618 print
'<input class="flat maxwidth100" type="text" name="search_parent_name" value="'.dol_escape_htmltag($search_parent_name).
'">';
1622if (!empty($arrayfields[
's.town'][
'checked'])) {
1623 print
'<td class="liste_titre"><input class="flat width50" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).
'"></td>';
1626if (!empty($arrayfields[
's.zip'][
'checked'])) {
1627 print
'<td class="liste_titre"><input class="flat width50" type="text" name="search_zip" value="'.dol_escape_htmltag($search_zip).
'"></td>';
1630if (!empty($arrayfields[
'state.nom'][
'checked'])) {
1631 print
'<td class="liste_titre">';
1632 print
'<input class="flat width50" type="text" name="search_state" value="'.dol_escape_htmltag($search_state).
'">';
1636if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
1637 print
'<td class="liste_titre" align="center">';
1638 print $form->select_country($search_country,
'search_country',
'', 0,
'minwidth100imp maxwidth100');
1642if (!empty($arrayfields[
'typent.code'][
'checked'])) {
1643 print
'<td class="liste_titre maxwidthonsmartphone" align="center">';
1644 print $form->selectarray(
"search_type_thirdparty", $formcompany->typent_array(0), $search_type_thirdparty, 1, 0, 0,
'', 0, 0, 0, (!
getDolGlobalString(
'SOCIETE_SORT_ON_TYPEENT') ?
'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT),
'', 1);
1648if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
1649 print
'<td class="liste_titre center">';
1650 print
'<div class="nowrapfordate">';
1651 print $form->selectDate($search_dateorder_start ? $search_dateorder_start : -1,
'search_dateorder_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1653 print
'<div class="nowrapfordate">';
1654 print $form->selectDate($search_dateorder_end ? $search_dateorder_end : -1,
'search_dateorder_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1658if (!empty($arrayfields[
'c.date_delivery'][
'checked'])) {
1659 print
'<td class="liste_titre center">';
1660 print
'<div class="nowrapfordate">';
1661 print $form->selectDate($search_datedelivery_start ? $search_datedelivery_start : -1,
'search_datedelivery_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1663 print
'<div class="nowrapfordate">';
1664 print $form->selectDate($search_datedelivery_end ? $search_datedelivery_end : -1,
'search_datedelivery_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1669if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
1670 print
'<td class="liste_titre">';
1671 $form->selectShippingMethod($search_fk_shipping_method,
'search_fk_shipping_method',
'', 1,
'', 1);
1675if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
1676 print
'<td class="liste_titre">';
1677 print $form->getSelectConditionsPaiements($search_fk_cond_reglement,
'search_fk_cond_reglement', 1, 1, 1);
1681if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
1682 print
'<td class="liste_titre">';
1683 print $form->select_types_paiements($search_fk_mode_reglement,
'search_fk_mode_reglement',
'', 0, 1, 1, 0, -1,
'', 1);
1687if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
1688 print
'<td class="liste_titre">';
1689 $form->selectInputReason($search_fk_input_reason,
'search_fk_input_reason',
'', 1,
'', 1);
1693if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
1694 print
'<td class="liste_titre right">';
1695 print
'<input class="flat" type="text" size="4" name="search_total_ht" value="'.dol_escape_htmltag($search_total_ht).
'">';
1699if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
1700 print
'<td class="liste_titre right">';
1701 print
'<input class="flat" type="text" size="4" name="search_total_vat" value="'.dol_escape_htmltag($search_total_vat).
'">';
1705if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
1706 print
'<td class="liste_titre right">';
1707 print
'<input class="flat" type="text" size="5" name="search_total_ttc" value="'.$search_total_ttc.
'">';
1711if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
1712 print
'<td class="liste_titre">';
1713 print $form->selectMultiCurrency($search_multicurrency_code,
'search_multicurrency_code', 1);
1717if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
1718 print
'<td class="liste_titre">';
1719 print
'<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).
'">';
1723if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
1724 print
'<td class="liste_titre right">';
1725 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).
'">';
1729if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
1730 print
'<td class="liste_titre right">';
1731 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).
'">';
1735if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
1736 print
'<td class="liste_titre right">';
1737 print
'<input class="flat width75" type="text" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).
'">';
1741if (!empty($arrayfields[
'u.login'][
'checked'])) {
1742 print
'<td class="liste_titre">';
1743 print
'<input class="flat width75" type="text" name="search_login" value="'.dol_escape_htmltag($search_login).
'">';
1747if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
1748 print
'<td class="liste_titre"></td>';
1750if (!empty($arrayfields[
'total_pa'][
'checked'])) {
1751 print
'<td class="liste_titre right">';
1754if (!empty($arrayfields[
'total_margin'][
'checked'])) {
1755 print
'<td class="liste_titre right">';
1758if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
1759 print
'<td class="liste_titre right">';
1762if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
1763 print
'<td class="liste_titre right">';
1768if (!empty($arrayfields[
'c.datec'][
'checked'])) {
1769 print
'<td class="liste_titre">';
1773if (!empty($arrayfields[
'c.tms'][
'checked'])) {
1774 print
'<td class="liste_titre">';
1778if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
1779 print
'<td class="liste_titre center">';
1780 print
'<div class="nowrapfordate">';
1781 print $form->selectDate($search_datecloture_start ? $search_datecloture_start : -1,
'search_datecloture_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1783 print
'<div class="nowrapfordate">';
1784 print $form->selectDate($search_datecloture_end ? $search_datecloture_end : -1,
'search_datecloture_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1789if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
1790 print
'<td class="liste_titre">';
1794if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
1795 print
'<td class="liste_titre">';
1799if (!empty($arrayfields[
'shippable'][
'checked'])) {
1800 print
'<td class="liste_titre maxwidthonsmartphone" align="center">';
1803 print
'<input type="checkbox" name="show_shippable_command" value="1"'.($show_shippable_command ?
' checked' :
'').
'>';
1804 print $langs->trans(
'ShowShippableStatus');
1806 $show_shippable_command = 1;
1812include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
1815$parameters = array(
'arrayfields' => $arrayfields);
1816$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action);
1817print $hookmanager->resPrint;
1820if (!empty($arrayfields[
'c.facture'][
'checked'])) {
1821 print
'<td class="liste_titre maxwidthonsmartphone center">';
1822 print $form->selectyesno(
'search_billed', $search_billed, 1, 0, 1, 1);
1827if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
1828 print
'<td class="liste_titre maxwidthonsmartphone center">';
1833if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
1834 print
'<td class="liste_titre center parentonrightofpage">';
1835 $liststatus = array(
1839 -2 => $langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort"),
1840 -3 => $langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort").
'+'.$langs->trans(
"StatusOrderDelivered"),
1845 print $form->selectarray(
'search_status', $liststatus, $search_status, -5, 0, 0,
'', 0, 0, 0,
'',
'search_status width100 onrightofpage', 1);
1850 print
'<td class="liste_titre center maxwidthsearch">';
1851 $searchpicto = $form->showFilterButtons();
1870print
'<tr class="liste_titre">';
1874 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'maxwidthsearch center ');
1875 $totalarray[
'nbfield']++;
1877if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
1878 print_liste_field_titre($arrayfields[
'c.rowid'][
'label'], $_SERVER[
"PHP_SELF"],
'c.rowid',
'', $param,
'', $sortfield, $sortorder,
'center ');
1879 $totalarray[
'nbfield']++;
1881if (!empty($arrayfields[
'c.ref'][
'checked'])) {
1882 print_liste_field_titre($arrayfields[
'c.ref'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref',
'', $param,
'', $sortfield, $sortorder);
1883 $totalarray[
'nbfield']++;
1885if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
1886 print_liste_field_titre($arrayfields[
'c.ref_client'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref_client',
'', $param,
'', $sortfield, $sortorder);
1887 $totalarray[
'nbfield']++;
1889if (!empty($arrayfields[
'p.ref'][
'checked'])) {
1890 print_liste_field_titre($arrayfields[
'p.ref'][
'label'], $_SERVER[
"PHP_SELF"],
"p.ref",
"", $param,
'', $sortfield, $sortorder);
1891 $totalarray[
'nbfield']++;
1893if (!empty($arrayfields[
'p.title'][
'checked'])) {
1894 print_liste_field_titre($arrayfields[
'p.title'][
'label'], $_SERVER[
"PHP_SELF"],
"p.title",
"", $param,
'', $sortfield, $sortorder);
1895 $totalarray[
'nbfield']++;
1897if (!empty($arrayfields[
's.nom'][
'checked'])) {
1898 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
"PHP_SELF"],
's.nom',
'', $param,
'', $sortfield, $sortorder);
1899 $totalarray[
'nbfield']++;
1901if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
1902 print_liste_field_titre($arrayfields[
's.name_alias'][
'label'], $_SERVER[
"PHP_SELF"],
's.name_alias',
'', $param,
'', $sortfield, $sortorder);
1903 $totalarray[
'nbfield']++;
1905if (!empty($arrayfields[
's2.nom'][
'checked'])) {
1906 print_liste_field_titre($arrayfields[
's2.nom'][
'label'], $_SERVER[
'PHP_SELF'],
's2.nom',
'', $param,
'', $sortfield, $sortorder);
1907 $totalarray[
'nbfield']++;
1909if (!empty($arrayfields[
's.town'][
'checked'])) {
1910 print_liste_field_titre($arrayfields[
's.town'][
'label'], $_SERVER[
"PHP_SELF"],
's.town',
'', $param,
'', $sortfield, $sortorder);
1911 $totalarray[
'nbfield']++;
1913if (!empty($arrayfields[
's.zip'][
'checked'])) {
1914 print_liste_field_titre($arrayfields[
's.zip'][
'label'], $_SERVER[
"PHP_SELF"],
's.zip',
'', $param,
'', $sortfield, $sortorder);
1915 $totalarray[
'nbfield']++;
1917if (!empty($arrayfields[
'state.nom'][
'checked'])) {
1918 print_liste_field_titre($arrayfields[
'state.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"state.nom",
"", $param,
'', $sortfield, $sortorder);
1919 $totalarray[
'nbfield']++;
1921if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
1922 print_liste_field_titre($arrayfields[
'country.code_iso'][
'label'], $_SERVER[
"PHP_SELF"],
"country.code_iso",
"", $param,
'', $sortfield, $sortorder,
'center ');
1923 $totalarray[
'nbfield']++;
1925if (!empty($arrayfields[
'typent.code'][
'checked'])) {
1926 print_liste_field_titre($arrayfields[
'typent.code'][
'label'], $_SERVER[
"PHP_SELF"],
"typent.code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1927 $totalarray[
'nbfield']++;
1929if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
1930 print_liste_field_titre($arrayfields[
'c.date_commande'][
'label'], $_SERVER[
"PHP_SELF"],
'c.date_commande',
'', $param,
'', $sortfield, $sortorder,
'center ');
1931 $totalarray[
'nbfield']++;
1933if (!empty($arrayfields[
'c.date_delivery'][
'checked'])) {
1934 print_liste_field_titre($arrayfields[
'c.date_delivery'][
'label'], $_SERVER[
"PHP_SELF"],
'c.date_livraison',
'', $param,
'', $sortfield, $sortorder,
'center ');
1935 $totalarray[
'nbfield']++;
1937if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
1938 print_liste_field_titre($arrayfields[
'c.fk_shipping_method'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_shipping_method",
"", $param,
'', $sortfield, $sortorder);
1939 $totalarray[
'nbfield']++;
1941if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
1942 print_liste_field_titre($arrayfields[
'c.fk_cond_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_cond_reglement",
"", $param,
'', $sortfield, $sortorder);
1943 $totalarray[
'nbfield']++;
1945if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
1946 print_liste_field_titre($arrayfields[
'c.fk_mode_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_mode_reglement",
"", $param,
'', $sortfield, $sortorder);
1947 $totalarray[
'nbfield']++;
1949if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
1950 print_liste_field_titre($arrayfields[
'c.fk_input_reason'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_input_reason",
"", $param,
'', $sortfield, $sortorder);
1951 $totalarray[
'nbfield']++;
1953if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
1954 print_liste_field_titre($arrayfields[
'c.total_ht'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
1955 $totalarray[
'nbfield']++;
1957if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
1958 print_liste_field_titre($arrayfields[
'c.total_vat'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
1959 $totalarray[
'nbfield']++;
1961if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
1962 print_liste_field_titre($arrayfields[
'c.total_ttc'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
1963 $totalarray[
'nbfield']++;
1965if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
1966 print_liste_field_titre($arrayfields[
'c.multicurrency_code'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_code',
'', $param,
'', $sortfield, $sortorder);
1967 $totalarray[
'nbfield']++;
1969if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
1970 print_liste_field_titre($arrayfields[
'c.multicurrency_tx'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_tx',
'', $param,
'', $sortfield, $sortorder);
1971 $totalarray[
'nbfield']++;
1973if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
1974 print_liste_field_titre($arrayfields[
'c.multicurrency_total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_ht',
'', $param,
'class="right"', $sortfield, $sortorder);
1975 $totalarray[
'nbfield']++;
1977if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
1978 print_liste_field_titre($arrayfields[
'c.multicurrency_total_vat'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_tva',
'', $param,
'class="right"', $sortfield, $sortorder);
1979 $totalarray[
'nbfield']++;
1981if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
1982 print_liste_field_titre($arrayfields[
'c.multicurrency_total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_ttc',
'', $param,
'class="right"', $sortfield, $sortorder);
1983 $totalarray[
'nbfield']++;
1985if (!empty($arrayfields[
'u.login'][
'checked'])) {
1986 print_liste_field_titre($arrayfields[
'u.login'][
'label'], $_SERVER[
"PHP_SELF"],
'u.login',
'', $param,
'', $sortfield, $sortorder);
1987 $totalarray[
'nbfield']++;
1989if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
1990 print_liste_field_titre($arrayfields[
'sale_representative'][
'label'], $_SERVER[
"PHP_SELF"],
"",
"",
"$param",
'', $sortfield, $sortorder);
1991 $totalarray[
'nbfield']++;
1993if (!empty($arrayfields[
'total_pa'][
'checked'])) {
1994 print_liste_field_titre($arrayfields[
'total_pa'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
1995 $totalarray[
'nbfield']++;
1997if (!empty($arrayfields[
'total_margin'][
'checked'])) {
1998 print_liste_field_titre($arrayfields[
'total_margin'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
1999 $totalarray[
'nbfield']++;
2001if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2002 print_liste_field_titre($arrayfields[
'total_margin_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2003 $totalarray[
'nbfield']++;
2005if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2006 print_liste_field_titre($arrayfields[
'total_mark_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2007 $totalarray[
'nbfield']++;
2010if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2011 print_liste_field_titre($arrayfields[
'c.datec'][
'label'], $_SERVER[
"PHP_SELF"],
"c.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2012 $totalarray[
'nbfield']++;
2014if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2015 print_liste_field_titre($arrayfields[
'c.tms'][
'label'], $_SERVER[
"PHP_SELF"],
"c.tms",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2016 $totalarray[
'nbfield']++;
2018if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2019 print_liste_field_titre($arrayfields[
'c.date_cloture'][
'label'], $_SERVER[
"PHP_SELF"],
"c.date_cloture",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2020 $totalarray[
'nbfield']++;
2022if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2023 print_liste_field_titre($arrayfields[
'c.note_public'][
'label'], $_SERVER[
"PHP_SELF"],
"c.note_public",
"", $param,
'', $sortfield, $sortorder,
'right ');
2024 $totalarray[
'nbfield']++;
2026if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
2027 print_liste_field_titre($arrayfields[
'c.note_private'][
'label'], $_SERVER[
"PHP_SELF"],
"c.note_private",
"", $param,
'', $sortfield, $sortorder,
'right ');
2028 $totalarray[
'nbfield']++;
2030if (!empty($arrayfields[
'shippable'][
'checked'])) {
2031 print_liste_field_titre($arrayfields[
'shippable'][
'label'], $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
2032 $totalarray[
'nbfield']++;
2035include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
2038$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder,
'totalarray' => &$totalarray);
2039$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
2040print $hookmanager->resPrint;
2042if (!empty($arrayfields[
'c.facture'][
'checked'])) {
2043 print_liste_field_titre($arrayfields[
'c.facture'][
'label'], $_SERVER[
"PHP_SELF"],
'c.facture',
'', $param,
'', $sortfield, $sortorder,
'center ');
2044 $totalarray[
'nbfield']++;
2046if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
2047 print_liste_field_titre($arrayfields[
'c.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"c.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
2048 $totalarray[
'nbfield']++;
2050if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
2051 print_liste_field_titre($arrayfields[
'c.fk_statut'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_statut",
"", $param,
'', $sortfield, $sortorder,
'center ');
2052 $totalarray[
'nbfield']++;
2056 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'maxwidthsearch center ');
2057 $totalarray[
'nbfield']++;
2063$productstat_cache = array();
2064$productstat_cachevirtual = array();
2065$getNomUrl_cache = array();
2067$generic_commande =
new Commande($db);
2068$generic_product =
new Product($db);
2069$userstatic =
new User($db);
2071$with_margin_info =
false;
2072if (isModEnabled(
'margin') && (
2073 !empty($arrayfields[
'total_pa'][
'checked'])
2074 || !empty($arrayfields[
'total_margin'][
'checked'])
2075 || !empty($arrayfields[
'total_margin_rate'][
'checked'])
2076 || !empty($arrayfields[
'total_mark_rate'][
'checked'])
2079 $with_margin_info =
true;
2088$savnbfield = $totalarray[
'nbfield'];
2089$totalarray = array();
2090$totalarray[
'nbfield'] = 0;
2091$imaxinloop = ($limit ? min($num, $limit) : $num);
2092while ($i < $imaxinloop) {
2093 $obj = $db->fetch_object($resql);
2104 $companystatic->id = $obj->socid;
2105 $companystatic->name = $obj->name;
2106 $companystatic->name_alias = $obj->alias;
2107 $companystatic->client = $obj->client;
2108 $companystatic->fournisseur = $obj->fournisseur;
2109 $companystatic->code_client = $obj->code_client;
2110 $companystatic->email = $obj->email;
2111 $companystatic->phone = $obj->phone;
2112 $companystatic->address = $obj->address;
2113 $companystatic->zip = $obj->zip;
2114 $companystatic->town = $obj->town;
2115 $companystatic->country_code = $obj->country_code;
2116 if (!isset($getNomUrl_cache[$obj->socid])) {
2117 $getNomUrl_cache[$obj->socid] = $companystatic->getNomUrl(1,
'customer', 100, 0, 1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2120 $generic_commande->id = $obj->rowid;
2121 $generic_commande->ref = $obj->ref;
2122 $generic_commande->statut = $obj->fk_statut;
2123 $generic_commande->billed = $obj->billed;
2124 $generic_commande->date = $db->jdate($obj->date_commande);
2125 $generic_commande->delivery_date = $db->jdate($obj->date_delivery);
2126 $generic_commande->ref_client = $obj->ref_client;
2127 $generic_commande->total_ht = $obj->total_ht;
2128 $generic_commande->total_tva = $obj->total_tva;
2129 $generic_commande->total_ttc = $obj->total_ttc;
2130 $generic_commande->note_public = $obj->note_public;
2131 $generic_commande->note_private = $obj->note_private;
2133 $generic_commande->thirdparty = $companystatic;
2136 $projectstatic->id = $obj->project_id;
2137 $projectstatic->ref = $obj->project_ref;
2138 $projectstatic->title = $obj->project_label;
2140 $marginInfo = array();
2141 if ($with_margin_info ===
true) {
2142 $generic_commande->fetch_lines();
2143 $marginInfo = $formmargin->getMarginInfosArray($generic_commande);
2144 $total_ht += $obj->total_ht;
2145 $total_margin += $marginInfo[
'total_margin'];
2148 if ($mode ==
'kanban') {
2150 print
'<tr class="trkanban"><td colspan="'.$savnbfield.
'">';
2151 print
'<div class="box-flex-container kanban">';
2156 if ($massactionbutton || $massaction) {
2158 if (in_array(
$object->id, $arrayofselected)) {
2162 print $generic_commande->getKanbanView(
'', array(
'selected' => $selected));
2163 if ($i == ($imaxinloop - 1)) {
2170 print
'<tr data-rowid="'.$object->id.
'" class="oddeven">';
2174 print
'<td class="nowrap center">';
2175 if ($massactionbutton || $massaction) {
2177 if (in_array($obj->rowid, $arrayofselected)) {
2180 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
2184 $totalarray[
'nbfield']++;
2189 if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
2190 print
'<td class="center" data-key="id">'.$obj->rowid.
'</td>';
2192 $totalarray[
'nbfield']++;
2197 if (!empty($arrayfields[
'c.ref'][
'checked'])) {
2198 print
'<td class="nowraponall">';
2199 print $generic_commande->getNomUrl(1, ($search_status != 2 ? 0 : $obj->fk_statut), 0, 0, 0, 1, 1);
2202 $filedir = $conf->commande->multidir_output[$conf->entity].
'/'.
dol_sanitizeFileName($obj->ref);
2203 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid;
2204 print $formfile->getDocumentsLink($generic_commande->element, $filename, $filedir);
2208 $totalarray[
'nbfield']++;
2213 if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
2214 print
'<td class="nowrap tdoverflowmax150" title="'.dol_escape_htmltag($obj->ref_client).
'">';
2218 $totalarray[
'nbfield']++;
2223 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2224 print
'<td class="nowrap">';
2225 if ($obj->project_id > 0) {
2226 print $projectstatic->getNomUrl(1);
2230 $totalarray[
'nbfield']++;
2235 if (!empty($arrayfields[
'p.title'][
'checked'])) {
2236 print
'<td class="nowrap">';
2237 if ($obj->project_id > 0) {
2238 print $projectstatic->title;
2242 $totalarray[
'nbfield']++;
2247 if (!empty($arrayfields[
's.nom'][
'checked'])) {
2248 print
'<td class="tdoverflowmax150">';
2250 print $companystatic->getNomUrl(1,
'customer', 100, 0, 1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2252 print $getNomUrl_cache[$obj->socid];
2257 if ($user->hasRight(
'facture',
'creer')) {
2258 if (($obj->fk_statut > 0 && $obj->fk_statut < 3) || ($obj->fk_statut == 3 && $obj->billed == 0)) {
2259 print
' <a href="'.DOL_URL_ROOT.
'/commande/list.php?socid='.$companystatic->id.
'&search_billed=0&autoselectall=1">';
2260 print
img_picto($langs->trans(
"CreateInvoiceForThisCustomer").
' : '.$companystatic->name,
'object_bill',
'hideonsmartphone').
'</a>';
2266 $totalarray[
'nbfield']++;
2271 if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2272 print
'<td class="nocellnopadd tdoverflowmax125" title="'.dolPrintHTMLForTextArea($obj->alias).
'">';
2276 $totalarray[
'nbfield']++;
2281 if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2282 print
'<td class="tdoverflowmax200">';
2283 if ($obj->fk_parent > 0) {
2284 if (!isset($company_url_list[$obj->fk_parent])) {
2285 $companyparent =
new Societe($db);
2286 $res = $companyparent->fetch($obj->fk_parent);
2288 $company_url_list[$obj->fk_parent] = $companyparent->getNomUrl(1);
2291 if (isset($company_url_list[$obj->fk_parent])) {
2292 print $company_url_list[$obj->fk_parent];
2297 $totalarray[
'nbfield']++;
2302 if (!empty($arrayfields[
's.town'][
'checked'])) {
2303 print
'<td class="tdoverflowmax100">';
2307 $totalarray[
'nbfield']++;
2312 if (!empty($arrayfields[
's.zip'][
'checked'])) {
2313 print
'<td class="nocellnopadd">';
2317 $totalarray[
'nbfield']++;
2322 if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2323 print
"<td>".dolPrintLabel($obj->state_name).
"</td>\n";
2325 $totalarray[
'nbfield']++;
2330 if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2331 print
'<td class="center">';
2332 $tmparray =
getCountry($obj->fk_pays,
'all');
2333 print $tmparray[
'label'];
2336 $totalarray[
'nbfield']++;
2341 if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2342 print
'<td class="center">';
2343 if (empty($typenArray)) {
2344 $typenArray = $formcompany->typent_array(1);
2346 print $typenArray[$obj->typent_code]??
'';
2349 $totalarray[
'nbfield']++;
2354 if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
2355 print
'<td class="center nowraponall">';
2358 if ($generic_commande->hasDelay()) {
2359 print
img_picto($langs->trans(
"Late").
' : '.$generic_commande->showDelay(),
"warning");
2363 $totalarray[
'nbfield']++;
2368 if (!empty($arrayfields[
'c.date_delivery'][
'checked'])) {
2369 print
'<td class="center nowraponall">';
2370 print
dol_print_date($db->jdate($obj->date_delivery),
'dayhour');
2373 $totalarray[
'nbfield']++;
2378 if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
2380 $form->formSelectShippingMethod(
'', $obj->fk_shipping_method,
'none', 1);
2383 $totalarray[
'nbfield']++;
2388 if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
2390 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'], $obj->fk_cond_reglement,
'none', 0,
'', 1, $obj->deposit_percent);
2393 $totalarray[
'nbfield']++;
2398 if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
2400 $form->form_modes_reglement($_SERVER[
'PHP_SELF'], $obj->fk_mode_reglement,
'none',
'', -1);
2403 $totalarray[
'nbfield']++;
2408 if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
2410 $form->formInputReason($_SERVER[
'PHP_SELF'], $obj->fk_input_reason,
'none',
'');
2413 $totalarray[
'nbfield']++;
2418 if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
2419 print
'<td class="nowrap right"><span class="amount">'.price($obj->total_ht).
"</span></td>\n";
2421 $totalarray[
'nbfield']++;
2424 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'c.total_ht';
2426 if (isset($totalarray[
'val'][
'c.total_ht'])) {
2427 $totalarray[
'val'][
'c.total_ht'] += $obj->total_ht;
2429 $totalarray[
'val'][
'c.total_ht'] = $obj->total_ht;
2434 if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
2435 print
'<td class="nowrap right"><span class="amount">'.price($obj->total_tva).
"</span></td>\n";
2437 $totalarray[
'nbfield']++;
2440 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'c.total_tva';
2442 if (isset($totalarray[
'val'][
'c.total_tva'])) {
2443 $totalarray[
'val'][
'c.total_tva'] += $obj->total_tva;
2445 $totalarray[
'val'][
'c.total_tva'] = $obj->total_tva;
2450 if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
2451 print
'<td class="nowrap right"><span class="amount">'.price($obj->total_ttc).
"</span></td>\n";
2453 $totalarray[
'nbfield']++;
2456 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'c.total_ttc';
2458 if (isset($totalarray[
'val'][
'c.total_ttc'])) {
2459 $totalarray[
'val'][
'c.total_ttc'] += $obj->total_ttc;
2461 $totalarray[
'val'][
'c.total_ttc'] = $obj->total_ttc;
2466 if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
2467 print
'<td class="nowrap">'.$obj->multicurrency_code.
' - '.$langs->trans(
'Currency'.$obj->multicurrency_code).
"</td>\n";
2469 $totalarray[
'nbfield']++;
2474 if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
2475 print
'<td class="nowrap">';
2476 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid, $obj->multicurrency_tx,
'none', $obj->multicurrency_code);
2479 $totalarray[
'nbfield']++;
2484 if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
2485 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_ht).
"</span></td>\n";
2487 $totalarray[
'nbfield']++;
2491 if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
2492 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_vat).
"</span></td>\n";
2494 $totalarray[
'nbfield']++;
2498 if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
2499 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_ttc).
"</span></td>\n";
2501 $totalarray[
'nbfield']++;
2505 $userstatic->id = $obj->fk_user_author;
2506 $userstatic->login = $obj->login;
2507 $userstatic->lastname = $obj->lastname;
2508 $userstatic->firstname = $obj->firstname;
2509 $userstatic->email = $obj->user_email;
2510 $userstatic->status = $obj->user_statut;
2511 $userstatic->entity = $obj->entity;
2512 $userstatic->photo = $obj->photo;
2513 $userstatic->office_phone = $obj->office_phone;
2514 $userstatic->office_fax = $obj->office_fax;
2515 $userstatic->user_mobile = $obj->user_mobile;
2516 $userstatic->job = $obj->job;
2517 $userstatic->gender = $obj->gender;
2520 if (!empty($arrayfields[
'u.login'][
'checked'])) {
2521 print
'<td class="tdoverflowmax150">';
2522 if ($userstatic->id) {
2523 print $userstatic->getNomUrl(-1);
2529 $totalarray[
'nbfield']++;
2534 if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2536 if ($obj->socid > 0) {
2537 $listsalesrepresentatives = $companystatic->getSalesRepresentatives($user);
2538 if ($listsalesrepresentatives < 0) {
2541 $nbofsalesrepresentative = count($listsalesrepresentatives);
2542 if ($nbofsalesrepresentative > 6) {
2544 print $nbofsalesrepresentative;
2545 } elseif ($nbofsalesrepresentative > 0) {
2547 foreach ($listsalesrepresentatives as $val) {
2548 $userstatic->id = $val[
'id'];
2549 $userstatic->lastname = $val[
'lastname'];
2550 $userstatic->firstname = $val[
'firstname'];
2551 $userstatic->email = $val[
'email'];
2552 $userstatic->status = $val[
'statut'];
2553 $userstatic->entity = $val[
'entity'];
2554 $userstatic->photo = $val[
'photo'];
2555 $userstatic->login = $val[
'login'];
2556 $userstatic->office_phone = $val[
'office_phone'];
2557 $userstatic->office_fax = $val[
'office_fax'];
2558 $userstatic->user_mobile = $val[
'user_mobile'];
2559 $userstatic->job = $val[
'job'];
2560 $userstatic->gender = $val[
'gender'];
2562 print ($nbofsalesrepresentative < 2) ? $userstatic->getNomUrl(-1,
'', 0, 0, 12) : $userstatic->getNomUrl(-2);
2564 if ($j < $nbofsalesrepresentative) {
2576 $totalarray[
'nbfield']++;
2581 if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2582 print
'<td class="right nowrap">'.price($marginInfo[
'pa_total']).
'</td>';
2584 $totalarray[
'nbfield']++;
2589 if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2590 print
'<td class="right nowrap">'.price($marginInfo[
'total_margin']).
'</td>';
2592 $totalarray[
'nbfield']++;
2595 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'total_margin';
2598 if (!isset($totalarray[
'val'][
'total_margin'])) {
2599 $totalarray[
'val'][
'total_margin'] = 0;
2602 $totalarray[
'val'][
'total_margin'] += $marginInfo[
'total_margin'];
2606 if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2607 print
'<td class="right nowrap">'.(($marginInfo[
'total_margin_rate'] ==
'') ?
'' :
price($marginInfo[
'total_margin_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
2609 $totalarray[
'nbfield']++;
2614 if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2615 print
'<td class="right nowrap">'.(($marginInfo[
'total_mark_rate'] ==
'') ?
'' :
price($marginInfo[
'total_mark_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
2617 $totalarray[
'nbfield']++;
2620 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'total_mark_rate';
2622 if ($i >= $imaxinloop - 1) {
2623 if (!empty($total_ht)) {
2624 $totalarray[
'val'][
'total_mark_rate'] =
price2num($total_margin * 100 / $total_ht,
'MT');
2626 $totalarray[
'val'][
'total_mark_rate'] =
'';
2632 if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2633 print
'<td align="center" class="nowrap">';
2634 print
dol_print_date($db->jdate($obj->date_creation),
'dayhour',
'tzuser');
2637 $totalarray[
'nbfield']++;
2642 if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2643 print
'<td align="center" class="nowrap">';
2644 print
dol_print_date($db->jdate($obj->date_modification),
'dayhour',
'tzuser');
2647 $totalarray[
'nbfield']++;
2652 if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2653 print
'<td align="center" class="nowrap">';
2654 print
dol_print_date($db->jdate($obj->date_cloture),
'dayhour',
'tzuser');
2657 $totalarray[
'nbfield']++;
2662 if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2663 print
'<td class="sensiblehtmlcontent center">';
2667 $totalarray[
'nbfield']++;
2672 if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
2673 print
'<td class="sensiblehtmlcontent center">';
2677 $totalarray[
'nbfield']++;
2682 if (!empty($arrayfields[
'shippable'][
'checked'])) {
2683 print
'<td class="center">';
2684 if (!empty($show_shippable_command) && isModEnabled(
'stock')) {
2685 if (($obj->fk_statut > $generic_commande::STATUS_DRAFT) && ($obj->fk_statut < $generic_commande::STATUS_CLOSED)) {
2686 $generic_commande->getLinesArray();
2687 $generic_commande->loadExpeditions();
2689 $numlines = count($generic_commande->lines);
2690 for ($lig = 0; $lig < $numlines; $lig++) {
2691 if (isset($generic_commande->expeditions[$generic_commande->lines[$lig]->id])) {
2692 $reliquat = $generic_commande->lines[$lig]->qty - $generic_commande->expeditions[$generic_commande->lines[$lig]->id];
2694 $reliquat = $generic_commande->lines[$lig]->qty;
2696 if ($generic_commande->lines[$lig]->product_type == 0 && $generic_commande->lines[$lig]->fk_product > 0) {
2698 $generic_product->id = $generic_commande->lines[$lig]->fk_product;
2701 if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product])) {
2702 $generic_product->load_stock(
'nobatch,warehouseopen');
2703 $productstat_cache[$generic_commande->lines[$lig]->fk_product][
'stock_reel'] = $generic_product->stock_reel;
2704 $productstat_cachevirtual[$generic_commande->lines[$lig]->fk_product][
'stock_reel'] = $generic_product->stock_theorique;
2706 $generic_product->stock_reel = $productstat_cache[$generic_commande->lines[$lig]->fk_product][
'stock_reel'];
2707 $generic_product->stock_theorique = $productstat_cachevirtual[$generic_commande->lines[$lig]->fk_product][
'stock_reel'] = $generic_product->stock_theorique;
2710 if ($reliquat > $generic_product->stock_reel) {
2714 $text_info .= $reliquat.
' x '.$generic_commande->lines[$lig]->product_ref.
' '.
dol_trunc($generic_commande->lines[$lig]->product_label, 20);
2715 $text_info .=
' - '.$langs->trans(
"Stock").
': <span class="'.($generic_product->stock_reel > 0 ?
'ok' :
'error').
'">'.$generic_product->stock_reel.
'</span>';
2716 $text_info .=
' - '.$langs->trans(
"VirtualStock").
': <span class="'.($generic_product->stock_theorique > 0 ?
'ok' :
'error').
'">'.$generic_product->stock_theorique.
'</span>';
2717 $text_info .= ($reliquat != $generic_commande->lines[$lig]->qty ?
' <span class="opacitymedium">('.$langs->trans(
"QtyInOtherShipments").
' '.($generic_commande->lines[$lig]->qty - $reliquat).
')</span>' :
'');
2718 $text_info .=
'<br>';
2725 $stock_order_supplier = 0;
2727 if (isModEnabled(
'order')) {
2728 if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product][
'stats_order_customer'])) {
2729 $generic_product->load_stats_commande(0,
'1,2');
2730 $productstat_cache[$generic_commande->lines[$lig]->fk_product][
'stats_order_customer'] = $generic_product->stats_commande[
'qty'];
2732 $generic_product->stats_commande[
'qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product][
'stats_order_customer'];
2734 $stock_order = $generic_product->stats_commande[
'qty'];
2736 if (isModEnabled(
"supplier_order")) {
2737 if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product][
'stats_order_supplier'])) {
2738 $generic_product->load_stats_commande_fournisseur(0,
'3');
2739 $productstat_cache[$generic_commande->lines[$lig]->fk_product][
'stats_order_supplier'] = $generic_product->stats_commande_fournisseur[
'qty'];
2741 $generic_product->stats_commande_fournisseur[
'qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product][
'stats_order_supplier'];
2743 $stock_order_supplier = $generic_product->stats_commande_fournisseur[
'qty'];
2746 $text_info .= $reliquat.
' x '.$generic_commande->lines[$lig]->ref.
' '.
dol_trunc($generic_commande->lines[$lig]->product_label, 20);
2747 $text_stock_reel = $generic_product->stock_reel.
'/'.$stock_order;
2748 if ($stock_order > $generic_product->stock_reel && !($generic_product->stock_reel < $generic_commande->lines[$lig]->qty)) {
2750 $text_warning .=
'<span class="warning">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
2752 if ($reliquat > $generic_product->stock_reel) {
2753 $text_info .=
'<span class="warning">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
2755 $text_info .=
'<span class="ok">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
2757 if (isModEnabled(
"supplier_order")) {
2758 $text_info .=
' '.$langs->trans(
'SupplierOrder').
' : '.$stock_order_supplier;
2760 $text_info .= ($reliquat != $generic_commande->lines[$lig]->qty ?
' <span class="opacitymedium">('.$langs->trans(
"QtyInOtherShipments").
' '.($generic_commande->lines[$lig]->qty - $reliquat).
')</span>' :
'');
2761 $text_info .=
'<br>';
2765 if ($notshippable == 0) {
2766 $text_icon =
img_picto(
'',
'dolly',
'',
false, 0, 0,
'',
'green paddingleft');
2767 $text_info = $text_icon.
' '.$langs->trans(
'Shippable').
'<br>'.$text_info;
2769 $text_icon =
img_picto(
'',
'dolly',
'',
false, 0, 0,
'',
'error paddingleft');
2770 $text_info = $text_icon.
' '.$langs->trans(
'NonShippable').
'<br>'.$text_info;
2775 print $form->textwithtooltip(
'', $text_info, 2, 1, $text_icon,
'', 2);
2778 print $form->textwithtooltip(
'', $langs->trans(
'NotEnoughForAllOrders').
'<br>'.$text_warning, 2, 1,
img_picto(
'',
'error'),
'', 2);
2783 $totalarray[
'nbfield']++;
2788 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
2790 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
2791 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
2792 print $hookmanager->resPrint;
2795 if (!empty($arrayfields[
'c.facture'][
'checked'])) {
2796 print
'<td class="center">';
2798 print
yn($obj->billed, 4);
2802 $totalarray[
'nbfield']++;
2807 if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
2808 print
'<td class="nowrap center">'.dol_escape_htmltag($obj->import_key).
'</td>';
2810 $totalarray[
'nbfield']++;
2815 if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
2816 print
'<td class="nowrap center">'.$generic_commande->LibStatut($obj->fk_statut, $obj->billed, 5, 1).
'</td>';
2818 $totalarray[
'nbfield']++;
2824 print
'<td class="nowrap center">';
2825 if ($massactionbutton || $massaction) {
2827 if (in_array($obj->rowid, $arrayofselected)) {
2830 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
2834 $totalarray[
'nbfield']++;
2840 $total += $obj->total_ht;
2841 $subtotal += $obj->total_ht;
2847include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
2852 foreach ($arrayfields as $key => $val) {
2853 if (!empty($val[
'checked'])) {
2857 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
2862$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
2863$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
2864print $hookmanager->resPrint;
2866print
'</table>'.
"\n";
2869print
'</form>'.
"\n";
2871if (in_array(
'builddoc', array_keys($arrayofmassactions)) && ($nbtotalofrecords ===
'' || $nbtotalofrecords)) {
2872 $hidegeneratedfilelistifempty = 1;
2873 if ($massaction ==
'builddoc' || $action ==
'remove_file' || $show_files) {
2874 $hidegeneratedfilelistifempty = 0;
2878 $urlsource = $_SERVER[
'PHP_SELF'].
'?sortfield='.$sortfield.
'&sortorder='.$sortorder;
2879 $urlsource .= str_replace(
'&',
'&', $param);
2881 $filedir = $diroutputmassaction;
2882 $genallowed = $permissiontoread;
2883 $delallowed = $permissiontoadd;
2885 print $formfile->showdocuments(
'massfilesarea_orders',
'', $filedir, $urlsource, 0, $delallowed,
'', 1, 1, 0, 48, 1, $param, $title,
'',
'',
'',
null, $hidegeneratedfilelistifempty);
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage customers orders.
const STATUS_SHIPMENTONPROCESS
Shipment on process.
const STATUS_CLOSED
Closed (Sent, billed or not)
const STATUS_CANCELED
Canceled status.
const STATUS_DRAFT
Draft status.
const STATUS_VALIDATED
Validated status.
Class to manage absolute discounts.
Class to manage invoices.
Class to manage products or services.
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.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
dolPrintHTML($s, $allowiframe=0)
Return a string (that can be on several lines) ready to be output on a HTML page.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
dol_concatdesc($text1, $text2, $forxml=false, $invert=false)
Concat 2 descriptions with a new line between them (second operand after first one with appropriate n...
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dolPrintLabel($s)
Return a string label (so on 1 line only and that should not contains any HTML) ready to be output on...
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.