예제 #1
0
 def descartar_senha(self, loja=None):
     try:
         from my_terminal import Terminal
         from gap_timeAtendimento import GAPTimeAtendimento
         #Para sabermos o ID da loja onde nos encontramos
         lojaID = Terminal().get_lojaID(loja=loja)
         self.kargs['join'] = ",gap_senha_terminal"
         self.where = "gap_senha_terminal.terminal = '{id}' and gap_senha_terminal.gap_senha=gap_senha.id".format(
             id=str(lojaID))
         args = self.get(order_by='int8(gap_senha.nr_senha)')
         data_hoje = datetime.date.today()
         for self.kargs in args:
             data_fim = str(self.kargs['data']).split("-")
             if (datetime.date(int(data_fim[0]), int(data_fim[1]),
                               int(data_fim[2])) <
                     data_hoje) and (self.kargs['active'] == True):
                 if (self.kargs['estado'] == 'para_atendimento') or (
                         self.kargs['estado']
                         == 'espera_atendedor') or (self.kargs['estado']
                                                    == 'espera'):
                     senha_id = self.kargs['gap_senha']
                     self.Desistiu(id=senha_id)
                     GAPTimeAtendimento().checkTimeAtendimentoLater(
                         senha_id=senha_id, loja=loja)
         return True
     except:
         return False
예제 #2
0
    def chamar_senhaEspera(self, senha_id=None, user_estado=None, loja=None):
        from my_terminal import Terminal
        from gap_timeAtendimento import GAPTimeAtendimento
        #Verificamos se o atendedor encontra-se disponivel no momento
        atendedorDisponivel = GAPTimeAtendimento().checkAtendedor(loja=loja)
        if (atendedorDisponivel):
            #Para sabermos o ID da loja onde nos encontramos
            lojaID = Terminal().get_lojaID(loja=loja)
            senha = GAPSenha().get_senhaExtraInfo(id=senha_id)
            if senha != None:
                from my_users import Users
                #Se o estado estiver em intervalo ou terminado e alterado e mudado para em serviço
                if (user_estado == 'intervalo') or (user_estado
                                                    == 'terminado'):
                    Users().EmServico()

                #Muda o seu estado para_atendimento
                GAPSenha().Para_Atendimento(id=senha_id)
                #mudar o estado da senha em espera pelo atendedor presenta na lista de estatistica
                GAPTimeAtendimento().setEstadoAtendimento(
                    senha_id=senha_id, estado="para_atendimento", loja=loja)
                #retorna a respectiva senha
                return senha
            else:
                return None
        else:
            return 'atendedor_ocupado'
예제 #3
0
    def chamar_por_senha(self, senha=None, user_estado=None, loja=None):
        from my_terminal import Terminal
        #Para sabermos o ID da loja onde nos encontramos
        lojaID = Terminal().get_lojaID(loja=loja)
        senha = GAPSenha().get_senha(senha=senha, loja=lojaID)
        if senha != None:
            from my_users import Users
            #Se o estado estiver em intervalo ou terminado e alterado e mudado para em serviço
            if (user_estado == 'intervalo') or (user_estado == 'terminado'):
                Users().EmServico()

            #questoes de alteraçoes para dados estatisticos
            from gap_timeAtendimento import GAPTimeAtendimento

            senha_id = self.get_id_senha(senha=senha)

            #Muda o estado da senha para_atendimento
            GAPSenha().Para_Atendimento(id=senha_id)

            if (self.get_estado_senha(senha=senha) == 'transferido'):
                GAPTimeAtendimento().setEstadoAtendimento(
                    senha_id=senha_id, estado="para_atendimento", loja=loja)
            else:
                #addTimeAtendimento necessario para ajudar na gestao das estatisticas e relatorios
                self.addTimeAtendimento(
                    senha=GAPSenha().get_senhaInfo(id=senha_id),
                    tempo_atendimento='00:00:00',
                    servico=self.get_servico_senha(senha=senha),
                    loja=loja,
                    senha_id=senha_id)

            #retorna a respectiva senha
            return senha
        else:
            return None
