Skip to content

Instantly share code, notes, and snippets.

@ecarreras
Last active January 4, 2016 18:59
Show Gist options
  • Save ecarreras/8664441 to your computer and use it in GitHub Desktop.
Save ecarreras/8664441 to your computer and use it in GitHub Desktop.

Eines que farem servir

Instal·lació de les eines

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

Documentació

OpenERP Memento

# 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
Display the source blob
Display the rendered blob
Raw
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment