
    i                        d Z ddlmZ ddlmZmZmZ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  ed
dg      Zej-                  de       ed       ed       ee       ee      fdedededededefd       Zej-                  de
       ed       ed       edd       ee       ee      fdedededededede
fd       Zy)z-Router for Laporan (report export) endpoints.    )date)	APIRouterDependsHTTPExceptionQuerystatus)StreamingResponse)AsyncSession)get_db)get_current_user)User)dashboard_servicez/spbus/{spbu_id}/laporanlaporan)prefixtagsz/summary)response_model.spbu_idtanggal_mulaitanggal_akhirdbcurrent_userreturnc                   K   ||kD  rt        t        j                  d      	 t        j                  || ||       d{   }d|j                         iS 7 # t
        $ r)}t        t        j                  t        |            d}~ww xY ww)zHGet report summary data for a date range (reuses dashboard aggregation).z:tanggal_mulai harus sebelum atau sama dengan tanggal_akhir)status_codedetailNdata)r   r   HTTP_400_BAD_REQUESTr   get_summary
ValueErrorstr
model_dump)r   r   r   r   r   summaryes          5/var/www/html/spbu.com/backend/app/routers/laporan.pyget_report_summaryr%      s      }$33O
 	
T)55
 

 G&&())
  T(C(CCPQFSSTs9   !BA A A BA 	B
!$BB

Bz/export/csv)response_class	penjualanz&^(penjualan|expenses|penyetoran|stok)$)defaultregextipec                   K   ddl }ddl}t        j                  || ||       d{   }|j	                         }	|j                  |	      }
|dk(  r|
j                  g d       |j                  D ]Q  }|
j                  |j                  |j                  t        |j                        t        |j                        g       S |
j                  g        |
j                  ddt        |j                        t        |j                        g       n#|dk(  r|
j                  g d       |j                  D ]q  }|
j                  |j                   |j                  xs dt        |j"                        t        |j$                  xs d      t        |j&                  xs d      g       s n|
j                  d	| d
| g       |
j                  dt        |j                        g       |
j                  dt        |j(                        g       |
j                  dt        |j*                        g       |	j-                  d       d| d| d| d}t/        t1        |	j3                         g      ddd| i      S 7 Ww)zExport report data as CSV.r   Nr'   )ProdukKodez
Volume (L)z
Nilai (Rp)TOTAL stok)Tangkir,   zKapasitas (L)zVolume Terakhir (L)z% IsiPeriodez s/d zTotal PenjualanzTotal ExpenseszTotal Penyetoranlaporan__z.csvztext/csvzContent-Dispositionzattachment; filename=)
media_typeheaders)csvior   r   StringIOwriterwriterowproduk_salesproduk_namaproduk_koder    total_volumetotal_nilaitotal_penjualan_volumetotal_penjualan_nilaitangki_statustangki_namakapasitas_litervolume_terakhir
persen_isitotal_expensestotal_penyetoranseekr	   itergetvalue)r   r   r   r*   r   r   r7   r8   r"   outputr:   ptfilenames                 r$   
export_csvrQ   +   s:     %11
G]M G [[]FZZF{FG%%AOOQ]]AMM3q~~;NPSTUTaTaPbcd &"c'*H*H&I3wOlOlKmno	]^&&AOOQ]]AMM,?RQEVEVAWY\]^]n]n]trtYuwz{|  |H  |H  |N  LN  xO  P  Q ' 	}oU=/$JKL*C0M0M,NOP)3w/E/E+FGH+S1I1I-JKL
KKN$qqtDHfoo !&*?z(JK 3s   $J I=IJ N)__doc__datetimer   fastapir   r   r   r   r   fastapi.responsesr	   sqlalchemy.ext.asyncior
   app.core.databaser   app.dependenciesr   app.models.userr   app.servicesr   routergetdictintr%   r    rQ        r$   <module>ra      s=   3  D D / / $ -   *	%

 Jt,  **v !12*** * 		*
 * 
* -*, M*;<  **k1YZv !12))) ) 	)
 	) ) ) =)r`   