예제 #4
0
 def get_balcao(self,loja=None):
     from my_terminal import Terminal
     from my_users import Users
     lojaID = Terminal().get_lojaID(loja=loja)
     turnoID = Users().get_turnoUser()
     self.kargs['join'] = ",gap_balcao_terminal, gap_balcao_gap_turno, gap_balcao_users"
     self.where ="gap_balcao_terminal.terminal = '{lojaid}' and gap_balcao_terminal.gap_balcao= gap_balcao.id  and gap_balcao_gap_turno.gap_balcao=gap_balcao.id and gap_balcao_gap_turno.gap_turno='{turnoid}' and gap_balcao_users.users ='{userid}' and  gap_balcao_users.gap_balcao= gap_balcao.id".format(lojaid=lojaID,userid=bottle.request.session['user'],turnoid=turnoID)
     self.kargs = self.get()
     if self.kargs:
         self.kargs = self.kargs[0]
         return str(self.kargs['numero'])
     return '0'
예제 #5
0
 def get_playlist_loja(self,loja=None):
     from my_terminal import Terminal
     #Para sabermos o ID da loja onde nos encontramos
     lojaID = Terminal().get_lojaID(loja=loja)
     self.kargs['join'] = ",gap_multimedia_terminal"
     self.where ="gap_multimedia_terminal.terminal = '{id}' and gap_multimedia_terminal.gap_multimedia= gap_multimedia.id".format(id=str(lojaID))
     options = []
     opts = self.get(order_by='int8(gap_multimedia.ordem)')
     data_hoje = datetime.date.today()
     for option in opts:
             data_inicio = str(option['data_ini']).split("-")
             if  (data_hoje >= datetime.date(int(data_inicio[0]),int(data_inicio[1]), int(data_inicio[2]))) and (option['md5'] != None) and (option['active'] == True):
                         options.append(option['nome']+';'+str(option['ficheiro'])+';'+option['tipo']+";"+str(option['duracao_imagem'])+";")
     #Retorna a playlist para uma loja xpto :)
     return options
예제 #6
0
 def descartar_multimedia(self,loja=None):
     try:
         from my_terminal import Terminal
         #Para sabermos o ID da loja onde nos encontramos
         lojaID = Terminal().get_lojaID(loja=loja)
         #Descartar a musica ou imagem cujo a data final <= data hoje
         self.kargs['join'] = ",gap_multimedia_terminal"
         self.where ="gap_multimedia_terminal.terminal = '{id}' and gap_multimedia_terminal.gap_multimedia= gap_multimedia.id".format(id=str(lojaID))
         args = self.get(order_by='int8(gap_multimedia.ordem)')
         data_hoje = datetime.date.today()
         for self.kargs in args:
             data_fim = str(self.kargs['data_fim']).split("-")
             if (datetime.date(int(data_fim[0]),int(data_fim[1]), int(data_fim[2])) <= data_hoje) and (self.kargs['active'] == True):
                    #Muda o estado do ficheiro multimedia para false fazendo com que o mesmo nao apareça mais na playlist
                     self.kargs['user'] = bottle.request.session['user']
                     self.kargs['where'] = "id='{id}'".format(id=str(self.kargs['gap_multimedia']))
                     self.delete()
         return True
     except:
         return False
예제 #7
0
 def prepare_data(self):
     primeiroAtendedorId = bottle.request.forms.get(
         'nome_primeiroAtendedor')
     segundoAtendedorId = bottle.request.forms.get('nome_segundoAtendedor')
     servicoId = bottle.request.forms.get('servico')
     data_inicio = bottle.request.forms.get('data_inicial')
     data_fim = bottle.request.forms.get('data_final')
     lojaId = bottle.request.forms.get('loja')
     if not data_inicio or not data_fim:
         return 'sem_data'
     else:
         if not primeiroAtendedorId or not segundoAtendedorId:
             return 'sem_nome'
         elif not lojaId:
             return 'sem_loja'
         else:
             record = {}
             import erp_config as ec
             from gap_timeAtendimento import GAPTimeAtendimento
             clientesAtendidos1 = None
             clientesAtendidos2 = None
             primeiroAtendedorinfo = Users().get_userProfile(
                 userId=primeiroAtendedorId)
             segundoAtendedorinfo = Users().get_userProfile(
                 userId=segundoAtendedorId)
             terminalinfo = Terminal().get_terminalInfo(terminalId=lojaId)
             currentterminalinfo = Terminal().get_terminalInfoByname(
                 terminalname=ec.terminal_name)
             terminalname = str(terminalinfo).split(";")
             primeiroAtendedorinfo = str(primeiroAtendedorinfo).split(";")
             segundoAtendedorinfo = str(segundoAtendedorinfo).split(";")
             if not servicoId:
                 servicos = GAPServico().get_servico_nome()
                 servicos = ''.join(servicos)
                 record['servicos'] = servicos
                 servicos = str(servicos).split(";")
                 for servico in servicos:
                     if clientesAtendidos1 == None:
                         clientesAtendidos1 = GAPTimeAtendimento(
                         ).get_clienteAtendido(
                             nome=primeiroAtendedorinfo[0],
                             dataInicio=data_inicio,
                             dataFim=data_fim,
                             loja=terminalname[0],
                             servico=servico)
                         clientesAtendidos2 = GAPTimeAtendimento(
                         ).get_clienteAtendido(nome=segundoAtendedorinfo[0],
                                               dataInicio=data_inicio,
                                               dataFim=data_fim,
                                               loja=terminalname[0],
                                               servico=servico)
                     else:
                         clientesAtendidos1 = str(
                             clientesAtendidos1) + ";" + str(
                                 GAPTimeAtendimento().get_clienteAtendido(
                                     nome=primeiroAtendedorinfo[0],
                                     dataInicio=data_inicio,
                                     dataFim=data_fim,
                                     loja=terminalname[0],
                                     servico=servico))
                         clientesAtendidos2 = str(
                             clientesAtendidos2) + ";" + str(
                                 GAPTimeAtendimento().get_clienteAtendido(
                                     nome=segundoAtendedorinfo[0],
                                     dataInicio=data_inicio,
                                     dataFim=data_fim,
                                     loja=terminalname[0],
                                     servico=servico))
             else:
                 servico = GAPServico().get_letra_servico(
                     keyservico=servicoId)
                 record['servicos'] = servico
                 record['singleservice'] = 'True'
                 clientesAtendidos1 = GAPTimeAtendimento(
                 ).get_clienteAtendido(nome=primeiroAtendedorinfo[0],
                                       dataInicio=data_inicio,
                                       dataFim=data_fim,
                                       loja=terminalname[0],
                                       servico=servico)
                 clientesAtendidos2 = GAPTimeAtendimento(
                 ).get_clienteAtendido(nome=segundoAtendedorinfo[0],
                                       dataInicio=data_inicio,
                                       dataFim=data_fim,
                                       loja=terminalname[0],
                                       servico=servico)
             record['title'] = 'Relatorio Comparativo Atendedor'
             record['enterprise'] = ec.enterprise
             record['targets'] = 'Atendedores'
             record['compare_targets'] = 'True'
             record['targets_names'] = str(
                 primeiroAtendedorinfo[0]) + ";" + str(
                     segundoAtendedorinfo[0])
             record[
                 'targets_contents'] = "Atendidos por " + primeiroAtendedorinfo[
                     0] + ";" + "Atendidos por " + segundoAtendedorinfo[0]
             record[
                 'text_msg'] = "Gráfico comparativo do numero de clientes Atendidos por " + primeiroAtendedorinfo[
                     0] + "  -  " + segundoAtendedorinfo[0] + ":"
             if (clientesAtendidos1 != None):
                 record['targets_values'] = str(
                     clientesAtendidos1) + "-" + str(clientesAtendidos2)
             record['data'] = str(data_inicio) + ";" + str(data_fim)
             record['loja'] = currentterminalinfo
             return record
예제 #8
0
 def prepare_data(self):
     data_inicio = bottle.request.forms.get('data_inicial')
     data_fim = bottle.request.forms.get('data_final')
     servicoId = bottle.request.forms.get('servico')
     lojaId = bottle.request.forms.get('loja')
     if not data_inicio or not data_fim:
         return 'sem_data'
     else:
         if not lojaId:
             return 'sem_loja'
         else:
             record = {}
             clientRating = None
             import erp_config as ec
             from gap_opiniao import GAPOpiniao
             from gap_servico import GAPServico
             lojainfo = Terminal().get_terminalInfo(terminalId=lojaId)
             lojainfo = str(lojainfo).split(";")
             terminalinfo = Terminal().get_terminalInfoByname(
                 terminalname=ec.terminal_name)
             currentterminalinfo = Terminal().get_terminalInfoByname(
                 terminalname=ec.terminal_name)
             if not servicoId:
                 servicos = GAPServico().get_servico_nome()
                 servicos = ''.join(servicos)
                 record['servicos'] = servicos
                 servicos = str(servicos).split(";")
                 for servico in servicos:
                     if clientRating == None:
                         clientRating = GAPOpiniao().getRating(
                             servico=servico,
                             loja=lojainfo[0],
                             dataInicio=data_inicio,
                             dataFim=data_fim)
                     else:
                         clientRating = str(clientRating) + ";" + str(
                             GAPOpiniao().getRating(servico=servico,
                                                    loja=lojainfo[0],
                                                    dataInicio=data_inicio,
                                                    dataFim=data_fim))
             else:
                 servico = GAPServico().get_letra_servico(
                     keyservico=servicoId)
                 record['servicos'] = servico
                 record['singleservice'] = 'True'
                 clientRating = GAPOpiniao().getRating(
                     servico=servico,
                     loja=lojainfo[0],
                     dataInicio=data_inicio,
                     dataFim=data_fim)
             record['title'] = 'Relatorio Classificação Opinião'
             record['enterprise'] = ec.enterprise
             record['targets'] = 'Opinião'
             record['targets_names'] = str(lojainfo[0])
             record['targets_contents'] = "Classificação"
             record[
                 'text_msg'] = "Classificação dos Clientes na Loja  " + lojainfo[
                     0] + ":"
             if (clientRating != None):
                 record['targets_values'] = str(clientRating)
             record['data'] = str(data_inicio) + ";" + str(data_fim)
             record['loja'] = currentterminalinfo
             return record
