Created
July 16, 2017 03:15
-
-
Save drmcarvalho/175f4206561a08f36fb057dc9faa5215 to your computer and use it in GitHub Desktop.
Programa que registra a troca do gas, e usa o reportlab para gerar relatorios em PDF
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
__author__ = 'Dener Carvalho' | |
import sqlite3 | |
import datetime | |
import os | |
from reportlab.lib.pagesizes import letter | |
from reportlab.pdfgen import canvas | |
class Conexao(object): | |
def __init__(self, db_nome): | |
try: | |
self.con = sqlite3.connect(db_nome) | |
self.cursor = self.con.cursor() | |
print("Nome do banco: ", db_nome) | |
self.cursor.execute('SELECT SQLITE_VERSION() ') | |
self.versao = self.cursor.fetchall() | |
print("Versao: %s" % self.versao) | |
except sqlite3.Error: | |
print("Erro ao carregar banco de dados.") | |
return False | |
def commit_db(self): | |
if self.con: | |
self.con.commit() | |
def fecha_db(self): | |
if self.con: | |
self.con.close() | |
print("Conexao fechada.") | |
class GasRegistroDB(object): | |
def __init__(self): | |
self.db = Conexao('gas.db') | |
def fecha_conexao(self): | |
self.db.fecha_db() | |
def cria_tabela(self): | |
try: | |
sqlTabelaGasRegistro = """ | |
create table gas_registro( | |
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, | |
local_compra TEXT NOT NULL, | |
valor_compra REAL NOT NULL, | |
data_compra DATE NOT NULL | |
) | |
""" | |
self.db.cursor.executescript(sqlTabelaGasRegistro) | |
return True | |
except sqlite3.Error: | |
return False | |
def cadastrar(self): | |
#Solicitacao dos dados. | |
self.local_compra = raw_input("Informe o local da compra: ") | |
self.valor_compra = float(raw_input("Informe o valor da compra: ")) | |
date = datetime.datetime.now().isoformat(" ") | |
self.data_compra = raw_input("Comprado em (%s): " % date) or date | |
try: | |
self.db.cursor.execute(""" INSERT INTO gas_registro(local_compra, valor_compra, data_compra) VALUES(?,?,?) """,(self.local_compra, self.valor_compra, self.data_compra)) | |
self.db.commit_db() | |
print("Compra registrada com sucesso.") | |
except sqlite3.Error: | |
print("Erro ao cadastrar") | |
return False | |
def ler_registros(self): | |
sql = " SELECT * FROM gas_registro ORDER BY data_compra " | |
registro = self.db.cursor.execute(sql) | |
return registro.fetchall() | |
def listar(self): | |
lista = self.ler_registros() | |
for campos in lista: | |
print("\nCodigo: {codigo}\nLocal da Compra: {local}\nValor: {valor}\nData: {data}".format(codigo = campos[0], local = campos[1], valor = campos[2], data = campos[3][0:10])) | |
print("\n") | |
def localizar(self, id): | |
self.id = id | |
registro = self.db.cursor.execute(" SELECT * FROM gas_registro WHERE id = ? ",(self.id,)) | |
return registro.fetchall() | |
def apagar(self, id): | |
self.id = id | |
try: | |
localizado = self.localizar(self.id) | |
if localizado: | |
self.db.cursor.execute(" DELETE FROM gas_registro WHERE id = ? ", (self.id,)) | |
self.db.commit_db() | |
print("Registro apagado.") | |
else: | |
print("Codigo %i nao existe no banco." % self.id) | |
except sqlite3.Error: | |
return False | |
class Relatorio(object): | |
def __init__(self): | |
self.db = Conexao("gas.db") | |
def gerar_preco(self, preco): | |
self.preco = preco | |
if self.preco > 0: | |
#Relatorio | |
dados = self.db.cursor.execute('SELECT * FROM gas_registro WHERE valor_compra <= ? ', (self.preco,)) | |
report = canvas.Canvas("Relatorio Preco.pdf", pagesize=letter) | |
linha = 750 | |
report.drawString(100, linha, "-- RELATORIO POR PRECO --") | |
for campos in dados: | |
linha = linha - 15 | |
report.drawString(100, linha, "| Codigo: {codigo} | Local da Compra: {local} | Valor: {valor} | Data: {data} |".format(codigo = campos[0], local = campos[1], valor = campos[2], data = campos[3][0:10])) | |
if linha <= 0: | |
linha = 750 | |
report.save() | |
else: | |
print("Preco deve ser maior que 0.") | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
__author__ = 'Dener Carvalho' | |
from controleGas import GasRegistroDB, Relatorio | |
if __name__ == '__main__': | |
gas = GasRegistroDB() | |
relatorio = Relatorio() | |
if gas.cria_tabela(): | |
print("Tabela criada com sucesso.") | |
while (1): | |
print("=== Digite 1 para cadastrar ===") | |
print("=== Digite 2 para listar ===") | |
print("=== Digite 3 para apagar ===") | |
print("=== Digite 4 para relatorios ===") | |
print("=== Digite 0 para sair ===") | |
op = input("Opcao: ") | |
if op == 1: | |
gas.cadastrar() | |
elif op == 2: | |
gas.listar() | |
elif op == 3: | |
codigo = input("Informe o codigo: ") | |
if codigo > 0: | |
gas.apagar(codigo) | |
elif op == 4: | |
preco = float(raw_input("Informe o preco: ")) | |
relatorio.gerar_preco(preco) | |
elif op == 0: | |
break | |
print("\n") | |
gas.fecha_conexao() | |
print("Saiu") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment