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

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

29.03.2024 0:01


27.01.2017 13:09
Starter
 
Всем добрый день!
Как известно, алкокод можно вычислить из акцизки, в СМ+ наверняка подобная функция есть. Может кто уже искал и нашёл ? Или самостоятельно писал ?
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
Starter
 
Что то не удалось этот код использовать, взял другой из инета.
Ниже готовая функция.

SQL код:
create or replace function pdf_to_alccodep_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 NULLthen
            
return NULL;
        
end if;
        for 
i in 1 .. length(p_strloop
            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, время: 00:01.

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