Exemple #1
0
    def generate_pdf(self):
        """ генерация pdf. Ваш К.О. """
        try:
            path = self.app.app.sets.save_pdf
        except:
            path = ''
        filename = 'Продажи за %s.pdf' % (norm_date(self.c_date))
        f = tkFileDialog.asksaveasfilename(initialdir=path,
                                           initialfile=filename)
        if not f: return
        f = f.replace('\\', '/')
        self.app.app.sets.save_pdf = '/'.join(f.split('/')[:-1])
        doc = pdf.Pdf(title='Продажи за %s' % (norm_date(self.c_date)),
                      fname=f)
        doc.string('Доходы:')

        doc.table([('Время', 45), ('Отд', 35), ('Товар', 220), ('Сум.', 40),
                   ('К-во', 30), ('Итого', 40), ('Продавец', 90)])

        self.app.app.db.execute(
            'select time,dep,article,sum,rate,name,art_id,edit from income where date=?',
            (self.c_date, ))
        income_all = 0
        for x in self.app.app.db.fetchall():
            out = list(x)
            if out[7] <> 0:
                out[1] = str(out[1]) + u' (≈)'
            if out[6] <> -1:
                out[1] = str(out[1]) + u' →'
            out.insert(5, x[3] * x[4])
            income_all += x[3] * x[4]

            doc.table([(out[0], 45), (out[1], 35), (out[2], 220), (out[3], 40),
                       (out[4], 30), (out[5], 40), (out[6], 90)],
                      font=10)
        doc.enter()
        doc.string('Расходы:')
        outcome_all = 0

        doc.table([('Время', 45), ('Причина', 220), ('Сум.', 40),
                   ('Продавец', 90)])
        self.app.app.db.execute(
            'select time,article,sum,name,art_id,edit from outcome where date=?',
            (self.c_date, ))
        for x in self.app.app.db.fetchall():
            out = list(x)
            if out[5] <> 0:
                out[1] = u'(≈) ' + out[1]
            doc.table([(out[0], 45), (out[1], 220), (out[2], 40),
                       (out[3], 90)],
                      font=10)
            outcome_all += out[2]

        doc.enter()
        doc.string('Всего доходов: %s' % (income_all))
        doc.string('Всего расходов: %s' % (outcome_all))
        doc.string('Остаток: %s' % (income_all - outcome_all))
        doc.end()
        self.win.deiconify()
	def generate_pdf(self):
		""" генерация pdf. Ваш К.О. """
		try:path=self.app.app.sets.save_pdf
		except:path=''
		filename='Продажи за %s.pdf'%(norm_date(self.c_date))
		f=tkFileDialog.asksaveasfilename(initialdir=path,initialfile=filename)
		if not f:return
		f=f.replace('\\','/')
		self.app.app.sets.save_pdf='/'.join(f.split('/')[:-1])
		doc=pdf.Pdf(title='Продажи за %s'%(norm_date(self.c_date)),fname=f)
		doc.string('Доходы:')
		
		doc.table([('Время',45),('Отд',35),('Товар',220),('Сум.',40),('К-во',30),('Итого',40),('Продавец',90)])
		
		self.app.app.db.execute('select time,dep,article,sum,rate,name,art_id,edit from income where date=?',(self.c_date,))
		income_all=0
		for x in self.app.app.db.fetchall():
			out=list(x)
			if out[7]<>0:
				out[1]=str(out[1])+u' (≈)'			
			if out[6]<>-1:
				out[1]=str(out[1])+u' →'
			out.insert(5,x[3]*x[4])
			income_all+=x[3]*x[4]

			doc.table([(out[0],45),(out[1],35),(out[2],220),(out[3],40),(out[4],30),(out[5],40),(out[6],90)],font=10)
		doc.enter()
		doc.string('Расходы:')		
		outcome_all=0


		doc.table([('Время',45),('Причина',220),('Сум.',40),('Продавец',90)])
		self.app.app.db.execute('select time,article,sum,name,art_id,edit from outcome where date=?',(self.c_date,))
		for x in self.app.app.db.fetchall():
			out=list(x)
			if out[5]<>0:
				out[1]=u'(≈) '+out[1]
			doc.table([(out[0],45),(out[1],220),(out[2],40),(out[3],90)],font=10)
			outcome_all+=out[2]

		doc.enter()
		doc.string('Всего доходов: %s'%(income_all))	
		doc.string('Всего расходов: %s'%(outcome_all))		
		doc.string('Остаток: %s'%(income_all-outcome_all))			
		doc.end()
		self.win.deiconify()
		
		
Exemple #3
0
 def callback(self, event=None):
     """ вызывается при изменении содержимого entry """
     txt = '%%%s%%' % self.search.get().lower()
     self.lst.delete(0, END)
     if len(txt) < 3:
         self.lab_var.set('')
         return
     self.lab_var.set('Поиск....')
     self.win.update()
     self.app.app.app.db.execute(
         'select date,time,dep,article,sum,rate,name,art_id,edit from income where myLower(article) like ?',
         (txt, ))
     k = 0
     all_sum = 0
     for x in self.app.app.app.db.fetchall():
         x = list(x)
         x[0] = norm_date(x[0])
         if x[8] <> 0:
             x[2] = str(x[2]) + ' (≈)'
         if x[7] <> -1:
             x[2] = str(x[2]) + ' →'
         all_sum += x[4] * x[5]
         self.lst.insert(END, x)
         k += 1
     self.lab_var.set('Найдено %s совпадений, на сумму %s' % (k, all_sum))
