
    G	/iYj                        d dl mZ d dlmZ d dlmZ d dlmZ d dlZd dlm	Z	 d dl
mZmZmZmZmZmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK  G d d      ZLy)    )HTTPException)datetime)Session)BytesION)A4)SimpleDocTemplate	ParagraphSpacerTable
TableStyleImage)getSampleStyleSheetParagraphStyle)inch)colors)JWTPayloadSchema)TblGroup)TblBrand)
TblSegment)TblStoreFormat)TblCivil)TblDisplayRackingUnit)TblCarpentry)TblElectricalCabling)TblDisplayBoard)TblCommercialEquipment)TblInfoTech)TblVisualMerchElements)TblPlumbing)TblAdditionalInstallation)TblDepreciation)
TblSummarySummaryBase)BrandSegmentStoreFormatCivilDisplayRackingUnit	CarpentryElectricalCablingDisplayBoardCommercialEquipmentInfoTechVisualMerchandisingElementsPlumbingAdditionalInstallationsDepreciationCapitalExpensesSummaryModule1ReportPreviewc                   \    e Zd ZdedefdZdedefdZdede	fdZ
dede	fd	Zded
e	fdZy)Module1ReportServicedbtokenc                      || _         || _        y )N)r6   r7   )selfr6   r7   s      ?/var/www/html/retail-simulation-api/app/api/module_1/service.py__init__zModule1ReportService.__init__3   s    
    group_idreturnc                    | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd| d      | j                   j                  t              j                  |      j                         }| j                   j                  t              j                  |      j                         }| j                   j                  t              j                  |      j                         }| j                   j                  t              j                  |      j                         }| j                   j                  t              j                  |      j                         }| j                   j                  t              j                  |      j                         }| j                   j                  t              j                  |      j                         }	| j                   j                  t               j                  |      j                         }
| j                   j                  t"              j                  |      j                         }| j                   j                  t$              j                  |      j                         }| j                   j                  t&              j                  |      j                         }| j                   j                  t(              j                  |      j                         }| j                   j                  t*              j                  |      j                         }| j                   j                  t,              j                  t,        j                  |k(        j                         }	 t/        d| d|d u        |rt/        d|j0                   d	|j2                          t5        |j6                  |j                  |j0                  |j2                  |j8                  
      }t/        d|j:                   d	|j2                          nt5        |      }t/        d       d&d} ||d       ||d      z    ||d      z    ||	d      z    ||
