* * 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/barcode/codeinit.php * \ingroup member * \brief Page to make mass init of barcode */ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; $langs->load("admin"); $langs->load("members"); $langs->load("errors"); $langs->load("other"); // Choice of print year or current year. $now = dol_now(); $year=dol_print_date($now,'%Y'); $month=dol_print_date($now,'%m'); $day=dol_print_date($now,'%d'); $forbarcode=GETPOST('forbarcode'); $fk_barcode_type=GETPOST('fk_barcode_type'); $eraseallbarcode=GETPOST('eraseallbarcode'); $action=GETPOST('action'); $producttmp=new Product($db); $thirdpartytmp=new Societe($db); $modBarCodeProduct=''; $maxperinit=1000; /* * Actions */ // Define barcode template for products if (! empty($conf->global->BARCODE_PRODUCT_ADDON_NUM)) { $dirbarcodenum=array_merge(array('/core/modules/barcode/'),$conf->modules_parts['barcode']); foreach ($dirbarcodenum as $dirroot) { $dir = dol_buildpath($dirroot,0); $handle = @opendir($dir); if (is_resource($handle)) { while (($file = readdir($handle))!==false) { if (preg_match('/^mod_barcode_product_.*php$/', $file)) { $file = substr($file, 0, dol_strlen($file)-4); try { dol_include_once($dirroot.$file.'.php'); } catch(Exception $e) { dol_syslog($e->getMessage(), LOG_ERR); } $modBarCodeProduct = new $file(); break; } } closedir($handle); } } } if ($action == 'initbarcodeproducts') { if (! is_object($modBarCodeProduct)) { $error++; setEventMessage($langs->trans("NoBarcodeNumberingTemplateDefined"),'errors'); } if (! $error) { $productstatic=new Product($db); $db->begin(); $nbok=0; if (! empty($eraseallbarcode)) { $sql ="UPDATE ".MAIN_DB_PREFIX."product"; $sql.=" SET barcode = NULL"; $resql=$db->query($sql); if ($resql) { setEventMessage($langs->trans("AllBarcodeReset"),'mesgs'); } else { $error++; dol_print_error($db); } } else { $sql ="SELECT rowid, ref, fk_product_type"; $sql.=" FROM ".MAIN_DB_PREFIX."product"; $sql.=" WHERE barcode IS NULL or barcode = ''"; $sql.=$db->order("datec","ASC"); $sql.=$db->plimit($maxperinit); dol_syslog("codeinit", LOG_DEBUG); $resql=$db->query($sql); if ($resql) { $num=$db->num_rows($resql); $i=0; $nbok=$nbtry=0; while ($i < min($num,$maxperinit)) { $obj=$db->fetch_object($resql); if ($obj) { $productstatic->id=$obj->rowid; $productstatic->ref=$obj->ref; $productstatic->type=$obj->fk_product_type; $nextvalue=$modBarCodeProduct->getNextValue($productstatic,''); //print 'Set value '.$nextvalue.' to product '.$productstatic->id." ".$productstatic->ref." ".$productstatic->type."
\n"; $result=$productstatic->setValueFrom('barcode', $nextvalue); $nbtry++; if ($result > 0) $nbok++; } $i++; } } else { $error++; dol_print_error($db); } if (! $error) { setEventMessage($langs->trans("RecordsModified",$nbok),'mesgs'); } } if (! $error) { //$db->rollback(); $db->commit(); } else { $db->rollback(); } } $action=''; } /* * View */ if (!$user->admin) accessforbidden(); if (empty($conf->barcode->enabled)) accessforbidden(); $form=new Form($db); llxHeader('',$langs->trans("MassBarcodeInit")); print_fiche_titre($langs->trans("MassBarcodeInit")); print '
'; print $langs->trans("MassBarcodeInitDesc").'
'; print '
'; //print img_picto('','puce').' '.$langs->trans("PrintsheetForOneBarCode").'
'; //print '
'; print '
'; print ''; print ''; print '
'; // For thirdparty if ($conf->societe->enabled) { $nbno=$nbtotal=0; print_fiche_titre($langs->trans("BarcodeInitForThirdparties"),'','object_company'); print '
'."\n"; $sql="SELECT count(rowid) as nb FROM ".MAIN_DB_PREFIX."societe where barcode IS NULL or barcode = ''"; $resql=$db->query($sql); if ($resql) { $obj=$db->fetch_object($resql); $nbno=$obj->nb; } else dol_print_error($db); $sql="SELECT count(rowid) as nb FROM ".MAIN_DB_PREFIX."societe"; $resql=$db->query($sql); if ($resql) { $obj=$db->fetch_object($resql); $nbtotal=$obj->nb; } else dol_print_error($db); print $langs->trans("CurrentlyNWithoutBarCode", $nbno, $nbtotal, $langs->transnoentitiesnoconv("ThirdParties")).'
'."\n"; print '
'; print '



'; } // For products if ($conf->product->enabled || $conf->product->service) { // Example 1 : Adding jquery code print ''; $nbno=$nbtotal=0; print_fiche_titre($langs->trans("BarcodeInitForProductsOrServices"),'','object_product'); print '
'."\n"; $sql ="SELECT count(rowid) as nb, fk_product_type, datec"; $sql.=" FROM ".MAIN_DB_PREFIX."product"; $sql.=" WHERE barcode IS NULL OR barcode = ''"; $sql.=" GROUP BY fk_product_type, datec"; $sql.=" ORDER BY datec"; $resql=$db->query($sql); if ($resql) { $num=$db->num_rows($resql); $i=0; while($i < $num) { $obj=$db->fetch_object($resql); $nbno+=$obj->nb; $i++; } } else dol_print_error($db); $sql="SELECT count(rowid) as nb FROM ".MAIN_DB_PREFIX."product"; $resql=$db->query($sql); if ($resql) { $obj=$db->fetch_object($resql); $nbtotal=$obj->nb; } else dol_print_error($db); print $langs->trans("CurrentlyNWithoutBarCode", $nbno, $nbtotal, $langs->transnoentitiesnoconv("ProductsOrServices")).'
'."\n"; if (is_object($modBarCodeProduct)) { print $langs->trans("BarCodeNumberManager").": "; $objproduct=new Product($db); print ''.(isset($modBarCodeProduct->name)?$modBarCodeProduct->name:$modBarCodeProduct->nom).' - '.$langs->trans("NextValue").': '.$modBarCodeProduct->getNextValue($objproduct).'
'; $disabled=0; } else { $disabled=1; $titleno=$langs->trans("NoBarcodeNumberingTemplateDefined"); print ''.$langs->trans("NoBarcodeNumberingTemplateDefined").'
'; } if (empty($nbno)) { $disabled1=1; } print '
'; //print ' '.$langs->trans("ResetBarcodeForAllRecords").'
'; $moretags1=(($disabled||$disabled1)?' disabled title="'.dol_escape_htmltag($titleno).'"':''); print ''; $moretags2=(($nbno == $nbtotal)?' disabled':''); print '   '; print ''; print '



'; } print '
'; print '
'; llxFooter(); $db->close();