def reference_numeros_new_view(request): """ Add numéro muté in affaire """ # Check authorization if not Utils.has_permission( request, request.registry.settings['affaire_numero_edition']): raise exc.HTTPForbidden() # Get affaire_id affaire_id = request.params[ 'affaire_id'] if 'affaire_id' in request.params else None numeros_liste = json.loads(request.params['numeros_liste'] ) if 'numeros_liste' in request.params else None for numero_i in numeros_liste: # enregistrer le lien affaire-numéro params = Utils._params(affaire_id=affaire_id, numero_id=numero_i['numero_id'], actif=True, type_id=1) affaire_numero_new_view(request, params) return Utils.get_data_save_response( Constant.SUCCESS_SAVE.format(Numero.__tablename__))
def numeros_update_view(request): """ Update numeros """ # Check authorization if not Utils.has_permission(request, request.registry.settings['affaire_numero_edition']): raise exc.HTTPForbidden() # Get numero id id = request.params['id'] if 'id' in request.params else None # Get numero record record = request.dbsession.query(Numero).filter( Numero.id == id).first() if not record: raise CustomError( CustomError.RECORD_WITH_ID_NOT_FOUND.format(Numero.__tablename__, id)) last_record_etat_id = record.etat_id record = Utils.set_model_record(record, request.params) if 'etat_id' in request.params: if request.params['etat_id'] != last_record_etat_id: params = Utils._params( numero_id=record.id, numero_etat_id=request.params['etat_id']) numeros_etat_histo_new_view(request, params) return Utils.get_data_save_response(Constant.SUCCESS_SAVE.format(Numero.__tablename__))
def reference_numeros_new_view(request): """ Add numéro muté in affaire """ # Check authorization if not Utils.has_permission(request, request.registry.settings['affaire_numero_edition']): raise exc.HTTPForbidden() # Get affaire_id affaire_id = request.params['affaire_id'] if 'affaire_id' in request.params else None numeros_liste = json.loads( request.params['numeros_liste']) if 'numeros_liste' in request.params else None # Get affaire_type_id and config values affaire_type_id = request.dbsession.query(Affaire).filter(Affaire.id == affaire_id).first().type_id affaire_type_cadastration_id = int(request.registry.settings['affaire_type_cadastration_id']) facture_type_facture_id = int(request.registry.settings['facture_type_facture_id']) client_cadastration_id = int(request.registry.settings['client_cadastration_id']) for numero_i in numeros_liste: # enregistrer le lien affaire-numéro params = Utils._params( affaire_id=affaire_id, numero_id=numero_i['numero_id'], actif=True, type_id=1) affaire_numero_new_view(request, params) # Si l'affaire est une cadastration, générer une facture par numéro if affaire_type_id == affaire_type_cadastration_id: params = Utils._params( type_id=facture_type_facture_id, affaire_id=affaire_id, client_id=client_cadastration_id, montant_mat_diff=0, montant_mo=0, montant_rf=0, montant_total=0, montant_tva=0, numeros=[numero_i['numero_id']] ) Utils.addNewRecord(request, Facture, params=params) return Utils.get_data_save_response(Constant.SUCCESS_SAVE.format(Numero.__tablename__))
def emolument_new_view(request): """ Add new emolument """ # Check authorization if not Utils.has_permission( request, request.registry.settings['affaire_facture_edition']): raise exc.HTTPForbidden() params = request.params data = json.loads(params['data']) emolument_affaire_id = params['emolument_affaire_id'] for batiment_i in data: for emolument_i in batiment_i: if float(batiment_i[emolument_i]['montant']) > 0 and float( batiment_i[emolument_i]['nombre']) > 0: params = Utils._params( emolument_affaire_id=int(emolument_affaire_id), tableau_emolument_id=int( batiment_i[emolument_i]['tableau_emolument_id']), position=batiment_i[emolument_i]['nom'], prix_unitaire=float( batiment_i[emolument_i]['prix_unitaire']), nombre=int(batiment_i[emolument_i]['nombre']), batiment=int(batiment_i[emolument_i]['batiment']), batiment_f=float(batiment_i[emolument_i]['batiment_f']), montant=float(batiment_i[emolument_i]['montant'])) record = Emolument() record = Utils.set_model_record(record, params) request.dbsession.add(record) return Utils.get_data_save_response( Constant.SUCCESS_SAVE.format(Emolument.__tablename__))
def reservation_numeros_new_view(request): """ Add new numeros in affaire """ # Check authorization if not Utils.has_permission(request, request.registry.settings['affaire_numero_edition']): raise exc.HTTPForbidden() nombre = int(request.params["nombre"]) if "nombre" in request.params else None affaire_id = int(request.params["affaire_id"]) if "affaire_id" in request.params else None cadastre_id = int(request.params["cadastre_id"]) if "cadastre_id" in request.params else None etat_id = int(request.params["etat_id"]) if "etat_id" in request.params else None type_id = int(request.params["type_id"]) if "type_id" in request.params else None numero_base_id = int(request.params["numero_base_id"]) if "numero_base_id" in request.params else None ppe_suffixe_start = request.params["ppe_suffixe_start"] if "ppe_suffixe_start" in request.params else None if not (affaire_id and nombre and cadastre_id and etat_id and type_id): raise CustomError(CustomError.GENERAL_EXCEPTION) settings = request.registry.settings # Récupère les id des états des biens-fonds de la config numero_projet_id = int(settings['numero_projet_id']) # Récupère les id des biens-fonds de la config numero_bf_id = int(settings['numero_bf_id']) numero_ddp_id = int(settings['numero_ddp_id']) numero_ppe_id = int(settings['numero_ppe_id']) numero_pcop_id = int(settings['numero_pcop_id']) affaire_numero_type_nouveau_id = int(settings['affaire_numero_type_nouveau_id']) numero_relation_mutation_id = int(settings['numero_relation_mutation_id']) numero_relation_ddp_id = int(settings['numero_relation_ddp_id']) numero_relation_ppe_id = int(settings['numero_relation_ppe_id']) numero_relation_pcop_id = int(settings['numero_relation_pcop_id']) if type_id in [numero_ddp_id, numero_ppe_id, numero_pcop_id] and numero_base_id is None: raise CustomError(CustomError.RESERVATION_NUMBER_WITHOUT_BASE_NUMBER) # Définit la relation entre le numéro de base et le numéro associé # + Récupère l'id du suffixe de l'unité PPE de départ suffixe = None if type_id == numero_ddp_id: relation_type_id = numero_relation_ddp_id elif type_id == numero_ppe_id: relation_type_id = numero_relation_ppe_id unite_start_idx = Utils.get_index_from_unite(request.params["ppe_suffixe_start"].upper()) if "ppe_suffixe_start" in request.params else 0 elif type_id == numero_pcop_id: relation_type_id = numero_relation_pcop_id suffixe = "part" # Récupère le dernier numéro de bien-fonds réservé dans le cadastre ln = Utils.last_number(request, cadastre_id, [numero_bf_id, numero_ddp_id, numero_ppe_id, numero_pcop_id]) # Enregistrer le numéro for i in range(nombre): if type_id == numero_ppe_id: # Update suffixe = Utils.get_unite_from_index(unite_start_idx + i) params = Utils._params(cadastre_id=cadastre_id, type_id=type_id, etat_id=etat_id, numero=ln+i+1, suffixe=suffixe, no_access="_".join([str(cadastre_id), str(ln+i+1)])) numero_id = numeros_new_view(request, params) # enregistrer le lien affaire-numéro params = Utils._params(affaire_id=affaire_id, numero_id=numero_id, actif=True, type_id=affaire_numero_type_nouveau_id, no_access="_".join([str(cadastre_id), str(ln+i+1)])) affaire_numero_new_view(request, params) # enregistrer l'historique de l'état params = Utils._params(numero_id=numero_id, numero_etat_id=etat_id, no_access="_".join([str(cadastre_id), str(ln+i+1)])) numeros_etat_histo_new_view(request, params) # enregistrer le numéro sur un bien-fonds de base si nécessaire if numero_base_id: params = Utils._params(numero_id_base=numero_base_id, numero_id_associe=numero_id, relation_type_id=relation_type_id, affaire_id=affaire_id) numeros_relations_new_view(request, params) return Utils.get_data_save_response(Constant.SUCCESS_SAVE.format(Numero.__tablename__))
def savePointMO(request, affaire_id, cadastre_id, numero_type, n_numeros, etat_id): settings = request.registry.settings cadastres_ChauxDeFonds_Eplatures_id = settings[ 'cadastres_ChauxDeFonds_Eplatures_id'].split(",") cadastres_ChauxDeFonds_Eplatures_id = [ int(cadastres_ChauxDeFonds_Eplatures_id[0]), int(cadastres_ChauxDeFonds_Eplatures_id[1]) ] cadastres_BrotPlamboz_Plamboz_id = settings[ 'cadastres_BrotPlamboz_Plamboz_id'].split(",") cadastres_BrotPlamboz_Plamboz_id = [ int(cadastres_BrotPlamboz_Plamboz_id[0]), int(cadastres_BrotPlamboz_Plamboz_id[1]) ] cadastres_Neuchatel_Coudre_id = settings[ 'cadastres_Neuchatel_Coudre_id'].split(",") cadastres_Neuchatel_Coudre_id = [ int(cadastres_Neuchatel_Coudre_id[0]), int(cadastres_Neuchatel_Coudre_id[1]) ] cadastres_Sauge_StAubin_id = settings['cadastres_Sauge_StAubin_id'].split( ",") cadastres_Sauge_StAubin_id = [ int(cadastres_Sauge_StAubin_id[0]), int(cadastres_Sauge_StAubin_id[1]) ] # Corriger la liste des cadastres où la réservation de numéros se fait sur deux cadastres if cadastre_id == cadastres_ChauxDeFonds_Eplatures_id[ 0] or cadastre_id == cadastres_ChauxDeFonds_Eplatures_id[1]: # Cadastre de la Chaux-de-Fonds et des Eplatures ln = max( Utils.last_number(request, cadastres_ChauxDeFonds_Eplatures_id[0], [numero_type]), Utils.last_number(request, cadastres_ChauxDeFonds_Eplatures_id[1], [numero_type])) elif cadastre_id == cadastres_BrotPlamboz_Plamboz_id[ 0] or cadastre_id == cadastres_BrotPlamboz_Plamboz_id[1]: # Cadastre de Brot-Plamboz et Plamboz ln = max( Utils.last_number(request, cadastres_BrotPlamboz_Plamboz_id[0], [numero_type]), Utils.last_number(request, cadastres_BrotPlamboz_Plamboz_id[1], [numero_type])) elif cadastre_id == cadastres_Neuchatel_Coudre_id[ 0] or cadastre_id == cadastres_Neuchatel_Coudre_id[1]: # Cadastre de Neuchâtel et de la Coudre ln = max( Utils.last_number(request, cadastres_Neuchatel_Coudre_id[0], [numero_type]), Utils.last_number(request, cadastres_Neuchatel_Coudre_id[1], [numero_type])) elif cadastre_id == cadastres_Sauge_StAubin_id[ 0] or cadastre_id == cadastres_Sauge_StAubin_id[1]: # Cadastre de Sauge et de Saint-Aubin ln = max( Utils.last_number(request, cadastres_Sauge_StAubin_id[0], [numero_type]), Utils.last_number(request, cadastres_Sauge_StAubin_id[1], [numero_type])) else: ln = Utils.last_number(request, cadastre_id, [numero_type]) for i in range(n_numeros): # enregistrer un nouveau numéro params = Utils._params(cadastre_id=cadastre_id, type_id=numero_type, etat_id=etat_id, numero=ln + i + 1) numero_id = numeros_new_view(request, params) # enregistrer le lien affaire-numéro params = Utils._params(affaire_id=affaire_id, numero_id=numero_id, actif=True, type_id=2) affaire_numero_new_view(request, params)
def emolument_affaire_view(request): """ Return emolument_affaire """ # Check connected if not Utils.check_connected(request): raise exc.HTTPForbidden() affaire_id = request.params[ 'affaire_id'] if 'affaire_id' in request.params else None query = request.dbsession.query(EmolumentAffaire) if not affaire_id is None: query = query.filter(EmolumentAffaire.affaire_id == affaire_id) emolument_affaire = query.all() # Récupérer les données des bâtiments result = [] for emolument_affaire_i in emolument_affaire: query_bat = request.dbsession.query( Emolument.batiment, Emolument.batiment_f).filter(Emolument.emolument_affaire_id == emolument_affaire_i.id).filter( Emolument.batiment > 0).group_by( Emolument.batiment, Emolument.batiment_f).all() batiment_f = [y for _, y in query_bat] numeros = [] numeros_id = [] if emolument_affaire_i.numeros_id and len( emolument_affaire_i.numeros_id) > 0: numeros_id = emolument_affaire_i.numeros_id numeros = Utils.serialize_many( request.dbsession.query(VNumerosAffaires).filter( and_( VNumerosAffaires.numero_id.in_( tuple(emolument_affaire_i.numeros_id)), VNumerosAffaires.affaire_id == emolument_affaire_i.affaire_id)).all()) result.append( Utils._params( id=emolument_affaire_i.id, affaire_id=emolument_affaire_i.affaire_id, pente_pc=emolument_affaire_i.pente_pc, diff_visibilite_pc=emolument_affaire_i.diff_visibilite_pc, trafic_pc=emolument_affaire_i.trafic_pc, zi=emolument_affaire_i.zi, indice_application=emolument_affaire_i.indice_application, tva_pc=emolument_affaire_i.tva_pc, remarque=emolument_affaire_i.remarque, nb_batiments=len(batiment_f), batiment_f=batiment_f, numeros_id=numeros_id, numeros=numeros, facture_type_id=emolument_affaire_i.facture_type_id, utilise=emolument_affaire_i.utilise)) return result
def update_emolument_view(request): """ Update emolument """ # Check authorization if not Utils.has_permission( request, request.registry.settings['affaire_facture_edition']): raise exc.HTTPForbidden() params = request.params data = json.loads(params['data']) emolument_affaire_id = params['emolument_affaire_id'] # Query existing data query = request.dbsession.query(Emolument).filter( Emolument.emolument_affaire_id == emolument_affaire_id) emoluments = query.all() for batiment_i in data: for emolument_i in batiment_i: record = None for index, item in enumerate(emoluments): if (item.batiment == batiment_i[emolument_i]['batiment'] and item.tableau_emolument_id == batiment_i[emolument_i]['tableau_emolument_id']): record = emoluments.pop(index) break if not record is None: # comparer les valeurs enregistrées if (not float(record.montant) == float(batiment_i[emolument_i]['montant']) \ or not record.tableau_emolument_id == batiment_i[emolument_i]['tableau_emolument_id'] \ or not record.position == batiment_i[emolument_i]['nom'] \ or not int(record.nombre) == int(batiment_i[emolument_i]['nombre']) \ or not float(record.batiment_f) == float(batiment_i[emolument_i]['batiment_f'])): # Mettre à jour les données si le nouveau montant n'est pas nul if float(batiment_i[emolument_i]['montant']) > 0: params = Utils._params( position=batiment_i[emolument_i]['nom'], nombre=int(batiment_i[emolument_i]['nombre']), batiment_f=float( batiment_i[emolument_i]['batiment_f']), montant=float(batiment_i[emolument_i]['montant'])) record = Utils.set_model_record(record, params) else: # supprimer l'émolument request.dbsession.delete(record) else: if float(batiment_i[emolument_i]['montant']) > 0 and float( batiment_i[emolument_i]['nombre']) > 0: params = Utils._params( emolument_affaire_id=int(emolument_affaire_id), tableau_emolument_id=int( batiment_i[emolument_i]['tableau_emolument_id']), position=batiment_i[emolument_i]['nom'], prix_unitaire=float( batiment_i[emolument_i]['prix_unitaire']), nombre=int(batiment_i[emolument_i]['nombre']), batiment=int(batiment_i[emolument_i]['batiment']), batiment_f=float( batiment_i[emolument_i]['batiment_f']), montant=float(batiment_i[emolument_i]['montant'])) record = Emolument() record = Utils.set_model_record(record, params) request.dbsession.add(record) # delete all remaining emoluments for item in emoluments: request.dbsession.delete(item) return Utils.get_data_save_response( Constant.SUCCESS_SAVE.format(Emolument.__tablename__))