klydekushy commited on
Commit
81a6bde
·
verified ·
1 Parent(s): d06b542

Update src/modules/loans_engine.py

Browse files
Files changed (1) hide show
  1. src/modules/loans_engine.py +69 -14
src/modules/loans_engine.py CHANGED
@@ -696,7 +696,6 @@ def show_loans_engine(client, sheet_name):
696
 
697
  # Calcul de l'ID sous forme PRT-2026-xxxx
698
  current_year = datetime.now().year
699
- # len(ws_prets.get_all_values()) compte les lignes existantes pour l'incrémentation
700
  new_id = f"PRT-{current_year}-{len(ws_prets.get_all_values()):04d}"
701
 
702
  # ORDRE STRICT DEMANDÉ POUR Prets_Master
@@ -715,7 +714,7 @@ def show_loans_engine(client, sheet_name):
715
  nb_versements, # Nb_Versements
716
  ";".join([d.strftime("%d/%m/%Y") for d in dates_versements]) if dates_versements else "", # Dates_Versements
717
  date_debut.strftime("%d/%m/%Y"), # Date_Deblocage
718
- date_fin.strftime("%d/%m/%Y"), # Date_Fin (Maintenant garantie)
719
  moyen_transfert, # Moyen_Transfert
720
  "ACTIF", # Statut
721
  garant_id, # ID_Garant
@@ -723,10 +722,11 @@ def show_loans_engine(client, sheet_name):
723
  ]
724
  ws_prets.append_row(row_data)
725
  time.sleep(1)
726
- st.success(f"Prêt {new_id} enregistré !")
727
-
728
- # 7b. GÉNÉRATION PDF (USINE A DOCS)
729
- loan_data_dict = {
 
730
  "ID_Pret": new_id,
731
  "Montant_Capital": montant,
732
  "Montant_Total": montant_total,
@@ -734,19 +734,74 @@ def show_loans_engine(client, sheet_name):
734
  "Duree_Semaines": duree_semaines,
735
  "Motif": motif,
736
  "Date_Deblocage": date_debut.strftime("%d/%m/%Y"),
737
- "Date_Fin": date_fin.strftime("%d/%m/%Y") # Ajout ici
738
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
739
 
740
  # PDF 1 : CONTRAT
741
- pdf_contrat = generer_contrat_pret(loan_data_dict, client_info, df_amort)
742
- st.download_button("Contrat de Prêt", pdf_contrat, f"Contrat_{new_id}.pdf", "application/pdf")
 
 
 
 
 
 
 
743
 
744
  # PDF 2 : RECONNAISSANCE
745
- pdf_dette = generer_reconnaissance_dette(loan_data_dict, client_info)
746
- st.download_button("Reconnaissance de Dette", pdf_dette, f"Dette_{new_id}.pdf", "application/pdf")
 
 
 
 
 
 
 
747
 
748
  # PDF 3 : CAUTION (SI GARANT)
749
- if selected_garant is not None:
750
- pdf_caution = generer_contrat_caution(loan_data_dict, selected_garant)
751
- st.download_button("Contrat de Caution", pdf_caution, f"Caution_{new_id}.pdf", "application/pdf")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
752
  st.markdown('</div>', unsafe_allow_html=True)
 
696
 
697
  # Calcul de l'ID sous forme PRT-2026-xxxx
698
  current_year = datetime.now().year
 
699
  new_id = f"PRT-{current_year}-{len(ws_prets.get_all_values()):04d}"
700
 
701
  # ORDRE STRICT DEMANDÉ POUR Prets_Master
 
714
  nb_versements, # Nb_Versements
715
  ";".join([d.strftime("%d/%m/%Y") for d in dates_versements]) if dates_versements else "", # Dates_Versements
716
  date_debut.strftime("%d/%m/%Y"), # Date_Deblocage
717
+ date_fin.strftime("%d/%m/%Y"), # Date_Fin (Maintenant garantie)
718
  moyen_transfert, # Moyen_Transfert
719
  "ACTIF", # Statut
720
  garant_id, # ID_Garant
 
722
  ]
