
    id                        d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	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 ddlmZ 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 ddZy)u2   Analytics service — daily trend data for charts.    )annotations)date	timedelta)Decimal)funcselect)AsyncSession)Expense)LaporanShiftPenjualanNozzle)
PenerimaanPenerimaanItem)Produk)Nozzlec           	     t  K   g }|}||k  r!t        t        j                  t        j                  t        j
                        t        d            t        j                  t        j                  t        j                        t        d                  j                  t        t        j                  t        j                  k(        j                  t        j                  |k(  t        j                  |k(        }| j                  |       d{   j!                         \  }}t        t        j                  t        j                  t"        j$                        t        d                  j                  t"        j                  |k(  t"        j                  |k(        }	| j                  |	       d{   j'                         xs t        d      }
t        t        j                  t        j                  t(        j*                        t        d                  j                  t,        t(        j.                  t,        j                  k(        j                  t,        j                  |k(  t,        j                  |k(        }| j                  |       d{   j'                         xs t        d      }|j1                  |j3                         t5        |xs t        d            t5        |xs t        d            t5        |
      t5        |      d       |t7        d      z  }||k  r!|S 7 "7 7 w)z@Return per-day aggregation of sales & expenses for trend charts.0N)tanggalpenjualan_volumepenjualan_nilaiexpensespenerimaan_volume   )days)r   r   coalescesumr   volumer   nilaijoinr   laporan_shift_ididwherespbu_idr   executeoner
   jumlah
scalar_oner   volume_diterimar   penerimaan_idappend	isoformatstrr   )dbr"   tanggal_mulaitanggal_akhirr   currentsales_qvolvalexp_qr   pen_q
penerimaans                @/var/www/html/spbu.com/backend/app/services/analytics_service.pyget_daily_trendr7      sJ     DG
]
" dhh'='=>Mdhh'<'<=ws|L T, @ @LOO STU<''72L4H4HG4ST 	 **W--224S 4=='..!973<HIU7??g-w'/IJ 	 **U++779IWS\ 4==.*H*H!I7SV<XYT*n::jmmKLU:%%0*2D2D2OP 	
 JJu--99;Kws|
((* #C$773< 8"3#6'#,7H!$Z
 	 	9!$$E ]
"H K5 . , .s?   DL8L0B$L83L34C!L8L6BL8.L83L86L8c                  K   t        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                        t        d            t        j                  t        j                  t        j                        t        d                  j                  t        t        j                  t        j                  k(        j                  t        t        j                  t        j                  k(        j                  t         t        j"                  t         j                  k(        j%                  t         j&                  |k(  t         j(                  |k\  t         j(                  |k        j+                  t        j                  t        j                  t        j                        j-                  t        j                  t        j                        j/                               }| j1                  |       d{   j3                         }|D cg c]+  }|d   |d   |d   t5        |d         t5        |d         d- c}S 7 Ic c}w w)	z.Return per-product aggregation for the period.r   Nr   r            )	produk_idproduk_namaproduk_kodetotal_volumetotal_nilai)r   r   r    namakoder   r   r   r   r   r   r   r   r   	nozzle_idr<   r   r   r!   r"   r   group_byorder_bydescr#   allr+   )r,   r"   r-   r.   qrowsrs          r6   get_produk_trendrK   B   s     	IIKKKKMM$((?#9#9:GCLIMM$((?#8#8973<H	
 
fo//699<	=	ff&&&))3	4	lO<<O	P	  G+  M1  M1


 
&))V[[&++	6	$((?001668	9# & **Q-$$&D 	 A 1Q4Q4!Iqt9	
 	 	  	s$   H I3"I,#I390I.)I3.I3N)
r,   r	   r"   intr-   r   r.   r   returnz
list[dict])__doc__
__future__r   datetimer   r   decimalr   
sqlalchemyr   r   sqlalchemy.ext.asyncior	   app.models.expensesr
   app.models.operationalr   r   app.models.penerimaanr   r   app.models.productr   app.models.spbur   r7   rK        r6   <module>r[      s    8 " $  # / ' @ < % "--- - 	-
 -`$$$ $ 	$
 $rZ   