Skip to content

Instantly share code, notes, and snippets.

@ecarreras
Last active January 4, 2016 18:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • 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
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment