Files
crm.e5.pl/modules/EcmProducts/generateEAN.php

69 lines
1.5 KiB
PHP
Raw Permalink Normal View History

2024-04-27 09:23:34 +02:00
<?php
if ($_REQUEST['fromEdit']==1) generateEAN();
function generateEAN($validate = 0) {
$country_code = '590';
$company_code = '0488';
$res = $GLOBALS['db']->query("SELECT ean, ean2 FROM ecmproducts;");
$used_ean = array();
while ($r = $GLOBALS['db']->fetchByAssoc($res)) {
if ((strlen($r['ean'])==13) && (intval($r['ean'])!=0)) $used_ean[] = substr($r['ean'],7,5);
if ((strlen($r['ean2'])==13) && (intval($r['ean'])!=0)) $used_ean[] = SUBSTR($r['ean2'],7,5);
}
//if validate !=0 don't add current values to $used_ean
if ($validate==0) {
if (strlen($_REQUEST['ean'])==13) $used_ean[] = substr($_REQUEST['ean'],7,5);
if (strlen($_REQUEST['ean2'])==13) $used_ean[] = substr($_REQUEST['ean2'],7,5);
}
if ($validate==2)
if (strlen($_REQUEST['ean'])==13) $used_ean[] = substr($_REQUEST['ean'],7,5);
//find max of last eans
$max=0;
foreach ($used_ean as $ue)
if ($ue>$max) $max=$ue;
//echo $max;
$new=$max+1;
//new_ean
$ne = array();
//country code
$ne[0]=5;
$ne[1]=9;
$ne[2]=0;
//company code
$ne[3]=0;
$ne[4]=4;
$ne[5]=8;
$ne[6]=8;
//new product code
$ne[7]=intval(substr($new,0,1));
$ne[8]=intval(substr($new,1,1));
$ne[9]=intval(substr($new,2,1));
$ne[10]=intval(substr($new,3,1));
$ne[11]=intval(substr($new,4,1));
//calculate check sum value
$h1 = $ne[11]+$ne[9]+$ne[7]+$ne[5]+$ne[3]+$ne[1];
$h2 = $h1*3;
$h3 = $ne[10]+$ne[8]+$ne[6]+$ne[4]+$ne[2]+$ne[0];
$h4 = $h2+$h3;
$h5=$h4;
//ZAOKR.GÓRA :)
if ($h5 % 10 != 0)
while ($h5 % 10 != 0) {
$h5++;
}
$ne[12]=$h5-$h4;
$ean ='';
foreach ($ne as $v)
$ean.=$v;
echo $ean;
return $ean;
}
?>