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 unset($arrayfields[
'c.note_private']);
273$parameters = array(
'fieldstosearchall' => $fieldstosearchall);
274$reshook = $hookmanager->executeHooks(
'completeFieldsToSearchAll', $parameters, $object, $action);
276 $fieldstosearchall = empty($hookmanager->resArray[
'fieldstosearchall']) ? array() : $hookmanager->resArray[
'fieldstosearchall'];
277} elseif ($reshook == 0) {
278 $fieldstosearchall = array_merge($fieldstosearchall, empty($hookmanager->resArray[
'fieldstosearchall']) ? array() : $hookmanager->resArray[
'fieldstosearchall']);
282include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
292 $socid = $user->socid;
295$permissiontoreadallthirdparty = $user->hasRight(
'societe',
'client',
'voir');
296$permissiontoread =
false;
297$permissiontovalidate =
false;
298$permissiontoclose =
false;
299$permissiontocancel =
false;
300$permissiontosendbymail =
false;
313if (
GETPOST(
'cancel',
'alpha')) {
317if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend' && $massaction !=
'confirm_createbills') {
321$parameters = array(
'socid' => $socid,
'arrayfields' => &$arrayfields);
322$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
327if (empty($reshook)) {
329 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
332 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
335 $search_product_category =
'';
336 $searchCategoryOrderList = array();
339 $search_ref_ext =
'';
340 $search_ref_customer =
'';
341 $search_company =
'';
342 $search_company_alias =
'';
343 $search_parent_name =
'';
344 $search_module_source =
'';
345 $search_pos_source =
'';
350 $search_country =
'';
351 $search_type_thirdparty =
'';
352 $search_total_ht =
'';
353 $search_total_vat =
'';
354 $search_total_ttc =
'';
355 $search_warehouse =
'';
356 $search_note_public =
'';
357 $search_note_private =
'';
358 $search_multicurrency_code =
'';
359 $search_multicurrency_tx =
'';
360 $search_multicurrency_montant_ht =
'';
361 $search_multicurrency_montant_vat =
'';
362 $search_multicurrency_montant_ttc =
'';
364 $search_dateorder_start =
'';
365 $search_dateorder_end =
'';
366 $search_datedelivery_start =
'';
367 $search_datedelivery_end =
'';
368 $search_project_ref =
'';
369 $search_project =
'';
372 $search_datecloture_start =
'';
373 $search_datecloture_end =
'';
374 $search_fk_cond_reglement =
'';
375 $search_fk_shipping_method =
'';
376 $search_fk_mode_reglement =
'';
377 $search_fk_input_reason =
'';
379 $search_import_key =
'';
380 $search_categ_cus = 0;
384 $search_array_options = array();
386 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')
387 ||
GETPOST(
'button_search_x',
'alpha') ||
GETPOST(
'button_search.x',
'alpha') ||
GETPOST(
'button_search',
'alpha')) {
392 $objectclass =
'Commande';
393 $objectlabel =
'Orders';
394 $permissiontoread = $user->hasRight(
"commande",
"lire");
395 $permissiontoadd = $user->hasRight(
"commande",
"creer");
396 $permissiontodelete = $user->hasRight(
"commande",
"supprimer");
398 $permissiontovalidate = $user->hasRight(
"commande",
"order_advance",
"validate");
399 $permissiontoclose = $user->hasRight(
"commande",
"order_advance",
"close");
400 $permissiontocancel = $user->hasRight(
"commande",
"order_advance",
"annuler");
401 $permissiontosendbymail = $user->hasRight(
"commande",
"order_advance",
"send");
403 $permissiontovalidate = $user->hasRight(
"commande",
"creer");
404 $permissiontoclose = $user->hasRight(
"commande",
"creer");
405 $permissiontocancel = $user->hasRight(
"commande",
"creer");
406 $permissiontosendbymail = $user->hasRight(
"commande",
"creer");
408 $uploaddir = $conf->order->multidir_output[$conf->entity];
409 $triggersendname =
'ORDER_SENTBYMAIL';
412 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
414 if ($massaction ==
'confirm_createbills') {
415 $orders =
GETPOST(
'toselect',
'array:int');
416 $createbills_onebythird =
GETPOSTINT(
'createbills_onebythird');
417 $validate_invoices =
GETPOSTINT(
'validate_invoices');
422 $TFactThird = array();
423 $TFactThirdNbLines = array();
425 $nb_bills_created = 0;
431 $nbOrders = is_array($orders) ? count($orders) : 1;
434 foreach ($orders as $id_order) {
436 if ($cmd->fetch($id_order) <= 0) {
444 setEventMessages($langs->trans(
'WarningOrderNotEligibleForInvoicing', $cmd->ref),
null,
'warnings');
448 $cmd->fetch_thirdparty();
451 if (!empty($createbills_onebythird) && !empty($TFactThird[$cmd->socid])) {
454 $objecttmp = $TFactThird[$cmd->socid];
457 $objecttmp->socid = $cmd->socid;
458 $objecttmp->thirdparty = $cmd->thirdparty;
460 $objecttmp->type = $objecttmp::TYPE_STANDARD;
461 $objecttmp->cond_reglement_id = !empty($cmd->cond_reglement_id) ? $cmd->cond_reglement_id : $cmd->thirdparty->cond_reglement_id;
462 $objecttmp->mode_reglement_id = !empty($cmd->mode_reglement_id) ? $cmd->mode_reglement_id : $cmd->thirdparty->mode_reglement_id;
463 $objecttmp->demand_reason_id = !empty($cmd->demand_reason_id) ? $cmd->demand_reason_id : $cmd->thirdparty->demand_reason_id;
465 $objecttmp->fk_project = $cmd->fk_project;
466 $objecttmp->multicurrency_code = $cmd->multicurrency_code;
467 if (empty($createbills_onebythird)) {
468 $objecttmp->ref_client = $cmd->ref_client;
471 if (empty($objecttmp->note_public) &&
getDolGlobalInt(
"MAXREFONDOC", 10)>0) {
472 $objecttmp->note_public = $langs->transnoentities(
"Orders");
476 if (empty($datefacture)) {
480 $objecttmp->date = $datefacture;
481 $objecttmp->origin =
'commande';
482 $objecttmp->origin_id = (int) $id_order;
484 $objecttmp->array_options = $cmd->array_options;
486 $res = $objecttmp->create($user);
490 $lastref = $objecttmp->ref;
491 $lastid = $objecttmp->id;
493 $TFactThird[$cmd->socid] = $objecttmp;
494 $TFactThirdNbLines[$cmd->socid] = 0;
496 $langs->load(
"errors");
497 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
502 if ($objecttmp->id > 0) {
503 $res = $objecttmp->add_object_linked($objecttmp->origin, $id_order);
506 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
512 $cmd->fetchObjectLinked();
514 if (!$error && $cmd->id && !empty($cmd->linkedObjectsIds[
'shipping']) && is_array($cmd->linkedObjectsIds[
'shipping'])) {
515 $cmd->linked_objects = $cmd->linkedObjectsIds;
516 foreach ($cmd->linked_objects as $origin_type => $tmp_origin_id) {
518 if ($origin_type ==
'shipping') {
519 if (is_array($tmp_origin_id)) {
520 foreach ($tmp_origin_id as $origin_id) {
521 $res = $objecttmp->add_object_linked($origin_type, $origin_id);
523 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
528 $origin_id = $tmp_origin_id;
529 $res = $objecttmp->add_object_linked($origin_type, $origin_id);
531 $errors[] = $cmd->ref.
' : '.$langs->trans($objecttmp->errors[0]);
541 $lines = $cmd->lines;
542 if (empty($lines) && method_exists($cmd,
'fetch_lines')) {
544 $lines = $cmd->lines;
548 $num = count($lines);
549 $array_options = array();
551 for ($i = 0; $i < $num; $i++) {
552 $desc = ($lines[$i]->desc ? $lines[$i]->desc :
'');
554 if (!empty($createbills_onebythird)) {
558 if ($lines[$i]->subprice < 0 && !
getDolGlobalString(
'INVOICE_KEEP_DISCOUNT_LINES_AS_IN_ORIGIN')) {
561 $discount->fk_soc = $objecttmp->socid;
562 $discount->socid = $objecttmp->socid;
563 $discount->amount_ht = abs($lines[$i]->total_ht);
564 $discount->amount_tva = abs($lines[$i]->total_tva);
565 $discount->amount_ttc = abs($lines[$i]->total_ttc);
566 $discount->tva_tx = $lines[$i]->tva_tx;
567 $discount->fk_user = $user->id;
568 $discount->description = $desc;
569 $discountid = $discount->create($user);
570 if ($discountid > 0) {
571 $result = $objecttmp->insert_discount($discountid);
580 $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0);
583 if ($lines[$i]->date_debut_prevue) {
584 $date_start = $lines[$i]->date_debut_prevue;
586 if ($lines[$i]->date_debut_reel) {
587 $date_start = $lines[$i]->date_debut_reel;
589 if ($lines[$i]->date_start) {
590 $date_start = $lines[$i]->date_start;
594 if ($lines[$i]->date_fin_prevue) {
595 $date_end = $lines[$i]->date_fin_prevue;
597 if ($lines[$i]->date_fin_reel) {
598 $date_end = $lines[$i]->date_fin_reel;
600 if ($lines[$i]->date_end) {
601 $date_end = $lines[$i]->date_end;
604 if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
609 if (method_exists($lines[$i],
'fetch_optionals')) {
610 $lines[$i]->fetch_optionals();
611 $array_options = $lines[$i]->array_options;
614 $objecttmp->context[
'createfromclone'] =
'createfromclone';
616 $rang = ($nbOrders > 1) ? -1 : $lines[$i]->rang;
618 if (!empty($createbills_onebythird)) {
619 $TFactThirdNbLines[$cmd->socid]++;
620 $rang = $TFactThirdNbLines[$cmd->socid];
623 $result = $objecttmp->addline(
625 $lines[$i]->subprice,
628 $lines[$i]->localtax1_tx,
629 $lines[$i]->localtax2_tx,
630 $lines[$i]->fk_product,
631 $lines[$i]->remise_percent,
635 $lines[$i]->info_bits,
636 $lines[$i]->fk_remise_except,
641 $lines[$i]->special_code,
645 $lines[$i]->fk_fournprice,
654 if (!empty($lines[$i]->extraparams)) {
656 $factureLine->id = $result;
657 $factureLine->extraparams = $lines[$i]->extraparams;
658 $factureLine->setExtraParameters();
665 $errors[] = $objecttmp->error;
669 if ($result > 0 && $lines[$i]->product_type == 9) {
670 $fk_parent_line = $result;
678 $objecttmp->note_public =
dol_concatdesc($objecttmp->note_public, $langs->transnoentities($cmd->ref).(empty($cmd->ref_client) ?
'' :
' ('.$cmd->ref_client.
')'));
679 $objecttmp->update($user);
684 if (!empty($createbills_onebythird) && empty($TFactThird[$cmd->socid])) {
685 $TFactThird[$cmd->socid] = $objecttmp;
687 $TFact[$objecttmp->id] = $objecttmp;
692 $TAllFact = empty($createbills_onebythird) ? $TFact : $TFactThird;
695 if (!$error && $validate_invoices) {
696 $massaction = $action =
'builddoc';
698 foreach ($TAllFact as &$objecttmp) {
699 $result = $objecttmp->validate($user);
706 $id = $objecttmp->id;
707 $lastref = $objecttmp->ref;
711 $upload_dir = $conf->facture->dir_output;
712 $permissiontoadd = $user->hasRight(
'facture',
'creer');
717 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
721 $massaction = $action =
'confirm_createbills';
727 if ($nb_bills_created == 1) {
728 if (
getDolGlobalInt(
'MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_ONE') == 1) {
730 header(
'Location: '.DOL_URL_ROOT.
'/compta/facture/card.php?id='.urlencode((
string) $lastid));
733 $texttoshow = $langs->trans(
'BillXCreated',
'{s1}');
734 $texttoshow = str_replace(
'{s1}',
'<a href="'.DOL_URL_ROOT.
'/compta/facture/card.php?id='.urlencode((
string) ($lastid)).
'">'.$lastref.
'</a>', $texttoshow);
737 if (
getDolGlobalInt(
'MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_MANY') == 1) {
739 header(
"Location: ".DOL_URL_ROOT.
'/compta/facture/list.php?mainmenu=billing&leftmenu=customers_bills');
742 setEventMessages($langs->trans(
'BillCreated', $nb_bills_created),
null,
'mesgs');
748 $param .=
'&mode='.urlencode($mode);
750 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
751 $param .=
'&contextpage='.urlencode($contextpage);
753 if ($limit > 0 && $limit != $conf->liste_limit) {
754 $param .=
'&limit='.((int) $limit);
756 if ($optioncss !=
'') {
757 $param .=
'&optioncss='.urlencode($optioncss);
760 $param .=
'&search_all='.urlencode($search_all);
763 $param .=
'&show_files='.urlencode((
string) ($show_files));
766 $param .=
'&socid='.urlencode((
string) ($socid));
768 if ($search_status !=
'') {
769 $param .=
'&search_status='.urlencode($search_status);
771 if ($search_option) {
772 $param .=
"&search_option=".urlencode($search_option);
774 if ($search_orderday) {
775 $param .=
'&search_orderday='.urlencode($search_orderday);
777 if ($search_ordermonth) {
778 $param .=
'&search_ordermonth='.urlencode($search_ordermonth);
780 if ($search_orderyear) {
781 $param .=
'&search_orderyear='.urlencode($search_orderyear);
783 if ($search_deliveryday) {
784 $param .=
'&search_deliveryday='.urlencode($search_deliveryday);
786 if ($search_deliverymonth) {
787 $param .=
'&search_deliverymonth='.urlencode($search_deliverymonth);
789 if ($search_deliveryyear) {
790 $param .=
'&search_deliveryyear='.urlencode($search_deliveryyear);
793 $param .=
'&search_id='.urlencode((
string) $search_id);
796 $param .=
'&search_ref='.urlencode($search_ref);
798 if ($search_ref_ext) {
799 $param .=
'&search_ref_ext='.urlencode($search_ref_ext);
801 if ($search_company) {
802 $param .=
'&search_company='.urlencode($search_company);
804 if ($search_ref_customer) {
805 $param .=
'&search_ref_customer='.urlencode($search_ref_customer);
807 if ($search_user > 0) {
808 $param .=
'&search_user='.urlencode((
string) ($search_user));
810 if ($search_sale > 0) {
811 $param .=
'&search_sale='.urlencode((
string) ($search_sale));
813 if ($search_total_ht !=
'') {
814 $param .=
'&search_total_ht='.urlencode($search_total_ht);
816 if ($search_total_vat !=
'') {
817 $param .=
'&search_total_vat='.urlencode($search_total_vat);
819 if ($search_total_ttc !=
'') {
820 $param .=
'&search_total_ttc='.urlencode($search_total_ttc);
822 if ($search_project_ref >= 0) {
823 $param .=
"&search_project_ref=".urlencode($search_project_ref);
825 if ($search_project !=
'') {
826 $param .=
"&search_project=".urlencode($search_project);
828 if ($search_billed !=
'') {
829 $param .=
'&search_billed='.urlencode($search_billed);
832 header(
"Location: ".$_SERVER[
'PHP_SELF'].
'?'.$param);
838 $_GET[
"origin"] = $_POST[
"origin"];
839 $_GET[
"originid"] = $_POST[
"originid"];
840 if (!empty($errors)) {
850if ($action ==
'validate' && $permissiontoadd && $objectclass !==
null) {
851 if (
GETPOST(
'confirm') ==
'yes') {
853 $objecttmp =
new $objectclass($db);
856 foreach ($toselect as $checked) {
857 if ($objecttmp->fetch($checked)) {
858 if ($objecttmp->status == $objecttmp::STATUS_DRAFT) {
859 if (!empty($objecttmp->fk_warehouse)) {
860 $idwarehouse = $objecttmp->fk_warehouse;
864 if ($objecttmp->valid($user, $idwarehouse) > 0) {
865 setEventMessages($langs->trans(
'hasBeenValidated', $objecttmp->ref),
null,
'mesgs');
871 $langs->load(
"errors");
872 setEventMessages($langs->trans(
'ErrorIsNotADraft', $objecttmp->ref),
null,
'errors');
887if ($action ==
'shipped' && $permissiontoadd && $objectclass !==
null) {
888 if (
GETPOST(
'confirm') ==
'yes') {
890 $objecttmp =
new $objectclass($db);
893 foreach ($toselect as $checked) {
894 if ($objecttmp->fetch($checked)) {
895 if ($objecttmp->status == $objecttmp::STATUS_VALIDATED || $objecttmp->status == $objecttmp::STATUS_SHIPMENTONPROCESS || $objecttmp->status == $objecttmp::STATUS_CLOSED) {
896 $result = $objecttmp->cloture($user);
898 setEventMessages($langs->trans(
'StatusOrderDelivered', $objecttmp->ref),
null,
'mesgs');
899 } elseif ($result < 0) {
900 setEventMessages($langs->trans(
'ErrorOrderStatusCantBeSetToDelivered'),
null,
'errors');
904 $langs->load(
"errors");
905 setEventMessages($langs->trans(
'ErrorObjectHasWrongStatus', $objecttmp->ref),
null,
'errors');
922if (!$error && $massaction ===
'setbilled' && $permissiontoclose && $objectclass !==
null) {
925 $objecttmp =
new $objectclass($db);
927 foreach ($toselect as $toselectid) {
928 $result = $objecttmp->fetch($toselectid);
930 $result = $objecttmp->classifyBilled($user, 0);
958$form =
new Form($db);
965$companystatic =
new Societe($db);
966$company_url_list = array();
968$projectstatic =
new Project($db);
972$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
973$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
975$title = $langs->trans(
"Orders");
976$help_url =
"EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes";
981$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,';
982$sql .=
" s.parent as fk_parent,";
983$sql .=
" s2.nom as name2,";
984$sql .=
" typent.code as typent_code,";
985$sql .=
" state.code_departement as state_code, state.nom as state_name,";
986$sql .=
" country.code as country_code,";
987$sql .=
' c.rowid, c.ref, c.ref_ext, c.total_ht, c.total_tva, c.total_ttc, c.ref_client, c.fk_user_author,';
988$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,';
989$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,';
990$sql .=
' c.date_creation as date_creation, c.tms as date_modification, c.date_cloture as date_cloture,';
991$sql .=
' c.fk_cond_reglement,c.deposit_percent,c.fk_mode_reglement,c.fk_shipping_method,';
992$sql .=
' c.fk_input_reason, c.import_key,';
993$sql .=
" c.module_source, c.pos_source,";
994$sql .=
' p.rowid as project_id, p.ref as project_ref, p.title as project_label,';
995$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';
998if (!empty($extrafields->attributes[
$object->table_element][
'label'])) {
999 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $val) {
1000 $sql .= ($extrafields->attributes[
$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
1005$parameters = array();
1006$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters, $object, $action);
1007$sql .= $hookmanager->resPrint;
1008$sql = preg_replace(
'/,\s*$/',
'', $sql);
1012$sql .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
1013$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s2 ON s2.rowid = s.parent";
1014$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as country on (country.rowid = s.fk_pays)";
1015$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_typent as typent on (typent.id = s.fk_typent)";
1016$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_departements as state on (state.rowid = s.fk_departement)";
1017$sql .=
', '.MAIN_DB_PREFIX.
'commande as c';
1018if (!empty($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
1019 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"commande_extrafields as ef on (c.rowid = ef.fk_object)";
1021$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"projet as p ON p.rowid = c.fk_projet";
1022$sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'user as u ON c.fk_user_author = u.rowid';
1024$parameters = array();
1025$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters, $object, $action);
1026$sql .= $hookmanager->resPrint;
1028$sql .=
' WHERE c.fk_soc = s.rowid';
1029$sql .=
' AND c.entity IN ('.getEntity(
'commande').
')';
1031 $sql .=
' AND s.rowid = '.((int) $socid);
1034if (empty($user->socid) && !$permissiontoreadallthirdparty) {
1035 $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).
")";
1037 $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)).
"))";
1042if ($search_id > 0) {
1048if ($search_ref_ext) {
1051if ($search_ref_customer) {
1054if ($search_billed !=
'' && $search_billed >= 0) {
1055 $sql .=
' AND c.facture = '.((int) $search_billed);
1057if ($search_status !=
'') {
1058 if ($search_status <= 3 && $search_status >= -1) {
1059 if ($search_status == 1 && !
isModEnabled(
'shipping')) {
1060 $sql .=
' AND c.fk_statut IN (1,2)';
1062 $sql .=
' AND c.fk_statut = '.((int) $search_status);
1065 if ($search_status == -2) {
1067 $sql .=
" AND (c.fk_statut IN (1,2))";
1069 if ($search_status == -3) {
1072 $sql .=
' AND (c.fk_statut IN (1,2,3))';
1075if ($search_option ==
'late') {
1078 $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).
"'))";
1080 $sql .=
" AND c.date_commande < '".$db->idate(
dol_now() - $conf->order->client->warning_delay).
"'";
1083if ($search_datecloture_start) {
1084 $sql .=
" AND c.date_cloture >= '".$db->idate($search_datecloture_start).
"'";
1086if ($search_datecloture_end) {
1087 $sql .=
" AND c.date_cloture <= '".$db->idate($search_datecloture_end).
"'";
1089if ($search_dateorder_start) {
1090 $sql .=
" AND c.date_commande >= '".$db->idate($search_dateorder_start).
"'";
1092if ($search_dateorder_end) {
1093 $sql .=
" AND c.date_commande <= '".$db->idate($search_dateorder_end).
"'";
1095if ($search_datedelivery_start) {
1096 $sql .=
" AND c.date_livraison >= '".$db->idate($search_datedelivery_start).
"'";
1098if ($search_datedelivery_end) {
1099 $sql .=
" AND c.date_livraison <= '".$db->idate($search_datedelivery_end).
"'";
1110if ($search_country) {
1111 $sql .=
" AND s.fk_pays IN (".$db->sanitize($search_country).
')';
1113if ($search_type_thirdparty && $search_type_thirdparty !=
'-1') {
1114 $sql .=
" AND s.fk_typent IN (".$db->sanitize($search_type_thirdparty).
')';
1116if (empty($arrayfields[
's.name_alias'][
'checked']) && $search_company) {
1117 $sql .=
natural_search(array(
"s.nom",
"s.name_alias"), $search_company);
1119 if ($search_company) {
1122 if ($search_company_alias) {
1126if ($search_parent_name) {
1129if ($search_total_ht !=
'') {
1132if ($search_total_vat !=
'') {
1135if ($search_total_ttc !=
'') {
1138if ($search_warehouse !=
'' && $search_warehouse > 0) {
1141if ($search_note_public !=
'') {
1144if ($search_note_private !=
'') {
1147if ($search_multicurrency_code !=
'') {
1148 $sql .=
" AND c.multicurrency_code = '".$db->escape($search_multicurrency_code).
"'";
1150if ($search_multicurrency_tx !=
'') {
1151 $sql .=
natural_search(
'c.multicurrency_tx', $search_multicurrency_tx, 1);
1153if ($search_multicurrency_montant_ht !=
'') {
1154 $sql .=
natural_search(
'c.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
1156if ($search_multicurrency_montant_vat !=
'') {
1157 $sql .=
natural_search(
'c.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
1159if ($search_multicurrency_montant_ttc !=
'') {
1160 $sql .=
natural_search(
'c.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
1163 $sql .=
natural_search(array(
"u.login",
"u.firstname",
"u.lastname"), $search_login);
1165if ($search_project_ref !=
'') {
1168if ($search_project !=
'') {
1171if ($search_fk_cond_reglement > 0) {
1172 $sql .=
" AND c.fk_cond_reglement = ".((int) $search_fk_cond_reglement);
1174if ($search_fk_shipping_method > 0) {
1175 $sql .=
" AND c.fk_shipping_method = ".((int) $search_fk_shipping_method);
1177if ($search_fk_mode_reglement > 0) {
1178 $sql .=
" AND c.fk_mode_reglement = ".((int) $search_fk_mode_reglement);
1180if ($search_fk_input_reason > 0) {
1181 $sql .=
" AND c.fk_input_reason = ".((int) $search_fk_input_reason);
1183if ($search_module_source) {
1184 $sql .=
natural_search(
"c.module_source", $search_module_source);
1186if ($search_pos_source) {
1189if ($search_import_key) {
1193if ($search_user > 0) {
1194 $sql .=
" AND EXISTS (";
1195 $sql .=
" SELECT ec.fk_c_type_contact, ec.element_id, ec.fk_socpeople";
1196 $sql .=
" FROM ".MAIN_DB_PREFIX.
"element_contact as ec";
1197 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"c_type_contact as tc";
1198 $sql .=
" ON ec.fk_c_type_contact = tc.rowid AND tc.element = 'commande' AND tc.source = 'internal'";
1199 $sql .=
" WHERE ec.element_id = c.rowid AND ec.fk_socpeople = ".((int) $search_user).
")";
1202if ($search_sale && $search_sale !=
'-1') {
1203 if ($search_sale == -2) {
1204 $sql .=
" AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = c.fk_soc)";
1205 } elseif ($search_sale > 0) {
1206 $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).
")";
1211if (!empty($searchCategoryOrderList)) {
1212 $searchCategoryOrderSqlList = array();
1213 $listofcategoryid =
'';
1214 foreach ($searchCategoryOrderList as $searchCategoryOrder) {
1215 if (intval($searchCategoryOrder) == -2) {
1216 $searchCategoryOrderSqlList[] =
"NOT EXISTS (SELECT ck.fk_order FROM ".MAIN_DB_PREFIX.
"categorie_order as ck WHERE c.rowid = ck.fk_order)";
1217 } elseif (intval($searchCategoryOrder) > 0) {
1218 if ($searchCategoryOrderOperator == 0) {
1219 $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).
")";
1221 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryOrder);
1225 if ($listofcategoryid) {
1226 $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).
"))";
1228 if ($searchCategoryOrderOperator == 1) {
1229 if (!empty($searchCategoryOrderSqlList)) {
1230 $sql .=
" AND (".implode(
' OR ', $searchCategoryOrderSqlList).
")";
1233 if (!empty($searchCategoryOrderSqlList)) {
1234 $sql .=
" AND (".implode(
' AND ', $searchCategoryOrderSqlList).
")";
1240$searchCategoryCustomerOperator =
GETPOSTINT(
'search_category_customer_operator');
1241$searchCategoryCustomerList = array($search_categ_cus);
1242if (!empty($searchCategoryCustomerList)) {
1243 $searchCategoryCustomerSqlList = array();
1244 $listofcategoryid =
'';
1245 foreach ($searchCategoryCustomerList as $searchCategoryCustomer) {
1246 if (intval($searchCategoryCustomer) == -2) {
1247 $searchCategoryCustomerSqlList[] =
"NOT EXISTS (SELECT cs.fk_soc FROM ".MAIN_DB_PREFIX.
"categorie_societe as cs WHERE s.rowid = cs.fk_soc)";
1248 } elseif (intval($searchCategoryCustomer) > 0) {
1249 if ($searchCategoryCustomerOperator == 0) {
1250 $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).
")";
1252 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryCustomer);
1256 if ($listofcategoryid) {
1257 $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).
"))";
1259 if ($searchCategoryCustomerOperator == 1) {
1260 if (!empty($searchCategoryCustomerSqlList)) {
1261 $sql .=
" AND (".implode(
' OR ', $searchCategoryCustomerSqlList).
")";
1264 if (!empty($searchCategoryCustomerSqlList)) {
1265 $sql .=
" AND (".implode(
' AND ', $searchCategoryCustomerSqlList).
")";
1270$searchCategoryProductOperator =
GETPOSTINT(
'search_category_product_operator');
1271$searchCategoryProductList = array($search_product_category);
1272if (!empty($searchCategoryProductList)) {
1273 $searchCategoryProductSqlList = array();
1274 $listofcategoryid =
'';
1275 foreach ($searchCategoryProductList as $searchCategoryProduct) {
1276 if (intval($searchCategoryProduct) == -2) {
1277 $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)";
1278 } elseif (intval($searchCategoryProduct) > 0) {
1279 if ($searchCategoryProductOperator == 0) {
1280 $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).
")";
1282 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryProduct);
1286 if ($listofcategoryid) {
1287 $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).
"))";
1289 if ($searchCategoryProductOperator == 1) {
1290 if (!empty($searchCategoryProductSqlList)) {
1291 $sql .=
" AND (".implode(
' OR ', $searchCategoryProductSqlList).
")";
1294 if (!empty($searchCategoryProductSqlList)) {
1295 $sql .=
" AND (".implode(
' AND ', $searchCategoryProductSqlList).
")";
1300include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
1302$parameters = array();
1303$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action);
1304$sql .= $hookmanager->resPrint;
1309 $fieldstosearchallwithoutpd = array();
1310 $fieldstosearchallwithpd = array();
1311 foreach ($fieldstosearchall as $key => $val) {
1312 if (!preg_match(
'/^pd\./', $key)) {
1313 $fieldstosearchallwithoutpd[$key] = $val;
1315 $fieldstosearchallwithpd[$key] = $val;
1319 if (count($fieldstosearchallwithpd) > 0) {
1320 $sqltoadd .=
" OR EXISTS (SELECT pd.rowid FROM ".MAIN_DB_PREFIX.
"commandedet as pd WHERE pd.fk_commande = c.rowid";
1321 $sqltoadd .=
natural_search(array_keys($fieldstosearchallwithpd),
'__KEYTOSEARCH__');
1325 $sql .=
natural_search(array_keys($fieldstosearchallwithoutpd), $search_all, 0, 0, $sqltoadd);
1329$parameters = array();
1330$reshook = $hookmanager->executeHooks(
'printFieldListHaving', $parameters, $object, $action);
1331if (empty($reshook)) {
1332 $sql .= empty($hookmanager->resPrint) ?
"" :
" HAVING 1=1 ".$hookmanager->resPrint;
1334 $sql = $hookmanager->resPrint;
1339$nbtotalofrecords =
'';
1342 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
1343 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
1344 $resql = $db->query($sqlforcount);
1346 $objforcount = $db->fetch_object($resql);
1347 $nbtotalofrecords = $objforcount->nbtotalofrecords;
1352 if (($page * $limit) > (
int) $nbtotalofrecords) {
1360$sql .= $db->order($sortfield, $sortorder);
1362 $sql .= $db->plimit($limit + 1, $offset);
1366$resql = $db->query($sql);
1374 $soc->fetch($socid);
1375 $title = $langs->trans(
'CustomersOrders').
' - '.$soc->name;
1376 if (empty($search_company)) {
1377 $search_company = $soc->name;
1380 $title = $langs->trans(
'CustomersOrders');
1382if (strval($search_status) ==
'0') {
1383 $title .=
' - '.$langs->trans(
'StatusOrderDraftShort');
1385if ($search_status == 1) {
1386 $title .=
' - '.$langs->trans(
'StatusOrderValidatedShort');
1388if ($search_status == 2) {
1389 $title .=
' - '.$langs->trans(
'StatusOrderSentShort');
1391if ($search_status == 3) {
1392 $title .=
' - '.$langs->trans(
'StatusOrderToBillShort');
1394if ($search_status == -1) {
1395 $title .=
' - '.$langs->trans(
'StatusOrderCanceledShort');
1397if ($search_status == -2) {
1398 $title .=
' - '.$langs->trans(
'StatusOrderToProcessShort');
1400if ($search_status == -3) {
1401 $title .=
' - '.$langs->trans(
'StatusOrderValidated').
', '.(!
isModEnabled(
'shipping') ?
'' : $langs->trans(
"StatusOrderSent").
', ').$langs->trans(
'StatusOrderToBill');
1403if ($search_status == -4) {
1404 $title .=
' - '.$langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort");
1407$num = $db->num_rows($resql);
1409$arrayofselected = is_array($toselect) ? $toselect : array();
1411if ($num == 1 &&
getDolGlobalString(
'MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all) {
1412 $obj = $db->fetch_object($resql);
1414 header(
"Location: ".DOL_URL_ROOT.
'/commande/card.php?id='.
$id);
1421llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'bodyforlist mod-order page-list');
1423$arrayofselected = is_array($toselect) ? $toselect : array();
1427 $param .=
'&mode='.urlencode($mode);
1429if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
1430 $param .=
'&contextpage='.urlencode($contextpage);
1432if ($limit > 0 && $limit != $conf->liste_limit) {
1433 $param .=
'&limit='.((int) $limit);
1435if ($optioncss !=
'') {
1436 $param .=
'&optioncss='.urlencode($optioncss);
1439 $param .=
'&show_files='.urlencode((
string) ($show_files));
1442 $param .=
'&search_all='.urlencode($search_all);
1445 $param .=
'&socid='.((int) $socid);
1447if ($search_status !=
'') {
1448 $param .=
'&search_status='.urlencode($search_status);
1450if ($search_option) {
1451 $param .=
"&search_option=".urlencode($search_option);
1453if ($search_datecloture_start) {
1454 $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');
1456if ($search_datecloture_end) {
1457 $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');
1459if ($search_dateorder_start) {
1460 $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');
1462if ($search_dateorder_end) {
1463 $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');
1465if ($search_datedelivery_start) {
1466 $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');
1468if ($search_datedelivery_end) {
1469 $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');
1472 $param .=
'&search_id='.urlencode((
string) $search_id);
1475 $param .=
'&search_ref='.urlencode($search_ref);
1477if ($search_ref_ext) {
1478 $param .=
'&search_ref_ext='.urlencode($search_ref_ext);
1480if ($search_company) {
1481 $param .=
'&search_company='.urlencode($search_company);
1483if ($search_company_alias) {
1484 $param .=
'&search_company_alias='.urlencode($search_company_alias);
1486if ($search_parent_name !=
'') {
1487 $param .=
'&search_parent_name='.urlencode($search_parent_name);
1489if ($search_ref_customer) {
1490 $param .=
'&search_ref_customer='.urlencode($search_ref_customer);
1492if ($search_user > 0) {
1493 $param .=
'&search_user='.urlencode((
string) ($search_user));
1495if ($search_sale > 0) {
1496 $param .=
'&search_sale='.urlencode((
string) ($search_sale));
1498if ($search_total_ht !=
'') {
1499 $param .=
'&search_total_ht='.urlencode($search_total_ht);
1501if ($search_total_vat !=
'') {
1502 $param .=
'&search_total_vat='.urlencode($search_total_vat);
1504if ($search_total_ttc !=
'') {
1505 $param .=
'&search_total_ttc='.urlencode($search_total_ttc);
1507if ($search_warehouse !=
'') {
1508 $param .=
'&search_warehouse='.urlencode((
string) ($search_warehouse));
1511 $param .=
'&search_login='.urlencode($search_login);
1513if ($search_multicurrency_code !=
'') {
1514 $param .=
'&search_multicurrency_code='.urlencode($search_multicurrency_code);
1516if ($search_multicurrency_tx !=
'') {
1517 $param .=
'&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
1519if ($search_multicurrency_montant_ht !=
'') {
1520 $param .=
'&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
1522if ($search_multicurrency_montant_vat !=
'') {
1523 $param .=
'&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
1525if ($search_multicurrency_montant_ttc !=
'') {
1526 $param .=
'&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
1528if ($search_project_ref >= 0) {
1529 $param .=
"&search_project_ref=".urlencode($search_project_ref);
1531if ($search_project !=
'') {
1532 $param .=
"&search_project=".urlencode($search_project);
1534if ($search_town !=
'') {
1535 $param .=
'&search_town='.urlencode($search_town);
1537if ($search_zip !=
'') {
1538 $param .=
'&search_zip='.urlencode($search_zip);
1540if ($search_state !=
'') {
1541 $param .=
'&search_state='.urlencode($search_state);
1543if ($search_country !=
'') {
1544 $param .=
'&search_country='.urlencode((
string) ($search_country));
1546if ($search_type_thirdparty && $search_type_thirdparty !=
'-1') {
1547 $param .=
'&search_type_thirdparty='.urlencode((
string) ($search_type_thirdparty));
1549if ($searchCategoryOrderOperator == 1) {
1550 $param .=
"&search_category_order_operator=".urlencode((
string) ($searchCategoryOrderOperator));
1552foreach ($searchCategoryOrderList as $searchCategoryOrder) {
1553 $param .=
"&search_category_order_list[]=".urlencode($searchCategoryOrder);
1555if ($search_product_category !=
'') {
1556 $param .=
'&search_product_category='.urlencode((
string) ($search_product_category));
1558if (($search_categ_cus > 0) || ($search_categ_cus == -2)) {
1559 $param .=
'&search_categ_cus='.urlencode((
string) ($search_categ_cus));
1561if ($search_billed !=
'') {
1562 $param .=
'&search_billed='.urlencode($search_billed);
1564if ($search_fk_cond_reglement > 0) {
1565 $param .=
'&search_fk_cond_reglement='.urlencode((
string) ($search_fk_cond_reglement));
1567if ($search_fk_shipping_method > 0) {
1568 $param .=
'&search_fk_shipping_method='.urlencode((
string) ($search_fk_shipping_method));
1570if ($search_fk_mode_reglement > 0) {
1571 $param .=
'&search_fk_mode_reglement='.urlencode((
string) ($search_fk_mode_reglement));
1573if ($search_fk_input_reason > 0) {
1574 $param .=
'&search_fk_input_reason='.urlencode((
string) ($search_fk_input_reason));
1576if ($search_module_source) {
1577 $param .=
'&search_module_source='.urlencode($search_module_source);
1579if ($search_pos_source) {
1580 $param .=
'&search_pos_source='.urlencode($search_pos_source);
1582if ($search_import_key !=
'') {
1583 $param .=
'&search_import_key='.urlencode($search_import_key);
1587include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
1590$parameters = array();
1591$reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters, $object, $action);
1592$param .= $hookmanager->resPrint;
1595$arrayofmassactions = array(
1596 'generate_doc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"ReGeneratePDF"),
1597 'builddoc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"PDFMerge"),
1599if (
isModEnabled(
'category') && $user->hasRight(
"commande",
"lire")) {
1600 $arrayofmassactions[
'preaffecttag'] =
img_picto(
'',
'category',
'class="pictofixedwidth"').$langs->trans(
"AffectTag");
1602if ($permissiontovalidate) {
1603 $arrayofmassactions[
'prevalidate'] =
img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"Validate");
1605if ($permissiontoclose) {
1606 $arrayofmassactions[
'preshipped'] =
img_picto(
'',
'dolly',
'class="pictofixedwidth"').$langs->trans(
"ClassifyShipped");
1608if (
isModEnabled(
'invoice') && $user->hasRight(
"facture",
"creer")) {
1609 $arrayofmassactions[
'createbills'] =
img_picto(
'',
'bill',
'class="pictofixedwidth"').$langs->trans(
"CreateInvoiceForThisCustomer");
1611if ($permissiontoclose) {
1612 $arrayofmassactions[
'setbilled'] =
img_picto(
'',
'bill',
'class="pictofixedwidth"').$langs->trans(
"ClassifyBilled");
1614if ($permissiontocancel) {
1615 $arrayofmassactions[
'cancelorders'] =
img_picto(
'',
'close_title',
'class="pictofixedwidth"').$langs->trans(
"CancelOrder");
1617if (!empty($permissiontodelete)) {
1618 $arrayofmassactions[
'predelete'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
1620if ($permissiontosendbymail) {
1621 $arrayofmassactions[
'presend'] =
img_picto(
'',
'email',
'class="pictofixedwidth"').$langs->trans(
"SendByMail");
1623if (in_array($massaction, array(
'presend',
'predelete',
'createbills'))) {
1624 $arrayofmassactions = array();
1626$massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
1628$url = DOL_URL_ROOT.
'/commande/card.php?action=create';
1629if (!empty($socid)) {
1630 $url .=
'&socid='.$socid;
1633$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'));
1634$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'));
1636$newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewOrder'),
'',
'fa fa-plus-circle', $url,
'', (
int) (($contextpage ==
'orderlist' || $contextpage ==
'billableorders') && $permissiontoadd));
1639print
'<form method="POST" id="searchFormList" name="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">'.
"\n";
1640if ($optioncss !=
'') {
1641 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
1643print
'<input type="hidden" name="token" value="'.newToken().
'">';
1644print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
1645print
'<input type="hidden" name="action" value="list">';
1646print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
1647print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
1648print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
1649print
'<input type="hidden" name="search_status" value="'.$search_status.
'">';
1650print
'<input type="hidden" name="socid" value="'.$socid.
'">';
1651print
'<input type="hidden" name="page_y" value="">';
1652print
'<input type="hidden" name="mode" value="'.$mode.
'">';
1655print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'order', 0, $newcardbutton,
'', $limit, 0, 0, 1);
1657$topicmail =
"SendOrderRef";
1658$modelmail =
"order_send";
1660$trackid =
'ord'.$object->id;
1661include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
1663if ($massaction ==
'prevalidate') {
1664 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassValidation"), $langs->trans(
"ConfirmMassValidationQuestion"),
"validate",
null,
'', 0, 200, 500, 1);
1666if ($massaction ==
'preshipped') {
1667 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"CloseOrder"), $langs->trans(
"ConfirmCloseOrder"),
"shipped",
null,
'', 0, 200, 500, 1);
1670if ($massaction ==
'createbills') {
1671 print
'<input type="hidden" name="massaction" value="confirm_createbills">';
1673 print
'<table class="noborder centpercent">';
1676 print $langs->trans(
'DateInvoice');
1679 print $form->selectDate(
'',
'', 0, 0, 0,
'', 1, 1);
1684 print $langs->trans(
'CreateOneBillByThird');
1687 print $form->selectyesno(
'createbills_onebythird',
getDolGlobalString(
'MAIN_ORDERLIST_CREATEBILLS_ONEBYTHIRD',
'no'), 1);
1692 print $langs->trans(
'ValidateInvoices');
1696 print $form->selectyesno(
'validate_invoices', 0, 1, 1);
1697 $langs->load(
"errors");
1698 print
' ('.$langs->trans(
"WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal").
')';
1700 print $form->selectyesno(
'validate_invoices', 0, 1);
1702 if (!empty($conf->workflow->enabled) &&
getDolGlobalString(
'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER')) {
1703 print
' <span class="opacitymedium">'.$langs->trans(
"IfValidateInvoiceIsNoOrderStayUnbilled").
'</span>';
1705 print
' <span class="opacitymedium">'.$langs->trans(
"OptionToSetOrderBilledNotEnabled").
'</span>';
1711 print
'<div class="center">';
1712 print
'<input type="submit" class="button" id="createbills" name="createbills" value="'.$langs->trans(
'CreateInvoiceForThisCustomer').
'"> ';
1713 print
'<input type="submit" class="button button-cancel" id="cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
1720 foreach ($fieldstosearchall as $key => $val) {
1721 $fieldstosearchall[$key] = $langs->trans($val);
1722 $setupstring .= $key.
"=".$val.
";";
1724 print
'<!-- Search done like if MYOBJECT_QUICKSEARCH_ON_FIELDS = '.$setupstring.
' -->'.
"\n";
1725 print
'<div class="divsearchfieldfilter">'.$langs->trans(
"FilterOnInto", $search_all).implode(
', ', $fieldstosearchall).
'</div>';
1730if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'read')) {
1732 $moreforfilter .= $formcategory->getFilterBox(Categorie::TYPE_ORDER, $searchCategoryOrderList,
'minwidth300', $searchCategoryOrderOperator ? $searchCategoryOrderOperator : 0);
1736if ($user->hasRight(
"user",
"user",
"lire")) {
1737 $langs->load(
"commercial");
1738 $moreforfilter .=
'<div class="divsearchfield">';
1739 $tmptitle = $langs->trans(
'ThirdPartiesOfSaleRepresentative');
1740 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$formother->select_salesrepresentatives($search_sale,
'search_sale', $user, 0, $tmptitle,
'maxwidth250 widthcentpercentminusx');
1741 $moreforfilter .=
'</div>';
1744if ($user->hasRight(
"user",
"user",
"lire")) {
1745 $moreforfilter .=
'<div class="divsearchfield">';
1746 $tmptitle = $langs->trans(
'LinkedToSpecificUsers');
1747 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$form->select_dolusers($search_user,
'search_user', $tmptitle,
null, 0,
'',
'',
'0', 0, 0,
'', 0,
'',
'maxwidth250 widthcentpercentminusx');
1748 $moreforfilter .=
'</div>';
1752if (
isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire") && ($user->hasRight(
"produit",
"lire") || $user->hasRight(
"service",
"lire"))) {
1753 include_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1754 $moreforfilter .=
'<div class="divsearchfield">';
1755 $tmptitle = $langs->trans(
'IncludingProductWithTag');
1756 $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT,
'',
'parent', 0, array(), 1);
1757 $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);
1758 $moreforfilter .=
'</div>';
1761if (
isModEnabled(
'category') && $user->hasRight(
"categorie",
"lire")) {
1762 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1763 $moreforfilter .=
'<div class="divsearchfield">';
1764 $tmptitle = $langs->trans(
'CustomersProspectsCategoriesShort');
1765 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$formother->select_categories(
'customer', $search_categ_cus,
'search_categ_cus', 1, $tmptitle,
'maxwidth300 widthcentpercentminusx');
1766 $moreforfilter .=
'</div>';
1770 require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
1772 $moreforfilter .=
'<div class="divsearchfield">';
1773 $tmptitle = $langs->trans(
'Warehouse');
1774 $moreforfilter .=
img_picto($tmptitle,
'stock',
'class="pictofixedwidth"').$formproduct->selectWarehouses($search_warehouse,
'search_warehouse',
'', 1, 0, 0, $tmptitle, 0, 0, array(),
'maxwidth250 widthcentpercentminusx');
1775 $moreforfilter .=
'</div>';
1778$parameters = array();
1779$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1780if (empty($reshook)) {
1781 $moreforfilter .= $hookmanager->resPrint;
1783 $moreforfilter = $hookmanager->resPrint;
1786if (!empty($moreforfilter)) {
1787 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1788 print $moreforfilter;
1792$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
1793$htmlofselectarray = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
1794$selectedfields = ($mode !=
'kanban' ? $htmlofselectarray :
'');
1795$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons(
'checkforselect', 1) :
'');
1798 $selectedfields .=
'<script>';
1799 $selectedfields .=
' $(document).ready(function() {';
1800 $selectedfields .=
' console.log("Autoclick on checkforselects");';
1801 $selectedfields .=
' $("#checkforselects").click();';
1802 $selectedfields .=
' $("#massaction").val("createbills").change();';
1803 $selectedfields .=
' });';
1804 $selectedfields .=
'</script>';
1807print
'<div class="div-table-responsive">';
1808print
'<table class="tagtable nobottomiftotal liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
1812print
'<tr class="liste_titre_filter">';
1815 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
1816 $searchpicto = $form->showFilterButtons(
'left');
1822if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
1823 print
'<td class="liste_titre">';
1824 print
'<input class="flat" size="6" type="text" name="search_id" value="'.dol_escape_htmltag($search_id).
'">';
1829if (!empty($arrayfields[
'c.ref'][
'checked'])) {
1830 print
'<td class="liste_titre">';
1831 print
'<input class="flat maxwidth50imp" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
1835if (!empty($arrayfields[
'c.ref_ext'][
'checked'])) {
1836 print
'<td class="liste_titre">';
1837 print
'<input class="flat maxwidth50imp" type="text" name="search_ref_ext" value="'.dol_escape_htmltag($search_ref_ext).
'">';
1841if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
1842 print
'<td class="liste_titre" align="left">';
1843 print
'<input class="flat" type="text" size="6" name="search_ref_customer" value="'.dol_escape_htmltag($search_ref_customer).
'">';
1847if (!empty($arrayfields[
'p.ref'][
'checked'])) {
1848 print
'<td class="liste_titre"><input type="text" class="flat" size="6" name="search_project_ref" value="'.dol_escape_htmltag($search_project_ref).
'"></td>';
1851if (!empty($arrayfields[
'p.title'][
'checked'])) {
1852 print
'<td class="liste_titre"><input type="text" class="flat" size="6" name="search_project" value="'.dol_escape_htmltag($search_project).
'"></td>';
1855if (!empty($arrayfields[
's.nom'][
'checked'])) {
1856 print
'<td class="liste_titre">';
1857 print
'<input class="flat maxwidth75imp" type="text" name="search_company" value="'.dol_escape_htmltag((
string) $search_company).
'"'.(!empty($user->socid) ?
" disabled" :
"").
'>';
1861if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
1862 print
'<td class="liste_titre">';
1863 print
'<input class="flat maxwidth75imp" type="text" name="search_company_alias" value="'.dol_escape_htmltag($search_company_alias).
'">';
1867if (!empty($arrayfields[
's2.nom'][
'checked'])) {
1868 print
'<td class="liste_titre">';
1869 print
'<input class="flat maxwidth100" type="text" name="search_parent_name" value="'.dol_escape_htmltag($search_parent_name).
'">';
1873if (!empty($arrayfields[
's.town'][
'checked'])) {
1874 print
'<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).
'"></td>';
1877if (!empty($arrayfields[
's.zip'][
'checked'])) {
1878 print
'<td class="liste_titre"><input class="flat maxwidth50imp" type="text" name="search_zip" value="'.dol_escape_htmltag($search_zip).
'"></td>';
1881if (!empty($arrayfields[
'state.nom'][
'checked'])) {
1882 print
'<td class="liste_titre">';
1883 print
'<input class="flat maxwidth50imp" type="text" name="search_state" value="'.dol_escape_htmltag($search_state).
'">';
1887if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
1888 print
'<td class="liste_titre" align="center">';
1889 print $form->select_country($search_country,
'search_country',
'', 0,
'minwidth100imp maxwidth100');
1893if (!empty($arrayfields[
'typent.code'][
'checked'])) {
1894 print
'<td class="liste_titre maxwidthonsmartphone center">';
1895 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);
1899if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
1900 print
'<td class="liste_titre center">';
1901 print
'<div class="nowrapfordate">';
1902 print $form->selectDate($search_dateorder_start ? $search_dateorder_start : -1,
'search_dateorder_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1904 print
'<div class="nowrapfordate">';
1905 print $form->selectDate($search_dateorder_end ? $search_dateorder_end : -1,
'search_dateorder_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1909if (!empty($arrayfields[
'c.delivery_date'][
'checked'])) {
1910 print
'<td class="liste_titre center">';
1911 print
'<div class="nowrapfordate">';
1912 print $form->selectDate($search_datedelivery_start ? $search_datedelivery_start : -1,
'search_datedelivery_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1914 print
'<div class="nowrapfordate">';
1915 print $form->selectDate($search_datedelivery_end ? $search_datedelivery_end : -1,
'search_datedelivery_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1920if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
1921 print
'<td class="liste_titre">';
1922 $form->selectShippingMethod($search_fk_shipping_method,
'search_fk_shipping_method',
'', 1,
'', 1);
1926if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
1927 print
'<td class="liste_titre">';
1928 print $form->getSelectConditionsPaiements((
int) $search_fk_cond_reglement,
'search_fk_cond_reglement', 1, 1, 1);
1932if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
1933 print
'<td class="liste_titre">';
1934 print $form->select_types_paiements($search_fk_mode_reglement,
'search_fk_mode_reglement',
'', 0, 1, 1, 0, -1,
'', 1);
1938if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
1939 print
'<td class="liste_titre">';
1940 $form->selectInputReason($search_fk_input_reason,
'search_fk_input_reason',
'', 1,
'', 1);
1944if (!empty($arrayfields[
'c.module_source'][
'checked'])) {
1945 print
'<td class="liste_titre">';
1946 print
'<input class="flat maxwidth75" type="text" name="search_module_source" value="'.dol_escape_htmltag($search_module_source).
'">';
1950if (!empty($arrayfields[
'c.pos_source'][
'checked'])) {
1951 print
'<td class="liste_titre">';
1952 print
'<input class="flat maxwidth50" type="text" name="search_pos_source" value="'.dol_escape_htmltag($search_pos_source).
'">';
1956if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
1957 print
'<td class="liste_titre right">';
1958 print
'<input class="flat" type="text" size="4" name="search_total_ht" value="'.dol_escape_htmltag($search_total_ht).
'">';
1962if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
1963 print
'<td class="liste_titre right">';
1964 print
'<input class="flat" type="text" size="4" name="search_total_vat" value="'.dol_escape_htmltag($search_total_vat).
'">';
1968if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
1969 print
'<td class="liste_titre right">';
1970 print
'<input class="flat" type="text" size="5" name="search_total_ttc" value="'.$search_total_ttc.
'">';
1974if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
1975 print
'<td class="liste_titre">';
1976 print $form->selectMultiCurrency($search_multicurrency_code,
'search_multicurrency_code', 1);
1980if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
1981 print
'<td class="liste_titre">';
1982 print
'<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).
'">';
1986if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
1987 print
'<td class="liste_titre right">';
1988 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).
'">';
1992if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
1993 print
'<td class="liste_titre right">';
1994 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).
'">';
1998if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
1999 print
'<td class="liste_titre right">';
2000 print
'<input class="flat width75" type="text" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).
'">';
2004if (!empty($arrayfields[
'u.login'][
'checked'])) {
2005 print
'<td class="liste_titre">';
2006 print
'<input class="flat width75" type="text" name="search_login" value="'.dol_escape_htmltag($search_login).
'">';
2010if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2011 print
'<td class="liste_titre"></td>';
2013if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2014 print
'<td class="liste_titre right">';
2017if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2018 print
'<td class="liste_titre right">';
2021if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2022 print
'<td class="liste_titre right">';
2025if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2026 print
'<td class="liste_titre right">';
2031if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2032 print
'<td class="liste_titre">';
2036if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2037 print
'<td class="liste_titre">';
2041if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2042 print
'<td class="liste_titre center">';
2043 print
'<div class="nowrapfordate">';
2044 print $form->selectDate($search_datecloture_start ? $search_datecloture_start : -1,
'search_datecloture_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
2046 print
'<div class="nowrapfordate">';
2047 print $form->selectDate($search_datecloture_end ? $search_datecloture_end : -1,
'search_datecloture_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
2052if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2053 print
'<td class="liste_titre">';
2054 print
'<input class="flat width75" type="text" name="search_note_public" value="'.dolPrintHTMLForAttribute($search_note_public).
'">';
2058if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
2059 print
'<td class="liste_titre">';
2060 print
'<input class="flat width75" type="text" name="search_note_private" value="'.dolPrintHTMLForAttribute($search_note_private).
'">';
2064if (!empty($arrayfields[
'shippable'][
'checked'])) {
2065 print
'<td class="liste_titre maxwidthonsmartphone" align="center">';
2068 print
'<input type="checkbox" name="show_shippable_command" value="1"'.($show_shippable_command ?
' checked' :
'').
'>';
2069 print $langs->trans(
'ShowShippableStatus');
2071 $show_shippable_command = 1;
2077include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
2080$parameters = array(
'arrayfields' => $arrayfields);
2081$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action);
2082print $hookmanager->resPrint;
2085if (!empty($arrayfields[
'c.facture'][
'checked'])) {
2086 print
'<td class="liste_titre maxwidthonsmartphone center">';
2087 print $form->selectyesno(
'search_billed', $search_billed, 1, 0, 1, 1);
2092if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
2093 print
'<td class="liste_titre maxwidthonsmartphone center">';
2094 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
2099if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
2100 print
'<td class="liste_titre center parentonrightofpage">';
2101 $liststatus = array(
2105 -2 => $langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort"),
2106 -3 => $langs->trans(
"StatusOrderValidatedShort").
'+'.$langs->trans(
"StatusOrderSentShort").
'+'.$langs->trans(
"StatusOrderDelivered"),
2111 print $form->selectarray(
'search_status', $liststatus, $search_status, -5, 0, 0,
'', 0, 0, 0,
'',
'search_status width100 onrightofpage', 1);
2116 print
'<td class="liste_titre center maxwidthsearch">';
2117 $searchpicto = $form->showFilterButtons();
2136print
'<tr class="liste_titre">';
2140 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'maxwidthsearch center ');
2143if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
2144 print_liste_field_titre($arrayfields[
'c.rowid'][
'label'], $_SERVER[
"PHP_SELF"],
'c.rowid',
'', $param,
'', $sortfield, $sortorder,
'center ');
2147if (!empty($arrayfields[
'c.ref'][
'checked'])) {
2148 print_liste_field_titre($arrayfields[
'c.ref'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref',
'', $param,
'', $sortfield, $sortorder);
2151if (!empty($arrayfields[
'c.ref_ext'][
'checked'])) {
2152 print_liste_field_titre($arrayfields[
'c.ref_ext'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref_ext',
'', $param,
'', $sortfield, $sortorder);
2155if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
2156 print_liste_field_titre($arrayfields[
'c.ref_client'][
'label'], $_SERVER[
"PHP_SELF"],
'c.ref_client',
'', $param,
'', $sortfield, $sortorder);
2159if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2160 print_liste_field_titre($arrayfields[
'p.ref'][
'label'], $_SERVER[
"PHP_SELF"],
"p.ref",
"", $param,
'', $sortfield, $sortorder);
2163if (!empty($arrayfields[
'p.title'][
'checked'])) {
2164 print_liste_field_titre($arrayfields[
'p.title'][
'label'], $_SERVER[
"PHP_SELF"],
"p.title",
"", $param,
'', $sortfield, $sortorder);
2167if (!empty($arrayfields[
's.nom'][
'checked'])) {
2168 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
"PHP_SELF"],
's.nom',
'', $param,
'', $sortfield, $sortorder);
2171if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2173 print_liste_field_titre($arrayfields[
's.name_alias'][
'label'], $_SERVER[
"PHP_SELF"],
's.name_alias',
'', $param,
'', $sortfield, $sortorder);
2176if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2177 print_liste_field_titre($arrayfields[
's2.nom'][
'label'], $_SERVER[
'PHP_SELF'],
's2.nom',
'', $param,
'', $sortfield, $sortorder);
2180if (!empty($arrayfields[
's.town'][
'checked'])) {
2181 print_liste_field_titre($arrayfields[
's.town'][
'label'], $_SERVER[
"PHP_SELF"],
's.town',
'', $param,
'', $sortfield, $sortorder);
2184if (!empty($arrayfields[
's.zip'][
'checked'])) {
2185 print_liste_field_titre($arrayfields[
's.zip'][
'label'], $_SERVER[
"PHP_SELF"],
's.zip',
'', $param,
'', $sortfield, $sortorder);
2188if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2189 print_liste_field_titre($arrayfields[
'state.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"state.nom",
"", $param,
'', $sortfield, $sortorder);
2192if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2193 print_liste_field_titre($arrayfields[
'country.code_iso'][
'label'], $_SERVER[
"PHP_SELF"],
"country.code_iso",
"", $param,
'', $sortfield, $sortorder,
'center ');
2196if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2197 print_liste_field_titre($arrayfields[
'typent.code'][
'label'], $_SERVER[
"PHP_SELF"],
"typent.code",
"", $param,
'', $sortfield, $sortorder,
'center ');
2200if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
2201 print_liste_field_titre($arrayfields[
'c.date_commande'][
'label'], $_SERVER[
"PHP_SELF"],
'c.date_commande',
'', $param,
'', $sortfield, $sortorder,
'center ');
2204if (!empty($arrayfields[
'c.delivery_date'][
'checked'])) {
2205 print_liste_field_titre($arrayfields[
'c.delivery_date'][
'label'], $_SERVER[
"PHP_SELF"],
'c.date_livraison',
'', $param,
'', $sortfield, $sortorder,
'center ');
2208if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
2209 print_liste_field_titre($arrayfields[
'c.fk_shipping_method'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_shipping_method",
"", $param,
'', $sortfield, $sortorder);
2212if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
2213 print_liste_field_titre($arrayfields[
'c.fk_cond_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_cond_reglement",
"", $param,
'', $sortfield, $sortorder);
2216if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
2217 print_liste_field_titre($arrayfields[
'c.fk_mode_reglement'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_mode_reglement",
"", $param,
'', $sortfield, $sortorder);
2220if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
2221 print_liste_field_titre($arrayfields[
'c.fk_input_reason'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_input_reason",
"", $param,
'', $sortfield, $sortorder);
2224if (!empty($arrayfields[
'c.module_source'][
'checked'])) {
2225 print_liste_field_titre($arrayfields[
'c.module_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.module_source",
"", $param,
"", $sortfield, $sortorder);
2228if (!empty($arrayfields[
'c.pos_source'][
'checked'])) {
2229 print_liste_field_titre($arrayfields[
'c.pos_source'][
'label'], $_SERVER[
"PHP_SELF"],
"f.pos_source",
"", $param,
"", $sortfield, $sortorder);
2232if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
2233 print_liste_field_titre($arrayfields[
'c.total_ht'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
2236if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
2237 print_liste_field_titre($arrayfields[
'c.total_vat'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
2240if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
2241 print_liste_field_titre($arrayfields[
'c.total_ttc'][
'label'], $_SERVER[
"PHP_SELF"],
'c.total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
2244if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
2245 print_liste_field_titre($arrayfields[
'c.multicurrency_code'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_code',
'', $param,
'', $sortfield, $sortorder);
2248if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
2249 print_liste_field_titre($arrayfields[
'c.multicurrency_tx'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_tx',
'', $param,
'', $sortfield, $sortorder);
2252if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
2253 print_liste_field_titre($arrayfields[
'c.multicurrency_total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_ht',
'', $param,
'class="right"', $sortfield, $sortorder);
2256if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
2257 print_liste_field_titre($arrayfields[
'c.multicurrency_total_vat'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_tva',
'', $param,
'class="right"', $sortfield, $sortorder);
2260if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
2261 print_liste_field_titre($arrayfields[
'c.multicurrency_total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'c.multicurrency_total_ttc',
'', $param,
'class="right"', $sortfield, $sortorder);
2264if (!empty($arrayfields[
'u.login'][
'checked'])) {
2265 print_liste_field_titre($arrayfields[
'u.login'][
'label'], $_SERVER[
"PHP_SELF"],
'u.login',
'', $param,
'', $sortfield, $sortorder);
2268if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2269 print_liste_field_titre($arrayfields[
'sale_representative'][
'label'], $_SERVER[
"PHP_SELF"],
"",
"",
"$param",
'', $sortfield, $sortorder);
2272if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2273 print_liste_field_titre($arrayfields[
'total_pa'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2276if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2277 print_liste_field_titre($arrayfields[
'total_margin'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2280if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2281 print_liste_field_titre($arrayfields[
'total_margin_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2284if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2285 print_liste_field_titre($arrayfields[
'total_mark_rate'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'class="right"', $sortfield, $sortorder);
2289if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2290 print_liste_field_titre($arrayfields[
'c.datec'][
'label'], $_SERVER[
"PHP_SELF"],
"c.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2293if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2294 print_liste_field_titre($arrayfields[
'c.tms'][
'label'], $_SERVER[
"PHP_SELF"],
"c.tms",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2297if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2298 print_liste_field_titre($arrayfields[
'c.date_cloture'][
'label'], $_SERVER[
"PHP_SELF"],
"c.date_cloture",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
2301if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2302 print_liste_field_titre($arrayfields[
'c.note_public'][
'label'], $_SERVER[
"PHP_SELF"],
"c.note_public",
"", $param,
'', $sortfield, $sortorder,
'');
2305if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
2306 print_liste_field_titre($arrayfields[
'c.note_private'][
'label'], $_SERVER[
"PHP_SELF"],
"c.note_private",
"", $param,
'', $sortfield, $sortorder,
'');
2309if (!empty($arrayfields[
'shippable'][
'checked'])) {
2310 print_liste_field_titre($arrayfields[
'shippable'][
'label'], $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
2314include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
2317$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder,
'totalarray' => &$totalarray);
2318$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
2319print $hookmanager->resPrint;
2322if (!empty($arrayfields[
'c.facture'][
'checked'])) {
2323 print_liste_field_titre($arrayfields[
'c.facture'][
'label'], $_SERVER[
"PHP_SELF"],
'c.facture',
'', $param,
'', $sortfield, $sortorder,
'center ');
2327if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
2328 print_liste_field_titre($arrayfields[
'c.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"c.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
2332if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
2333 print_liste_field_titre($arrayfields[
'c.fk_statut'][
'label'], $_SERVER[
"PHP_SELF"],
"c.fk_statut",
"", $param,
'', $sortfield, $sortorder,
'center ');
2338 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'', $param,
'', $sortfield, $sortorder,
'maxwidthsearch center ');
2345$productstat_cache = array();
2346$productstat_cachevirtual = array();
2347$getNomUrl_cache = array();
2349$generic_commande =
new Commande($db);
2350$generic_product =
new Product($db);
2351$userstatic =
new User($db);
2353$with_margin_info =
false;
2355 !empty($arrayfields[
'total_pa'][
'checked'])
2356 || !empty($arrayfields[
'total_margin'][
'checked'])
2357 || !empty($arrayfields[
'total_margin_rate'][
'checked'])
2358 || !empty($arrayfields[
'total_mark_rate'][
'checked'])
2361 $with_margin_info =
true;
2373$imaxinloop = ($limit ? min($num, $limit) : $num);
2374while ($i < $imaxinloop) {
2375 $obj = $db->fetch_object($resql);
2380 $typenArray = $formcompany->typent_array(1);
2388 $companystatic->id = $obj->socid;
2389 $companystatic->name = $obj->name;
2390 $companystatic->name_alias = $obj->alias;
2391 $companystatic->client = $obj->client;
2392 $companystatic->fournisseur = $obj->fournisseur;
2393 $companystatic->code_client = $obj->code_client;
2394 $companystatic->email = $obj->email;
2395 $companystatic->phone = $obj->phone;
2396 $companystatic->address = $obj->address;
2397 $companystatic->zip = $obj->zip;
2398 $companystatic->town = $obj->town;
2399 $companystatic->country_code = $obj->country_code;
2400 if (!isset($getNomUrl_cache[$obj->socid])) {
2401 $getNomUrl_cache[$obj->socid] = $companystatic->getNomUrl(1,
'customer', 100, 0, 1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2404 $generic_commande->id = $obj->rowid;
2405 $generic_commande->ref = $obj->ref;
2406 $generic_commande->status = $obj->fk_statut;
2407 $generic_commande->statut = $obj->fk_statut;
2408 $generic_commande->status = $obj->fk_statut;
2409 $generic_commande->billed = $obj->billed;
2410 $generic_commande->date = $db->jdate($obj->date_commande);
2411 $generic_commande->delivery_date = $db->jdate($obj->delivery_date);
2412 $generic_commande->ref_client = $obj->ref_client;
2413 $generic_commande->total_ht = $obj->total_ht;
2414 $generic_commande->total_tva = $obj->total_tva;
2415 $generic_commande->total_ttc = $obj->total_ttc;
2416 $generic_commande->note_public = $obj->note_public;
2417 $generic_commande->note_private = $obj->note_private;
2419 $generic_commande->thirdparty = $companystatic;
2422 $projectstatic->id = $obj->project_id;
2423 $projectstatic->ref = $obj->project_ref;
2424 $projectstatic->title = $obj->project_label;
2426 $marginInfo = array();
2427 if ($with_margin_info) {
2428 $generic_commande->fetch_lines();
2429 $marginInfo = $formmargin->getMarginInfosArray($generic_commande);
2430 $total_ht += $obj->total_ht;
2431 $total_margin += $marginInfo[
'total_margin'];
2434 if ($mode ==
'kanban') {
2436 print
'<tr class="trkanban"><td colspan="'.$savnbfield.
'">';
2437 print
'<div class="box-flex-container kanban">';
2442 if ($massactionbutton || $massaction) {
2444 if (in_array(
$object->id, $arrayofselected)) {
2448 print $generic_commande->getKanbanView(
'', array(
'selected' => $selected));
2449 if ($i == ($imaxinloop - 1)) {
2456 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' :
'').
'">';
2460 print
'<td class="nowrap center">';
2461 if ($massactionbutton || $massaction) {
2463 if (in_array($obj->rowid, $arrayofselected)) {
2466 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
2475 if (!empty($arrayfields[
'c.rowid'][
'checked'])) {
2476 print
'<td class="center" data-key="id">'.$obj->rowid.
'</td>';
2483 if (!empty($arrayfields[
'c.ref'][
'checked'])) {
2484 print
'<td class="nowraponall">';
2485 $getNomUrlOption = $search_status != 2 ? 0 : $obj->fk_statut;
2491 $getNomUrlOption =
'';
2493 print $generic_commande->getNomUrl(1, $getNomUrlOption, 0, 0, 0, 1, 1);
2497 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid;
2498 print $formfile->getDocumentsLink($generic_commande->element, $filename, $filedir);
2507 if (!empty($arrayfields[
'c.ref_ext'][
'checked'])) {
2508 print
'<td class="nowrap tdoverflowmax75" title="'.dol_escape_htmltag($obj->ref_ext).
'">';
2517 if (!empty($arrayfields[
'c.ref_client'][
'checked'])) {
2518 print
'<td class="nowrap tdoverflowmax150" title="'.dol_escape_htmltag($obj->ref_client).
'">';
2527 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
2528 print
'<td class="nocellnopadd nowraponall">';
2529 if ($obj->project_id > 0) {
2530 print $projectstatic->getNomUrl(1);
2539 if (!empty($arrayfields[
'p.title'][
'checked'])) {
2540 print
'<td class="nowraponall">';
2541 if ($obj->project_id > 0) {
2542 print $projectstatic->title;
2551 if (!empty($arrayfields[
's.nom'][
'checked'])) {
2552 print
'<td class="tdoverflowmax150">';
2554 print $companystatic->getNomUrl(1,
'customer', 100, 0, 1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
2556 print $getNomUrl_cache[$obj->socid];
2561 if ($user->hasRight(
'facture',
'creer')) {
2562 if (($obj->fk_statut > 0 && $obj->fk_statut < 3) || ($obj->fk_statut == 3 && $obj->billed == 0)) {
2563 print
' <a href="'.DOL_URL_ROOT.
'/commande/list.php?socid='.$companystatic->id.
'&search_billed=0&autoselectall=1">';
2564 print
img_picto($langs->trans(
"CreateInvoiceForThisCustomer").
' : '.$companystatic->name,
'object_bill',
'hideonsmartphone').
'</a>';
2575 if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
2576 print
'<td class="nocellnopadd tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->alias).
'">';
2585 if (!empty($arrayfields[
's2.nom'][
'checked'])) {
2586 print
'<td class="tdoverflowmax200">';
2587 if ($obj->fk_parent > 0) {
2588 if (!isset($company_url_list[$obj->fk_parent])) {
2589 $companyparent =
new Societe($db);
2590 $res = $companyparent->fetch($obj->fk_parent);
2592 $company_url_list[$obj->fk_parent] = $companyparent->getNomUrl(1);
2595 if (isset($company_url_list[$obj->fk_parent])) {
2596 print $company_url_list[$obj->fk_parent];
2606 if (!empty($arrayfields[
's.town'][
'checked'])) {
2607 print
'<td class="tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->town).
'">';
2616 if (!empty($arrayfields[
's.zip'][
'checked'])) {
2617 print
'<td class="tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->zip).
'">';
2626 if (!empty($arrayfields[
'state.nom'][
'checked'])) {
2627 print
'<td class="tdoverflowmax100" title="'.dolPrintHTMLForTextArea($obj->state_name).
'">'.
dolPrintLabel($obj->state_name).
"</td>\n";
2634 if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
2635 $tmparray =
getCountry($obj->fk_pays,
'all');
2636 print
'<td class="center tdoverflowmax100" title="'.dolPrintHTMLForAttribute($tmparray[
'label']).
'">';
2645 if (!empty($arrayfields[
'typent.code'][
'checked'])) {
2646 if (!is_array($typenArray) || count($typenArray) == 0) {
2647 $typenArray = $formcompany->typent_array(1);
2649 if (!empty($obj->typent_code)) {
2650 print
'<td class="center tdoverflowmax100" title="'.dolPrintHTMLForAttribute($typenArray[$obj->typent_code]).
'">';
2651 print $typenArray[$obj->typent_code];
2653 print
'<td class="center tdoverflowmax100">';
2663 if (!empty($arrayfields[
'c.date_commande'][
'checked'])) {
2664 print
'<td class="center nowraponall">';
2667 if ($generic_commande->hasDelay()) {
2668 print
img_picto($langs->trans(
"Late").
' : '.$generic_commande->showDelay(),
"warning");
2677 if (!empty($arrayfields[
'c.delivery_date'][
'checked'])) {
2678 print
'<td class="center nowraponall">';
2679 print
dol_print_date($db->jdate($obj->delivery_date),
'dayhour');
2687 if (!empty($arrayfields[
'c.fk_shipping_method'][
'checked'])) {
2689 $form->formSelectShippingMethod(
'', $obj->fk_shipping_method,
'none', 1);
2697 if (!empty($arrayfields[
'c.fk_cond_reglement'][
'checked'])) {
2699 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'], $obj->fk_cond_reglement,
'none', 0,
'', 1, $obj->deposit_percent);
2707 if (!empty($arrayfields[
'c.fk_mode_reglement'][
'checked'])) {
2709 $form->form_modes_reglement($_SERVER[
'PHP_SELF'], $obj->fk_mode_reglement,
'none',
'', -1);
2717 if (!empty($arrayfields[
'c.fk_input_reason'][
'checked'])) {
2719 $form->formInputReason($_SERVER[
'PHP_SELF'], $obj->fk_input_reason,
'none', 0);
2727 if (!empty($arrayfields[
'c.module_source'][
'checked'])) {
2736 if (!empty($arrayfields[
'c.pos_source'][
'checked'])) {
2746 if (!empty($arrayfields[
'c.total_ht'][
'checked'])) {
2747 print
'<td class="nowraponall right"><span class="amount">'.price($obj->total_ht).
"</span></td>\n";
2754 if (isset($totalarray[
'val'][
'c.total_ht'])) {
2755 $totalarray[
'val'][
'c.total_ht'] += $obj->total_ht;
2757 $totalarray[
'val'][
'c.total_ht'] = $obj->total_ht;
2762 if (!empty($arrayfields[
'c.total_vat'][
'checked'])) {
2763 print
'<td class="nowrap right"><span class="amount">'.price($obj->total_tva).
"</span></td>\n";
2770 if (isset($totalarray[
'val'][
'c.total_tva'])) {
2771 $totalarray[
'val'][
'c.total_tva'] += $obj->total_tva;
2773 $totalarray[
'val'][
'c.total_tva'] = $obj->total_tva;
2778 if (!empty($arrayfields[
'c.total_ttc'][
'checked'])) {
2779 print
'<td class="nowrap right"><span class="amount">'.price($obj->total_ttc).
"</span></td>\n";
2786 if (isset($totalarray[
'val'][
'c.total_ttc'])) {
2787 $totalarray[
'val'][
'c.total_ttc'] += $obj->total_ttc;
2789 $totalarray[
'val'][
'c.total_ttc'] = $obj->total_ttc;
2794 if (!empty($arrayfields[
'c.multicurrency_code'][
'checked'])) {
2795 print
'<td class="nowrap">'.$obj->multicurrency_code.
' - '.$langs->trans(
'Currency'.$obj->multicurrency_code).
"</td>\n";
2802 if (!empty($arrayfields[
'c.multicurrency_tx'][
'checked'])) {
2803 print
'<td class="nowrap">';
2804 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid, $obj->multicurrency_tx,
'none', $obj->multicurrency_code);
2812 if (!empty($arrayfields[
'c.multicurrency_total_ht'][
'checked'])) {
2813 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_ht).
"</span></td>\n";
2819 if (!empty($arrayfields[
'c.multicurrency_total_vat'][
'checked'])) {
2820 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_vat).
"</span></td>\n";
2826 if (!empty($arrayfields[
'c.multicurrency_total_ttc'][
'checked'])) {
2827 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_ttc).
"</span></td>\n";
2833 $userstatic->id = $obj->fk_user_author;
2834 $userstatic->login = $obj->login;
2835 $userstatic->lastname = $obj->lastname;
2836 $userstatic->firstname = $obj->firstname;
2837 $userstatic->email = $obj->user_email;
2838 $userstatic->status = $obj->user_statut;
2839 $userstatic->entity = $obj->entity;
2840 $userstatic->photo = $obj->photo;
2841 $userstatic->office_phone = $obj->office_phone;
2842 $userstatic->office_fax = $obj->office_fax;
2843 $userstatic->user_mobile = $obj->user_mobile;
2844 $userstatic->job = $obj->job;
2845 $userstatic->gender = $obj->gender;
2848 if (!empty($arrayfields[
'u.login'][
'checked'])) {
2849 print
'<td class="tdoverflowmax125">';
2850 if ($userstatic->id) {
2851 print $userstatic->getNomUrl(-1);
2862 if (!empty($arrayfields[
'sale_representative'][
'checked'])) {
2864 if ($obj->socid > 0) {
2865 $listsalesrepresentatives = $companystatic->getSalesRepresentatives($user);
2866 if ($listsalesrepresentatives < 0) {
2869 $nbofsalesrepresentative = count($listsalesrepresentatives);
2870 if ($nbofsalesrepresentative > 6) {
2872 print $nbofsalesrepresentative;
2873 } elseif ($nbofsalesrepresentative > 0) {
2875 foreach ($listsalesrepresentatives as $val) {
2876 $userstatic->id = $val[
'id'];
2877 $userstatic->lastname = $val[
'lastname'];
2878 $userstatic->firstname = $val[
'firstname'];
2879 $userstatic->email = $val[
'email'];
2880 $userstatic->status = $val[
'statut'];
2881 $userstatic->entity = $val[
'entity'];
2882 $userstatic->photo = $val[
'photo'];
2883 $userstatic->login = $val[
'login'];
2884 $userstatic->office_phone = $val[
'office_phone'];
2885 $userstatic->office_fax = $val[
'office_fax'];
2886 $userstatic->user_mobile = $val[
'user_mobile'];
2887 $userstatic->job = $val[
'job'];
2888 $userstatic->gender = $val[
'gender'];
2890 print ($nbofsalesrepresentative < 2) ? $userstatic->getNomUrl(-1,
'', 0, 0, 12) : $userstatic->getNomUrl(-2);
2892 if ($j < $nbofsalesrepresentative) {
2909 if (!empty($arrayfields[
'total_pa'][
'checked'])) {
2910 print
'<td class="right nowrap">'.price($marginInfo[
'pa_total']).
'</td>';
2917 if (!empty($arrayfields[
'total_margin'][
'checked'])) {
2918 print
'<td class="right nowrap">'.price($marginInfo[
'total_margin']).
'</td>';
2926 if (!isset($totalarray[
'val'][
'total_margin'])) {
2930 $totalarray[
'val'][
'total_margin'] += $marginInfo[
'total_margin'];
2934 if (!empty($arrayfields[
'total_margin_rate'][
'checked'])) {
2935 print
'<td class="right nowrap">'.(($marginInfo[
'total_margin_rate'] ==
'') ?
'' :
price($marginInfo[
'total_margin_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
2942 if (!empty($arrayfields[
'total_mark_rate'][
'checked'])) {
2943 print
'<td class="right nowrap">'.(($marginInfo[
'total_mark_rate'] ==
'') ?
'' :
price($marginInfo[
'total_mark_rate'], 0,
'', 0, 0, 2).
'%').
'</td>';
2950 if ($i >= $imaxinloop - 1) {
2951 if (!empty($total_ht)) {
2960 if (!empty($arrayfields[
'c.datec'][
'checked'])) {
2961 print
'<td class="center nowraponall">';
2962 print
dol_print_date($db->jdate($obj->date_creation),
'dayhour',
'tzuserrel');
2970 if (!empty($arrayfields[
'c.tms'][
'checked'])) {
2971 print
'<td class="center nowraponall">';
2972 print
dol_print_date($db->jdate($obj->date_modification),
'dayhour',
'tzuserrel');
2980 if (!empty($arrayfields[
'c.date_cloture'][
'checked'])) {
2981 print
'<td class="center nowraponall">';
2982 print
dol_print_date($db->jdate($obj->date_cloture),
'dayhour',
'tzuserrel');
2990 if (!empty($arrayfields[
'c.note_public'][
'checked'])) {
2991 print
'<td class="sensiblehtmlcontent maxwidth250imp classfortooltip" title="'.dolPrintHTMLForAttribute(
dolGetFirstLineOfText($obj->note_public, 20)).
'">';
2992 print
'<div class="small lineheightsmall twolinesmax-normallineheight">'.dolPrintHTML(
dolGetFirstLineOfText($obj->note_public, 5)).
'</div>';
3000 if (!empty($arrayfields[
'c.note_private'][
'checked'])) {
3001 print
'<td class="sensiblehtmlcontent maxwidth250imp classfortooltip" title="'.dolPrintHTMLForAttribute(
dolGetFirstLineOfText($obj->note_private, 20)).
'">';
3002 print
'<div class="small lineheightsmall twolinesmax-normallineheight">'.dolPrintHTML(
dolGetFirstLineOfText($obj->note_private, 5)).
'</div>';
3010 if (!empty($arrayfields[
'shippable'][
'checked'])) {
3011 print
'<td class="center">';
3012 if (!empty($show_shippable_command) &&
isModEnabled(
'stock')) {
3014 if (($obj->fk_statut > $generic_commande::STATUS_DRAFT) && ($obj->fk_statut < $generic_commande::STATUS_CLOSED)) {
3015 $generic_commande->getLinesArray();
3016 $generic_commande->loadExpeditions();
3020 $numlines = count($generic_commande->lines);
3021 for ($lig = 0; $lig < $numlines; $lig++) {
3022 $orderLine = $generic_commande->lines[$lig];
3023 '@phan-var-force OrderLine $orderLine';
3024 if (isset($generic_commande->expeditions[$orderLine->id])) {
3025 $reliquat = $orderLine->qty - $generic_commande->expeditions[$orderLine->id];
3027 $reliquat = $orderLine->qty;
3029 if ($orderLine->product_type == 0 && $orderLine->fk_product > 0) {
3031 $generic_product->id = $orderLine->fk_product;
3034 if (empty($productstat_cache[$orderLine->fk_product])) {
3035 $generic_product->load_stock(
'nobatch,warehouseopen');
3036 $productstat_cache[$orderLine->fk_product][
'stock_reel'] = $generic_product->stock_reel;
3037 $productstat_cachevirtual[$orderLine->fk_product][
'stock_reel'] = $generic_product->stock_theorique;
3039 $generic_product->stock_reel = $productstat_cache[$orderLine->fk_product][
'stock_reel'];
3041 $generic_product->stock_theorique = $productstat_cachevirtual[$orderLine->fk_product][
'stock_reel'];
3044 if (!array_key_exists($orderLine->fk_product, $stock)) {
3045 $stock[$orderLine->fk_product] = $generic_product->stock_reel;
3048 if ($reliquat > $stock[$orderLine->fk_product]) {
3052 $stock[$orderLine->fk_product] = $stock[$orderLine->fk_product] - $reliquat;
3054 $text_info .= $reliquat.
' x '.$orderLine->product_ref.
' '.
dol_trunc($orderLine->product_label, 20);
3055 $text_info .=
' - '.$langs->trans(
"Stock").
': <span class="'.($generic_product->stock_reel > 0 ?
'ok' :
'error').
'">'.$generic_product->stock_reel.
'</span>';
3056 $text_info .=
' - '.$langs->trans(
"VirtualStock").
': <span class="'.($generic_product->stock_theorique > 0 ?
'ok' :
'error').
'">'.$generic_product->stock_theorique.
'</span>';
3057 $text_info .= ($reliquat != $orderLine->qty ?
' <span class="opacitymedium">('.$langs->trans(
"QtyInOtherShipments").
' '.($orderLine->qty - $reliquat).
')</span>' :
'');
3058 $text_info .=
'<br>';
3065 $stock_order_supplier = 0;
3068 if (empty($productstat_cache[$orderLine->fk_product][
'stats_order_customer'])) {
3069 $generic_product->load_stats_commande(0,
'1,2');
3070 $productstat_cache[$orderLine->fk_product][
'stats_order_customer'] = $generic_product->stats_commande[
'qty'];
3073 $generic_product->stats_commande[
'qty'] = $productstat_cache[$orderLine->fk_product][
'stats_order_customer'];
3075 $stock_order = $generic_product->stats_commande[
'qty'];
3078 if (empty($productstat_cache[$orderLine->fk_product][
'stats_order_supplier'])) {
3079 $generic_product->load_stats_commande_fournisseur(0,
'3');
3080 $productstat_cache[$orderLine->fk_product][
'stats_order_supplier'] = $generic_product->stats_commande_fournisseur[
'qty'];
3083 $generic_product->stats_commande_fournisseur[
'qty'] = $productstat_cache[$orderLine->fk_product][
'stats_order_supplier'];
3085 $stock_order_supplier = $generic_product->stats_commande_fournisseur[
'qty'];
3088 $text_info .= $reliquat.
' x '.$orderLine->ref.
' '.
dol_trunc($orderLine->product_label, 20);
3089 $text_stock_reel = $generic_product->stock_reel.
'/'.$stock_order;
3090 if ($stock_order > $generic_product->stock_reel && !($generic_product->stock_reel < $orderLine->qty)) {
3092 $text_warning .=
'<span class="warning">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
3094 if ($reliquat > $generic_product->stock_reel) {
3095 $text_info .=
'<span class="warning">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
3097 $text_info .=
'<span class="ok">'.$langs->trans(
'Available').
' : '.$text_stock_reel.
'</span>';
3100 $text_info .=
' '.$langs->trans(
'SupplierOrder').
' : '.$stock_order_supplier;
3102 $text_info .= ($reliquat != $orderLine->qty ?
' <span class="opacitymedium">('.$langs->trans(
"QtyInOtherShipments").
' '.($orderLine->qty - $reliquat).
')</span>' :
'');
3103 $text_info .=
'<br>';
3107 if ($notshippable == 0) {
3108 $text_icon =
img_picto(
'',
'dolly',
'', 0, 0, 0,
'',
'green paddingleft');
3109 $text_info = $text_icon.
' '.$langs->trans(
'Shippable').
'<br>'.$text_info;
3111 $text_icon =
img_picto(
'',
'dolly',
'', 0, 0, 0,
'',
'error paddingleft');
3112 $text_info = $text_icon.
' '.$langs->trans(
'NonShippable').
'<br>'.$text_info;
3117 print
'<a href="'.DOL_URL_ROOT.
'/expedition/shipment.php?id='.((int) $obj->rowid).
'">';
3118 print $form->textwithtooltip(
'', $text_info, 2, 1, $text_icon,
'', 2);
3122 print $form->textwithtooltip(
'', $langs->trans(
'NotEnoughForAllOrders').
'<br>'.$text_warning, 2, 1,
img_picto(
'',
'error'),
'', 2);
3132 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
3134 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
3135 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
3136 print $hookmanager->resPrint;
3139 if (!empty($arrayfields[
'c.facture'][
'checked'])) {
3140 print
'<td class="center">';
3142 print
yn($obj->billed, $langs->trans(
"Billed"));
3151 if (!empty($arrayfields[
'c.import_key'][
'checked'])) {
3152 print
'<td class="nowrap center">'.dol_escape_htmltag($obj->import_key).
'</td>';
3159 if (!empty($arrayfields[
'c.fk_statut'][
'checked'])) {
3160 print
'<td class="nowrap center">'.$generic_commande->LibStatut($obj->fk_statut, $obj->billed, 5, 1).
'</td>';
3168 print
'<td class="nowrap center">';
3169 if ($massactionbutton || $massaction) {
3171 if (in_array($obj->rowid, $arrayofselected)) {
3174 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
3184 $total += $obj->total_ht;
3185 $subtotal += $obj->total_ht;
3191include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
3196 foreach ($arrayfields as $key => $val) {
3197 if (!empty($val[
'checked'])) {
3201 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
3206$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
3207$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
3208print $hookmanager->resPrint;
3210print
'</table>'.
"\n";
3213print
'</form>'.
"\n";
3215if (in_array(
'builddoc', array_keys($arrayofmassactions)) && ($nbtotalofrecords ===
'' || $nbtotalofrecords)) {
3216 $hidegeneratedfilelistifempty = 1;
3217 if ($massaction ==
'builddoc' || $action ==
'remove_file' || $show_files) {
3218 $hidegeneratedfilelistifempty = 0;
3222 $urlsource = $_SERVER[
'PHP_SELF'].
'?sortfield='.$sortfield.
'&sortorder='.$sortorder;
3223 $urlsource .= str_replace(
'&',
'&', $param);
3225 $filedir = $diroutputmassaction;
3226 $genallowed = $permissiontoread;
3227 $delallowed = $permissiontoadd;
3229 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.