def add_handler(self): """ добавление расхода """ text = self.pr_ent.get() try: s = float(self.sum_ent.get().replace(',', '.')) except: box.showerror(title='Ошибка', message='Не верная сумма!') self.win.deiconify() return if s <= 0: box.showerror(title='Ошибка', message='Не верная сумма!') self.win.deiconify() return if len(text) < 3: box.showerror(title='Ошибка', message='Вы должны ввести причину!') self.win.deiconify() return dt, tm = date_now(), time_now() self.app.app.db.execute( 'insert into outcome values (?,?,?,?,?,?,0)', (dt, tm, text, -1, s, self.app.app.user.decode('utf-8'))) self.app.app.con.commit() self.win.destroy() self.app.update_tools() self.init_add_plugins(dt, tm)
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 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 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 sync(self): self.db.execute('select value from misc where name="update_date"') update_date=self.db.fetchall()[0][0] self.db.execute('select value from misc where name="update_time"') update_time=self.db.fetchall()[0][0] r={} r['auth']={'login':self.sync_login,'passw':self.sync_passw} r['db']=self.sync_point out=[] n_dt=date2int(update_date,update_time) self.db.execute('select date,time,dep,article,sum,rate,name from income where myDate(date,time)>=?',(n_dt,)) for x in self.db.fetchall(): out.append(['income']+list(x)) self.db.execute('select date,time,article,sum,name from outcome where myDate(date,time)>=?',(n_dt,)) for x in self.db.fetchall(): out.append(['outcome']+list(x)) self.db.execute('select original_date,original_time,title from edit_log where myDate(date,time)>=?',(n_dt,)) for x in self.db.fetchall(): if x[2]==u'Отредактирована продажа': self.db.execute('select date,time,dep,article,sum,rate,name from income where date=? and time=?',(x[0],x[1])) try:out.append(['income']+list(self.db.fetchall()[0])) except IndexError:pass elif x[2]==u'Отредактирован расход': self.db.execute('select date,time,article,sum,name from outcome where date=? and time=?',(x[0],x[1])) try:out.append(['outcome']+list(self.db.fetchall()[0])) except IndexError:pass if x[2]==u'Удалена продажа': out.append(['del_income',x[0],x[1]]) if x[2]==u'Удален расход': out.append(['del_outcome',x[0],x[1]]) if len(out)==0: return r['data']=out d={} d['data']=json.dumps(r) self.db.execute('select value from misc where name="sync_server"') sync_server=self.db.fetchall()[0][0] response=urllib.urlopen(sync_server+'/sync',urllib.urlencode(d)).read() if response=='1': self.db.execute('update misc set value=? where name="update_date"',(date_now(),)) self.db.execute('update misc set value=? where name="update_time"',(time_now(),)) self.con.commit()
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 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()
def save_all(self): """ Сохранияем списание """ date = date_now() tm = time_now() user = self.app.app.user.decode('utf-8') try: razves = eval(self.app.app.sets.razves)[self.cur_dep] except AttributeError: razves = 0 txt = self.dep_name.get('0.0', END).replace('\r', '').replace( '\n', ' ').replace('\t', ' ') if len(txt) < 2: box.showerror(title='Ошибка', message='Не выбран товар!') self.win.deiconify() return try: if razves: rate = float(self.rate_v.get().replace(',', '.')) else: rate = int(self.rate_v.get().replace(',', '.')) except: box.showerror(title='Ошибка', message='Не верное количество!') self.win.deiconify() return if rate <= 0: box.showerror(title='Ошибка', message='Не верное количество!') self.win.deiconify() return event = self.pr_ent.get() if len(event) < 2: box.showerror(title='Ошибка', message='Не введена причина!') self.win.deiconify() return self.app.app.db.execute('insert into out_art values (?,?,?,?,?,?)', (date, tm, txt, event, rate, user)) self.app.app.db.execute('select rate from article where id=?', (self.cat_id, )) rate = self.app.app.db.fetchall()[0][0] - rate if rate < 0: box.showerror(title='Ошибка', message='Товара итак нет!') self.win.deiconify() return self.app.app.db.execute('update article set rate=? where id=?', (rate, self.cat_id)) self.app.app.con.commit() self.win.destroy()
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()
def save_all(self): """ Сохрание прихода и записть в таблицу приходов """ date=date_now() tm=time_now() user=self.app.app.user.decode('utf-8') self.app.app.db.execute('select max(id) from in_art') try:id=self.app.app.db.fetchall()[0][0]+1 except:id=1 for x in self.cur_list: self.app.app.db.execute('insert into in_art values (?,?,?,?,?,?,?)',(id,date,tm,x[0],x[1],x[2],user)) self.app.app.db.execute('select rate from article where id=?',(x[3],)) rate=self.app.app.db.fetchall()[0][0]+x[2] self.app.app.db.execute('update article set rate=? where id=?',(rate,x[3])) self.app.app.con.commit() self.win.destroy()
def save_all(self): """ Сохранияем списание """ date=date_now() tm=time_now() user=self.app.app.user.decode('utf-8') try:razves=eval(self.app.app.sets.razves)[self.cur_dep] except AttributeError:razves=0 txt=self.dep_name.get('0.0',END).replace('\r','').replace('\n',' ').replace('\t',' ') if len(txt)<2: box.showerror(title='Ошибка',message='Не выбран товар!') self.win.deiconify() return try: if razves:rate=float(self.rate_v.get().replace(',','.')) else:rate=int(self.rate_v.get().replace(',','.')) except: box.showerror(title='Ошибка',message='Не верное количество!') self.win.deiconify() return if rate<=0: box.showerror(title='Ошибка',message='Не верное количество!') self.win.deiconify() return event=self.pr_ent.get() if len(event)<2: box.showerror(title='Ошибка',message='Не введена причина!') self.win.deiconify() return self.app.app.db.execute('insert into out_art values (?,?,?,?,?,?)',(date,tm,txt,event,rate,user)) self.app.app.db.execute('select rate from article where id=?',(self.cat_id,)) rate=self.app.app.db.fetchall()[0][0]-rate if rate<0: box.showerror(title='Ошибка',message='Товара итак нет!') self.win.deiconify() return self.app.app.db.execute('update article set rate=? where id=?',(rate,self.cat_id)) self.app.app.con.commit() self.win.destroy()
def add_handler(self): """ добавление расхода """ text=self.pr_ent.get() try:s=float(self.sum_ent.get().replace(',','.')) except: box.showerror(title='Ошибка',message='Не верная сумма!') self.win.deiconify() return if s<=0: box.showerror(title='Ошибка',message='Не верная сумма!') self.win.deiconify() return if len(text)<3: box.showerror(title='Ошибка',message='Вы должны ввести причину!') self.win.deiconify() return dt,tm=date_now(),time_now() self.app.app.db.execute('insert into outcome values (?,?,?,?,?,?,0)',(dt,tm,text,-1,s,self.app.app.user.decode('utf-8'))) self.app.app.con.commit() self.win.destroy() self.app.update_tools() self.init_add_plugins(dt,tm)
def save_all(self): """ Сохрание прихода и записть в таблицу приходов """ date = date_now() tm = time_now() user = self.app.app.user.decode('utf-8') self.app.app.db.execute('select max(id) from in_art') try: id = self.app.app.db.fetchall()[0][0] + 1 except: id = 1 for x in self.cur_list: self.app.app.db.execute( 'insert into in_art values (?,?,?,?,?,?,?)', (id, date, tm, x[0], x[1], x[2], user)) self.app.app.db.execute('select rate from article where id=?', (x[3], )) rate = self.app.app.db.fetchall()[0][0] + x[2] self.app.app.db.execute('update article set rate=? where id=?', (rate, x[3])) self.app.app.con.commit() self.win.destroy()
def sync(self): self.db.execute('select value from misc where name="update_date"') update_date = self.db.fetchall()[0][0] self.db.execute('select value from misc where name="update_time"') update_time = self.db.fetchall()[0][0] r = {} r['auth'] = {'login': self.sync_login, 'passw': self.sync_passw} r['db'] = self.sync_point out = [] n_dt = date2int(update_date, update_time) self.db.execute( 'select date,time,dep,article,sum,rate,name from income where myDate(date,time)>=?', (n_dt, )) for x in self.db.fetchall(): out.append(['income'] + list(x)) self.db.execute( 'select date,time,article,sum,name from outcome where myDate(date,time)>=?', (n_dt, )) for x in self.db.fetchall(): out.append(['outcome'] + list(x)) self.db.execute( 'select original_date,original_time,title from edit_log where myDate(date,time)>=?', (n_dt, )) for x in self.db.fetchall(): if x[2] == u'Отредактирована продажа': self.db.execute( 'select date,time,dep,article,sum,rate,name from income where date=? and time=?', (x[0], x[1])) try: out.append(['income'] + list(self.db.fetchall()[0])) except IndexError: pass elif x[2] == u'Отредактирован расход': self.db.execute( 'select date,time,article,sum,name from outcome where date=? and time=?', (x[0], x[1])) try: out.append(['outcome'] + list(self.db.fetchall()[0])) except IndexError: pass if x[2] == u'Удалена продажа': out.append(['del_income', x[0], x[1]]) if x[2] == u'Удален расход': out.append(['del_outcome', x[0], x[1]]) if len(out) == 0: return r['data'] = out d = {} d['data'] = json.dumps(r) self.db.execute('select value from misc where name="sync_server"') sync_server = self.db.fetchall()[0][0] response = urllib.urlopen(sync_server + '/sync', urllib.urlencode(d)).read() if response == '1': self.db.execute('update misc set value=? where name="update_date"', (date_now(), )) self.db.execute('update misc set value=? where name="update_time"', (time_now(), )) self.con.commit()
def sync(self): self.con=self.app.con self.db=self.con.cursor() # если не нужно, то выходим self.db.execute('select value from misc where name="sync_enable"') if self.db.fetchall()[0][0]=='0': sys.exit(0) self.db.execute('select value from misc where name="sync_period"') sync_time=int(self.db.fetchall()[0][0]) self.db.execute('select value from misc where name="sync_point"') self.sync_point=self.db.fetchall()[0][0].encode('utf-8') self.sync_point=hash(self.sync_point) self.db.execute('select value from misc where name="sync_login"') self.sync_login=self.db.fetchall()[0][0] self.db.execute('select value from misc where name="sync_passw"') self.sync_passw=self.db.fetchall()[0][0] self.db.execute('select value from misc where name="sync_server"') self.sync_server=self.db.fetchall()[0][0] self.db.execute('select value from misc where name="update_date"') update_date=self.db.fetchall()[0][0] self.db.execute('select value from misc where name="update_time"') update_time=self.db.fetchall()[0][0] r={} r['auth']={'login':self.sync_login,'passw':self.sync_passw} r['db']=self.sync_point out=[] n_dt=date2int(update_date,update_time) self.db.execute('select date,time,dep,article,sum,rate,name from income where myDate(date,time)>=?',(n_dt,)) for x in self.db.fetchall(): out.append(['income']+list(x)) self.db.execute('select date,time,article,sum,name from outcome where myDate(date,time)>=?',(n_dt,)) for x in self.db.fetchall(): out.append(['outcome']+list(x)) self.db.execute('select original_date,original_time,title from edit_log where myDate(date,time)>=?',(n_dt,)) for x in self.db.fetchall(): if x[2]==u'Отредактирована продажа': self.db.execute('select date,time,dep,article,sum,rate,name from income where date=? and time=?',(x[0],x[1])) try:out.append(['income']+list(self.db.fetchall()[0])) except IndexError:pass elif x[2]==u'Отредактирован расход': self.db.execute('select date,time,article,sum,name from outcome where date=? and time=?',(x[0],x[1])) try:out.append(['outcome']+list(self.db.fetchall()[0])) except IndexError:pass if x[2]==u'Удалена продажа': out.append(['del_income',x[0],x[1]]) if x[2]==u'Удален расход': out.append(['del_outcome',x[0],x[1]]) if len(out)==0: sys.exit(0) self.lab['text']='Выполняется отправка данных на сервер...' self.lab['background']='green' self.lab['foreground']='black' self.win.update() r['data']=out d={} d['data']=json.dumps(r) self.db.execute('select value from misc where name="sync_server"') sync_server=self.db.fetchall()[0][0] response=urllib.urlopen(sync_server+'/sync',urllib.urlencode(d)).read() if response=='1': self.db.execute('update misc set value=? where name="update_date"',(date_now(),)) self.db.execute('update misc set value=? where name="update_time"',(time_now(),)) self.con.commit() sys.exit(0) else: raise
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 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()