d      z    ||d      z    ||dd      z    ||dd      z    ||dd      z   } ||d      }||z   } ||d       ||d      z    ||d      z    ||	d      z    ||
d      z    ||d      z    ||dd      z    ||dd      z    ||dd      z   } ||d      }||z   }t=        ||xs d|xs d|xs d|xs d|xs d|xs ddd	      }t?        d'i d|d|rtA        jB                  |      n	tA               d|xs g D cg c]  }tE        jB                  |       c}d|xs g D cg c]  }tG        jB                  |       c}d|xs g D cg c]  }tI        jB                  |       c}d|xs g D cg c]  }tK        jB                  |       c}d|xs g D cg c]  }tM        jB                  |       c}d|	xs g D cg c]  }tO        jB                  |       c}d|
xs g D cg c]  }tQ        jB                  |       c}d|xs g D  cg c]  } tS        jB                  |        c} d|xs g D !cg c]  }!tU        jB                  |!       c}!d |xs g D "cg c]  }"tW        jB                  |"       c}"d!|xs g D #cg c]  }#tY        jB                  |#       c}#d"|xs g D $cg c]  }$t[        jB                  |$       c}$d#|d$|d%t]        j^                         }%|%S c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c} w c c}!w c c}"w c c}#w c c}$w )(Ni  z	Group ID z not found in database)status_codedetail)r=   zDEBUG: Group z depreciation_data exists: zDEBUG: Raw data - years: z
, method: )depreciation_idr=   	slm_yearsdepreciation_methodslm_remarkszDEBUG: Created obj - years: z$DEBUG: No data found, using defaultsc                 8    t        fd| xs g D              S )Nc           	   3   p   K   | ]-  }t        t        |d d            v rt        |d      xs d / yw)store_format_type r   N)strgetattr).0itemattr
fmt_letters     r:   	<genexpr>zSModule1ReportService._fetch_module1_data.<locals>.sum_for_format.<locals>.<genexpr>o   sA      ,DWT3F%K!LL tQ',1,,s   36)sum)	data_listrO   rN   s    ``r:   sum_for_formatz@Module1ReportService._fetch_module1_data.<locals>.sum_for_formatn   s#     &_"_  r<   A
total_costBg        zAuto-generated dynamicallyz0CAPEX summary generated based on available data.)	r=   store_format_a_capital_excl_itstore_format_a_it_capitalstore_format_a_totalstore_format_b_capital_excl_itstore_format_b_it_capitalstore_format_b_totaladditional_remarkskey_takeawaysr=   brandsegmentsstore_formatscivildisplay_racking_units	carpentryelectrical_cablingdisplay_boardscommercial_equipmentinfotechvisual_merchandisingplumbingadditional_installationsdepreciationcapital_expenses_summarylast_updated)total )0r6   queryr   filterr=   firstr   r   	filter_byr   allr   r   r   r   r   r   r   r   r   r   r    r!   printdepreciation_yearsrD   r1   rB   remarkrC   r2   r3   r$   from_ormr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r   now)&r9   r=   group
brand_datasegment_datastore_format_data
civil_datadisplay_racking_datacarpentry_dataelectrical_cabling_datadisplayboard_datacommercial_equipment_datainfotech_datavisual_merch_dataplumbing_dataadditional_installation_datadepreciation_datadepreciation_objrS   format_a_excl_itformat_a_itformat_a_totalformat_b_excl_itformat_b_itformat_b_totalrm   ssfcdrecr6   ceitvmpaireport_datas&                                         r:   _fetch_module1_dataz(Module1ReportService._fetch_module1_data7   s   h'..x/@/@H/LMSSUC)H:Mc8dee WW]]8,666IOOQ
ww}}Z0::H:MQQS GGMM.9CCXCVZZ\WW]]8,666IMMO
#ww}}-BCMMW_M`ddf|4>>>QUUW"&''--0D"E"O"OYa"O"b"f"f"h GGMM/:DDhDW[[]$(GGMM2H$I$S$S]e$S$f$j$j$l!k2<<h<OSSU GGMM*@AKKU]K^bbdk2<<h<OSSU'+ww}}5N'O'Y'Yck'Y'l'p'p'r$ GGMM/:AA$$0

%' 	
	D 	hZ'BCT\`C`Babc-.?.R.R-SS]^o  _D  _D  ^E  F  G+ 1 A A*33+>>$5$I$I-44  01A1K1K0LJWgW{W{V|}~+X>8:	 :s+1378^S12 4c:; .4	5
 6<= .\BC ]C>? 93MN 	 %]C8)K7 :s+1378^S12 4c:; .4	5
 6<= .\BC ]C>? 93MN 	 %]C8)K7#9+;+Bs&1&8S!/!63+;+Bs&1&8S!/!63;L
$
  + 

0:%..,
 5A4FB4FH4Fag&&q)4FH
 @Q?VTV?VX?V;//3?VX	

 0:/?R/?A/?5>>!$/?A
 OcNhfhNh"jNhr#5#>#>r#BNh"j
 8F7K7KM7Ky))!,7KM
 KbJgegJgiJg2 1 : :2 >Jgi
 BSAXVXAXZAX"L11"5AXZ
 OhNmkmNm!oNmr"5">">r"BNm!o
 8E7J7JL7Jh''+7JL
 WhVmkmVm!oVmr"="F"Fr"JVm!o
 6C5Hb5HJ5Hqh''*5HJ
 WsVxvxVx%zVxr&=&F&Fr&JVx%z
 *
  &>!
