Oracle - функция вычисления контрольного разряда EAN-13

Функция для вычисления контрольного разряда штрихкода EAN13 по первым двенадцати цифрам.
На входе подаем строку (12-значное число).
На выходе получаем цифру контрольного разряда.
function GetControlNumber(p_code varchar2) return number
  is
   v_chet number;
   v_nechet number;
   v_itog number;
   v_res number;
  begin
     
     v_chet := to_number(substr(p_code,2,1))+to_number(substr(p_code,4,1))+to_number(substr(p_code,6,1))+to_number(substr(p_code,8,1))+to_number(substr(p_code,10,1))+to_number(substr(p_code,12,1));
     v_nechet := to_number(substr(p_code,1,1))+to_number(substr(p_code,3,1))+to_number(substr(p_code,5,1))+to_number(substr(p_code,7,1))+to_number(substr(p_code,9,1))+to_number(substr(p_code,11,1));
     v_itog := mod(((v_chet*3)+v_nechet),10);

     if v_itog>0 then 
       v_itog := 10 -v_itog;
     end if; 
     v_res:=v_itog;
     
   return v_res;
  end;


Пользуйтесь на здоровье.

Про алгоритм вычисления контрольного разряда можно прочитать здесь.

Коды стран для штрихового кода EAN13

Самым распространенным штриховым кодом в мире является 13-ти разрядный код EAN-13 (European Article Numbering) а так-же совместимый с ним 13-ти разрядный код UPC, который применяется в США и Канаде.

Такой штриховой код состоит из 13-ти цифр:
Первые 3 — это код страны;
Следующие 4 — это код производителя;
Следующие 5 — это код товара;
Последняя цифра — это контрольный разряд. (о том как его рассчитать написано здесь...)

Читать дальше →

Функция расчета контрольной цифры для кода EAN-13

Для начала о самой процедуре:
Вся суть генерации штрихового кода EAN-13 заключается в поиске контрольного разряда (последней 13-ой цифры).
Алгоритм поиска этого значения таков:
1) Оставляем 12 цифр (последняя 13 — контрольная которую ищем).
2) Суммируем разряды, стоящие на четных местах.
3) Результат пункта 2 умножаем на 3.
4) Суммируем разряды, стоящие на нечетных местах.
5) Суммируем результаты пунктов 3 и 4.
6) В полученном числе крайнюю справа цифру (остаток от деления на 10) вычесть из 10, если остаток 0 то значение равно 0.

Полученный результат и есть значение контрольной цифры.

Теперь пример на класса реализующего этот алгоритм на C#:
Читать дальше →