Exemple #4
0
	def update_lists(self):
		""" наполняем таблицы """
		self.current_income=[]
		self.current_outcome=[]
		self.lst.delete(0,END)
		self.app.app.db.execute('select time,dep,article,sum,rate,name,art_id,date,edit from income where date=?',(self.c_date,))
		income_all=0
		for x in self.app.app.db.fetchall():
			out=list(x)
			
			if out[8]<>0:
				out[1]=str(out[1])+' (≈)'			
			if out[6]<>-1:
				out[1]=str(out[1])+' →'
			out.insert(5,round(x[3]*x[4],2))
			income_all+=x[3]*x[4]
			self.lst.insert(END,out)
			self.current_income.append(x)
		self.lst.see(END)
		outcome_all=0
		self.lst2.delete(0,END)
		self.app.app.db.execute('select time,article,sum,name,art_id,date,edit from outcome where date=?',(self.c_date,))
		for x in self.app.app.db.fetchall():
			out=list(x)
			if out[6]<>0:
				out[1]=u'(≈) '+out[1]
			self.lst2.insert(END,out)
			self.current_outcome.append(x)
			outcome_all+=out[2]
		self.lst2.see(END)

		s='За дату: %s'%(norm_date(self.c_date))
		self.d_label['text']=s	
	def __init__(self,app):
		""" класс с фреймом приходов товара """
		self.app=app
		self.win=Frame(self.app.win,width=20,height=50)
		self.lst=MultiListbox(self.win, (('Дата', 8), ('Время', 5), ('Приход', 50),('Пользователь',10)),font=('normal',10),height=7,command=self.l_command)
		self.lst.pack(fill=BOTH,expand=1,padx=5,pady=5)

		self.lst2=MultiListbox(self.win, (('Отдел', 3),('Товар', 73), ('Количество', 5)),font=('normal',10),height=10)
		self.lst2.pack(fill=BOTH,expand=1,padx=5,pady=5)
		

		self.pdf_but=Button(self.win,text='В pdf',image=self.app.app.app.img['pdf'],compound='left',command=self.generate_pdf)
		self.pdf_but.pack(anchor=W)
		
		self.app.app.app.db.execute('select id,date,time,rate,user from in_art')
		rez=self.app.app.app.db.fetchall()
		self.sums={}
		self.ids={}
		self.naim={}
		self.user={}
		for x in rez:
			self.ids[x[0]]=[norm_date(x[1]),x[2],x[4]]
			self.sums[x[0]]=self.sums.setdefault(x[0],0)+x[3]
			self.naim[x[0]]=self.naim.setdefault(x[0],0)+1			
		
		k=self.ids.keys()
		k.sort()
		self.c_id=k
			
		for x in k:
			self.lst.insert(END,[self.ids[x][0],self.ids[x][1],'Наименований товаров %s шт., общее количество %s шт.'%(self.naim[x],self.sums[x]),self.ids[x][2]])
		self.lst.see(END)	
Exemple #6
0
	def generate_csv(self):
		""" генерация csv """
		try:path=self.app.app.sets.save_pdf
		except:path=''
		filename='Остатки по отделу %s на %s.csv'%(self.cur_dep+1,norm_date(date_now()))
		f=tkFileDialog.asksaveasfilename(initialdir=path,initialfile=filename)
		if not f:return
		f=f.replace('\\','/')
		self.app.app.sets.save_pdf='/'.join(f.split('/')[:-1])
		doc=csv.writer(open(f,'w'),delimiter=';',lineterminator='\n',quoting=csv.QUOTE_ALL)
		doc.writerow([u'Товар'.encode('cp1251'),u'Остаток'.encode('cp1251'),u'Стоимость'.encode('cp1251')])



		r=self.rb_var.get()
		rate=self.rate_ent.get()
		self.app.app.db.execute('select name from dep where id=?',(self.cur_dep+1,))
		
		dep_name=self.app.app.db.fetchall()[0][0]
	

		if r==0:
			self.app.app.db.execute('select id,rate,sum,type from article where dep=?',(self.cur_dep+1,))
		else:
			try:rate=int(rate)
			except:return
			self.app.app.db.execute('select id,rate,sum,type from article where dep=? and rate<?',(self.cur_dep+1,rate))
		rez1=self.app.app.db.fetchall()
	
		all_rate=0
		all_sum=0
		for x in rez1:

			t=[]
			flag=True
			self.app.app.db.execute('select name,edit,sum,parent from article where id=?',(x[0],))
			s=self.app.app.db.fetchall()[0]
			par=s[3]
			t.append(s[0])
			if par==-1:flag=0
			while flag:
				self.app.app.db.execute('select name,parent from article where id=?',(par,))
				rez=self.app.app.db.fetchall()[0]
				if rez[1]==-1:
					t.append(rez[0])
					flag=False
				else:
					t.append(rez[0])
					par=rez[1]
			cat_lst=' > '.join(t[::-1])
			if x[3]=='item':
				doc.writerow([cat_lst.encode('cp1251'),x[1],x[2]])

				all_rate+=x[1]
				all_sum+=x[1]*x[2]

		self.lab_var.set('Наименований: %s, количество: %s, на сумму %s'%(len(rez1),all_rate,all_sum))

		self.win.deiconify()
Exemple #7
0
 def del_outcome(self, date, tm, art, sum, c_user, user, pr):
     """Запись об уделании расхода """
     mess = u'Пользователь %s удалил расход от %s %s\nРасход: %s\nНа сумму: %s\nБыл сделан пользователем %s\nПричина: %s' % (
         user, norm_date(date).decode('utf-8'), tm, art, sum, c_user, pr)
     self.db.execute(
         'insert into edit_log values (?,?,?,?,?,?)',
         (date_now(), time_now(), u'Удален расход', mess, date, tm))
     self.con.commit()
	def run(self):

		self.win=Toplevel(self.app.app.win)
		self.win.title(name)
		x,y=800,450
		pos=self.win.wm_maxsize()[0]/2-x/2,self.win.wm_maxsize()[1]/2-y/2
		self.win.geometry('%sx%s+%s+%s'%(x,y,pos[0],pos[1]-25))	
		self.win.maxsize(width=x,height=y)
		self.win.minsize(width=x,height=y)
		if sys.platform=='win32':self.win.iconbitmap('app/images/icon.ico')
		year,month = time.localtime()[0:2]
		self.date_t=StringVar()
		self.date_t.set(date_now())
		self.c_date=date_now()
		self.cal=TkCalendar(self.win,year, month, self.date_t,command=self.calend_handler)	
		self.cal.grid(row=0,column=0,padx=5,pady=10,sticky=N)

		self.content_frame=Frame(self.win)
		self.content_frame.grid(row=0,column=1,rowspan=3,sticky=N)
		
		self.tool_frame=Labelframe(self.win,text='Итог')
		self.tool_frame.grid(row=1,column=0,sticky=N+W)
		Label(self.content_frame,text='Приход:',font=('normal',12)).pack(fill=BOTH)
		self.lst=MultiListbox(self.content_frame, (('Время', 8), ('Отдел', 5), ('Товар', 32),('Сумма',5),('Кол.во',1),('Итог',5),('Продавец',12)),font=('normal',10),height=15)
		self.lst.pack(fill=BOTH,expand=1)	
		Label(self.content_frame,text='Расход:',font=('normal',12)).pack(fill=BOTH)
		self.lst2=MultiListbox(self.content_frame, (('Время', 8),  ('Причина', 35),('Сумма',5),('Продавец',12)),font=('normal',10),height=6)
		self.lst2.pack(fill=BOTH,expand=1)


		s='За дату: %s'%(norm_date(date_now()))
		self.d_label=Label(self.tool_frame,text=s,font=('bold',12))
		self.d_label.grid(row=0,columnspan=2,sticky=N+W)

		s='Доход: 0'
		self.in_label=Label(self.tool_frame,text=s,font=('bold',12))
		self.in_label.grid(row=1,columnspan=2,sticky=N+W)
		
		s='Расход: 0'
		self.out_label=Label(self.tool_frame,text=s,font=('bold',12))
		self.out_label.grid(row=2,columnspan=2,sticky=N+W)
		
		s='Остаток: 0'
		self.all_label=Label(self.tool_frame,text=s,font=('bold',12))
		self.all_label.grid(row=3,columnspan=2,sticky=N+W)
		
		self.scr1=Scrollbar(self.tool_frame,orient=VERTICAL)
		self.scr1.grid(row=4,column=1,sticky=N+S,pady=5)
		self.list_1=Listbox(self.tool_frame,width=27,height=5,
			font=("normal",9),
			yscrollcommand=self.scr1.set)
		self.list_1.grid(row=4,column=0,pady=5)
		self.scr1['command']=self.list_1.yview

		self.pdf_but=Button(self.win,text='В pdf',image=self.app.app.img['pdf'],compound='left',command=self.generate_pdf)
		self.pdf_but.grid(row=2,column=0,sticky=N)

		self.update_lists()