예제 #9
0
 def get_terminal(self):
     return Terminal().get_options()
예제 #10
0
 def prepare_data(self):
     data_inicio = bottle.request.forms.get('data_inicial')
     data_fim = bottle.request.forms.get('data_final')
     servicoId = bottle.request.forms.get('servico')
     lojaId = bottle.request.forms.get('nome')
     if not data_inicio or not data_fim:
         return 'sem_data'
     else:
         if not lojaId:
             return 'sem_nome'
         else:
             record = {}
             clientesAtendidos = None
             clientesDesistiram = None
             import erp_config as ec
             from gap_timeAtendimento import GAPTimeAtendimento
             from gap_servico import GAPServico
             lojainfo = Terminal().get_terminalInfo(terminalId=lojaId)
             lojainfo = str(lojainfo).split(";")
             terminalinfo = Terminal().get_terminalInfoByname(
                 terminalname=ec.terminal_name)
             currentterminalinfo = Terminal().get_terminalInfoByname(
                 terminalname=ec.terminal_name)
             if not servicoId:
                 servicos = GAPServico().get_servico_nome()
                 servicos = ''.join(servicos)
                 record['servicos'] = servicos
                 servicos = str(servicos).split(";")
                 for servico in servicos:
                     if clientesAtendidos == None and clientesDesistiram == None:
                         clientesAtendidos = GAPTimeAtendimento(
                         ).get_clienteAtendidoByLoja(dataInicio=data_inicio,
                                                     dataFim=data_fim,
                                                     loja=lojainfo[0],
                                                     servico=servico)
                         clientesDesistiram = GAPTimeAtendimento(
                         ).get_clienteDesistiramByLoja(
                             dataInicio=data_inicio,
                             dataFim=data_fim,
                             loja=lojainfo[0],
                             servico=servico)
                     else:
                         clientesAtendidos = str(
                             clientesAtendidos) + ";" + str(
                                 GAPTimeAtendimento(
                                 ).get_clienteAtendidoByLoja(
                                     dataInicio=data_inicio,
                                     dataFim=data_fim,
                                     loja=lojainfo[0],
                                     servico=servico))
                         clientesDesistiram = str(
                             clientesDesistiram) + ";" + str(
                                 GAPTimeAtendimento(
                                 ).get_clienteDesistiramByLoja(
                                     dataInicio=data_inicio,
                                     dataFim=data_fim,
                                     loja=lojainfo[0],
                                     servico=servico))
             else:
                 servico = GAPServico().get_letra_servico(
                     keyservico=servicoId)
                 record['servicos'] = servico
                 record['singleservice'] = 'True'
                 clientesAtendidos = GAPTimeAtendimento(
                 ).get_clienteAtendidoByLoja(dataInicio=data_inicio,
                                             dataFim=data_fim,
                                             loja=lojainfo[0],
                                             servico=servico)
                 clientesDesistiram = GAPTimeAtendimento(
                 ).get_clienteDesistiramByLoja(dataInicio=data_inicio,
                                               dataFim=data_fim,
                                               loja=lojainfo[0],
                                               servico=servico)
             record['title'] = 'Relatorio Loja'
             record['enterprise'] = ec.enterprise
             record['targets'] = 'Loja'
             record['targets_names'] = str(lojainfo[0])
             record['targets_contents'] = "Atendidos;Desistiram"
             record[
                 'text_msg'] = "Numero de clientes Atendidos e Desistentes na Loja  " + lojainfo[
                     0] + ":"
             if (clientesAtendidos != None) and (clientesDesistiram !=
                                                 None):
                 record['targets_values'] = str(
                     clientesAtendidos) + "-" + str(clientesDesistiram)
             record['data'] = str(data_inicio) + ";" + str(data_fim)
             record['loja'] = currentterminalinfo
             return record
