* Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin * * 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 2 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."/includes/barcode/html.formbarcode.class.php"); $langs->load("admin"); if (!$user->admin) accessforbidden(); $action = GETPOST("action"); /* * Actions */ if ($action == 'setcoder') { $coder = GETPOST("coder"); $code_id = GETPOST("code_id"); $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"); $res = dolibarr_set_const($db, "GENBARCODE_LOCATION",$location,'chaine',0,'',$conf->entity); } else if ($action == 'setdefaultbarcodetype') { $coder_id = GETPOST("coder_id"); $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"); $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) { $mesg = "".$langs->trans("SetupSaved").""; } else { $mesg = "".$langs->trans("Error").""; } } /* * View */ $html = 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(); foreach ($conf->file->dol_document_root as $dirroot) { $dir = $dirroot . "/core/modules/barcode/"; $handle=@opendir($dir); if (is_resource($handle)) { while (($file = readdir($handle))!==false) { if (substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS') { if (is_readable($dir.$file)) { if (preg_match('/(.*)\.modules\.php$/i',$file,$reg)) { $filebis=$reg[1]; // Chargement de la classe de codage require_once($dir.$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; // Chargement de la classe de codage foreach ($conf->file->dol_document_root as $dirroot) { $dir=$dirroot . "/core/modules/barcode/"; $result=@include_once($dir.$obj->coder.".modules.php"); //print $dir.$obj->coder.".modules.php - ".$result; 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 ($conf->societe->enabled) { $var=!$var; print ""; print ''; print ""; print ""; print ''; print '"; print ''; print ''; } // Module produits if ($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 "
"; dol_htmloutput_mesg($mesg); $db->close(); llxFooter(); ?>