" "#
( # IXA"jMiZ!oL!oJ%zsH   :^0"^5
^:2^?__	*__:_"_
_"2_'datac                 $   t               }t        |t        dddd      }t               }g }	 t	        ddd      }d|_        |j                  |       |j                  t        dd	             t        d
|d   dddd      }|j                  t        d|             |j                  t        dd             t        d|d   ddd	d      }|j                  t        d|             ddgd|j                  j                  gd|j                  j                  gd|j                  j                  gg}	t        |	      }
|
j                  t!        ddddd d!d"t"        j$                  fd#d$g             |j                  |
       |j                  t        dd	             |j                  t        d%|             |j&                  D ]  }d&|j(                  gd'|j*                  gd(|j,                  gd)|j.                  gd*|j0                  gd+t3        |j4                        gd,t3        |j6                        gd-|j8                  gg}t        |      }|j                  t!        dd.ddd d!d"t"        j$                  fd#d$g             |j                  |       |j                  t        dd/              |j                  t        d0|             |j:                  D ]  }d1|j<                  gd2|j>                  gd3t3        |j@                        gd4|jB                  gd'|j*                  gd5|jD                  gd6|jF                  gd7|jH                  gd8|jJ                  gd9|jL                  gg
}t        |      }|j                  t!        dd.ddd d!d"t"        j$                  fd#d$g             |j                  |       |j                  t        dd/              |jN                  r|j                  t        d:|             g d;}|g}|jN                  D ]p  }|j                  |jL                  |jP                  t3        |jR                        t3        |jT                        t3        |jV                        |jX                  g       r t        |      }|j                  t!        ddd<dd d!d"t"        j$                  fd#d$g             |j                  |       |j                  t        dd	             |jZ                  r|j                  t        d=|             g d>}|g}|jZ                  D ]p  }|j                  |jL                  |j\                  t3        |j^                        t3        |j`                        t3        |jV                        |jX                  g       r t        |      }|j                  t!        ddd<dd d!d"t"        j$                  fd#d$g             |j                  |       |j                  t        dd	             |jb                  r|j                  t        d?|             g d@}|g}|jb                  D ]p  }|j                  |jL                  |jd                  t3        |jf                        t3        |j`                        t3        |jV                        |jX                  g       r t        |      }|j                  t!        ddddd d!d"t"        j$                  fd#d$dAdBdCdDg
             |j                  |       |j                  t        dd	             |jh                  r|j                  t        dE|             g dF}|g}|jh                  D ]g  }|j                  |jL                  |jj                  |jl                  t3        |jn                        t3        |jV                        |jX                  g       i t        |      } | j                  t!        ddddd d!d"t"        j$                  fd#d$dAdBdCdDg
             |j                  |        |j                  t        dd	             |jp                  r.|j                  t        dG|             g dH}!|!g}"|jp                  D ]  }#|"j                  |#jL                  |#jd                  t3        |#jr                        |#jt                  t3        |#jv                        t3        |#jf                        t3        |#jV                        |#jX                  g        t        |"      }$|$j                  t!        ddddd d!d"t"        j$                  fd#d$dAdBdCdDg
             |j                  |$       |j                  t        dd	             |jx                  r|j                  t        dI|             g dJ}%|%g}&|jx                  D ]{  }'|&j                  |'jL                  |'jz                  t3        |'jf                        t3        |'j`                        |'j|                  t3        |'jV                        |'jX                  g       } t        |&      }(|(j                  t!        dddKdd d!d"t"        j$                  fd#d$g             |j                  |(       |j                  t        dd	             |j~                  r|j                  t        dL|             g dM})|)g}*|j~                  D ]  }+|*j                  |+jL                  |+jd                  |+j                  t3        |+jf                        t3        |+j`                        t3        |+jV                        t3        |+j                        g        t        |*      },|,j                  t!        dddKdd d!d"t"        j$                  fd#d$g             |j                  |,       |j                  t        dd	             |j                  r|j                  t        dN|             g dO}-|-g}.|j                  D ]  }/|.j                  |/jd                  t3        |/jf                        t3        |/j                        t3        |/jV                        |/j                  |/j                  t3        |/j                        g        t        |.      }0|0j                  t!        dddKdd d!d"t"        j$                  fd#d$g             |j                  |0       |j                  t        dd	             |j                  r |j                  t        dP|             g dQ}1|1g}2|j                  D ]e  }3|2j                  |3jd                  t3        |3jf                        t3        |3j`                        t3        |3jV                        |3jX                  g       g t        |2      }4|4j                  t!        ddd<dd d!d"t"        j$                  fd#d$g             |j                  |4       |j                  t        dd	             |j                  r|j                  t        dR|             g dS}5|5g}6|j                  D ]\  }7|6j                  |7j                  |7j                  t3        |7j`                        t3        |7j                        |7jX                  g       ^ t        |6      }8|8j                  t!        ddd<dd d!d"t"        j$                  fd#d$g             |j                  |8       |j                  t        dd	             |j                  t        dT|             ddgdUdV|j                  j                  dWgdXdV|j                  j                  dWgdYdV|j                  j                  dWgdZdV|j                  j                  dWgd[dV|j                  j                  dWgd\dV|j                  j                  dWgd]|j                  j                  gd^|j                  j                  gg	}9t        |9      }:|:j                  t!        dd.ddd d!d"t"        j$                  fd#d$g             |j                  |:       |j                  r|j                  t        dd	             |j                  t        d_|             ddgd`t3        |j                  j                        gda|j                  j                  gdb|j                  j                  gdc|j                  j                  gg};t        |;      }<|<j                  t!        dd.ddd d!d"t"        j$                  fd#d$g             |j                  |<       |j                  t        dd	             |j                  t        dd|j                  j                  de       |df                |j                  |       |j                  dg       t        j                         j                  dh      }=di|j                   dj|= dk}>dl|> }?t        j                  t        j                  j                  |?      dmn       t        |?do      5 }@|@j                  |j                                dpdpdp       |?S #  Y xY w# 1 sw Y   |?S xY w)qz=Generate comprehensive PDF report with all JSON response data   )pagesize
leftMarginrightMargin	topMarginbottomMarginzTS Logo.png   K   )widthheightLEFT   
   CustomTitleHeading1      Helvetica-Bold)parentfontSize