예제 #11
0
 def get_SenhaCliente(self, user=None, servico=None, letra=None, loja=None):
     try:
         #Aviso para que o imprimir senha funcione como deve ser e necessario instalar um plugin no browser mozila AttendPrint  ou soluçoes do genero para o google chrome aplicando-se comandos como o --kioske print
         from my_terminal import Terminal
         from gap_servico import GAPServico
         lojaId = Terminal().get_lojaID(loja=loja)
         servico_id = GAPServico().get_servico_id(nome=servico)
         output = None
         if (lojaId == 0):
             return None
         else:
             if (GAPServico().check_turnoServico(
                     servico_id=servico_id) == True):
                 print("dentro do if ca podi :( ")
                 data = datetime.date.today()
                 hora = datetime.datetime.now().time().strftime('%H:%M:%S')
                 nr_senha = self.get_numero_senha(loja=loja, user=user)
                 content = {
                     'user': '******'.format(user=user),
                     'servico': servico_id,
                     'letra': letra,
                     'nr_senha': nr_senha,
                     'data': data,
                     'hora_ped': hora,
                     'pess_fila': 0,
                     'est_atend': 0,
                     'estado': 'espera',
                 }
                 GAPSenha(**content).put()
                 #agora buscamos pelo id da senha que acabamos de insirir
                 self.where = "servico = '{servico}' and nr_senha= '{nr_senha}' and hora_ped= '{hora_ped}' and data= '{data}'".format(
                     servico=str(servico_id),
                     nr_senha=str(nr_senha),
                     hora_ped=str(hora),
                     data=str(data))
                 self.kargs = self.get(order_by='int8(gap_senha.nr_senha)')
                 if self.kargs:
                     self.kargs = self.kargs[0]
                     kargs = {}
                     kargs['terminal'] = lojaId
                     kargs['parent_name'] = 'terminal'
                     kargs['gap_senha'] = self.kargs['id']
                     kargs['user'] = user
                     #adicionamos na relaçao m2m
                     GAPSenha(**kargs).put_m2m()
                     #actualizamos a senha com os valores das pessoas em fila , estimativa de atendimento nessa loja
                     pess_fila = self.get_pessoas_fila(loja=lojaId)
                     est_atend = self.get_estimativa(loja=lojaId)
                     updatedcontent = {
                         'id': '{id}'.format(id=self.kargs['id']),
                         'user': '******'.format(user=user),
                         'pess_fila': pess_fila,
                         'est_atend': est_atend,
                     }
                     GAPSenha(**updatedcontent).put()
                     #Enfim finalmente vamos imprimir a nossa senha :)
                     from gap_senha_config import GAPSenhaConfig
                     senhaConfigServico = GAPSenhaConfig(
                     ).get_config_servico(servico=servico_id)
                     senhaConfigLoja = GAPSenhaConfig().get_config_loja(
                         loja=lojaId)
                     senhaConfigLoja = str(senhaConfigLoja).split(";")
                     senhaConfigServico = str(senhaConfigServico).split(";")
                     #Estou a utilizar esse metodo por causa de alguns problemas com o reports nesse caso especifico....alterar depois
                     output = """
                         <!DOCTYPE html>
                             <html>
                                 <head>
                                     <title>Senha</title>
                                     <meta charset="UTF-8">
                                     <meta name="viewport" content="width=device-width, initial-scale=1.0">
                                     <link rel="stylesheet" href="/static/css/foundation.css" />
                                     <link rel="stylesheet" href="/static/css/gap.css" />
                                 </head>
                                 <body>
                                         <h6 id="TextoSenha"> <img src="/static/logos/logo_minfin.png"/></h6>
                                         <h6 id="TextoSenhaCR">{message_cabesalho_loja}</h6>
                                         <h6 id="TextoSenhaCR">{message_cabesalho_servico}</h6>
                                         <h6 id="TextoSenha">Data: {data}</h6>
                                         <h6 id="TextoSenha">Hora de Entrada: {hora_ped}</h6>
                                         <h1 id="TextoSenhaSenha"><b>{servico} {nr_senha}</b></h1>
                                         <h6 id="TextoSenha">Pessoas na Fila: {pess_fila}</h6>
                                         <h6 id="TextoSenha">Tempo estimado: {est_atend}</h6>
                                         <h6 id="TextoSenha">{message_rodape_servico}</h6>
                                         <h6 id="TextoSenha">{message_rodape_loja}</h6>
                     """.format(
                         message_cabesalho_loja=senhaConfigLoja[0],
                         message_cabesalho_servico=senhaConfigServico[0],
                         data=data,
                         hora_ped=hora,
                         servico=letra,
                         nr_senha=nr_senha,
                         pess_fila=pess_fila,
                         est_atend=est_atend,
                         message_rodape_servico=senhaConfigServico[1],
                         message_rodape_loja=senhaConfigLoja[1])
                     output += """
                                     <script src="/static/js/modernizr.js"></script>
                                     <script src="/static/js/jquery.min.js"></script>
                                     <script>
                                               window.print();
                                               window.close();
                                     </script>
                                 </body>
                             </html>
                             """
         print("retornando output ------------------------------------  ")
         return str(output)
     except BaseException as e:
         return None
