
    ]i                     (   d 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  G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)z6Schemas for the penjualan (sales shift report) module.    )datedatetime)Decimal)Literal)	BaseModel
ConfigDict)StatusLaporanc                   f    e Zd ZU dZeed<   eed<   eed<   eed<   eed<   dZeed<   d	Z	ed	z  ed
<   y	)PenjualanNozzleInputzGInput payload for a single nozzle row when creating/updating a laporan.	nozzle_idteller_awal_manualteller_akhir_manualteller_awal_digitalteller_akhir_digitalFflag_reset_tellerNharga_jual_override)
__name__
__module____qualname____doc__int__annotations__r   r   boolr        9/var/www/html/spbu.com/backend/app/schemas/operational.pyr   r      s<    QN    !!#t#*.4.r   r   c                       e Zd ZU dZ ed      Zeed<   eed<   eed<   eed<   eed<   eed	<   eed
<   e	ed<   e	ed<   e	ed<   e	ed<   e
ed<   eed<   e	ed<   e	ed<   e	ed<   y)PenjualanNozzleResponsezEEnriched response for a single nozzle row, with human-readable names.Tfrom_attributesidr   nozzle_namaisland_nama	produk_idproduk_namaproduk_koder   r   r   r   r   primary_tellervolume
harga_jualnilaiN)r   r   r   r   r   model_configr   r   strr   r   r   r   r   r   r      sj    Od3LGNN    !!ONr   r   c                   0   e Zd ZU dZ ed      Zeed<    ed      Zeed<    ed      Zeed<    ed      Z	eed<    ed      Z
eed<    ed      Zeed<    ed      Zeed	<    ed      Zeed
<    ed      Zeed<    ed      Zeed<    ed      Zeed<   y)KasPaymentInputz@Cash denomination amounts + non-cash payment totals for a shift.0kas_100kkas_50kkas_20kkas_10kkas_5kkas_2kkas_1k	kas_logampembayaran_kartupembayaran_qrpembayaran_instansiN)r   r   r   r   r   r0   r   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r   r   r   r.   r.   /   s    JHg$s|GW#s|GW#s|GW#clFG"clFG"clFG" Iw% 'g,$S\M7)#*3</r   r.   c                   b    e Zd ZU dZeed<   eed<   ee   ed<   dZ	e
dz  ed<    e       Zeed<   y)LaporanShiftCreatez&Payload to create a new laporan shift.tanggalshift_idnozzlesNsource_foto_urlkas)r   r   r   r   r   r   r   listr   r@   r,   r.   rA   r   r   r   r<   r<   ?   s6    0MM&''"&OS4Z&*,C,r   r<   c                   N    e Zd ZU dZee   ed<   dZedz  ed<    e	       Z
e	ed<   y)LaporanShiftUpdatezAPayload to edit a draft laporan shift (replaces all nozzle rows).r?   Nr@   rA   )r   r   r   r   rB   r   r   r@   r,   r.   rA   r   r   r   rD   rD   I   s,    K&''"&OS4Z&*,C,r   rD   c                   6    e Zd ZU dZed   ed<   dZedz  ed<   y)ReviewRequestzCPayload for reviewing (approving or rejecting) a submitted laporan.)approverejectactionNcatatan)r   r   r   r   r   r   rJ   r,   r   r   r   rF   rF   Q   s    M'((GS4Zr   rF   c                       e Zd ZU dZeed<   y)UnlockRequestz1Payload for unlocking an approved/locked laporan.alasanN)r   r   r   r   r,   r   r   r   r   rL   rL   X   s
    ;Kr   rL   c                   @   e Zd ZU dZ ed      Zeed<   eed<   eed<   eed<   e	ed<   e
ed	<   ed
z  ed<   ed
z  ed<   ed
z  ed<   ed
z  ed<   ed
z  ed<   ed
z  ed<   ed
z  ed<   ed
z  ed<   ed
z  ed<   eed<   eed<   eed<   d
Zed
z  ed<    ed      Zeed<    ed      Zeed<    ed      Zeed<    ed      Zeed<    ed      Zeed<    ed      Zeed<    ed      Zeed<    ed      Zeed <    ed      Zeed!<    ed      Zeed"<    ed      Zeed#<   y
)$LaporanShiftResponseuF   Summary response for a laporan shift (list view — no nozzle detail).Tr   r!   spbu_idr>   
shift_namar=   statusNsubmitted_by_namesubmitted_atreviewed_by_namereviewed_atcatatan_reviewrecalled_by_namerecalled_atunlocked_by_nameunlocked_attotal_volumetotal_nilainozzle_countr@   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   )r   r   r   r   r   r+   r   r   r,   r   r	   r   r   r@   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r   r   r   rO   rO   ^   sD   Pd3LGLMOMTz!T/!Dj D $JDj D Dj D "&OS4Z&Hg$s|GW#s|GW#s|GW#clFG"clFG"clFG" Iw% 'g,$S\M7)#*3</r   rO   c                   2    e Zd ZU dZee   ed<   edz  ed<   y)LaporanShiftDetailResponsezFDetail response for a single laporan shift, including all nozzle rows.r?   Nunlock_reason)r   r   r   r   rB   r   r   r,   r   r   r   r`   r`      s    P)**:r   r`   c                   D    e Zd ZU dZeed<   eed<   eed<   eed<   eed<   y)TellerInitResponsezLPre-filled teller readings for each nozzle when starting a new shift report.r   r   r   r'   is_first_timeN)	r   r   r   r   r   r   r   r,   r   r   r   r   rc   rc      s"    VN  r   rc   N)r   r   r   decimalr   typingr   pydanticr   r   app.models.operationalr	   r   r   r.   r<   rD   rF   rL   rO   r`   rc   r   r   r   <module>ri      s    < #   * 0	/9 	/i .0i 0 - -- -I I #09 #0L!5  r   