
    &0it%                         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lmZmZ  G d d      Zy)    )AdditionalInstallationService)CarpentryService)CivilService)CommercialEquipmentService)DisplayBoardService)DisplayRackingUnitService)ElectricalCablingService)InfoTechService)PlumlingService)PreOperatingExpenseService)RentExpensesService)VisualMerchElementsService)JWTPayloadSchema)Session)remove_external_linkssafe_load_workbookc                   (    e Zd ZdedefdZdefdZy)StoreInvestmentSummaryServicedbtokenc                      || _         || _        y N)r   r   )selfr   r   s      O/var/www/html/retail-simulation-api/app/api/store_investment_summary/service.py__init__z&StoreInvestmentSummaryService.__init__   s    
    group_idc                   012K   d 2ddd}ddd}ddd}ddd}ddd}2fd}dd}dd}	t        | j                  | j                        0 |	0fdg       }
|
D ]  } |||d   |d	           t        | j                  | j                        1 |	1fd
g       }|D ]  } |||d   |d	           t	        | j                  | j                        } ||j                        g        d {   }|D ]   } |||j                  |j                         " t        | j                  | j                        } ||j                        g        d {   }|D ]   } |||j                  |j                         " t        | j                  | j                        } ||j                        g        d {   }|D ]   } |||j                  |j                         " t        | j                  | j                        } ||j                        g        d {   }|D ]   } |||j                  |j                         " t        | j                  | j                        }t!        | j                  | j                        }t#        | j                  | j                        } ||j%                        g        d {   } ||j'                        g        d {   } ||j)                        g        d {   }t+        d |D              }t+        d |D              }t+        d |D              }||z   |z   }|dkD  r|dxx   |z  cc<   |dxx   |z  cc<   t-        | j                  | j                        } ||j/                        g        d {   } | D ]   } |||j                  |j                         " t1        | j                  | j                        }! ||!j3                        g        d {   }"|"D ]   } |||j                  |j4                         " t7        | j                  | j                        }# ||#j9                        g        d {   }$|$ru|$d   }%t;        |%j<                  xs d      |d<   t;        |%j>                  xs d      |d<   t;        |%j@                  xs d      |d<   t;        |%jB                  xs d      |d<   |d   |d   z   |d   z   |d   z   |d   z   |d   |d   z   |d   z   |d   z   |d   z   d}&d}'d}(tE        |'|(      })tG        |)       |)jI                  |'       |)d   }*|jK                  dd      |*d<   |)d   }+|jK                  dd      |+d<   |)d   },|jK                  dd      |,d<   |)d   }-|jK                  dd      |-d<   |)d   }.|d   |d   z   |.d<   |)d   }/|d   |d   z   |/d<   |)jI                  |'       |)jM                          tO        d|'        |||d   |d   z   |d   |d   z   d||||&dS 7 :7 7 v7 7 r7 U7 87 7 <7 ڭw)Nc                 R    | y t        |       j                         }d|v ryd|v ry| S )NAStore Format ABStore Format B)strupper)fmtss     r   	normalizezMStoreInvestmentSummaryService.get_store_investment_summary.<locals>.normalize   s3    {C Aax'ax'Jr   r   )r!   r#   c                 T     |      }|| v r| |xx   t        |xs d      z  cc<   y y )Nr   )float)dicr&   valuer(   s      r   	add_valuezMStoreInvestmentSummaryService.get_store_investment_summary.<locals>.add_value,   s/    C.CczCE%*1-- r   c                 6   K   	 |  d {   S 7 #  |cY S xY wwr    funcdefaults     r   
safe_asynczNStoreInvestmentSummaryService.get_store_investment_summary.<locals>.safe_async1   s      !z!zs       c                 $    	  |        S #  |cY S xY wr   r/   r0   s     r   safezHStoreInvestmentSummaryService.get_store_investment_summary.<locals>.safe7   s    vs   	 c                  &     j                        S r   get_subtotal_by_store_format)civil_servicer   s   r   <lambda>zLStoreInvestmentSummaryService.get_store_investment_summary.<locals>.<lambda>C   s    ]GGQr   store_format_typesubtotalc                  &     j                        S r   r7   )display_servicer   s   r   r:   zLStoreInvestmentSummaryService.get_store_investment_summary.<locals>.<lambda>I   s    'S'ST\']r   c              3   H   K   | ]  }t        t        |d d              yw)totalr   Nr*   getattr.0xs     r   	<genexpr>zMStoreInvestmentSummaryService.get_store_investment_summary.<locals>.<genexpr>n   s     AbuWQ34b    "c              3   b   K   | ]'  }t        |d       rt        t        |dd             ) yw)r;   r@   r   N)hasattrr*   rB   rC   s     r   rF   zMStoreInvestmentSummaryService.get_store_investment_summary.<locals>.<genexpr>o   s*     hbPQSfHguWQ34bs   //c              3   H   K   | ]  }t        t        |d d              yw)cost_per_unitr   NrA   rC   s     r   rF   zMStoreInvestmentSummaryService.get_store_investment_summary.<locals>.<genexpr>p   s     IbuWQ;<brG   r!   r#   z;uploaded_files/Simulation_Test_file_clean_final_output.xlsxz+files/Simulation_Test_file_clean_final.xlsxzAssu Sum Mod AI18zAssu Sum Mod BI20I21u#   ✅ Excel updated successfully at: )capitalExpensesExcludingItitCapitalExpensestotalStoreCapitalExpensesrentalAdvancemarketingExpensespreOperatingExpensestotalStoreInvestmentsr   )(r   r   r   r   r   get_and_sum_carpentryr;   	total_sumr	   get_sum_electricalr   get_and_sum_display_boardr   get_commercial_equipmentr@   r   r   r   get_group_visual_merch_elementsget_plumbing!get_group_additional_installationsumr
   get_and_sum_info_techr   get_group_rent_expensesrental_advance_amountr   get_pre_operating_expenser*   marketing_expenses_store_amarketing_expenses_store_bpre_operating_months_store_apre_operating_months_store_br   r   savegetcloseprint)3r   r   result_capital	result_itrental_advance	marketingpre_opr-   r3   r5   civilitemdisplay_rackingcarpentry_service	carpentryelectrical_service