예제 #12
0
 def efectuar_pagamento(self, key, window_id):
     """Esta acção efectua o pagamento"""
     active = False
     record_id = key
     record = model.get(key=record_id)[0]
     record['user'] = session['user']
     record['estado'] = 'Pago'
     #Verifica se tem caixa aberta, se não tiver abre
     #Faz o pagamento em caixa
     try:
         from my_caixa import Caixa
     except:
         from caixa import Caixa
     try:
         from my_linha_caixa import LinhaCaixa
     except:
         from linha_caixa import LinhaCaixa
     try:
         from my_terminal import Terminal
     except:
         from terminal import Terminal
     terminal = Terminal(where="""name='Esplanada'""").get()
     if terminal[0] > 0:
         terminal = terminal[1][0]['id']
     caixa = Caixa(
         where=
         "estado = 'Aberta' AND terminal='{terminal}' AND data_inicial <= '{today}'"
         .format(terminal=terminal, today=record['data'])).get()
     if not caixa:
         caixa = Caixa(data_inicial=record['data'],
                       hora_inicial=time.strftime('%H:%M:%S'),
                       valor_inicial=0,
                       valor_final=0,
                       estado='Aberta',
                       user=session['user'],
                       vendedor=session['user'],
                       terminal=terminal).put()
     else:
         caixa = caixa[0]['id']
     if record['factura']:
         active = True
     record['estado'] = 'Pago'
     try:
         from my_metodo_pagamento import MetodoPagamento
     except:
         from metodo_pagamento import MetodoPagamento
     metodos_pagamento = MetodoPagamento().get_options()
     first = True
     total_entregue = to_decimal('0')
     for metodo in metodos_pagamento:
         if bottle.request.forms.get(metodo[1]):
             method = to_decimal(str(bottle.request.forms.get(metodo[1])))
         else:
             method = to_decimal('0')
         if method > to_decimal('0'):
             total_entregue += to_decimal(
                 str(bottle.request.forms.get(metodo[1])))
     if total_entregue >= to_decimal(
             str(bottle.request.forms.get('total_a_pagar'))):
         for metodo in metodos_pagamento:
             if first == True:
                 default_metodo = metodo
                 first = False
             if bottle.request.forms.get(metodo[1]):
                 method = to_decimal(
                     str(bottle.request.forms.get(metodo[1])))
             else:
                 method = to_decimal('0')
             if method > to_decimal('0'):
                 linha_caixa = LinhaCaixa(
                     caixa=caixa,
                     descricao='Nosso Talão de Bar',
                     documento='talao_bar',
                     num_doc=record['numero'],
                     valor_documento=to_decimal(
                         str(bottle.request.forms.get('total_a_pagar'))),
                     terceiro=record['cliente'],
                     metodo=metodo[0],
                     entrada=bottle.request.forms.get(metodo[1]),
                     saida=0,
                     active=active,
                     user=session['user']).put()
         troco = total_entregue - to_decimal(
             str(bottle.request.forms.get('total_a_pagar')))
         if troco > to_decimal('0'):
             linha_caixa = LinhaCaixa(
                 caixa=caixa,
                 descricao='Nosso Talão de Bar',
                 documento='talao_bar',
                 num_doc=record['numero'],
                 valor_documento=to_decimal(
                     str(bottle.request.forms.get('total_a_pagar'))),
                 terceiro=record['cliente'],
                 metodo=default_metodo[0],
                 entrada=0,
                 saida=troco,
                 active=active,
                 user=session['user']).put()
         else:
             troco = to_decimal('0')
         record['residual'] = to_decimal(
             str(bottle.request.forms.get(
                 'total_a_pagar'))) - total_entregue + troco
         #Faz o lançamento contabilistico se tiver factura como movimento activo, se não como movimento geral
         #Vê o metodo de pagamento e lança na conta adequada
         try:
             from my_diario import Diario
         except:
             from diario import Diario
         diario = Diario(where="tipo='caixa'").get()[0]['id']
         periodo = None
         try:
             from my_periodo import Periodo
         except:
             from periodo import Periodo
         periodos = Periodo().get()
         for p in periodos:
             lista_datas = generate_dates(start_date=p['data_inicial'],
                                          end_date=p['data_final'])
             if str(format_date(record['data'])) in lista_datas:
                 periodo = p['id']
         if not periodo:
             return error_message(
                 'não existe periodo definido para a data em questão! \n')
         try:
             from my_movimento import Movimento
         except:
             from movimento import Movimento
         try:
             from my_linha_movimento import LinhaMovimento
         except:
             from linha_movimento import LinhaMovimento
         movimento = Movimento(
             data=record['data'],
             numero=base_models.Sequence().get_sequence('movimento'),
             num_doc=record['numero'],
             descricao='Pagamento de Talão de Bar',
             diario=diario,
             documento='talao_bar',
             periodo=periodo,
             estado='Rascunho',
             user=session['user'],
             active=active).put()
         TalaoBar(**record).put()
         try:
             from my_terceiro import Terceiro
         except:
             from terceiro import Terceiro
         conta_cliente = Terceiro().get(
             key=record['cliente'])[0]['a_receber']
         for metodo in metodos_pagamento:
             if bottle.request.forms.get(metodo[1]):
                 method = to_decimal(
                     str(bottle.request.forms.get(metodo[1])))
             else:
                 method = to_decimal('0')
             if method > to_decimal('0'):
                 conta_pagamento = MetodoPagamento().get(
                     key=metodo[0])[0]['conta']
                 LinhaMovimento(movimento=movimento,
                                descricao='Pagamento de Talão de Bar',
                                conta=conta_pagamento,
                                quant_debito=to_decimal('0'),
                                debito=to_decimal(
                                    str(bottle.request.forms.get(
                                        metodo[1]))),
                                quant_credito=to_decimal('0'),
                                credito=to_decimal('0'),
                                user=session['user']).put()
                 LinhaMovimento(movimento=movimento,
                                descricao='Pagamento de Talão de Bar',
                                conta=conta_cliente,
                                quant_debito=to_decimal('0'),
                                debito=to_decimal('0'),
                                quant_credito=to_decimal('0'),
                                credito=to_decimal(
                                    str(bottle.request.forms.get(
                                        metodo[1]))),
                                user=session['user']).put()
         return form_edit(key='None', window_id=window_id)
     else:
         return 'Segundo as Regras da Empresa não é possivel receber valores inferiores ao valor a Pagar, Torne a efectuar o pagamento por Favor!'  #depois ver a possibilidade de ficar no mesmo sitio
