Ipython
si tenim un entorn virtual podem fer-ho mitjançant pip
$ pip install ipython
OOOP
$ pip install https://github.com/gisce/ooop/archive/xmlrpc_transaction.zip
Ipython
si tenim un entorn virtual podem fer-ho mitjançant pip
$ pip install ipython
OOOP
$ 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 |