electricaldisplay_board_servicedisplay_board
ce_servicece_data
vm_service
pl_serviceadd_servicevmpladvm_totalpl_totalad_total
flat_total
it_serviceit_datarent_servicerentpre_servicepreptotal_store_investmentsOUTPUT_PATH
EXCEL_PATHworkbooksheet_asheet_bsheet_csheet_dsheet_esheet_fr9   r>   r(   s3    `                                              @@@r   get_store_investment_summaryz:StoreInvestmentSummaryService.get_store_investment_summary   s    	 -.C'(A>	,-C'(A>	$%;	.
		 %TWWdjj9QSUVDnd+>&?jAQR  4DGGTZZH]_ab#Dnd+>&?jAQR $ -TWWdjjA$%6%L%LX%VXZ[[	Dnd&<&<dnnM  6dggtzzJ%&8&K&KH&UWYZZ
Dnd&<&<dnnM  !4DGGTZZ H()>)X)XYa)bdfgg!Dnd&<&<dnnM " 0D
":#F#Fx#PRTUUDnd&<&<djjI  0D
$TWWdjj9
3DGGTZZHjHHRTVWWj55h?DDkKKHUWYZZAbAAhbhhIbII(83
>+,
:,+,
:,
 %TWWdjj9
":#C#CH#MrRRDi!7!7H  +477DJJ? D DX NPRSSDnd&<&<d>X>XY  1$**E{DDXNPRSSAA*/0L0L0QPQ*RI&'*/0L0L0QPQ*RI&'',Q-K-K-Pq'QF#$',Q-K-K-Pq'QF#$ /0,-. !123 ,-. )*	+ /0,-. !123 ,-. )*	+#
* TB
%k:>h'k"+,'++,<a@+,'++,<a@+,"'7;+,"'7;+,'(89IFV<WW+,'(89IFV<WWk"3K=AB +9!*"01A"BYO_E`"`"01A"BYO_E`"`* ,!*$*%<
 	
m \ [ h V XDZ  S T Ts   C-Y3X-4A$YX0A$Y=X3>A$Y"X6#B$YX9Y'X<(YX?BY$Y%A$Y	Y
A$Y.Y/F?Y0Y3Y6Y9Y<Y?YYYYN)__name__
__module____qualname__r   r   r   intr   r/   r   r   r   r      s$    7 +; y
3 y
r   r   N) *app.api.addtional_installation_fix.servicer   app.api.carpentry.servicer   app.api.civil.servicer   $app.api.commercial_equipment.servicer   app.api.display_board.servicer   &app.api.display_racking_create.servicer   "app.api.electrical_cabling.servicer	   app.api.info_tech.servicer
   app.api.plumbing.servicer   &app.api.pre_operating_expenses.servicer   app.api.rent_expenses.servicer   -app.api.visual_merchandising_elements.servicer   app.dependency.authanticationr   sqlalchemy.ormr   app.utils.common_utilsr   r   r   r/   r   r   <module>r      s>    T 6 . K = L G 5 4 M = T : " L~
 ~
r   