Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Функция вычисления алкокода по акцизке : Супермаг Плюс (Супермаг 2000)

22.11.2024 21:08


27.01.2017 13:09
Всем добрый день!
Как известно, алкокод можно вычислить из акцизки, в СМ+ наверняка подобная функция есть. Может кто уже искал и нашёл ? Или самостоятельно писал ?
27.01.2017 14:16
в mysql делал так:
Код:
select
...
lpad(conv(substr(ria.egais_barcode,4,16),36,10),19,0) as `alccode`,
...
from
...
нашлась еще

Цитата:

select sum(position_value) from
(
select power(36,position-1) * case when digit between '0' and '9'
then to_number(digit)
else 10 + ascii(digit) - ascii('A')
end
as position_value
from (
select substr(input_string,length(input_string)+1-level,1) digit,
level position
from (select '01Z' input_string from dual)
connect by level <= length(input_string)
)
)
27.01.2017 15:50
Что то не удалось этот код использовать, взял другой из инета.
Ниже готовая функция.

SQL код:
create or replace function pdf_to_alccode( p_in in varchar2) return varchar2
is
    p_str   varchar2 (200) := upper (substr(p_in,4,16));
    l_num   number default 0;
    l_hex   varchar2(50) default '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

begin
       if (p_str is NULL) then
            return NULL;
        end if;
        for i in 1 .. length(p_str) loop
            l_num := l_num * 36 + instr(l_hex,upper(substr(p_str,i,1)))-1;
        end loop;
    return lpad(l_num,19,'0');
end pdf_to_alccode;
/
commit; 
Часовой пояс GMT +3, время: 21:08.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.