
    ]il                     .   d 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 Zded	ed
ededz  fdZded
edededz  fdZ	 	 	 	 	 dded
ededz  dedz  dedz  dededeee   ef   fdZdededee   defdZdededefdZdedededefdZy)uG   Rekonsiliasi Harian repository — DB queries for daily reconciliation.    )date)funcselect)AsyncSession)selectinload)RekonsiliasiHarianRekonsiliasiTangkic                      t        t        j                        j                  t        j                        t        t        j
                        t        t        j                        gS N)r   r   itemsr	   tangkirun_byapproved_by     J/var/www/html/spbu.com/backend/app/repositories/rekonsiliasi_repository.py_eager_optsr      sK    '--.;;<N<U<UV'../'334 r   dbidspbu_idreturnNc                   K   | j                   t        t              j                  t        j                  |k(  t        j
                  |k(        j                  t                       d {   }|j                         S 7 wr   )	executer   r   wherer   r   optionsr   scalar_one_or_none)r   r   r   results       r   	get_by_idr      sp      ::	!"	!$$*,>,F,F',Q	R	+-	! F
 $$&&   A)B+B ,Btanggalc                   K   | j                   t        t              j                  t        j                  |k(  t        j
                  |k(        j                  t                       d {   }|j                         S 7 wr   )	r   r   r   r   r   r    r   r   r   )r   r   r    r   s       r   get_by_tanggalr"      st      ::	!"	&&'1&&'1

 
+-	! F $$&&r   tanggal_mulaitanggal_akhirstatusskiplimitc                 N  K    t        t              j                  t        j                  |k(        j                  t                }|"|j                  t        j                  |k\        }|"|j                  t        j                  |k        }|"|j                  t        j                  |k(        }|j                  t        j                  j                               }| j                  t        t        j                               j                  |j                                      d {   }|j                         }	| j                  |j!                  |      j#                  |             d {   }
t%        |
j'                         j)                               |	fS 7 t7 /wr   )r   r   r   r   r   r   r    r%   order_bydescr   r   countselect_fromsubquery
scalar_oneoffsetr'   listscalarsall)r   r   r#   r$   r%   r&   r'   querycount_qtotalr   s              r   get_allr6   -   sI    	!"	!))W4	5	+-	! 

  .66-GH .66-GH.55?@NN-55::<=EJJvdjjl3??@PQRRG E::ell4066u=>>F $$&'..	 S ?s%   D*F%,F!-AF%3F#4.F%#F%rekon
items_datac                   K   |j                   rKt        |j                         D ]  }| j                  |       d{     | j                          d{    |D ]*  }t	        dd|j
                  i|}| j                  |       , | j                          d{    | j                  |       d{    t        | |j
                  |j                         d{   S 7 7 7 J7 37 w)zGCreate or update rekonsiliasi with items. Replaces all items on re-run.Nrekonsiliasi_harian_idr   )
r   r0   deleteflushr	   r   addrefreshr   r   )r   r7   r8   item	item_datas        r   upsertrA   J   s     
 {{%D))D/!! &hhj	!OOYO
t   ((*
**U
2uxx777 " 7sX   9C-C#C-C%AC-C'C-5C)6(C-C+C-%C-'C-)C-+C-datac                   K   t        di |}| j                  |       | j                          d {    | j                  |       d {    t	        | |j
                  |j                         d {   S 7 F7 /7 w)Nr   )r   r=   r<   r>   r   r   r   )r   rB   r7   s      r   createrD   ]   sf     &&EFF5M
((*
**U
2uxx777 7s3   0A?A9A?A;(A?4A=5A?;A?=A?c                   K   |j                         D ]  \  }}t        |||        | j                          d {    | j                  |       d {    t	        | |j
                  |j                         d {   S 7 F7 /7 wr   )r   setattrr<   r>   r   r   r   )r   r7   rB   kvs        r   update_statusrI   e   sp      

1q! 
((*
**U
2uxx777 7s3   9BBBB(B=B>BBB)NNNr   2   )__doc__datetimer   
sqlalchemyr   r   sqlalchemy.ext.asyncior   sqlalchemy.ormr   app.models.rekonsiliasir   r	   r   intr   r"   strtupler0   r6   dictrA   rD   rI   r   r   r   <module>rU      sW   M  # / ' J'''(+'$'''"'-1'$'" "&!%/// $;/ $;	/
 $J/ / / 4"#S()/:88/8=A$Z88&8\ 8 82D 888/87;88r   