Ejemplo n.º 1
0
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__))
Ejemplo n.º 2
0
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__))
Ejemplo n.º 3
0
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__))
Ejemplo n.º 4
0
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__))
Ejemplo n.º 5
0
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__))
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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__))