123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- # vim:fileencoding=utf-8
- # Plugin velivery_relatorios para matebot: Faz relatórios, exibe informações e subsidia estatísticas com os dados do Velivery
- # Copyleft (C) 2018 Desobediente Civil, Velivery
- # This program is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
- ### Imports
- import datetime, inspect
- from plugins.velivery_pedidos import busca_pedidos, db_timezone, db_datetime
- from plugins.velivery_relatorios.dre import dre_csv
- from plugins.velivery_relatorios.uni import ltv,recompra_2, usuarios_unicos_1 as usuarios_unicos, vendas_soma, vendas_csv
- from plugins.velivery_relatorios.conteudo import lista_mailing_csv_2 as lista_mailing_csv, usuarios_por_pedidos
- from plugins.velivery_relatorios.vegcoin import pedidos_veganweek, pedidos_veganweek_csv, usuarios_inativos_csv, usuarios_vegcoinweek_cac_csv
- def taxa_recompra(args):
- return busca_pedidos.busca_recompra(args)
- def relatorio_recompra(args):
- args.update(periodo = "total")
- args.update(db_query = ' '.join([]))
- try:
- if args['command_list'][0] in ['2015', '2016', '2017', '2018']:
- ano = str(args['command_list'][0])
- args.update(db_query = ' '.join([
- "AND", '>='.join(['created_at', ''.join(["'", str(ano), "-01-01 00:00:00", "'"])]),
- "AND", '<='.join(['created_at', ''.join(["'", str(ano), "-12-31 23:59:59", "'"])]),
- ]))
- try:
- if str(args['command_list'][1]) in ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']:
- mes = str(args['command_list'][1])
- args.update(db_query = ' '.join([
- "AND", '>='.join(['created_at', ''.join(["'", str(ano), "-", str(mes), "-01 00:00:00", "'"])]),
- "AND", '<='.join(['created_at', ''.join(["'", str(ano), "-", str(mes), "-31 23:59:59", "'"])]),
- ]))
- args.update(periodo = ' '.join([str(mes), " de ", str(ano)]))
- return busca_pedidos.busca_recompra_10(args)
- except IndexError:
- pass
- args.update(periodo = str(ano))
- return busca_pedidos.busca_recompra_10(args)
- else:
- return {
- 'status': False,
- 'type': 'erro',
- 'multi': False,
- 'response': u"Vossa excelência estás a tirardes com a minha cara. Por acaso '%s' é um ano?" % (str(ano)),
- 'debug': u"O contrário do sucesso!",
- 'parse_mode': None,
- }
- except IndexError:
- args.update(periodo = "total")
- args.update(db_query = ' '.join([]))
- return busca_pedidos.busca_recompra_10(args)
- return {
- 'status': False,
- 'type': 'erro',
- 'multi': False,
- 'response': u"Vossa excelência estás a tirardes com a minha cara. Por favor, providencie um ano como argumento.",
- 'debug': u"O contrário do sucesso!",
- 'parse_mode': None,
- }
- return busca_pedidos.busca_recompra_10(args)
- def relatorio_vendas(args):
- args.update(periodo = "total")
- args.update(db_query = ' '.join([]))
- try:
- if args['command_list'][0].isdigit() and int(args['command_list'][0]) >= 2015:
- ano = str(args['command_list'][0])
- args.update(db_query = ' '.join([
- "AND", '>='.join(['created_at', ''.join(["'", str(ano), "-01-01 00:00:00", "'"])]),
- "AND", '<='.join(['created_at', ''.join(["'", str(ano), "-12-31 23:59:59", "'"])]),
- ]))
- try:
- if str(args['command_list'][1]) in ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']:
- mes = str(args['command_list'][1])
- args.update(db_query = ' '.join([
- "AND", '>='.join(['created_at', ''.join(["'", str(ano), "-", str(mes), "-01 00:00:00", "'"])]),
- "AND", '<='.join(['created_at', ''.join(["'", str(ano), "-", str(mes), "-31 23:59:59", "'"])]),
- ]))
- args.update(periodo = ' '.join([str(mes), " de ", str(ano)]))
- return busca_pedidos.busca_vendas_1(args)
- except IndexError:
- pass
- args.update(periodo = str(ano))
- return busca_pedidos.busca_vendas_1(args)
- else:
- return {
- 'status': False,
- 'type': 'erro',
- 'multi': False,
- 'response': u"Vossa excelência estás a tirardes com a minha cara. Por acaso '%s' é um ano?" % (str(args['command_list'][0])),
- 'debug': u"O contrário do sucesso!",
- 'parse_mode': None,
- }
- except IndexError:
- args.update(periodo = "total")
- args.update(db_query = ' '.join([]))
- return busca_pedidos.busca_vendas_1(args)
- return {
- 'status': False,
- 'type': 'erro',
- 'multi': False,
- 'response': u"Vossa excelência estás a tirardes com a minha cara. Por favor, providencie um ano como argumento.",
- 'debug': u"O contrário do sucesso!",
- 'parse_mode': None,
- }
- def relatorio_usuarios(args):
- try:
- if args['command_list'][0] in ['2015', '2016', '2017', '2018']:
- ano = str(args['command_list'][0])
- args.update(db_query = ' '.join([
- "AND", '>='.join(['created_at', ''.join(["'", str(ano), "-01-01 00:00:00", "'"])]),
- "AND", '<='.join(['created_at', ''.join(["'", str(ano), "-12-31 23:59:59", "'"])]),
- ]))
- if str(args['command_list'][1]) in ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']:
- mes = str(args['command_list'][1])
- args.update(db_query = ' '.join([
- "AND", '>='.join(['created_at', ''.join(["'", str(ano), "-", str(mes), "-01 00:00:00", "'"])]),
- "AND", '<='.join(['created_at', ''.join(["'", str(ano), "-", str(mes), "-31 23:59:59", "'"])]),
- ]))
- args.update(periodo = ' '.join([str(mes), " de ", str(ano)]))
- return busca_pedidos.busca_usuarios(args)
- else:
- args.update(periodo = str(ano))
- return busca_pedidos.busca_usuarios(args)
- else:
- return {
- 'status': False,
- 'type': 'erro',
- 'multi': False,
- 'response': u"Vossa excelência estás a tirardes com a minha cara. Por acaso '%s' é um ano?" % (str(ano)),
- 'debug': u"O contrário do sucesso!",
- 'parse_mode': None,
- }
- except IndexError:
- args.update(periodo = "total")
- args.update(db_query = ' '.join([]))
- return busca_pedidos.busca_usuarios(args)
- return {
- 'status': False,
- 'type': 'erro',
- 'multi': False,
- 'response': u"Vossa excelência estás a tirardes com a minha cara. Por favor, providencie um ano como argumento.",
- 'debug': u"O contrário do sucesso!",
- 'parse_mode': None,
- }
- def dados_estabelecimentos(args):
- args.update(db_query = ' '.join([]))
- return busca_pedidos.busca_dados_estabelecimentos(args)
- def relatorio_uf(args):
- args.update(periodo = "total")
- args.update(db_query = ' '.join([]))
- try:
- if args['command_list'][0] in ['2015', '2016', '2017', '2018']:
- ano = str(args['command_list'][0])
- args.update(db_query = ' '.join([
- "AND", '>='.join(['created_at', ''.join(["'", str(ano), "-01-01 00:00:00", "'"])]),
- "AND", '<='.join(['created_at', ''.join(["'", str(ano), "-12-31 23:59:59", "'"])]),
- ]))
- try:
- if str(args['command_list'][1]) in ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']:
- mes = str(args['command_list'][1])
- args.update(db_query = ' '.join([
- "AND", '>='.join(['created_at', ''.join(["'", str(ano), "-", str(mes), "-01 00:00:00", "'"])]),
- "AND", '<='.join(['created_at', ''.join(["'", str(ano), "-", str(mes), "-31 23:59:59", "'"])]),
- ]))
- args.update(periodo = ' '.join([str(mes), " de ", str(ano)]))
- return busca_pedidos.busca_uf(args)
- except IndexError:
- pass
- args.update(periodo = str(ano))
- return busca_pedidos.busca_uf(args)
- else:
- return {
- 'status': False,
- 'type': 'erro',
- 'multi': False,
- 'response': u"Vossa excelência estás a tirardes com a minha cara. Por acaso '%s' é um ano?" % (str(ano)),
- 'debug': u"O contrário do sucesso!",
- 'parse_mode': None,
- }
- except IndexError:
- args.update(periodo = "total")
- args.update(db_query = ' '.join([]))
- return busca_pedidos.busca_uf(args)
- return {
- 'status': False,
- 'type': 'erro',
- 'multi': False,
- 'response': u"Vossa excelência estás a tirardes com a minha cara. Por favor, providencie um ano como argumento.",
- 'debug': u"O contrário do sucesso!",
- 'parse_mode': None,
- }
- def relatorio_dre(args):
- return dre_csv(args)
- def relatorio_ltv(args):
- return ltv(args)
- def relatorio_recompra2(args):
- return recompra_2(args)
- def relatorio_usuarios_unicos(args):
- return usuarios_unicos(args)
- def resumo_vendas_2(args):
- args.update(relatorio = inspect.currentframe().f_code.co_name)
- return vendas_soma(args)
- def relatorio_vendas_2(args):
- args.update(relatorio = inspect.currentframe().f_code.co_name)
- return vendas_csv(args)
- def mailing(args):
- args.update(relatorio = inspect.currentframe().f_code.co_name)
- return lista_mailing_csv(args)
- def relatorio_usuarios_pedidos(args):
- args.update(relatorio = inspect.currentframe().f_code.co_name)
- return usuarios_por_pedidos(args)
- def veganweek(args):
- try:
- return pedidos_veganweek_csv(args)
- except Exception as e:
- args['bot'].sendMessage(args['chat_id'], u"Erro catastrófico: %s" % (e))
- raise
- return {
- 'status': False,
- 'type': 'erro',
- 'multi': False,
- 'response': u"Tivemos um problema técnico e não conseguimos encontrar o que pedirdes.",
- 'debug': log_str.debug(u"Exceção: %s" % (e)),
- 'parse_mode': None,
- }
- def inativos(args):
- try:
- return usuarios_inativos_csv(args)
- except Exception as e:
- args['bot'].sendMessage(args['chat_id'], u"Erro catastrófico: %s" % (e))
- raise
- return {
- 'status': False,
- 'type': 'erro',
- 'multi': False,
- 'response': u"Tivemos um problema técnico e não conseguimos encontrar o que pedirdes.",
- 'debug': log_str.debug(u"Exceção: %s" % (e)),
- 'parse_mode': None,
- }
- def vegcoinweek_cac(args):
- return usuarios_vegcoinweek_cac_csv(args)
|