Пример #1
0
 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)
Пример #2
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()
Пример #3
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()
Пример #4
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()	
Пример #5
0
	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()
Пример #6
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()
Пример #7
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()	
Пример #8
0
    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()
Пример #9
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()
Пример #10
0
	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()
		
Пример #11
0
	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()

		
Пример #12
0
	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)
Пример #13
0
    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()
Пример #14
0
    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()
Пример #15
0
	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
Пример #16
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()
Пример #17
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()