mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-05-24 16:28:40 -04:00
Add config option to use generation when generating barcodes for an Generate propery barcode with configured format if item_number empty
This commit is contained in:
@@ -38,11 +38,35 @@ class Barcode_lib
|
||||
$data['barcode_num_in_row'] = $this->CI->Appconfig->get('barcode_num_in_row');
|
||||
$data['barcode_page_width'] = $this->CI->Appconfig->get('barcode_page_width');
|
||||
$data['barcode_page_cellspacing'] = $this->CI->Appconfig->get('barcode_page_cellspacing');
|
||||
$data['barcode_generate_if_empty'] = $this->CI->Appconfig->get('barcode_generate_if_empty');
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function get_barcode_instance($barcode_type='Code128')
|
||||
|
||||
public function validate_barcode($barcode)
|
||||
{
|
||||
$barcode_type = $this->CI->Appconfig->get('barcode_type');
|
||||
$barcode_instance = $this->get_barcode_instance($barcode_type);
|
||||
return $barcode_instance->validate($barcode);
|
||||
}
|
||||
|
||||
public static function barcode_instance($item, $barcode_config)
|
||||
{
|
||||
$barcode_instance = Barcode_lib::get_barcode_instance($barcode_config['barcode_type']);
|
||||
$is_valid = empty($item['item_number']) && $barcode_config['barcode_generate_if_empty'] || $barcode_instance->validate($item['item_number']);
|
||||
|
||||
// if barcode validation does not succeed,
|
||||
if (!$is_valid)
|
||||
{
|
||||
$barcode_instance = Barcode_lib::get_barcode_instance();
|
||||
}
|
||||
$seed = Barcode_lib::barcode_seed($item, $barcode_instance, $barcode_config);
|
||||
$barcode_instance->setData($seed);
|
||||
|
||||
return $barcode_instance;
|
||||
}
|
||||
|
||||
private static function get_barcode_instance($barcode_type='Code128')
|
||||
{
|
||||
switch($barcode_type)
|
||||
{
|
||||
@@ -64,36 +88,41 @@ class Barcode_lib
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static function barcode_seed($item, $barcode_instance, $barcode_config)
|
||||
{
|
||||
$seed = $barcode_config['barcode_content'] !== "id" && isset($item['item_number']) ? $item['item_number'] : $item['item_id'];
|
||||
|
||||
if( $barcode_config['barcode_content'] !== "id" && !empty($item['item_number']))
|
||||
{
|
||||
$seed = $item['item_number'];
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($barcode_config['barcode_generate_if_empty'])
|
||||
{
|
||||
// generate barcode with the correct instance
|
||||
$seed = $barcode_instance->generate($seed);
|
||||
}
|
||||
else
|
||||
{
|
||||
$seed = $item['item_id'];
|
||||
}
|
||||
}
|
||||
return $seed;
|
||||
}
|
||||
|
||||
private function generate_barcode($item, $barcode_config)
|
||||
{
|
||||
try
|
||||
{
|
||||
$barcode = $this->get_barcode_instance($barcode_config['barcode_type']);
|
||||
$is_valid = $barcode->validate($item['item_number']);
|
||||
$barcode_instance = Barcode_lib::barcode_instance($item, $barcode_config);
|
||||
$barcode_instance->setQuality($barcode_config['barcode_quality']);
|
||||
$barcode_instance->setDimensions($barcode_config['barcode_width'], $barcode_config['barcode_height']);
|
||||
|
||||
// if barcdoe validation does not succeed, then fallback to the default, which should not require specific formatting
|
||||
if (!$is_valid)
|
||||
{
|
||||
$barcode = $this->get_barcode_instance();
|
||||
}
|
||||
|
||||
$barcode_content = $barcode_config['barcode_content'] !== "id" && isset($item['item_number']) ? $item['item_number'] : $item['item_id'];
|
||||
$barcode->setData($barcode_content);
|
||||
if( $barcode_config['barcode_content'] !== "id" && isset($item['item_number']))
|
||||
{
|
||||
$barcode->setData($item['item_number']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$barcode->setData($item['item_id']);
|
||||
}
|
||||
$barcode->setQuality($barcode_config['barcode_quality']);
|
||||
$barcode->setDimensions($barcode_config['barcode_width'], $barcode_config['barcode_height']);
|
||||
|
||||
$barcode->draw();
|
||||
$barcode_instance->draw();
|
||||
|
||||
return $barcode->base64();
|
||||
return $barcode_instance->base64();
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
@@ -128,42 +157,7 @@ class Barcode_lib
|
||||
}
|
||||
}
|
||||
|
||||
public function get_new_barcode($item, $barcode_config)
|
||||
{
|
||||
try
|
||||
{
|
||||
$barcode = $this->get_barcode_instance($barcode_config['barcode_type']);
|
||||
|
||||
// generate a barcode only if one is not already available and we use the item_id as seed.
|
||||
// This to avoid generating Barcodes out of existing Barcodes
|
||||
if( $barcode_config['barcode_content'] !== "id" && isset($item['item_number']) )
|
||||
{
|
||||
$barcode->setData($item['item_number'], false);
|
||||
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
$barcode->setData($item['item_id'], true);
|
||||
|
||||
$code = $barcode->getData();
|
||||
|
||||
// in case no new code is generated like in Code39 and Code128 return an empty string because we don't want to override it with a pure item_id
|
||||
if( $code == $item['item_id'] )
|
||||
{
|
||||
$code = null;
|
||||
}
|
||||
|
||||
return $code;
|
||||
}
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
echo 'Caught exception: ', $e->getMessage(), "\n";
|
||||
}
|
||||
}
|
||||
|
||||
public function create_display_barcode($item, $barcode_config)
|
||||
public function display_barcode($item, $barcode_config)
|
||||
{
|
||||
$display_table = "<table>";
|
||||
$display_table .= "<tr><td align='center'>" . $this->manage_display_layout($barcode_config['barcode_first_row'], $item, $barcode_config) . "</td></tr>";
|
||||
|
||||
Reference in New Issue
Block a user