spaceAfter	alignmentfontNamezModule 1: Complete Report DataSectionHeaderHeading2      )r   r   r   spaceBeforer   zBrand InformationFieldValuez
Brand NamezBrand Image	Rationale)ALIGNr   r   r   r   )FONTNAMEr   )r   r   r   )FONTSIZEr   r      GRIDr   r   g      ?)VALIGNr   r   TOP)WORDWRAPr   r   TSegmentszSegment NameLocationzChief Wage Earner OccupationzMale EducationzFemale Educationz
ISEC ValuezTotal PopulationzAdditional Details)r   r   )r   r   r   r   zStore Formatsz
Store NamezStore Name Rationalez
Store SizeMerchandisezAdditional Location ParameterszService ParameterszTechnology AdoptionzOther ParametersStore Format Typez
Civil Work)r   zType of Civil WorkzRate Per Sqftz
Total SqftTotalRemarks)r   r   r      zDisplay Racking Units)r   zType Display Racking UnitzNumber of UnitsCost Per Unitr   r   r)   )r   TypeUnitsr   r   r   )LEFTPADDINGr   r      )RIGHTPADDINGr   r   r   )
TOPPADDINGr   r   r   )BOTTOMPADDINGr   r   r   zElectrical Cabling)r   FeatureDetailszRate Per Sqft/Unitr   r   zDisplay Boards)r   r   SizezPricing Typez	Cost Rater   r   r   zCommercial Equipment)r   zType of Equipmentr   r   zEquipment Typer   r   )r   r   r   r   r-   )r   r   Categoryr   r   r   zAvailable CapitalzVisual Merchandising)r   r   Costr   zInternal DisplayzExternal DisplayzFrequency Change/Yearr/   )r   r   r   r   r   zAdditional Installations)NameDescriptionr   z
Total Costr   zCapital Expenses SummaryzStore Format A Capital Excl ITzRs. z,.2fzStore Format A IT CapitalzStore Format A TotalzStore Format B Capital Excl ITzStore Format B IT CapitalzStore Format B TotalzAdditional RemarkszKey TakeawayszDepreciation Informationz	SLM YearszSLM RemarkszOther MethodszDepreciation MethodzLast Updated: z%Y-%m-%d %H:%M:%SNormalr   z%Y%m%d_%H%M%Smodule1_complete_report_group__z.pdfzuploaded_files/T)exist_okwbN)hr   r   r   r   r   hAlignappendr
   r   r	   r_   