Exemple #9
0
 def del_income(self, date, tm, dep, art, pr, summa, rate, user):
     """Запись об уделании продажи """
     mess = u'Пользователь %s удалил продажу от %s %s\nОтдела #%s\nТовар: %s\nСумма: %s, количество: %s\nПо причине: %s' % (
         user, norm_date(date).decode('utf-8'), tm, dep, art, summa, rate,
         pr)
     self.db.execute(
         'insert into edit_log values (?,?,?,?,?,?)',
         (date_now(), time_now(), u'Удалена продажа', mess, date, tm))
     self.con.commit()
	def update_lists(self):
		""" обновляем списки """
		self.all_data=[]
		self.lst.delete(0,END)
		if self.c_date=='Все':
			self.app.app.db.execute('select date,time,title,event from edit_log')
		else:self.app.app.db.execute('select date,time,title,event from edit_log where date=?',(self.c_date,))
		for x in self.app.app.db.fetchall():
			x=list(x)
			x[0]=norm_date(x[0])
			self.lst.insert(END,x)
			self.all_data.append(x)
		self.lst.see(END)
		if self.c_date=='Все':
			self.d_label['text']='За дату: ВСЕ'	
		else:
			s='За дату: %s'%(norm_date(self.c_date))
			self.d_label['text']=s	
	def update_lists(self):
		""" заполняем таблицы """
		self.lst.delete(0,END)
		self.app.app.db.execute('select time,dep,article,sum,rate,name,art_id,edit from income where date=?',(self.c_date,))
		income_all=0
		for x in self.app.app.db.fetchall():
			out=list(x)
			if out[7]<>0:
				out[1]=str(out[1])+' (≈)'			
			if out[6]<>-1:
				out[1]=str(out[1])+' →'
			out.insert(5,round(x[3]*x[4],2))
			income_all+=x[3]*x[4]
			self.lst.insert(END,out)
		self.lst.see(END)
		outcome_all=0
		self.lst2.delete(0,END)
		self.app.app.db.execute('select time,article,sum,name,art_id,edit from outcome where date=?',(self.c_date,))
		for x in self.app.app.db.fetchall():
			out=list(x)
			if out[5]<>0:
				out[1]=u'(≈) '+out[1]
			self.lst2.insert(END,out)
			outcome_all+=out[2]
		self.lst2.see(END)
		self.in_label['text']='Доход: %s'%(income_all)
		self.out_label['text']='Расход: %s'%(outcome_all)
		self.all_label['text']='Остаток: %s'%(income_all-outcome_all)
		s='За дату: %s'%(norm_date(self.c_date))
		self.d_label['text']=s	

		deps={}
		deps_sum={}
		self.app.app.db.execute('select name from dep')
		
		self.deps=[]

		
		for n,name in enumerate(self.app.app.db.fetchall()):
			if name:
				deps_sum[n+1]=0
				self.deps.append('%s'%(name[0]))
		
		self.app.app.db.execute('select dep,sum,rate from income where date=?',(self.c_date,))
		out=self.app.app.db.fetchall()
		in_all=0
		for x in out:
			in_all+=float(x[1])*float(x[2])
			deps_sum[x[0]]+=float(x[1])*float(x[2])

		self.list_1.delete(0,END)
		
		for x in deps_sum:
			if deps_sum[x]:
				self.list_1.insert(END,str(x)+' '+self.deps[x-1]+u'→ '+str(deps_sum[x]))
	def __init__(self,app):
		""" список списаний """
		self.app=app
		self.win=Frame(self.app.win)
		self.lst=MultiListbox(self.win, (('Дата', 11), ('Время', 8), ('Товар', 45),('Причина',15),('К-во',3),('Кто',10)),font=('normal',9),height=17)
		self.lst.pack(fill=BOTH,expand=1,padx=5,pady=5)
		self.app.app.app.db.execute('select * from out_art')
		for x in self.app.app.app.db.fetchall():
			x=list(x)
			x[0]=norm_date(x[0])
			self.lst.insert(END,x)
		self.lst.see(END)
Exemple #13
0
    def generate_pdf(self):
        """ генерация pdf c выбранным приходом """
        if not self.lst.curselection(): return
        sel = int(self.lst.curselection()[0])
        id = self.c_id[sel]

        self.app.app.app.db.execute('select date,time from in_art where id=?',
                                    (id, ))
        rez = self.app.app.app.db.fetchall()[0]

        try:
            path = self.app.app.app.sets.save_pdf
        except:
            path = ''
        print rez
        filename = ('Приход товара за %s %s.pdf' %
                    (norm_date(rez[0]), str(rez[1]))).replace(':', '-')
        f = tkFileDialog.asksaveasfilename(initialdir=path,
                                           initialfile=filename)
        if not f: return
        f = f.replace('\\', '/')
        self.app.app.app.sets.save_pdf = '/'.join(f.split('/')[:-1])
        doc = pdf.Pdf(title='Приход товара', fname=f)
        doc.string('Приход товара за %s %s' % (norm_date(rez[0]), str(rez[1])))

        self.app.app.app.db.execute(
            'select dep,name,rate from in_art where id=?', (id, ))
        doc.table([('Отдел', 45), ('Товар', 350), ('Кол.во', 50)])
        n = 0
        s = 0
        for x in self.app.app.app.db.fetchall():
            n += 1
            doc.table([(x[0], 45), (x[1], 350), (x[2], 50)], font=10)
            s += x[2]
        doc.enter()
        doc.string('Наименований: %s' % (n))
        doc.string('Количество: %s' % (s))

        doc.end()
        self.app.win.deiconify()
