Ejemplo n.º 1
0
            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'])
Ejemplo n.º 2
0
 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:
Ejemplo n.º 5
0
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ó"
Ejemplo n.º 6
0
        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")
Ejemplo n.º 8
0
            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),