723
  ws_prets.append_row(row_data)
724
  time.sleep(1)
725
+
726
+ # ✅ SAUVEGARDE DANS SESSION STATE POUR PERSISTANCE
727
+ st.session_state.loan_validated = True
728
+ st.session_state.loan_id = new_id
729
+ st.session_state.loan_data = {
730
  "ID_Pret": new_id,
731
  "Montant_Capital": montant,
732
  "Montant_Total": montant_total,
 
734
  "Duree_Semaines": duree_semaines,
735
  "Motif": motif,
736
  "Date_Deblocage": date_debut.strftime("%d/%m/%Y"),
737
+ "Date_Fin": date_fin.strftime("%d/%m/%Y")
738
  }
739
+ st.session_state.client_data = client_info.to_dict()
740
+ st.session_state.garant_data = selected_garant.to_dict() if selected_garant is not None else None
741
+ st.session_state.df_amort = df_amort.copy()
742
+
743
+ st.success(f" Le Prêt {new_id} enregistré avec succès !")
744
+ st.rerun() # Force le rechargement pour afficher les boutons
745
+
746
+ # ✅ AFFICHAGE BOUTONS EN DEHORS DU FORMULAIRE (persistants)
747
+ if st.session_state.get('loan_validated', False):
748
+ st.markdown("---")
749
+ st.markdown(f"### Documents du prêt **{st.session_state.loan_id}**")
750
+
751
+ # Génération des PDFs (une seule fois, conservés en mémoire)
752
+ loan_data = st.session_state.loan_data
753
+ client_data = st.session_state.client_data
754
+ garant_data = st.session_state.garant_data
755
+ df_amort_saved = st.session_state.df_amort
756
+
757
+ # Affichage des boutons en colonnes
758
+ col_pdf1, col_pdf2, col_pdf3, col_reset = st.columns(4)
759
 
760
  # PDF 1 : CONTRAT
761
+ with col_pdf1:
762
+ pdf_contrat = generer_contrat_pret(loan_data, client_data, df_amort_saved)
763
+ st.download_button(
764
+ "Contrat de Prêt",
765
+ pdf_contrat,
766
+ f"Contrat_{st.session_state.loan_id}.pdf",
767
+ "application/pdf",
768
+ use_container_width=True
769
+ )
770
 
771
  # PDF 2 : RECONNAISSANCE
772
+ with col_pdf2:
773
+ pdf_dette = generer_reconnaissance_dette(loan_data, client_data)
774
+ st.download_button(
775
+ "Reconnaissance de Dette",
776
+ pdf_dette,
777
+ f"Dette_{st.session_state.loan_id}.pdf",
778
+ "application/pdf",
779
+ use_container_width=True
780
+ )
781
 
782
  # PDF 3 : CAUTION (SI GARANT)
783
+ with col_pdf3:
784
+ if garant_data is not None:
785
+ pdf_caution = generer_contrat_caution(loan_data, garant_data)
786
+ st.download_button(
787
+ "Contrat de Caution",
788
+ pdf_caution,
789
+ f"Caution_{st.session_state.loan_id}.pdf",
790
+ "application/pdf",
791
+ use_container_width=True
792
+ )
793
+ else:
794
+ st.info("Pas de garant")
795
+
796
+ # Bouton pour réinitialiser et créer un nouveau prêt
797
+ with col_reset:
798
+ if st.button("Nouveau Prêt", use_container_width=True, type="primary"):
799
+ # Nettoyage du session state
800
+ st.session_state.loan_validated = False
801
+ st.session_state.pop('loan_id', None)
802
+ st.session_state.pop('loan_data', None)
803
+ st.session_state.pop('client_data', None)
804
+ st.session_state.pop('garant_data', None)
805
+ st.session_state.pop('df_amort', None)
806
+ st.rerun()
807
  st.markdown('</div>', unsafe_allow_html=True)