brand_namebrand_image	rationaler   setStyler   r   blackr`   segment_namelocationchief_wage_earner_occupationmale_educationfemale_educationrJ   
isec_valuetotal_populationadditional_detailsra   
store_namestore_name_rationale
store_sizemerchandiseadditional_location_parametersservice_parameterstechnology_adoptionother_parametersrH   rb   type_of_civil_workrate_per_sqft
total_sqftro   remarksrc   type_display_racking_unitnumber_of_unitscost_per_unitrd   typeunitsre   featuredetailsrate_per_sqft_or_unitrf   sizepricing_type	cost_raterg   type_of_equipmentequipment_typerh   categoryavailable_capitalri   costinternal_displayexternal_displayfrequency_change_per_yearrj   rk   namedescriptionrU   rm   rW   rX   rY   rZ   r[   r\   r]   r^   rl   rC   rE   other_methodsrD   rn   strftimebuildseekr   rz   r=   osmakedirspathdirnameopenwritegetvalue)Ar9   r   bufferdocstylesstorylogotitle_stylesection_styler|   brand_tablesegmentseg_data	seg_tablestore
store_datastore_tablecivil_headers
civil_rowsrb   civil_tablerack_headers	rack_rowsrack
rack_tablecarp_headers	carp_rowscarp
carp_tableelec_headers	elec_rowselec
elec_tabledisp_headers	disp_rowsdisp
disp_tablecomm_headers	comm_rowscomm
comm_table
it_headersit_rowsr   it_table
vm_headersvm_rowsr   vm_tableplumb_headers
plumb_rowsplumbplumb_tableadd_headersadd_rowsadd	add_table
capex_datacapex_tabledep_data	dep_table	timestampfilenamefilepathfsA                                                                    r:   _generate_pdf_reportz)Module1ReportService._generate_pdf_report   s   PR^`oqr$&	c"=D DKLLLL2'
 %]6*;MXZgiuv  BR  SY?MNVAr]#&vj?Q\^klz|  HX  Y 	Y2MBC(<9N9N*OR_aeakakawawQx  |G  IM  IS  IS  I]  I]  {^  _
