
    .i &                         d dl 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 d dlmZmZ d dlmZ  G d d      Zy)    N)List)HTTPException)load_workbook)func)Session)schema)JWTPayloadSchema)Messages)SalesEstimateBaseTblSalesEstimate)remove_external_linkssafe_load_workbook)CustomResponsec                       e Zd ZdedefdZdeej                     fdZ	de
fdZdd
Zde
dd	fdZdeej                     fdZde
fdZy)SalesEstimateServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      E/var/www/html/retail-simulation-api/app/api/sales_estimate/service.py__init__zSalesEstimateService.__init__   s    
    requestc                 n  K   d}d}t        ||      }t        |       |j                  |       ddddd}dd	d
}|D ]  }t        j                  |j                               }t        j                  || j                         | j                  j                          |j                         D ]G  \  }	}
|j                  |	k(  s||
   }|j                  |j                        }|s9|j                  ||<   I  |j                  |       |j                          t!        dt"        j$                        S w)N;uploaded_files/Simulation_Test_file_clean_final_output.xlsx+files/Simulation_Test_file_clean_final.xlsxI7I8I9I10Number of Bills per MonthNumber of Items per Bill"Average Price per item (in Rupees)zGross Margin % EstimateAssu Sum Mod AAssu Sum Mod BzStore Format AzStore Format B1statusmessage)r   r   saver   model_validate
model_dumpr   create_sales_estimater   commititemsstore_formate_typeget	parametervaluecloser   r
   SALES_ESTIMATE)r   r   OUTPUT_PATH
EXCEL_PATHworkbookparam_to_cellformat_to_sheetreqcreated_sales_estimateformat_type
sheet_namesheetcells                r   r/   z*SalesEstimateService.create_sales_estimate   s    SB
%k:>h'k" *.(,26',	
 /.
 C%6%E%EcnnFV%W"223I477SGGNN ,;+@+@+B'Z))[8$Z0E(,,S]];D&<&B&Bd ,C  	k"S(2I2IJJs   C D5"D5&AD5sales_get_idc                    K   t        j                  || j                        }|st        dd      t        j
                  j                  |      S w)N  zGet Sales Estimate ID not foundstatus_codedetail)r   get_sales_estimater   r   r   SalesEstimateResponser-   )r   rC   new_get_sales_estimates      r   rI   z'SalesEstimateService.get_sales_estimatem   sI     !1!D!D\SWSZSZ![%C8YZZ++::;QRRs   AAreturnr   c                 &  K   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      |D cg c]!  }t        j                  j                  |      # c}S c c}w w)NrE   zGet group ID not foundrF   )
r   queryr   filtergroup_idallr   r   rJ   r-   )r   rP   new_get_group_sales_estimate	get_groups       r   get_group_sales_estimatez-SalesEstimateService.get_group_sales_estimates   sw     '+ww}}5E'F'M'MN^NgNgksNs't'x'x'z$+C8PQQXtuXt9,,;;IFXtuuus   A!B#&B	BrP   c           	        K   | j                   j                  t        j                  t        j                  t        j
                  t        j                                    j                  d            j                  t        j                  j                  g d      t        j                  |k(        j                         }|st        dd      |S w)Nsales_value)r"   r#   r$   rE   zGet Multiple ID not foundrF   )r   rN   r   expsumlnr   r5   labelrO   r4   in_rP   scalarr   )r   rP   "new_get_sales_value_sales_estimates      r   get_sales_value_sales_estimatez3SalesEstimateService.get_sales_value_sales_estimatey   s     GGMM488DHHTWW5E5K5K-L$MNTTUbcd
 V **.. 0 
 !))X5 VX 	+$ 3C8STT11s   CCc                   K   |D ]y  }t        j                  |j                               }|j                  t	        dt
        j                        c S t        j                  |j                  || j                         { | j                  j                          d}d}t        ||      }t        |       |j                  |       ddddd	}d
dd}|j                         D ]G  \  }	}
||
   }j                  |	k(  s|j!                  |j"                        }|s9j$                  ||<   I |j                  |       |j'                          t	        dt
        j(                        S w)N-1r)   r   r   r   r   r   r    r!   r%   r&   r'   r(   )r   r-   r.   sales_idr   r
   SALES_ESTIMATE_NOTr   update_sales_estimater   r0   r   r   r,   r1   r2   r3   r4   r5   r6   SALES_ESTIMATE_UPDATE)r   r   r=   updated_sales_estimater8   r9   r:   r;   r<   r?   r@   rA   rB   s                r   rc   z*SalesEstimateService.update_sales_estimate   sK     C%6%E%EcnnFV%W"%..6%T8;V;VWW223I3R3RTjlplslst	 
 	SB
%k:>h'k" *.(,26',	
 /.
 (7'<'<'>#KZ(E%%4$((7"8">">E$K (? 	k"S83Q3QRRs   C;E)>E)AE)ra   c                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S w)Nr`   r)   r(   )r   delete_sales_estimater   r   r
   rb   SALES_ESTIMATE_DELETE)r   ra   deleted_sales_estimates      r   rg   z*SalesEstimateService.delete_sales_estimate   sI     !1!G!GRVRYRY!Z%!x7R7RSSS(2P2PQQs   AAN)rL   r   )__name__
__module____qualname__r   r	   r   r   r   SalesEstimateCreater/   intrI   rT   r^   SalesEstimateUpdaterc   rg    r   r   r   r      s    ' )9 0K48R8R3S 0KtSC Sv2C 2CU 2D+S$v7Q7Q2R +SZR3 Rr   r   )ostypingr   fastapir   openpyxlr   
sqlalchemyr   sqlalchemy.ormr   app.api.sales_estimater   app.dependency.authanticationr	   app.locale.messagesr
   app.models.main.sales_estimater   r   app.utils.common_utilsr   r   app.utils.schemas_utilsr   r   rp   r   r   <module>r}      s7    	  ! "  " ) : ( O L 2~R ~Rr   