Hey people,
I want to creat one Excel file with data of 2 different tables:
db.define_table('EntradaProdutoEstoque',
Field('ID_Produto', 'reference Produto'),
Field('Ativo', type='boolean', default=True),
Field('Validade', type='date'),
Field('Data', type='date' ),
Field('Quantidade', type='integer'),
Field('DataDesativacao',type='date'),
Field('Lote'),
format='%(Lote)s' + ' - ' + '%(ID_Produto)s'
)
db.define_table('SaidaProdutoEstoque',
Field('ID_EntradaProdutoEstoque', 'reference
EntradaProdutoEstoque'),
Field('CustoUnitario', type='double'),
Field('Data', type='date'),
Field('Quantidade', type='integer')
)
I done this:
def relatorio():
relatorio = FORM(
INPUT(_name="dataInicial", _type="date"),
INPUT(_name="dataFinal", _type="date"),
INPUT(_type="submit", _value="Gerar")
)
relatG = ""
db.SaidaProdutoEstoque.ID_EntradaProdutoEstoque.requires = IS_IN_DB(db,
db.EntradaProdutoEstoque,
lambda r: '%s - %s' % (r.Lote, r.ID_Produto.ProdutoDescricao))
if relatorio.process().accepted:
inicio = relatorio.vars.dataInicial
fim = relatorio.vars.dataFinal
tabelaE = ((db.EntradaProdutoEstoque.Data >= inicio)&
(db.EntradaProdutoEstoque.Data <= fim))
relatE = SQLFORM.grid(tabelaE,
fields=[db.EntradaProdutoEstoque.ID_Produto,
db.EntradaProdutoEstoque.Data,
db.EntradaProdutoEstoque.Quantidade], _class="",
headers={"EntradaProdutoEstoque.ID_Produto" :
"Produto",
"EntradaProdutoEstoque.Data" : "Data
de entrada"},csv=False,
details=False,searchable=False,
paginate=7, links_in_grid=False,sortable=False)
export_classes = dict(csv=True, json=False, html=False,
tsv=False, xml=False,
csv_with_hidden_cols=False,
tsv_with_hidden_cols=False)
tabelaS = ((db.SaidaProdutoEstoque.Data >=
relatorio.vars.dataInicial)&
(db.SaidaProdutoEstoque.Data <=
relatorio.vars.dataFinal))
relatS = SQLFORM.grid(tabelaS,
fields=[db.SaidaProdutoEstoque.ID_EntradaProdutoEstoque,
db.SaidaProdutoEstoque.Data,
db.SaidaProdutoEstoque.Quantidade], _class="",
headers={"SaidaProdutoEstoque.ID_EntradaProdutoEstoque" : "Produto",
"SaidaProdutoEstoque.Data" : "Data de
saida"},csv=False,
details=False,searchable=False,
paginate=7, links_in_grid=False,
sortable=False)
relatG = FORM(relatE+relatS,
INPUT(_type="submit"))
relatSaida = db((db.SaidaProdutoEstoque.Data >= inicio) &
(db.SaidaProdutoEstoque.Data <= fim)).select(
db.SaidaProdutoEstoque.ID_EntradaProdutoEstoque,
db.SaidaProdutoEstoque.CustoUnitario,
db.SaidaProdutoEstoque.Data, db.SaidaProdutoEstoque.Quantidade,
join=db.EntradaProdutoEstoque.on(db.SaidaProdutoEstoque.ID_EntradaProdutoEstoque
== db.EntradaProdutoEstoque.id)
)
relatEntrada = db((db.EntradaProdutoEstoque.Data >= inicio) &
(db.EntradaProdutoEstoque.Data <= fim)).select(
db.EntradaProdutoEstoque.ID_Produto,
db.EntradaProdutoEstoque.Data,
db.EntradaProdutoEstoque.Quantidade,
db.EntradaProdutoEstoque.Lote,
join=db.Produto.on(db.EntradaProdutoEstoque.ID_Produto ==
db.Produto.id)
)
''
if relatG.process().accepted:
arquivo = open("teste.csv", "w")
arquivo.write("erro")
arquivo.close()
elif relatG.errors:
arquivo = open("Erro.csv", "w")
arquivo.write("testeErro")
arquivo.close()
else:
arquivo = open("Relatorio.xlsx", "w")
arquivo.write("produto; Data; Custo; Tipo; Lote; Quantidade\n")
for produtoEntrada in relatEntrada:
for produtoSaida in relatSaida:
arquivo.write(str(produtoEntrada.ID_Produto) + ";" +
str(produtoEntrada.Data) + ";" + ";" + "Entrada;" +
str(produtoEntrada.Lote) +
";" + str(produtoEntrada.Quantidade)+"\n")
arquivo.write(str(produtoSaida.ID_EntradaProdutoEstoque) +";"+
str(produtoSaida.Data) + ";" + str(produtoSaida.CustoUnitario) +";"
+"Saida;" + ";" +
str(produtoSaida.Quantidade)+"\n")
arquivo.close()
elif relatorio.errors:
response.flash = 'Erro'
else:
response.flash = "Preencha todos os campos"
return dict(relatorio=relatorio, relat=relatG)
but in the file just write "produto; Data; Custo; Tipo; Lote; Quantidade"
And, if i put selectable in a relatS work well but in the table show one
check box and i don't want this.
relatS = SQLFORM.grid(tabelaS,
fields=[db.SaidaProdutoEstoque.ID_EntradaProdutoEstoque,
db.SaidaProdutoEstoque.Data,
db.SaidaProdutoEstoque.Quantidade], _class="",
headers={"SaidaProdutoEstoque.ID_EntradaProdutoEstoque" : "Produto",
"SaidaProdutoEstoque.Data" : "Data de
saida"},csv=False,
details=False,searchable=False,
paginate=7, links_in_grid=False,
sortable=False,
selectable = lambda ids :
redirect(URL('relatorio')))
PS: The relatG is a table for the use see if all are correct before to
create the file
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.