瀏覽代碼

[GENERIC] Zend_Validate_Barcode:

- finished IDENTCODE and LEITCODE implementation

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20002 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 年之前
父節點
當前提交
50d0f0cfa0

+ 13 - 0
documentation/manual/en/module_specs/Zend_Validate-Barcode.xml

@@ -189,6 +189,19 @@
 
         <listitem>
             <para>
+                <emphasis>LEITCODE</emphasis>: Leitcode is used by Deutsche Post and DHL. It's an
+                specialized implementation of Code25.
+            </para>
+
+            <para>
+                This barcode must have a length of 14 characters. It supports only digits, and the
+                last digit is always a checksum which is calculated with modulo 10. This standard is
+                mainly used by the companies DP and DHL.
+            </para>
+        </listitem>
+
+        <listitem>
+            <para>
                 <emphasis>SSCC</emphasis>: SSCC is the shortcut for "Serial Shipping Container
                 Code".
             </para>

+ 2 - 2
library/Zend/Validate/Barcode/AdapterAbstract.php

@@ -234,13 +234,13 @@ abstract class Zend_Validate_Barcode_AdapterAbstract
      * @param  string $value The barcode to validate
      * @return boolean
      */
-    protected function _mod10ident($value)
+    protected function _identcode($value)
     {
         $barcode = substr($value, 0, -1);
         $sum     = 0;
         $length  = strlen($value) - 2;
 
-        for ($i = 0; $i < $length; $i++) {
+        for ($i = 0; $i <= $length; $i++) {
             if (($i % 2) === 0) {
                 $sum += $barcode[$length - $i] * 4;
             } else {

+ 1 - 1
library/Zend/Validate/Barcode/Identcode.php

@@ -48,5 +48,5 @@ class Zend_Validate_Barcode_Identcode extends Zend_Validate_Barcode_AdapterAbstr
      * Checksum function
      * @var string
      */
-    protected $_checksum = '_mod10ident';
+    protected $_checksum = '_identcode';
 }

+ 1 - 1
library/Zend/Validate/Barcode/Leitcode.php

@@ -48,5 +48,5 @@ class Zend_Validate_Barcode_Leitcode extends Zend_Validate_Barcode_AdapterAbstra
      * Checksum function
      * @var string
      */
-    protected $_checksum = '_mod10ident';
+    protected $_checksum = '_identcode';
 }

+ 3 - 3
tests/Zend/Validate/BarcodeTest.php

@@ -289,13 +289,13 @@ class Zend_Validate_BarcodeTest extends PHPUnit_Framework_TestCase
         $this->assertFalse($barcode->isValid('12345678901232'));
     }
 
-    public function testxxxxxxxxxxxxIDENTCODE()
+    public function testIDENTCODE()
     {
         $barcode = new Zend_Validate_Barcode('identcode');
         $this->assertTrue($barcode->isValid('564000000050'));
         $this->assertFalse($barcode->isValid('123'));
         $this->assertFalse($barcode->isValid('0563102430313'));
-        $this->assertFalse($barcode->isValid('563102430312'));
+        $this->assertFalse($barcode->isValid('564000000051'));
     }
 
     public function testxxxxxxxxxxxxITF14()
@@ -306,7 +306,7 @@ class Zend_Validate_BarcodeTest extends PHPUnit_Framework_TestCase
         $this->assertFalse($barcode->isValid('00075678164124'));
     }
 
-    public function testxxxxxxxxxxxxLEITCODE()
+    public function testLEITCODE()
     {
         $barcode = new Zend_Validate_Barcode('leitcode');
         $this->assertTrue($barcode->isValid('21348075016401'));