
    i                        d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZmZmZmZmZ ddlmZmZmZ dd	lmZmZ e	rdd
lmZ ddlmZ  G d deej:                        Z G d dee      Zy)u^   End-to-End Reconciliation model — actual losses per tank over a complete drain-refill cycle.    )annotationsN)date)Decimal)TYPE_CHECKING)DateDateTime
ForeignKeyIndexNumericString)Mappedmapped_columnrelationship)BaseTimestampMixin)Tangki)Userc                      e Zd ZdZdZy)StatusEndToEndopenclosedN)__name__
__module____qualname__OPENCLOSED     7/var/www/html/spbu.com/backend/app/models/end_to_end.pyr   r      s    DFr   r   c                     e Zd ZU dZdZ edddd       edd	      fZ ed
      Zde	d<    e e
dd      d      Zde	d	<    e e
dd      d      Zde	d<    e ed      dej                        Zde	d<    eed      Zde	d<    eed      Zde	d<    e edd      d ed            Zde	d <    e edd      d      Zd!e	d"<    e edd      d ed            Zde	d#<    e edd      d ed            Zde	d$<    e edd      d ed            Zde	d%<    e edd      d ed            Zde	d&<    e edd      d      Zd!e	d'<    e ed(d)      d      Zd!e	d*<    e e
d+d,      d      Zd-e	d.<    e e
d+d,      d      Zd-e	d/<    e eg0      Z!d1e	d2<    e eg0      Z"d3e	d4<    e eg0      Z#d3e	d5<   y6)7EndToEndCyclezOne end-to-end reconciliation cycle per tank.

    Tracks actual losses from tank-empty to tank-empty, bypassing
    sounding margin of error.
    end_to_end_cycleix_e2e_tangki_open	tangki_idTzstatus = 'open')uniquepostgresql_whereix_e2e_spbu_idspbu_id)primary_keyzMapped[int]idzmaster_spbu.idCASCADE)ondeleteF)nullablezmaster_spbu_tangki.idRESTRICT
   )r-   defaultzMapped[str]statuszMapped[date]tanggal_mulaizMapped[date | None]tanggal_selesai      0zMapped[Decimal]dead_stock_awalzMapped[Decimal | None]dead_stock_akhirtotal_penerimaantotal_penjualantotal_pemindahan_intotal_pemindahan_outlosses_aktual      
losses_pctzmaster_user.idzSET NULLzMapped[int | None]started_by_idclosed_by_id)foreign_keyszMapped['Tangki']tangkizMapped['User | None']
started_by	closed_byN)$r   r   r   __doc____tablename__r
   __table_args__r   r*   __annotations__r	   r(   r$   r   r   r   r1   r   r2   r3   r   r   r7   r8   r9   r:   r;   r<   r=   r@   rA   rB   r   rD   rE   rF   r   r   r   r!   r!      s_    'M 	 .		
 		*	N $5B5(#i85G[  +*Z@5I{  (r
UN,?,?FK  #0u"EM<E+8+MO(M (5A(O_  0=A0, 
 )6A)o  (5A(O_  ,9A,  -:A-/ 
 -:A-M)  *71*J& 
 )6#j9D)M%  (5#j9D(L$ 
  ,)EFE(4=/(RJ%R'3,'PI$Pr   r!   ) rG   
__future__r   enumdatetimer   decimalr   typingr   
sqlalchemyr   r   r	   r
   r   r   sqlalchemy.ormr   r   r   app.models.baser   r   app.models.spbur   app.models.userr   strEnumr   r!   r   r   r   <module>rW      sS    d "      I I > > 0&$S$)) 
KQD. KQr   