def suivi_mandats_new_view(request): """ Add new suivi_mandats """ # Check authorization if not Utils.has_permission(request, request.registry.settings['affaire_suivi_edition']): raise exc.HTTPForbidden() Utils.addNewRecord(request, SuiviMandat) return Utils.get_data_save_response(Constant.SUCCESS_SAVE.format(SuiviMandat.__tablename__))
def controles_ppe_new_view(request): """ Add new controles_ppe """ # Check authorization if not Utils.has_permission(request, request.registry.settings['affaire_edition']): raise exc.HTTPForbidden() Utils.addNewRecord(request, ControlePPE) return Utils.get_data_save_response(Constant.SUCCESS_SAVE.format(ControlePPE.__tablename__))
def factures_new_view(request): """ Add new facture """ # Check authorization if not Utils.has_permission(request, request.registry.settings['affaire_facture_edition']): raise exc.HTTPForbidden() params = {} for key in request.params: if key == "numeros": params[key] = json.loads(request.params[key]) else: params[key] = request.params[key] Utils.addNewRecord(request, Facture, params) return Utils.get_data_save_response(Constant.SUCCESS_SAVE.format(Facture.__tablename__))
def etapes_new_view(request): """ POST etapes affaire """ # Check authorization if not Utils.check_connected(request): raise exc.HTTPForbidden() chef_equipe_id = request.params['chef_equipe_id'] if 'chef_equipe_id' in request.params else None # Add new step model = Utils.addNewRecord(request, AffaireEtape) # send mail affaire_etape_index = request.dbsession.query(AffaireEtapeIndex).filter(AffaireEtapeIndex.id == model.etape_id).first() etape_mailer = request.dbsession.query(EtapeMailer).filter(model.etape_id == EtapeMailer.etape_id).all() operateur = request.dbsession.query(Operateur).all() mail_list = [] # only when chef_equipe is specified if chef_equipe_id: mail_list.append( request.dbsession.query(Operateur).filter(Operateur.id == chef_equipe_id).first().mail ) # update chef d'équipe in affaire affaire = request.dbsession.query(Affaire).filter(Affaire.id == model.affaire_id).first() affaire.technicien_id = chef_equipe_id # construct mail_list for em_i in etape_mailer: if em_i.sendmail: mail = next((op.mail for op in operateur if op.id == em_i.operateur_id), None) if mail: mail_list.append(mail) # Send mail only if step prio is 1 and if mail_list not empty if affaire_etape_index.priorite == int(request.registry.settings['affaire_etape_priorite_1_id']) and len(mail_list)>0: # get affaire informations affaire = request.dbsession.query(VAffaire).filter(VAffaire.id == model.affaire_id).first() # get list of done steps lastSteps = request.dbsession.query(VEtapesAffaires).filter( and_( VEtapesAffaires.affaire_id == model.affaire_id, VEtapesAffaires.etape_priorite == int(request.registry.settings['affaire_etape_priorite_1_id']) ) ).order_by(VEtapesAffaires.id.desc()).all() lastSteps = "".join(["<tr><td style='border: 1px solid black; border-collapse: collapse; padding: 5px 25px 5px 10px;'>{}</td>\ <td style='border: 1px solid black; border-collapse: collapse; padding: 5px 25px 5px 10px;'>{} {}</td>\ <td style='border: 1px solid black; border-collapse: collapse; padding: 5px 25px 5px 10px;'>{}</td>\ <td style='border: 1px solid black; border-collapse: collapse; padding: 5px 25px 5px 10px;'>{}</td>\ </tr>".format(i.datetime, i.operateur_prenom, i.operateur_nom, i.etape, i.remarque if i.remarque else "") for i in lastSteps]) affaire_nom = " (" + affaire.nom + ")" if affaire.nom is not None else "" text = "L'affaire <b><a href='" + os.path.join(request.registry.settings['infolica_url_base'], 'affaires', str(affaire.id)) + "'>" + str(affaire.id) + affaire_nom + "</a></b> est en attente pour l'étape <b>"+ affaire_etape_index.nom +"</b>." text += ("<br><br><br><h4>Historique de l'affaire</h4><table style='border: 1px solid black; border-collapse: collapse; padding: 5px 25px 5px 10px;'><tr><th style='border: 1px solid black; border-collapse: collapse; padding: 5px 25px 5px 10px;'>Horodateur</th><th style='border: 1px solid black; border-collapse: collapse; padding: 5px 25px 5px 10px;'>Opérateur</th style='border: 1px solid black; border-collapse: collapse; padding: 5px 25px 5px 10px;'><th>Etape</th><th style='border: 1px solid black; border-collapse: collapse; padding: 5px 25px 5px 10px;'>Remarque</th></tr>" + lastSteps + "</table>") if lastSteps != "" else "" subject = "Infolica - affaire " + str(affaire.id) send_mail(request, mail_list, "", subject, html=text) return Utils.get_data_save_response(Constant.SUCCESS_SAVE.format(AffaireEtape.__tablename__))
def factures_new_view(request): """ Add new facture """ # Check connected if not Utils.check_connected(request): raise exc.HTTPForbidden() params = {} for key in request.params: if key == "numeros": params[key] = json.loads(request.params[key]) else: params[key] = request.params[key] Utils.addNewRecord(request, Facture, params) return Utils.get_data_save_response( Constant.SUCCESS_SAVE.format(Facture.__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 affaires_new_view(request): """ Add new affaire """ # Get role depending on affaire type affaire_type = request.params['type_id'] if 'type_id' in request.params else None # Permission (fonction) par défaut permission = request.registry.settings['affaire_edition'] # Affaire de cadastration if affaire_type == request.registry.settings['affaire_type_cadastration_id']: permission = request.registry.settings['affaire_cadastration_edition'] # Affaire de PPE elif affaire_type == request.registry.settings['affaire_type_ppe_id']: permission = request.registry.settings['affaire_ppe_edition'] # Affaire de révision d'abornement elif affaire_type == request.registry.settings['affaire_type_revision_abornement_id']: permission = request.registry.settings['affaire_revision_abornement_edition'] # Affaire de rétablissement de PFP3 elif affaire_type == request.registry.settings['affaire_type_retablissement_pfp3_id']: permission = request.registry.settings['affaire_retablissement_pfp3_edition'] # Affaire pcop elif affaire_type == request.registry.settings['affaire_type_part_copropriete_id']: permission = request.registry.settings['affaire_pcop_edition'] # Affaire mpd elif affaire_type == request.registry.settings['affaire_type_mpd_id']: permission = request.registry.settings['affaire_mpd_edition'] # Affaire autre elif affaire_type == request.registry.settings['affaire_type_autre_id']: permission = request.registry.settings['affaire_autre_edition'] # Check authorization if not Utils.has_permission(request, permission): raise exc.HTTPForbidden() model = Affaire() model = Utils.set_model_record(model, request.params) request.dbsession.add(model) # Récupèrer l'id de la nouvelle affaire request.dbsession.flush() # Créer le chemin du dossier de l'affaire if model.type_id != request.registry.settings['affaire_type_mpd_id']: affaire_chemin_full_path = os.path.join(request.registry.settings['affaires_directory'], str(model.id)) model.chemin = str(model.id) # chemin relatif else: affaire_chemin_full_path = None # Copier le dossier __template pour une nouvelle affaire if not affaire_chemin_full_path is None: Utils.create_affaire_folder(request, affaire_chemin_full_path) # Créer les formulaires de contrôle params = {'affaire_id': model.id} if not model.type_id in [int(request.registry.settings['affaire_type_part_copropriete_id']), int(request.registry.settings['affaire_type_autre_id'])]: if model.type_id == int(request.registry.settings['affaire_type_ppe_id']): # Create controle PPE Utils.addNewRecord(request, ControlePPE, params) else: # Create controle Mutation Utils.addNewRecord(request, ControleMutation, params) Utils.addNewRecord(request, SuiviMandat, params) Utils.addNewRecord(request, ControleGeometre, params) # Créer l'étape de création d'affaire params['etape_id'] = request.registry.settings['affaire_premiere_etape_defaut_id'] tmp = request.dbsession.query(AffaireType).filter(AffaireType.id == model.type_id).first() if tmp and tmp.logique_processus: if len(tmp.logique_processus) > 0: params['etape_id'] = tmp.logique_processus[0] params['operateur_id'] = request.params['operateur_id'] if 'operateur_id' in request.params else None params['datetime'] = datetime.now() Utils.addNewRecord(request, AffaireEtape, params) # Add facture if 'facture_client_id' in request.params: params = { 'type_id': request.registry.settings['facture_type_facture_id'], 'affaire_id': model.id, 'client_id': request.params['facture_client_id'], 'client_co_id': request.params['facture_client_co_id'] if 'facture_client_co_id' in request.params else None, 'client_complement': request.params['facture_client_complement'] if 'facture_client_complement' in request.params else None, 'client_premiere_ligne': request.params['facture_client_premiere_ligne'] if 'facture_client_premiere_ligne' in request.params else None, 'montant_mo': 0, 'montant_rf': 0, 'montant_mat_diff': 0, 'montant_tva': 0, 'montant_total': 0 } Utils.addNewRecord(request, Facture, params) return model.id