44require
'../main.inc.php';
45require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
46require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/class/discount.class.php';
48require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
49require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
52 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmargin.class.php';
54require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
55require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
56require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
57require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
60 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
61 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcategory.class.php';
73$langs->loadLangs(array(
'orders',
'sendings',
'companies',
'compta',
'bills',
'stocks',
'products'));
76$action =
GETPOST(
'action',
'aZ09');
77$massaction =
GETPOST(
'massaction',
'alpha');
79$confirm =
GETPOST(
'confirm',
'alpha');
80$toselect =
GETPOST(
'toselect',
'array:int');
81$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'orderlist';
82$optioncss =
GETPOST(
'optioncss',
'alpha');
86 $userschilds = $user->getAllChildIds();
88 $userschilds = array();
92$search_datecloture_start =
GETPOSTINT(
'search_datecloture_start');
93if (empty($search_datecloture_start)) {
96$search_datecloture_end =
GETPOSTINT(
'search_datecloture_end');
97if (empty($search_datecloture_end)) {
107$search_all = trim(
GETPOST(
'search_all',
'alphanohtml'));
108$searchCategoryOrderOperator = 0;
109if (GETPOSTISSET(
'formfilteraction')) {
110 $searchCategoryOrderOperator =
GETPOSTINT(
'search_category_order_operator');
114$searchCategoryOrderList =
GETPOST(
'search_category_order_list',
'array');
115$search_product_category =
GETPOST(
'search_product_category',
'intcomma');
116$search_id =
GETPOST(
'search_id',
'int');
117$search_ref =
GETPOST(
'search_ref',
'alpha') !=
'' ?
GETPOST(
'search_ref',
'alpha') :
GETPOST(
'sref',
'alpha');
118$search_ref_ext =
GETPOST(
'search_ref_ext',
'alpha');
119$search_ref_customer =
GETPOST(
'search_ref_customer',
'alpha');
120$search_company =
GETPOST(
'search_company',
'alpha');
121$search_company_alias =
GETPOST(
'search_company_alias',
'alpha');
122$search_parent_name = trim(
GETPOST(
'search_parent_name',
'alphanohtml'));
123$search_town =
GETPOST(
'search_town',
'alpha');
124$search_zip =
GETPOST(
'search_zip',
'alpha');
125$search_state =
GETPOST(
'search_state',
'alpha');
126$search_country =
GETPOST(
'search_country',
'aZ09');
127$search_type_thirdparty =
GETPOST(
'search_type_thirdparty',
'intcomma');
128$search_user =
GETPOST(
'search_user',
'intcomma');
129$search_sale =
GETPOST(
'search_sale',
'intcomma');
130$search_total_ht =
GETPOST(
'search_total_ht',
'alpha');
131$search_total_vat =
GETPOST(
'search_total_vat',
'alpha');
132$search_total_ttc =
GETPOST(
'search_total_ttc',
'alpha');
133$search_warehouse =
GETPOST(
'search_warehouse',
'intcomma');
134$search_note_public =
GETPOST(
'search_note_public',
'alphanohtml');
135$search_note_private =
GETPOST(
'search_note_private',
'alphanohtml');
137$search_module_source =
GETPOST(
'search_module_source',
'alphanohtml');
138$search_pos_source =
GETPOST(
'search_pos_source',
'alphanohtml');
140$search_multicurrency_code =
GETPOST(
'search_multicurrency_code',
'alpha');
141$search_multicurrency_tx =
GETPOST(
'search_multicurrency_tx',
'alpha');
142$search_multicurrency_montant_ht =
GETPOST(
'search_multicurrency_montant_ht',
'alpha');
143$search_multicurrency_montant_vat =
GETPOST(
'search_multicurrency_montant_vat',
'alpha');
144$search_multicurrency_montant_ttc =
GETPOST(
'search_multicurrency_montant_ttc',
'alpha');
146$search_login =
GETPOST(
'search_login',
'alpha');
147$search_categ_cus =
GETPOST(
"search_categ_cus",
'intcomma');
148$search_billed =
GETPOST(
'search_billed',
'intcomma');
149$search_status =
GETPOST(
'search_status',
'intcomma');
150$search_project_ref =
GETPOST(
'search_project_ref',
'alpha');
151$search_project =
GETPOST(
'search_project',
'alpha');
152$search_shippable =
GETPOST(
'search_shippable',
'aZ09');
154$search_fk_cond_reglement =
GETPOST(
'search_fk_cond_reglement',
'intcomma');
155$search_fk_shipping_method =
GETPOST(
'search_fk_shipping_method',
'intcomma');
156$search_fk_mode_reglement =
GETPOST(
'search_fk_mode_reglement',
'intcomma');
157$search_fk_input_reason =
GETPOST(
'search_fk_input_reason',
'intcomma');
159$search_option =
GETPOST(
'search_option',
'alpha');
160if ($search_option ==
'late') {
161 $search_status =
'-2';
163$search_orderday =
'';
164$search_ordermonth =
'';
165$search_orderyear =
'';
166$search_deliveryday =
'';
167$search_deliverymonth =
'';
168$search_deliveryyear =
'';
170$search_import_key = trim(
GETPOST(
"search_import_key",
"alpha"));
172$diroutputmassaction = $conf->order->multidir_output[$conf->entity].
'/temp/massgeneration/'.$user->id;
176$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
177$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
179if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
183$offset = $limit * $page;
184$pageprev = $page - 1;
185$pagenext = $page + 1;
187 $sortfield =
'c.ref';
193$show_shippable_command =
GETPOST(
'show_shippable_command',
'aZ09');
197$hookmanager->initHooks(array(
'orderlist'));
201$extrafields->fetch_name_optionals_label(
$object->table_element);
202$search_array_options = $extrafields->getOptionalsFromPost(
$object->table_element,
'',
'search_');
205$fieldstosearchall = array(
207 'c.ref_client' =>
'RefCustomerOrder',
208 'pd.description' =>
'ProductDescription',
209 's.nom' =>
"ThirdParty",
210 's.name_alias' =>
"AliasNameShort",
213 'c.note_public' =>
'NotePublic',
215if (empty($user->socid)) {
216 $fieldstosearchall[
"c.note_private"] =
"NotePrivate";
222$checkedtypetiers =
'0';
224 'c.rowid' => array(
'label' =>
"ID",
'checked' =>
'1',
'enabled' => (
string)
getDolGlobalInt(
'MAIN_SHOW_TECHNICAL_ID'),
'position' => 1),
225 'c.ref' => array(
'label' =>
"Ref",
'checked' =>
'1',
'position' => 5,
'searchall' => 1),
226 'c.ref_ext' => array(
'label' =>
"RefExt",
'checked' =>
'1',
'position' => 5,
'visible' => 0,
'searchall' => 1),
227 'c.ref_client' => array(
'label' =>
"RefCustomerOrder",
'checked' =>
'-1',
'position' => 10,
'searchall' => 1),
228 'p.ref' => array(
'label' =>
"ProjectRef",
'langfile' =>
'projects',
'checked' =>
'-1',
'enabled' => (!
isModEnabled(
'project') ?
'0' :
'1'),
'position' => 20),
229 'p.title' => array(
'label' =>
"ProjectLabel",
'langfile' =>
'projects',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
'project') ?
'0' :
'1'),
'position' => 25),
230 's.nom' => array(
'label' =>
"ThirdParty",
'checked' =>
'1',
'position' => 30,
'searchall' => 1),
231 's.name_alias' => array(
'label' =>
"AliasNameShort",
'checked' =>
'-1',
'position' => 31,
'searchall' => 1),
232 's2.nom' => array(
'label' =>
'ParentCompany',
'position' => 32,
'checked' =>
'0'),
233 's.town' => array(
'label' =>
"Town",
'checked' =>
'-1',
'position' => 35,
'searchall' => 1),
234 's.zip' => array(
'label' =>
"Zip",
'checked' =>
'-1',
'position' => 40,
'searchall' => 1),
235 'state.nom' => array(
'label' =>
"StateShort",
'checked' =>
'0',
'position' => 45),
236 'country.code_iso' => array(
'label' =>
"Country",
'checked' =>
'0',
'position' => 50),
237 'typent.code' => array(
'label' =>
"ThirdPartyType",
'checked' => (string) $checkedtypetiers,
'position' => 55),
238 'c.date_commande' => array(
'label' =>
"OrderDateShort",
'checked' =>
'1',
'position' => 60,
'csslist' =>
'nowraponall'),
239 'c.delivery_date' => array(
'label' =>
"DateDeliveryPlanned",
'checked' =>
'1',
'enabled' => (string) (int) !
getDolGlobalString(
'ORDER_DISABLE_DELIVERY_DATE'),
'position' => 65,
'csslist' =>
'nowraponall'),
240 'c.fk_shipping_method' => array(
'label' =>
"SendingMethod",
'checked' =>
'-1',
'position' => 66 ,
'enabled' => (string) (int)
isModEnabled(
"shipping")),
241 'c.fk_cond_reglement' => array(
'label' =>
"PaymentConditionsShort",
'checked' =>
'-1',
'position' => 67),
242 'c.fk_mode_reglement' => array(
'label' =>
"PaymentMode",
'checked' =>
'-1',
'position' => 68),
243 'c.fk_input_reason' => array(
'label' =>
"Origin",
'checked' =>
'-1',
'position' => 69),
244 'c.module_source' => array(
'label' =>
"POSModule",
'langfile' =>
'cashdesk',
'checked' => ($contextpage ==
'poslist' ?
'1' :
'0'),
'enabled' => $showpos,
'position' => 90),
245 'c.pos_source' => array(
'label' =>
"POSTerminal",
'langfile' =>
'cashdesk',
'checked' => ($contextpage ==
'poslist' ?
'1' :
'0'),
'enabled' => $showpos,
'position' => 91),
246 'c.total_ht' => array(
'label' =>
"AmountHT",
'checked' =>
'1',
'position' => 75),
247 'c.total_vat' => array(
'label' =>
"AmountVAT",
'checked' =>
'0',
'position' => 80),
248 'c.total_ttc' => array(
'label' =>
"AmountTTC",
'checked' =>
'0',
'position' => 85),
249 'c.multicurrency_code' => array(
'label' =>
'Currency',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
"multicurrency") ?
'0' :
'1'),
'position' => 92),
250 'c.multicurrency_tx' => array(
'label' =>
'CurrencyRate',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
"multicurrency") ?
'0' :
'1'),
'position' => 95),
251 'c.multicurrency_total_ht' => array(
'label' =>
'MulticurrencyAmountHT',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
"multicurrency") ?
'0' :
'1'),
'position' => 100),
252 'c.multicurrency_total_vat' => array(
'label' =>
'MulticurrencyAmountVAT',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
"multicurrency") ?
'0' :
'1'),
'position' => 105),
253 'c.multicurrency_total_ttc' => array(
'label' =>
'MulticurrencyAmountTTC',
'checked' =>
'0',
'enabled' => (!
isModEnabled(
"multicurrency") ?
'0' :
'1'),
'position' => 110),
254 'u.login' => array(
'label' =>
"Author",
'checked' =>
'-1',
'position' => 115),
255 'sale_representative' => array(
'label' =>
"SaleRepresentativesOfThirdParty",
'checked' =>
'0',
'position' => 116),
256 'total_pa' => array(
'label' => (
getDolGlobalString(
'MARGIN_TYPE') ==
'1' ?
'BuyingPrice' :
'CostPrice'),
'checked' =>
'0',
'position' => 300,
'enabled' => (string) (int) (!
isModEnabled(
'margin') || !$user->hasRight(
"margins",
"liretous") ? 0 : 1)),
257 'total_margin' => array(
'label' =>
'Margin',
'checked' =>
'0',
'position' => 301,
'enabled' => (string) (int) (!
isModEnabled(
'margin') || !$user->hasRight(
"margins",
"liretous") ? 0 : 1)),
258 'total_margin_rate' => array(
'label' =>
'MarginRate',
'checked' =>
'0',
'position' => 302,
'enabled' => (string) (int) (!
isModEnabled(
'margin') || !$user->hasRight(
"margins",
"liretous") || !
getDolGlobalString(
'DISPLAY_MARGIN_RATES') ? 0 : 1)),
259 'total_mark_rate' => array(
'label' =>
'MarkRate',
'checked' =>
'0',
'position' => 303,
'enabled' => (string) (int) (!
isModEnabled(
'margin') || !$user->hasRight(
"margins",
"liretous") || !
getDolGlobalString(
'DISPLAY_MARK_RATES') ? 0 : 1)),
260 'c.datec' => array(
'label' =>
"DateCreation",
'checked' =>
'0',
'position' => 120),
261 'c.tms' => array(
'label' =>
"DateModificationShort",
'checked' =>
'0',
'position' => 125),
262 'c.date_cloture' => array(
'label' =>
"DateClosing",
'checked' =>
'0',
'position' => 130),
263 'c.note_public' => array(
'label' =>
'NotePublic',
'checked' =>
'0',
'enabled' => (string) (int) (!
getDolGlobalInt(
'MAIN_LIST_HIDE_PUBLIC_NOTES')),
'position' => 135,
'searchall' => 1),
264 'c.note_private' => array(
'label' =>
'NotePrivate',
'checked' =>
'0',
'enabled' => (string) (int) (!
getDolGlobalInt(
'MAIN_LIST_HIDE_PRIVATE_NOTES')),
'position' => 140),
265 'shippable' => array(
'label' =>
"Shippable",
'checked' =>
'1',
'enabled' => (string) (int) (
isModEnabled(
"shipping")),
'position' => 990),
266 'c.facture' => array(
'label' =>
"Billed",
'checked' =>
'1',
'enabled' => (string) (int) (!
getDolGlobalString(
'WORKFLOW_BILL_ON_SHIPMENT')),
'position' => 995),
267 'c.import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' =>
'1',
'visible' => -2,
'position' => 999),
268 'c.fk_statut' => array(
'label' =>
"Status",
'checked' =>
'1',
'position' => 1000)
271$parameters = array(
'fieldstosearchall' => $fieldstosearchall);
272$reshook = $hookmanager->executeHooks(
'completeFieldsToSearchAll', $parameters, $object, $action);
274 $fieldstosearchall = empty($hookmanager->resArray[
'fieldstosearchall']) ? array() : $hookmanager->resArray[
'fieldstosearchall'];
275} elseif ($reshook == 0) {
276 $fieldstosearchall = array_merge($fieldstosearchall, empty($hookmanager->resArray[
'fieldstosearchall']) ? array() : $hookmanager->resArray[
'fieldstosearchall']);
280include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
290 $socid = $user->socid;
293$permissiontoreadallthirdparty = $user->hasRight(
'societe',
'client',
'voir');
294$permissiontoread =
false;
295$permissiontovalidate =
false;
296$permissiontoclose =
false;
297$permissiontocancel =
false;
298$permissiontosendbymail =
false;
311if (
GETPOST(
'cancel',
'alpha')) {
315if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend' && $massaction !=
'confirm_createbills') {
319$parameters = array(
'socid' => $socid,
'arrayfields' => &$arrayfields);
320$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
325if (empty($reshook)) {
327 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
330 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
333 $search_product_category =
'';
334 $searchCategoryOrderList = array();
337 $search_ref_ext =
'';
338 $search_ref_customer =
'';
339 $search_company =
'';
340 $search_company_alias =
'';
341 $search_parent_name =
'';
342 $search_module_source =
'';
343 $search_pos_source =
'';
348 $search_country =
'';
349 $search_type_thirdparty =
'';
350 $search_total_ht =
'';
351 $search_total_vat =
'';
352 $search_total_ttc =
'';
353 $search_warehouse =
'';
354 $search_note_public =
'';
355 $search_note_private =
'';
356 $search_multicurrency_code =
'';
357 $search_multicurrency_tx =
'';
358 $search_multicurrency_montant_ht =
'';
359 $search_multicurrency_montant_vat =
'';
360 $search_multicurrency_montant_ttc =
'';
362 $search_dateorder_start =
'';
363 $search_dateorder_end =
'';
364 $search_datedelivery_start =
'';
365 $search_datedelivery_end =
'';
366 $search_project_ref =
'';
367 $search_project =
'';
370 $search_datecloture_start =
'';
371 $search_datecloture_end =
'';
372 $search_fk_cond_reglement =
'';
373 $search_fk_shipping_method =
'';
374 $search_fk_mode_reglement =
'';
375 $search_fk_input_reason =
'';
377 $search_import_key =
'';
378 $search_categ_cus = 0;
382 $search_array_options = array();
384 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')
385 ||
GETPOST(
'button_search_x',
'alpha') ||
GETPOST(
'button_search.x',
'alpha') ||
GETPOST(
'button_search',
'alpha')) {
390 $objectclass =
'Commande';
391 $objectlabel =
'Orders';
392 $permissiontoread = $user->hasRight(
"commande",
"lire");
393 $permissiontoadd = $user->hasRight(
"commande",
"creer");
394 $permissiontodelete = $user->hasRight(
"commande",
"supprimer");
396 $permissiontovalidate = $user->hasRight(
"commande",
"order_advance",
"validate");
397 $permissiontoclose = $user->hasRight(
"commande",
"order_advance",
"close");
398 $permissiontocancel = $user->hasRight(
"commande",
"order_advance",
"annuler");
399 $permissiontosendbymail = $user->hasRight(
"commande",
"order_advance",
"send");
401 $permissiontovalidate = $user->hasRight(
"commande",
"creer");
402 $permissiontoclose = $user->hasRight(
"commande",
"creer");
403 $permissiontocancel = $user->hasRight(
"commande",
"creer");
404 $permissiontosendbymail = $user->hasRight(
"commande",
"creer");
406 $uploaddir = $conf->order->multidir_output[$conf->entity];
407 $triggersendname =
'ORDER_SENTBYMAIL';
410 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
412 if ($massaction ==
'confirm_createbills') {
413 $orders =
GETPOST(
'toselect',
'array:int');
414 $createbills_onebythird =
GETPOSTINT(
'createbills_onebythird');
415 $validate_invoices =
GETPOSTINT(
'validate_invoices');
420 $TFactThird = array();
421 $TFactThirdNbLines = array();
423 $nb_bills_created = 0;
429 $nbOrders = is_array($orders) ? count($orders) : 1;
432 foreach ($orders as $id_order) {
434 if ($cmd->fetch($id_order) <= 0) {
437 $cmd->fetch_thirdparty();
440 if (!empty($createbills_onebythird) && !empty($TFactThird[$cmd->socid])) {
443 $objecttmp = $TFactThird[$cmd->socid];
446 $objecttmp->socid = $cmd->socid;
447 $objecttmp->thirdparty = $cmd->thirdparty;
449 $objecttmp->type = $objecttmp::TYPE_STANDARD;
450 $objecttmp->cond_reglement_id = !empty($cmd->cond_reglement_id) ? $cmd->cond_reglement_id : $cmd->thirdparty->cond_reglement_id;
451 $objecttmp->mode_reglement_id = !empty($cmd->mode_reglement_id) ? $cmd->mode_reglement_id : $cmd->thirdparty->mode_reglement_id;
452 $objecttmp->demand_reason_id = !empty($cmd->demand_reason_id) ? $cmd->demand_reason_id : $cmd->thirdparty->demand_reason_id;
454 $objecttmp->fk_project = $cmd->fk_project;
455 $objecttmp->multicurrency_code = $cmd->multicurrency_code;
456 if (empty($createbills_onebythird)) {
457 $objecttmp->ref_client = $cmd->ref_client;
460 if (empty($objecttmp->note_public) &&
getDolGlobalInt(
"MAXREFONDOC", 10)>0) {
461 $objecttmp->note_public = $langs->transnoentities(
"Orders");
465 if (empty($datefacture)) {
469 $objecttmp->date = $datefacture;
470 $objecttmp->origin =
'commande';
471 $objecttmp->origin_id = (int) $id_order;
473 $objecttmp->array_options = $cmd->array_options;
475 $res = $objecttmp->create($user);
479 $lastref = $objecttmp->ref;
480 $lastid = $objecttmp->id;
482 $TFactThird[$cmd->socid] = $objecttmp;
483 $TFactThirdNbLines[$cmd->socid] = 0;
485 $langs->load(
"errors");
486 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
491 if ($objecttmp->id > 0) {
492 $res = $objecttmp->add_object_linked($objecttmp->origin, $id_order);
495 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
501 $cmd->fetchObjectLinked();
503 if (!$error && $cmd->id && !empty($cmd->linkedObjectsIds[
'shipping']) && is_array($cmd->linkedObjectsIds[
'shipping'])) {
504 $cmd->linked_objects = $cmd->linkedObjectsIds;
505 foreach ($cmd->linked_objects as $origin_type => $tmp_origin_id) {
507 if ($origin_type ==
'shipping') {
508 if (is_array($tmp_origin_id)) {
509 foreach ($tmp_origin_id as $origin_id) {
510 $res = $objecttmp->add_object_linked($origin_type, $origin_id);
512 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
517 $origin_id = $tmp_origin_id;
518 $res = $objecttmp->add_object_linked($origin_type, $origin_id);
520 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
530 $lines = $cmd->lines;
531 if (empty($lines) && method_exists($cmd,
'fetch_lines')) {
533 $lines = $cmd->lines;
537 $num = count($lines);
538 $array_options = array();
540 for ($i = 0; $i < $num; $i++) {
541 $desc = ($lines[$i]->desc ? $lines[$i]->desc :
'');
543 if (!empty($createbills_onebythird)) {
547 if ($lines[$i]->subprice < 0 && !
getDolGlobalString(
'INVOICE_KEEP_DISCOUNT_LINES_AS_IN_ORIGIN')) {
550 $discount->fk_soc = $objecttmp->socid;
551 $discount->socid = $objecttmp->socid;
552 $discount->amount_ht = abs($lines[$i]->total_ht);
553 $discount->amount_tva = abs($lines[$i]->total_tva);
554 $discount->amount_ttc = abs($lines[$i]->total_ttc);
555 $discount->tva_tx = $lines[$i]->tva_tx;
556 $discount->fk_user = $user->id;
557 $discount->description = $desc;
558 $discountid = $discount->create($user);
559 if ($discountid > 0) {
560 $result = $objecttmp->insert_discount($discountid);
569 $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0);
572 if ($lines[$i]->date_debut_prevue) {
573 $date_start = $lines[$i]->date_debut_prevue;
575 if ($lines[$i]->date_debut_reel) {
576 $date_start = $lines[$i]->date_debut_reel;
578 if ($lines[$i]->date_start) {
579 $date_start = $lines[$i]->date_start;
583 if ($lines[$i]->date_fin_prevue) {
584 $date_end = $lines[$i]->date_fin_prevue;
586 if ($lines[$i]->date_fin_reel) {
587 $date_end = $lines[$i]->date_fin_reel;
589 if ($lines[$i]->date_end) {
590 $date_end = $lines[$i]->date_end;
593 if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
598 if (method_exists($lines[$i],
'fetch_optionals')) {
599 $lines[$i]->fetch_optionals();
600 $array_options = $lines[$i]->array_options;
603 $objecttmp->context[
'createfromclone'] =
'createfromclone';
605 $rang = ($nbOrders > 1) ? -1 : $lines[$i]->rang;
607 if (!empty($createbills_onebythird)) {
608 $TFactThirdNbLines[$cmd->socid]++;
609 $rang = $TFactThirdNbLines[$cmd->socid];
612 $result = $objecttmp->addline(
614 $lines[$i]->subprice,
617 $lines[$i]->localtax1_tx,
618 $lines[$i]->localtax2_tx,
619 $lines[$i]->fk_product,
620 $lines[$i]->remise_percent,
624 $lines[$i]->info_bits,
625 $lines[$i]->fk_remise_except,
630 $lines[$i]->special_code,
634 $lines[$i]->fk_fournprice,
643 if (!empty($lines[$i]->extraparams)) {
645 $factureLine->id = $result;
646 $factureLine->extraparams = $lines[$i]->extraparams;
647 $factureLine->setExtraParameters();
654 $errors[] = $objecttmp->error;
658 if ($result > 0 && $lines[$i]->product_type == 9) {
659 $fk_parent_line = $result;
667 $objecttmp->note_public =
dol_concatdesc($objecttmp->note_public, $langs->transnoentities($cmd->ref).(empty($cmd->ref_client) ?
'' :
' ('.$cmd->ref_client.
')'));
668 $objecttmp->update($user);
673 if (!empty($createbills_onebythird) && empty($TFactThird[$cmd->socid])) {
674 $TFactThird[$cmd->socid] = $objecttmp;
676 $TFact[$objecttmp->id] = $objecttmp;
681 $TAllFact = empty($createbills_onebythird) ? $TFact : $TFactThird;
684 if (!$error && $validate_invoices) {
685 $massaction = $action =
'builddoc';
687 foreach ($TAllFact as &$objecttmp) {
688 $result = $objecttmp->validate($user);
695 $id = $objecttmp->id;
699 $upload_dir = $conf->facture->dir_output;
700 $permissiontoadd = $user->hasRight(
'facture',
'creer');
705 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
709 $massaction = $action =
'confirm_createbills';
715 if ($nb_bills_created == 1) {
716 if (
getDolGlobalInt(
'MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_ONE') == 1) {
718 header(
'Location: '.DOL_URL_ROOT.
'/compta/facture/card.php?id='.urlencode((
string) $lastid));
721 $texttoshow = $langs->trans(
'BillXCreated',
'{s1}');
722 $texttoshow = str_replace(
'{s1}',
'<a href="'.DOL_URL_ROOT.
'/compta/facture/card.php?id='.urlencode((
string) ($lastid)).
'">'.$lastref.
'</a>', $texttoshow);
725 if (
getDolGlobalInt(
'MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_MANY') == 1) {
727 header(
"Location: ".DOL_URL_ROOT.
'/compta/facture/list.php?mainmenu=billing&leftmenu=customers_bills');
730 setEventMessages($langs->trans(
'BillCreated', $nb_bills_created),
null,
'mesgs');
736 $param .=
'&mode='.urlencode($mode);
738 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
739 $param .=
'&contextpage='.urlencode($contextpage);
741 if ($limit > 0 && $limit != $conf->liste_limit) {
742 $param .=
'&limit='.((int) $limit);
744 if ($optioncss !=
'') {
745 $param .=
'&optioncss='.urlencode($optioncss);
748 $param .=
'&search_all='.urlencode($search_all);
751 $param .=
'&show_files='.urlencode((
string) ($show_files));
754 $param .=
'&socid='.urlencode((
string) ($socid));
756 if ($search_status !=
'') {
757 $param .=
'&search_status='.urlencode($search_status);
759 if ($search_option) {
760 $param .=
"&search_option=".urlencode($search_option);
762 if ($search_orderday) {
763 $param .=
'&search_orderday='.urlencode($search_orderday);
765 if ($search_ordermonth) {
766 $param .=
'&search_ordermonth='.urlencode($search_ordermonth);
768 if ($search_orderyear) {
769 $param .=
'&search_orderyear='.urlencode($search_orderyear);
771 if ($search_deliveryday) {
772 $param .=
'&search_deliveryday='.urlencode($search_deliveryday);
774 if ($search_deliverymonth) {
775 $param .=
'&search_deliverymonth='.urlencode($search_deliverymonth);
777 if ($search_deliveryyear) {
778 $param .=
'&search_deliveryyear='.urlencode($search_deliveryyear);
781 $param .=
'&search_id='.urlencode((
string) $search_id);
784 $param .=
'&search_ref='.urlencode($search_ref);
786 if ($search_ref_ext) {
787 $param .=
'&search_ref_ext='.urlencode($search_ref_ext);
789 if ($search_company) {
790 $param .=
'&search_company='.urlencode($search_company);
792 if ($search_ref_customer) {
793 $param .=
'&search_ref_customer='.urlencode($search_ref_customer);
795 if ($search_user > 0) {
796 $param .=
'&search_user='.urlencode((
string) ($search_user));
798 if ($search_sale > 0) {
799 $param .=
'&search_sale='.urlencode((
string) ($search_sale));
801 if ($search_total_ht !=
'') {
802 $param .=
'&search_total_ht='.urlencode($search_total_ht);
804 if ($search_total_vat !=
'') {
805 $param .=
'&search_total_vat='.urlencode($search_total_vat);
807 if ($search_total_ttc !=
'') {
808 $param .=
'&search_total_ttc='.urlencode($search_total_ttc);
810 if ($search_project_ref >= 0) {
811 $param .=
"&search_project_ref=".urlencode($search_project_ref);
813 if ($search_project !=
'') {
814 $param .=
"&search_project=".urlencode($search_project);
816 if ($search_billed !=
'') {
817 $param .=
'&search_billed='.urlencode($search_billed);
820 header(
"Location: ".$_SERVER[
'PHP_SELF'].
'?'.$param);
826 $_GET[
"origin"] = $_POST[
"origin"];
827 $_GET[
"originid"] = $_POST[
"originid"];
828 if (!empty($errors)) {
838if ($action ==
'validate' && $permissiontoadd && $objectclass !==
null) {
839 if (
GETPOST(
'confirm') ==
'yes') {
841 $objecttmp =
new $objectclass($db);
844 foreach ($toselect as $checked) {
845 if ($objecttmp->fetch($checked)) {
846 if ($objecttmp->status == $objecttmp::STATUS_DRAFT) {
847 if (!empty($objecttmp->fk_warehouse)) {
848 $idwarehouse = $objecttmp->fk_warehouse;
852 if ($objecttmp->valid($user, $idwarehouse) > 0) {
853 setEventMessages($langs->trans(
'hasBeenValidated', $objecttmp->ref),
null,
'mesgs');
859 $langs->load(
"errors");
860 setEventMessages($langs->trans(
'ErrorIsNotADraft', $objecttmp->ref),
null,
'errors');
875if ($action ==
'shipped' && $permissiontoadd && $objectclass !==
null) {
876 if (
GETPOST(
'confirm') ==
'yes') {
878 $objecttmp =
new $objectclass($db);
881 foreach ($toselect as $checked) {
882 if ($objecttmp->fetch($checked)) {
883 if ($objecttmp->status == $objecttmp::STATUS_VALIDATED || $objecttmp->status == $objecttmp::STATUS_SHIPMENTONPROCESS || $objecttmp->status == $objecttmp::STATUS_CLOSED) {
884 $result = $objecttmp->cloture($user);
886 setEventMessages($langs->trans(
'StatusOrderDelivered', $objecttmp->ref),
null,
'mesgs');
887 } elseif ($result < 0) {
888 setEventMessages($langs->trans(
'ErrorOrderStatusCantBeSetToDelivered'),
null,
'errors');
892 $langs->load(
"errors");
893 setEventMessages($langs->trans(
'ErrorObjectHasWrongStatus', $objecttmp->ref),
null,
'errors');
910if (!$error && $massaction ===
'setbilled' && $permissiontoclose && $objectclass !==
null) {
913 $objecttmp =
new $objectclass($db);
915 foreach ($toselect as $toselectid) {
916 $result = $objecttmp->fetch($toselectid);
918 $result = $objecttmp->classifyBilled($user, 0);
946$form =
new Form($db);
953$companystatic =
new Societe($db);
954$company_url_list = array();
956$projectstatic =
new Project($db);
960$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
961$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
963$title = $langs->trans(
"Orders");
964$help_url =
"EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes";
969$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,';
970$sql .=
" s.parent as fk_parent,";
971$sql .=
" s2.nom as name2,";
972$sql .=
" typent.code as typent_code,";
973$sql .=
" state.code_departement as state_code, state.nom as state_name,";
974$sql .=
" country.code as country_code,";
975$sql .=
' c.rowid, c.ref, c.ref_ext, c.total_ht, c.total_tva, c.total_ttc, c.ref_client, c.fk_user_author,';
976$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,';
977$sql .=
' c.date_valid, c.date_commande, c.note_public, c.note_private, c.date_livraison as delivery_date, c.fk_statut, c.facture as billed,';
978$sql .=
' c.date_creation as date_creation, c.tms as date_modification, c.date_cloture as date_cloture,';
979$sql .=
' c.fk_cond_reglement,c.deposit_percent,c.fk_mode_reglement,c.fk_shipping_method,';
980$sql .=
' c.fk_input_reason, c.import_key,';
981$sql .=
" c.module_source, c.pos_source,";
982$sql .=
' p.rowid as project_id, p.ref as project_ref, p.title as project_label,';
983$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';
986if (!empty($extrafields->attributes[
$object->table_element][
'label'])) {
987 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $val) {
988 $sql .= ($extrafields->attributes[
$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
993$parameters = array();
994$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters, $object, $action);
995$sql .= $hookmanager->resPrint;
996$sql = preg_replace(
'/,\s*$/',
'', $sql);
1000$sql .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
1001$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s2 ON s2.rowid = s.parent";
1002$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as country on (country.rowid = s.fk_pays)";
1003$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_typent as typent on (typent.id = s.fk_typent)";
1004$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_departements as state on (state.rowid = s.fk_departement)";
1005$sql .=
', '.MAIN_DB_PREFIX.
'commande as c';
1006if (!empty($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
1007 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"commande_extrafields as ef on (c.rowid = ef.fk_object)";
1009$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"projet as p ON p.rowid = c.fk_projet";
1010$sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'user as u ON c.fk_user_author = u.rowid';
1012$parameters = array();
1013$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters, $object, $action);
1014$sql .= $hookmanager->resPrint;
1016$sql .=
' WHERE c.fk_soc = s.rowid';
1017$sql .=
' AND c.entity IN ('.getEntity(
'commande').
')';
1019 $sql .=
' AND s.rowid = '.((int) $socid);
1022if (empty($user->socid) && !$permissiontoreadallthirdparty) {
1023 $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).
")";
1025 $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)).
"))";
1030if ($search_id > 0) {
1036if ($search_ref_ext) {
1039if ($search_ref_customer) {
1042if ($search_billed !=
'' && $search_billed >= 0) {
1043 $sql .=
' AND c.facture = '.((int) $search_billed);
1045if ($search_status !=
'') {
1046 if ($search_status <= 3 && $search_status >= -1) {
1047 if ($search_status == 1 && !
isModEnabled(
'shipping')) {
1048 $sql .=
' AND c.fk_statut IN (1,2)';
1050 $sql .=
' AND c.fk_statut = '.((int) $search_status);
1053 if ($search_status == -2) {
1055 $sql .=
" AND (c.fk_statut IN (1,2))";
1057 if ($search_status == -3) {
1060 $sql .=
' AND (c.fk_statut IN (1,2,3))';
1063if ($search_option ==
'late') {
1066 $sql .=
" AND ((c.date_livraison IS NOT NULL AND c.date_livraison < '".$db->idate(
dol_now() - $conf->order->client->warning_delay).
"') OR (c.date_livraison IS NULL AND c.date_commande < '".$db->idate(
dol_now() - $conf->order->client->warning_delay).
"'))";
1068 $sql .=
" AND c.date_commande < '".$db->idate(
dol_now() - $conf->order->client->warning_delay).
"'";
1071if ($search_datecloture_start) {
1072 $sql .=
" AND c.date_cloture >= '".$db->idate($search_datecloture_start).
"'";
1074if ($search_datecloture_end) {
1075 $sql .=
" AND c.date_cloture <= '".$db->idate($search_datecloture_end).
"'";
1077if ($search_dateorder_start) {
1078 $sql .=
" AND c.date_commande >= '".$db->idate($search_dateorder_start).
"'";
1080if ($search_dateorder_end) {
1081 $sql .=
" AND c.date_commande <= '".$db->idate($search_dateorder_end).
"'";
1083if ($search_datedelivery_start) {
1084 $sql .=
" AND c.date_livraison >= '".$db->idate($search_datedelivery_start).
"'";
1086if ($search_datedelivery_end) {
1087 $sql .=
" AND c.date_livraison <= '".$db->idate($search_datedelivery_end).
"'";
1098if ($search_country) {
1099 $sql .=
" AND s.fk_pays IN (".$db->sanitize($search_country).
')';
1101if ($search_type_thirdparty && $search_type_thirdparty !=
'-1') {
1102 $sql .=
" AND s.fk_typent IN (".$db->sanitize($search_type_thirdparty).
')';
1104if (empty($arrayfields[
's.name_alias'][
'checked']) && $search_company) {
1105 $sql .=
natural_search(array(
"s.nom",
"s.name_alias"), $search_company);
1107 if ($search_company) {
1110 if ($search_company_alias) {
1114if ($search_parent_name) {
1117if ($search_total_ht !=
'') {
1120if ($search_total_vat !=
'') {
1123if ($search_total_ttc !=
'') {
1126if ($search_warehouse !=
'' && $search_warehouse > 0) {
1129if ($search_note_public !=
'') {
1132if ($search_note_private !=
'') {
1135if ($search_multicurrency_code !=
'') {
1136 $sql .=
" AND c.multicurrency_code = '".$db->escape($search_multicurrency_code).
"'";
1138if ($search_multicurrency_tx !=
'') {
1139 $sql .=
natural_search(
'c.multicurrency_tx', $search_multicurrency_tx, 1);
1141if ($search_multicurrency_montant_ht !=
'') {
1142 $sql .=
natural_search(
'c.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
1144if ($search_multicurrency_montant_vat !=
'') {
1145 $sql .=
natural_search(
'c.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
1147if ($search_multicurrency_montant_ttc !=
'') {
1148 $sql .=
natural_search(
'c.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
1151 $sql .=
natural_search(array(
"u.login",
"u.firstname",
"u.lastname"), $search_login);
1153if ($search_project_ref !=
'') {
1156if ($search_project !=
'') {
1159if ($search_fk_cond_reglement > 0) {
1160 $sql .=
" AND c.fk_cond_reglement = ".((int) $search_fk_cond_reglement);
1162if ($search_fk_shipping_method > 0) {
1163 $sql .=
" AND c.fk_shipping_method = ".((int) $search_fk_shipping_method);
1165if ($search_fk_mode_reglement > 0) {
1166 $sql .=
" AND c.fk_mode_reglement = ".((int) $search_fk_mode_reglement);
1168if ($search_fk_input_reason > 0) {
1169 $sql .=
" AND c.fk_input_reason = ".((int) $search_fk_input_reason);
1171if ($search_module_source) {
1172 $sql .=
natural_search(
"c.module_source", $search_module_source);
1174if ($search_pos_source) {
1177if ($search_import_key) {
1181if ($search_user > 0) {
1182 $sql .=
" AND EXISTS (";
1183 $sql .=
" SELECT ec.fk_c_type_contact, ec.element_id, ec.fk_socpeople";
1184 $sql .=
" FROM ".MAIN_DB_PREFIX.
"element_contact as ec";
1185 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"c_type_contact as tc";
1186 $sql .=
" ON ec.fk_c_type_contact = tc.rowid AND tc.element = 'commande' AND tc.source = 'internal'";
1187 $sql .=
" WHERE ec.element_id = c.rowid AND ec.fk_socpeople = ".((int) $search_user).
")";
1190if ($search_sale && $search_sale !=
'-1') {
1191 if ($search_sale == -2) {
1192 $sql .=
" AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = c.fk_soc)";
1193 } elseif ($search_sale > 0) {
1194 $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).
")";
1199if (!empty($searchCategoryOrderList)) {
1200 $searchCategoryOrderSqlList = array();
1201 $listofcategoryid =
'';
1202 foreach ($searchCategoryOrderList as $searchCategoryOrder) {
1203 if (intval($searchCategoryOrder) == -2) {
1204 $searchCategoryOrderSqlList[] =
"NOT EXISTS (SELECT ck.fk_order FROM ".MAIN_DB_PREFIX.
"categorie_order as ck WHERE c.rowid = ck.fk_order)";
1205 } elseif (intval($searchCategoryOrder) > 0) {
1206 if ($searchCategoryOrderOperator == 0) {
1207 $searchCategoryOrderSqlList[] =
" EXISTS (SELECT ck.fk_order FROM ".MAIN_DB_PREFIX.
"categorie_order as ck WHERE c.rowid = ck.fk_order AND ck.fk_categorie = ".((int) $searchCategoryOrder).
")";
1209 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryOrder);
1213 if ($listofcategoryid) {
1214 $searchCategoryOrderSqlList[] =
" EXISTS (SELECT ck.fk_order FROM ".MAIN_DB_PREFIX.
"categorie_order as ck WHERE c.rowid = ck.fk_order AND ck.fk_categorie IN (".$db->sanitize($listofcategoryid).
"))";
1216 if ($searchCategoryOrderOperator == 1) {
1217 if (!empty($searchCategoryOrderSqlList)) {
1218 $sql .=
" AND (".implode(
' OR ', $searchCategoryOrderSqlList).
")";
1221 if (!empty($searchCategoryOrderSqlList)) {
1222 $sql .=
" AND (".implode(
' AND ', $searchCategoryOrderSqlList).
")";
1228$searchCategoryCustomerOperator =
GETPOSTINT(
'search_category_customer_operator');
1229$searchCategoryCustomerList = array($search_categ_cus);
1230if (!empty($searchCategoryCustomerList)) {
1231 $searchCategoryCustomerSqlList = array();
1232 $listofcategoryid =
'';
1233 foreach ($searchCategoryCustomerList as $searchCategoryCustomer) {
1234 if (intval($searchCategoryCustomer) == -2) {
1235 $searchCategoryCustomerSqlList[] =
"NOT EXISTS (SELECT cs.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as cs WHERE s.rowid = cs.fk_soc)";
1236 } elseif (intval($searchCategoryCustomer) > 0) {
1237 if ($searchCategoryCustomerOperator == 0) {
1238 $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).
")";
1240 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryCustomer);
1244 if ($listofcategoryid) {
1245 $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).
"))";
1247 if ($searchCategoryCustomerOperator == 1) {
1248 if (!empty($searchCategoryCustomerSqlList)) {
1249 $sql .=
" AND (".implode(
' OR ', $searchCategoryCustomerSqlList).
")";
1252 if (!empty($searchCategoryCustomerSqlList)) {
1253 $sql .=
" AND (".implode(
' AND ', $searchCategoryCustomerSqlList).
")";
1258$searchCategoryProductOperator =
GETPOSTINT(
'search_category_product_operator');
1259$searchCategoryProductList = array($search_product_category);
1260if (!empty($searchCategoryProductList)) {
1261 $searchCategoryProductSqlList = array();
1262 $listofcategoryid =
'';
1263 foreach ($searchCategoryProductList as $searchCategoryProduct) {
1264 if (intval($searchCategoryProduct) == -2) {
1265 $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)";
1266 } elseif (intval($searchCategoryProduct) > 0) {
1267 if ($searchCategoryProductOperator == 0) {
1268 $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).
")";
1270 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryProduct);
1274 if ($listofcategoryid) {
1275 $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).
"))";
1277 if ($searchCategoryProductOperator == 1) {
1278 if (!empty($searchCategoryProductSqlList)) {
1279 $sql .=
" AND (".implode(
' OR ', $searchCategoryProductSqlList).
")";
1282 if (!empty($searchCategoryProductSqlList)) {
1283 $sql .=
" AND (".implode(
' AND ', $searchCategoryProductSqlList).
")";
1288include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
1290$parameters = array();
1291$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action);
1292$sql .= $hookmanager->resPrint;
1297 $fieldstosearchallwithoutpd = array();
1298 $fieldstosearchallwithpd = array();
1299 foreach ($fieldstosearchall as $key => $val) {
1300 if (!preg_match(
'/^pd\./', $key)) {
1301 $fieldstosearchallwithoutpd[$key] = $val;
1303 $fieldstosearchallwithpd[$key] = $val;
1307 if (count($fieldstosearchallwithpd) > 0) {
1308 $sqltoadd .=
" OR EXISTS (SELECT pd.rowid FROM ".MAIN_DB_PREFIX.
"commandedet as pd WHERE pd.fk_commande = c.rowid";
1309 $sqltoadd .=
natural_search(array_keys($fieldstosearchallwithpd),
'__KEYTOSEARCH__');
1313 $sql .=
natural_search(array_keys($fieldstosearchallwithoutpd), $search_all, 0, 0, $sqltoadd);
1317$parameters = array();
1318$reshook = $hookmanager->executeHooks(
'printFieldListHaving', $parameters, $object, $action);
1319if (empty($reshook)) {
1320 $sql .= empty($hookmanager->resPrint) ?
"" :
" HAVING 1=1 ".$hookmanager->resPrint;
1322 $sql = $hookmanager->resPrint;
1327$nbtotalofrecords =
'';
1330 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
1331 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
1332 $resql = $db->query($sqlforcount);
1334 $objforcount = $db->fetch_object($resql);
1335 $nbtotalofrecords = $objforcount->nbtotalofrecords;
1340 if (($page * $limit) > (
int) $nbtotalofrecords) {
1348$sql .= $db->order($sortfield, $sortorder);
1350 $sql .= $db->plimit($limit + 1, $offset);
1354$resql = $db->query($sql);
1362 $soc->fetch($socid);
1363 $title = $langs->trans(
'CustomersOrders').
' - '.$soc->name;
1364 if (empty($search_company)) {
1365 $search_company = $soc->name;
1368 $title = $langs->trans(
'CustomersOrders');
1370if (strval($search_status) ==
'0') {
1371 $title .=
' - '.$langs->trans(
'StatusOrderDraftShort');
1373if ($search_status == 1) {
1374 $title .=
' - '.$langs->trans(
'StatusOrderValidatedShort');
1376if ($search_status == 2) {
1377 $title .=
' - '.$langs->trans(
'StatusOrderSentShort');
1379if ($search_status == 3) {
1380 $title .=
' - '.$langs->trans(
'StatusOrderToBillShort');
1382if ($search_status == -1) {
1383 $title .=
' - '.$langs->trans(
'StatusOrderCanceledShort');
1385if ($search_status == -2) {
1386 $title .=
' - '.$langs->trans(
'StatusOrderToProcessShort');
1388if ($search_status == -3) {
1389 $title .=
' - '.$langs->trans(
'StatusOrderValidated').
', '.(!
isModEnabled(
'shipping') ?
'' : $langs->trans(
"StatusOrderSent").
', ').$langs->trans(
'StatusOrderToBill');
1391if ($search_status == -4) {
1392 $title .=
' - '.$langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort");
1395$num = $db->num_rows($resql);
1397$arrayofselected = is_array($toselect) ? $toselect : array();
1399if ($num == 1 &&
getDolGlobalString(
'MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all) {
1400 $obj = $db->fetch_object($resql);
1402 header(
"Location: ".DOL_URL_ROOT.
'/commande/card.php?id='.
$id);
1409llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'bodyforlist mod-order page-list');
1411$arrayofselected = is_array($toselect) ? $toselect : array();
1415 $param .=
'&mode='.urlencode($mode);
1417if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
1418 $param .=
'&contextpage='.urlencode($contextpage);
1420if ($limit > 0 && $limit != $conf->liste_limit) {
1421 $param .=
'&limit='.((int) $limit);
1423if ($optioncss !=
'') {
1424 $param .=
'&optioncss='.urlencode($optioncss);
1427 $param .=
'&show_files='.urlencode((
string) ($show_files));
1430 $param .=
'&search_all='.urlencode($search_all);
1433 $param .=
'&socid='.((int) $socid);
1435if ($search_status !=
'') {
1436 $param .=
'&search_status='.urlencode($search_status);
1438if ($search_option) {
1439 $param .=
"&search_option=".urlencode($search_option);
1441if ($search_datecloture_start) {
1442 $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');
1444if ($search_datecloture_end) {
1445 $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');
1447if ($search_dateorder_start) {
1448 $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');
1450if ($search_dateorder_end) {
1451 $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');
1453if ($search_datedelivery_start) {
1454 $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');
1456if ($search_datedelivery_end) {
1457 $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');
1460 $param .=
'&search_id='.urlencode((
string) $search_id);
1463 $param .=
'&search_ref='.urlencode($search_ref);
1465if ($search_ref_ext) {
1466 $param .=
'&search_ref_ext='.urlencode($search_ref_ext);
1468if ($search_company) {
1469 $param .=
'&search_company='.urlencode($search_company);
1471if ($search_company_alias) {
1472 $param .=
'&search_company_alias='.urlencode($search_company_alias);
1474if ($search_parent_name !=
'') {
1475 $param .=
'&search_parent_name='.urlencode($search_parent_name);
1477if ($search_ref_customer) {
1478 $param .=
'&search_ref_customer='.urlencode($search_ref_customer);
1480if ($search_user > 0) {
1481 $param .=
'&search_user='.urlencode((
string) ($search_user));
1483if ($search_sale > 0) {
1484 $param .=
'&search_sale='.urlencode((
string) ($search_sale));
1486if ($search_total_ht !=
'') {
1487 $param .=
'&search_total_ht='.urlencode($search_total_ht);
1489if ($search_total_vat !=
'') {
1490 $param .=
'&search_total_vat='.urlencode($search_total_vat);
1492if ($search_total_ttc !=
'') {
1493 $param .=
'&search_total_ttc='.urlencode($search_total_ttc);
1495if ($search_warehouse !=
'') {
1496 $param .=
'&search_warehouse='.urlencode((
string) ($search_warehouse));
1499 $param .=
'&search_login='.urlencode($search_login);
1501if ($search_multicurrency_code !=
'') {
1502 $param .=
'&search_multicurrency_code='.urlencode($search_multicurrency_code);
1504if ($search_multicurrency_tx !=
'') {
1505 $param .=
'&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
1507if ($search_multicurrency_montant_ht !=
'') {
1508 $param .=
'&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
1510if ($search_multicurrency_montant_vat !=
'') {
1511 $param .=
'&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
1513if ($search_multicurrency_montant_ttc !=
'') {
1514 $param .=
'&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
1516if ($search_project_ref >= 0) {
1517 $param .=
"&search_project_ref=".urlencode($search_project_ref);
1519if ($search_project !=
'') {
1520 $param .=
"&search_project=".urlencode($search_project);
1522if ($search_town !=
'') {
1523 $param .=
'&search_town='.urlencode($search_town);
1525if ($search_zip !=
'') {
1526 $param .=
'&search_zip='.urlencode($search_zip);
1528if ($search_state !=
'') {
1529 $param .=
'&search_state='.urlencode($search_state);
1531if ($search_country !=
'') {
1532 $param .=
'&search_country='.urlencode((
string) ($search_country));
1534if ($search_type_thirdparty && $search_type_thirdparty !=
'-1') {
1535 $param .=
'&search_type_thirdparty='.urlencode((
string) ($search_type_thirdparty));
1537if ($searchCategoryOrderOperator == 1) {
1538 $param .=
"&search_category_order_operator=".urlencode((
string) ($searchCategoryOrderOperator));
1540foreach ($searchCategoryOrderList as $searchCategoryOrder) {
1541 $param .=
"&search_category_order_list[]=".urlencode($searchCategoryOrder);
1543if ($search_product_category !=
'') {
1544 $param .=
'&search_product_category='.urlencode((
string) ($search_product_category));
1546if (($search_categ_cus > 0) || ($search_categ_cus == -2)) {
1547 $param .=
'&search_categ_cus='.urlencode((
string) ($search_categ_cus));
1549if ($search_billed !=
'') {
1550 $param .=
'&search_billed='.urlencode($search_billed);
1552if ($search_fk_cond_reglement > 0) {
1553 $param .=
'&search_fk_cond_reglement='.urlencode((
string) ($search_fk_cond_reglement));
1555if ($search_fk_shipping_method > 0) {
1556 $param .=
'&search_fk_shipping_method='.urlencode((
string) ($search_fk_shipping_method));
1558if ($search_fk_mode_reglement > 0) {
1559 $param .=
'&search_fk_mode_reglement='.urlencode((
string) ($search_fk_mode_reglement));
1561if ($search_fk_input_reason > 0) {
1562 $param .=
'&search_fk_input_reason='.urlencode((
string) ($search_fk_input_reason));
1564if ($search_module_source) {
1565 $param .=
'&search_module_source='.urlencode($search_module_source);
1567if ($search_pos_source) {
1568 $param .=
'&search_pos_source='.urlencode($search_pos_source);
1570if ($search_import_key !=
'') {
1571 $param .=
'&search_import_key='.urlencode($search_import_key);
1575include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
1578$parameters = array();
1579$reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters, $object, $action);
1580$param .= $hookmanager->resPrint;
1583$arrayofmassactions = array(
1584 'generate_doc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"ReGeneratePDF"),
1585 'builddoc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"PDFMerge"),
1587if (
isModEnabled(
'category') && $user->hasRight(
"commande",
"lire")) {
1588 $arrayofmassactions[
'preaffecttag'] =
img_picto(
'',
'category',
'class="pictofixedwidth"').$langs->trans(
"AffectTag");
1590if ($permissiontovalidate) {
1591 $arrayofmassactions[
'prevalidate'] =
img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"Validate");
1593if ($permissiontoclose) {
1594 $arrayofmassactions[
'preshipped'] =
img_picto(
'',
'dolly',
'class="pictofixedwidth"').$langs->trans(
"ClassifyShipped");
1596if (
isModEnabled(
'invoice') && $user->hasRight(
"facture",
"creer")) {
1597 $arrayofmassactions[
'createbills'] =
img_picto(
'',
'bill',
'class="pictofixedwidth"').$langs->trans(
"CreateInvoiceForThisCustomer");
1599if ($permissiontoclose) {
1600 $arrayofmassactions[
'setbilled'] =
img_picto(
'',
'bill',
'class="pictofixedwidth"').$langs->trans(
"ClassifyBilled");
1602if ($permissiontocancel) {
1603 $arrayofmassactions[
'cancelorders'] =
img_picto(
'',
'close_title',
'class="pictofixedwidth"').$langs->trans(
"CancelOrder");
1605if (!empty($permissiontodelete)) {
1606 $arrayofmassactions[
'predelete'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
1608if ($permissiontosendbymail) {
1609 $arrayofmassactions[
'presend'] =
img_picto(
'',
'email',
'class="pictofixedwidth"').$langs->trans(
"SendByMail");
1611if (in_array($massaction, array(
'presend',
'predelete',
'createbills'))) {
1612 $arrayofmassactions = array();
1614$massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
1616$url = DOL_URL_ROOT.
'/commande/card.php?action=create';
1617if (!empty($socid)) {
1618 $url .=
'&socid='.$socid;
1621$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'));
1622$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'));
1624$newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewOrder'),
'',
'fa fa-plus-circle', $url,
'', (
int) (($contextpage ==
'orderlist' || $contextpage ==
'billableorders') && $permissiontoadd));
1627print
'<form method="POST" id="searchFormList" name="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">'.
"\n";
1628if ($optioncss !=
'') {
1629 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
1631print
'<input type="hidden" name="token" value="'.newToken().
'">';
1632print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
1633print
'<input type="hidden" name="action" value="list">';
1634print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
1635print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
1636print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
1637print
'<input type="hidden" name="search_status" value="'.$search_status.
'">';
1638print
'<input type="hidden" name="socid" value="'.$socid.
'">';
1639print
'<input type="hidden" name="page_y" value="">';
1640print
'<input type="hidden" name="mode" value="'.$mode.
'">';
1643print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'order', 0, $newcardbutton,
'', $limit, 0, 0, 1);
1645$topicmail =
"SendOrderRef";
1646$modelmail =
"order_send";
1648$trackid =
'ord'.$object->id;
1649include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
1651if ($massaction ==
'prevalidate') {
1652 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassValidation"), $langs->trans(
"ConfirmMassValidationQuestion"),
"validate",
null,
'', 0, 200, 500, 1);
1654if ($massaction ==
'preshipped') {
1655 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"CloseOrder"), $langs->trans(
"ConfirmCloseOrder"),
"shipped",
null,
'', 0, 200, 500, 1);
1658if ($massaction ==
'createbills') {
1659 print
'<input type="hidden" name="massaction" value="confirm_createbills">';
1661 print
'<table class="noborder centpercent">';
1664 print $langs->trans(
'DateInvoice');
1667 print $form->selectDate(
'',
'', 0, 0, 0,
'', 1, 1);
1672 print $langs->trans(
'CreateOneBillByThird');
1675 print $form->selectyesno(
'createbills_onebythird',
getDolGlobalString(
'MAIN_ORDERLIST_CREATEBILLS_ONEBYTHIRD',
'no'), 1);
1680 print $langs->trans(
'ValidateInvoices');
1684 print $form->selectyesno(
'validate_invoices', 0, 1, 1);
1685 $langs->load(
"errors");
1686 print
' ('.$langs->trans(
"WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal").
')';
1688 print $form->selectyesno(
'validate_invoices', 0, 1);
1690 if (!empty($conf->workflow->enabled) &&
getDolGlobalString(
'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER')) {
1691 print
' <span class="opacitymedium">'.$langs->trans(
"IfValidateInvoiceIsNoOrderStayUnbilled").
'</span>';
1693 print
' <span class="opacitymedium">'.$langs->trans(
"OptionToSetOrderBilledNotEnabled").
'</span>';
1699 print
'<div class="center">';
1700 print
'<input type="submit" class="button" id="createbills" name="createbills" value="'.$langs->trans(
'CreateInvoiceForThisCustomer').
'"> ';
1701 print
'<input type="submit" class="button button-cancel" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
1708 foreach ($fieldstosearchall as $key => $val) {
1709 $fieldstosearchall[$key] = $langs->trans($val);
1710 $setupstring .= $key.
"=".$val.
";";
1712 print
'<!-- Search done like if MYOBJECT_QUICKSEARCH_ON_FIELDS = '.$setupstring.
' -->'.
"\n";
1713 print
'<div class="divsearchfieldfilter">'.$langs->trans(
"FilterOnInto", $search_all).implode(
', ', $fieldstosearchall).
'</div>';
1718if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'read')) {
1720 $moreforfilter .= $formcategory->getFilterBox(Categorie::TYPE_ORDER, $searchCategoryOrderList,
'minwidth300', $searchCategoryOrderOperator ? $searchCategoryOrderOperator : 0);
1724if ($user->hasRight(
"user",
"user",
"lire")) {
1725 $langs->load(
"commercial");
1726 $moreforfilter .=
'<div class="divsearchfield">';
1727 $tmptitle = $langs->trans(
'ThirdPartiesOfSaleRepresentative');
1728 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$formother->select_salesrepresentatives($search_sale,
'search_sale', $user, 0, $tmptitle,
'maxwidth250 widthcentpercentminusx');
1729 $moreforfilter .=
'</div>';
1732if ($user->hasRight(
"user",
"user",
"lire")) {
1733 $moreforfilter .=
'<div class="divsearchfield">';
1734 $tmptitle = $langs->trans(
'LinkedToSpecificUsers');
1735 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$form->select_dolusers($search_user,
'search_user', $tmptitle,
null, 0,
'',
'',
'0', 0, 0,
'', 0,
'',
'maxwidth250 widthcentpercentminusx');
1736 $moreforfilter .=
'</div>';
1740if (
isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire") && ($user->hasRight(
"produit",
"lire") || $user->hasRight(
"service",
"lire"))) {
1741 include_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1742 $moreforfilter .=
'<div class="divsearchfield">';
1743 $tmptitle = $langs->trans(
'IncludingProductWithTag');
1744 $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT,
'',
'parent', 0, array(), 1);
1745 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$form->selectarray(
'search_product_category', $cate_arbo, $search_product_category, $tmptitle, 0, 0,
'', 0, 0, 0,
'',
'maxwidth300 widthcentpercentminusx', 1);
1746 $moreforfilter .=
'</div>';
1749if (
isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire")) {
1750 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1751 $moreforfilter .=
'<div class="divsearchfield">';
1752 $tmptitle = $langs->trans(
'CustomersProspectsCategoriesShort');
1753 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$formother->select_categories(
'customer', $search_categ_cus,
'search_categ_cus', 1, $tmptitle,
'maxwidth300 widthcentpercentminusx');
1754 $moreforfilter .=
'</div>';
1758 require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
1760 $moreforfilter .=
'<div class="divsearchfield">';
1761 $tmptitle = $langs->trans(
'Warehouse');
1762 $moreforfilter .=
img_picto($tmptitle,
'stock',
'class="pictofixedwidth"').$formproduct->selectWarehouses($search_warehouse,
'search_warehouse',
'', 1, 0, 0, $tmptitle, 0, 0, array(),
'maxwidth250 widthcentpercentminusx');
1763 $moreforfilter .=
'</div>';
1766$parameters = array();
1767$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1768if (empty($reshook)) {
1769 $moreforfilter .= $hookmanager->resPrint;
1771 $moreforfilter = $hookmanager->resPrint;
1774if (!empty($moreforfilter)) {
1775 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1776 print $moreforfilter;
1780$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
1781$htmlofselectarray = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
1782$selectedfields = ($mode !=
'kanban' ? $htmlofselectarray :
'');
1783$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons(
'checkforselect', 1) :
'');
1786 $selectedfields .=
'<script>';
1787 $selectedfields .=
' $(document).ready(function() {';
1788 $selectedfields .=
' console.log("Autoclick on checkforselects");';
1789 $selectedfields .=
' $("#checkforselects").click();';
1790 $selectedfields .=
' $("#massaction").val("createbills").change();';
1791 $selectedfields .=
' });';
1792 $selectedfields .=
'</script>';
1795print
'<div class="div-table-responsive">';
1796print
'<table class="tagtable nobottomiftotal liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
1800print
'<tr class="liste_titre_filter">';
1803 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
1804 $searchpicto = $form->showFilterButtons(
'left');
1810if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
1811 print
'<td class="liste_titre">';
1812 print
'<input class="flat" size="6" type="text" name="search_id" value="'.dol_escape_htmltag($search_id).
'">';
1817if (!empty($arrayfields[
'c.ref'][
'checked'])) {
1818 print
'<td class="liste_titre">';
1819 print
'<input class="flat maxwidth50imp" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
1823if (!empty($arrayfields[
'c.ref_ext'][
'checked'])) {
1824 print
'<td class="liste_titre">';
1825 print
'<input class="flat maxwidth50imp" type="text" name="search_ref_ext" value="'.dol_escape_htmltag($search_ref_ext).
'">';
1829if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
1830 print
'<td class="liste_titre" align="left">';
1831 print
'<input class="flat" type="text" size="6" name="search_ref_customer" value="'.dol_escape_htmltag($search_ref_customer).
'">';
1835if (!empty($arrayfields[
'p.ref'][
'checked'])) {
1836 print
'<td class="liste_titre"><input type="text" class="flat" size="6" name="search_project_ref" value="'.dol_escape_htmltag($search_project_ref).
'"></td>';
1839if (!empty($arrayfields[
'p.title'][
'checked'])) {
1840 print
'<td class="liste_titre"><input type="text" class="flat" size="6" name="search_project" value="'.dol_escape_htmltag($search_project).
'"></td>';
1843if (!empty($arrayfields[
's.nom'][
'checked'])) {
1844 print
'<td class="liste_titre">';
1845 print
'<input class="flat maxwidth75imp" type="text" name="search_company" value="'.dol_escape_htmltag((
string) $search_company).
'"'.(!empty($user->socid) ?
" disabled" :
"").
'>';
1849if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
1850 print
'<td class="liste_titre">';
1851 print
'<input class="flat maxwidth75imp" type="text" name="search_company_alias" value="'.dol_escape_htmltag($search_company_alias).
'">';
1855if (!empty($arrayfields[
's2.nom'][
'checked'])) {
1856 print
'<td class="liste_titre">';
1857 print
'<input class="flat maxwidth100" type="text" name="search_parent_name" value="'.dol_escape_htmltag($search_parent_name).
'">';
1861if (!empty($arrayfields[
's.town'][
'checked'])) {
1862 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).
'"></td>';
1865if (!empty($arrayfields[
's.zip'][
'checked'])) {
1866 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_zip" value="'.dol_escape_htmltag($search_zip).
'"></td>';
1869if (!empty($arrayfields[
'state.nom'][
'checked'])) {
1870 print
'<td class="liste_titre">';
1871 print
'<input class="flat maxwidth50imp" type="text" name="search_state" value="'.dol_escape_htmltag($search_state).
'">';
1875if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
1876 print
'<td class="liste_titre" align="center">';
1877 print $form->select_country($search_country,
'search_country',
'', 0,
'minwidth100imp maxwidth100');
1881if (!empty($arrayfields[
'typent.code'][
'checked'])) {
1882 print
'<td class="liste_titre maxwidthonsmartphone center">';
1883 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);
1887if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
1888 print
'<td class="liste_titre center">';
1889 print
'<div class="nowrapfordate">';
1890 print $form->selectDate($search_dateorder_start ? $search_dateorder_start : -1,
'search_dateorder_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1892 print
'<div class="nowrapfordate">';
1893 print $form->selectDate($search_dateorder_end ? $search_dateorder_end : -1,
'search_dateorder_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1897if (!empty($arrayfields[
'c.delivery_date'][
'checked'])) {
1898 print
'<td class="liste_titre center">';
1899 print
'<div class="nowrapfordate">';
1900 print $form->selectDate($search_datedelivery_start ? $search_datedelivery_start : -1,
'search_datedelivery_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1902 print
'<div class="nowrapfordate">';
1903 print $form->selectDate($search_datedelivery_end ? $search_datedelivery_end : -1,
'search_datedelivery_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1908if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
1909 print
'<td class="liste_titre">';
1910 $form->selectShippingMethod($search_fk_shipping_method,
'search_fk_shipping_method',
'', 1,
'', 1);
1914if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
1915 print
'<td class="liste_titre">';
1916 print $form->getSelectConditionsPaiements((
int) $search_fk_cond_reglement,
'search_fk_cond_reglement', 1, 1, 1);
1920if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
1921 print
'<td class="liste_titre">';
1922 print $form->select_types_paiements($search_fk_mode_reglement,
'search_fk_mode_reglement',
'', 0, 1, 1, 0, -1,
'', 1);
1926if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
1927 print
'<td class="liste_titre">';
1928 $form->selectInputReason($search_fk_input_reason,
'search_fk_input_reason',
'', 1,
'', 1);
1932if (!empty($arrayfields[
'c.module_source'][
'checked'])) {
1933 print
'<td class="liste_titre">';
1934 print
'<input class="flat maxwidth75" type="text" name="search_module_source" value="'.dol_escape_htmltag($search_module_source).
'">';
1938if (!empty($arrayfields[
'c.pos_source'][
'checked'])) {
1939 print
'<td class="liste_titre">';
1940 print
'<input class="flat maxwidth50" type="text" name="search_pos_source" value="'.dol_escape_htmltag($search_pos_source).
'">';
1944if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
1945 print
'<td class="liste_titre right">';
1946 print
'<input class="flat" type="text" size="4" name="search_total_ht" value="'.dol_escape_htmltag($search_total_ht).
'">';
1950if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
1951 print
'<td class="liste_titre right">';
1952 print
'<input class="flat" type="text" size="4" name="search_total_vat" value="'.dol_escape_htmltag($search_total_vat).
'">';
1956if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
1957 print
'<td class="liste_titre right">';
1958 print
'<input class="flat" type="text" size="5" name="search_total_ttc" value="'.$search_total_ttc.
'">';
1962if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
1963 print
'<td class="liste_titre">';
1964 print $form->selectMultiCurrency($search_multicurrency_code,
'search_multicurrency_code', 1);
1968if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
1969 print
'<td class="liste_titre">';
1970 print
'<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).
'">';
1974if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
1975 print
'<td class="liste_titre right">';
1976 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).
'">';
1980if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
1981 print
'<td class="liste_titre right">';
1982 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).
'">';
1986if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
1987 print
'<td class="liste_titre right">';
1988 print
'<input class="flat width75" type="text" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).
'">';
1992if (!empty($arrayfields[
'u.login'][
'checked'])) {
1993 print
'<td class="liste_titre">';
1994 print
'<input class="flat width75" type="text" name="search_login" value="'.dol_escape_htmltag($search_login).
'">';
1998if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
1999 print
'<td class="liste_titre"></td>';
2001if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2002 print
'<td class="liste_titre right">';
2005if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2006 print
'<td class="liste_titre right">';
2009if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2010 print
'<td class="liste_titre right">';
2013if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2014 print
'<td class="liste_titre right">';
2019if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2020 print
'<td class="liste_titre">';
2024if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2025 print
'<td class="liste_titre">';
2029if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2030 print
'<td class="liste_titre center">';
2031 print
'<div class="nowrapfordate">';
2032 print $form->selectDate($search_datecloture_start ? $search_datecloture_start : -1,
'search_datecloture_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
2034 print
'<div class="nowrapfordate">';
2035 print $form->selectDate($search_datecloture_end ? $search_datecloture_end : -1,
'search_datecloture_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
2040if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2041 print
'<td class="liste_titre">';
2042 print
'<input class="flat width75" type="text" name="search_note_public" value="'.dolPrintHTMLForAttribute($search_note_public).
'">';
2046if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
2047 print
'<td class="liste_titre">';
2048 print
'<input class="flat width75" type="text" name="search_note_private" value="'.dolPrintHTMLForAttribute($search_note_private).
'">';
2052if (!empty($arrayfields[
'shippable'][
'checked'])) {
2053 print
'<td class="liste_titre maxwidthonsmartphone" align="center">';
2056 print
'<input type="checkbox" name="show_shippable_command" value="1"'.($show_shippable_command ?
' checked' :
'').
'>';
2057 print $langs->trans(
'ShowShippableStatus');
2059 $show_shippable_command = 1;
2065include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
2068$parameters = array(
'arrayfields' => $arrayfields);
2069$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action);
2070print $hookmanager->resPrint;
2073if (!empty($arrayfields[
'c.facture'][
'checked'])) {
2074 print
'<td class="liste_titre maxwidthonsmartphone center">';
2075 print $form->selectyesno(
'search_billed', $search_billed, 1, 0, 1, 1);
2080if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
2081 print
'<td class="liste_titre maxwidthonsmartphone center">';
2082 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
2087if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
2088 print
'<td class="liste_titre center parentonrightofpage">';
2089 $liststatus = array(
2093 -2 => $langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort"),
2094 -3 => $langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort").
'+'.$langs->trans(
"StatusOrderDelivered"),
2099 print $form->selectarray(
'search_status', $liststatus, $search_status, -5, 0, 0,
'', 0, 0, 0,
'',
'search_status width100 onrightofpage', 1);
2104 print
'<td class="liste_titre center maxwidthsearch">';
2105 $searchpicto = $form->showFilterButtons();
2124print
'<tr class="liste_titre">';
2128 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'maxwidthsearch center ');
2131if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
2132 print_liste_field_titre($arrayfields[
'c.rowid'][
'label'], $_SERVER[
"PHP_SELF"],
'c.rowid',
'', $param,
'', $sortfield, $sortorder,
'center ');
2135if (!empty($arrayfields[
'c.ref'][
'checked'])) {
2136 print_liste_field_titre($arrayfields[
'c.ref'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref',
'', $param,
'', $sortfield, $sortorder);
2139if (!empty($arrayfields[
'c.ref_ext'][
'checked'])) {
2140 print_liste_field_titre($arrayfields[
'c.ref_ext'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref_ext',
'', $param,
'', $sortfield, $sortorder);
2143if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
2144 print_liste_field_titre($arrayfields[
'c.ref_client'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref_client',
'', $param,
'', $sortfield, $sortorder);
2147if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2148 print_liste_field_titre($arrayfields[
'p.ref'][
'label'], $_SERVER[
"PHP_SELF"],
"p.ref",
"", $param,
'', $sortfield, $sortorder);
2151if (!empty($arrayfields[
'p.title'][
'checked'])) {
2152 print_liste_field_titre($arrayfields[
'p.title'][
'label'], $_SERVER[
"PHP_SELF"],
"p.title",
"", $param,
'', $sortfield, $sortorder);
2155if (!empty($arrayfields[
's.nom'][
'checked'])) {
2156 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
"PHP_SELF"],
's.nom',
'', $param,
'', $sortfield, $sortorder);
2159if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2161 print_liste_field_titre($arrayfields[
's.name_alias'][
'label'], $_SERVER[
"PHP_SELF"],
's.name_alias',
'', $param,
'', $sortfield, $sortorder);
2164if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2165 print_liste_field_titre($arrayfields[
's2.nom'][
'label'], $_SERVER[
'PHP_SELF'],
's2.nom',
'', $param,
'', $sortfield, $sortorder);
2168if (!empty($arrayfields[
's.town'][
'checked'])) {
2169 print_liste_field_titre($arrayfields[
's.town'][
'label'], $_SERVER[
"PHP_SELF"],
's.town',
'', $param,
'', $sortfield, $sortorder);
2172if (!empty($arrayfields[
's.zip'][
'checked'])) {
2173 print_liste_field_titre($arrayfields[
's.zip'][
'label'], $_SERVER[
"PHP_SELF"],
's.zip',
'', $param,
'', $sortfield, $sortorder);
2176if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2177 print_liste_field_titre($arrayfields[
'state.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"state.nom",
"", $param,
'', $sortfield, $sortorder);
2180if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2181 print_liste_field_titre($arrayfields[
'country.code_iso'][
'label'], $_SERVER[
"PHP_SELF"],
"country.code_iso",
"", $param,
'', $sortfield, $sortorder,
'center ');
2184if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2185 print_liste_field_titre($arrayfields[
'typent.code'][
'label'], $_SERVER[
"PHP_SELF"],
"typent.code",
"", $param,
'', $sortfield, $sortorder,
'center ');
2188if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
2189 print_liste_field_titre($arrayfields[
'c.date_commande'][
'label'], $_SERVER[
"PHP_SELF"],
'c.date_commande',
'', $param,
'', $sortfield, $sortorder,
'center ');
2192if (!empty($arrayfields[
'c.delivery_date'][
'checked'])) {
2193 print_liste_field_titre($arrayfields[
'c.delivery_date'][
'label'], $_SERVER[
"PHP_SELF"],
'c.date_livraison',
'', $param,
'', $sortfield, $sortorder,
'center ');
2196if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
2197 print_liste_field_titre($arrayfields[
'c.fk_shipping_method'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_shipping_method",
"", $param,
'', $sortfield, $sortorder);
2200if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
2201 print_liste_field_titre($arrayfields[
'c.fk_cond_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_cond_reglement",
"", $param,
'', $sortfield, $sortorder);
2204if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
2205 print_liste_field_titre($arrayfields[
'c.fk_mode_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_mode_reglement",
"", $param,
'', $sortfield, $sortorder);
2208if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
2209 print_liste_field_titre($arrayfields[
'c.fk_input_reason'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_input_reason",
"", $param,
'', $sortfield, $sortorder);
2212if (!empty($arrayfields[
'c.module_source'][
'checked'])) {
2213 print_liste_field_titre($arrayfields[
'c.module_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.module_source",
"", $param,
"", $sortfield, $sortorder);
2216if (!empty($arrayfields[
'c.pos_source'][
'checked'])) {
2217 print_liste_field_titre($arrayfields[
'c.pos_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.pos_source",
"", $param,
"", $sortfield, $sortorder);
2220if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
2221 print_liste_field_titre($arrayfields[
'c.total_ht'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
2224if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
2225 print_liste_field_titre($arrayfields[
'c.total_vat'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
2228if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
2229 print_liste_field_titre($arrayfields[
'c.total_ttc'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
2232if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
2233 print_liste_field_titre($arrayfields[
'c.multicurrency_code'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_code',
'', $param,
'', $sortfield, $sortorder);
2236if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
2237 print_liste_field_titre($arrayfields[
'c.multicurrency_tx'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_tx',
'', $param,
'', $sortfield, $sortorder);
2240if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
2241 print_liste_field_titre($arrayfields[
'c.multicurrency_total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_ht',
'', $param,
'class="right"', $sortfield, $sortorder);
2244if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
2245 print_liste_field_titre($arrayfields[
'c.multicurrency_total_vat'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_tva',
'', $param,
'class="right"', $sortfield, $sortorder);
2248if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
2249 print_liste_field_titre($arrayfields[
'c.multicurrency_total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_ttc',
'', $param,
'class="right"', $sortfield, $sortorder);
2252if (!empty($arrayfields[
'u.login'][
'checked'])) {
2253 print_liste_field_titre($arrayfields[
'u.login'][
'label'], $_SERVER[
"PHP_SELF"],
'u.login',
'', $param,
'', $sortfield, $sortorder);
2256if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2257 print_liste_field_titre($arrayfields[
'sale_representative'][
'label'], $_SERVER[
"PHP_SELF"],
"",
"",
"$param",
'', $sortfield, $sortorder);
2260if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2261 print_liste_field_titre($arrayfields[
'total_pa'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2264if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2265 print_liste_field_titre($arrayfields[
'total_margin'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2268if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2269 print_liste_field_titre($arrayfields[
'total_margin_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2272if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2273 print_liste_field_titre($arrayfields[
'total_mark_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2277if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2278 print_liste_field_titre($arrayfields[
'c.datec'][
'label'], $_SERVER[
"PHP_SELF"],
"c.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2281if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2282 print_liste_field_titre($arrayfields[
'c.tms'][
'label'], $_SERVER[
"PHP_SELF"],
"c.tms",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2285if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2286 print_liste_field_titre($arrayfields[
'c.date_cloture'][
'label'], $_SERVER[
"PHP_SELF"],
"c.date_cloture",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2289if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2290 print_liste_field_titre($arrayfields[
'c.note_public'][
'label'], $_SERVER[
"PHP_SELF"],
"c.note_public",
"", $param,
'', $sortfield, $sortorder,
'');
2293if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
2294 print_liste_field_titre($arrayfields[
'c.note_private'][
'label'], $_SERVER[
"PHP_SELF"],
"c.note_private",
"", $param,
'', $sortfield, $sortorder,
'');
2297if (!empty($arrayfields[
'shippable'][
'checked'])) {
2298 print_liste_field_titre($arrayfields[
'shippable'][
'label'], $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
2302include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
2305$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder,
'totalarray' => &$totalarray);
2306$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
2307print $hookmanager->resPrint;
2310if (!empty($arrayfields[
'c.facture'][
'checked'])) {
2311 print_liste_field_titre($arrayfields[
'c.facture'][
'label'], $_SERVER[
"PHP_SELF"],
'c.facture',
'', $param,
'', $sortfield, $sortorder,
'center ');
2315if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
2316 print_liste_field_titre($arrayfields[
'c.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"c.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
2320if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
2321 print_liste_field_titre($arrayfields[
'c.fk_statut'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_statut",
"", $param,
'', $sortfield, $sortorder,
'center ');
2326 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'maxwidthsearch center ');
2333$productstat_cache = array();
2334$productstat_cachevirtual = array();
2335$getNomUrl_cache = array();
2337$generic_commande =
new Commande($db);
2338$generic_product =
new Product($db);
2339$userstatic =
new User($db);
2341$with_margin_info =
false;
2343 !empty($arrayfields[
'total_pa'][
'checked'])
2344 || !empty($arrayfields[
'total_margin'][
'checked'])
2345 || !empty($arrayfields[
'total_margin_rate'][
'checked'])
2346 || !empty($arrayfields[
'total_mark_rate'][
'checked'])
2349 $with_margin_info =
true;
2361$imaxinloop = ($limit ? min($num, $limit) : $num);
2362while ($i < $imaxinloop) {
2363 $obj = $db->fetch_object($resql);
2368 $typenArray = $formcompany->typent_array(1);
2376 $companystatic->id = $obj->socid;
2377 $companystatic->name = $obj->name;
2378 $companystatic->name_alias = $obj->alias;
2379 $companystatic->client = $obj->client;
2380 $companystatic->fournisseur = $obj->fournisseur;
2381 $companystatic->code_client = $obj->code_client;
2382 $companystatic->email = $obj->email;
2383 $companystatic->phone = $obj->phone;
2384 $companystatic->address = $obj->address;
2385 $companystatic->zip = $obj->zip;
2386 $companystatic->town = $obj->town;
2387 $companystatic->country_code = $obj->country_code;
2388 if (!isset($getNomUrl_cache[$obj->socid])) {
2389 $getNomUrl_cache[$obj->socid] = $companystatic->getNomUrl(1,
'customer', 100, 0, 1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2392 $generic_commande->id = $obj->rowid;
2393 $generic_commande->ref = $obj->ref;
2394 $generic_commande->status = $obj->fk_statut;
2395 $generic_commande->statut = $obj->fk_statut;
2396 $generic_commande->status = $obj->fk_statut;
2397 $generic_commande->billed = $obj->billed;
2398 $generic_commande->date = $db->jdate($obj->date_commande);
2399 $generic_commande->delivery_date = $db->jdate($obj->delivery_date);
2400 $generic_commande->ref_client = $obj->ref_client;
2401 $generic_commande->total_ht = $obj->total_ht;
2402 $generic_commande->total_tva = $obj->total_tva;
2403 $generic_commande->total_ttc = $obj->total_ttc;
2404 $generic_commande->note_public = $obj->note_public;
2405 $generic_commande->note_private = $obj->note_private;
2407 $generic_commande->thirdparty = $companystatic;
2410 $projectstatic->id = $obj->project_id;
2411 $projectstatic->ref = $obj->project_ref;
2412 $projectstatic->title = $obj->project_label;
2414 $marginInfo = array();
2415 if ($with_margin_info) {
2416 $generic_commande->fetch_lines();
2417 $marginInfo = $formmargin->getMarginInfosArray($generic_commande);
2418 $total_ht += $obj->total_ht;
2419 $total_margin += $marginInfo[
'total_margin'];
2422 if ($mode ==
'kanban') {
2424 print
'<tr class="trkanban"><td colspan="'.$savnbfield.
'">';
2425 print
'<div class="box-flex-container kanban">';
2430 if ($massactionbutton || $massaction) {
2432 if (in_array(
$object->id, $arrayofselected)) {
2436 print $generic_commande->getKanbanView(
'', array(
'selected' => $selected));
2437 if ($i == ($imaxinloop - 1)) {
2444 print
'<tr data-rowid="'.$object->id.
'" class="oddeven row-with-select status'.$generic_commande->status.((getDolGlobalInt(
'MAIN_FINISHED_LINES_OPACITY') == 1 && $obj->status > 1) ?
' opacitymedium' :
'').
'">';
2448 print
'<td class="nowrap center">';
2449 if ($massactionbutton || $massaction) {
2451 if (in_array($obj->rowid, $arrayofselected)) {
2454 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
2463 if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
2464 print
'<td class="center" data-key="id">'.$obj->rowid.
'</td>';
2471 if (!empty($arrayfields[
'c.ref'][
'checked'])) {
2472 print
'<td class="nowraponall">';
2473 $getNomUrlOption = $search_status != 2 ? 0 : $obj->fk_statut;
2479 $getNomUrlOption =
'';
2481 print $generic_commande->getNomUrl(1, $getNomUrlOption, 0, 0, 0, 1, 1);
2485 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid;
2486 print $formfile->getDocumentsLink($generic_commande->element, $filename, $filedir);
2495 if (!empty($arrayfields[
'c.ref_ext'][
'checked'])) {
2496 print
'<td class="nowrap tdoverflowmax75" title="'.dol_escape_htmltag($obj->ref_ext).
'">';
2505 if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
2506 print
'<td class="nowrap tdoverflowmax150" title="'.dol_escape_htmltag($obj->ref_client).
'">';
2515 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2516 print
'<td class="nocellnopadd nowraponall">';
2517 if ($obj->project_id > 0) {
2518 print $projectstatic->getNomUrl(1);
2527 if (!empty($arrayfields[
'p.title'][
'checked'])) {
2528 print
'<td class="nowraponall">';
2529 if ($obj->project_id > 0) {
2530 print $projectstatic->title;
2539 if (!empty($arrayfields[
's.nom'][
'checked'])) {
2540 print
'<td class="tdoverflowmax150">';
2542 print $companystatic->getNomUrl(1,
'customer', 100, 0, 1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2544 print $getNomUrl_cache[$obj->socid];
2549 if ($user->hasRight(
'facture',
'creer')) {
2550 if (($obj->fk_statut > 0 && $obj->fk_statut < 3) || ($obj->fk_statut == 3 && $obj->billed == 0)) {
2551 print
' <a href="'.DOL_URL_ROOT.
'/commande/list.php?socid='.$companystatic->id.
'&search_billed=0&autoselectall=1">';
2552 print
img_picto($langs->trans(
"CreateInvoiceForThisCustomer").
' : '.$companystatic->name,
'object_bill',
'hideonsmartphone').
'</a>';
2563 if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2564 print
'<td class="nocellnopadd tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->alias).
'">';
2573 if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2574 print
'<td class="tdoverflowmax200">';
2575 if ($obj->fk_parent > 0) {
2576 if (!isset($company_url_list[$obj->fk_parent])) {
2577 $companyparent =
new Societe($db);
2578 $res = $companyparent->fetch($obj->fk_parent);
2580 $company_url_list[$obj->fk_parent] = $companyparent->getNomUrl(1);
2583 if (isset($company_url_list[$obj->fk_parent])) {
2584 print $company_url_list[$obj->fk_parent];
2594 if (!empty($arrayfields[
's.town'][
'checked'])) {
2595 print
'<td class="tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->town).
'">';
2604 if (!empty($arrayfields[
's.zip'][
'checked'])) {
2605 print
'<td class="tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->zip).
'">';
2614 if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2615 print
'<td class="tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->state_name).
'">'.
dolPrintLabel($obj->state_name).
"</td>\n";
2622 if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2623 $tmparray =
getCountry($obj->fk_pays,
'all');
2624 print
'<td class="center tdoverflowmax100" title="'.dolPrintHTMLForAttribute($tmparray[
'label']).
'">';
2633 if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2634 if (!is_array($typenArray) || count($typenArray) == 0) {
2635 $typenArray = $formcompany->typent_array(1);
2637 if (!empty($obj->typent_code)) {
2638 print
'<td class="center tdoverflowmax100" title="'.dolPrintHTMLForAttribute($typenArray[$obj->typent_code]).
'">';
2639 print $typenArray[$obj->typent_code];
2641 print
'<td class="center tdoverflowmax100">';
2651 if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
2652 print
'<td class="center nowraponall">';
2655 if ($generic_commande->hasDelay()) {
2656 print
img_picto($langs->trans(
"Late").
' : '.$generic_commande->showDelay(),
"warning");
2665 if (!empty($arrayfields[
'c.delivery_date'][
'checked'])) {
2666 print
'<td class="center nowraponall">';
2667 print
dol_print_date($db->jdate($obj->delivery_date),
'dayhour');
2675 if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
2677 $form->formSelectShippingMethod(
'', $obj->fk_shipping_method,
'none', 1);
2685 if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
2687 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'], $obj->fk_cond_reglement,
'none', 0,
'', 1, $obj->deposit_percent);
2695 if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
2697 $form->form_modes_reglement($_SERVER[
'PHP_SELF'], $obj->fk_mode_reglement,
'none',
'', -1);
2705 if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
2707 $form->formInputReason($_SERVER[
'PHP_SELF'], $obj->fk_input_reason,
'none', 0);
2715 if (!empty($arrayfields[
'c.module_source'][
'checked'])) {
2724 if (!empty($arrayfields[
'c.pos_source'][
'checked'])) {
2734 if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
2735 print
'<td class="nowraponall right"><span class="amount">'.price($obj->total_ht).
"</span></td>\n";
2742 if (isset($totalarray[
'val'][
'c.total_ht'])) {
2743 $totalarray[
'val'][
'c.total_ht'] += $obj->total_ht;
2745 $totalarray[
'val'][
'c.total_ht'] = $obj->total_ht;
2750 if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
2751 print
'<td class="nowrap right"><span class="amount">'.price($obj->total_tva).
"</span></td>\n";
2758 if (isset($totalarray[
'val'][
'c.total_tva'])) {
2759 $totalarray[
'val'][
'c.total_tva'] += $obj->total_tva;
2761 $totalarray[
'val'][
'c.total_tva'] = $obj->total_tva;
2766 if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
2767 print
'<td class="nowrap right"><span class="amount">'.price($obj->total_ttc).
"</span></td>\n";
2774 if (isset($totalarray[
'val'][
'c.total_ttc'])) {
2775 $totalarray[
'val'][
'c.total_ttc'] += $obj->total_ttc;
2777 $totalarray[
'val'][
'c.total_ttc'] = $obj->total_ttc;
2782 if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
2783 print
'<td class="nowrap">'.$obj->multicurrency_code.
' - '.$langs->trans(
'Currency'.$obj->multicurrency_code).
"</td>\n";
2790 if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
2791 print
'<td class="nowrap">';
2792 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid, $obj->multicurrency_tx,
'none', $obj->multicurrency_code);
2800 if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
2801 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_ht).
"</span></td>\n";
2807 if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
2808 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_vat).
"</span></td>\n";
2814 if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
2815 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_ttc).
"</span></td>\n";
2821 $userstatic->id = $obj->fk_user_author;
2822 $userstatic->login = $obj->login;
2823 $userstatic->lastname = $obj->lastname;
2824 $userstatic->firstname = $obj->firstname;
2825 $userstatic->email = $obj->user_email;
2826 $userstatic->status = $obj->user_statut;
2827 $userstatic->entity = $obj->entity;
2828 $userstatic->photo = $obj->photo;
2829 $userstatic->office_phone = $obj->office_phone;
2830 $userstatic->office_fax = $obj->office_fax;
2831 $userstatic->user_mobile = $obj->user_mobile;
2832 $userstatic->job = $obj->job;
2833 $userstatic->gender = $obj->gender;
2836 if (!empty($arrayfields[
'u.login'][
'checked'])) {
2837 print
'<td class="tdoverflowmax125">';
2838 if ($userstatic->id) {
2839 print $userstatic->getNomUrl(-1);
2850 if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2852 if ($obj->socid > 0) {
2853 $listsalesrepresentatives = $companystatic->getSalesRepresentatives($user);
2854 if ($listsalesrepresentatives < 0) {
2857 $nbofsalesrepresentative = count($listsalesrepresentatives);
2858 if ($nbofsalesrepresentative > 6) {
2860 print $nbofsalesrepresentative;
2861 } elseif ($nbofsalesrepresentative > 0) {
2863 foreach ($listsalesrepresentatives as $val) {
2864 $userstatic->id = $val[
'id'];
2865 $userstatic->lastname = $val[
'lastname'];
2866 $userstatic->firstname = $val[
'firstname'];
2867 $userstatic->email = $val[
'email'];
2868 $userstatic->status = $val[
'statut'];
2869 $userstatic->entity = $val[
'entity'];
2870 $userstatic->photo = $val[
'photo'];
2871 $userstatic->login = $val[
'login'];
2872 $userstatic->office_phone = $val[
'office_phone'];
2873 $userstatic->office_fax = $val[
'office_fax'];
2874 $userstatic->user_mobile = $val[
'user_mobile'];
2875 $userstatic->job = $val[
'job'];
2876 $userstatic->gender = $val[
'gender'];
2878 print ($nbofsalesrepresentative < 2) ? $userstatic->getNomUrl(-1,
'', 0, 0, 12) : $userstatic->getNomUrl(-2);
2880 if ($j < $nbofsalesrepresentative) {
2897 if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2898 print
'<td class="right nowrap">'.price($marginInfo[
'pa_total']).
'</td>';
2905 if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2906 print
'<td class="right nowrap">'.price($marginInfo[
'total_margin']).
'</td>';
2914 if (!isset($totalarray[
'val'][
'total_margin'])) {
2918 $totalarray[
'val'][
'total_margin'] += $marginInfo[
'total_margin'];
2922 if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2923 print
'<td class="right nowrap">'.(($marginInfo[
'total_margin_rate'] ==
'') ?
'' :
price($marginInfo[
'total_margin_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
2930 if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2931 print
'<td class="right nowrap">'.(($marginInfo[
'total_mark_rate'] ==
'') ?
'' :
price($marginInfo[
'total_mark_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
2938 if ($i >= $imaxinloop - 1) {
2939 if (!empty($total_ht)) {
2948 if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2949 print
'<td class="center nowraponall">';
2950 print
dol_print_date($db->jdate($obj->date_creation),
'dayhour',
'tzuserrel');
2958 if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2959 print
'<td class="center nowraponall">';
2960 print
dol_print_date($db->jdate($obj->date_modification),
'dayhour',
'tzuserrel');
2968 if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2969 print
'<td class="center nowraponall">';
2970 print
dol_print_date($db->jdate($obj->date_cloture),
'dayhour',
'tzuserrel');
2978 if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2979 print
'<td class="sensiblehtmlcontent maxwidth250imp classfortooltip" title="'.dolPrintHTMLForAttribute(
dolGetFirstLineOfText($obj->note_public, 20)).
'">';
2980 print
'<div class="small lineheightsmall twolinesmax-normallineheight">'.dolPrintHTML(
dolGetFirstLineOfText($obj->note_public, 5)).
'</div>';
2988 if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
2989 print
'<td class="sensiblehtmlcontent maxwidth250imp classfortooltip" title="'.dolPrintHTMLForAttribute(
dolGetFirstLineOfText($obj->note_private, 20)).
'">';
2990 print
'<div class="small lineheightsmall twolinesmax-normallineheight">'.dolPrintHTML(
dolGetFirstLineOfText($obj->note_private, 5)).
'</div>';
2998 if (!empty($arrayfields[
'shippable'][
'checked'])) {
2999 print
'<td class="center">';
3000 if (!empty($show_shippable_command) &&
isModEnabled(
'stock')) {
3002 if (($obj->fk_statut > $generic_commande::STATUS_DRAFT) && ($obj->fk_statut < $generic_commande::STATUS_CLOSED)) {
3003 $generic_commande->getLinesArray();
3004 $generic_commande->loadExpeditions();
3008 $numlines = count($generic_commande->lines);
3009 for ($lig = 0; $lig < $numlines; $lig++) {
3010 $orderLine = $generic_commande->lines[$lig];
3011 '@phan-var-force OrderLine $orderLine';
3012 if (isset($generic_commande->expeditions[$orderLine->id])) {
3013 $reliquat = $orderLine->qty - $generic_commande->expeditions[$orderLine->id];
3015 $reliquat = $orderLine->qty;
3017 if ($orderLine->product_type == 0 && $orderLine->fk_product > 0) {
3019 $generic_product->id = $orderLine->fk_product;
3022 if (empty($productstat_cache[$orderLine->fk_product])) {
3023 $generic_product->load_stock(
'nobatch,warehouseopen');
3024 $productstat_cache[$orderLine->fk_product][
'stock_reel'] = $generic_product->stock_reel;
3025 $productstat_cachevirtual[$orderLine->fk_product][
'stock_reel'] = $generic_product->stock_theorique;
3027 $generic_product->stock_reel = $productstat_cache[$orderLine->fk_product][
'stock_reel'];
3029 $generic_product->stock_theorique = $productstat_cachevirtual[$orderLine->fk_product][
'stock_reel'];
3032 if (!array_key_exists($orderLine->fk_product, $stock)) {
3033 $stock[$orderLine->fk_product] = $generic_product->stock_reel;
3036 if ($reliquat > $stock[$orderLine->fk_product]) {
3040 $stock[$orderLine->fk_product] = $stock[$orderLine->fk_product] - $reliquat;
3042 $text_info .= $reliquat.
' x '.$orderLine->product_ref.
' '.
dol_trunc($orderLine->product_label, 20);
3043 $text_info .=
' - '.$langs->trans(
"Stock").
': <span class="'.($generic_product->stock_reel > 0 ?
'ok' :
'error').
'">'.$generic_product->stock_reel.
'</span>';
3044 $text_info .=
' - '.$langs->trans(
"VirtualStock").
': <span class="'.($generic_product->stock_theorique > 0 ?
'ok' :
'error').
'">'.$generic_product->stock_theorique.
'</span>';
3045 $text_info .= ($reliquat != $orderLine->qty ?
' <span class="opacitymedium">('.$langs->trans(
"QtyInOtherShipments").
' '.($orderLine->qty - $reliquat).
')</span>' :
'');
3046 $text_info .=
'<br>';
3053 $stock_order_supplier = 0;
3056 if (empty($productstat_cache[$orderLine->fk_product][
'stats_order_customer'])) {
3057 $generic_product->load_stats_commande(0,
'1,2');
3058 $productstat_cache[$orderLine->fk_product][
'stats_order_customer'] = $generic_product->stats_commande[
'qty'];
3061 $generic_product->stats_commande[
'qty'] = $productstat_cache[$orderLine->fk_product][
'stats_order_customer'];
3063 $stock_order = $generic_product->stats_commande[
'qty'];
3066 if (empty($productstat_cache[$orderLine->fk_product][
'stats_order_supplier'])) {
3067 $generic_product->load_stats_commande_fournisseur(0,
'3');
3068 $productstat_cache[$orderLine->fk_product][
'stats_order_supplier'] = $generic_product->stats_commande_fournisseur[
'qty'];
3071 $generic_product->stats_commande_fournisseur[
'qty'] = $productstat_cache[$orderLine->fk_product][
'stats_order_supplier'];
3073 $stock_order_supplier = $generic_product->stats_commande_fournisseur[
'qty'];
3076 $text_info .= $reliquat.
' x '.$orderLine->ref.
' '.
dol_trunc($orderLine->product_label, 20);
3077 $text_stock_reel = $generic_product->stock_reel.
'/'.$stock_order;
3078 if ($stock_order > $generic_product->stock_reel && !($generic_product->stock_reel < $orderLine->qty)) {
3080 $text_warning .=
'<span class="warning">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
3082 if ($reliquat > $generic_product->stock_reel) {
3083 $text_info .=
'<span class="warning">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
3085 $text_info .=
'<span class="ok">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
3088 $text_info .=
' '.$langs->trans(
'SupplierOrder').
' : '.$stock_order_supplier;
3090 $text_info .= ($reliquat != $orderLine->qty ?
' <span class="opacitymedium">('.$langs->trans(
"QtyInOtherShipments").
' '.($orderLine->qty - $reliquat).
')</span>' :
'');
3091 $text_info .=
'<br>';
3095 if ($notshippable == 0) {
3096 $text_icon =
img_picto(
'',
'dolly',
'', 0, 0, 0,
'',
'green paddingleft');
3097 $text_info = $text_icon.
' '.$langs->trans(
'Shippable').
'<br>'.$text_info;
3099 $text_icon =
img_picto(
'',
'dolly',
'', 0, 0, 0,
'',
'error paddingleft');
3100 $text_info = $text_icon.
' '.$langs->trans(
'NonShippable').
'<br>'.$text_info;
3105 print
'<a href="'.DOL_URL_ROOT.
'/expedition/shipment.php?id='.((int) $obj->rowid).
'">';
3106 print $form->textwithtooltip(
'', $text_info, 2, 1, $text_icon,
'', 2);
3110 print $form->textwithtooltip(
'', $langs->trans(
'NotEnoughForAllOrders').
'<br>'.$text_warning, 2, 1,
img_picto(
'',
'error'),
'', 2);
3120 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
3122 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
3123 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
3124 print $hookmanager->resPrint;
3127 if (!empty($arrayfields[
'c.facture'][
'checked'])) {
3128 print
'<td class="center">';
3130 print
yn($obj->billed, $langs->trans(
"Billed"));
3139 if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
3140 print
'<td class="nowrap center">'.dol_escape_htmltag($obj->import_key).
'</td>';
3147 if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
3148 print
'<td class="nowrap center">'.$generic_commande->LibStatut($obj->fk_statut, $obj->billed, 5, 1).
'</td>';
3156 print
'<td class="nowrap center">';
3157 if ($massactionbutton || $massaction) {
3159 if (in_array($obj->rowid, $arrayofselected)) {
3162 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
3172 $total += $obj->total_ht;
3173 $subtotal += $obj->total_ht;
3179include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
3184 foreach ($arrayfields as $key => $val) {
3185 if (!empty($val[
'checked'])) {
3189 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
3194$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
3195$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
3196print $hookmanager->resPrint;
3198print
'</table>'.
"\n";
3201print
'</form>'.
"\n";
3203if (in_array(
'builddoc', array_keys($arrayofmassactions)) && ($nbtotalofrecords ===
'' || $nbtotalofrecords)) {
3204 $hidegeneratedfilelistifempty = 1;
3205 if ($massaction ==
'builddoc' || $action ==
'remove_file' || $show_files) {
3206 $hidegeneratedfilelistifempty = 0;
3210 $urlsource = $_SERVER[
'PHP_SELF'].
'?sortfield='.$sortfield.
'&sortorder='.$sortorder;
3211 $urlsource .= str_replace(
'&',
'&', $param);
3213 $filedir = $diroutputmassaction;
3214 $genallowed = $permissiontoread;
3215 $delallowed = $permissiontoadd;
3217 print $formfile->showdocuments(
'massfilesarea_orders',
'', $filedir, $urlsource, 0, $delallowed,
'', 1, 1, 0, 48, 1, $param, $title,
'',
'',
'',
null, $hidegeneratedfilelistifempty);
$id
Support class for third parties, contacts, members, users or resources.
if(! $sortfield) if(! $sortorder) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage 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 invoice lines.
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_now($mode='gmt')
Return date for now.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dolGetFirstLineOfText($text, $nboflines=1, $charset='UTF-8')
Return first line of text.
dolPrintHTML($s, $allowiframe=0)
Return a string (that can be on several lines) ready to be output on a HTML page.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0, $allowdash=0)
Clean a string to use it as a file name.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
natural_search($fields, $value, $mode=0, $nofirstand=0, $sqltoadd='')
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
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...
dolPrintLabel($s, $escapeonlyhtmltags=0)
Return a string label (so on 1 line only and that should not contains any HTML) ready to be output on...
yn($yesno, $format=1, $color=0)
Return yes or no in current language.
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
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 a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
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.