def update_indemnity_(id, indemnity_id): con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() indemnity = indemnity_to_update(indemnity_id, con, cur) if request.method == 'POST': try: refund_status = request.form['refund_status'] update_dict = {} if refund_status: update_dict['refund_status'] = refund_status if update_dict == {}: flash('No Modification Is Made') return redirect( url_for('client.display_company', id=session['client_id'], contract_id=session['contract_id'])) except Exception as error: print(error) abort(400) try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() check = check_indemnity_status(id, indemnity_id, con, cur) if check: flash( "Can't Update Indemnity ,Customer Has Already Received His Refund! " ) else: update_one_indemnity(update_dict, id, indemnity_id, con, cur) flash('Updated Sucessfully !') except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() return redirect( url_for('client.display_company', id=session['client_id'], contract_id=session['contract_id'])) return render_template("indemnity/modify_indemnity.html", id=id, indemnity_id=indemnity_id, indemnity=indemnity)
def update_clients_info(id): con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() client = client_to_update(id, con, cur) if request.method == 'POST': error = True try: update_dict = {} email = request.form['email'] tel = request.form['tel'] if email: update_dict['email'] = email if tel: update_dict['tel'] = tel if update_dict == {}: flash('no modification is made') return redirect( url_for("client.display_client", id=session['client_id'], contract_id=session['contract_id'])) except Exception as error: print(error) abort(400) try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() update_client_info(update_dict, id, con, cur) flash('Updated Successfully !') except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() return redirect( url_for("client.display_client", id=session['client_id'], contract_id=session['contract_id'])) return render_template("client/modify_client_info.html", id=id, client=client)
def inst_update(id, contract_id): try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() #search_one_instalment({'extern_id'=f"{id}"}) if request.method == 'POST': if request.form['submit'] == 'payer': f = request.form for key in f.keys(): if key != 'submit': update_payment( { 'status': 'Payé', 'payment_date': str( datetime.datetime.now().date()) }, id, request.form[key], con, cur) except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() return redirect( url_for('payment.show_all_payments', id=id, contract_id=contract_id))
def insert_settings_(): con=None if request.method=='POST': print(request.form) if request.form['submit']=="Valider": try : step= request.form.get('step') max_inst=request.form.get('max_inst') keys='step,max_inst' values=(step,max_inst) except Exception as error: print(error) abort(400) try: con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() insert_settings(keys,values,con,cur) flash('paramétres enregistrés') except Exception as error: print(error) abort(422) finally : if con is not None: cur.close() con.close() return render_template('settings.html')
def inst_payment(id, contract_id, inst_id): try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() inst_record = search_one_instalment({'extern_id': f"{inst_id}"}, cur) print('inst_record') remaining_amount = request.args.get('remaining_amount') payment = False if remaining_amount == '0.0': flash(" L'échéance Selectionnée Est Déja Payé") return redirect( url_for('payment.show_all_payments', id=id, contract_id=contract_id)) if request.method == 'POST': if request.form['submit'] == 'Payer': extern_id = "pay" + time_number() keys = "client_id,contract_id,inst_id,extern_id" values = [id, contract_id, inst_id, extern_id] f = request.form for key in f.keys(): if key != 'submit' and request.form[key] != '': keys = keys + ',' + key values.append(str(request.form[key])) update_dict = { 'remaining_amount': round(request.form['amount'], 2) } values = tuple(values) add_payment(values, keys, con, cur) update_payment(update_dict, id, inst_id, con, cur) payment = True except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() if payment == True: return redirect( url_for('payment.show_all_payments', id=id, contract_id=contract_id)) else: return render_template('paiement.html', id=id, contract_id=contract_id, inst_id=inst_id, remaining_amount=remaining_amount, inst_record=inst_record)
def searching_client(): record = None columns_names = None if request.method == 'POST': if request.form['submit'] == 'Search': try: search_dict = {} client_reference = request.form['client_reference'] name = request.form['first_name'] last_name = request.form['last_name'] email = request.form['email'] tel = request.form['tel'] contract_type = request.form['contract_type'] contract_reference = request.form['contract_reference'] status = request.form['status'] if client_reference and client_reference != '': search_dict['cl.extern_id'] = client_reference if name and name != '': search_dict['name'] = name if last_name and last_name != '': search_dict['last_name'] = last_name if email and email != '': search_dict['email'] = email if tel and tel != '': search_dict['tel'] = tel if contract_type and contract_type != '': search_dict['contract_type'] = contract_type if contract_reference and contract_reference != '': search_dict['con.extern_id'] = contract_reference if status and status != '': search_dict['status'] = status except Exception as error: print(error) abort(400) try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() columns_names, record = search_client(search_dict, cur) if not record: flash('Zero Result , Please Check Your Search Criteria !') except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() return render_template("search/search_client.html", search_result=record, columns=columns_names)
def subscription(): con=None if request.method=='POST': if request.form['submit']=="S'abonner": try : register_user=False id="usr"+time_number() name= request.form.get('name') last_name=request.form.get('last_name') email=request.form.get('email') tel=request.form.get('phone') user_name=request.form.get('user_name') password=request.form.get('password') user_type=request.form.get('user_type') user=User( name=name, last_name=last_name, email=email, tel=tel, id=id, user_name=user_name, password=password, user_type=user_type) except Exception as error: print(error) abort(400) try: con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() create_user(user,con,cur) register_user=True except (Exception, psycopg2.Error) as error: print(error) if isinstance(error,UniqueViolation): flash('Les informations choisies existent déjà') else: abort(422) finally: if con is not None: cur.close() con.close() if register_user==True: flash('Utilisateur répertorié avec succès') return render_template("user/subscription_user.html")
def display_all_client(): try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() page = int(request.args.get('page', 1)) count, page_result, columns_names, record = get_all_client(page, cur) next_page = page + 1 previous = page - 1 results = page_result * page max_pages = count // page_result if record: if count % page_result == 0: max_pages = count // page_result else: max_pages = (count // page_result) + 1 if results >= count and page == 1: link_next = url_for('client.get_all_clients', page=1) elif page > 1 and results >= count: link_next = url_for('client.get_all_clients', page=page) else: link_next = url_for('client.get_all_clients', page=next_page) if page == 1: link_previous = url_for('client.get_all_clients', page=1) else: link_previous = url_for('client.get_all_clients', page=previous) print(hhj) except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() if not record: flash("vous n'avez pas encore de clients souscrits") return redirect(url_for('client.subscription')) else: return render_template("client/clients.html", search_result=record, columns=columns_names, link_next=link_next, link_previous=link_previous, page=page, nb=page_result, max_pages=max_pages)
def login_user(): con=None if request.method=='POST': if request.form['submit']=='Se connecter': print(session) session.permanen=False if 'user' not in session: try : user_name=request.form['user_name'] password=request.form['password'] except Exception as error: print(error) abort(400) try: con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() [check,id]=login(user_name,password,cur) if check==True: session['user']=id session['settings']=loads_settings() except Exception as error: print(error) abort(422) finally : if con is not None: cur.close() con.close() if 'user' in session : return redirect(url_for('client.search_client_')) else: print(session) flash("Vous êtes déjà connecté") return redirect(url_for('client.search_client_')) return render_template("page_acceuil.html")
def display_all_user(): try: con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() page= int(request.args.get('page', 1)) count,page_result,columns_names,record=get_all_user(page,cur) next_page=page+1 previous=page-1 results=page_result*page max_pages=count//page_result if count%page_result==0: max_pages=count//page_result else: max_pages=(count//page_result)+1 if results>=count and page==1: link_next=url_for('user.get_all_users',page=1) elif page>1 and results>=count: link_next=url_for('user.get_all_users',page=page) else: link_next=url_for('user.get_all_users',page=next_page) if page==1: link_previous=url_for('user.get_all_users',page=1) else: link_previous=url_for('user.get_all_users',page=previous) except Exception as error: print(error) abort(422) finally : if con is not None: cur.close() con.close() return render_template( "user/users.html",search_result=record,columns=columns_names, link_next=link_next,link_previous=link_previous,page=page,nb=page_result,max_pages=max_pages)
def update_settings(): if request.method== 'POST': error=True try: update_dict={} step= request.form.get('step') max_inst=request.form.get('max_inst') if step: update_dict['step']=step if max_inst: update_dict['max_inst']=max_inst if update_dict=={}: flash('no modification is made') except Exception as error: print(error) abort(400) try: con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() update_settings_info(update_dict,'1',con,cur) session['settings']=(step,max_inst) print(session) flash('Updated Successfully !') except Exception as error: print(error) abort(422) finally : if con is not None: cur.close() con.close() return render_template('modify_settings.html')
def add_one_sinister(id,contract_id): if request.method=='POST': try: description=request.form['description'] opposing_insurer=request.form['opposing_insurer'] amount=request.form['amount'] sinister_date=request.form['sinister_date'] if amount and amount !='': extern_id="sin"+time_number() sinister=Sinister( sinister_date=sinister_date, description=description, opposing_insurer=opposing_insurer, amount=float(amount)) except Exception as error: print(error) abort(400) try: con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() con_id=get_contract_id(contract_id,con,cur) cl_id=get_client_by_extern_id(id,con,cur) add_sinister(sinister,extern_id,id,contract_id,cl_id,con_id,con,cur) flash('Listed Successfully !') except Exception as error: print(error) finally : if con is not None: cur.close() con.close() return redirect(url_for("client.display_client",id=id,contract_id=contract_id)) return render_template("sinister/create_sinister.html",id=id,contract_id=contract_id)
def display_one_client(id, contract_id): try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() [ client_info, contracts, address_info, sinisters, indemnity, total_indemnity, record, unpaid, relance, nb ] = search_fiche_client(id, contract_id, cur) session['client_id'] = client_info['id'] session['contract_id'] = contract_id except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() if not record: abort(400) return render_template("client/fiche_client.html", client_info=client_info, address_info=address_info, data=json.dumps(sinisters), contracts=contracts, sinisters_history=sinisters, indemnity=indemnity, total_indemnity=total_indemnity, unpaid=unpaid, relance=relance, message='client est à jours', id=id, nb=nb, contract_id=contract_id)
def update_address(id, address_id): con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() address = address_to_update(id, con, cur) if request.method == 'POST': try: update_dict = {} line1 = request.form['line1'] line2 = request.form['line2'] city = request.form['city'] postal_code = request.form['postal_code'] country = request.form['country'] state = request.form['state'] if line1: update_dict['line1'] = line1 if line2: update_dict['line2'] = line2 if city: update_dict['city'] = city if postal_code: update_dict['postal_code'] = postal_code if country: update_dict['country'] = country if state: update_dict['state'] = state if update_dict == {}: flash('no modification is made') return redirect( url_for("client.display_client", id=session['client_id'], contract_id=session['contract_id'])) except Exception as error: print(error) abort(400) if update_dict == {}: abort(400) try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() update_one_address(update_dict, id, address_id, con, cur) flash('Updated Successfully !') except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() return redirect( url_for("client.display_client", id=session['client_id'], contract_id=session['contract_id'])) return render_template("modify_client_address.html", id=id, address_id=address_id, address=address)
def update_users_info(id): con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() user=user_to_update(id,con,cur) if request.method== 'POST': error=True try: update_dict={} name= request.form.get('name') last_name=request.form.get('last_name') email=request.form.get('email') tel=request.form.get('tel') user_name=request.form.get('user_name') password=request.form.get('password') user_type=request.form.get('user_type') if name: update_dict['name']=name if last_name: update_dict['last_name']=last_name if email: update_dict['email']=email if tel: update_dict['tel']=tel if user_name: update_dict['user_name']=user_name if password: update_dict['password']=password if user_type: update_dict['user_type']=user_type if update_dict=={}: flash('no modification is made') return redirect(url_for("user.get_all_users")) except Exception as error: print(error) abort(400) try: con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() update_user_info(update_dict,id,con,cur) flash('Updated Successfully !') except Exception as error: print(error) abort(422) finally : if con is not None: cur.close() con.close() return redirect(url_for("user.get_all_users")) return render_template("user/modify_user_info.html",id=id,user=user)
def get_searching_user(): search_dict_dps=(request.args.get('search_dict', 1)) search_dict=json.loads(request.args.get('search_dict', 1)) page= int(request.args.get('page', 1)) try: con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() count,page_result,columns_names,record=search_user_pages(search_dict,page,cur) link_next="" link_previous="" max_pages=0 if not record: redirect('user.search_user_') flash("Zéro Résultat , Merci D'affiner votre recherche !") else : file_name=f"search_user_result" csv_columns = columns_names.copy() csv_columns.insert(0,'id') csv_columns.remove('Link') csv_columns.append('nombre de resultat') all_record=search_all_user(search_dict,cur) to_csv(file_name,csv_columns,all_record) next_page=page+1 previous=page-1 results=page_result*page if count%page_result==0: max_pages=count//page_result else: max_pages=count//page_result max_pages=max_pages+1 if results>=count and page==1: link_next=url_for('user.get_search_user_',search_dict=search_dict_dps,page=1) elif page>1 and results>=count: link_next=url_for('user.get_search_user_',search_dict=search_dict_dps,page=page) else: link_next=url_for('user.get_search_user_',search_dict=search_dict_dps,page=next_page) if page==1: link_previous=url_for('user.get_search_user_',search_dict=search_dict_dps,page=1) else: link_previous=url_for('user.get_search_user_',search_dict=search_dict_dps,page=previous) except Exception as error: print(error) abort(422) finally : if con is not None: cur.close() con.close() return render_template( "search/search_user.html",search_result=record,columns=columns_names, search_dict=search_dict_dps,link_next=link_next,link_previous=link_previous,page=page,nb=page_result,max_pages=max_pages)
def update_sinister_(id,sinister_id): con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() sinister=sinister_to_update(id,sinister_id,con,cur) if request.method=='POST': print(request.form) try: update_dict={} modification={} description=request.form['description'] opposing_insurer=request.form['opposing_insurer'] amount=request.form['amount'] status=request.form['status'] sinister_date=request.form['sinister_date'] if sinister_date: update_dict['sinister_date']=sinister_date if description: update_dict['description']=description if opposing_insurer: update_dict['opposing_insurer']=opposing_insurer if amount and amount!='': update_dict['amount']=float(amount) if status and status!='': update_dict['status']=status if status=="Valide" or status=="Invalide": update_dict['closing_date']=str(datetime.datetime.now().date()) if update_dict=={}: flash('No Modification Is Made') return redirect(url_for("client.display_company",id=session['client_id'],contrcat_id=session['contract_id'])) except Exception as error: print(error) abort(400) try: con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() cl_id=get_company_by_extern_id(id,con,cur) con_id=get_contract_id(session['contract_id'],con,cur) if sinister.status=='Valide' or sinister.status=='Invalide' : flash("Can't Update Sinister Already Close") else: count=count_modification(sinister_id,con,cur) if count<=5: count=count_modification(sinister_id,con,cur) update_one_sinister(update_dict,id,sinister_id,con,cur) modification['updated_id']=sinister_id modification['updates_values']=json.dumps(update_dict) modification['updated_by']=session['user'] modification['extern_id']='mdf'+time_number() add_modification(modification,con,cur) else: flash('Nombre maximale de modification est dépassé') return redirect(url_for("client.display_company",id=session['client_id'],contract_id=session['contract_id'])) if 'status' in update_dict.keys(): if update_dict['status']=='Valide': if 'amount' in update_dict.keys(): sinister.amount=update_dict['amount'] extern_id="ind"+time_number() create_indemnity_(sinister,extern_id,cl_id,con_id,id,session['contract_id'],con,cur) flash('Updated Sucessfully !') except Exception as error: print(error) abort(422) finally : if con is not None: cur.close() con.close() return redirect(url_for("client.display_company",id=session['client_id'],contract_id=session['contract_id'])) return render_template("sinister/modify_sinister.html",id=id,sinister_id=sinister_id,sinister=sinister)
def client_subscription(): abort(404) if request.method == 'POST': print(request.form) con = None nb_inst = None try: register = False contract_id = "ctr" + time_number() id_address = 'adr' + time_number() name = request.form['first_name'] last_name = request.form['last_name'] email = request.form['email'] client_type = request.form['client_type'] tel = request.form['full_number'] line1 = request.form['line1'] line2 = request.form['line2'] city = request.form['city'] postal_code = request.form['postal_code'] country = request.form['country'] state = request.form['state'] price = request.form.get('price') contract_type = request.form.get('contract_type') start_date = request.form.get('start_date') end_date = request.form.get('end_date') id = name[0] + last_name[0:2] + time_number() payment_amount = request.form.get('payment_amount') payment_mode = request.form.get('payment_mode') nb_bank_check = request.form.get('nb_bank_check') transaction_number = request.form.get('transaction_number') card_number = request.form.get('card_number') payor_last_name = request.form.get('payor_last_name') payor_name = request.form.get('payor_name') nb_inst = request.form.get('nb_inst') if country == '': country = default_country_name if request.form.get('nb_inst') != '0': nb_inst = int(request.form.get('nb_inst')) address = Address(id=id_address, line1=line1, line2=line2, city=city, postal_code=postal_code, state=state, country=country) if price == '': contract = None else: contract = Contract(id=contract_id, price=float(price), contract_type=contract_type, start_date=start_date, end_date=end_date) client = Client(id=id, name=name, last_name=last_name, email=email, tel=tel, client_type=client_type, address=address) except Exception as error: print(error) abort(400) try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() if client_type == 'Client Potentiel': insert_client_info(client, con, cur) client_id = get_client_id(email, con, cur) print(client_id) session.client_sub_id = client_id insert_address_info(address, client_id, id, con, cur) register = True contract_id = 'ClientPotentiel' else: due_date = datetime.datetime.now().date() insts = [] if nb_inst != '0': insert_client_info(client, con, cur) client_id = get_client_id(email, con, cur) print(client_id) session.client_sub_id = client_id insert_address_info(address, client_id, id, con, cur) insert_contract_info(contract, client_id, con, cur) ctr_id = get_contract_id(contract_id, con, cur) inst_amount = round(float(price) / nb_inst, 2) for i in range(nb_inst): inst = Instalment(amount=inst_amount, due_date=str(due_date)) due_date = due_date + datetime.timedelta(days=30) insts.append((inst, "inst" + f"{i}" + time_number())) insert_one_client_instalments(insts, client_id, ctr_id, id, contract_id, con, cur) else: insert_client_info(client, con, cur) client_id = get_client_id(email, con, cur) session.client_sub_id = client_id insert_address_info(address, client_id, id, con, cur) insert_contract_info(contract, client_id, con, cur) ctr_id = get_contract_id(contract_id, con, cur) keys = "client_id,contract_id,extern_id,extern_client_id,extern_contract_id" values = [ client_id, ctr_id, 'pay' + time_number(), id, contract_id ] if payment_amount: keys = keys + "," + 'payment_amount' values.append(payment_amount) if payment_mode: keys = keys + "," + 'payment_mode' values.append(payment_mode) if nb_bank_check: keys = keys + "," + 'nb_bank_check' values.append(nb_bank_check) if transaction_number: keys = keys + "," + 'transaction_number' values.append(transaction_number) if card_number: keys = keys + "," + 'card_number' values.append(card_number) if payor_last_name: keys = keys + "," + 'payor_last_name' values.append(payor_last_name) if payor_name: keys = keys + "," + 'payor_name' values.append(payor_name) values = tuple(values) if keys != 'client_id,contract_id,payment_mode': insert_client_info_payment(keys, values, con, cur) else: flash('Paiement Non Enregistré') register = True flash('Subscription Successfully Made') except (Exception, psycopg2.Error) as error: print(error) print('hello7') register = False if isinstance(error, UniqueViolation): flash('Chosen Information Already Existe') else: abort(422) finally: if con is not None: cur.close() con.close() if register == True: return redirect( url_for("client.display_client", id=id, contract_id=contract_id)) return render_template("client/souscription_client.html", now=str(datetime.datetime.now().date()))
def company_subscription(): print(request.form) if request.method == 'POST': con = None nb_inst = None try: register = False contract_id = 's' + "ctr" + time_number() + 's' id_address = 's' + 'adr' + time_number() + 's' company_name = request.form['company_name'] company_email = request.form['company_email'] client_type = request.form['client_type'] company_tel = request.form['full_number'] line1 = request.form['line1'] line2 = request.form['line2'] city = request.form['city'] postal_code = request.form['postal_code'] country = request.form['country'] state = request.form['state'] company_registration_nb = request.form['company_registration_nb'] price = request.form.get('price') contract_type = request.form.get('contract_type') start_date = request.form.get('start_date') end_date = request.form.get('end_date') id = 's' + company_name[0:3] + time_number() payment_amount = request.form.get('payment_amount') payment_mode = request.form.get('payment_mode') nb_bank_check = request.form.get('nb_bank_check') transaction_number = request.form.get('transaction_number') card_number = request.form.get('card_number') payor_last_name = request.form.get('payor_last_name') payor_name = request.form.get('payor_name') nb_inst = request.form.get('nb_inst') if country == '': country = default_country_name if request.form.get('nb_inst') != '0': nb_inst = int(request.form.get('nb_inst')) address = Address(id=id_address, line1=line1, line2=line2, city=city, postal_code=postal_code, state=state, country=country) if price == '': contract = None else: contract = Contract(id=contract_id, price=float(price), contract_type=contract_type, start_date=start_date, end_date=end_date) company = Company(id=id, company_name=company_name, company_email=company_email, company_tel=company_tel, company_registration_nb=company_registration_nb, company_type=client_type, address=address) except Exception as error: print(error) abort(400) try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() if client_type == 'Client Potentiel': insert_company_info(company, con, cur) company_id = get_company_id(company_email, con, cur) print(company_id) session.company_sub_id = company_id insert_address_info_company(address, company_id, id, con, cur) register = True contract_id = 'ClientPotentiel' else: due_date = datetime.datetime.now().date() insts = [] if nb_inst != '0': insert_company_info(company, con, cur) company_id = get_company_id(company_email, con, cur) print(company_id) session.company_sub_id = company_id insert_address_info_company(address, company_id, id, con, cur) insert_contract_info_company(contract, company_id, con, cur) ctr_id = get_contract_id(contract_id, con, cur) inst_amount = round(float(price) / nb_inst, 2) for i in range(nb_inst): inst = Instalment(amount=inst_amount, due_date=str(due_date)) due_date = due_date + datetime.timedelta(days=30) insts.append((inst, "inst" + f"{i}" + time_number())) insert_one_company_instalments(insts, company_id, ctr_id, id, contract_id, con, cur) else: insert_company_info(company, con, cur) print(company_email) company_id = get_company_id(company_email, con, cur) print(company_id) session.company_sub_id = company_id insert_address_info_company(address, company_id, id, con, cur) insert_contract_info_company(contract, company_id, con, cur) ctr_id = get_contract_id(contract_id, con, cur) keys = "company_id,contract_id,extern_id,extern_client_id,extern_contract_id" values = [ company_id, ctr_id, 'pay' + time_number(), id, contract_id ] if payment_amount: keys = keys + "," + 'payment_amount' values.append(payment_amount) if payment_mode: keys = keys + "," + 'payment_mode' values.append(payment_mode) if nb_bank_check: keys = keys + "," + 'nb_bank_check' values.append(nb_bank_check) if transaction_number: keys = keys + "," + 'transaction_number' values.append(transaction_number) if card_number: keys = keys + "," + 'card_number' values.append(card_number) if payor_last_name: keys = keys + "," + 'payor_last_name' values.append(payor_last_name) if payor_name: keys = keys + "," + 'payor_name' values.append(payor_name) values = tuple(values) if keys != 'company_id,contract_id,payment_mode': print('hello5') insert_client_info_payment(keys, values, con, cur) print('gejkjnwdkjcnwkcjnwkjnwkxjc') else: flash('Paiement Non Enregistré') register = True flash('Subscription Successfully Made') try: with current_app.app_context(): template = render_template("mail_confirmation.html") mail = Mail() msg = Message("Hello", sender="*****@*****.**", recipients=[company_email]) msg.html = template mail.send(msg) except (Exception, smtplib.SMTPResponseException) as error: print(error) abort(422) flash('confirmation non envoyé svp vérifiez votre mail') except (Exception, psycopg2.Error) as error: print(error) register = False if isinstance(error, UniqueViolation): flash('Chosen Information Already Existe') else: abort(422) finally: if con is not None: cur.close() con.close() if register == True: return redirect( url_for("client.display_company", id=id, contract_id=contract_id)) return render_template("company/souscription_company.html", now=str(datetime.datetime.now().date()))
def update_contract_(id, contract_id): try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() company_id = get_company_by_extern_id(id, con, cur) contract = show_one_contract_info_(company_id, contract_id, cur) if contract['statu'] in ['Résilié', 'Annulé']: flash(('Pas De modification Possible Contract Cloturé')) return redirect( url_for("client.display_company", id=session['client_id'], contract_id=contract_id)) except Exception as error: print(error) abort(404) if request.method == 'POST': try: update_dict = {} status = request.form['status'] if status: update_dict['status'] = status if status == 'activated': update_dict['start_date'] = str( datetime.datetime.now().date()) update_dict['end_date'] = str( datetime.datetime.now().date() + datetime.timedelta(days=365)) if status == 'rescinded': update_dict['end_date'] = str( datetime.datetime.now().date()) if update_dict == {}: flash('No Modification Is Made') return redirect( url_for("client.display_company", id=session['client_id'], contract_id=contract_id)) except Exception as error: print(error) abort(400) try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() company_id = get_company_by_extern_id(id, con, cur) update_one_contract_(update_dict, company_id, contract_id, con, cur) flash('Updated Successfully !') except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() return redirect( url_for("client.display_company", id=session['client_id'], contract_id=contract_id)) return render_template("contract/modify_contract.html", id=id, contract_id=contract_id, contract=contract)
def show_payments(id, contract_id): try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() columns, columns_names, record = show_client_payments( id, contract_id, cur) if request.method == 'POST': if request.form['submit'] == 'payer': f = request.form for key in f.keys(): if key != 'submit': update_payment( { 'status': 'Payé', 'payment_date': str( datetime.datetime.now().date()) }, id, request.form[key], con, cur) submit = request.form['submit'] if submit == 'export': columns.append('payment_sum') columns.append('total_number') file_name = f"échéance_{contract_id}" csv = to_csv(file_name, columns, record[:-3]) response = make_response(csv) response.headers[ "Content-Disposition"] = "attachment; filename=books.csv" return response if submit == 'pdf': file_name = f"pdf_{contract_id}.pdf" template = render_template("payments_table.html", search_result=record, columns=columns_names, id=id, contract_id=contract_id) main_dir = os.path.basename( os.path.dirname(os.path.dirname(__file__))) css1 = os.path.join(main_dir, "static", "css", "bootstrap.min.css") css2 = os.path.join(main_dir, "static", "css", "bootstrap.css") css = [css1, css2] pdf = pdfkit.from_string(template, False, css=css) response = make_response(pdf) response.headers['Content-type'] = 'application/pdf' response.headers[ 'Content-disposition'] = f'inline;filename={file_name}' return response except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() return render_template("payments.html", search_result=record, columns=columns_names, id=id, contract_id=contract_id)
def search_result(): search_dict_dps=request.args.get('search_dict',{}) search_dict= json.loads(request.args.get('search_dict',{})) page= int(request.args.get('page', 1)) try: con=postgres_connetion( host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur=con.cursor() count,page_result,columns_names,record=search_sinister(search_dict,page,cur) link_next="" link_previous="" max_pages=0 if not record: flash('Zero Result , Please Check Your Search Criteria !') return redirect(url_for('sinister.search_sinisters')) else: file_name=f"search_sinister_result" csv_columns = columns_names.copy() csv_columns.insert(0,'id') csv_columns.remove('Link') csv_columns.append('number_results') all_record=search_all_sinister(search_dict,cur) to_csv(file_name,csv_columns,all_record) next_page=page+1 previous=page-1 results=page_result*page if count%page_result==0: max_pages=count//page_result else: max_pages=(count//page_result)+1 if results>=count and page==1: link_next=url_for('sinister.search_result_',search_dict=search_dict_dps,page=1) elif page>1 and results>=count: link_next=url_for('sinister.search_result_',search_dict=search_dict_dps,page=page) else: link_next=url_for('sinister.search_result_',search_dict=search_dict_dps,page=next_page) if page==1: link_previous=url_for('sinister.search_result_',search_dict=search_dict_dps,page=1) else: link_previous=url_for('sinister.search_result_',search_dict=search_dict_dps,page=previous) except Exception as error: print(error) abort(422) finally : if con is not None: cur.close() con.close() return render_template( "search/search_sinisters.html",search_result=record,columns=columns_names, search_dict=search_dict_dps,link_next=link_next,link_previous=link_previous,page=page,nb=page_result,max_pages=max_pages)
def get_searching_client(): search_dict_dps = (request.args.get('search_dict', 1)) search_dict = json.loads(request.args.get('search_dict', 1)) page = int(request.args.get('page', 1)) try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() count, page_result, columns_names, record = search_client_pages( search_dict, page, cur) link_next = "" link_previous = "" max_pages = 0 if not record: redirect('client.search_client_') flash('Zero Result , Please Check Your Search Criteria !') else: file_name = f"search_result" csv_columns = columns_names.copy() csv_columns.remove('Link') csv_columns.append('contracts') csv_columns.append('number_results') record2 = search_client_pages_export(search_dict, page, cur) to_csv(file_name, csv_columns, record2) next_page = page + 1 previous = page - 1 results = page_result * page max_pages = count // page_result if count % page_result == 0: max_pages = count // page_result else: max_pages = max_pages + 1 if results >= count and page == 1: link_next = url_for('client.get_search_client_', search_dict=search_dict_dps, page=1) elif page > 1 and results >= count: link_next = url_for('client.get_search_client_', search_dict=search_dict_dps, page=page) else: link_next = url_for('client.get_search_client_', search_dict=search_dict_dps, page=next_page) if page == 1: link_previous = url_for('client.get_search_client_', search_dict=search_dict_dps, page=1) else: link_previous = url_for('client.get_search_client_', search_dict=search_dict_dps, page=previous) except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() return render_template("search/search_client.html", search_result=record, columns=columns_names, search_dict=search_dict_dps, link_next=link_next, link_previous=link_previous, page=page, nb=page_result, max_pages=max_pages, now=str(datetime.datetime.now().date()))
def add_contract_(id): if request.method == 'POST': try: price = request.form['price'] contract_type = request.form['contract_type'] start_date = request.form['start_date'] end_date = request.form['end_date'] nb_inst = int(request.form['nb_inst']) payment_amount = request.form.get('payment_amount') payment_mode = request.form.get('payment_mode') nb_bank_check = request.form.get('nb_bank_check') transaction_number = request.form.get('transaction_number') card_number = request.form.get('card_number') payor_last_name = request.form.get('payor_last_name') payor_name = request.form.get('payor_name') contract_id = "ctr" + time_number() contract = Contract(id=contract_id, price=price, contract_type=contract_type, start_date=start_date, end_date=end_date) except Exception as error: print(error) abort(400) try: con = postgres_connetion(host_postgres, db_name_postgres, db_user_postgres, db_password_postgres) cur = con.cursor() company_id = get_company_by_extern_id(id, con, cur) insert_contract_info_company(contract, company_id, con, cur) con_id = get_contract_id(contract_id, con, cur) due_date = datetime.datetime.now().date() insts = [] if nb_inst != 0: inst_amount = round(float(price) / nb_inst, 2) inst_amount_0 = float(price) - (inst_amount * nb_inst) + inst_amount inst = Instalment(amount=round(inst_amount_0, 2), due_date=str(due_date)) due_date = due_date + datetime.timedelta(days=30) insts.append((inst, "inst" + "0" + time_number())) for i in range(1, nb_inst): print(i) inst = Instalment(amount=inst_amount, due_date=str(due_date)) due_date = add_months(due_date, 1) insts.append((inst, "inst" + f"{i}" + time_number())) insert_one_company_instalments(insts, company_id, con_id, id, contract_id, con, cur) else: extern_id = 'pay' + time_number() keys = "extern_contract_id,extern_client_id,extern_id,company_id,contract_id" values = [contract_id, id, extern_id, company_id, con_id] if payment_mode: keys = keys + "," + 'payment_mode' values.append(payment_mode) if payment_amount: keys = keys + "," + 'payment_amount' values.append(payment_amount) if nb_bank_check: keys = keys + "," + 'nb_bank_check' values.append(nb_bank_check) if transaction_number: keys = keys + "," + 'transaction_number' values.append(transaction_number) if card_number: keys = keys + "," + 'card_number' values.append(card_number) if payor_last_name: keys = keys + "," + 'payor_last_name' values.append(payor_last_name) if payor_name: keys = keys + "," + 'payor_name' values.append(payor_name) values = tuple(values) if keys != 'company_id,contract_id,payment_mode': add_payment(keys, values, con, cur) update_company_info({'company_type': 'Client'}, id, con, cur) flash('Listed Successfully ') except Exception as error: print(error) abort(422) finally: if con is not None: cur.close() con.close() return redirect( url_for("client.display_company", id=id, contract_id=contract_id)) return render_template("contract/add_contract.html", id=id, now=str(datetime.datetime.now().date()))