J'Z)LN}  @a  dj  lr  t|  ~A  CI  CO  CO  cP  Ru  w[  )\  ]  	^[!VAr]# 	Yz=9:}}G')=)=>WM]M]@^a  BI  Bf  Bf  ag  jz  |C  |R  |R  iS  Vh  jq  jB  jB  UC  FR  TW  X_  Xj  Xj  Tk  El  oA  CF  GN  G_  G_  C`  na  dx  zA  zT  zT  cU  VHhIz+NP  Bc  fl  nt  v~  @C  EK  EQ  EQ  eR  Tw  y]  +^   _  `LL#LL1& % 	Y>?''E')9)9:=SUZUoUo<ps  BE  FK  FV  FV  BW  sX  [h  jo  j{  j{  Z|  I  KP  KY  KY  ~Z  ]}  D  c  c  \d  g{  }B  }U  }U  fV  Yn  pu  pI  pI  XJ  M_  af  aw  aw  Lx  {N  PU  Pg  Pg  zh  iJ
+K  -P  SB  De  hn  pv  x@  BE  GM  GS  GS  gT  Vy  {_  -`  "a  bLL%LL1& ( ::LL<?@zM'J!!5#:#:E<T<TVYZ_ZmZmVnpsty  uE  uE  qF  HK  LQ  LW  LW  HX  Z_  Zg  Zg  #h  i $
+K  -P  SB  De  hn  pv  x@  BE  GM  GS  GS  gT  Vy  {_  -`  "a  bLL%LL2' %%LL#:MJK FL%I22  $"8"8$:X:XZ]^b^r^rZsuxy}  zL  zL  vM  OR  SW  S]  S]  O^  `d  `l  `l  "m  n 3y)J
,O  RA  Cd  gm  ou  w  AD  FL  FR  FR  fS  Ux  z^  ,_  !`  aLL$LL2' >>LL;>?fL%I  $"8"8$))S_VYZ^ZlZlVmorsws}s}o~  AE  AM  AM  "N  O 'y)J
3?13=344536, !  LL$LL2' ""LL#7GHpL%I//  $"8"8$,,VYZ^ZtZtVuwz{  |F  |F  xG  IM  IU  IU  "V  W 0y)J
3?13=344536, !  LL$LL2' LL#3]CDzL%I++  $"8"8$))S^UYUfUfhklplzlzh{  ~A  BF  BL  BL  ~M  OR  SW  S]  S]  O^  `d  `l  `l  "m  n ,y)J
3?13=344536, !  LL$LL2' $$LL#9=IJ FL%I11  $"8"8$:P:PRUVZV`V`Racfgkgygycz  }A  }P  }P  RU  VZ  V`  V`  Ra  cg  co  co  "p  q 2y)J
,O  RA  Cd  gm  ou  w  AD  FL  FR  FR  fS  Ux  z^  ,_  !`  aLL$LL2' ==LL:}=>zJ!lGmm 4 4bggr{{CPRPXPXM[^_a_o_o[pruvxv~v~r  BE  FH  FZ  FZ  B[   \  ] $W~Hj*MO~  Ab  ek  ms  u}  B  DJ  DP  DP  dQ  Sv  x\  *]  ^  _LL"LL2' $$LL#9=IJ|J!lG//RXXBGGc"((mUWUhUhjlj}j}  @C  DF  D`  D`  @a   b  c 0W~Hj*MO~  Ab  ek  ms  u}  B  DJ  DP  DP  dQ  Sv  x\  *]  ^  _LL"LL2' ==LL:}=>RM'J!!5::s5;;/?UEXEXAY[^_d_j_j[kmrmzmz"{| '
+K  -P  SB  De  hn  pv  x@  BE  GM  GS  GS  gT  Vy  {_  -`  "a  bLL%LL2' ((LL#=}MN[K#}H443??C@Q@Q<RTWX[XfXfTgilitit uv 5hIz+NP  Bc  fl  nt  v~  @C  EK  EQ  EQ  eR  Tw  y]  +^   _  `LL#LL2' 	Y9=IJ(+KtTXTqTq  UQ  UQ  RV  TW  NX  +Y  \w  {  @D  @]  @]  @w  @w  x|  }  y~  [  BX  \`  ae  a~  a~  aS  aS  TX  `Y  ZZ  A[  ^~  BF  GK  Gd  Gd  GC  GC  DH  FI  @J  ]K  Ni  mq  rv  rO  rO  ri  ri  jn  qo  kp  Mq  tJ	  N	R	  S	W	  S	p	  S	p	  S	E
  S	E
  F
J
  R	K
  L	L
  sM
  P
d
  f
j
  f
C  f
C  f
V  f
V  O
W  Zi  ko  kH  kH  kV  kV  YW  X
J'Z)LN}  @a  dj  lr  t|  ~A  CI  CO  CO  cP  Ru  w[  )\  ]  	^[! LL2'LL#=}MN '*[#d>O>O>Y>Y:Z,[^kmqm~m~  nK  nK  ^L  O^  `d  `q  `q  `  `  N@  CX  Z^  Zk  Zk  Z  Z  B@  AHhIz+NP  Bc  fl  nt  v~  @C  EK  EQ  EQ  eR  Tw  y]  +^   _  `LL# 	VAr]#Y0A0A0J0JK^0_/`acijrcstu		%A LLN++O<	3DMM?!I;dS$XJ/
BGGOOH-=(D!QGGFOO%& " {	r " s   AAI H! AIIAIIAIc                 n    | j                  |      }| j                  |      }| j                  ||       |S )z3Generate PDF and save to database, return file path)r   rZ  _save_file_path_to_db)r9   r=   r   	file_paths       r:   generate_and_save_pdfz*Module1ReportService.generate_and_save_pdf  s8    ..x8--k:	""8Y7r<   r]  c                    	 d| d}t        d|        | j                  j                  t              j	                  t        j
                  |k(        j                         }|rSt        d       ||_        | j                  j                          | j                  j                  |       t        d       yt        d       t        |||      }| j                  j                  |       | j                  j                          | j                  j                  |       t        d|j                          y# t        $ rF}| j                  j                          t        d	|        d
dl}|j                          Y d}~yd}~ww xY w)z;Save or update file path in summary table with group_id_modg_m1z6DEBUG: Looking for existing record with group_id_mod: z5DEBUG: Found existing record, updating uploaded_filesz"DEBUG: Updated record successfullyz1DEBUG: No existing record found, creating new one)r=   group_id_moduploaded_filesz+DEBUG: Created new record with summary_id: z$ERROR saving file path to database: r   N)rv   r6   rq   r"   rr   rb  rs   rc  commitrefreshrP  
summary_id	Exceptionrollback	traceback	print_exc)r9   r=   r]  rb  existing_summarynew_summaryeri  s           r:   r\  z*Module1ReportService._save_file_path_to_db  s:   	"xj,LJ<.YZ#ww}}Z8??
@W@W[g@ghnnpMO2; /  01:<IK(%!-#,
 K( ,CKDZDZC[\] 	"GG8<=!!		"s   B5D: 8BD: :	F	<FF	N)__name__
__module____qualname__r   r   r;   intr3   r   rJ   rZ  r^  r\  rp   r<   r:   r5   r5   2   sl    7 +; zC z4H zxj)= j# jXc c "c "c "r<   r5   )Mfastapir   r   sqlalchemy.ormr   ior   r  reportlab.lib.pagesizesr   reportlab.platypusr   r	   r
   r   r   r   reportlab.lib.stylesr   r   reportlab.lib.unitsr   reportlab.libr   app.dependency.authanticationr   app.models.main.groupr   app.models.main.brandr   app.models.main.segmentr   app.models.main.store_formater   app.models.main.civilr   $app.models.main.display_racking_unitr   app.models.main.carpentryr   "app.models.main.electrical_cablingr   app.models.main.display_boardr   $app.models.main.commercial_equipmentr   app.models.main.info_techr   -app.models.main.visual_merchendising_elementsr   app.models.main.Plumbingr   ,app.models.main.additional_installations_fixr    app.models.main.depreciationr!   app.models.main.summaryr"   r#   app.api.module_1.schemar$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r5   rp   r<   r:   <module>r     s~    !  "  	 & ] ] D $   : * * . 8 * F 2 C 9 G 1 P 0 R 8 ;    (P" P"r<   