def PropInfo(self,ID,Name, defVal=0, Typ=1):
     '''возвращает значение свойство Name изделия с ID из базы'''
     result=None
     #try:
     result=k3.Var()
     result=k3.priceinfo(ID,Name,defVal,Typ)
     #except KeyError, ID,Name:
         #raise AttributeError, ID
     return result
Esempio n. 2
0
    }
    dCoord = {
        1: 'D',
        3: 'C',
        5: 'E',
        7: 'B',
    }
    for el in pp.elems:
        if el.Band.Material > 0:
            if dCoord.get(el.IdLine, 0):

                ind = dCoord[int(k3.findinarray(mask, int(el.IdLine)))]
                dBand[ind] = el.Band.Material
                # dBand[dCoord[el.IdLine]] = el.Band.Material

                Bndtp = k3.priceinfo(el.Band.Material, 'bandtype', 0, 1)
                if Bndtp in [1, 2, 3]:
                    v_article = k3.priceinfo(el.Band.Material, 'article',
                                             '***', 1)
                    alias = k3.priceinfo(el.Band.Material, 'Alias', v_article,
                                         1)
                    if el.IdLine in dCoord and dCoord[el.IdLine] in dictT:
                        # dictT[dCoord[el.IdLine]] = alias
                        dictT[ind] = alias
    # Для еврокромки, шлифовки, фацета нужно примечание
    if (dictT['D'] == dictT['C'] == dictT['E'] == dictT['B']) and len(
            dictT['D']) > 0:
        slt += "{} по периметру".format(dictT['D'])
    else:
        slt += ", ".join([
            "{} ({})".format(trz, dictT[trz]) for trz in dictT
Esempio n. 3
0
    def __init__(self):
        self.root = Tk()
        # self.root.title(u"Ценовой состав изделия - %s" % UnitName.decode('cp1251'))
        UName = 'Набор элементов' if len(listUN)>1 else UnitName
        self.root.title(u'{}'.format(UName))
        self.root.protocol("WM_DELETE_WINDOW", lambda: self.exitform())
        
        container = Frame(self.root) # создать внешний фрейм
        container.pack(fill='both', expand=True)
        
        self.tree = Treeview(container)
        
        self.tree["columns"]=("amount","typeunit","unitcost","extra","price")
        self.tree.column("#0",width=300)
        self.tree.heading("#0",text=u"Название")
        
        self.tree.column("amount",width=50)
        self.tree.heading("amount",text=u"Кол-во")
        
        self.tree.column("typeunit",width=80)
        self.tree.heading("typeunit",text=u"Ед. измерения")
        
        self.tree.column("unitcost",width=80)
        self.tree.heading("unitcost",text=u"Цена за ед.изм.")
        
        self.tree.column("extra",width=50)
        self.tree.heading("extra",text=u"Доп.")
        
        self.tree.column("price",width=100)
        self.tree.heading("price",text=u"Цена")

        vsb = Scrollbar(container, orient="vertical", command=self.tree.yview)
        hsb = Scrollbar(container, orient="horizontal", command=self.tree.xview)
        self.tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)
        
        #self.tree.tag_configure("ttk")
        self.tree.grid(column=0, row=0, sticky='nsew')
        vsb.grid(column=1, row=0, sticky='ns')
        hsb.grid(column=0, row=1, sticky='ew')
        
        container.grid_columnconfigure(0, weight=1)
        container.grid_rowconfigure(0, weight=1)

        for a in unique_data:
            # self.tree.insert("",0,"dir"+str(int(a[0])),text=k3.priceinfo(int(a[0]),"MATNAME","",1).decode('cp1251')\
            self.tree.insert("",0,"dir"+str(int(a[0])),text=k3.priceinfo(int(a[0]),"MATNAME","",1)\
            ,values=(lArr1.count(a), u'шт', a[1], '', round(lArr1.count(a) * a[1],2)))
            
        for key in ParGF:
            # self.tree.insert("",0,"dir"+str(key),text=NameElem[key].decode('cp1251'))
            keyGr = False
            if len(ParGF[key])>1:
                keyGr = True
                self.tree.insert("",0,"dir"+str(key),text=NameElem[key])
            CostFin = 0
            for gr in ParGF[key]:
                
                for elem in gr:
                    MatName, Size, SumCostMat, Curline, Cost, TypeElem = gr[elem]
                    
                    # Преобразуем число в наглядно понятные проценты
                    if isinstance(Curline, float):
                        znak='+' if int(Curline) >= 1 else '-'
                        perc = round((Curline%1)*100,0) if znak=='+' else round(100-(Curline%1)*100,0)
                        Curline = "{0}{1}%".format(znak, str(perc))
                    
                    # self.tree.insert("dir"+str(key),'end',text=MatName.decode('cp1251')\
                    if keyGr:
                        self.tree.insert("dir"+str(key),'end',text=MatName,values=(Size, TypeElem, SumCostMat, Curline, Cost))
                    else:
                        # self.tree.insert("",0,"dir"+str(key)',text=MatName,values=(Size, TypeElem, SumCostMat, Curline, Cost))
                        self.tree.insert("",0,"dir"+str(key),text=NameElem[key],values=(Size, TypeElem, SumCostMat, Curline, Cost))
                    
                    CostFin = CostFin + Cost
            
            if keyGr:
                self.tree.set("dir"+str(key),'price',round(CostFin,2))
Esempio n. 4
0
    def __init__(self,
                 Name=None,
                 Hold=None,
                 Diameter=None,
                 Hohe=None,
                 MX=[],
                 MY=[],
                 MZ=[],
                 Side='X',
                 Panel=None):
        self.Name = Name
        self.Hold = Hold
        self.Diameter = delZero(Diameter)
        self.counter = Counter()

        self.MX = MX
        self.MY = MY
        self.MZ = MZ
        self.XV = MX[2]
        self.YV = MY[2]
        self.ZV = MZ[2]
        self.Xc = MX[3]
        self.Yc = MY[3]
        self.Zc = MZ[3]

        self.objs = []
        self.list_of_entries = []
        self.DrawDim = True
        self.DrawNote = True
        if 0 <= abs(MX[2] - 1.0) < 0.001:
            self.Side = 'B'
        elif 0 <= abs(MX[2] + 1.0) < 0.001:
            self.Side = 'C'
        elif 0 <= abs(MY[2] - 1.0) < 0.001:
            self.Side = 'D'
        elif 0 <= abs(MY[2] + 1.0) < 0.001:
            self.Side = 'E'
        elif 0 <= abs(MZ[2] - 1.0) < 0.001:
            self.Side = 'F'
        elif 0 <= abs(MZ[2] + 1.0) < 0.001:
            self.Side = 'A'
        else:
            self.Side = 'X'
        # Если отверстие висит в воздухе над панелью
        # Требуется посчиать реальную глубину сверловки
        if self.Side in ['A', 'F']:
            if self.Zc < 0.1:
                Hohe = round(Hohe + self.Zc + 0.1)
            elif self.Zc > Panel.panelThickness + 0.1:
                th_cover = 0
                if Panel.cover_count > 0:
                    for th_c in Panel.cover_info.keys():
                        th_cover = th_cover + Panel.cover_info[th_c][2]
                Hohe = round(Panel.panelThickness + th_cover -
                             (self.Zc - Hohe) + 0.1)

        self.Hohe = delZero(Hohe)

        if (Panel.panelThickness - Hohe) < 0.01 and (self.Side in ['A', 'F']):
            self.Through = True
        else:
            self.Through = False
            if self.Side == 'F':
                self.counter.drill_F = True
            elif self.Side == 'A':
                self.counter.drill_A = True

        self.HolTypes = k3.getattr(Hold, 'priceid', 0)
        sVal = k3.priceinfo(self.HolTypes, 'MatName', '', 1)
        self.Name = str(sVal)
        sVal = k3.priceinfo(self.HolTypes, 'Alias', '', 1)
        self.Alias = str(sVal)
Esempio n. 5
0
                                if total_s1 > 0:
                                    err = k3.adbmovefirst(indrs)
                                    nGroups[IDGroup] = k3.adbgetvalue(
                                        indrs, "Name", 0)
                                else:
                                    nGroups[IDGroup] = ""
                        i += 1

                dPans['A'] = lGDecA
                dPans['F'] = lGDecF

                Shpon = False
                isMDF = False
                isDSP = False
                priceid = k3.getattr(obj, 'priceid', 0)
                parentid = k3.priceinfo(priceid, 'ParentID', 0, 1)
                pid = parentid if parentid > 0 else priceid
                MATTYPENAM = k3.priceinfo(pid, 'MATTYPENAM', "", 1)
                if MATTYPENAM[:4] == 'Шпон':
                    Shpon = True
                if MATTYPENAM[:3] == 'МДФ':
                    isMDF = True
                if MATTYPENAM[:4] == 'ДСтП':
                    isDSP = True
                for side in dPans:
                    if len(dPans[side]) > 0:
                        print("Пласть {} найдены отделки".format(side))

                        # Выяснилось, что лак матовый не нужен, только в случае исключительно одной отделки эмалью
                        # и в случае отсутствия лицевых элементов с такой же покраской и с дополнительным набором
                        # отделок, которые обязательно идут под лак