mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-21 01:25:55 +02:00
Use shorter format for barcodes, to generate shorter (better readable) barcodes.
This commit is contained in:
parent
f9f2774f36
commit
3dd0ef26b3
4 changed files with 22 additions and 9 deletions
|
@ -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
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -32,8 +32,5 @@ class BarcodeParserTest extends TestCase
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
public function testNormalizeBarcodeContent()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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'],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue