Use shorter format for barcodes, to generate shorter (better readable) barcodes.

This commit is contained in:
Jan Böhmer 2020-05-07 23:11:50 +02:00
parent f9f2774f36
commit 3dd0ef26b3
4 changed files with 22 additions and 9 deletions

View file

@ -69,15 +69,15 @@ class BarcodeContentGenerator
/**
* Returns a Code that can be used in a 1D barcode.
* The return value has a format of "L-000123"
* The return value has a format of "L0123"
* @param AbstractDBElement $target
* @return string
*/
public function get1DBarcodeContent(AbstractDBElement $target): string
{
$prefix = $this->classToString(self::PREFIX_MAP, $target);
$id = sprintf('%06d', $target->getID());
return $prefix . '-' . $id;
$id = sprintf('%04d', $target->getID());
return $prefix . $id;
}
protected function classToString(array $map, object $target): string

View file

@ -48,7 +48,18 @@ class BarcodeNormalizer
return [$matches[1], (int) $matches[2]];
}
//New Code39 barcodes use L-000001 format
//New Code39 barcode use L0001 format
if (preg_match('#^([A-Z])(\d{4,})$#', $input, $matches)) {
$prefix = $matches[1];
$id = (int) $matches[2];
if (!isset(self::PREFIX_TYPE_MAP[$prefix])) {
throw new \InvalidArgumentException('Unknown prefix ' . $prefix);
}
return [self::PREFIX_TYPE_MAP[$prefix], $id];
}
//During development the L-000001 format was used
if (preg_match('#^(\w)-(\d{6,})$#', $input, $matches)) {
$prefix = $matches[1];
$id = (int) $matches[2];

View file

@ -33,7 +33,4 @@ class BarcodeParserTest extends TestCase
}
public function testNormalizeBarcodeContent()
{
}
}

View file

@ -44,7 +44,12 @@ class BarcodeNormalizerTest extends WebTestCase
[['part', 123], 'https://localhost:8000/scan/part/123'],
[['location', 4], 'http://foo.bar/part-db/scan/location/4'],
[['under_score', 10], 'http://test/part-db/sub/scan/under_score/10/'],
//New Code39 barcodes:
//Current Code39 format:
[['lot', 10], 'L0010'],
[['lot', 123], 'L0123'],
[['lot', 123456], 'L123456'],
[['part', 2], 'P0002'],
//Development phase Code39 barcodes:
[['lot', 10], 'L-000010'],
[['lot', 10], 'Lß000010'],
[['part', 123], 'P-000123'],