Exemple #14
0
	def run(self):
		self.log=Log(self.app.app)
		self.win=Toplevel(self.app.app.win)
		self.win.title(name)
		self.win.protocol("WM_DELETE_WINDOW", self.exit)
		x,y=800,450
		pos=self.win.wm_maxsize()[0]/2-x/2,self.win.wm_maxsize()[1]/2-y/2
		self.win.geometry('%sx%s+%s+%s'%(x,y,pos[0],pos[1]-25))	
		self.win.maxsize(width=x,height=y)
		self.win.minsize(width=x,height=y)
		if sys.platform=='win32':self.win.iconbitmap('app/images/icon.ico')
		year,month = time.localtime()[0:2]
		self.date_t=StringVar()
		self.date_t.set(date_now())
		self.c_date=date_now()
		self.cal=TkCalendar(self.win,year, month, self.date_t,command=self.calend_handler)	
		self.cal.grid(row=0,column=0,padx=5,pady=10,sticky=N)

		self.content_frame=Frame(self.win)
		self.content_frame.grid(row=0,column=1,rowspan=3,sticky=N)
		
		self.tool_frame=Frame(self.win)
		self.tool_frame.grid(row=1,column=0,sticky=N+W)
		Label(self.content_frame,text='Приход:',font=('normal',12)).pack(fill=BOTH)
		self.lst=MultiListbox(self.content_frame, (('Время', 8), ('Отдел', 5), ('Товар', 40),('Сумма',5),('Кол.во',1),('Итог',5),('Продавец',12)),font=('normal',10),height=6,command=self.lst1select)
		self.lst.pack(fill=BOTH,expand=1)	
		Label(self.content_frame,text='Расход:',font=('normal',12)).pack(fill=BOTH)
		self.lst2=MultiListbox(self.content_frame, (('Время', 8),  ('Причина', 35),('Сумма',5),('Продавец',12)),font=('normal',10),height=6,command=self.lst2select)
		self.lst2.pack(fill=BOTH,expand=1)


		s='За дату: %s'%(norm_date(date_now()))
		self.d_label=Label(self.tool_frame,text=s,font=('bold',12))
		self.d_label.grid(row=0,columnspan=2,sticky=N+W)
		
		
		self.edit_frame_parrent=Labelframe(self.content_frame,text='Редактировать',
			width=50,height=100)
		self.edit_frame_parrent.pack(fill=BOTH,expand=1)

		self.delete_frame_parrent=Labelframe(self.content_frame,text='Удалить',
			width=50,height=50)
		self.delete_frame_parrent.pack(fill=BOTH,expand=1)	

		self.edit_frame=Frame(self.edit_frame_parrent,height=63)
		self.edit_frame.pack()
		self.delete_frame=Frame(self.delete_frame_parrent,height=46)
		self.delete_frame.pack()		



		self.update_lists()
Exemple #15
0
 def update_lists(self):
     """ обновляем списки """
     self.all_data = []
     self.lst.delete(0, END)
     if self.c_date == 'Все':
         self.app.app.db.execute(
             'select date,time,title,event from edit_log')
     else:
         self.app.app.db.execute(
             'select date,time,title,event from edit_log where date=?',
             (self.c_date, ))
     for x in self.app.app.db.fetchall():
         x = list(x)
         x[0] = norm_date(x[0])
         self.lst.insert(END, x)
         self.all_data.append(x)
     self.lst.see(END)
     if self.c_date == 'Все':
         self.d_label['text'] = 'За дату: ВСЕ'
     else:
         s = 'За дату: %s' % (norm_date(self.c_date))
         self.d_label['text'] = s
Exemple #16
0
    def edit_outcome(self, date, tm, old, new, user, c_user):
        """Запись о редактировании расхода """
        ms = []
        if old[0] <> new[0]:
            ms.append(u'Причина с %s на %s' % (old[0], new[0]))
        if old[1] <> new[1]:
            ms.append(u'Сумма с %s на %s' % (old[1], new[1]))

        if not ms: return
        mess = u'Пользователь %s изменил расход от %s %s\nИзменения:\n%s\nБыл сделан пользователем %s' % (
            user, norm_date(date).decode('utf-8'), tm, '\n'.join(ms), c_user)
        self.db.execute(
            'insert into edit_log values (?,?,?,?,?,?)',
            (date_now(), time_now(), u'Отредактирован расход', mess, date, tm))
        self.con.commit()
	def generate_pdf(self):
		""" генерация pdf c выбранным приходом """
		if not self.lst.curselection():return
		sel=int(self.lst.curselection()[0])
		id=self.c_id[sel]	
		
		self.app.app.app.db.execute('select date,time from in_art where id=?',(id,))
		rez=self.app.app.app.db.fetchall()[0]
		
		
		try:path=self.app.app.app.sets.save_pdf
		except:path=''
		print rez
		filename=('Приход товара за %s %s.pdf'%(norm_date(rez[0]),str(rez[1]))).replace(':','-')
		f=tkFileDialog.asksaveasfilename(initialdir=path,initialfile=filename)
		if not f:return
		f=f.replace('\\','/')
		self.app.app.app.sets.save_pdf='/'.join(f.split('/')[:-1])
		doc=pdf.Pdf(title='Приход товара',fname=f)
		doc.string('Приход товара за %s %s'%(norm_date(rez[0]),str(rez[1])))
		
		self.app.app.app.db.execute('select dep,name,rate from in_art where id=?',(id,))
		doc.table([('Отдел',45),('Товар',350),('Кол.во',50)])
		n=0
		s=0
		for x in self.app.app.app.db.fetchall():
			n+=1
			doc.table([(x[0],45),(x[1],350),(x[2],50)],font=10)
			s+=x[2]
		doc.enter()
		doc.string('Наименований: %s'%(n))
		doc.string('Количество: %s'%(s))		
		
		
		doc.end()
		self.app.win.deiconify()
