diff --git a/htdocs/barcode/printsheet.php b/htdocs/barcode/printsheet.php
index 5737b632b32..926bdbf18a6 100644
--- a/htdocs/barcode/printsheet.php
+++ b/htdocs/barcode/printsheet.php
@@ -26,6 +26,7 @@ require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/format_cards.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/modules/printsheet/modules_labels.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/genericobject.class.php';
$langs->load("admin");
$langs->load("errors");
@@ -36,124 +37,166 @@ $year=dol_print_date($now,'%Y');
$month=dol_print_date($now,'%m');
$day=dol_print_date($now,'%d');
$forbarcode=GETPOST('forbarcode');
-$forbartype=GETPOST('forbartype');
+$fk_barcode_type=GETPOST('fk_barcode_type');
$mode=GETPOST('mode');
-$model=GETPOST("model"); // Doc template to use for business cards
-$modellabel=GETPOST("modellabel"); // Doc template to use for address sheet
+$modellabel=GETPOST("modellabel"); // Doc template to use
+$numberofsticker=GETPOST('numberofsticker','int');
+
$mesg='';
+$action=GETPOST('action');
+
/*
* Actions
*/
-if ($action == 'builddoc' && empty($forbarcode))
+if ($action == 'builddoc')
{
- $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Barcode"));
-}
-if ($action == 'builddoc' && empty($forbartype))
-{
- $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("BarcodeType"));
-}
+ $result=0; $error=0;
-if ((! empty($forbarcode) || ! empty($forbartype) || ! empty($mode)) && ! $mesg)
-{
- // List of values to scan for a replacement
- $substitutionarray = array (
- '%LOGIN%'=>$user->login,
- '%COMPANY%'=>$mysoc->name,
- '%ADDRESS%'=>$mysoc->address,
- '%ZIP%'=>$mysoc->zip,
- '%TOWN%'=>$mysoc->town,
- '%COUNTRY%'=>$mysoc->country,
- '%COUNTRY_CODE%'=>$mysoc->country_code,
- '%EMAIL%'=>$mysoc->email,
- '%YEAR%'=>$year,
- '%MONTH%'=>$month,
- '%DAY%'=>$day,
- '%DOL_MAIN_URL_ROOT%'=>DOL_MAIN_URL_ROOT,
- '%SERVER%'=>"http://".$_SERVER["SERVER_NAME"]."/"
- );
- complete_substitutions_array($substitutionarray, $langs);
-
- // For business cards
- if (empty($mode) || $mode=='card' || $mode=='cardlogin')
+ if (empty($forbarcode)) // barcode value
{
- $textleft=make_substitutions($conf->global->ADHERENT_CARD_TEXT, $substitutionarray);
- $textheader=make_substitutions($conf->global->ADHERENT_CARD_HEADER_TEXT, $substitutionarray);
- $textfooter=make_substitutions($conf->global->ADHERENT_CARD_FOOTER_TEXT, $substitutionarray);
- $textright=make_substitutions($conf->global->ADHERENT_CARD_TEXT_RIGHT, $substitutionarray);
+ setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("BarcodeValue")),'errors');
+ $error++;
+ }
+ if (empty($fk_barcode_type)) // barcode type = barcode encoding
+ {
+ setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("BarcodeType")),'errors');
+ $error++;
+ }
- if (is_numeric($forbarcode) || $forbartype)
+ if (! $error)
+ {
+ // Get encoder (barcode_type_coder) from barcode type id (barcode_type)
+ $stdobject=new GenericObject($db);
+ $stdobject->barcode_type=$fk_barcode_type;
+ $result=$stdobject->fetch_barcode();
+ if ($result <= 0)
{
- for($j=0;$j<100;$j++)
+ $error++;
+ setEventMessage('Failed to get bar code type information '.$stdobject->error, 'errors');
+ }
+ }
+
+ if (! $error)
+ {
+ $code=$forbarcode;
+ $generator=$stdobject->barcode_type_coder;
+ $encoding=strtoupper($stdobject->barcode_type_code);
+ $barcodeimage=$conf->barcode->dir_temp.'/barcode_'.$code.'_'.$encoding.'.png';
+
+ $diroutput=$conf->barcode->dir_temp;
+ dol_mkdir($diroutput);
+
+ // Generate barcode
+ $dirbarcode=array_merge(array("/core/modules/barcode/"),$conf->modules_parts['barcode']);
+
+ 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.$generator.'.modules.php';
+ if ($result) break;
+ }
+
+ // Load barcode class
+ $classname = "mod".ucfirst($generator);
+ $module = new $classname($db);
+ if ($module->encodingIsSupported($encoding))
+ {
+ dol_delete_file($barcodeimage);
+ // File is created with full name $barcodeimage = $conf->barcode->dir_temp.'/barcode_'.$code.'_'.$encoding.'.png';
+ $result=$module->writeBarCode($code,$encoding,'Y',4);
+
+ if ($result <= 0 || ! dol_is_file($barcodeimage))
+ {
+ $error++;
+ setEventMessage('Failed to generate image file of barcode for code='.$code.' encoding='.$encoding.' file='.basename($barcodeimage), 'errors');
+ }
+ }
+ else
+ {
+ $error++;
+ setEventMessage("Error, encoding ".$encoding." is not supported by encoder ".$generator.'. You must choose another barcode type or install a barcode generation engine that support '.$encoding, 'errors');
+ }
+ }
+
+ if (! $error)
+ {
+ // List of values to scan for a replacement
+ $substitutionarray = array (
+ '%LOGIN%'=>$user->login,
+ '%COMPANY%'=>$mysoc->name,
+ '%ADDRESS%'=>$mysoc->address,
+ '%ZIP%'=>$mysoc->zip,
+ '%TOWN%'=>$mysoc->town,
+ '%COUNTRY%'=>$mysoc->country,
+ '%COUNTRY_CODE%'=>$mysoc->country_code,
+ '%EMAIL%'=>$mysoc->email,
+ '%YEAR%'=>$year,
+ '%MONTH%'=>$month,
+ '%DAY%'=>$day,
+ '%DOL_MAIN_URL_ROOT%'=>DOL_MAIN_URL_ROOT,
+ '%SERVER%'=>"http://".$_SERVER["SERVER_NAME"]."/"
+ );
+ complete_substitutions_array($substitutionarray, $langs);
+
+ // For labels
+ if ($mode == 'label')
+ {
+ if (empty($conf->global->ADHERENT_ETIQUETTE_TEXT)) $conf->global->ADHERENT_ETIQUETTE_TEXT="%PHOTO%";
+ $textleft=make_substitutions($conf->global->ADHERENT_ETIQUETTE_TEXT, $substitutionarray);
+ $textheader='';
+ $textfooter='';
+ $textright='';
+ $forceimgscalewidth=(empty($conf->global->BARCODE_FORCEIMGSCALEWIDTH)?1:$conf->global->BARCODE_FORCEIMGSCALEWIDTH);
+ $forceimgscaleheight=(empty($conf->global->BARCODE_FORCEIMGSCALEHEIGHT)?1:$conf->global->BARCODE_FORCEIMGSCALEHEIGHT);
+
+ for ($i=0; $i < $numberofsticker; $i++)
{
$arrayofmembers[]=array(
- 'textleft'=>$textleft,
- 'textheader'=>$textheader,
- 'textfooter'=>$textfooter,
- 'textright'=>$textright,
- 'id'=>$objp->rowid,
- 'photo'=>$objp->photo
+ 'textleft'=>$textleft,
+ 'textheader'=>$textheader,
+ 'textfooter'=>$textfooter,
+ 'textright'=>$textright,
+ 'photo'=>$barcodeimage // Photo must be a file that exists with format supported by TCPDF
);
}
}
- else
+
+ $i++;
+ $mesg='';
+
+ // Build and output PDF
+ if ($mode == 'label')
{
- $arrayofmembers[]=array(
- 'textleft'=>$textleft,
- 'textheader'=>$textheader,
- 'textfooter'=>$textfooter,
- 'textright'=>$textright,
- 'id'=>$objp->rowid,
- 'photo'=>$objp->photo
- );
+ if (! count($arrayofmembers))
+ {
+ $mesg=$langs->trans("ErrorRecordNotFound");
+ }
+ if (empty($modellabel) || $modellabel == '-1')
+ {
+ $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("DescADHERENT_ETIQUETTE_TYPE"));
+ }
+ if (! $mesg) $result=members_label_pdf_create($db, $arrayofmembers, $modellabel, $outputlangs, $diroutput);
}
- }
- // For labels
- if ($mode == 'label')
- {
- if (empty($conf->global->ADHERENT_ETIQUETTE_TEXT)) $conf->global->ADHERENT_ETIQUETTE_TEXT="%FULLNAME%\n%ADDRESS%\n%ZIP% %TOWN%\n%COUNTRY%";
- $textleft=make_substitutions($conf->global->ADHERENT_ETIQUETTE_TEXT, $substitutionarray);
- $textheader='';
- $textfooter='';
- $textright='';
-
- $arrayofmembers[]=array('textleft'=>$textleft,
- 'textheader'=>$textheader,
- 'textfooter'=>$textfooter,
- 'textright'=>$textright,
- 'id'=>$objp->rowid,
- 'photo'=>$objp->photo);
- }
-
- $i++;
-
- // Build and output PDF
- if ($mode == 'label')
- {
- if (! count($arrayofmembers))
+ if ($result <= 0)
{
- $mesg=$langs->trans("ErrorRecordNotFound");
+ dol_print_error('',$result);
}
- if (empty($modellabel) || $modellabel == '-1')
- {
- $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("DescADHERENT_ETIQUETTE_TYPE"));
- }
- if (! $mesg) $result=members_label_pdf_create($db, $arrayofmembers, $modellabel, $outputlangs);
- }
- if ($result <= 0)
- {
- dol_print_error('',$result);
+ if (! $mesg)
+ {
+ $db->close();
+ exit;
+ }
}
-
- if (! $mesg)
- {
- $db->close();
- exit;
- }
}
@@ -168,16 +211,25 @@ llxHeader('',$langs->trans("BarCodePrintsheet"));
print_fiche_titre($langs->trans("BarCodePrintsheet"));
print '
';
-print $langs->trans("PageToGenerateBarCodeSheets").'
';
+print $langs->trans("PageToGenerateBarCodeSheets",$langs->transnoentitiesnoconv("BuildPageToPrint")).'
';
print '
';
dol_htmloutput_errors($mesg);
-print img_picto('','puce').' '.$langs->trans("BarCodePrintsheet").' ';
+//print img_picto('','puce').' '.$langs->trans("PrintsheetForOneBarCode").'
';
+//print '
';
+
print '