Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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))
Exemplo n.º 4
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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")
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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")
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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')
Exemplo n.º 12
0
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)
Exemplo n.º 13
0
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)
Exemplo n.º 14
0
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)
Exemplo n.º 15
0
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)
Exemplo n.º 16
0
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)
Exemplo n.º 17
0
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)
Exemplo n.º 18
0
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()))
Exemplo n.º 19
0
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()))
Exemplo n.º 20
0
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)
Exemplo n.º 21
0
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)
Exemplo n.º 22
0
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)
Exemplo n.º 23
0
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()))
Exemplo n.º 24
0
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()))