Exemple #18
0
    def __init__(self, app):
        """ класс с фреймом приходов товара """
        self.app = app
        self.win = Frame(self.app.win, width=20, height=50)
        self.lst = MultiListbox(self.win,
                                (('Дата', 8), ('Время', 5), ('Приход', 50),
                                 ('Пользователь', 10)),
                                font=('normal', 10),
                                height=7,
                                command=self.l_command)
        self.lst.pack(fill=BOTH, expand=1, padx=5, pady=5)

        self.lst2 = MultiListbox(self.win, (('Отдел', 3), ('Товар', 73),
                                            ('Количество', 5)),
                                 font=('normal', 10),
                                 height=10)
        self.lst2.pack(fill=BOTH, expand=1, padx=5, pady=5)

        self.pdf_but = Button(self.win,
                              text='В pdf',
                              image=self.app.app.app.img['pdf'],
                              compound='left',
                              command=self.generate_pdf)
        self.pdf_but.pack(anchor=W)

        self.app.app.app.db.execute(
            'select id,date,time,rate,user from in_art')
        rez = self.app.app.app.db.fetchall()
        self.sums = {}
        self.ids = {}
        self.naim = {}
        self.user = {}
        for x in rez:
            self.ids[x[0]] = [norm_date(x[1]), x[2], x[4]]
            self.sums[x[0]] = self.sums.setdefault(x[0], 0) + x[3]
            self.naim[x[0]] = self.naim.setdefault(x[0], 0) + 1

        k = self.ids.keys()
        k.sort()
        self.c_id = k

        for x in k:
            self.lst.insert(END, [
                self.ids[x][0], self.ids[x][1],
                'Наименований товаров %s шт., общее количество %s шт.' %
                (self.naim[x], self.sums[x]), self.ids[x][2]
            ])
        self.lst.see(END)
Exemple #19
0
 def __init__(self, app):
     """ список списаний """
     self.app = app
     self.win = Frame(self.app.win)
     self.lst = MultiListbox(self.win,
                             (('Дата', 11), ('Время', 8), ('Товар', 45),
                              ('Причина', 15), ('К-во', 3), ('Кто', 10)),
                             font=('normal', 9),
                             height=17)
     self.lst.pack(fill=BOTH, expand=1, padx=5, pady=5)
     self.app.app.app.db.execute('select * from out_art')
     for x in self.app.app.app.db.fetchall():
         x = list(x)
         x[0] = norm_date(x[0])
         self.lst.insert(END, x)
     self.lst.see(END)
Exemple #20
0
 def edit_income(self, date, tm, old, new, user, c_user):
     """Запись о редактировании продажи """
     ms = []
     if old[0] <> new[0]:
         ms.append(u'Отдел с %s на %s' % (old[0], new[0]))
     if old[1] <> new[1]:
         ms.append(u'Товар с %s на %s' % (old[1], new[1]))
     if old[2] <> new[2]:
         ms.append(u'Количество с %s на %s' % (old[2], new[2]))
     if old[3] <> new[3]:
         ms.append(u'Сумма с %s на %s' % (old[3], new[3]))
     if not ms: return
     mess = u'Пользователь %s изменил продажу от %s %s\nИзменения:\n%s\nБыла сделана пользователем %s' % (
         user, norm_date(date).decode('utf-8'), tm, '\n'.join(ms), c_user)
     self.db.execute('insert into edit_log values (?,?,?,?,?,?)',
                     (date_now(), time_now(), u'Отредактирована продажа',
                      mess, date, tm))
     self.con.commit()
Exemple #21
0
	def callback(self,event=None):
		""" Вызывается при смене содержимого entry """
		txt='%%%s%%'%self.search.get().lower()
		self.lst.delete(0,END)
		if len(txt)<3:
			self.lab_var.set('')
			return
		self.lab_var.set('Поиск....')
		self.win.update()
		self.app.app.app.db.execute('select date,time,article,sum,name,edit from outcome where myLower(article) like ?',(txt,))
		k=0
		all_sum=0
		for x in self.app.app.app.db.fetchall():
			x=list(x)
			x[0]=norm_date(x[0])
			if x[5]<>0:
				x[2]=u'(≈) '+x[2]			
		
			self.lst.insert(END,x)
			all_sum+=x[3]
			k+=1
		self.lab_var.set('Найдено %s совпадений, на сумму %s'%(k,all_sum))
Exemple #22
0
    def update_lists(self):
        """ наполняем таблицы """
        self.current_income = []
        self.current_outcome = []
        self.lst.delete(0, END)
        self.app.app.db.execute(
            'select time,dep,article,sum,rate,name,art_id,date,edit from income where date=?',
            (self.c_date, ))
        income_all = 0
        for x in self.app.app.db.fetchall():
            out = list(x)

            if out[8] <> 0:
                out[1] = str(out[1]) + ' (≈)'
            if out[6] <> -1:
                out[1] = str(out[1]) + ' →'
            out.insert(5, round(x[3] * x[4], 2))
            income_all += x[3] * x[4]
            self.lst.insert(END, out)
            self.current_income.append(x)
        self.lst.see(END)
        outcome_all = 0
        self.lst2.delete(0, END)
        self.app.app.db.execute(
            'select time,article,sum,name,art_id,date,edit from outcome where date=?',
            (self.c_date, ))
        for x in self.app.app.db.fetchall():
            out = list(x)
            if out[6] <> 0:
                out[1] = u'(≈) ' + out[1]
            self.lst2.insert(END, out)
            self.current_outcome.append(x)
            outcome_all += out[2]
        self.lst2.see(END)

        s = 'За дату: %s' % (norm_date(self.c_date))
        self.d_label['text'] = s
Exemple #23
0
	def edit_outcome(self,date,tm,old,new,user,c_user):
		"""Запись о редактировании расхода """
		ms=[]
		if old[0]<>new[0]:
			ms.append(u'Причина с %s на %s'%(old[0],new[0]))
		if old[1]<>new[1]:
			ms.append(u'Сумма с %s на %s'%(old[1],new[1]))

		if not ms:return
		mess=u'Пользователь %s изменил расход от %s %s\nИзменения:\n%s\nБыл сделан пользователем %s'%(user,norm_date(date).decode('utf-8'),tm,'\n'.join(ms),c_user)
		self.db.execute('insert into edit_log values (?,?,?,?,?,?)',(date_now(),time_now(),u'Отредактирован расход',mess,date,tm))
		self.con.commit()	
