Ipython
si tenim un entorn virtual podem fer-ho mitjançant pip
$ pip install ipythonOOOP
$ pip install https://github.com/gisce/ooop/archive/xmlrpc_transaction.zipIpython
si tenim un entorn virtual podem fer-ho mitjançant pip
$ pip install ipythonOOOP
$ pip install https://github.com/gisce/ooop/archive/xmlrpc_transaction.zip| # Sempre hem de tenir l'objecte O que és una instància d'OOOP | |
| from ooop import OOOP | |
| # Instaciem OOOP amb el nostre servidor. | |
| # Nota amb la uri si fem servir XML-RPC (Secure) o no farem servir http o https | |
| # també hem de posar el port en el que ens volguem connectar. | |
| O = OOOP(dbanme='nom_base_de_dades', user='usuari', pwd='password', uri='https://localhost', port=28069) | |
| # Obtenir tots els camps d'una pòlissa | |
| O.GiscedataPolissa.fields_get() | |
| # Obtenir totes les etiquetes dels camps d'una pòlissa amb el nom de la base de dades | |
| ['%s -> %s' % (x ,y.get('string', x)) for x,y in O.GiscedataPolissa.fields_get().items()] | |
| # Obtenir els camps d'una factura amb l'ajuda associada | |
| ['%s -> %s: %s' % (x ,y.get('string', x), y.get('help', '')) | |
| for x,y in O.GiscedataFacturacioFactura.fields_get(False, {'lang': 'ca_ES'}).items()] | |
| # Obtenir tots els C106 | |
| c106_ids = O.GiscedataSwitchingC106.search([]) | |
| # Per cada id | |
| for c106_id in c106_ids: | |
| # Obtenim el registre | |
| c106 = O.GiscedataSwitchingC106.get(c106_id) | |
| # Obetnim data activacio | |
| data_activacio = c106.data_activacio | |
| # Punter a l'objecte polissa | |
| pol = c106.sw_id.cups_polissa_id | |
| # Missage | |
| print "Marcant de baixa la polissa %s a data %s" % (pol.name, data_activacio) | |
| # actualitzem la polissa amb la data de baixa, i la desmarquem de renovacio | |
| # automatica | |
| pol.write({'data_baixa': data_activacio, 'renovacio_auto': 0}) | |
| polisses_ok = [] | |
| polisses_fail = [] | |
| # Obtenir tots els C106 | |
| c106_ids = O.GiscedataSwitchingC106.search([]) | |
| # Per cada id | |
| for c106_id in c106_ids: | |
| # Obtenim el registre | |
| c106 = O.GiscedataSwitchingC106.get(c106_id) | |
| # Obetnim data activacio | |
| data_activacio = c106.data_activacio | |
| # Punter a l'objecte polissa | |
| pol = c106.sw_id.cups_polissa_id | |
| # Busquem l'ultima factura que li hem fet | |
| # Amb active_test: False fem que ens busqui tant actives | |
| # com no actives | |
| factures = O.GiscedataFacturacioFactura.search([ | |
| ('polissa_id.name', '=', pol.name), | |
| ('invoice_id.journal_id.code', 'ilike', 'ENERGIA') | |
| ], 0, 0, False, {'active_test': False}) | |
| # Inicialitzem dates | |
| data_ult_client = False | |
| data_ult_prov = False | |
| # Busquem la data mes gran de proveidor i de client | |
| for factura_id in factures: | |
| factura = O.GiscedataFacturacioFactura.get(factura_id) | |
| # Si la factura de providor (in_invoice) o de client | |
| # (out_invoice) | |
| if factura.type == 'in_invoice': | |
| data_ult_prov = max(data_ult_prov, factura.data_final) | |
| else: | |
| data_ult_client = max(data_ult_client, factura.data_final) | |
| print "Data client: %s" % data_ult_client | |
| print "Data prov: %s" % data_ult_prov | |
| print "Marcant de baixa la polissa %s a data %s" % (pol.name, data_activacio) | |
| pol.write({'data_baixa': data_activacio, 'renovacio_auto': 0}) | |
| # Comprovem que totes les dates siguin iguals | |
| if data_ult_client == data_ult_prov == data_activacio: | |
| # Donar de baixa el comptadors | |
| for comp in pol.comptadors: | |
| if comp.active: | |
| vals = {'active': 0} | |
| if not comp.data_baixa: | |
| vals['data_baixa'] = data_activacio | |
| comp.write(vals) | |
| # Donar de baixa la pòlissa | |
| pol.send_signal(['baixa']) | |
| print "Donada de baixa!" | |
| polisses_ok.append(pol.id) | |
| else: | |
| print("Dates diferents: Activacio: %s, Factura client: %s " | |
| "Factura prov: %s" % (data_activacio, data_ult_client, data_ult_prov)) | |
| polisses_fail.append(pol.id) | |
| # Última factura d'energia i de proveïdor de la pòlissa | |
| factures = O.GiscedataFacturacioFactura.search([ | |
| ('polissa_id.name', '=', '06298'), | |
| ('type', '=', 'in_invoice'), | |
| ('invoice_id.journal_id.code', 'ilike', 'ENERGIA') | |
| ], 0, 1, 'data_final desc, id desc') | |
| # Última factura d'energia i de client de la pòlissa | |
| factures = O.GiscedataFacturacioFactura.search([ | |
| ('polissa_id.name', '=', '06298'), | |
| ('type', '=', 'out_invoice'), | |
| ('invoice_id.journal_id.code', 'ilike', 'ENERGIA') | |
| ], 0, 1, 'data_final desc, id desc') | |
| # Dates de les últimes factures de client i proveidor amb bucle | |
| factures = O.GiscedataFacturacioFactura.search([ | |
| ('polissa_id.name', '=', '06298'), | |
| ('invoice_id.journal_id.code', 'ilike', 'ENERGIA') | |
| ]) | |
| data_ult_client = False | |
| data_ult_prov = False | |
| for factura_id in factures: | |
| factura = O.GiscedataFacturacioFactura.get(factura_id) | |
| if factura.type == 'in_invoice': | |
| data_ult_prov = max(data_ult_prov, factura.data_final) | |
| else: | |
| data_ult_client = max(data_ult_client, factura.data_final) | |
| print "Data client: %s" % data_ult_client | |
| print "Data prov: %s" % data_ult_prov |