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
} 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
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))
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)
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)) # Выяснилось, что лак матовый не нужен, только в случае исключительно одной отделки эмалью # и в случае отсутствия лицевых элементов с такой же покраской и с дополнительным набором # отделок, которые обязательно идут под лак