Exemple #24
0
 def update_label(self):
     self.lab_var.set('Показать с  %s  по %s' %
                      (norm_date(self.c_date), norm_date(self.c_date2)))
Exemple #25
0
	def edit_income(self,date,tm,old,new,user,c_user):
		"""Запись о редактировании продажи """
		ms=[]
		if old[0]<>new[0]:
			ms.append(u'Отдел с %s на %s'%(old[0],new[0]))
		if old[1]<>new[1]:
			ms.append(u'Товар с %s на %s'%(old[1],new[1]))
		if old[2]<>new[2]:
			ms.append(u'Количество с %s на %s'%(old[2],new[2]))
		if old[3]<>new[3]:
			ms.append(u'Сумма с %s на %s'%(old[3],new[3]))	
		if not ms:return
		mess=u'Пользователь %s изменил продажу от %s %s\nИзменения:\n%s\nБыла сделана пользователем %s'%(user,norm_date(date).decode('utf-8'),tm,'\n'.join(ms),c_user)
		self.db.execute('insert into edit_log values (?,?,?,?,?,?)',(date_now(),time_now(),u'Отредактирована продажа',mess,date,tm))
		self.con.commit()	
Exemple #26
0
	def generate_pdf(self):
		""" генерация pdf """
		try:path=self.app.app.sets.save_pdf
		except:path=''
		filename='Остатки по отделу %s на %s.pdf'%(self.cur_dep+1,norm_date(date_now()))
		f=tkFileDialog.asksaveasfilename(initialdir=path,initialfile=filename)
		if not f:return
		f=f.replace('\\','/')
		self.app.app.sets.save_pdf='/'.join(f.split('/')[:-1])
		doc=pdf.Pdf(title='Остатки товара',fname=f)



		r=self.rb_var.get()
		rate=self.rate_ent.get()
		self.app.app.db.execute('select name from dep where id=?',(self.cur_dep+1,))
		
		dep_name=self.app.app.db.fetchall()[0][0]
	

		if r==0:
			self.app.app.db.execute('select id,rate,sum,type from article where dep=?',(self.cur_dep+1,))
			doc.string(u'Все остатки по отделу %s %s'%(self.cur_dep+1,dep_name))
		else:
			try:rate=int(rate)
			except:return
			self.app.app.db.execute('select id,rate,sum,type from article where dep=? and rate<?',(self.cur_dep+1,rate))
			doc.string(u'Остатки по отделу %s %s, количество товара меньше %s'%(self.cur_dep+1,dep_name,rate))
		rez1=self.app.app.db.fetchall()
	
		all_rate=0
		all_sum=0
		doc.table([('Товар',300),('Остаток',80),('Стоимость',80)])
		for x in rez1:

			t=[]
			flag=True
			self.app.app.db.execute('select name,edit,sum,parent from article where id=?',(x[0],))
			s=self.app.app.db.fetchall()[0]
			par=s[3]
			t.append(s[0])
			if par==-1:flag=0
			while flag:
				self.app.app.db.execute('select name,parent from article where id=?',(par,))
				rez=self.app.app.db.fetchall()[0]
				if rez[1]==-1:
					t.append(rez[0])
					flag=False
				else:
					t.append(rez[0])
					par=rez[1]
			cat_lst=' > '.join(t[::-1])
			if x[3]=='item':
				doc.table([(cat_lst,300),(x[1],80),(x[2],80)],font=10)
				all_rate+=x[1]
				all_sum+=x[1]*x[2]

		self.lab_var.set('Наименований: %s, количество: %s, на сумму %s'%(len(rez1),all_rate,all_sum))
		doc.enter()
		doc.string('Всего наименований: %s'%(len(rez1)))
		doc.string('Всего количество: %s, на сумму %s'%(all_rate,all_sum))
		doc.end()
		self.win.deiconify()
Exemple #27
0
	def del_outcome(self,date,tm,art,sum,c_user,user,pr):
		"""Запись об уделании расхода """
		mess=u'Пользователь %s удалил расход от %s %s\nРасход: %s\nНа сумму: %s\nБыл сделан пользователем %s\nПричина: %s'%(user,norm_date(date).decode('utf-8'),tm,art,sum,c_user,pr)
		self.db.execute('insert into edit_log values (?,?,?,?,?,?)',(date_now(),time_now(),u'Удален расход',mess,date,tm))
		self.con.commit()	
Exemple #28
0
	def del_income(self,date,tm,dep,art,pr,summa,rate,user):
		"""Запись об уделании продажи """
		mess=u'Пользователь %s удалил продажу от %s %s\nОтдела #%s\nТовар: %s\nСумма: %s, количество: %s\nПо причине: %s'%(user,norm_date(date).decode('utf-8'),tm,dep,art,summa,rate,pr)
		self.db.execute('insert into edit_log values (?,?,?,?,?,?)',(date_now(),time_now(),u'Удалена продажа',mess,date,tm))
		self.con.commit()