예제 #13
0
 def prepare_data(self):
     data_inicio = bottle.request.forms.get('data_inicial')
     data_fim = bottle.request.forms.get('data_final')
     servicoId = bottle.request.forms.get('servico')
     userId = bottle.request.forms.get('nome')
     lojaId = bottle.request.forms.get('loja')
     if not data_inicio or not data_fim:
         return 'sem_data'
     elif not lojaId:
         return 'sem_loja'
     else:
         record = {}
         import erp_config as ec
         from gap_timeAtendimento import GAPTimeAtendimento
         terminalinfo = Terminal().get_terminalInfo(terminalId=lojaId)
         terminalname = str(terminalinfo).split(";")
         nomeAtendedor = None
         clientesAtendidos = None
         tempo_medio = None
         tempo_maximo = None
         tempo_minimo = None
         if  userId:
             userinfo = Users().get_userProfile(userId=userId)
             record['singleatendedor'] = 'True'
             if userinfo != None:
                 record['atendedor'] = userinfo
                 userinfo = str(userinfo).split(";")
                 nomeAtendedor = userinfo[0]
             if not servicoId:
                 servicos = GAPServico().get_servico_nome()
                 servicos = ''.join(servicos)
                 record['servicos'] = servicos
                 servicos= str(servicos).split(";")
                 for servico in servicos:
                     if clientesAtendidos == None:
                             clientesAtendidos=GAPTimeAtendimento().get_clienteAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                             tempo_medio=GAPTimeAtendimento().get_mediaTempoAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                             tempo_maximo=GAPTimeAtendimento().get_tempoMaximoAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                             tempo_minimo=GAPTimeAtendimento().get_tempoMinimoAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                     else:
                             clientesAtendidos=str(clientesAtendidos)+";"+str(GAPTimeAtendimento().get_clienteAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                             tempo_medio=str(tempo_medio)+";"+str(GAPTimeAtendimento().get_mediaTempoAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                             tempo_maximo=str(tempo_maximo)+";"+str(GAPTimeAtendimento().get_tempoMaximoAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                             tempo_minimo=str(tempo_minimo)+";"+str(GAPTimeAtendimento().get_tempoMinimoAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
             else:
                 servico = GAPServico().get_letra_servico(keyservico=servicoId)
                 record['servicos'] = servico
                 record['singleservice'] = 'True'
                 clientesAtendidos=GAPTimeAtendimento().get_clienteAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                 tempo_medio=GAPTimeAtendimento().get_mediaTempoAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                 tempo_maximo=GAPTimeAtendimento().get_tempoMaximoAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                 tempo_minimo=GAPTimeAtendimento().get_tempoMinimoAtendido(nome=nomeAtendedor, dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
             record['clientes_atendidos'] = clientesAtendidos
             record['text_msg'] = "Numero de clientes Atendidos por "+nomeAtendedor+":"
             record['tempo_medio_atendimento'] = tempo_medio
             record['tempo_maximo_atendimento'] = tempo_maximo
             record['tempo_minimo_atendimento'] = tempo_minimo
             record['enterprise'] = ec.enterprise
             record['data'] = str(data_inicio)+";"+str(data_fim)
             record['loja'] = terminalinfo
         else:
             users = Users().get_atendedoresLoja(lojaid=lojaId)
             user_content = ''.join(users)
             record['atendedor'] = user_content
             user_content = str(user_content).split(";")
             if not servicoId:
                 servicos = GAPServico().get_servico_nome()
                 servicos = ''.join(servicos)
                 record['servicos'] = servicos
                 servicos= str(servicos).split(";")
                 for servico in servicos:
                     count = 0
                     for i in range(0,len(user_content)):
                         if clientesAtendidos == None:
                             clientesAtendidos=GAPTimeAtendimento().get_clienteAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                             tempo_medio=GAPTimeAtendimento().get_mediaTempoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                             tempo_maximo=GAPTimeAtendimento().get_tempoMaximoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                             tempo_minimo=GAPTimeAtendimento().get_tempoMinimoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                         else:
                             clientesAtendidos=str(clientesAtendidos)+";"+str(GAPTimeAtendimento().get_clienteAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                             tempo_medio=str(tempo_medio)+";"+str(GAPTimeAtendimento().get_mediaTempoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                             tempo_maximo=str(tempo_maximo)+";"+str(GAPTimeAtendimento().get_tempoMaximoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                             tempo_minimo=str(tempo_minimo)+";"+str(GAPTimeAtendimento().get_tempoMinimoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                         count+=1
             else:
                 servico = GAPServico().get_letra_servico(keyservico=servicoId)
                 record['servicos'] = servico
                 record['singleservice'] = 'True'
                 count = 0
                 for i in range(0,len(user_content)):
                     if clientesAtendidos == None:
                             clientesAtendidos=GAPTimeAtendimento().get_clienteAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                             tempo_medio=GAPTimeAtendimento().get_mediaTempoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                             tempo_maximo=GAPTimeAtendimento().get_tempoMaximoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                             tempo_minimo=GAPTimeAtendimento().get_tempoMinimoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico)
                     else:
                             clientesAtendidos=str(clientesAtendidos)+";"+str(GAPTimeAtendimento().get_clienteAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                             tempo_medio=str(tempo_medio)+";"+str(GAPTimeAtendimento().get_mediaTempoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                             tempo_maximo=str(tempo_maximo)+";"+str(GAPTimeAtendimento().get_tempoMaximoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                             tempo_minimo=str(tempo_minimo)+";"+str(GAPTimeAtendimento().get_tempoMinimoAtendido(nome=user_content[count], dataInicio=data_inicio, dataFim=data_fim, loja=terminalname[0], servico=servico))
                     count+=1
             record['clientes_atendidos'] = clientesAtendidos
             record['tempo_medio_atendimento'] = tempo_medio
             record['tempo_maximo_atendimento'] = tempo_maximo
             record['tempo_minimo_atendimento'] = tempo_minimo
             record['enterprise'] = ec.enterprise
             record['data'] = str(data_inicio)+";"+str(data_fim)
             record['loja'] = terminalinfo
     return record