lect_post_ids = lect_pool_obj.search(search_vals_post) if lect_post_ids: lect_post_read = lect_pool_obj.read(lect_post_ids[0], ['lectura', 'name']) lectures_posterior.append(pol_read['name']) print "Te lectures posteriors a Pool superiors a la ultima facturada" print "Eliminem les lectures posteriors i copiem la lectura del pool" #borrar lectures posteriors de facturacio search_post_fact = [('comptador', '=', lectura.comptador.name), ('name', '>', pol_read['data_ultima_lectura'])] lect_post_fact_id = lect_fact_obj.search(search_post_fact) lect_fact_obj.unlink(lect_post_fact_id, {}) #Copiar lectura de pool copiar_lectures(lect_post_ids[0]) break lect_search_vals_mult = [('comptador', '=', comp_id), ('tipus', '=', lectura.tipus), ('periode', 'like', lectura.periode.name), ('name', '>', pol_read['data_ultima_lectura'])] lect_mult_ids = lect_fact_obj.search(lect_search_vals_mult) if len(lect_mult_ids) > 1: print "Té lectures múltiples. Eliminem la penultima lectura entrada" # Eliminar la primera que lectura de les dues lect_fact_obj.unlink([lect_mult_ids[1]], {}) multiples_lectures.append(pol_read['name'])
lect_pool_ids = lectP_obj.search([ ('comptador','=',comp_ids[0]), ('name','=',data_alta), ]) if not lect_pool_ids: info("No te lectura inicial del contracte en les lectures de pool") lect_pool_menys_un_dia_ids = lectP_obj.search([ ('comptador','=',comp_ids[0]), ('name','=',daysAgo(1,data_alta)), ]) if lect_pool_menys_un_dia_ids: info("La data d'alta és un dia després que la primera lectura") #TODO: codi repetit mes a sota. Refactor if doitDmenys1: step("Copiem la lectura") copiar_lectures(lect_pool_menys_un_dia_ids[0]) step("cerquem la lectura copiada del pool") lectF_ids = lectF_obj.search([ ('comptador','=',comp_ids[0]), ('name','=',daysAgo(1,data_alta)), ]) step("Modifiquem la data de la lectura copiada del pool, sumem 1 dia") lectF_obj.write(lectF_ids,{'name':data_alta}) if isSolved(pol_id, search_vals): success("Polissa validada. Copiant la lectura hem resolt el problema") res.resolta_data_alta_un_dia_despres_de_primera_lectura.append(pol_id) else: error("Copiant i modificant la lectura no s'ha resolt l'error") res.no_resolta_data_alta_un_dia_despres_de_primera_lectura.append(pol_id) else: step("Simulem la copia de la lectura")
continue m105_id = m105_obj.search([('sw_id','=',sw_ids[-1])])[0] data_activacio = m105_obj.read(m105_id,['data_activacio'])['data_activacio'] print "Hem fet {} M1. Data activacio: {}".format(len(sw_ids), data_activacio) #eliminem totes les lectures de facturacio posteriors a la data de ultima lectura lectF_post_ids = lectF_obj.search([('comptador','=',comp_ids[0]), ('name','>',pol_read['data_ultima_lectura'])]) lectF_obj.unlink(lectF_post_ids,{}) print "Eliminem totes les lectures posteriors a la data_ultima_lectura : {}".format(pol_read['data_ultima_lectura']) #Copiem lectures de pool a facturacio en la data d'activació lect_ids = lectP_obj.search([('name','=',data_activacio), ('comptador','=',comp_ids[0])]) copiar_lectures(lect_ids[0]) print "Lectures copiades de Pool a Factures en la data de tall: {data_activacio}".format(**locals()) #Actualitzem data inicial i final de les modificacions # Data final mod antiga = data_activacio # Data inicial mod actual = data_activacio +1 mod_antiga_ids = mod_obj.search([ ('id','in',pol_read['modcontractuals_ids']), ('active','=',False), ('data_final','>=',pol_read['data_ultima_lectura'])]) if not(len(mod_antiga_ids) == 1): print "Hem trobat més d'una modificació inactiva despres de la data dultima lectura" continue mod_obj.write(mod_antiga_ids[0],{'data_final':data_activacio}) data_activacio_dt = datetime.strptime(data_activacio,'%Y-%m-%d') data_activacio_1 = datetime.strftime(
('comptador','=',comp_baixa_id)]) if not(lectF_ids): print "Comptador sense lectura de tancament. {}".format(comp_baixa_read['name']) comptador_sense_lectura_tancament = True break if not(comptador_sense_lectura_tancament): comptador_amb_lectura_tancament.append(pol_id) continue lectP_ids = lectP_obj.search([('name','=',data_baixa), ('comptador','=',comp_baixa_id)]) #Problemes que es poden donar: # 1r No s'ha copiat la lectura de "pool" a "lectures" if lectP_ids and not(lectF_ids): print "Te lectura de Pool i no a lectures de facturacio, la copiem" copiar_lectures(lectP_ids[0]) lectF_ids = lectF_obj.search([('name','=',data_baixa), ('comptador','=',comp_baixa_id)]) #Validem a veure si ja no hi ha el problema validar_canvis([pol_id]) pol_ids_v1 = buscar_errors_lot_ids('Falta Lectura de tancament amb data') if not(pol_id in pol_ids_v1): print "No s'havia copiat la lectura des de Pool. Solucionada" polisses_resoltes_lectura_copiada.append(pol_id) continue # 2n No coincideixen les data de baixa de comptador amb la modificacio contratual inactiva mod_contractual_ids = mod_obj.search([('id','in',pol_read['modcontractuals_ids']), ('active','=',False)]) if len(mod_contractual_ids) >1:
comptador_inactius = clot_obj.search([('status', 'like', 'cap comptador actiu'), ('lot_id', '=', lot_id)]) for clot_id in comptador_inactius: pol = clot_obj.read(clot_id, ['polissa_id'])['polissa_id'] print "POLISSA %s" % pol[1] pol_read = pol_obj.read( pol[0], ['active', 'data_baixa', 'comptadors', 'comptador']) if not (pol_read['active']) and pol_read['data_baixa']: print "Data de baixa: %s" % pol_read['data_baixa'] clot_obj.unlink([clot_id]) else: print "---> L'error no es que no hi hagi un comptador actiu, es que no s'ha copiat la lectura al pool" comp_ids = pol_read['comptadors'] if len(comp_ids) == 1: print "No hi ha canvi de comptador" nomes_te_un_comptador.append(pol[1]) continue comp_id = pol_read['comptadors'][0] lectura_tall = comp_obj.read(comp_id, ['data_alta'])['data_alta'] lectP_ids = lectP_obj.search([('name', '=', lectura_tall), ('comptador', '=', comp_id)]) lectF_ids = lectF_obj.search([('name', '>', lectura_tall), ('comptador', '=', comp_id)]) if not (lectF_ids) and lectP_ids: copiar_lectures(lectP_ids[0]) print "Hem copiat lectura de Pool a facturació"
mod_inact_id = mod_obj.search([('polissa_id','=',pol_id), ('active','=',False)]) # Tenen la mateixa data de tall els comptadors i tenen lectures a Pool els dos comptadors # 1r Problema: Falta una lectura més en el comptador nou if (data_tall_baixa == data_tall_alta) and lecturaP_tall_baixa_ids and lecturaP_tall_alta_ids: print "Es queden aturats pel nou comptador. No tenen modificacio" #dies_a_facturar = (datetime.strptime(data_tall_alta,'%Y-%m-%d') - datetime.strptime(polissa_read['data_ultima_lectura'],'%Y-%m-%d')).days #data_limit = datetime.strftime(datetime.strptime(polissa_read['data_ultima_lectura'],'%Y-%m-%d') + timedelta(MIN_DIES_FACTURAR),'%Y-%m-%d') #if dies_a_facturar < MIN_DIES_FACTURAR: lecturaP_alta_ids = lectP_obj.search([('comptador','=',comptador_alta_id), ('name','>',data_tall_alta)]) # No em deixa importar la funcio de validacio_eines if lecturaP_alta_ids: copiar_lectures(lecturaP_alta_ids[-1]) #Validem a veure si ja no hi ha el problema validar_canvis([pol_id]) pol_ids_v1 = buscar_errors_lot_ids([('status','like',"incompleta")]) if not(pol_id in pol_ids_v1): print "S'ha resolt. Posant una lectura mes en el comptador d'alta" canvi_comptador.append(pol_id) continue # Tenen modificacions if mod_inact_id: mod_inact_read = mod_obj.read(mod_inact_id,['data_final']) data_final = mod_inact_read[0]['data_final'] data_final_1_dt = datetime.strptime(data_final,"%Y-%m-%d") + timedelta(1) data_final_1 = datetime.strftime(data_final_1_dt,"%Y-%m-%d")
mod_inact_id = mod_obj.search([('polissa_id','=',pol_id), ('active','=',False)]) # Tenen la mateixa data de tall els comptadors i tenen lectures a Pool els dos comptadors # 1r Problema: Falta una lectura més en el comptador nou if (data_tall_baixa == data_tall_alta) and lecturaP_tall_baixa_ids and lecturaP_tall_alta_ids: print "Es queden aturats pel nou comptador. No tenen modificacio" #dies_a_facturar = (datetime.strptime(data_tall_alta,'%Y-%m-%d') - datetime.strptime(polissa_read['data_ultima_lectura'],'%Y-%m-%d')).days #data_limit = datetime.strftime(datetime.strptime(polissa_read['data_ultima_lectura'],'%Y-%m-%d') + timedelta(MIN_DIES_FACTURAR),'%Y-%m-%d') #if dies_a_facturar < MIN_DIES_FACTURAR: lecturaP_alta_ids = lectP_obj.search([('comptador','=',comptador_alta_id), ('name','>',data_tall_alta)]) # No em deixa importar la funcio de validacio_eines if lecturaP_alta_ids: copiar_lectures(lecturaP_alta_ids[-1]) #Validem a veure si ja no hi ha el problema validar_canvis([pol_id]) pol_ids_v1 = buscar_errors_lot_ids("incompleta") if not(pol_id in pol_ids_v1): print "S'ha resolt. Posant una lectura mes en el comptador d'alta" canvi_comptador.append(pol_id) continue # Tenen modificacions if mod_inact_id: mod_inact_read = mod_obj.read(mod_inact_id,['data_final']) data_final = mod_inact_read[0]['data_final'] data_final_1_dt = datetime.strptime(data_final,"%Y-%m-%d") + timedelta(1) data_final_1 = datetime.strftime(data_final_1_dt,"%Y-%m-%d")
continue # next polissa lecturaPool_ids = lectP_obj.search([ ('name','=',data_baixa), ('comptador','=',comp_baixa_id), ]) # Casos step(" Comprovant cas: Lectura de pool no passada a facturables") if lecturaPool_ids and not lecturesFacturacio_ids: warn("Té lectura de Pool i no la té a lectures de facturacio") step("Copiant lectura de pool a facturable") if doit: copiar_lectures(lecturaPool_ids[0]) #Validem a veure si ja no hi ha el problema if isSolved(pol_id): success("Lectura copiada. Solucionada") res.polisses_resoltes_lectura_copiada.append(pol_id) continue # next polissa else: error("Copiant la lectura no s'ha resolt l'error") # TODO: compile and continue step(" Comprovant cas: Data baixa de comptador desplaçada un dia respecta a la modificacio") allModification_ids = pol_read['modcontractuals_ids'] inactiveModifications_ids = mod_obj.search([ ('id','in',allModification_ids),