Exemple #29
0
    def generate_pdf(self):
        """ генерация pdf """
        try:
            path = self.app.app.sets.save_pdf
        except:
            path = ''
        filename = 'Остатки по отделу %s на %s.pdf' % (self.cur_dep + 1,
                                                       norm_date(date_now()))
        f = tkFileDialog.asksaveasfilename(initialdir=path,
                                           initialfile=filename)
        if not f: return
        f = f.replace('\\', '/')
        self.app.app.sets.save_pdf = '/'.join(f.split('/')[:-1])
        doc = pdf.Pdf(title='Остатки товара', fname=f)

        r = self.rb_var.get()
        rate = self.rate_ent.get()
        self.app.app.db.execute('select name from dep where id=?',
                                (self.cur_dep + 1, ))

        dep_name = self.app.app.db.fetchall()[0][0]

        if r == 0:
            self.app.app.db.execute(
                'select id,rate,sum,type from article where dep=?',
                (self.cur_dep + 1, ))
            doc.string(u'Все остатки по отделу %s %s' %
                       (self.cur_dep + 1, dep_name))
        else:
            try:
                rate = int(rate)
            except:
                return
            self.app.app.db.execute(
                'select id,rate,sum,type from article where dep=? and rate<?',
                (self.cur_dep + 1, rate))
            doc.string(
                u'Остатки по отделу %s %s, количество товара меньше %s' %
                (self.cur_dep + 1, dep_name, rate))
        rez1 = self.app.app.db.fetchall()

        all_rate = 0
        all_sum = 0
        doc.table([('Товар', 300), ('Остаток', 80), ('Стоимость', 80)])
        for x in rez1:

            t = []
            flag = True
            self.app.app.db.execute(
                'select name,edit,sum,parent from article where id=?',
                (x[0], ))
            s = self.app.app.db.fetchall()[0]
            par = s[3]
            t.append(s[0])
            if par == -1: flag = 0
            while flag:
                self.app.app.db.execute(
                    'select name,parent from article where id=?', (par, ))
                rez = self.app.app.db.fetchall()[0]
                if rez[1] == -1:
                    t.append(rez[0])
                    flag = False
                else:
                    t.append(rez[0])
                    par = rez[1]
            cat_lst = ' > '.join(t[::-1])
            if x[3] == 'item':
                doc.table([(cat_lst, 300), (x[1], 80), (x[2], 80)], font=10)
                all_rate += x[1]
                all_sum += x[1] * x[2]

        self.lab_var.set('Наименований: %s, количество: %s, на сумму %s' %
                         (len(rez1), all_rate, all_sum))
        doc.enter()
        doc.string('Всего наименований: %s' % (len(rez1)))
        doc.string('Всего количество: %s, на сумму %s' % (all_rate, all_sum))
        doc.end()
        self.win.deiconify()
Exemple #30
0
    def generate_csv(self):
        """ генерация csv """
        try:
            path = self.app.app.sets.save_pdf
        except:
            path = ''
        filename = 'Остатки по отделу %s на %s.csv' % (self.cur_dep + 1,
                                                       norm_date(date_now()))
        f = tkFileDialog.asksaveasfilename(initialdir=path,
                                           initialfile=filename)
        if not f: return
        f = f.replace('\\', '/')
        self.app.app.sets.save_pdf = '/'.join(f.split('/')[:-1])
        doc = csv.writer(open(f, 'w'),
                         delimiter=';',
                         lineterminator='\n',
                         quoting=csv.QUOTE_ALL)
        doc.writerow([
            u'Товар'.encode('cp1251'), u'Остаток'.encode('cp1251'),
            u'Стоимость'.encode('cp1251')
        ])

        r = self.rb_var.get()
        rate = self.rate_ent.get()
        self.app.app.db.execute('select name from dep where id=?',
                                (self.cur_dep + 1, ))

        dep_name = self.app.app.db.fetchall()[0][0]

        if r == 0:
            self.app.app.db.execute(
                'select id,rate,sum,type from article where dep=?',
                (self.cur_dep + 1, ))
        else:
            try:
                rate = int(rate)
            except:
                return
            self.app.app.db.execute(
                'select id,rate,sum,type from article where dep=? and rate<?',
                (self.cur_dep + 1, rate))
        rez1 = self.app.app.db.fetchall()

        all_rate = 0
        all_sum = 0
        for x in rez1:

            t = []
            flag = True
            self.app.app.db.execute(
                'select name,edit,sum,parent from article where id=?',
                (x[0], ))
            s = self.app.app.db.fetchall()[0]
            par = s[3]
            t.append(s[0])
            if par == -1: flag = 0
            while flag:
                self.app.app.db.execute(
                    'select name,parent from article where id=?', (par, ))
                rez = self.app.app.db.fetchall()[0]
                if rez[1] == -1:
                    t.append(rez[0])
                    flag = False
                else:
                    t.append(rez[0])
                    par = rez[1]
            cat_lst = ' > '.join(t[::-1])
            if x[3] == 'item':
                doc.writerow([cat_lst.encode('cp1251'), x[1], x[2]])

                all_rate += x[1]
                all_sum += x[1] * x[2]

        self.lab_var.set('Наименований: %s, количество: %s, на сумму %s' %
                         (len(rez1), all_rate, all_sum))

        self.win.deiconify()
Exemple #31
0
 def update_label(self):
     self.lab_var.set("Показать с  %s  по %s" % (norm_date(self.c_date), norm_date(self.c_date2)))
Exemple #32
0
    def run(self):

        self.win = Toplevel(self.app.app.win)
        self.win.title(name)
        x, y = 800, 450
        pos = self.win.wm_maxsize()[0] / 2 - x / 2, self.win.wm_maxsize(
        )[1] / 2 - y / 2
        self.win.geometry('%sx%s+%s+%s' % (x, y, pos[0], pos[1] - 25))
        self.win.maxsize(width=x, height=y)
        self.win.minsize(width=x, height=y)
        if sys.platform == 'win32': self.win.iconbitmap('app/images/icon.ico')
        year, month = time.localtime()[0:2]
        self.date_t = StringVar()
        self.date_t.set(date_now())
        self.c_date = date_now()
        self.cal = TkCalendar(self.win,
                              year,
                              month,
                              self.date_t,
                              command=self.calend_handler)
        self.cal.grid(row=0, column=0, padx=5, pady=10, sticky=N)

        self.content_frame = Frame(self.win)
        self.content_frame.grid(row=0, column=1, rowspan=3, sticky=N)

        self.tool_frame = Labelframe(self.win, text='Итог')
        self.tool_frame.grid(row=1, column=0, sticky=N + W)
        Label(self.content_frame, text='Приход:',
              font=('normal', 12)).pack(fill=BOTH)
        self.lst = MultiListbox(self.content_frame,
                                (('Время', 8), ('Отдел', 5), ('Товар', 32),
                                 ('Сумма', 5), ('Кол.во', 1), ('Итог', 5),
                                 ('Продавец', 12)),
                                font=('normal', 10),
                                height=15)
        self.lst.pack(fill=BOTH, expand=1)
        Label(self.content_frame, text='Расход:',
              font=('normal', 12)).pack(fill=BOTH)
        self.lst2 = MultiListbox(self.content_frame,
                                 (('Время', 8), ('Причина', 35), ('Сумма', 5),
                                  ('Продавец', 12)),
                                 font=('normal', 10),
                                 height=6)
        self.lst2.pack(fill=BOTH, expand=1)

        s = 'За дату: %s' % (norm_date(date_now()))
        self.d_label = Label(self.tool_frame, text=s, font=('bold', 12))
        self.d_label.grid(row=0, columnspan=2, sticky=N + W)

        s = 'Доход: 0'
        self.in_label = Label(self.tool_frame, text=s, font=('bold', 12))
        self.in_label.grid(row=1, columnspan=2, sticky=N + W)

        s = 'Расход: 0'
        self.out_label = Label(self.tool_frame, text=s, font=('bold', 12))
        self.out_label.grid(row=2, columnspan=2, sticky=N + W)

        s = 'Остаток: 0'
        self.all_label = Label(self.tool_frame, text=s, font=('bold', 12))
        self.all_label.grid(row=3, columnspan=2, sticky=N + W)

        self.scr1 = Scrollbar(self.tool_frame, orient=VERTICAL)
        self.scr1.grid(row=4, column=1, sticky=N + S, pady=5)
        self.list_1 = Listbox(self.tool_frame,
                              width=27,
                              height=5,
                              font=("normal", 9),
                              yscrollcommand=self.scr1.set)
        self.list_1.grid(row=4, column=0, pady=5)
        self.scr1['command'] = self.list_1.yview

        self.pdf_but = Button(self.win,
                              text='В pdf',
                              image=self.app.app.img['pdf'],
                              compound='left',
                              command=self.generate_pdf)
        self.pdf_but.grid(row=2, column=0, sticky=N)

        self.update_lists()
Exemple #33
0
    def update_lists(self):
        """ заполняем таблицы """
        self.lst.delete(0, END)
        self.app.app.db.execute(
            'select time,dep,article,sum,rate,name,art_id,edit from income where date=?',
            (self.c_date, ))
        income_all = 0
        for x in self.app.app.db.fetchall():
            out = list(x)
            if out[7] <> 0:
                out[1] = str(out[1]) + ' (≈)'
            if out[6] <> -1:
                out[1] = str(out[1]) + ' →'
            out.insert(5, round(x[3] * x[4], 2))
            income_all += x[3] * x[4]
            self.lst.insert(END, out)
        self.lst.see(END)
        outcome_all = 0
        self.lst2.delete(0, END)
        self.app.app.db.execute(
            'select time,article,sum,name,art_id,edit from outcome where date=?',
            (self.c_date, ))
        for x in self.app.app.db.fetchall():
            out = list(x)
            if out[5] <> 0:
                out[1] = u'(≈) ' + out[1]
            self.lst2.insert(END, out)
            outcome_all += out[2]
        self.lst2.see(END)
        self.in_label['text'] = 'Доход: %s' % (income_all)
        self.out_label['text'] = 'Расход: %s' % (outcome_all)
        self.all_label['text'] = 'Остаток: %s' % (income_all - outcome_all)
        s = 'За дату: %s' % (norm_date(self.c_date))
        self.d_label['text'] = s

        deps = {}
        deps_sum = {}
        self.app.app.db.execute('select name from dep')

        self.deps = []

        for n, name in enumerate(self.app.app.db.fetchall()):
            if name:
                deps_sum[n + 1] = 0
                self.deps.append('%s' % (name[0]))

        self.app.app.db.execute('select dep,sum,rate from income where date=?',
                                (self.c_date, ))
        out = self.app.app.db.fetchall()
        in_all = 0
        for x in out:
            in_all += float(x[1]) * float(x[2])
            deps_sum[x[0]] += float(x[1]) * float(x[2])

        self.list_1.delete(0, END)

        for x in deps_sum:
            if deps_sum[x]:
                self.list_1.insert(
                    END,
                    str(x) + ' ' + self.deps[x - 1] + u'→ ' + str(deps_sum[x]))
Exemple #34
0
    def run(self):
        self.log = Log(self.app.app)
        self.win = Toplevel(self.app.app.win)
        self.win.title(name)
        self.win.protocol("WM_DELETE_WINDOW", self.exit)
        x, y = 800, 450
        pos = self.win.wm_maxsize()[0] / 2 - x / 2, self.win.wm_maxsize(
        )[1] / 2 - y / 2
        self.win.geometry('%sx%s+%s+%s' % (x, y, pos[0], pos[1] - 25))
        self.win.maxsize(width=x, height=y)
        self.win.minsize(width=x, height=y)
        if sys.platform == 'win32': self.win.iconbitmap('app/images/icon.ico')
        year, month = time.localtime()[0:2]
        self.date_t = StringVar()
        self.date_t.set(date_now())
        self.c_date = date_now()
        self.cal = TkCalendar(self.win,
                              year,
                              month,
                              self.date_t,
                              command=self.calend_handler)
        self.cal.grid(row=0, column=0, padx=5, pady=10, sticky=N)

        self.content_frame = Frame(self.win)
        self.content_frame.grid(row=0, column=1, rowspan=3, sticky=N)

        self.tool_frame = Frame(self.win)
        self.tool_frame.grid(row=1, column=0, sticky=N + W)
        Label(self.content_frame, text='Приход:',
              font=('normal', 12)).pack(fill=BOTH)
        self.lst = MultiListbox(self.content_frame,
                                (('Время', 8), ('Отдел', 5), ('Товар', 40),
                                 ('Сумма', 5), ('Кол.во', 1), ('Итог', 5),
                                 ('Продавец', 12)),
                                font=('normal', 10),
                                height=6,
                                command=self.lst1select)
        self.lst.pack(fill=BOTH, expand=1)
        Label(self.content_frame, text='Расход:',
              font=('normal', 12)).pack(fill=BOTH)
        self.lst2 = MultiListbox(self.content_frame,
                                 (('Время', 8), ('Причина', 35), ('Сумма', 5),
                                  ('Продавец', 12)),
                                 font=('normal', 10),
                                 height=6,
                                 command=self.lst2select)
        self.lst2.pack(fill=BOTH, expand=1)

        s = 'За дату: %s' % (norm_date(date_now()))
        self.d_label = Label(self.tool_frame, text=s, font=('bold', 12))
        self.d_label.grid(row=0, columnspan=2, sticky=N + W)

        self.edit_frame_parrent = Labelframe(self.content_frame,
                                             text='Редактировать',
                                             width=50,
                                             height=100)
        self.edit_frame_parrent.pack(fill=BOTH, expand=1)

        self.delete_frame_parrent = Labelframe(self.content_frame,
                                               text='Удалить',
                                               width=50,
                                               height=50)
        self.delete_frame_parrent.pack(fill=BOTH, expand=1)

        self.edit_frame = Frame(self.edit_frame_parrent, height=63)
        self.edit_frame.pack()
        self.delete_frame = Frame(self.delete_frame_parrent, height=46)
        self.delete_frame.pack()

        self.update_lists()