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) {
442 setEventMessages($langs->trans(
'WarningOrderNotEligibleForInvoicing', $cmd->ref),
null,
'warnings');
446 $cmd->fetch_thirdparty();
449 if (!empty($createbills_onebythird) && !empty($TFactThird[$cmd->socid])) {
452 $objecttmp = $TFactThird[$cmd->socid];
455 $objecttmp->socid = $cmd->socid;
456 $objecttmp->thirdparty = $cmd->thirdparty;
458 $objecttmp->type = $objecttmp::TYPE_STANDARD;
459 $objecttmp->cond_reglement_id = !empty($cmd->cond_reglement_id) ? $cmd->cond_reglement_id : $cmd->thirdparty->cond_reglement_id;
460 $objecttmp->mode_reglement_id = !empty($cmd->mode_reglement_id) ? $cmd->mode_reglement_id : $cmd->thirdparty->mode_reglement_id;
461 $objecttmp->demand_reason_id = !empty($cmd->demand_reason_id) ? $cmd->demand_reason_id : $cmd->thirdparty->demand_reason_id;
463 $objecttmp->fk_project = $cmd->fk_project;
464 $objecttmp->multicurrency_code = $cmd->multicurrency_code;
465 if (empty($createbills_onebythird)) {
466 $objecttmp->ref_client = $cmd->ref_client;
469 if (empty($objecttmp->note_public) &&
getDolGlobalInt(
"MAXREFONDOC", 10)>0) {
470 $objecttmp->note_public = $langs->transnoentities(
"Orders");
474 if (empty($datefacture)) {
478 $objecttmp->date = $datefacture;
479 $objecttmp->origin =
'commande';
480 $objecttmp->origin_id = (int) $id_order;
482 $objecttmp->array_options = $cmd->array_options;
484 $res = $objecttmp->create($user);
488 $lastref = $objecttmp->ref;
489 $lastid = $objecttmp->id;
491 $TFactThird[$cmd->socid] = $objecttmp;
492 $TFactThirdNbLines[$cmd->socid] = 0;
494 $langs->load(
"errors");
495 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
500 if ($objecttmp->id > 0) {
501 $res = $objecttmp->add_object_linked($objecttmp->origin, $id_order);
504 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
510 $cmd->fetchObjectLinked();
512 if (!$error && $cmd->id && !empty($cmd->linkedObjectsIds[
'shipping']) && is_array($cmd->linkedObjectsIds[
'shipping'])) {
513 $cmd->linked_objects = $cmd->linkedObjectsIds;
514 foreach ($cmd->linked_objects as $origin_type => $tmp_origin_id) {
516 if ($origin_type ==
'shipping') {
517 if (is_array($tmp_origin_id)) {
518 foreach ($tmp_origin_id as $origin_id) {
519 $res = $objecttmp->add_object_linked($origin_type, $origin_id);
521 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
526 $origin_id = $tmp_origin_id;
527 $res = $objecttmp->add_object_linked($origin_type, $origin_id);
529 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
539 $lines = $cmd->lines;
540 if (empty($lines) && method_exists($cmd,
'fetch_lines')) {
542 $lines = $cmd->lines;
546 $num = count($lines);
547 $array_options = array();
549 for ($i = 0; $i < $num; $i++) {
550 $desc = ($lines[$i]->desc ? $lines[$i]->desc :
'');
552 if (!empty($createbills_onebythird)) {
556 if ($lines[$i]->subprice < 0 && !
getDolGlobalString(
'INVOICE_KEEP_DISCOUNT_LINES_AS_IN_ORIGIN')) {
559 $discount->fk_soc = $objecttmp->socid;
560 $discount->socid = $objecttmp->socid;
561 $discount->amount_ht = abs($lines[$i]->total_ht);
562 $discount->amount_tva = abs($lines[$i]->total_tva);
563 $discount->amount_ttc = abs($lines[$i]->total_ttc);
564 $discount->tva_tx = $lines[$i]->tva_tx;
565 $discount->fk_user = $user->id;
566 $discount->description = $desc;
567 $discountid = $discount->create($user);
568 if ($discountid > 0) {
569 $result = $objecttmp->insert_discount($discountid);
578 $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0);
581 if ($lines[$i]->date_debut_prevue) {
582 $date_start = $lines[$i]->date_debut_prevue;
584 if ($lines[$i]->date_debut_reel) {
585 $date_start = $lines[$i]->date_debut_reel;
587 if ($lines[$i]->date_start) {
588 $date_start = $lines[$i]->date_start;
592 if ($lines[$i]->date_fin_prevue) {
593 $date_end = $lines[$i]->date_fin_prevue;
595 if ($lines[$i]->date_fin_reel) {
596 $date_end = $lines[$i]->date_fin_reel;
598 if ($lines[$i]->date_end) {
599 $date_end = $lines[$i]->date_end;
602 if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
607 if (method_exists($lines[$i],
'fetch_optionals')) {
608 $lines[$i]->fetch_optionals();
609 $array_options = $lines[$i]->array_options;
612 $objecttmp->context[
'createfromclone'] =
'createfromclone';
614 $rang = ($nbOrders > 1) ? -1 : $lines[$i]->rang;
616 if (!empty($createbills_onebythird)) {
617 $TFactThirdNbLines[$cmd->socid]++;
618 $rang = $TFactThirdNbLines[$cmd->socid];
621 $result = $objecttmp->addline(
623 $lines[$i]->subprice,
626 $lines[$i]->localtax1_tx,
627 $lines[$i]->localtax2_tx,
628 $lines[$i]->fk_product,
629 $lines[$i]->remise_percent,
633 $lines[$i]->info_bits,
634 $lines[$i]->fk_remise_except,
639 $lines[$i]->special_code,
643 $lines[$i]->fk_fournprice,
652 if (!empty($lines[$i]->extraparams)) {
654 $factureLine->id = $result;
655 $factureLine->extraparams = $lines[$i]->extraparams;
656 $factureLine->setExtraParameters();
663 $errors[] = $objecttmp->error;
667 if ($result > 0 && $lines[$i]->product_type == 9) {
668 $fk_parent_line = $result;
676 $objecttmp->note_public =
dol_concatdesc($objecttmp->note_public, $langs->transnoentities($cmd->ref).(empty($cmd->ref_client) ?
'' :
' ('.$cmd->ref_client.
')'));
677 $objecttmp->update($user);
682 if (!empty($createbills_onebythird) && empty($TFactThird[$cmd->socid])) {
683 $TFactThird[$cmd->socid] = $objecttmp;
685 $TFact[$objecttmp->id] = $objecttmp;
690 $TAllFact = empty($createbills_onebythird) ? $TFact : $TFactThird;
693 if (!$error && $validate_invoices) {
694 $massaction = $action =
'builddoc';
696 foreach ($TAllFact as &$objecttmp) {
697 $result = $objecttmp->validate($user);
704 $id = $objecttmp->id;
705 $lastref = $objecttmp->ref;
709 $upload_dir = $conf->facture->dir_output;
710 $permissiontoadd = $user->hasRight(
'facture',
'creer');
715 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
719 $massaction = $action =
'confirm_createbills';
725 if ($nb_bills_created == 1) {
726 if (
getDolGlobalInt(
'MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_ONE') == 1) {
728 header(
'Location: '.DOL_URL_ROOT.
'/compta/facture/card.php?id='.urlencode((
string) $lastid));
731 $texttoshow = $langs->trans(
'BillXCreated',
'{s1}');
732 $texttoshow = str_replace(
'{s1}',
'<a href="'.DOL_URL_ROOT.
'/compta/facture/card.php?id='.urlencode((
string) ($lastid)).
'">'.$lastref.
'</a>', $texttoshow);
735 if (
getDolGlobalInt(
'MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_MANY') == 1) {
737 header(
"Location: ".DOL_URL_ROOT.
'/compta/facture/list.php?mainmenu=billing&leftmenu=customers_bills');
740 setEventMessages($langs->trans(
'BillCreated', $nb_bills_created),
null,
'mesgs');
746 $param .=
'&mode='.urlencode($mode);
748 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
749 $param .=
'&contextpage='.urlencode($contextpage);
751 if ($limit > 0 && $limit != $conf->liste_limit) {
752 $param .=
'&limit='.((int) $limit);
754 if ($optioncss !=
'') {
755 $param .=
'&optioncss='.urlencode($optioncss);
758 $param .=
'&search_all='.urlencode($search_all);
761 $param .=
'&show_files='.urlencode((
string) ($show_files));
764 $param .=
'&socid='.urlencode((
string) ($socid));
766 if ($search_status !=
'') {
767 $param .=
'&search_status='.urlencode($search_status);
769 if ($search_option) {
770 $param .=
"&search_option=".urlencode($search_option);
772 if ($search_orderday) {
773 $param .=
'&search_orderday='.urlencode($search_orderday);
775 if ($search_ordermonth) {
776 $param .=
'&search_ordermonth='.urlencode($search_ordermonth);
778 if ($search_orderyear) {
779 $param .=
'&search_orderyear='.urlencode($search_orderyear);
781 if ($search_deliveryday) {
782 $param .=
'&search_deliveryday='.urlencode($search_deliveryday);
784 if ($search_deliverymonth) {
785 $param .=
'&search_deliverymonth='.urlencode($search_deliverymonth);
787 if ($search_deliveryyear) {
788 $param .=
'&search_deliveryyear='.urlencode($search_deliveryyear);
791 $param .=
'&search_id='.urlencode((
string) $search_id);
794 $param .=
'&search_ref='.urlencode($search_ref);
796 if ($search_ref_ext) {
797 $param .=
'&search_ref_ext='.urlencode($search_ref_ext);
799 if ($search_company) {
800 $param .=
'&search_company='.urlencode($search_company);
802 if ($search_ref_customer) {
803 $param .=
'&search_ref_customer='.urlencode($search_ref_customer);
805 if ($search_user > 0) {
806 $param .=
'&search_user='.urlencode((
string) ($search_user));
808 if ($search_sale > 0) {
809 $param .=
'&search_sale='.urlencode((
string) ($search_sale));
811 if ($search_total_ht !=
'') {
812 $param .=
'&search_total_ht='.urlencode($search_total_ht);
814 if ($search_total_vat !=
'') {
815 $param .=
'&search_total_vat='.urlencode($search_total_vat);
817 if ($search_total_ttc !=
'') {
818 $param .=
'&search_total_ttc='.urlencode($search_total_ttc);
820 if ($search_project_ref >= 0) {
821 $param .=
"&search_project_ref=".urlencode($search_project_ref);
823 if ($search_project !=
'') {
824 $param .=
"&search_project=".urlencode($search_project);
826 if ($search_billed !=
'') {
827 $param .=
'&search_billed='.urlencode($search_billed);
830 header(
"Location: ".$_SERVER[
'PHP_SELF'].
'?'.$param);
836 $_GET[
"origin"] = $_POST[
"origin"];
837 $_GET[
"originid"] = $_POST[
"originid"];
838 if (!empty($errors)) {
848if ($action ==
'validate' && $permissiontoadd && $objectclass !==
null) {
849 if (
GETPOST(
'confirm') ==
'yes') {
851 $objecttmp =
new $objectclass($db);
854 foreach ($toselect as $checked) {
855 if ($objecttmp->fetch($checked)) {
856 if ($objecttmp->status == $objecttmp::STATUS_DRAFT) {
857 if (!empty($objecttmp->fk_warehouse)) {
858 $idwarehouse = $objecttmp->fk_warehouse;
862 if ($objecttmp->valid($user, $idwarehouse) > 0) {
863 setEventMessages($langs->trans(
'hasBeenValidated', $objecttmp->ref),
null,
'mesgs');
869 $langs->load(
"errors");
870 setEventMessages($langs->trans(
'ErrorIsNotADraft', $objecttmp->ref),
null,
'errors');
885if ($action ==
'shipped' && $permissiontoadd && $objectclass !==
null) {
886 if (
GETPOST(
'confirm') ==
'yes') {
888 $objecttmp =
new $objectclass($db);
891 foreach ($toselect as $checked) {
892 if ($objecttmp->fetch($checked)) {
893 if ($objecttmp->status == $objecttmp::STATUS_VALIDATED || $objecttmp->status == $objecttmp::STATUS_SHIPMENTONPROCESS || $objecttmp->status == $objecttmp::STATUS_CLOSED) {
894 $result = $objecttmp->cloture($user);
896 setEventMessages($langs->trans(
'StatusOrderDelivered', $objecttmp->ref),
null,
'mesgs');
897 } elseif ($result < 0) {
898 setEventMessages($langs->trans(
'ErrorOrderStatusCantBeSetToDelivered'),
null,
'errors');
902 $langs->load(
"errors");
903 setEventMessages($langs->trans(
'ErrorObjectHasWrongStatus', $objecttmp->ref),
null,
'errors');
920if (!$error && $massaction ===
'setbilled' && $permissiontoclose && $objectclass !==
null) {
923 $objecttmp =
new $objectclass($db);
925 foreach ($toselect as $toselectid) {
926 $result = $objecttmp->fetch($toselectid);
928 $result = $objecttmp->classifyBilled($user, 0);
956$form =
new Form($db);
963$companystatic =
new Societe($db);
964$company_url_list = array();
966$projectstatic =
new Project($db);
970$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
971$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
973$title = $langs->trans(
"Orders");
974$help_url =
"EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes";
979$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,';
980$sql .=
" s.parent as fk_parent,";
981$sql .=
" s2.nom as name2,";
982$sql .=
" typent.code as typent_code,";
983$sql .=
" state.code_departement as state_code, state.nom as state_name,";
984$sql .=
" country.code as country_code,";
985$sql .=
' c.rowid, c.ref, c.ref_ext, c.total_ht, c.total_tva, c.total_ttc, c.ref_client, c.fk_user_author,';
986$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,';
987$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,';
988$sql .=
' c.date_creation as date_creation, c.tms as date_modification, c.date_cloture as date_cloture,';
989$sql .=
' c.fk_cond_reglement,c.deposit_percent,c.fk_mode_reglement,c.fk_shipping_method,';
990$sql .=
' c.fk_input_reason, c.import_key,';
991$sql .=
" c.module_source, c.pos_source,";
992$sql .=
' p.rowid as project_id, p.ref as project_ref, p.title as project_label,';
993$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';
996if (!empty($extrafields->attributes[
$object->table_element][
'label'])) {
997 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $val) {
998 $sql .= ($extrafields->attributes[
$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
1003$parameters = array();
1004$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters, $object, $action);
1005$sql .= $hookmanager->resPrint;
1006$sql = preg_replace(
'/,\s*$/',
'', $sql);
1010$sql .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
1011$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s2 ON s2.rowid = s.parent";
1012$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as country on (country.rowid = s.fk_pays)";
1013$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_typent as typent on (typent.id = s.fk_typent)";
1014$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_departements as state on (state.rowid = s.fk_departement)";
1015$sql .=
', '.MAIN_DB_PREFIX.
'commande as c';
1016if (!empty($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
1017 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"commande_extrafields as ef on (c.rowid = ef.fk_object)";
1019$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"projet as p ON p.rowid = c.fk_projet";
1020$sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'user as u ON c.fk_user_author = u.rowid';
1022$parameters = array();
1023$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters, $object, $action);
1024$sql .= $hookmanager->resPrint;
1026$sql .=
' WHERE c.fk_soc = s.rowid';
1027$sql .=
' AND c.entity IN ('.getEntity(
'commande').
')';
1029 $sql .=
' AND s.rowid = '.((int) $socid);
1032if (empty($user->socid) && !$permissiontoreadallthirdparty) {
1033 $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).
")";
1035 $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)).
"))";
1040if ($search_id > 0) {
1046if ($search_ref_ext) {
1049if ($search_ref_customer) {
1052if ($search_billed !=
'' && $search_billed >= 0) {
1053 $sql .=
' AND c.facture = '.((int) $search_billed);
1055if ($search_status !=
'') {
1056 if ($search_status <= 3 && $search_status >= -1) {
1057 if ($search_status == 1 && !
isModEnabled(
'shipping')) {
1058 $sql .=
' AND c.fk_statut IN (1,2)';
1060 $sql .=
' AND c.fk_statut = '.((int) $search_status);
1063 if ($search_status == -2) {
1065 $sql .=
" AND (c.fk_statut IN (1,2))";
1067 if ($search_status == -3) {
1070 $sql .=
' AND (c.fk_statut IN (1,2,3))';
1073if ($search_option ==
'late') {
1076 $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).
"'))";
1078 $sql .=
" AND c.date_commande < '".$db->idate(
dol_now() - $conf->order->client->warning_delay).
"'";
1081if ($search_datecloture_start) {
1082 $sql .=
" AND c.date_cloture >= '".$db->idate($search_datecloture_start).
"'";
1084if ($search_datecloture_end) {
1085 $sql .=
" AND c.date_cloture <= '".$db->idate($search_datecloture_end).
"'";
1087if ($search_dateorder_start) {
1088 $sql .=
" AND c.date_commande >= '".$db->idate($search_dateorder_start).
"'";
1090if ($search_dateorder_end) {
1091 $sql .=
" AND c.date_commande <= '".$db->idate($search_dateorder_end).
"'";
1093if ($search_datedelivery_start) {
1094 $sql .=
" AND c.date_livraison >= '".$db->idate($search_datedelivery_start).
"'";
1096if ($search_datedelivery_end) {
1097 $sql .=
" AND c.date_livraison <= '".$db->idate($search_datedelivery_end).
"'";
1108if ($search_country) {
1109 $sql .=
" AND s.fk_pays IN (".$db->sanitize($search_country).
')';
1111if ($search_type_thirdparty && $search_type_thirdparty !=
'-1') {
1112 $sql .=
" AND s.fk_typent IN (".$db->sanitize($search_type_thirdparty).
')';
1114if (empty($arrayfields[
's.name_alias'][
'checked']) && $search_company) {
1115 $sql .=
natural_search(array(
"s.nom",
"s.name_alias"), $search_company);
1117 if ($search_company) {
1120 if ($search_company_alias) {
1124if ($search_parent_name) {
1127if ($search_total_ht !=
'') {
1130if ($search_total_vat !=
'') {
1133if ($search_total_ttc !=
'') {
1136if ($search_warehouse !=
'' && $search_warehouse > 0) {
1139if ($search_note_public !=
'') {
1142if ($search_note_private !=
'') {
1145if ($search_multicurrency_code !=
'') {
1146 $sql .=
" AND c.multicurrency_code = '".$db->escape($search_multicurrency_code).
"'";
1148if ($search_multicurrency_tx !=
'') {
1149 $sql .=
natural_search(
'c.multicurrency_tx', $search_multicurrency_tx, 1);
1151if ($search_multicurrency_montant_ht !=
'') {
1152 $sql .=
natural_search(
'c.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
1154if ($search_multicurrency_montant_vat !=
'') {
1155 $sql .=
natural_search(
'c.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
1157if ($search_multicurrency_montant_ttc !=
'') {
1158 $sql .=
natural_search(
'c.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
1161 $sql .=
natural_search(array(
"u.login",
"u.firstname",
"u.lastname"), $search_login);
1163if ($search_project_ref !=
'') {
1166if ($search_project !=
'') {
1169if ($search_fk_cond_reglement > 0) {
1170 $sql .=
" AND c.fk_cond_reglement = ".((int) $search_fk_cond_reglement);
1172if ($search_fk_shipping_method > 0) {
1173 $sql .=
" AND c.fk_shipping_method = ".((int) $search_fk_shipping_method);
1175if ($search_fk_mode_reglement > 0) {
1176 $sql .=
" AND c.fk_mode_reglement = ".((int) $search_fk_mode_reglement);
1178if ($search_fk_input_reason > 0) {
1179 $sql .=
" AND c.fk_input_reason = ".((int) $search_fk_input_reason);
1181if ($search_module_source) {
1182 $sql .=
natural_search(
"c.module_source", $search_module_source);
1184if ($search_pos_source) {
1187if ($search_import_key) {
1191if ($search_user > 0) {
1192 $sql .=
" AND EXISTS (";
1193 $sql .=
" SELECT ec.fk_c_type_contact, ec.element_id, ec.fk_socpeople";
1194 $sql .=
" FROM ".MAIN_DB_PREFIX.
"element_contact as ec";
1195 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"c_type_contact as tc";
1196 $sql .=
" ON ec.fk_c_type_contact = tc.rowid AND tc.element = 'commande' AND tc.source = 'internal'";
1197 $sql .=
" WHERE ec.element_id = c.rowid AND ec.fk_socpeople = ".((int) $search_user).
")";
1200if ($search_sale && $search_sale !=
'-1') {
1201 if ($search_sale == -2) {
1202 $sql .=
" AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = c.fk_soc)";
1203 } elseif ($search_sale > 0) {
1204 $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).
")";
1209if (!empty($searchCategoryOrderList)) {
1210 $searchCategoryOrderSqlList = array();
1211 $listofcategoryid =
'';
1212 foreach ($searchCategoryOrderList as $searchCategoryOrder) {
1213 if (intval($searchCategoryOrder) == -2) {
1214 $searchCategoryOrderSqlList[] =
"NOT EXISTS (SELECT ck.fk_order FROM ".MAIN_DB_PREFIX.
"categorie_order as ck WHERE c.rowid = ck.fk_order)";
1215 } elseif (intval($searchCategoryOrder) > 0) {
1216 if ($searchCategoryOrderOperator == 0) {
1217 $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).
")";
1219 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryOrder);
1223 if ($listofcategoryid) {
1224 $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).
"))";
1226 if ($searchCategoryOrderOperator == 1) {
1227 if (!empty($searchCategoryOrderSqlList)) {
1228 $sql .=
" AND (".implode(
' OR ', $searchCategoryOrderSqlList).
")";
1231 if (!empty($searchCategoryOrderSqlList)) {
1232 $sql .=
" AND (".implode(
' AND ', $searchCategoryOrderSqlList).
")";
1238$searchCategoryCustomerOperator =
GETPOSTINT(
'search_category_customer_operator');
1239$searchCategoryCustomerList = array($search_categ_cus);
1240if (!empty($searchCategoryCustomerList)) {
1241 $searchCategoryCustomerSqlList = array();
1242 $listofcategoryid =
'';
1243 foreach ($searchCategoryCustomerList as $searchCategoryCustomer) {
1244 if (intval($searchCategoryCustomer) == -2) {
1245 $searchCategoryCustomerSqlList[] =
"NOT EXISTS (SELECT cs.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as cs WHERE s.rowid = cs.fk_soc)";
1246 } elseif (intval($searchCategoryCustomer) > 0) {
1247 if ($searchCategoryCustomerOperator == 0) {
1248 $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).
")";
1250 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryCustomer);
1254 if ($listofcategoryid) {
1255 $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).
"))";
1257 if ($searchCategoryCustomerOperator == 1) {
1258 if (!empty($searchCategoryCustomerSqlList)) {
1259 $sql .=
" AND (".implode(
' OR ', $searchCategoryCustomerSqlList).
")";
1262 if (!empty($searchCategoryCustomerSqlList)) {
1263 $sql .=
" AND (".implode(
' AND ', $searchCategoryCustomerSqlList).
")";
1268$searchCategoryProductOperator =
GETPOSTINT(
'search_category_product_operator');
1269$searchCategoryProductList = array($search_product_category);
1270if (!empty($searchCategoryProductList)) {
1271 $searchCategoryProductSqlList = array();
1272 $listofcategoryid =
'';
1273 foreach ($searchCategoryProductList as $searchCategoryProduct) {
1274 if (intval($searchCategoryProduct) == -2) {
1275 $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)";
1276 } elseif (intval($searchCategoryProduct) > 0) {
1277 if ($searchCategoryProductOperator == 0) {
1278 $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).
")";
1280 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryProduct);
1284 if ($listofcategoryid) {
1285 $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).
"))";
1287 if ($searchCategoryProductOperator == 1) {
1288 if (!empty($searchCategoryProductSqlList)) {
1289 $sql .=
" AND (".implode(
' OR ', $searchCategoryProductSqlList).
")";
1292 if (!empty($searchCategoryProductSqlList)) {
1293 $sql .=
" AND (".implode(
' AND ', $searchCategoryProductSqlList).
")";
1298include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
1300$parameters = array();
1301$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action);
1302$sql .= $hookmanager->resPrint;
1307 $fieldstosearchallwithoutpd = array();
1308 $fieldstosearchallwithpd = array();
1309 foreach ($fieldstosearchall as $key => $val) {
1310 if (!preg_match(
'/^pd\./', $key)) {
1311 $fieldstosearchallwithoutpd[$key] = $val;
1313 $fieldstosearchallwithpd[$key] = $val;
1317 if (count($fieldstosearchallwithpd) > 0) {
1318 $sqltoadd .=
" OR EXISTS (SELECT pd.rowid FROM ".MAIN_DB_PREFIX.
"commandedet as pd WHERE pd.fk_commande = c.rowid";
1319 $sqltoadd .=
natural_search(array_keys($fieldstosearchallwithpd),
'__KEYTOSEARCH__');
1323 $sql .=
natural_search(array_keys($fieldstosearchallwithoutpd), $search_all, 0, 0, $sqltoadd);
1327$parameters = array();
1328$reshook = $hookmanager->executeHooks(
'printFieldListHaving', $parameters, $object, $action);
1329if (empty($reshook)) {
1330 $sql .= empty($hookmanager->resPrint) ?
"" :
" HAVING 1=1 ".$hookmanager->resPrint;
1332 $sql = $hookmanager->resPrint;
1337$nbtotalofrecords =
'';
1340 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
1341 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
1342 $resql = $db->query($sqlforcount);
1344 $objforcount = $db->fetch_object($resql);
1345 $nbtotalofrecords = $objforcount->nbtotalofrecords;
1350 if (($page * $limit) > (
int) $nbtotalofrecords) {
1358$sql .= $db->order($sortfield, $sortorder);
1360 $sql .= $db->plimit($limit + 1, $offset);
1364$resql = $db->query($sql);
1372 $soc->fetch($socid);
1373 $title = $langs->trans(
'CustomersOrders').
' - '.$soc->name;
1374 if (empty($search_company)) {
1375 $search_company = $soc->name;
1378 $title = $langs->trans(
'CustomersOrders');
1380if (strval($search_status) ==
'0') {
1381 $title .=
' - '.$langs->trans(
'StatusOrderDraftShort');
1383if ($search_status == 1) {
1384 $title .=
' - '.$langs->trans(
'StatusOrderValidatedShort');
1386if ($search_status == 2) {
1387 $title .=
' - '.$langs->trans(
'StatusOrderSentShort');
1389if ($search_status == 3) {
1390 $title .=
' - '.$langs->trans(
'StatusOrderToBillShort');
1392if ($search_status == -1) {
1393 $title .=
' - '.$langs->trans(
'StatusOrderCanceledShort');
1395if ($search_status == -2) {
1396 $title .=
' - '.$langs->trans(
'StatusOrderToProcessShort');
1398if ($search_status == -3) {
1399 $title .=
' - '.$langs->trans(
'StatusOrderValidated').
', '.(!
isModEnabled(
'shipping') ?
'' : $langs->trans(
"StatusOrderSent").
', ').$langs->trans(
'StatusOrderToBill');
1401if ($search_status == -4) {
1402 $title .=
' - '.$langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort");
1405$num = $db->num_rows($resql);
1407$arrayofselected = is_array($toselect) ? $toselect : array();
1409if ($num == 1 &&
getDolGlobalString(
'MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all) {
1410 $obj = $db->fetch_object($resql);
1412 header(
"Location: ".DOL_URL_ROOT.
'/commande/card.php?id='.
$id);
1419llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'bodyforlist mod-order page-list');
1421$arrayofselected = is_array($toselect) ? $toselect : array();
1425 $param .=
'&mode='.urlencode($mode);
1427if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
1428 $param .=
'&contextpage='.urlencode($contextpage);
1430if ($limit > 0 && $limit != $conf->liste_limit) {
1431 $param .=
'&limit='.((int) $limit);
1433if ($optioncss !=
'') {
1434 $param .=
'&optioncss='.urlencode($optioncss);
1437 $param .=
'&show_files='.urlencode((
string) ($show_files));
1440 $param .=
'&search_all='.urlencode($search_all);
1443 $param .=
'&socid='.((int) $socid);
1445if ($search_status !=
'') {
1446 $param .=
'&search_status='.urlencode($search_status);
1448if ($search_option) {
1449 $param .=
"&search_option=".urlencode($search_option);
1451if ($search_datecloture_start) {
1452 $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');
1454if ($search_datecloture_end) {
1455 $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');
1457if ($search_dateorder_start) {
1458 $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');
1460if ($search_dateorder_end) {
1461 $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');
1463if ($search_datedelivery_start) {
1464 $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');
1466if ($search_datedelivery_end) {
1467 $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');
1470 $param .=
'&search_id='.urlencode((
string) $search_id);
1473 $param .=
'&search_ref='.urlencode($search_ref);
1475if ($search_ref_ext) {
1476 $param .=
'&search_ref_ext='.urlencode($search_ref_ext);
1478if ($search_company) {
1479 $param .=
'&search_company='.urlencode($search_company);
1481if ($search_company_alias) {
1482 $param .=
'&search_company_alias='.urlencode($search_company_alias);
1484if ($search_parent_name !=
'') {
1485 $param .=
'&search_parent_name='.urlencode($search_parent_name);
1487if ($search_ref_customer) {
1488 $param .=
'&search_ref_customer='.urlencode($search_ref_customer);
1490if ($search_user > 0) {
1491 $param .=
'&search_user='.urlencode((
string) ($search_user));
1493if ($search_sale > 0) {
1494 $param .=
'&search_sale='.urlencode((
string) ($search_sale));
1496if ($search_total_ht !=
'') {
1497 $param .=
'&search_total_ht='.urlencode($search_total_ht);
1499if ($search_total_vat !=
'') {
1500 $param .=
'&search_total_vat='.urlencode($search_total_vat);
1502if ($search_total_ttc !=
'') {
1503 $param .=
'&search_total_ttc='.urlencode($search_total_ttc);
1505if ($search_warehouse !=
'') {
1506 $param .=
'&search_warehouse='.urlencode((
string) ($search_warehouse));
1509 $param .=
'&search_login='.urlencode($search_login);
1511if ($search_multicurrency_code !=
'') {
1512 $param .=
'&search_multicurrency_code='.urlencode($search_multicurrency_code);
1514if ($search_multicurrency_tx !=
'') {
1515 $param .=
'&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
1517if ($search_multicurrency_montant_ht !=
'') {
1518 $param .=
'&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
1520if ($search_multicurrency_montant_vat !=
'') {
1521 $param .=
'&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
1523if ($search_multicurrency_montant_ttc !=
'') {
1524 $param .=
'&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
1526if ($search_project_ref >= 0) {
1527 $param .=
"&search_project_ref=".urlencode($search_project_ref);
1529if ($search_project !=
'') {
1530 $param .=
"&search_project=".urlencode($search_project);
1532if ($search_town !=
'') {
1533 $param .=
'&search_town='.urlencode($search_town);
1535if ($search_zip !=
'') {
1536 $param .=
'&search_zip='.urlencode($search_zip);
1538if ($search_state !=
'') {
1539 $param .=
'&search_state='.urlencode($search_state);
1541if ($search_country !=
'') {
1542 $param .=
'&search_country='.urlencode((
string) ($search_country));
1544if ($search_type_thirdparty && $search_type_thirdparty !=
'-1') {
1545 $param .=
'&search_type_thirdparty='.urlencode((
string) ($search_type_thirdparty));
1547if ($searchCategoryOrderOperator == 1) {
1548 $param .=
"&search_category_order_operator=".urlencode((
string) ($searchCategoryOrderOperator));
1550foreach ($searchCategoryOrderList as $searchCategoryOrder) {
1551 $param .=
"&search_category_order_list[]=".urlencode($searchCategoryOrder);
1553if ($search_product_category !=
'') {
1554 $param .=
'&search_product_category='.urlencode((
string) ($search_product_category));
1556if (($search_categ_cus > 0) || ($search_categ_cus == -2)) {
1557 $param .=
'&search_categ_cus='.urlencode((
string) ($search_categ_cus));
1559if ($search_billed !=
'') {
1560 $param .=
'&search_billed='.urlencode($search_billed);
1562if ($search_fk_cond_reglement > 0) {
1563 $param .=
'&search_fk_cond_reglement='.urlencode((
string) ($search_fk_cond_reglement));
1565if ($search_fk_shipping_method > 0) {
1566 $param .=
'&search_fk_shipping_method='.urlencode((
string) ($search_fk_shipping_method));
1568if ($search_fk_mode_reglement > 0) {
1569 $param .=
'&search_fk_mode_reglement='.urlencode((
string) ($search_fk_mode_reglement));
1571if ($search_fk_input_reason > 0) {
1572 $param .=
'&search_fk_input_reason='.urlencode((
string) ($search_fk_input_reason));
1574if ($search_module_source) {
1575 $param .=
'&search_module_source='.urlencode($search_module_source);
1577if ($search_pos_source) {
1578 $param .=
'&search_pos_source='.urlencode($search_pos_source);
1580if ($search_import_key !=
'') {
1581 $param .=
'&search_import_key='.urlencode($search_import_key);
1585include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
1588$parameters = array();
1589$reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters, $object, $action);
1590$param .= $hookmanager->resPrint;
1593$arrayofmassactions = array(
1594 'generate_doc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"ReGeneratePDF"),
1595 'builddoc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"PDFMerge"),
1597if (
isModEnabled(
'category') && $user->hasRight(
"commande",
"lire")) {
1598 $arrayofmassactions[
'preaffecttag'] =
img_picto(
'',
'category',
'class="pictofixedwidth"').$langs->trans(
"AffectTag");
1600if ($permissiontovalidate) {
1601 $arrayofmassactions[
'prevalidate'] =
img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"Validate");
1603if ($permissiontoclose) {
1604 $arrayofmassactions[
'preshipped'] =
img_picto(
'',
'dolly',
'class="pictofixedwidth"').$langs->trans(
"ClassifyShipped");
1606if (
isModEnabled(
'invoice') && $user->hasRight(
"facture",
"creer")) {
1607 $arrayofmassactions[
'createbills'] =
img_picto(
'',
'bill',
'class="pictofixedwidth"').$langs->trans(
"CreateInvoiceForThisCustomer");
1609if ($permissiontoclose) {
1610 $arrayofmassactions[
'setbilled'] =
img_picto(
'',
'bill',
'class="pictofixedwidth"').$langs->trans(
"ClassifyBilled");
1612if ($permissiontocancel) {
1613 $arrayofmassactions[
'cancelorders'] =
img_picto(
'',
'close_title',
'class="pictofixedwidth"').$langs->trans(
"CancelOrder");
1615if (!empty($permissiontodelete)) {
1616 $arrayofmassactions[
'predelete'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
1618if ($permissiontosendbymail) {
1619 $arrayofmassactions[
'presend'] =
img_picto(
'',
'email',
'class="pictofixedwidth"').$langs->trans(
"SendByMail");
1621if (in_array($massaction, array(
'presend',
'predelete',
'createbills'))) {
1622 $arrayofmassactions = array();
1624$massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
1626$url = DOL_URL_ROOT.
'/commande/card.php?action=create';
1627if (!empty($socid)) {
1628 $url .=
'&socid='.$socid;
1631$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'));
1632$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'));
1634$newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewOrder'),
'',
'fa fa-plus-circle', $url,
'', (
int) (($contextpage ==
'orderlist' || $contextpage ==
'billableorders') && $permissiontoadd));
1637print
'<form method="POST" id="searchFormList" name="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">'.
"\n";
1638if ($optioncss !=
'') {
1639 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
1641print
'<input type="hidden" name="token" value="'.newToken().
'">';
1642print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
1643print
'<input type="hidden" name="action" value="list">';
1644print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
1645print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
1646print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
1647print
'<input type="hidden" name="search_status" value="'.$search_status.
'">';
1648print
'<input type="hidden" name="socid" value="'.$socid.
'">';
1649print
'<input type="hidden" name="page_y" value="">';
1650print
'<input type="hidden" name="mode" value="'.$mode.
'">';
1653print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'order', 0, $newcardbutton,
'', $limit, 0, 0, 1);
1655$topicmail =
"SendOrderRef";
1656$modelmail =
"order_send";
1658$trackid =
'ord'.$object->id;
1659include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
1661if ($massaction ==
'prevalidate') {
1662 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassValidation"), $langs->trans(
"ConfirmMassValidationQuestion"),
"validate",
null,
'', 0, 200, 500, 1);
1664if ($massaction ==
'preshipped') {
1665 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"CloseOrder"), $langs->trans(
"ConfirmCloseOrder"),
"shipped",
null,
'', 0, 200, 500, 1);
1668if ($massaction ==
'createbills') {
1669 print
'<input type="hidden" name="massaction" value="confirm_createbills">';
1671 print
'<table class="noborder centpercent">';
1674 print $langs->trans(
'DateInvoice');
1677 print $form->selectDate(
'',
'', 0, 0, 0,
'', 1, 1);
1682 print $langs->trans(
'CreateOneBillByThird');
1685 print $form->selectyesno(
'createbills_onebythird',
getDolGlobalString(
'MAIN_ORDERLIST_CREATEBILLS_ONEBYTHIRD',
'no'), 1);
1690 print $langs->trans(
'ValidateInvoices');
1694 print $form->selectyesno(
'validate_invoices', 0, 1, 1);
1695 $langs->load(
"errors");
1696 print
' ('.$langs->trans(
"WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal").
')';
1698 print $form->selectyesno(
'validate_invoices', 0, 1);
1700 if (!empty($conf->workflow->enabled) &&
getDolGlobalString(
'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER')) {
1701 print
' <span class="opacitymedium">'.$langs->trans(
"IfValidateInvoiceIsNoOrderStayUnbilled").
'</span>';
1703 print
' <span class="opacitymedium">'.$langs->trans(
"OptionToSetOrderBilledNotEnabled").
'</span>';
1709 print
'<div class="center">';
1710 print
'<input type="submit" class="button" id="createbills" name="createbills" value="'.$langs->trans(
'CreateInvoiceForThisCustomer').
'"> ';
1711 print
'<input type="submit" class="button button-cancel" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
1718 foreach ($fieldstosearchall as $key => $val) {
1719 $fieldstosearchall[$key] = $langs->trans($val);
1720 $setupstring .= $key.
"=".$val.
";";
1722 print
'<!-- Search done like if MYOBJECT_QUICKSEARCH_ON_FIELDS = '.$setupstring.
' -->'.
"\n";
1723 print
'<div class="divsearchfieldfilter">'.$langs->trans(
"FilterOnInto", $search_all).implode(
', ', $fieldstosearchall).
'</div>';
1728if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'read')) {
1730 $moreforfilter .= $formcategory->getFilterBox(Categorie::TYPE_ORDER, $searchCategoryOrderList,
'minwidth300', $searchCategoryOrderOperator ? $searchCategoryOrderOperator : 0);
1734if ($user->hasRight(
"user",
"user",
"lire")) {
1735 $langs->load(
"commercial");
1736 $moreforfilter .=
'<div class="divsearchfield">';
1737 $tmptitle = $langs->trans(
'ThirdPartiesOfSaleRepresentative');
1738 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$formother->select_salesrepresentatives($search_sale,
'search_sale', $user, 0, $tmptitle,
'maxwidth250 widthcentpercentminusx');
1739 $moreforfilter .=
'</div>';
1742if ($user->hasRight(
"user",
"user",
"lire")) {
1743 $moreforfilter .=
'<div class="divsearchfield">';
1744 $tmptitle = $langs->trans(
'LinkedToSpecificUsers');
1745 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$form->select_dolusers($search_user,
'search_user', $tmptitle,
null, 0,
'',
'',
'0', 0, 0,
'', 0,
'',
'maxwidth250 widthcentpercentminusx');
1746 $moreforfilter .=
'</div>';
1750if (
isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire") && ($user->hasRight(
"produit",
"lire") || $user->hasRight(
"service",
"lire"))) {
1751 include_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1752 $moreforfilter .=
'<div class="divsearchfield">';
1753 $tmptitle = $langs->trans(
'IncludingProductWithTag');
1754 $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT,
'',
'parent', 0, array(), 1);
1755 $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);
1756 $moreforfilter .=
'</div>';
1759if (
isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire")) {
1760 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1761 $moreforfilter .=
'<div class="divsearchfield">';
1762 $tmptitle = $langs->trans(
'CustomersProspectsCategoriesShort');
1763 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$formother->select_categories(
'customer', $search_categ_cus,
'search_categ_cus', 1, $tmptitle,
'maxwidth300 widthcentpercentminusx');
1764 $moreforfilter .=
'</div>';
1768 require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
1770 $moreforfilter .=
'<div class="divsearchfield">';
1771 $tmptitle = $langs->trans(
'Warehouse');
1772 $moreforfilter .=
img_picto($tmptitle,
'stock',
'class="pictofixedwidth"').$formproduct->selectWarehouses($search_warehouse,
'search_warehouse',
'', 1, 0, 0, $tmptitle, 0, 0, array(),
'maxwidth250 widthcentpercentminusx');
1773 $moreforfilter .=
'</div>';
1776$parameters = array();
1777$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1778if (empty($reshook)) {
1779 $moreforfilter .= $hookmanager->resPrint;
1781 $moreforfilter = $hookmanager->resPrint;
1784if (!empty($moreforfilter)) {
1785 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1786 print $moreforfilter;
1790$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
1791$htmlofselectarray = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
1792$selectedfields = ($mode !=
'kanban' ? $htmlofselectarray :
'');
1793$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons(
'checkforselect', 1) :
'');
1796 $selectedfields .=
'<script>';
1797 $selectedfields .=
' $(document).ready(function() {';
1798 $selectedfields .=
' console.log("Autoclick on checkforselects");';
1799 $selectedfields .=
' $("#checkforselects").click();';
1800 $selectedfields .=
' $("#massaction").val("createbills").change();';
1801 $selectedfields .=
' });';
1802 $selectedfields .=
'</script>';
1805print
'<div class="div-table-responsive">';
1806print
'<table class="tagtable nobottomiftotal liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
1810print
'<tr class="liste_titre_filter">';
1813 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
1814 $searchpicto = $form->showFilterButtons(
'left');
1820if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
1821 print
'<td class="liste_titre">';
1822 print
'<input class="flat" size="6" type="text" name="search_id" value="'.dol_escape_htmltag($search_id).
'">';
1827if (!empty($arrayfields[
'c.ref'][
'checked'])) {
1828 print
'<td class="liste_titre">';
1829 print
'<input class="flat maxwidth50imp" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
1833if (!empty($arrayfields[
'c.ref_ext'][
'checked'])) {
1834 print
'<td class="liste_titre">';
1835 print
'<input class="flat maxwidth50imp" type="text" name="search_ref_ext" value="'.dol_escape_htmltag($search_ref_ext).
'">';
1839if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
1840 print
'<td class="liste_titre" align="left">';
1841 print
'<input class="flat" type="text" size="6" name="search_ref_customer" value="'.dol_escape_htmltag($search_ref_customer).
'">';
1845if (!empty($arrayfields[
'p.ref'][
'checked'])) {
1846 print
'<td class="liste_titre"><input type="text" class="flat" size="6" name="search_project_ref" value="'.dol_escape_htmltag($search_project_ref).
'"></td>';
1849if (!empty($arrayfields[
'p.title'][
'checked'])) {
1850 print
'<td class="liste_titre"><input type="text" class="flat" size="6" name="search_project" value="'.dol_escape_htmltag($search_project).
'"></td>';
1853if (!empty($arrayfields[
's.nom'][
'checked'])) {
1854 print
'<td class="liste_titre">';
1855 print
'<input class="flat maxwidth75imp" type="text" name="search_company" value="'.dol_escape_htmltag((
string) $search_company).
'"'.(!empty($user->socid) ?
" disabled" :
"").
'>';
1859if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
1860 print
'<td class="liste_titre">';
1861 print
'<input class="flat maxwidth75imp" type="text" name="search_company_alias" value="'.dol_escape_htmltag($search_company_alias).
'">';
1865if (!empty($arrayfields[
's2.nom'][
'checked'])) {
1866 print
'<td class="liste_titre">';
1867 print
'<input class="flat maxwidth100" type="text" name="search_parent_name" value="'.dol_escape_htmltag($search_parent_name).
'">';
1871if (!empty($arrayfields[
's.town'][
'checked'])) {
1872 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).
'"></td>';
1875if (!empty($arrayfields[
's.zip'][
'checked'])) {
1876 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_zip" value="'.dol_escape_htmltag($search_zip).
'"></td>';
1879if (!empty($arrayfields[
'state.nom'][
'checked'])) {
1880 print
'<td class="liste_titre">';
1881 print
'<input class="flat maxwidth50imp" type="text" name="search_state" value="'.dol_escape_htmltag($search_state).
'">';
1885if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
1886 print
'<td class="liste_titre" align="center">';
1887 print $form->select_country($search_country,
'search_country',
'', 0,
'minwidth100imp maxwidth100');
1891if (!empty($arrayfields[
'typent.code'][
'checked'])) {
1892 print
'<td class="liste_titre maxwidthonsmartphone center">';
1893 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);
1897if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
1898 print
'<td class="liste_titre center">';
1899 print
'<div class="nowrapfordate">';
1900 print $form->selectDate($search_dateorder_start ? $search_dateorder_start : -1,
'search_dateorder_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1902 print
'<div class="nowrapfordate">';
1903 print $form->selectDate($search_dateorder_end ? $search_dateorder_end : -1,
'search_dateorder_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1907if (!empty($arrayfields[
'c.delivery_date'][
'checked'])) {
1908 print
'<td class="liste_titre center">';
1909 print
'<div class="nowrapfordate">';
1910 print $form->selectDate($search_datedelivery_start ? $search_datedelivery_start : -1,
'search_datedelivery_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1912 print
'<div class="nowrapfordate">';
1913 print $form->selectDate($search_datedelivery_end ? $search_datedelivery_end : -1,
'search_datedelivery_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1918if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
1919 print
'<td class="liste_titre">';
1920 $form->selectShippingMethod($search_fk_shipping_method,
'search_fk_shipping_method',
'', 1,
'', 1);
1924if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
1925 print
'<td class="liste_titre">';
1926 print $form->getSelectConditionsPaiements((
int) $search_fk_cond_reglement,
'search_fk_cond_reglement', 1, 1, 1);
1930if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
1931 print
'<td class="liste_titre">';
1932 print $form->select_types_paiements($search_fk_mode_reglement,
'search_fk_mode_reglement',
'', 0, 1, 1, 0, -1,
'', 1);
1936if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
1937 print
'<td class="liste_titre">';
1938 $form->selectInputReason($search_fk_input_reason,
'search_fk_input_reason',
'', 1,
'', 1);
1942if (!empty($arrayfields[
'c.module_source'][
'checked'])) {
1943 print
'<td class="liste_titre">';
1944 print
'<input class="flat maxwidth75" type="text" name="search_module_source" value="'.dol_escape_htmltag($search_module_source).
'">';
1948if (!empty($arrayfields[
'c.pos_source'][
'checked'])) {
1949 print
'<td class="liste_titre">';
1950 print
'<input class="flat maxwidth50" type="text" name="search_pos_source" value="'.dol_escape_htmltag($search_pos_source).
'">';
1954if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
1955 print
'<td class="liste_titre right">';
1956 print
'<input class="flat" type="text" size="4" name="search_total_ht" value="'.dol_escape_htmltag($search_total_ht).
'">';
1960if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
1961 print
'<td class="liste_titre right">';
1962 print
'<input class="flat" type="text" size="4" name="search_total_vat" value="'.dol_escape_htmltag($search_total_vat).
'">';
1966if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
1967 print
'<td class="liste_titre right">';
1968 print
'<input class="flat" type="text" size="5" name="search_total_ttc" value="'.$search_total_ttc.
'">';
1972if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
1973 print
'<td class="liste_titre">';
1974 print $form->selectMultiCurrency($search_multicurrency_code,
'search_multicurrency_code', 1);
1978if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
1979 print
'<td class="liste_titre">';
1980 print
'<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).
'">';
1984if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
1985 print
'<td class="liste_titre right">';
1986 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).
'">';
1990if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
1991 print
'<td class="liste_titre right">';
1992 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).
'">';
1996if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
1997 print
'<td class="liste_titre right">';
1998 print
'<input class="flat width75" type="text" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).
'">';
2002if (!empty($arrayfields[
'u.login'][
'checked'])) {
2003 print
'<td class="liste_titre">';
2004 print
'<input class="flat width75" type="text" name="search_login" value="'.dol_escape_htmltag($search_login).
'">';
2008if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2009 print
'<td class="liste_titre"></td>';
2011if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2012 print
'<td class="liste_titre right">';
2015if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2016 print
'<td class="liste_titre right">';
2019if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2020 print
'<td class="liste_titre right">';
2023if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2024 print
'<td class="liste_titre right">';
2029if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2030 print
'<td class="liste_titre">';
2034if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2035 print
'<td class="liste_titre">';
2039if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2040 print
'<td class="liste_titre center">';
2041 print
'<div class="nowrapfordate">';
2042 print $form->selectDate($search_datecloture_start ? $search_datecloture_start : -1,
'search_datecloture_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
2044 print
'<div class="nowrapfordate">';
2045 print $form->selectDate($search_datecloture_end ? $search_datecloture_end : -1,
'search_datecloture_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
2050if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2051 print
'<td class="liste_titre">';
2052 print
'<input class="flat width75" type="text" name="search_note_public" value="'.dolPrintHTMLForAttribute($search_note_public).
'">';
2056if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
2057 print
'<td class="liste_titre">';
2058 print
'<input class="flat width75" type="text" name="search_note_private" value="'.dolPrintHTMLForAttribute($search_note_private).
'">';
2062if (!empty($arrayfields[
'shippable'][
'checked'])) {
2063 print
'<td class="liste_titre maxwidthonsmartphone" align="center">';
2066 print
'<input type="checkbox" name="show_shippable_command" value="1"'.($show_shippable_command ?
' checked' :
'').
'>';
2067 print $langs->trans(
'ShowShippableStatus');
2069 $show_shippable_command = 1;
2075include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
2078$parameters = array(
'arrayfields' => $arrayfields);
2079$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action);
2080print $hookmanager->resPrint;
2083if (!empty($arrayfields[
'c.facture'][
'checked'])) {
2084 print
'<td class="liste_titre maxwidthonsmartphone center">';
2085 print $form->selectyesno(
'search_billed', $search_billed, 1, 0, 1, 1);
2090if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
2091 print
'<td class="liste_titre maxwidthonsmartphone center">';
2092 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
2097if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
2098 print
'<td class="liste_titre center parentonrightofpage">';
2099 $liststatus = array(
2103 -2 => $langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort"),
2104 -3 => $langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort").
'+'.$langs->trans(
"StatusOrderDelivered"),
2109 print $form->selectarray(
'search_status', $liststatus, $search_status, -5, 0, 0,
'', 0, 0, 0,
'',
'search_status width100 onrightofpage', 1);
2114 print
'<td class="liste_titre center maxwidthsearch">';
2115 $searchpicto = $form->showFilterButtons();
2134print
'<tr class="liste_titre">';
2138 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'maxwidthsearch center ');
2141if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
2142 print_liste_field_titre($arrayfields[
'c.rowid'][
'label'], $_SERVER[
"PHP_SELF"],
'c.rowid',
'', $param,
'', $sortfield, $sortorder,
'center ');
2145if (!empty($arrayfields[
'c.ref'][
'checked'])) {
2146 print_liste_field_titre($arrayfields[
'c.ref'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref',
'', $param,
'', $sortfield, $sortorder);
2149if (!empty($arrayfields[
'c.ref_ext'][
'checked'])) {
2150 print_liste_field_titre($arrayfields[
'c.ref_ext'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref_ext',
'', $param,
'', $sortfield, $sortorder);
2153if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
2154 print_liste_field_titre($arrayfields[
'c.ref_client'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref_client',
'', $param,
'', $sortfield, $sortorder);
2157if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2158 print_liste_field_titre($arrayfields[
'p.ref'][
'label'], $_SERVER[
"PHP_SELF"],
"p.ref",
"", $param,
'', $sortfield, $sortorder);
2161if (!empty($arrayfields[
'p.title'][
'checked'])) {
2162 print_liste_field_titre($arrayfields[
'p.title'][
'label'], $_SERVER[
"PHP_SELF"],
"p.title",
"", $param,
'', $sortfield, $sortorder);
2165if (!empty($arrayfields[
's.nom'][
'checked'])) {
2166 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
"PHP_SELF"],
's.nom',
'', $param,
'', $sortfield, $sortorder);
2169if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2171 print_liste_field_titre($arrayfields[
's.name_alias'][
'label'], $_SERVER[
"PHP_SELF"],
's.name_alias',
'', $param,
'', $sortfield, $sortorder);
2174if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2175 print_liste_field_titre($arrayfields[
's2.nom'][
'label'], $_SERVER[
'PHP_SELF'],
's2.nom',
'', $param,
'', $sortfield, $sortorder);
2178if (!empty($arrayfields[
's.town'][
'checked'])) {
2179 print_liste_field_titre($arrayfields[
's.town'][
'label'], $_SERVER[
"PHP_SELF"],
's.town',
'', $param,
'', $sortfield, $sortorder);
2182if (!empty($arrayfields[
's.zip'][
'checked'])) {
2183 print_liste_field_titre($arrayfields[
's.zip'][
'label'], $_SERVER[
"PHP_SELF"],
's.zip',
'', $param,
'', $sortfield, $sortorder);
2186if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2187 print_liste_field_titre($arrayfields[
'state.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"state.nom",
"", $param,
'', $sortfield, $sortorder);
2190if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2191 print_liste_field_titre($arrayfields[
'country.code_iso'][
'label'], $_SERVER[
"PHP_SELF"],
"country.code_iso",
"", $param,
'', $sortfield, $sortorder,
'center ');
2194if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2195 print_liste_field_titre($arrayfields[
'typent.code'][
'label'], $_SERVER[
"PHP_SELF"],
"typent.code",
"", $param,
'', $sortfield, $sortorder,
'center ');
2198if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
2199 print_liste_field_titre($arrayfields[
'c.date_commande'][
'label'], $_SERVER[
"PHP_SELF"],
'c.date_commande',
'', $param,
'', $sortfield, $sortorder,
'center ');
2202if (!empty($arrayfields[
'c.delivery_date'][
'checked'])) {
2203 print_liste_field_titre($arrayfields[
'c.delivery_date'][
'label'], $_SERVER[
"PHP_SELF"],
'c.date_livraison',
'', $param,
'', $sortfield, $sortorder,
'center ');
2206if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
2207 print_liste_field_titre($arrayfields[
'c.fk_shipping_method'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_shipping_method",
"", $param,
'', $sortfield, $sortorder);
2210if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
2211 print_liste_field_titre($arrayfields[
'c.fk_cond_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_cond_reglement",
"", $param,
'', $sortfield, $sortorder);
2214if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
2215 print_liste_field_titre($arrayfields[
'c.fk_mode_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_mode_reglement",
"", $param,
'', $sortfield, $sortorder);
2218if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
2219 print_liste_field_titre($arrayfields[
'c.fk_input_reason'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_input_reason",
"", $param,
'', $sortfield, $sortorder);
2222if (!empty($arrayfields[
'c.module_source'][
'checked'])) {
2223 print_liste_field_titre($arrayfields[
'c.module_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.module_source",
"", $param,
"", $sortfield, $sortorder);
2226if (!empty($arrayfields[
'c.pos_source'][
'checked'])) {
2227 print_liste_field_titre($arrayfields[
'c.pos_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.pos_source",
"", $param,
"", $sortfield, $sortorder);
2230if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
2231 print_liste_field_titre($arrayfields[
'c.total_ht'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
2234if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
2235 print_liste_field_titre($arrayfields[
'c.total_vat'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
2238if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
2239 print_liste_field_titre($arrayfields[
'c.total_ttc'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
2242if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
2243 print_liste_field_titre($arrayfields[
'c.multicurrency_code'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_code',
'', $param,
'', $sortfield, $sortorder);
2246if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
2247 print_liste_field_titre($arrayfields[
'c.multicurrency_tx'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_tx',
'', $param,
'', $sortfield, $sortorder);
2250if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
2251 print_liste_field_titre($arrayfields[
'c.multicurrency_total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_ht',
'', $param,
'class="right"', $sortfield, $sortorder);
2254if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
2255 print_liste_field_titre($arrayfields[
'c.multicurrency_total_vat'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_tva',
'', $param,
'class="right"', $sortfield, $sortorder);
2258if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
2259 print_liste_field_titre($arrayfields[
'c.multicurrency_total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_ttc',
'', $param,
'class="right"', $sortfield, $sortorder);
2262if (!empty($arrayfields[
'u.login'][
'checked'])) {
2263 print_liste_field_titre($arrayfields[
'u.login'][
'label'], $_SERVER[
"PHP_SELF"],
'u.login',
'', $param,
'', $sortfield, $sortorder);
2266if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2267 print_liste_field_titre($arrayfields[
'sale_representative'][
'label'], $_SERVER[
"PHP_SELF"],
"",
"",
"$param",
'', $sortfield, $sortorder);
2270if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2271 print_liste_field_titre($arrayfields[
'total_pa'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2274if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2275 print_liste_field_titre($arrayfields[
'total_margin'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2278if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2279 print_liste_field_titre($arrayfields[
'total_margin_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2282if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2283 print_liste_field_titre($arrayfields[
'total_mark_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2287if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2288 print_liste_field_titre($arrayfields[
'c.datec'][
'label'], $_SERVER[
"PHP_SELF"],
"c.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2291if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2292 print_liste_field_titre($arrayfields[
'c.tms'][
'label'], $_SERVER[
"PHP_SELF"],
"c.tms",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2295if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2296 print_liste_field_titre($arrayfields[
'c.date_cloture'][
'label'], $_SERVER[
"PHP_SELF"],
"c.date_cloture",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2299if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2300 print_liste_field_titre($arrayfields[
'c.note_public'][
'label'], $_SERVER[
"PHP_SELF"],
"c.note_public",
"", $param,
'', $sortfield, $sortorder,
'');
2303if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
2304 print_liste_field_titre($arrayfields[
'c.note_private'][
'label'], $_SERVER[
"PHP_SELF"],
"c.note_private",
"", $param,
'', $sortfield, $sortorder,
'');
2307if (!empty($arrayfields[
'shippable'][
'checked'])) {
2308 print_liste_field_titre($arrayfields[
'shippable'][
'label'], $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
2312include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
2315$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder,
'totalarray' => &$totalarray);
2316$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
2317print $hookmanager->resPrint;
2320if (!empty($arrayfields[
'c.facture'][
'checked'])) {
2321 print_liste_field_titre($arrayfields[
'c.facture'][
'label'], $_SERVER[
"PHP_SELF"],
'c.facture',
'', $param,
'', $sortfield, $sortorder,
'center ');
2325if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
2326 print_liste_field_titre($arrayfields[
'c.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"c.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
2330if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
2331 print_liste_field_titre($arrayfields[
'c.fk_statut'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_statut",
"", $param,
'', $sortfield, $sortorder,
'center ');
2336 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'maxwidthsearch center ');
2343$productstat_cache = array();
2344$productstat_cachevirtual = array();
2345$getNomUrl_cache = array();
2347$generic_commande =
new Commande($db);
2348$generic_product =
new Product($db);
2349$userstatic =
new User($db);
2351$with_margin_info =
false;
2353 !empty($arrayfields[
'total_pa'][
'checked'])
2354 || !empty($arrayfields[
'total_margin'][
'checked'])
2355 || !empty($arrayfields[
'total_margin_rate'][
'checked'])
2356 || !empty($arrayfields[
'total_mark_rate'][
'checked'])
2359 $with_margin_info =
true;
2371$imaxinloop = ($limit ? min($num, $limit) : $num);
2372while ($i < $imaxinloop) {
2373 $obj = $db->fetch_object($resql);
2378 $typenArray = $formcompany->typent_array(1);
2386 $companystatic->id = $obj->socid;
2387 $companystatic->name = $obj->name;
2388 $companystatic->name_alias = $obj->alias;
2389 $companystatic->client = $obj->client;
2390 $companystatic->fournisseur = $obj->fournisseur;
2391 $companystatic->code_client = $obj->code_client;
2392 $companystatic->email = $obj->email;
2393 $companystatic->phone = $obj->phone;
2394 $companystatic->address = $obj->address;
2395 $companystatic->zip = $obj->zip;
2396 $companystatic->town = $obj->town;
2397 $companystatic->country_code = $obj->country_code;
2398 if (!isset($getNomUrl_cache[$obj->socid])) {
2399 $getNomUrl_cache[$obj->socid] = $companystatic->getNomUrl(1,
'customer', 100, 0, 1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2402 $generic_commande->id = $obj->rowid;
2403 $generic_commande->ref = $obj->ref;
2404 $generic_commande->status = $obj->fk_statut;
2405 $generic_commande->statut = $obj->fk_statut;
2406 $generic_commande->status = $obj->fk_statut;
2407 $generic_commande->billed = $obj->billed;
2408 $generic_commande->date = $db->jdate($obj->date_commande);
2409 $generic_commande->delivery_date = $db->jdate($obj->delivery_date);
2410 $generic_commande->ref_client = $obj->ref_client;
2411 $generic_commande->total_ht = $obj->total_ht;
2412 $generic_commande->total_tva = $obj->total_tva;
2413 $generic_commande->total_ttc = $obj->total_ttc;
2414 $generic_commande->note_public = $obj->note_public;
2415 $generic_commande->note_private = $obj->note_private;
2417 $generic_commande->thirdparty = $companystatic;
2420 $projectstatic->id = $obj->project_id;
2421 $projectstatic->ref = $obj->project_ref;
2422 $projectstatic->title = $obj->project_label;
2424 $marginInfo = array();
2425 if ($with_margin_info) {
2426 $generic_commande->fetch_lines();
2427 $marginInfo = $formmargin->getMarginInfosArray($generic_commande);
2428 $total_ht += $obj->total_ht;
2429 $total_margin += $marginInfo[
'total_margin'];
2432 if ($mode ==
'kanban') {
2434 print
'<tr class="trkanban"><td colspan="'.$savnbfield.
'">';
2435 print
'<div class="box-flex-container kanban">';
2440 if ($massactionbutton || $massaction) {
2442 if (in_array(
$object->id, $arrayofselected)) {
2446 print $generic_commande->getKanbanView(
'', array(
'selected' => $selected));
2447 if ($i == ($imaxinloop - 1)) {
2454 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' :
'').
'">';
2458 print
'<td class="nowrap center">';
2459 if ($massactionbutton || $massaction) {
2461 if (in_array($obj->rowid, $arrayofselected)) {
2464 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
2473 if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
2474 print
'<td class="center" data-key="id">'.$obj->rowid.
'</td>';
2481 if (!empty($arrayfields[
'c.ref'][
'checked'])) {
2482 print
'<td class="nowraponall">';
2483 $getNomUrlOption = $search_status != 2 ? 0 : $obj->fk_statut;
2489 $getNomUrlOption =
'';
2491 print $generic_commande->getNomUrl(1, $getNomUrlOption, 0, 0, 0, 1, 1);
2495 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid;
2496 print $formfile->getDocumentsLink($generic_commande->element, $filename, $filedir);
2505 if (!empty($arrayfields[
'c.ref_ext'][
'checked'])) {
2506 print
'<td class="nowrap tdoverflowmax75" title="'.dol_escape_htmltag($obj->ref_ext).
'">';
2515 if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
2516 print
'<td class="nowrap tdoverflowmax150" title="'.dol_escape_htmltag($obj->ref_client).
'">';
2525 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2526 print
'<td class="nocellnopadd nowraponall">';
2527 if ($obj->project_id > 0) {
2528 print $projectstatic->getNomUrl(1);
2537 if (!empty($arrayfields[
'p.title'][
'checked'])) {
2538 print
'<td class="nowraponall">';
2539 if ($obj->project_id > 0) {
2540 print $projectstatic->title;
2549 if (!empty($arrayfields[
's.nom'][
'checked'])) {
2550 print
'<td class="tdoverflowmax150">';
2552 print $companystatic->getNomUrl(1,
'customer', 100, 0, 1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2554 print $getNomUrl_cache[$obj->socid];
2559 if ($user->hasRight(
'facture',
'creer')) {
2560 if (($obj->fk_statut > 0 && $obj->fk_statut < 3) || ($obj->fk_statut == 3 && $obj->billed == 0)) {
2561 print
' <a href="'.DOL_URL_ROOT.
'/commande/list.php?socid='.$companystatic->id.
'&search_billed=0&autoselectall=1">';
2562 print
img_picto($langs->trans(
"CreateInvoiceForThisCustomer").
' : '.$companystatic->name,
'object_bill',
'hideonsmartphone').
'</a>';
2573 if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2574 print
'<td class="nocellnopadd tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->alias).
'">';
2583 if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2584 print
'<td class="tdoverflowmax200">';
2585 if ($obj->fk_parent > 0) {
2586 if (!isset($company_url_list[$obj->fk_parent])) {
2587 $companyparent =
new Societe($db);
2588 $res = $companyparent->fetch($obj->fk_parent);
2590 $company_url_list[$obj->fk_parent] = $companyparent->getNomUrl(1);
2593 if (isset($company_url_list[$obj->fk_parent])) {
2594 print $company_url_list[$obj->fk_parent];
2604 if (!empty($arrayfields[
's.town'][
'checked'])) {
2605 print
'<td class="tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->town).
'">';
2614 if (!empty($arrayfields[
's.zip'][
'checked'])) {
2615 print
'<td class="tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->zip).
'">';
2624 if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2625 print
'<td class="tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->state_name).
'">'.
dolPrintLabel($obj->state_name).
"</td>\n";
2632 if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2633 $tmparray =
getCountry($obj->fk_pays,
'all');
2634 print
'<td class="center tdoverflowmax100" title="'.dolPrintHTMLForAttribute($tmparray[
'label']).
'">';
2643 if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2644 if (!is_array($typenArray) || count($typenArray) == 0) {
2645 $typenArray = $formcompany->typent_array(1);
2647 if (!empty($obj->typent_code)) {
2648 print
'<td class="center tdoverflowmax100" title="'.dolPrintHTMLForAttribute($typenArray[$obj->typent_code]).
'">';
2649 print $typenArray[$obj->typent_code];
2651 print
'<td class="center tdoverflowmax100">';
2661 if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
2662 print
'<td class="center nowraponall">';
2665 if ($generic_commande->hasDelay()) {
2666 print
img_picto($langs->trans(
"Late").
' : '.$generic_commande->showDelay(),
"warning");
2675 if (!empty($arrayfields[
'c.delivery_date'][
'checked'])) {
2676 print
'<td class="center nowraponall">';
2677 print
dol_print_date($db->jdate($obj->delivery_date),
'dayhour');
2685 if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
2687 $form->formSelectShippingMethod(
'', $obj->fk_shipping_method,
'none', 1);
2695 if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
2697 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'], $obj->fk_cond_reglement,
'none', 0,
'', 1, $obj->deposit_percent);
2705 if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
2707 $form->form_modes_reglement($_SERVER[
'PHP_SELF'], $obj->fk_mode_reglement,
'none',
'', -1);
2715 if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
2717 $form->formInputReason($_SERVER[
'PHP_SELF'], $obj->fk_input_reason,
'none', 0);
2725 if (!empty($arrayfields[
'c.module_source'][
'checked'])) {
2734 if (!empty($arrayfields[
'c.pos_source'][
'checked'])) {
2744 if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
2745 print
'<td class="nowraponall right"><span class="amount">'.price($obj->total_ht).
"</span></td>\n";
2752 if (isset($totalarray[
'val'][
'c.total_ht'])) {
2753 $totalarray[
'val'][
'c.total_ht'] += $obj->total_ht;
2755 $totalarray[
'val'][
'c.total_ht'] = $obj->total_ht;
2760 if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
2761 print
'<td class="nowrap right"><span class="amount">'.price($obj->total_tva).
"</span></td>\n";
2768 if (isset($totalarray[
'val'][
'c.total_tva'])) {
2769 $totalarray[
'val'][
'c.total_tva'] += $obj->total_tva;
2771 $totalarray[
'val'][
'c.total_tva'] = $obj->total_tva;
2776 if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
2777 print
'<td class="nowrap right"><span class="amount">'.price($obj->total_ttc).
"</span></td>\n";
2784 if (isset($totalarray[
'val'][
'c.total_ttc'])) {
2785 $totalarray[
'val'][
'c.total_ttc'] += $obj->total_ttc;
2787 $totalarray[
'val'][
'c.total_ttc'] = $obj->total_ttc;
2792 if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
2793 print
'<td class="nowrap">'.$obj->multicurrency_code.
' - '.$langs->trans(
'Currency'.$obj->multicurrency_code).
"</td>\n";
2800 if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
2801 print
'<td class="nowrap">';
2802 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid, $obj->multicurrency_tx,
'none', $obj->multicurrency_code);
2810 if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
2811 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_ht).
"</span></td>\n";
2817 if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
2818 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_vat).
"</span></td>\n";
2824 if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
2825 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_ttc).
"</span></td>\n";
2831 $userstatic->id = $obj->fk_user_author;
2832 $userstatic->login = $obj->login;
2833 $userstatic->lastname = $obj->lastname;
2834 $userstatic->firstname = $obj->firstname;
2835 $userstatic->email = $obj->user_email;
2836 $userstatic->status = $obj->user_statut;
2837 $userstatic->entity = $obj->entity;
2838 $userstatic->photo = $obj->photo;
2839 $userstatic->office_phone = $obj->office_phone;
2840 $userstatic->office_fax = $obj->office_fax;
2841 $userstatic->user_mobile = $obj->user_mobile;
2842 $userstatic->job = $obj->job;
2843 $userstatic->gender = $obj->gender;
2846 if (!empty($arrayfields[
'u.login'][
'checked'])) {
2847 print
'<td class="tdoverflowmax125">';
2848 if ($userstatic->id) {
2849 print $userstatic->getNomUrl(-1);
2860 if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2862 if ($obj->socid > 0) {
2863 $listsalesrepresentatives = $companystatic->getSalesRepresentatives($user);
2864 if ($listsalesrepresentatives < 0) {
2867 $nbofsalesrepresentative = count($listsalesrepresentatives);
2868 if ($nbofsalesrepresentative > 6) {
2870 print $nbofsalesrepresentative;
2871 } elseif ($nbofsalesrepresentative > 0) {
2873 foreach ($listsalesrepresentatives as $val) {
2874 $userstatic->id = $val[
'id'];
2875 $userstatic->lastname = $val[
'lastname'];
2876 $userstatic->firstname = $val[
'firstname'];
2877 $userstatic->email = $val[
'email'];
2878 $userstatic->status = $val[
'statut'];
2879 $userstatic->entity = $val[
'entity'];
2880 $userstatic->photo = $val[
'photo'];
2881 $userstatic->login = $val[
'login'];
2882 $userstatic->office_phone = $val[
'office_phone'];
2883 $userstatic->office_fax = $val[
'office_fax'];
2884 $userstatic->user_mobile = $val[
'user_mobile'];
2885 $userstatic->job = $val[
'job'];
2886 $userstatic->gender = $val[
'gender'];
2888 print ($nbofsalesrepresentative < 2) ? $userstatic->getNomUrl(-1,
'', 0, 0, 12) : $userstatic->getNomUrl(-2);
2890 if ($j < $nbofsalesrepresentative) {
2907 if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2908 print
'<td class="right nowrap">'.price($marginInfo[
'pa_total']).
'</td>';
2915 if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2916 print
'<td class="right nowrap">'.price($marginInfo[
'total_margin']).
'</td>';
2924 if (!isset($totalarray[
'val'][
'total_margin'])) {
2928 $totalarray[
'val'][
'total_margin'] += $marginInfo[
'total_margin'];
2932 if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2933 print
'<td class="right nowrap">'.(($marginInfo[
'total_margin_rate'] ==
'') ?
'' :
price($marginInfo[
'total_margin_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
2940 if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2941 print
'<td class="right nowrap">'.(($marginInfo[
'total_mark_rate'] ==
'') ?
'' :
price($marginInfo[
'total_mark_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
2948 if ($i >= $imaxinloop - 1) {
2949 if (!empty($total_ht)) {
2958 if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2959 print
'<td class="center nowraponall">';
2960 print
dol_print_date($db->jdate($obj->date_creation),
'dayhour',
'tzuserrel');
2968 if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2969 print
'<td class="center nowraponall">';
2970 print
dol_print_date($db->jdate($obj->date_modification),
'dayhour',
'tzuserrel');
2978 if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2979 print
'<td class="center nowraponall">';
2980 print
dol_print_date($db->jdate($obj->date_cloture),
'dayhour',
'tzuserrel');
2988 if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2989 print
'<td class="sensiblehtmlcontent maxwidth250imp classfortooltip" title="'.dolPrintHTMLForAttribute(
dolGetFirstLineOfText($obj->note_public, 20)).
'">';
2990 print
'<div class="small lineheightsmall twolinesmax-normallineheight">'.dolPrintHTML(
dolGetFirstLineOfText($obj->note_public, 5)).
'</div>';
2998 if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
2999 print
'<td class="sensiblehtmlcontent maxwidth250imp classfortooltip" title="'.dolPrintHTMLForAttribute(
dolGetFirstLineOfText($obj->note_private, 20)).
'">';
3000 print
'<div class="small lineheightsmall twolinesmax-normallineheight">'.dolPrintHTML(
dolGetFirstLineOfText($obj->note_private, 5)).
'</div>';
3008 if (!empty($arrayfields[
'shippable'][
'checked'])) {
3009 print
'<td class="center">';
3010 if (!empty($show_shippable_command) &&
isModEnabled(
'stock')) {
3012 if (($obj->fk_statut > $generic_commande::STATUS_DRAFT) && ($obj->fk_statut < $generic_commande::STATUS_CLOSED)) {
3013 $generic_commande->getLinesArray();
3014 $generic_commande->loadExpeditions();
3018 $numlines = count($generic_commande->lines);
3019 for ($lig = 0; $lig < $numlines; $lig++) {
3020 $orderLine = $generic_commande->lines[$lig];
3021 '@phan-var-force OrderLine $orderLine';
3022 if (isset($generic_commande->expeditions[$orderLine->id])) {
3023 $reliquat = $orderLine->qty - $generic_commande->expeditions[$orderLine->id];
3025 $reliquat = $orderLine->qty;
3027 if ($orderLine->product_type == 0 && $orderLine->fk_product > 0) {
3029 $generic_product->id = $orderLine->fk_product;
3032 if (empty($productstat_cache[$orderLine->fk_product])) {
3033 $generic_product->load_stock(
'nobatch,warehouseopen');
3034 $productstat_cache[$orderLine->fk_product][
'stock_reel'] = $generic_product->stock_reel;
3035 $productstat_cachevirtual[$orderLine->fk_product][
'stock_reel'] = $generic_product->stock_theorique;
3037 $generic_product->stock_reel = $productstat_cache[$orderLine->fk_product][
'stock_reel'];
3039 $generic_product->stock_theorique = $productstat_cachevirtual[$orderLine->fk_product][
'stock_reel'];
3042 if (!array_key_exists($orderLine->fk_product, $stock)) {
3043 $stock[$orderLine->fk_product] = $generic_product->stock_reel;
3046 if ($reliquat > $stock[$orderLine->fk_product]) {
3050 $stock[$orderLine->fk_product] = $stock[$orderLine->fk_product] - $reliquat;
3052 $text_info .= $reliquat.
' x '.$orderLine->product_ref.
' '.
dol_trunc($orderLine->product_label, 20);
3053 $text_info .=
' - '.$langs->trans(
"Stock").
': <span class="'.($generic_product->stock_reel > 0 ?
'ok' :
'error').
'">'.$generic_product->stock_reel.
'</span>';
3054 $text_info .=
' - '.$langs->trans(
"VirtualStock").
': <span class="'.($generic_product->stock_theorique > 0 ?
'ok' :
'error').
'">'.$generic_product->stock_theorique.
'</span>';
3055 $text_info .= ($reliquat != $orderLine->qty ?
' <span class="opacitymedium">('.$langs->trans(
"QtyInOtherShipments").
' '.($orderLine->qty - $reliquat).
')</span>' :
'');
3056 $text_info .=
'<br>';
3063 $stock_order_supplier = 0;
3066 if (empty($productstat_cache[$orderLine->fk_product][
'stats_order_customer'])) {
3067 $generic_product->load_stats_commande(0,
'1,2');
3068 $productstat_cache[$orderLine->fk_product][
'stats_order_customer'] = $generic_product->stats_commande[
'qty'];
3071 $generic_product->stats_commande[
'qty'] = $productstat_cache[$orderLine->fk_product][
'stats_order_customer'];
3073 $stock_order = $generic_product->stats_commande[
'qty'];
3076 if (empty($productstat_cache[$orderLine->fk_product][
'stats_order_supplier'])) {
3077 $generic_product->load_stats_commande_fournisseur(0,
'3');
3078 $productstat_cache[$orderLine->fk_product][
'stats_order_supplier'] = $generic_product->stats_commande_fournisseur[
'qty'];
3081 $generic_product->stats_commande_fournisseur[
'qty'] = $productstat_cache[$orderLine->fk_product][
'stats_order_supplier'];
3083 $stock_order_supplier = $generic_product->stats_commande_fournisseur[
'qty'];
3086 $text_info .= $reliquat.
' x '.$orderLine->ref.
' '.
dol_trunc($orderLine->product_label, 20);
3087 $text_stock_reel = $generic_product->stock_reel.
'/'.$stock_order;
3088 if ($stock_order > $generic_product->stock_reel && !($generic_product->stock_reel < $orderLine->qty)) {
3090 $text_warning .=
'<span class="warning">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
3092 if ($reliquat > $generic_product->stock_reel) {
3093 $text_info .=
'<span class="warning">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
3095 $text_info .=
'<span class="ok">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
3098 $text_info .=
' '.$langs->trans(
'SupplierOrder').
' : '.$stock_order_supplier;
3100 $text_info .= ($reliquat != $orderLine->qty ?
' <span class="opacitymedium">('.$langs->trans(
"QtyInOtherShipments").
' '.($orderLine->qty - $reliquat).
')</span>' :
'');
3101 $text_info .=
'<br>';
3105 if ($notshippable == 0) {
3106 $text_icon =
img_picto(
'',
'dolly',
'', 0, 0, 0,
'',
'green paddingleft');
3107 $text_info = $text_icon.
' '.$langs->trans(
'Shippable').
'<br>'.$text_info;
3109 $text_icon =
img_picto(
'',
'dolly',
'', 0, 0, 0,
'',
'error paddingleft');
3110 $text_info = $text_icon.
' '.$langs->trans(
'NonShippable').
'<br>'.$text_info;
3115 print
'<a href="'.DOL_URL_ROOT.
'/expedition/shipment.php?id='.((int) $obj->rowid).
'">';
3116 print $form->textwithtooltip(
'', $text_info, 2, 1, $text_icon,
'', 2);
3120 print $form->textwithtooltip(
'', $langs->trans(
'NotEnoughForAllOrders').
'<br>'.$text_warning, 2, 1,
img_picto(
'',
'error'),
'', 2);
3130 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
3132 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
3133 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
3134 print $hookmanager->resPrint;
3137 if (!empty($arrayfields[
'c.facture'][
'checked'])) {
3138 print
'<td class="center">';
3140 print
yn($obj->billed, $langs->trans(
"Billed"));
3149 if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
3150 print
'<td class="nowrap center">'.dol_escape_htmltag($obj->import_key).
'</td>';
3157 if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
3158 print
'<td class="nowrap center">'.$generic_commande->LibStatut($obj->fk_statut, $obj->billed, 5, 1).
'</td>';
3166 print
'<td class="nowrap center">';
3167 if ($massactionbutton || $massaction) {
3169 if (in_array($obj->rowid, $arrayofselected)) {
3172 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
3182 $total += $obj->total_ht;
3183 $subtotal += $obj->total_ht;
3189include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
3194 foreach ($arrayfields as $key => $val) {
3195 if (!empty($val[
'checked'])) {
3199 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
3204$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
3205$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
3206print $hookmanager->resPrint;
3208print
'</table>'.
"\n";
3211print
'</form>'.
"\n";
3213if (in_array(
'builddoc', array_keys($arrayofmassactions)) && ($nbtotalofrecords ===
'' || $nbtotalofrecords)) {
3214 $hidegeneratedfilelistifempty = 1;
3215 if ($massaction ==
'builddoc' || $action ==
'remove_file' || $show_files) {
3216 $hidegeneratedfilelistifempty = 0;
3220 $urlsource = $_SERVER[
'PHP_SELF'].
'?sortfield='.$sortfield.
'&sortorder='.$sortorder;
3221 $urlsource .= str_replace(
'&',
'&', $param);
3223 $filedir = $diroutputmassaction;
3224 $genallowed = $permissiontoread;
3225 $delallowed = $permissiontoadd;
3227 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.