* Copyright (C) 2024 Frédéric France * Copyright (C) 2026 Eduard Wisch * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ /** * \file handybarcodescanner/admin/setup.php * \ingroup handybarcodescanner * \brief HandyBarcodeScanner setup page. */ // Load Dolibarr environment $res = 0; if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; } $tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { $i--; $j--; } if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; } if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; } if (!$res && file_exists("../../main.inc.php")) { $res = @include "../../main.inc.php"; } if (!$res && file_exists("../../../main.inc.php")) { $res = @include "../../../main.inc.php"; } if (!$res) { die("Include of main fails"); } // Libraries require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php'; require_once '../lib/handybarcodescanner.lib.php'; /** * @var Conf $conf * @var DoliDB $db * @var HookManager $hookmanager * @var Translate $langs * @var User $user */ // Translations $langs->loadLangs(array("admin", "handybarcodescanner@handybarcodescanner", "stocks")); // Access control if (!$user->admin) { accessforbidden(); } // Parameters $action = GETPOST('action', 'aZ09'); $backtopage = GETPOST('backtopage', 'alpha'); $error = 0; /* * Actions */ if ($action == 'update') { // Order prefix $orderPrefix = GETPOST('order_prefix', 'alphanohtml'); if (!empty($orderPrefix)) { dolibarr_set_const($db, 'HANDYBARCODESCANNER_ORDER_PREFIX', $orderPrefix, 'chaine', 0, '', $conf->entity); } // Default warehouse $defaultWarehouse = GETPOSTINT('default_warehouse'); dolibarr_set_const($db, 'HANDYBARCODESCANNER_DEFAULT_WAREHOUSE', $defaultWarehouse, 'chaine', 0, '', $conf->entity); // Mode toggles $enableOrder = GETPOSTINT('enable_order'); $enableShop = GETPOSTINT('enable_shop'); $enableInventory = GETPOSTINT('enable_inventory'); dolibarr_set_const($db, 'HANDYBARCODESCANNER_ENABLE_ORDER', $enableOrder, 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, 'HANDYBARCODESCANNER_ENABLE_SHOP', $enableShop, 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, 'HANDYBARCODESCANNER_ENABLE_INVENTORY', $enableInventory, 'chaine', 0, '', $conf->entity); // Vibration feedback $enableVibration = GETPOSTINT('enable_vibration'); dolibarr_set_const($db, 'HANDYBARCODESCANNER_ENABLE_VIBRATION', $enableVibration, 'chaine', 0, '', $conf->entity); // Sound feedback $enableSound = GETPOSTINT('enable_sound'); dolibarr_set_const($db, 'HANDYBARCODESCANNER_ENABLE_SOUND', $enableSound, 'chaine', 0, '', $conf->entity); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } /* * View */ $form = new Form($db); $help_url = ''; $title = "HandyBarcodeScannerSetup"; llxHeader('', $langs->trans($title), $help_url, '', 0, 0, '', '', '', 'mod-handybarcodescanner page-admin'); // Subheader $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans($title), $linkback, 'title_setup'); // Configuration header $head = handybarcodescannerAdminPrepareHead(); print dol_get_fiche_head($head, 'settings', $langs->trans($title), -1, "handybarcodescanner@handybarcodescanner"); // Get current values $orderPrefix = getDolGlobalString('HANDYBARCODESCANNER_ORDER_PREFIX', 'Direktbestellung'); $defaultWarehouse = getDolGlobalInt('HANDYBARCODESCANNER_DEFAULT_WAREHOUSE', 0); $enableOrder = getDolGlobalInt('HANDYBARCODESCANNER_ENABLE_ORDER', 1); $enableShop = getDolGlobalInt('HANDYBARCODESCANNER_ENABLE_SHOP', 1); $enableInventory = getDolGlobalInt('HANDYBARCODESCANNER_ENABLE_INVENTORY', 1); $enableVibration = getDolGlobalInt('HANDYBARCODESCANNER_ENABLE_VIBRATION', 1); $enableSound = getDolGlobalInt('HANDYBARCODESCANNER_ENABLE_SOUND', 0); // Get warehouses for select $warehouses = array(); $sql = "SELECT rowid, ref, lieu FROM ".MAIN_DB_PREFIX."entrepot WHERE statut = 1 AND entity IN (".getEntity('stock').") ORDER BY ref"; $resql = $db->query($sql); if ($resql) { while ($obj = $db->fetch_object($resql)) { $warehouses[$obj->rowid] = $obj->ref . ($obj->lieu ? ' - ' . $obj->lieu : ''); } } print '
'; print ''; print ''; print ''; // Section: General print ''; // Order prefix print ''; print ''; print ''; // Default warehouse print ''; print ''; print ''; // Section: Enabled Modes print ''; // Order mode print ''; print ''; print ''; // Shop mode print ''; print ''; print ''; // Inventory mode print ''; print ''; print ''; // Section: Feedback print ''; // Vibration print ''; print ''; print ''; // Sound print ''; print ''; print ''; print '
'.$langs->trans("General").'
'.$langs->trans("OrderPrefix").''; print ''; print '
'.$langs->trans("OrderPrefixDesc").''; print '
'.$langs->trans("DefaultWarehouse").''; print ''; print '
'.$langs->trans("DefaultWarehouseDesc").''; print '
'.$langs->trans("EnabledModes").'
'.$langs->trans("EnableOrderMode").''; print ''; print '
'.$langs->trans("EnableShopMode").''; print ''; print '
'.$langs->trans("EnableInventoryMode").''; print ''; print '
'.$langs->trans("Feedback").'
'.$langs->trans("EnableVibration").''; print ''; print '
'.$langs->trans("EnableVibrationDesc").''; print '
'.$langs->trans("EnableSound").''; print ''; print '
'.$langs->trans("EnableSoundDesc").''; print '
'; print '
'; print ''; print '
'; print '
'; // Show QR Code for mobile access print '

'; print '
'; print '
'; print ''; print ''; print ''; print '
'.$langs->trans("MobileAccess").'
'; $scannerUrl = dol_buildpath('/handybarcodescanner/handybarcodescannerindex.php', 2); print '

'.$langs->trans("ScanQRCodeOrOpenURL").':

'; print '

'.$scannerUrl.'

'; // QR Code using Google Charts API $qrUrl = 'https://chart.googleapis.com/chart?chs=200x200&cht=qr&chl='.urlencode($scannerUrl); print '

QR Code

'; print '
'; print '
'; print '
'; // Page end print dol_get_fiche_end(); llxFooter(); $db->close();