
from domino.core import HexToRaw
from enum import Enum

unit_on_name = {}
unit_on_uid = {}

class Unit(Enum):
    
    NMB = (HexToRaw('0002002401AC0001'), 'шт', 'Штука','796')
    NMP = (HexToRaw('0002002401AC0006'), 'упак', 'Упаковка', '778')
    LEF = (HexToRaw('0002002401B80001'), 'л.', 'Лист', '625')
    NPR = (HexToRaw('0002002402870005'), 'пар', 'Пара', '715')
    NPL = (HexToRaw('00020024013D0002'), 'рул', 'Рулон', '736')
    MTR = (HexToRaw('0002002401AC0005'), 'м', 'Метр', '006')
    CMT = (HexToRaw('0002002403AD0001'), 'см', 'Сантиметр', '004')
    DMT = (HexToRaw('0002002403B10001'), 'дм', 'Дециметр', '005')
    MMT = (HexToRaw('0002002401D70005'), 'мм', 'Миллиметр', '003')
    KMT = (HexToRaw('0002002401D70001'), 'км', 'Километр', '008') 
    _018 = (HexToRaw('00020024013D0001'), 'пог.м', 'Погонный_метр', '018')
    MTK = (HexToRaw('00020024013D0003'), 'м2', 'Квадратный_метр', '055') 
    CMK = (HexToRaw('0002002403AD0002'), 'см2', 'Квадратный_сантиметр', '051')
    MTQ = (HexToRaw('00020024013D0005'), 'м3', 'Кубический_мет', '113') 
    CMQ = (HexToRaw('0002002403AD0003'), 'см3', 'Кубический_сантиметр', '111') 
    DMQ = (HexToRaw('0002002403B10002'), 'дм3', 'Кубический_дециметр', '112+') 
    MMQ = (HexToRaw('0002002403B10003'), 'мм3', 'Кубический_миллиметр', '110') 
    _114 = (HexToRaw('0002002402870003'), 'тыс_м3', 'Тысяча_кубических_метров', '114') 
    TNE = (HexToRaw('00020024013D0004'), 'т', 'Тонна', '168') 
    KGM = (HexToRaw('0002002401AC0003'), 'кг', 'Килограмм', '166') 
    GRM = (HexToRaw('0002002401AC0004'), 'г', 'Грамм', '163') 
    KWH = (HexToRaw('0002002402870001'), 'кВт.ч', 'Киловатт/час', '10') 
    LTR = (HexToRaw('0002002401AC0002'), 'л', 'Литр', '112') 
    MLT = (HexToRaw('0002002402870004'), 'мл', 'Миллилитр', '(МЛ)"') 
    SEC = (HexToRaw('0002002401D70002'), 'с', 'Секунда', '354') 
    HUR = (HexToRaw('0002002403530001'), 'ч', 'Час', '356') 
    MIN = (HexToRaw('0002002401D70003'), 'мин', 'Минута', '355') 
    DAY = (HexToRaw('00020024034F0001'), 'дн', 'Сутки', '359') 
    WEE = (HexToRaw('00020024034F0002'), 'нед', 'Неделя', '360') 
    MON = (HexToRaw('00020024034F0003'), 'мес', 'Месяц', '362') 
    QAN = (HexToRaw('00020024034F0004'), 'кварт', 'Квартал', '364') 

    def __str__(self):
        return self.value[1]

    @property
    def short_name(self):
        return self.value[1]

    @property
    def sname(self):
        return self.value[1]
    
    @property
    def full_name(self):
        return self.value[2]

    @property
    def fname(self):
        return self.value[2]

    @property
    def code_name(self):
        return self.name, self.value[1]
    
    @property
    def code(self):
        return self.value[3]

    @staticmethod
    def get(value):
        if isinstance(value, bytes):
            return unit_on_uid.get(value)
        else:
            return unit_on_name.get(value)
'''
units = [
Unit('NMB', '0002002401AC0001', 'шт', 'Штука','796'),     
Unit('NMP', '0002002401AC0006', 'упак', 'Упаковка', '778'),
Unit('LEF', '0002002401B80001', 'л.', 'Лист', '625'),      
Unit('NPR', '0002002402870005', 'пар', 'Пара', '715'),
Unit('NPL', '00020024013D0002', 'рул', 'Рулон', '736'),
Unit('MTR', '0002002401AC0005', 'м', 'Метр', '006'),
Unit('CMT', '0002002403AD0001', 'см', 'Сантиметр', '004'),
Unit('DMT', '0002002403B10001', 'дм', 'Дециметр', '005'),
Unit('MMT', '0002002401D70005', 'мм', 'Миллиметр', '003'),
Unit('KMT', '0002002401D70001', 'км', 'Километр', '008') ,
Unit('018', '00020024013D0001', 'пог.м', 'Погонный_метр', '018'),
Unit('MTK', '00020024013D0003', 'м2', 'Квадратный_метр', '055') ,
Unit('CMK', '0002002403AD0002', 'см2', 'Квадратный_сантиметр', '051'),
Unit('MTQ', '00020024013D0005', 'м3', 'Кубический_мет', '113') ,
Unit('CMQ', '0002002403AD0003', 'см3', 'Кубический_сантиметр', '111') ,
Unit('DMQ', '0002002403B10002', 'дм3', 'Кубический_дециметр', '112+') ,
Unit('MMQ', '0002002403B10003', 'мм3', 'Кубический_миллиметр', '110') ,
Unit('114', '0002002402870003', 'тыс_м3', 'Тысяча_кубических_метров', '114') ,
Unit('TNE', '00020024013D0004', 'т', 'Тонна', '168') ,
Unit('KGM', '0002002401AC0003', 'кг', 'Килограмм', '166') ,
Unit('GRM', '0002002401AC0004', 'г', 'Грамм', '163') ,
Unit('KWH', '0002002402870001', 'кВт.ч', 'Киловатт/час', '10') ,
Unit('LTR', '0002002401AC0002', 'л', 'Литр', '112') ,
Unit('MLT', '0002002402870004', 'мл', 'Миллилитр', '(МЛ)"') ,
Unit('SEC', '0002002401D70002', 'с', 'Секунда', '354') ,
Unit('HUR', '0002002403530001', 'ч', 'Час', '356') ,
Unit('MIN', '0002002401D70003', 'мин', 'Минута', '355') ,
Unit('DAY', '00020024034F0001', 'дн', 'Сутки', '359') ,
Unit('WEE', '00020024034F0002', 'нед', 'Неделя', '360') ,
Unit('MON', '00020024034F0003', 'мес', 'Месяц', '362') ,
Unit('QAN', '00020024034F0004', 'кварт', 'Квартал', '364') 
]
'''

for unit in Unit:
    unit_on_name[unit.name] = unit
    unit_on_uid[unit.value[0]] = unit



