diff --git a/packages/fatt/lib/upgrades/001_insertmario.py b/packages/fatt/lib/upgrades/001_insertmario.py new file mode 100644 index 0000000..639ecdb --- /dev/null +++ b/packages/fatt/lib/upgrades/001_insertmario.py @@ -0,0 +1,20 @@ +from gnr.app.gnrapp import GnrApp +from gnr.core.gnrbag import Bag + + + +def main(db): + tbl_fattura = db.table('fatt.fattura') + tbl_cliente = db.table('fatt.cliente') + + name = 'Mario Rossi Srl' + #if tbl_cliente.query(where='$ragione_sociale=:nn', nn=name).count()==0: + + # inserisco il cliente + cliente_record = tbl_cliente.newrecord(ragione_sociale=name) + tbl_cliente.insert(cliente_record) + + # inserisco 10 fatture + # il campo colonna_testo è None + for _ in range(10): + tbl_fattura.insert(tbl_fattura.newrecord(cliente_id=cliente_record['id'])) diff --git a/packages/fatt/lib/upgrades/002_read_aggregate.py b/packages/fatt/lib/upgrades/002_read_aggregate.py new file mode 100644 index 0000000..2cbb899 --- /dev/null +++ b/packages/fatt/lib/upgrades/002_read_aggregate.py @@ -0,0 +1,41 @@ +from gnr.app.gnrapp import GnrApp +from gnr.core.gnrbag import Bag + + + +def main(db): + tbl_fattura = db.table('fatt.fattura') + tbl_cliente = db.table('fatt.cliente') + print('\n') + print ("\nFETCH NORMALE: colonna_testo è None") + for row in map(dict,tbl_cliente.query(columns="@fatture.colonna_testo").fetch()): + row.pop('pkey') + print ("\t", dict(row)) + + print ("\nSELECTION NORMALE: colonna_testo è None") + for row in tbl_cliente.query(columns="@fatture.colonna_testo").selection().output('dictlist'): + row.pop('pkey') + print ("\t", row) + + print ("\nSELECTION CON _aggregateRows: colonna_testo è ''") + for row in tbl_cliente.query(columns="@fatture.colonna_testo").selection(_aggregateRows=True).output('dictlist'): + row.pop('pkey') + print ("\t", row, "<<== DEVE ESSERE None") + + print ("\nSELECTION CON _aggregateRows e colonna rinominata: torna a essere None") + for row in tbl_cliente.query(columns="@fatture.colonna_testo as prova").selection(_aggregateRows=True).output('dictlist'): + row.pop('pkey') + print ("\t", row) + + + print("\nIpotesi: problema in gnrsqldata.SqlSelection._aggregateRows") + print('''Nella riga "mixColumns = [c for c in explodingColumns if c in index and not self.colAttrs[c].get('one_one') and not( aggregateDict and (c in aggregateDict))]"''') + + print ("\nriavviami con python 002_read_aggregate.py") + +if __name__ == '__main__': + gnrapp = GnrApp('sandbox') + db = gnrapp.db + + main(db) + db.commit() \ No newline at end of file diff --git a/packages/fatt/model/fattura.py b/packages/fatt/model/fattura.py index ef7041f..0fd9a2c 100644 --- a/packages/fatt/model/fattura.py +++ b/packages/fatt/model/fattura.py @@ -23,7 +23,8 @@ def config_db(self, pkg): tbl.column('sconto',dtype='percent',name_long='Sconto') tbl.aliasColumn('clientenome','@cliente_id.ragione_sociale',name_long='Cliente') - + tbl.column('colonna_testo', size=":20") + def ricalcolaTotali(self,fattura_id=None,mylist=None): with self.recordToUpdate(fattura_id) as record: totale_lordo,totale_iva = self.db.table('fatt.fattura_riga'