* Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2011-2013 Juanjo Menent * * 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. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file htdocs/admin/barcode.php * \ingroup barcode * \brief Page to setup barcode module */ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formbarcode.class.php'; $langs->load("admin"); if (!$user->admin) accessforbidden(); $action = GETPOST('action','alpha'); /* * Actions */ if ($action == 'setcoder') { $coder = GETPOST('coder','alpha'); $code_id = GETPOST('code_id','alpha'); $sqlp = "UPDATE ".MAIN_DB_PREFIX."c_barcode_type"; $sqlp.= " SET coder = '" . $coder."'"; $sqlp.= " WHERE rowid = ". $code_id; $sqlp.= " AND entity = ".$conf->entity; $resql=$db->query($sqlp); //print $sqlp; } else if ($action == 'setgenbarcodelocation') { $location = GETPOST('genbarcodelocation','alpha'); $res = dolibarr_set_const($db, "GENBARCODE_LOCATION",$location,'chaine',0,'',$conf->entity); } else if ($action == 'setdefaultbarcodetype') { $coder_id = GETPOST('coder_id','alpha'); $res = dolibarr_set_const($db, "PRODUIT_DEFAULT_BARCODE_TYPE", $coder_id,'chaine',0,'',$conf->entity); } else if ($action == 'GENBARCODE_BARCODETYPE_THIRDPARTY') { $coder_id = GETPOST('coder_id','alpha'); $res = dolibarr_set_const($db, "GENBARCODE_BARCODETYPE_THIRDPARTY", $coder_id,'chaine',0,'',$conf->entity); } /* else if ($_POST["action"] == 'setproductusebarcode') { dolibarr_set_const($db, "PRODUIT_USE_BARCODE",$_POST["value"],'chaine',0,'',$conf->entity); header("Location: barcode.php"); exit; } */ if($action && $action!='setcoder') { if (! $res > 0) $error++; if (! $error) { setEventMessage($langs->trans("SetupSaved")); } else { setEventMessage($langs->trans("Error"),'errors'); } } /* * View */ $form = new Form($db); $formbarcode = new FormBarCode($db); llxHeader('',$langs->trans("BarcodeSetup"),'BarcodeConfiguration'); $linkback=''.$langs->trans("BackToModuleList").''; print_fiche_titre($langs->trans("BarcodeSetup"),$linkback,'setup'); // Detect bar codes modules $barcodelist=array(); clearstatcache(); // Scan list of all barcode included provided by external modules $dirbarcode=array_merge(array("/core/modules/barcode/"), $conf->modules_parts['barcode']); foreach($dirbarcode as $reldir) { $dir=dol_buildpath($reldir); $newdir=dol_osencode($dir); // Check if directory exists (we do not use dol_is_dir to avoid loading files.lib.php) if (! is_dir($newdir)) continue; $handle=@opendir($newdir); if (is_resource($handle)) { while (($file = readdir($handle))!==false) { if (substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS') { if (is_readable($newdir.$file)) { if (preg_match('/(.*)\.modules\.php$/i',$file,$reg)) { $filebis=$reg[1]; // Chargement de la classe de codage require_once $newdir.$file; $classname = "mod".ucfirst($filebis); $module = new $classname($db); // Show modules according to features level if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) continue; if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) continue; if ($module->isEnabled()) { $barcodelist[$filebis]=$module->info(); } } } } } } } /* * CHOIX ENCODAGE */ $var=true; print '
'; print_titre($langs->trans("BarcodeEncodeModule")); print ''; print ''; print ''; print ''; print ''; print ''; print "\n"; $sql = "SELECT rowid, code as encoding, libelle, coder, example"; $sql.= " FROM ".MAIN_DB_PREFIX."c_barcode_type"; $sql.= " WHERE entity = ".$conf->entity; $sql.= " ORDER BY code"; dol_syslog("admin/barcode.php sql=".$sql); $resql=$db->query($sql); if ($resql) { $num = $db->num_rows($resql); $i = 0; $var=true; while ($i < $num) { $obj = $db->fetch_object($resql); print ''; // Show example print ''; print '\n"; $var=!$var; $i++; } } print "
'.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Example").''.$langs->trans("CodeBarGenerator").'
'; print $obj->libelle; print "\n"; print $langs->trans('BarcodeDesc'.$obj->encoding); //print "L'EAN se compose de 8 caracteres, 7 chiffres plus une cle de controle.
"; //print "L'utilisation des symbologies EAN8 impose la souscription et l'abonnement aupres d'organisme tel que GENCOD.
"; //print "Codes numeriques utilises exclusivement a l'identification des produits susceptibles d'etre vendus au grand public."; print '
'; if ($obj->coder && $obj->coder != -1) { $result=0; foreach($dirbarcode as $reldir) { $dir=dol_buildpath($reldir,0); $newdir=dol_osencode($dir); // Check if directory exists (we do not use dol_is_dir to avoid loading files.lib.php) if (! is_dir($newdir)) continue; $result=@include_once $newdir.$obj->coder.'.modules.php'; if ($result) break; } if ($result) { $classname = "mod".ucfirst($obj->coder); if (class_exists($classname)) { $module = new $classname($db); if ($module->encodingIsSupported($obj->encoding)) { // Build barcode on disk (not used, this is done to make debug easier) $result=$module->writeBarCode($obj->example,$obj->encoding,'Y'); // Generate on the fly and output barcode with generator $url=DOL_URL_ROOT.'/viewimage.php?modulepart=barcode&generator='.urlencode($obj->coder).'&code='.urlencode($obj->example).'&encoding='.urlencode($obj->encoding); //print $url; print ''; } else { print $langs->trans("FormatNotSupportedByGenerator"); } } else { print 'ErrorClassNotFoundInModule '.$classname.' '.$obj->coder; } } } else { print $langs->trans("ChooseABarCode"); } print ''; print $formbarcode->setBarcodeEncoder($obj->coder,$barcodelist,$obj->rowid,'form'.$i); print "
\n"; print "
"; /* * Autres options * */ print_titre($langs->trans("OtherOptions")); $var=true; print ''; print ''; print ''; print ''; print ''; print ''; // Chemin du binaire genbarcode sous linux if (! isset($_SERVER['WINDIR'])) { $var=!$var; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; } // Module produits if (! empty($conf->societe->enabled)) { $var=!$var; print ""; print ''; print ""; print ""; print ''; print '"; print ''; print ''; } // Module produits if (! empty($conf->product->enabled)) { $var=!$var; print ""; print ''; print ""; print ""; print ''; print '"; print ''; print ''; } print '
'.$langs->trans("Parameter").''.$langs->trans("Value").' 
'.$langs->trans("GenbarcodeLocation").''; print ''; if (! empty($conf->global->GENBARCODE_LOCATION) && ! @file_exists($conf->global->GENBARCODE_LOCATION)) { $langs->load("errors"); print '
'.$langs->trans("ErrorFileNotFound",$conf->global->GENBARCODE_LOCATION).''; } print '
'.$langs->trans("SetDefaultBarcodeTypeProducts").''; print $formbarcode->select_barcode_type($conf->global->PRODUIT_DEFAULT_BARCODE_TYPE,"coder_id",1); print ''; print ''; print "
'.$langs->trans("SetDefaultBarcodeTypeThirdParties").''; print $formbarcode->select_barcode_type($conf->global->GENBARCODE_BARCODETYPE_THIRDPARTY,"coder_id",1); print ''; print ''; print "
'; print "
"; $db->close(); llxFooter(); ?>