+
    `ØjBÍ  ã                   óÚ   € ^ RI HtHtHtHtHtHtHt ^ RIH	t	H
t
HtHt ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHtHt ^ R
IHt ^ RIHt ^ RI H!t! ^ RI"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+ ^RI,H-t- ]! 4       t.].P_                  R]]-P`                  ,          R7      ]! R4      ]! R4      ]! ]!4      ]! ]! RR4      4      3R R ll4       t1].Pe                  R]-P`                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3R R ll4       t4].P_                  R]-P`                  R7      ]! ]!4      ]! ]! RR4      4      3R R ll4       t5].Pm                  R]-P`                  R7      ]! ]!4      ]! ]! RR4      4      3R R ll4       t7].Pq                  R]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3R! R" ll4       t:].P_                  R#]]-Pv                  ,          R7      ]! R4      ]! ]!4      ]! ]! RR4      4      3R$ R% ll4       t<].Pe                  R#]-Pv                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3R& R' ll4       t=].Pm                  R(]-Pv                  R7      ]! ]!4      ]! ]! RR)4      4      3R* R+ ll4       t>].Pq                  R(]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3R, R- ll4       t?].Pe                  R.4      ]! R/4      ]! ]! RR4      4      3R0 R1 ll4       t@].P_                  R2]]-P‚                  ,          R7      ]! R4      ]! R4      ]! R4      ]! R4      ]! R4      ]! R4      ]! ^ ^ R37      ]! ^È^R4R57      ]! ]!4      ]! ]! RR4      4      3
R6 R7 ll4       tB].Pe                  R2]-P†                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3R8 R9 ll4       tD].P_                  R:]-P†                  R7      ]! ]!4      ]! ]! RR4      4      3R; R< ll4       tE].Pm                  R:]-P†                  R7      ]! ]!4      ]! ]! RR4      4      3R= R> ll4       tF].Pq                  R:]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3R? R@ ll4       tG].P_                  RA]]-P�                  ,          R7      ]! R/4      ]! R/4      ]! ]!4      ]! ]! RR4      4      3RB RC ll4       tI].Pe                  RA]-P�                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3RD RE ll4       tJ].Pm                  RF]-P�                  R7      ]! ]!4      ]! ]! RR4      4      3RG RH ll4       tK].Pq                  RF]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3RI RJ ll4       tL].P_                  RK]-Pš                  R7      ]! ]!4      ]! ]! RR4      4      3RL RM ll4       tN^ RNI"HOtOHPtPHQtQ ].P_                  RO]]-P¤                  ,          R7      ]! ]!4      ]! ]! RR4      4      3RP RQ ll4       tS].Pe                  RO]-P¤                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3RR RS ll4       tT].Pq                  RT]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3RU RV ll4       tU].Pm                  RT]-P¤                  R7      ]! ]!4      ]! ]! RR4      4      3RW RX ll4       tV].P_                  RY]]-P®                  ,          R7      ]! ]!4      ]! ]! RR4      4      3RZ R[ ll4       tX].Pe                  RY]-P®                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3R\ R] ll4       tY].Pq                  R^]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3R_ R` ll4       tZ].Pm                  R^]-P®                  R7      ]! ]!4      ]! ]! RR4      4      3Ra Rb ll4       t[].P_                  Rc]]-P¸                  ,          R7      ]! ]!4      ]! ]! RR4      4      3Rd Re ll4       t]].Pe                  Rc]-P¸                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3Rf Rg ll4       t^].Pq                  Rh]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3Ri Rj ll4       t_].Pm                  Rh]-P¸                  R7      ]! ]!4      ]! ]! RR4      4      3Rk Rl ll4       t`].P_                  Rm]]-PÂ                  ,          R7      ]! R4      ]! R4      ]! R4      ]! R4      ]! ]!4      ]! ]! RR4      4      3Rn Ro ll4       tb].Pe                  Rm]-PÂ                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3Rp Rq ll4       tc].Pm                  Rr]-PÂ                  R7      ]! ]!4      ]! ]! RR4      4      3Rs Rt ll4       td].Pq                  Rr]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3Ru Rv ll4       te].P_                  Rw]]f,          R7      ]! ]!4      ]! ]! RR4      4      3Rx Ry ll4       tg].Pe                  Rz]hR7      ]! R/R{R|7      ]! R/R}R|7      ]! ]!4      ]! ]! RR4      4      3R~ R ll4       ti].P_                  R€]]-PÔ                  ,          R7      ]! R4      ]! R4      ]! ]!4      ]! ]! RR4      4      3R� R‚ ll4       tk].Pe                  Rƒ]hR7      ]! R/4      ]! R/4      ]! R/4      ]! R/4      ]! ]!4      ]! ]! RR4      4      3R„ R… ll4       tl].Pe                  R€]-PÔ                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3R† R‡ ll4       tm].Pm                  Rˆ]-PÔ                  R7      ]! ]!4      ]! ]! RR4      4      3R‰ RŠ ll4       tn].Pq                  Rˆ]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3R‹ RŒ ll4       to].P_                  R�]]-Pà                  ,          R7      ]! R4      ]! R4      ]! ]!4      ]! ]! RR4      4      3RŽ R� ll4       tq].Pe                  R�]-Pà                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3R� R‘ ll4       tr].Pm                  R’]-Pà                  R7      ]! ]!4      ]! ]! RR4      4      3R“ R” ll4       ts].Pq                  R’]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3R• R– ll4       tt].P_                  R—]]-Pê                  ,          R7      ]! R4      ]! R4      ]! R4      ]! ]!4      ]! ]! RR4      4      3R˜ R™ ll4       tv].Pe                  R—]-Pê                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3Rš R› ll4       tw].Pm                  Rœ]-Pê                  R7      ]! ]!4      ]! ]! RR4      4      3R� Rž ll4       tx].Pq                  Rœ]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3RŸ R  ll4       ty^ R¡I"Hztz ].P_                  R¢]]-Pö                  ,          R7      ]! R4      ]! ]!4      ]! ]! RR4      4      3R£ R¤ ll4       t|].Pe                  R¢]-Pö                  ]Pf                  R7      ]! ]!4      ]! ]! RR4      4      3R¥ R¦ ll4       t}].Pm                  R§]-Pö                  R7      ]! ]!4      ]! ]! RR4      4      3R¨ R© ll4       t~].Pq                  R§]Pr                  R7      ]! ]!4      ]! ]! RR 4      4      3Rª R« ll4       t^ R¬I"H€t€ ].P_                  R­]]-EP                  ,          R7      ]! R/4      ]! R/4      ]! R/4      ]! ]!4      ]! ]! RR4      4      3R® R¯ ll4       t‚].Pe                  R°]]-EP                  ,          R7      ]! ]!4      ]! ]! RR4      4      3R± R² ll4       tƒ^ R³I„H…t† . RÊOt‡^R´^Rµ^R¶^R·^R¸^R¹^Rº^R»^	R¼^
R½^R¾^R¿/tˆRÀt‰RÁtŠRÂ RÃ lt‹].P_                  RÄ]-EP                  R7      ]! R/RÅR|7      ]! R/^^RÆRÇ7      ]! ]!4      ]! ]! RR4      4      3RÈ RÉ ll4       t�R# )Ëé    )Ú	APIRouterÚDependsÚHTTPExceptionÚQueryÚstatusÚFileÚ
UploadFile)ÚfuncÚextractÚupdateÚdistinctN)ÚAsyncSession)Úselect)Úselectinload)ÚListÚOptional)ÚUUID)ÚdateÚdatetime)Úrequire_permission)Ú
LoginUsers)Úget_db)	ÚMaintenanceAssetÚMaintenanceChecklistItemÚMaintenanceRecordÚMaintenanceRecordActionÚMaintenancePMScheduleÚIncomingMaterialÚMonthlyStockÚEquipmentPurchaseÚEquipmentRental)Úschemasz/assets)Úresponse_modelÚMAINTENANCEÚviewc                ót   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\        R\        /# )é   Úmachine_typeÚ	is_activeÚdbÚcurrent_user)r   ÚstrÚboolr   r   )Úformats   "Ú@/var/www/html/audi_dev/backend/app/modules/maintenance/routes.pyÚ__annotate__r0      s8   € ÷ "ñ "Üœ3•-ð"äœ�~ð"ô 	ð"ô ñ	"ó    c              ƒ   ó’  "  € \        \        4      P                  \        P                  \        P                  4      pV '       d#   VP                  \        P                  V 8H  4      pVe#   VP                  \        P                  V8H  4      pVP                  V4      G R j  x€L
 pVP                  4       P                  4       #  L"5i©N)
r   r   Úorder_byr(   Úmachine_numberÚwherer)   ÚexecuteÚscalarsÚall)r(   r)   r*   r+   ÚstmtÚresults   &&&&  r/   Úlist_assetsr<      s–   é € ô Ô"Ó#×,Ñ,Ô-=×-JÑ-JÔL\×LkÑLkÓl€DßØ�z‰zÔ*×7Ñ7¸<ÑGÓHˆØÒØ�z‰zÔ*×4Ñ4¸	ÑAÓBˆØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùs   ‚B CÂ"CÂ##C)r#   Ústatus_codeÚcreatec                óP   € V ^8„  d   QhR\         P                  R\        R\        /# ©r'   Úpayloadr*   r+   )r"   ÚMaintenanceAssetCreater   r   )r.   s   "r/   r0   r0   ,   s(   € ÷ ñ ¤× >Ñ >ð ÄLð Ôr|ñ r1   c              ƒ   óÌ   "  € \        R/ V P                  4       B pVP                  V4       VP                  4       G R j  x€L
  VP	                  V4      G R j  x€L
  V#  L L5i©N© )r   Ú
model_dumpÚaddÚcommitÚrefresh)rA   r*   r+   Úassets   &&& r/   Úcreate_assetrK   +   sT   é € äÑ4˜w×1Ñ1Ó3Ñ4€EØ‡F�Fˆ5„MØ
�)‰)‹+×ÐØ
�*‰*�UÓ
×ÐØ€Lñ Ùùó#   ‚>A$Á A ÁA$ÁA"ÁA$Á"A$z/assets/{asset_id}c                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r'   Úasset_idr*   r+   ©r   r   r   )r.   s   "r/   r0   r0   5   s"   € ÷ ñ œdð ¬ð ÔV`ñ r1   c              ƒ   óx   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hV#  L5i©Né”  úAsset not found©r=   Údetail)Úgetr   r   ©rO   r*   r+   rJ   s   &&& r/   Ú	get_assetrY   4   s4   é € à—&‘&Ô)¨8Ó4×4€EßÜ¨Ð4EÔFÐFØ€Lñ 5ùs   ‚:œ8�:©:Úeditc                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# )r'   rO   rA   r*   r+   )r   r"   ÚMaintenanceAssetUpdater   r   )r.   s   "r/   r0   r0   =   s4   € ÷ ñ ¤ð ´×0NÑ0Nð ÔT`ð ô  CMñ r1   c              ƒ   óL  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      P	                  4        F  w  rV\        WEV4       K  	  VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  L� L! L
5i)NrS   rT   rU   T©Úexclude_unset)rW   r   r   rF   ÚitemsÚsetattrrH   rI   )rO   rA   r*   r+   rJ   ÚkeyÚvalues   &&&&   r/   Úupdate_assetrd   <   s‹   é € à—&‘&Ô)¨8Ó4×4€EßÜ¨Ð4EÔFÐFØ×(Ñ(°tÐ(Ó<×BÑBÖD‰
ˆÜ�˜EÖ"ñ Eà
�)‰)‹+×ÐØ
�*‰*�UÓ
×ÐØ€Lñ 5ñ
 Ùùó9   ‚B$œB�B$©AB$Á>B Á?B$ÂB"ÂB$Â B$Â"B$)r=   Údeletec                ó<   € V ^8„  d   QhR\         R\        R\        /# rN   rP   )r.   s   "r/   r0   r0   I   s"   € ÷ ñ ¤ð ¬<ð ÔYcñ r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5irR   )rW   r   r   rf   rH   rX   s   &&& r/   Údelete_assetri   H   sX   é € à—&‘&Ô)¨8Ó4×4€EßÜ¨Ð4EÔFÐFØ
�)‰)�EÓ
×ÐØ
�)‰)‹+×Òñ	 5ñ Ùùó8   ‚A/œA)�A/©!A/Á
A+ÁA/Á"A-Á#A/Á+A/Á-A/z
/checklistc                óR   € V ^8„  d   QhR\         \        ,          R\        R\        /# )r'   r(   r*   r+   )r   r,   r   r   )r.   s   "r/   r0   r0   T   s*   € ÷ "ñ "Üœ3•-ð"äð"ô ñ"r1   c              ƒ   óF  "  € \        \        4      P                  \        P                  \        P                  4      pV '       d#   VP                  \        P                  V 8H  4      pVP                  V4      G R j  x€L
 pVP                  4       P                  4       #  L"5ir3   )	r   r   r4   r(   Úsr_nor6   r7   r8   r9   )r(   r*   r+   r:   r;   s   &&&  r/   Úlist_checklistrn   S   sz   é € ô Ô*Ó+×4Ñ4Ü ×-Ñ-Ô/G×/MÑ/Mó€D÷ Ø�z‰zÔ2×?Ñ?À<ÑOÓPˆØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùó   ‚A:B!Á<BÁ=#B!c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚChecklistItemCreater   r   )r.   s   "r/   r0   r0   c   s,   € ÷ ñ ¬×)DÑ)Dð Ì,ð ô  yCñ r1   c              ƒ   óÌ   "  € \        R/ V P                  4       B pVP                  V4       VP                  4       G R j  x€L
  VP	                  V4      G R j  x€L
  V#  L L5irD   )r   rF   rG   rH   rI   ©rA   r*   r+   Úitems   &&& r/   Úcreate_checklist_itemru   b   sT   é € ä#Ñ; g×&8Ñ&8Ó&:Ñ;€DØ‡F�Fˆ4„LØ
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ ÙùrL   z/checklist/{item_id}r   c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# ©r'   Úitem_idrA   r*   r+   )r   r"   ÚChecklistItemUpdater   r   )r.   s   "r/   r0   r0   l   s4   € ÷ ñ ¬ð ¼×8SÑ8Sð ÔYeð ô  HRñ r1   c              ƒ   óP  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      pVP	                  4        F  w  rg\        WFV4       K  	  VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  Lƒ L! L
5i)NrS   úChecklist item not foundrU   Tr^   )rW   r   r   rF   r`   ra   rH   rI   )rx   rA   r*   r+   rt   Úupdate_datarb   rc   s   &&&&    r/   Úupdate_checklist_itemr}   k   s‘   é € à—‘Ô0°'Ó:×:€DßÜ¨Ð4NÔOÐOà×$Ñ$°4Ð$Ó8€KØ!×'Ñ'Ö)‰
ˆÜ�˜5Ö!ñ *ð �)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ ;ñ Ùùs9   ‚B&œB �B&©AB&Â B"ÂB&ÂB$ÂB&Â"B&Â$B&c                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r'   rx   r*   r+   rP   )r.   s   "r/   r0   r0   z   ó"   € ÷ ñ ¬ð ´<ð Ôakñ r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5i)NrS   r{   rU   )rW   r   r   rf   rH   ©rx   r*   r+   rt   s   &&& r/   Údelete_checklist_itemrƒ   y   sW   é € à—‘Ô0°'Ó:×:€DßÜ¨Ð4NÔOÐOØ
�)‰)�D‹/×ÐØ
�)‰)‹+×Òñ	 ;ñ Ùùrj   z/upload-photo.c                ó0   € V ^8„  d   QhR\         R\        /# )r'   Úfiler+   )r	   r   )r.   s   "r/   r0   r0   …   s   € ÷ 7ñ 7Ü
ð7äñ7r1   c              ƒ   óÜ  "  € ^ RI pRp\        P                  ! VRR7       RV P                  9   d#   V P                  P	                  R4      R
,          MRpVP                  4       P                   RV 2p\        P                  P                  W54      p\        VR4      ;_uu_ 4       p\        P                  ! V P                  V4       RRR4       RR	V 2/#   + '       g   i     L; i5i)r   Nzuploads/maintenanceT)Úexist_okÚ.ÚjpgÚwbÚurlz/uploads/maintenance/éÿÿÿÿ)ÚuuidÚosÚmakedirsÚfilenameÚsplitÚuuid4ÚhexÚpathÚjoinÚopenÚshutilÚcopyfileobjr…   )r…   r+   r�   Ú
upload_dirÚextr�   ÚfilepathÚbuffers   &&      r/   Úupload_maintenance_photor�   „   s¹   é € ó
 Ø&€JÜ‡K‚K�
 TÕ*ð +.°·±Ô*>ˆ$�-‰-×
Ñ
˜cÓ
" 2Ö
&ÀE€CØ—*‘*“,×"Ñ"Ð# 1 S EÐ*€HÜ�w‰w�|‰|˜JÓ1€Hä	ˆh˜×	Ô	 Ü×Ò˜4Ÿ9™9 fÔ-÷ 
ð Ð*¨8¨*Ð5Ð6Ð6÷ 
×	üs   ‚B&C,Â("CÃ
C,ÃC)	Ã$C,z/records)Úgeiè  )rž   Úlec                ó  € V ^8„  d   QhR\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\        R\        R	\
        R
\        /
# )r'   rO   Úmaintenance_typer   ÚpriorityÚ	date_fromÚdate_toÚskipÚlimitr*   r+   )r   r   r,   r   Úintr   r   )r.   s   "r/   r0   r0   ™   s„   € ÷ "ñ "Ü”t�nð"äœs•mð"ô ”S�Mð"ô ”s�mð	"ô
 œ�~ð"ô ”d�^ð"ô ð"ô ð"ô 	ð"ô ñ"r1   c
              ƒ   ó(  "  € \        \        4      P                  \        P                  P	                  4       4      p
V '       d#   V
P                  \        P                  V 8H  4      p
V'       d#   V
P                  \        P                  V8H  4      p
V'       d#   V
P                  \        P                  V8H  4      p
V'       d#   V
P                  \        P                  V8H  4      p
V'       d#   V
P                  \        P                  V8¬  4      p
V'       d#   V
P                  \        P                  V8*  4      p
V
P                  V4      P                  V4      p
VP                  V
4      G R j  x€L
 pVP                  4       P                  4       #  L"5ir3   )r   r   r4   Úrecord_dateÚdescr6   rO   r¡   r   r¢   Úoffsetr¦   r7   r8   r9   )rO   r¡   r   r¢   r£   r¤   r¥   r¦   r*   r+   r:   r;   s   &&&&&&&&&&  r/   Úlist_recordsr¬   ˜   s!  é € ô Ô#Ó$×-Ñ-Ô.?×.KÑ.K×.PÑ.PÓ.RÓS€DßØ�z‰zÔ+×4Ñ4¸Ñ@ÓAˆßØ�z‰zÔ+×<Ñ<Ð@PÑPÓQˆßØ�z‰zÔ+×2Ñ2°fÑ<Ó=ˆßØ�z‰zÔ+×4Ñ4¸Ñ@ÓAˆßØ�z‰zÔ+×7Ñ7¸9ÑDÓEˆßØ�z‰zÔ+×7Ñ7¸7ÑBÓCˆØ�;‰;�tÓ×"Ñ" 5Ó)€DØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùs1   ‚A,FÁ/)FÂ)FÃ)FÃ-)FÄAFÅ-FÅ.#Fc                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚMaintenanceRecordCreater   r   )r.   s   "r/   r0   r0   ¸   s(   € ÷ 1ñ 1¤×!@Ñ!@ð 1Älð 1Ôt~ñ 1r1   c              ƒ   óÜ  "  € VP                  \        V P                  4      G R j  x€L
 pV'       g   \        RRR7      hV P                  pV P                  R0R7      p\        R/ VB pVP                  V4       VP                  4       G R j  x€L
  VP                  P                  R4      p\        \        P                  ! 4       4      P                  \        4      P                  \        P                  VP                  8H  4      pVP!                  V4      G R j  x€L
 p	V	P#                  4       ;'       g    ^ p
RV RV
R	 2Vn        \'        V4       FY  w  r¼\)        VP*                  VP,                  e   VP,                  MV^,           VP.                  R
7      pVP                  V4       K[  	  VP1                  4       G R j  x€L
  VP2                  R8X  dø   VP4                  R8X  dç   \        \6        4      P                  \6        P                  VP                  8H  \6        P8                  VP                  P8                  8H  \6        P:                  VP                  P:                  8H  4      pVP!                  V4      G R j  x€L
 pVP=                  4       pV'       d1   RVn        VP                  Vn        VP1                  4       G R j  x€L
  \        \        4      PA                  \C        \        P                  4      4      P                  \        P*                  VP*                  8H  4      pVP!                  V4      G R j  x€L
 pVPE                  4       #  EL4 ELÏ ELC ELž Là Lš L$5i)NrS   rT   rU   Úactions)Úexcludez%Y%m%dzWO-Ú-Ú03d©Ú	record_idrm   Úaction_takenÚPMÚ	COMPLETEDÚDONErE   )#rW   r   rO   r   r°   rF   r   rG   Úflushr©   Ústrftimer   r
   ÚcountÚselect_fromr6   r7   ÚscalarÚ	wo_numberÚ	enumerater   Úidrm   r¶   rH   r¡   r   r   ÚyearÚmonthÚscalar_one_or_noneÚcompleted_dateÚoptionsr   Ú
scalar_one)rA   r*   r+   rJ   Úactions_dataÚrecord_dataÚrecordÚdate_strÚ
count_stmtÚcount_resultÚseqÚiÚactÚactionÚpm_stmtÚ	pm_resultÚpm_entryr:   r;   s   &&&                r/   Úcreate_recordrÕ   ·   s®  é € ð —&‘&Ô)¨7×+;Ñ+;Ó<×<€EßÜ¨Ð4EÔFÐFà—?‘?€LØ×$Ñ$¨i¨[Ð$Ó9€KÜÑ- Ñ-€FØ‡F�Fˆ6„NØ
�(‰(‹*×Ðð ×!Ñ!×*Ñ*¨8Ó4€HäœŸ
š
›Ó%×1Ñ1Ô2CÓD×JÑJÜ×%Ñ%¨×);Ñ);Ñ;ó€Jð Ÿ™ JÓ/×/€LØ×ÑÓ ×%Ð% A€CØ˜X˜J a¨¨C yÐ1€FÔä˜LÖ)‰ˆÜ(Ø—i‘iØ"Ÿy™yÒ4�#—)’)¸!¸a½%Ø×)Ñ)ô
ˆð
 	�‰ˆvŽñ *ð �)‰)‹+×Ðð ×Ñ $Ô&¨6¯=©=¸KÔ+GÜÔ.Ó/×5Ñ5Ü!×*Ñ*¨f¯o©oÑ=Ü!×&Ñ&¨&×*<Ñ*<×*AÑ*AÑAÜ!×'Ñ'¨6×+=Ñ+=×+CÑ+CÑCó
ˆð
 Ÿ*™* WÓ-×-ˆ	Ø×/Ñ/Ó1ˆßØ$ˆHŒOØ&,×&8Ñ&8ˆHÔ#Ø—)‘)“+×Ðô Ô#Ó$×,Ñ,¬\Ô:K×:SÑ:SÓ-TÓU×[Ñ[Ô\m×\pÑ\pÐtz×t}Ñt}Ñ\}Ó~€DØ—:‘:˜dÓ#×#€FØ×ÑÓÐò_ =ò ò 0ò ñ .ñ
 ñ $ùs‘   ‚$M,¦M§M,³AM,ÂMÂBM,ÄM ÄM,Ä9BM,ÇM#ÇB?M,ÊM&ÊM,Ê"+M,ËM(ËA7M,ÍM*ÍM,ÍM,Í M,Í#M,Í&M,Í(M,Í*M,z/records/{record_id}c                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r'   rµ   r*   r+   rP   )r.   s   "r/   r0   r0   í   s"   € ÷ ñ ¤ð ¬,ð ÔXbñ r1   c              ƒ   ó8  "  € \        \        4      P                  \        \        P                  4      4      P                  \        P                  V 8H  4      pVP                  V4      G R j  x€L
 pVP                  4       pV'       g   \        RRR7      hV#  L+5i©NrS   úRecord not foundrU   )
r   r   rÆ   r   r°   r6   rÁ   r7   rÄ   r   )rµ   r*   r+   r:   r;   rÊ   s   &&&   r/   Ú
get_recordrÛ   ì   s   é € äÔ#Ó$×,Ñ,ÜÔ&×.Ñ.Ó/óç�eÔ× Ñ  IÑ-Ó.ð 	ð —:‘:˜dÓ#×#€FØ×&Ñ&Ó(€FßÜ¨Ð4FÔGÐGØ€Mñ	 $ùs   ‚A*BÁ,BÁ-BÂ	Bc                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# )r'   rµ   rA   r*   r+   )r   r"   ÚMaintenanceRecordUpdater   r   )r.   s   "r/   r0   r0   ù   s4   € ÷ ,ñ ,¤4ð ,´'×2QÑ2Qð ,ÔWcð ,ô  FPñ ,r1   c           	   ƒ   óð  "  € \        \        4      P                  \        \        P                  4      4      P                  \        P                  V 8H  4      pVP                  V4      G R j  x€L
 pVP                  4       pV'       g   \        RRR7      hVP                  RR7      pVP                  RR 4      pVP                  4        F  w  rš\        WiV
4       K  	  Veä   VP                   F  pVP                  V4      G R j  x€L
  K  	  VP                  4       G R j  x€L
  \!        V4       F�  w  rÍ\#        VP                  \%        V\&        4      '       d   VP)                  R4      MVP*                  \%        V\&        4      '       d   VP)                  R4      MVP,                  R	7      pVP/                  V4       K’  	  VP1                  4       G R j  x€L
  VP2                  R
8X  dø   VP4                  R8X  dç   \        \6        4      P                  \6        P8                  VP8                  8H  \6        P:                  VP<                  P:                  8H  \6        P>                  VP<                  P>                  8H  4      pVP                  V4      G R j  x€L
 pVP                  4       pV'       d1   RVn        VP<                  Vn         VP1                  4       G R j  x€L
  \        \        4      P                  \        \        P                  4      4      P                  \        P                  V 8H  4      pVP                  V4      G R j  x€L
 pVPC                  4       #  ELø ELa ELH EL” LÖ L� L$5i)NrS   rÚ   rU   Tr^   r°   rm   r¶   r´   r·   r¸   r¹   )"r   r   rÆ   r   r°   r6   rÁ   r7   rÄ   r   rF   Úpopr`   ra   rf   rº   rÀ   r   Ú
isinstanceÚdictrW   rm   r¶   rG   rH   r¡   r   r   rO   rÂ   r©   rÃ   rÅ   rÇ   )rµ   rA   r*   r+   r:   r;   rÊ   r|   rÈ   rb   rc   Ú
old_actionrÏ   rÐ   rÑ   rÒ   rÓ   rÔ   s   &&&&              r/   Úupdate_recordrã   ø   s¢  é € äÔ#Ó$×,Ñ,¬\Ô:K×:SÑ:SÓ-TÓU×[Ñ[Ô\m×\pÑ\pÐt}Ñ\}Ó~€DØ—:‘:˜dÓ#×#€FØ×&Ñ&Ó(€FßÜ¨Ð4FÔGÐGà×$Ñ$°4Ð$Ó8€KØ—?‘? 9¨dÓ3€Là!×'Ñ'Ö)‰
ˆÜ�˜UÖ#ñ *ð Òà Ÿ.œ.ˆJØ—)‘)˜JÓ'×'Ò'ñ )à�h‰h‹j×ÐÜ Ö-‰FˆAÜ,Ø Ÿ)™)Ü*4°S¼$×*?Ò*?�c—g‘g˜gÔ&ÀSÇYÁYÜ8BÀ3Ì×8MÒ8M˜SŸW™W ^Ô4ÐSV×ScÑScôˆFð
 �F‰F�6ŽNñ .ð �)‰)‹+×Ðð ×Ñ $Ô&¨6¯=©=¸KÔ+GÜÔ.Ó/×5Ñ5Ü!×*Ñ*¨f¯o©oÑ=Ü!×&Ñ&¨&×*<Ñ*<×*AÑ*AÑAÜ!×'Ñ'¨6×+=Ñ+=×+CÑ+CÑCó
ˆð
 Ÿ*™* WÓ-×-ˆ	Ø×/Ñ/Ó1ˆßØ$ˆHŒOØ&,×&8Ñ&8ˆHÔ#Ø—)‘)“+×ÐäÔ#Ó$×,Ñ,¬\Ô:K×:SÑ:SÓ-TÓU×[Ñ[Ô\m×\pÑ\pÐt}Ñ\}Ó~€DØ—:‘:˜dÓ#×#€FØ×ÑÓÐòU $ò (Úò ñ .ñ
 ñ $ùsŽ   ‚A*M6Á,M$Á-M6Â	A=M6ÄM'ÄM6Ä"M*Ä#B6M6ÇM-ÇB?M6ÊM0ÊM6Ê6+M6Ë!M2Ë"A-M6ÍM4ÍM6Í'M6Í*M6Í-M6Í0M6Í2M6Í4M6c                ó<   € V ^8„  d   QhR\         R\        R\        /# r×   rP   )r.   s   "r/   r0   r0   )  s"   € ÷ ñ ¤4ð ¬\ð Ô[eñ r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5irÙ   )rW   r   r   rf   rH   )rµ   r*   r+   rÊ   s   &&& r/   Údelete_recordræ   (  sX   é € à—6‘6Ô+¨YÓ7×7€FßÜ¨Ð4FÔGÐGØ
�)‰)�FÓ
×ÐØ
�)‰)‹+×Òñ	 8ñ Ùùrj   z	/schedulec                óH   € V ^8„  d   QhR\         R\         R\        R\        /# ©r'   rÂ   rÃ   r*   r+   ©r§   r   r   )r.   s   "r/   r0   r0   4  s0   € ÷ "ñ "Ü
ð"äð"ô 	ð"ô ñ	"r1   c              ƒ   ó„  "  € \        \        4      P                  \        \        P                  4      4      P                  \        P                  V 8H  \        P                  V8H  4      P                  \        P                  4      pVP                  V4      G R j  x€L
 pVP                  4       P                  4       #  L"5ir3   )r   r   rÆ   r   rJ   r6   rÂ   rÃ   r4   Úscheduled_dater7   r8   r9   )rÂ   rÃ   r*   r+   r:   r;   s   &&&&  r/   Úlist_schedulerì   3  s’   é € ô 	Ô$Ó%ß	‰”Ô3×9Ñ9Ó:Ó	;ß	‰Ü!×&Ñ&¨$Ñ.Ü!×'Ñ'¨5Ñ0ó

÷ 
‰Ô'×6Ñ6Ó	7ð 	ð —:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùó   ‚BC ÂB>Â#C c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚPMScheduleCreater   r   )r.   s   "r/   r0   r0   H  s(   € ÷ ñ ¬×)AÑ)Að Ä|ð Ôuñ r1   c              ƒ   ó¦  "  € \        R/ V P                  4       B pVP                  V4       VP                  4       G R j  x€L
  \	        \         4      P                  \        \         P                  4      4      P                  \         P                  VP                  8H  4      pVP                  V4      G R j  x€L
 pVP                  4       #  LŒ L5irD   )r   rF   rG   rH   r   rÆ   r   rJ   r6   rÁ   r7   rÇ   )rA   r*   r+   Úentryr:   r;   s   &&&   r/   Úcreate_schedule_entryrò   G  s°   é € ä!Ñ9 G×$6Ñ$6Ó$8Ñ9€EØ‡F�Fˆ5„MØ
�)‰)‹+×ÐÜÔ'Ó(×0Ñ0´Ô>S×>YÑ>YÓ1ZÓ[×aÑaÔbw×bzÑbzð  D÷  Gñ  Gñ  cGó  H€DØ—:‘:˜dÓ#×#€FØ×ÑÓÐñ á#ùs$   ‚>CÁ CÁA7CÂ8CÂ9CÃCz/schedule/{entry_id}c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# ©r'   Úentry_idrA   r*   r+   )r   r"   ÚPMScheduleUpdater   r   )r.   s   "r/   r0   r0   R  s4   € ÷ 	ñ 	¬$ð 	¼×9QÑ9Qð 	ÔWcð 	ô  FPñ 	r1   c              ƒ   ó  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      P	                  4        F  w  rV\        WEV4       K  	  VP                  4       G R j  x€L
  \        \        4      P                  \        \        P                  4      4      P                  \        P                  V 8H  4      pVP                  V4      G R j  x€L
 pVP                  4       #  Lä L„ L5i)NrS   úSchedule entry not foundrU   Tr^   )rW   r   r   rF   r`   ra   rH   r   rÆ   r   rJ   r6   rÁ   r7   rÇ   )	rõ   rA   r*   r+   rñ   rb   rc   r:   r;   s	   &&&&     r/   Úupdate_schedule_entryrù   Q  sÙ   é € à—&‘&Ô.°Ó9×9€EßÜ¨Ð4NÔOÐOØ×(Ñ(°tÐ(Ó<×BÑBÖD‰
ˆÜ�˜EÖ"ñ Eà
�)‰)‹+×ÐÜÔ'Ó(×0Ñ0´Ô>S×>YÑ>YÓ1ZÓ[×aÑaÔbw×bzÑbzð  Gñ  cGó  H€DØ—:‘:˜dÓ#×#€FØ×ÑÓÐñ :ñ
 á#ùs:   ‚DœD�D©ADÁ>DÁ?A-DÃ,DÃ-DÄDÄDc                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r'   rõ   r*   r+   rP   )r.   s   "r/   r0   r0   _  s"   € ÷ ñ ¬$ð ´Lð Ôblñ r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5i)NrS   rø   rU   )rW   r   r   rf   rH   ©rõ   r*   r+   rñ   s   &&& r/   Údelete_schedule_entryrþ   ^  sX   é € à—&‘&Ô.°Ó9×9€EßÜ¨Ð4NÔOÐOØ
�)‰)�EÓ
×ÐØ
�)‰)‹+×Òñ	 :ñ Ùùrj   z
/dashboardc                ó0   € V ^8„  d   QhR\         R\        /# ©r'   r*   r+   ©r   r   )r.   s   "r/   r0   r0   j  s   € ÷ Rñ RœLð RÌ*ñ Rr1   c              ƒ   ó‚  "  € \         P                  ! 4       pVP                  VP                  rCVP	                  4       pV P                  \        \        P                  ! 4       4      P                  \        4      4      G R j  x€L
 P                  4       pV P                  \        \        P                  ! 4       4      P                  \        4      P                  \        P                  R8H  4      4      G R j  x€L
 P                  4       pV P                  \        \        P                  ! 4       4      P                  \        4      P                  \        P                  R8H  \!        R\        P"                  4      V8H  \!        R\        P"                  4      V8H  4      4      G R j  x€L
 P                  4       pV P                  \        \        P                  ! 4       4      P                  \        4      P                  \        P                  R8H  \!        R\        P"                  4      V8H  \!        R\        P"                  4      V8H  4      4      G R j  x€L
 P                  4       p	V P                  \        \        P                  ! 4       4      P                  \        4      4      G R j  x€L
 P                  4       p
V P                  \        \        P                  ! 4       4      P                  \$        4      P                  \$        P                  V8H  \$        P                  V8H  \$        P&                  R8H  4      4      G R j  x€L
 P                  4       pV P                  \        \        P                  ! 4       4      P                  \$        4      P                  \$        P                  V8H  \$        P                  V8H  \$        P&                  R8H  4      4      G R j  x€L
 P                  4       pV P                  \        \        P                  ! 4       4      P                  \$        4      P                  \$        P&                  R8H  \$        P(                  V8  4      4      G R j  x€L
 P                  4       pV P                  \        \        P                  ! 4       4      P                  \*        4      4      G R j  x€L
 P                  4       pV P                  \        \        P                  ! 4       4      P                  \,        4      P                  \,        P.                  V8H  \,        P0                  V8H  4      4      G R j  x€L
 P                  4       pV P                  \        \        P                  ! 4       4      P                  \2        4      P                  \2        P4                  V8H  \2        P6                  V8H  4      4      G R j  x€L
 P                  4       pV P                  \        \        P                  ! 4       4      P                  \8        4      P                  \!        R\8        P:                  4      V8H  \!        R\8        P:                  4      V8H  4      4      G R j  x€L
 P                  4       p\<        P>                  ! VVVV	V
VVVVVVVR7      #  EL EL¨ ELý ELR ELÿ ELh ELÑ ELL ELù ELt Lî LT5i)	NTr·   rÂ   rÃ   ÚBDÚPLANNEDr¹   )Útotal_assetsÚactive_assetsÚpm_this_monthÚbd_this_monthÚtotal_recordsÚplanned_this_monthÚdone_this_monthÚoverdue_countÚincoming_material_entriesÚmonthly_stock_entriesÚequipment_purchase_entriesÚequipment_rental_entries) r   ÚutcnowrÂ   rÃ   r   r7   r   r
   r¼   r½   r   rÇ   r6   r)   r   r¡   r   r©   r   r   rë   r   r   Ú
stock_yearÚstock_monthr    Úpurchase_yearÚpurchase_monthr!   Úrental_dater"   ÚMaintenanceDashboardStats)r*   r+   ÚnowrÂ   rÃ   Útodayr  r  r  r  r	  r
  r  r  r  r  r  r  s   &&                r/   Úget_dashboardr  i  s  é € ä
�/Š/Ó
€CØ—(‘(˜CŸI™Iˆ%Ø�H‰H‹J€EàŸ*™*¤V¬D¯JªJ«LÓ%9×%EÑ%EÔFVÓ%WÓX×X×dÑdÓf€LØŸ:™:¤f¬T¯ZªZ«\Ó&:×&FÑ&FÔGWÓ&X×&^Ñ&^Ô_o×_yÑ_yð  ~Bñ  `Bó  'Có  D÷  D÷  Pñ  Pó  R€MàŸ:™:ÜŒt�zŠz‹|Ó×(Ñ(Ô):Ó;×AÑAÜ×.Ñ.°$Ñ6Ü�FÔ-×9Ñ9Ó:¸dÑBÜ�GÔ.×:Ñ:Ó;¸uÑDó	
ó÷ ÷ �zƒ|ð ð Ÿ:™:ÜŒt�zŠz‹|Ó×(Ñ(Ô):Ó;×AÑAÜ×.Ñ.°$Ñ6Ü�FÔ-×9Ñ9Ó:¸dÑBÜ�GÔ.×:Ñ:Ó;¸uÑDó	
ó÷ ÷ �zƒ|ð ð Ÿ:™:¤f¬T¯ZªZ«\Ó&:×&FÑ&FÔGXÓ&YÓZ×Z×fÑfÓh€Mà "§
¡
ÜŒt�zŠz‹|Ó×(Ñ(Ô)>Ó?×EÑEÜ!×&Ñ&¨$Ñ.Ü!×'Ñ'¨5Ñ0Ü!×(Ñ(¨IÑ5ó	
ó!÷ ÷ �zƒ|ð ð  ŸZ™ZÜŒt�zŠz‹|Ó×(Ñ(Ô)>Ó?×EÑEÜ!×&Ñ&¨$Ñ.Ü!×'Ñ'¨5Ñ0Ü!×(Ñ(¨FÑ2ó	
ó÷ ÷ �zƒ|ð ð Ÿ:™:ÜŒt�zŠz‹|Ó×(Ñ(Ô)>Ó?×EÑEÜ!×(Ñ(¨IÑ5Ü!×0Ñ0°5Ñ8ó	
ó÷ ÷
 �zƒ|ð ð (*§z¡z´&¼¿º»Ó2F×2RÑ2RÔScÓ2dÓ'e×!e× qÑ qÓ sÐØ#%§:¡:ÜŒt�zŠz‹|Ó×(Ñ(¬Ó6×<Ñ<Ü×#Ñ# tÑ+Ü×$Ñ$¨Ñ-ó	
ó$÷ ÷
 �zƒ|ð ð )+¯
©
ÜŒt�zŠz‹|Ó×(Ñ(Ô):Ó;×AÑAÜ×+Ñ+¨tÑ3Ü×,Ñ,°Ñ5ó	
ó)÷ #÷
 �zƒ|ð ð ')§j¡jÜŒt�zŠz‹|Ó×(Ñ(¬Ó9×?Ñ?Ü�FœO×7Ñ7Ó8¸DÑ@Ü�Gœ_×8Ñ8Ó9¸UÑBó	
ó'÷ !÷
 �zƒ|ð ô ×,Ò,Ø!Ø#Ø#Ø#Ø#Ø-Ø'Ø#Ø";Ø3Ø#=Ø!9ôð òA Yò Dòòò [òòòò "fòñ#ñ!ùsã   ‚B Z?ÂZÂA5Z?Ã8Z Ã9B-Z?Æ&Z#Æ'B-Z?ÉZ&ÉAZ?Ê*Z)Ê+BZ?ÍZ,ÍBZ?ÏZ/ÏBZ?Ñ&Z2Ñ'AZ?Ò<Z5Ò=BZ?ÕZ8ÕBZ?×Z;×BZ?Ù(Z=Ù)5Z?Ú Z?Ú#Z?Ú&Z?Ú)Z?Ú,Z?Ú/Z?Ú2Z?Ú5Z?Ú8Z?Ú;Z?Ú=Z?)ÚDieselRecordÚLPGGasRecordÚSolarMaintenanceRecordz/diesel-recordsc                ó0   € V ^8„  d   QhR\         R\        /# r   r  )r.   s   "r/   r0   r0   Ä  ó   € ÷ "ñ "Üð"äñ"r1   c              ƒ   óð   "  € \        \        4      P                  \        P                  P	                  4       4      pV P                  V4      G R j  x€L
 pVP                  4       P                  4       #  L"5ir3   )r   r  r4   Ú
entry_daterª   r7   r8   r9   ©r*   r+   r:   r;   s   &&  r/   Úlist_diesel_recordsr#  Ã  óW   é € ô
 ”,Ó×(Ñ(¬×)@Ñ)@×)EÑ)EÓ)GÓH€DØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùó   ‚AA6ÁA4Á#A6c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚDieselRecordCreater   r   )r.   s   "r/   r0   r0   Î  s,   € ÷ ñ ¬×(BÑ(Bð Ìð ô  wAñ r1   c              ƒ   óÌ   "  € \        R/ V P                  4       B pVP                  V4       VP                  4       G R j  x€L
  VP	                  V4      G R j  x€L
  V#  L L5irD   )r  rF   rG   rH   rI   rs   s   &&& r/   Úcreate_diesel_recordr)  Í  sT   é € äÑ/˜'×,Ñ,Ó.Ñ/€DØ‡F�Fˆ4„LØ
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ ÙùrL   z/diesel-records/{item_id}c                ó<   € V ^8„  d   QhR\         R\        R\        /# r   rP   )r.   s   "r/   r0   r0   ×  s"   € ÷ ñ ¬ð ´,ð Ô`jñ r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5i©NrS   úItem not foundrU   )rW   r  r   rf   rH   r‚   s   &&& r/   Údelete_diesel_recordr.  Ö  óV   é € à—‘œ gÓ.×.€DßÜ¨Ð4DÔEÐEØ
�)‰)�D‹/×ÐØ
�)‰)‹+×Òñ	 /ñ Ùùrj   c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# rw   )r   r"   ÚDieselRecordUpdater   r   )r.   s   "r/   r0   r0   à  s4   € ÷ ñ ¬ð ´w×7QÑ7Qð ÔWcð ô  FPñ r1   c              ƒ   óL  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      P	                  4        F  w  rV\        WEV4       K  	  VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  L� L! L
5i©NrS   r-  rU   Tr^   )rW   r  r   rF   r`   ra   rH   rI   ©rx   rA   r*   r+   rt   ÚkÚvs   &&&&   r/   Úupdate_diesel_recordr7  ß  s‰   é € à—‘œ gÓ.×.€DßÜ¨Ð4DÔEÐEØ×"Ñ"°Ð"Ó6×<Ñ<Ö>‰ˆÜ�˜Öñ ?à
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ /ñ
 Ùùre   z/lpg-gas-recordsc                ó0   € V ^8„  d   QhR\         R\        /# r   r  )r.   s   "r/   r0   r0   î  r  r1   c              ƒ   óð   "  € \        \        4      P                  \        P                  P	                  4       4      pV P                  V4      G R j  x€L
 pVP                  4       P                  4       #  L"5ir3   )r   r  r4   r!  rª   r7   r8   r9   r"  s   &&  r/   Úlist_lpg_gas_recordsr:  í  r$  r%  c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚLPGGasRecordCreater   r   )r.   s   "r/   r0   r0   ø  s,   € ÷ ñ ¬×)CÑ)Cð Ìð ô  xBñ r1   c              ƒ   ó6  "  € V P                   '       d   V P                  V P                   ,          MR p\        R/ V P                  4       BRV/B pVP	                  V4       VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  L L5i©NÚtotal_amountrE   )ÚpriceÚkgr  rF   rG   rH   rI   ©rA   r*   r+   Útotalrt   s   &&&  r/   Úcreate_lpg_gas_recordrD  ÷  su   é € à,3¯M¯M¨MˆW�Z‰Z˜'Ÿ-™-Ö'¸t€EÜÑC˜'×,Ñ,Ó.ÑC¸UÒC€DØ‡F�Fˆ4„LØ
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ Ùùs$   ‚A3BÁ5BÁ6BÂBÂBÂBz/lpg-gas-records/{item_id}c                ó<   € V ^8„  d   QhR\         R\        R\        /# r   rP   )r.   s   "r/   r0   r0     r€   r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5ir,  )rW   r  r   rf   rH   r‚   s   &&& r/   Údelete_lpg_gas_recordrG    r/  rj   c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# rw   )r   r"   ÚLPGGasRecordUpdater   r   )r.   s   "r/   r0   r0     s4   € ÷ ñ ¬ð ¼×8RÑ8Rð ÔXdð ô  GQñ r1   c              ƒ   óT  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      pVP                  RVP                  4      pVP                  RVP
                  4      pV'       dB   VP                  RVP                  4      ;'       g    VP                  V,          V,          VR	&   VP                  4        F  w  r‰\        WHV	4       K  	  VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  EL L" L5i)
NrS   r-  rU   Tr^   rA  r@  Úquantityr?  )rW   r  r   rF   rA  r@  rK  r`   ra   rH   rI   )
rx   rA   r*   r+   rt   ÚdatarA  r@  r5  r6  s
   &&&&      r/   Úupdate_lpg_gas_recordrM  
  sç   é € à—‘œ gÓ.×.€DßÜ¨Ð4DÔEÐEØ×Ñ¨DÐÓ1€Dà	�‰�$˜Ÿ™Ó	 €BØ�H‰H�W˜dŸj™jÓ)€EßØ $§¡¨°T·]±]Ó C× TÐ TÀtÇ}Á}ÐXZÕZÐ]bÕbˆˆ^ÑØ—
‘
–‰ˆÜ�˜Öñ à
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kò /ñ ÙùsF   ‚D(œD!�D(©AD(Â"D(Â+AD(ÄD$ÄD(ÄD&ÄD(Ä$D(Ä&D(z/solar-maintenancec                ó0   € V ^8„  d   QhR\         R\        /# r   r  )r.   s   "r/   r0   r0     r  r1   c              ƒ   óð   "  € \        \        4      P                  \        P                  P	                  4       4      pV P                  V4      G R j  x€L
 pVP                  4       P                  4       #  L"5ir3   )r   r  r4   r!  rª   r7   r8   r9   r"  s   &&  r/   Úlist_solar_maintenancerP    sY   é € ô
 Ô(Ó)×2Ñ2Ô3I×3TÑ3T×3YÑ3YÓ3[Ó\€DØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùr%  c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚSolarMaintenanceCreater   r   )r.   s   "r/   r0   r0   )  s-   € ÷ ñ ¬G×,JÑ,Jð ÔP\ð ô  Iñ r1   c              ƒ   ó  "  € V P                   V P                  ,          p\        R/ V P                  4       BR V/B pVP	                  V4       VP                  4       G Rj  x€L
  VP                  V4      G Rj  x€L
  V#  L L5i©r?  NrE   )rK  r@  r  rF   rG   rH   rI   rB  s   &&&  r/   Úcreate_solar_maintenancerU  (  sm   é € à×Ñ˜wŸ}™}Õ,€EÜ!ÑM G×$6Ñ$6Ó$8ÑMÀuÒM€DØ‡F�Fˆ4„LØ
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ Ùùó$   ‚ABÁ!BÁ"BÁ:BÁ;BÂBz/solar-maintenance/{item_id}c                ó<   € V ^8„  d   QhR\         R\        R\        /# r   rP   )r.   s   "r/   r0   r0   3  ó"   € ÷ ñ ¬Dð ´lð Ôdnñ r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5ir,  )rW   r  r   rf   rH   r‚   s   &&& r/   Údelete_solar_maintenancerZ  2  óW   é € à—‘Ô.°Ó8×8€DßÜ¨Ð4DÔEÐEØ
�)‰)�D‹/×ÐØ
�)‰)‹+×Òñ	 9ñ Ùùrj   c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# rw   )r   r"   ÚSolarMaintenanceUpdater   r   )r.   s   "r/   r0   r0   <  s4   € ÷ ñ ¬Dð ¼7×;YÑ;Yð Ô_kð ô  NXñ r1   c              ƒ   óÖ  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      pVP                  RVP                  4      pVP                  RVP
                  4      pWg,          VR&   VP                  4        F  w  r‰\        WHV	4       K  	  VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  LÆ L! L
5i)	NrS   r-  rU   Tr^   rK  r@  r?  )
rW   r  r   rF   rK  r@  r`   ra   rH   rI   )
rx   rA   r*   r+   rt   rL  Úqtyr@  r5  r6  s
   &&&&      r/   Úupdate_solar_maintenancer`  ;  sÀ   é € à—‘Ô.°Ó8×8€DßÜ¨Ð4DÔEÐEØ×Ñ¨DÐÓ1€Dà
�(‰(�:˜tŸ}™}Ó
-€CØ�H‰H�W˜dŸj™jÓ)€EØ�;€DˆÑØ—
‘
–‰ˆÜ�˜Öñ à
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ 9ñ Ùùs9   ‚C)œC#�C)©BC)ÃC%ÃC)ÃC'ÃC)Ã%C)Ã'C)z/incoming-materialc                ó¸   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\        R\        /# )r'   ÚvendorÚcategoryr£   r¤   r*   r+   ©r   r,   r   r   r   )r.   s   "r/   r0   r0   O  sT   € ÷ "ñ "Ü”S�Mð"ä”s�mð"ô œ�~ð"ô ”d�^ð	"ô
 	ð"ô ñ"r1   c              ƒ   ó`  "  € \        \        4      P                  \        P                  P	                  4       4      pV '       d3   VP                  \        P                  P                  R V  R 24      4      pV'       d#   VP                  \        P                  V8H  4      pV'       d#   VP                  \        P                  V8¬  4      pV'       d#   VP                  \        P                  V8*  4      pVP                  V4      G Rj  x€L
 pVP                  4       P                  4       #  L"5i©Ú%N)r   r   r4   r!  rª   r6   rb  Úilikerc  r7   r8   r9   )rb  rc  r£   r¤   r*   r+   r:   r;   s   &&&&&&  r/   Úlist_incoming_materialri  N  sÛ   é € ô Ô"Ó#×,Ñ,Ô-=×-HÑ-H×-MÑ-MÓ-OÓP€DßØ�z‰zÔ*×1Ñ1×7Ñ7¸!¸F¸8À1¸ÓFÓGˆßØ�z‰zÔ*×3Ñ3°xÑ?Ó@ˆßØ�z‰zÔ*×5Ñ5¸ÑBÓCˆßØ�z‰zÔ*×5Ñ5¸Ñ@ÓAˆØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùs$   ‚A<D.Á?)D.Â))D.Ã6D.Ä	D,Ä
#D.c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚIncomingMaterialCreater   r   )r.   s   "r/   r0   r0   e  s-   € ÷ 
ñ 
¬G×,JÑ,Jð 
ÔP\ð 
ô  Iñ 
r1   c              ƒ   ó~  "  € R pV P                   '       dB   V P                  V P                   ,          pV P                  '       d   W0P                  ,          p\        R/ V P	                  4       BRV/B pVP                  V4       VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  L L5ir>  )ÚraterK  Údiscountr   rF   rG   rH   rI   rB  s   &&&  r/   Úcreate_incoming_materialro  d  s•   é € à€EØ‡|‡|€|Ø× Ñ  7§<¡<Õ/ˆØ××ÐØ×%Ñ%Õ%ˆEÜÑG˜g×0Ñ0Ó2ÑGÀÒG€DØ‡F�Fˆ4„LØ
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ Ùùs+   ‚AB=ÁAB=ÂB9ÂB=Â2B;Â3B=Â;B=z/incoming-material/{item_id}c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# rw   )r   r"   ÚIncomingMaterialUpdater   r   )r.   s   "r/   r0   r0   s  s4   € ÷ ñ ¬Dð ¼7×;YÑ;Yð Ô_kð ô  NXñ r1   c              ƒ   ó2  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      pVP	                  4        F  w  rg\        WFV4       K  	  VP                  '       dY   VP                  VP                  ,          Vn        VP                  '       d$   V;P                  VP                  ,          un        MR Vn        VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  Lô L! L
5ir3  )rW   r   r   rF   r`   ra   rm  rK  r?  rn  rH   rI   )rx   rA   r*   r+   rt   rL  r5  r6  s   &&&&    r/   Úupdate_incoming_materialrs  r  sÓ   é € à—‘Ô(¨'Ó2×2€DßÜ¨Ð4DÔEÐEØ×Ñ¨DÐÓ1€DØ—
‘
–‰ˆÜ�˜Öñ ð ‡y‡y€yØ ŸM™M¨D¯I©IÕ5ˆÔØ�=�=ˆ=Ø×Ò §¡Õ.Õøà ˆÔØ
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ 3ñ ÙùsE   ‚DœD�D©ADÁ?3DÂ3>DÃ1DÃ2DÄ
DÄDÄDÄDc                ó<   € V ^8„  d   QhR\         R\        R\        /# r   rP   )r.   s   "r/   r0   r0   ‡  rX  r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5ir,  )rW   r   r   rf   rH   r‚   s   &&& r/   Údelete_incoming_materialrv  †  sW   é € à—‘Ô(¨'Ó2×2€DßÜ¨Ð4DÔEÐEØ
�)‰)�D‹/×ÐØ
�)‰)‹+×Òñ	 3ñ Ùùrj   z/incoming-material/vendorsc                ó0   € V ^8„  d   QhR\         R\        /# r   r  )r.   s   "r/   r0   r0   �  s   € ÷ ,ñ ,¤Lð ,ÔR\ñ ,r1   c              ƒ  óh  "  € V P                  \        \        \        P                  4      4      P                  \        P                  P                  R4      4      P                  \        P                  4      4      G Rj  x€L
 pVP                  4        Uu. uF  q3^ ,          NK  	  up#  L*u upi 5i)zHReturn all distinct vendor names from incoming material records, sorted.N)	r7   r   r   r   rb  r6   Úisnotr4   r9   )r*   r+   r;   Úrows   &&  r/   Úlist_incoming_vendorsr{  �  s†   é € ð —:‘:ÜŒxÔ(×/Ñ/Ó0Ó1ß	‰Ô×&Ñ&×,Ñ,¨TÓ2Ó	3ß	‰Ô"×)Ñ)Ó	*ó÷ €Fð
 %Ÿj™jœlÓ+™l�s��FˆF™lÑ+Ð+ñùò
 ,ùs$   ‚A>B2Â B+ÂB2ÂB-Â(B2Â-B2z/incoming-material/merge-vendorz$The vendor name to rename/merge FROM)Údescriptionz,The canonical vendor name to rename/merge TOc                óH   € V ^8„  d   QhR\         R\         R\        R\        /# )r'   Úfrom_vendorÚ	to_vendorr*   r+   )r,   r   r   )r.   s   "r/   r0   r0   ›  s6   € ÷ dñ dÜðdäðdô 	ðdô ñ	dr1   c              ƒ  ó”  "  € V P                  4       '       d   VP                  4       '       g   \        RRR7      hV P                  4       P                  4       VP                  4       P                  4       8X  d   \        RRR7      h\        \        4      P                  \        P                  V P                  4       8H  4      P                  VP                  4       R7      pVP                  V4      G Rj  x€L
 pVP                  4       G Rj  x€L
  VP                  pRVRV P                  4       R	VP                  4       /#  LL L65i)
u•   
Bulk-rename all IncomingMaterial records where vendor == from_vendor
to to_vendor. Use this to fix spelling variants like 'Sri Ram' â†’ 'Shri Ram'.
é�  z,Both from_vendor and to_vendor are required.rU   z'from_vendor and to_vendor are the same.)rb  NÚupdatedr~  r  )Ústripr   Úlowerr   r   r6   rb  Úvaluesr7   rH   Úrowcount)r~  r  r*   r+   r:   r;   r‚  s   &&&&   r/   Úmerge_incoming_vendorr‡  š  s  é € ð ×Ñ×Ò i§o¡o×&7Ò&7Ü¨Ð4bÔcÐcØ×ÑÓ× Ñ Ó" i§o¡oÓ&7×&=Ñ&=Ó&?Ô?Ü¨Ð4]Ô^Ð^ô 	ÔÓ ß	‰Ô×&Ñ&¨+×*;Ñ*;Ó*=Ñ=Ó	>ß	‰�y—‘Ó(ˆÓ	)ð 	ð
 —:‘:˜dÓ#×#€FØ
�)‰)‹+×ÐØ�o‰o€GØ�w ¨{×/@Ñ/@Ó/BÀKÐQZ×Q`ÑQ`ÓQbÐcÐcñ $Ùùs)   ‚,E¯CEÃ7EÃ8EÄEÄ5EÅEz/monthly-stockc                ót   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\        R\        /# )r'   r  r  r*   r+   ©r   r§   r   r   )r.   s   "r/   r0   r0   ¸  s8   € ÷ "ñ "Üœ•ð"äœ#•ð"ô 	ð"ô ñ	"r1   c              ƒ   ó¸  "  € \        \        4      P                  \        P                  \        P                  \        P
                  4      pV '       d#   VP                  \        P                  V 8H  4      pV'       d#   VP                  \        P                  V8H  4      pVP                  V4      G R j  x€L
 pVP                  4       P                  4       #  L"5ir3   )r   r   r4   Úcategory_orderÚ
created_atrÁ   r6   r  r  r7   r8   r9   )r  r  r*   r+   r:   r;   s   &&&&  r/   Úlist_monthly_stockr�  ·  s—   é € ô ”,Ó×(Ñ(¬×)DÑ)DÄl×F]ÑF]Ô_k×_nÑ_nÓo€DßØ�z‰zœ,×1Ñ1°ZÑ?Ó@ˆßØ�z‰zœ,×2Ñ2°kÑAÓBˆØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùs   ‚A<CÁ?6CÂ5CÂ6#Cz/monthly-stock/copy-previousc                ó`   € V ^8„  d   QhR\         R\         R\         R\         R\        R\        /# )r'   Úsource_monthÚsource_yearÚtarget_monthÚtarget_yearr*   r+   ré   )r.   s   "r/   r0   r0   È  sL   € ÷ 9hñ 9hÜð9häð9hô ð9hô ð	9hô
 	ð9hô ñ9hr1   c              ƒ   ó(  "  € \        \        4      P                  \        P                  V 8H  \        P                  V8H  4      pVP                  V4      G R j  x€L
 pVP                  4       P                  4       pV'       g   \        RRR7      h\        \        4      P                  \        P                  V8H  \        P                  V8H  4      p	VP                  V	4      G R j  x€L
 p
V
P                  4       P                  4       '       d   \        RRR7      h. pV F¹  pVP                  pWÜP                  ,          pTpTpTpTp\        R/ RVbRVbRVP                  bRVP                  bR	VP                  bR
VP                  bRVP                  bRVbRVbR^ bR^ bRVbRVbR^ bR^ bRVbRVb pVP!                  V4       VP#                  V4       K»  	  VP%                  4       G R j  x€L
  RR\'        V4       RV RV 2/#  EL² EL( L 5i)Nr�  z*No data found in the source month to copy.rU   z)Data already exists for the target month.r  r  rc  r‹  Úmaterial_nameÚuomÚcostÚopening_qtyÚopening_amountÚincoming_qtyÚincoming_amountÚ	total_qtyr?  Úconsumption_qtyÚconsumption_amountÚclosing_qtyÚclosing_amountÚmessagezSuccessfully copied z
 items to Ú/rE   )r   r   r6   r  r  r7   r8   r9   r   Úfirstrž  r–  rc  r‹  r”  r•  ÚappendrG   rH   Úlen)r�  r�  r‘  r’  r*   r+   r:   r;   Úsource_itemsÚstmt_targetÚresult_targetÚnew_entriesrt   r—  Úopening_amtr›  Ú	total_amtrž  Úclosing_amtrñ   s   &&&&&&              r/   Úcopy_monthly_stockr¬  Ç  s?  é € ô ”,Ó×%Ñ%¤l×&>Ñ&>À,Ñ&NÔP\×PgÑPgÐkvÑPvÓw€DØ—:‘:˜dÓ#×#€FØ—>‘>Ó#×'Ñ'Ó)€LçÜ¨Ð4`ÔaÐaô œÓ&×,Ñ,¬\×-EÑ-EÈÑ-UÔWc×WnÑWnÐr}ÑW}Ó~€KØŸ*™* [Ó1×1€MØ×ÑÓ×$Ñ$×&Ò&Ü¨Ð5`ÔaÐ	aà€KÛˆØ×&Ñ&ˆØ!§I¡IÕ-ˆð  ˆ	Øˆ	à!ˆØ!ˆäò 
Ù$ð
á"ð
ð —]’]ð
ð  ×.Ò.ð	
ð
 ×,Ò,ð
ð —’ð
ð —’ð
ñ $ð
ñ 'ð
ñ ð
ñ ð
ñ  ð
ñ #ð
ñ ð
ñ  !ð
ñ  $ð!
ñ" 'ð#
ˆð& 	×Ñ˜5Ô!Ø
�‰ˆuŽñ? ðB �)‰)‹+×ÐØÐ-¬c°+Ó.>Ð-?¸zÈ,ÈÐWXÐYdÐXeÐfÐgÐgò_ $ò 2ñL ùsD   ‚AHÁH
Á)HÂA"HÃ%HÃ&'HÄC!HÇ/HÇ0HÈHÈHc                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚMonthlyStockCreater   r   )r.   s   "r/   r0   r0     s,   € ÷ "ñ "¬×(BÑ(Bð "Ìð "ô  wAñ "r1   c              ƒ   ó  "  € V P                   V P                  ,          pV P                  V P                  ,          pV P                   V P                  ,           pWPP                  ,          pV P                  V P                  ,          pWPP                  ,
          pW€P                  ,          p	\	        R/ R V P
                  bRV P                  bRV P                  bRV P                  bRV P                  bRV P                  bRV P                   bRVbRV P                  bR	VbR
VbRVbRV P                  bRVbRVbRV	b p
VP                  V
4       VP                  4       G Rj  x€L
  VP                  V
4      G Rj  x€L
  V
#  L L5i)r  r  rc  r”  r•  r–  r—  r˜  r™  rš  r›  r?  rœ  r�  rž  rŸ  NrE   )r—  r–  r™  rœ  r   r  r  rc  r”  r•  rG   rH   rI   )rA   r*   r+   r©  Úincoming_amtr›  rª  Úconsumption_amtrž  r«  rñ   s   &&&        r/   Úcreate_monthly_stockr²    s’  é € ð ×%Ñ%¨¯©Õ4€KØ×'Ñ'¨'¯,©,Õ6€Là×#Ñ# g×&:Ñ&:Õ:€IØŸL™LÕ(€Ià×-Ñ-°·±Õ<€Oà×5Ñ5Õ5€KØ§¡Õ,€Käò Ø×'Ò'ðà×%Ò%ðð ×!Ò!ðð ×+Ò+ð	ð
 �KŠKðð �\Š\ðð ×'Ò'ðñ #ðð ×)Ò)ðñ %ðñ ðñ ðð  ×/Ò/ðñ +ðñ  ðñ  #ð!€Eð$ ‡F�Fˆ5„MØ
�)‰)‹+×ÐØ
�*‰*�UÓ
×ÐØ€Lñ Ùùs$   ‚E"FÅ$FÅ%FÅ=FÅ>FÆFz/monthly-stock/{entry_id}c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# rô   )r   r"   ÚMonthlyStockUpdater   r   )r.   s   "r/   r0   r0   *  s4   € ÷ ñ ¬ð ¼×8RÑ8Rð ÔXdð ô  GQñ r1   c              ƒ   ó.  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      pVP	                  4        F  w  rg\        WFV4       K  	  VP                  VP                  ,          Vn        VP                  VP                  ,          Vn
        VP                  VP                  ,           Vn        VP                  VP                  ,          Vn        VP                  VP                  ,          Vn        VP                  VP                  ,
          Vn        VP                  VP                  ,          Vn        VP#                  4       G R j  x€L
  VP%                  V4      G R j  x€L
  V#  ELr L" L5i)NrS   úEntry not foundrU   Tr^   )rW   r   r   rF   r`   ra   r—  r–  r˜  r™  rš  r›  r?  rœ  r�  rž  rŸ  rH   rI   )rõ   rA   r*   r+   rñ   rL  r5  r6  s   &&&&    r/   Úupdate_monthly_stockr·  )  s-  é € à—&‘&œ xÓ0×0€EßÜ¨Ð4EÔFÐFà×Ñ¨DÐÓ1€DØ—
‘
–‰ˆÜ�˜!Öñ ð !×,Ñ,¨u¯z©zÕ9€EÔØ!×.Ñ.°·±Õ;€EÔà×'Ñ'¨%×*<Ñ*<Õ<€E„OØŸ™¨5¯:©:Õ5€EÔà$×4Ñ4°u·z±zÕA€EÔàŸ™¨%×*?Ñ*?Õ?€EÔØ ×,Ñ,¨u¯z©zÕ9€EÔà
�)‰)‹+×ÐØ
�*‰*�UÓ
×ÐØ€Lò- 1ñ( Ùùs9   ‚FœF�F©EFÅ.FÅ/FÆFÆFÆFÆFc                ó<   € V ^8„  d   QhR\         R\        R\        /# rû   rP   )r.   s   "r/   r0   r0   E  r€   r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5i)NrS   r¶  rU   )rW   r   r   rf   rH   rý   s   &&& r/   Údelete_monthly_stockrº  D  sW   é € à—&‘&œ xÓ0×0€EßÜ¨Ð4EÔFÐFØ
�)‰)�EÓ
×ÐØ
�)‰)‹+×Òñ	 1ñ Ùùrj   z/equipment-purchasec                ót   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\        R\        /# )r'   rÃ   rÂ   r*   r+   r‰  )r.   s   "r/   r0   r0   P  s8   € ÷ "ñ "Ü”C�=ð"ä
”3�-ð"ô 	ð"ô ñ	"r1   c              ƒ   óÒ  "  € \        \        4      P                  \        P                  P	                  4       \        P
                  P	                  4       4      pV '       d#   VP                  \        P
                  V 8H  4      pV'       d#   VP                  \        P                  V8H  4      pVP                  V4      G R j  x€L
 pVP                  4       P                  4       #  L"5ir3   )
r   r    r4   r  rª   r  r6   r7   r8   r9   )rÃ   rÂ   r*   r+   r:   r;   s   &&&&  r/   Úlist_equipment_purchaser½  O  s©   é € ô Ô#Ó$×-Ñ-Ü×'Ñ'×,Ñ,Ó.Ü×(Ñ(×-Ñ-Ó/ó€D÷ Ø�z‰zÔ+×:Ñ:¸eÑCÓDˆßØ�z‰zÔ+×9Ñ9¸TÑAÓBˆØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùs   ‚B	C'Â6C'ÃC%Ã#C'c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚEquipmentPurchaseCreater   r   )r.   s   "r/   r0   r0   c  s-   € ÷ ñ ¬W×-LÑ-Lð ÔR^ð ô  AKñ r1   c              ƒ   ó  "  € V P                   V P                  ,          p\        R/ V P                  4       BR V/B pVP	                  V4       VP                  4       G Rj  x€L
  VP                  V4      G Rj  x€L
  V#  L L5irT  )rK  Ú
unit_pricer    rF   rG   rH   rI   rB  s   &&&  r/   Úcreate_equipment_purchaserÂ  b  so   é € à×Ñ˜w×1Ñ1Õ1€EÜÑH˜w×1Ñ1Ó3ÑHÀ%ÒH€DØ‡F�Fˆ4„LØ
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ ÙùrV  z/equipment-purchase/{item_id}c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# rw   )r   r"   ÚEquipmentPurchaseUpdater   r   )r.   s   "r/   r0   r0   m  s4   € ÷ 	ñ 	¬Tð 	¼G×<[Ñ<[ð 	Ôamð 	ô  PZñ 	r1   c              ƒ   ó�  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      P	                  4        F  w  rV\        WEV4       K  	  VP                  VP                  ,          Vn        VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  L£ L! L
5ir3  )rW   r    r   rF   r`   ra   rK  rÁ  r?  rH   rI   r4  s   &&&&   r/   Úupdate_equipment_purchaserÆ  l  sŸ   é € à—‘Ô)¨7Ó3×3€DßÜ¨Ð4DÔEÐEØ×"Ñ"°Ð"Ó6×<Ñ<Ö>‰ˆÜ�˜Öñ ?àŸ™¨¯©Õ7€DÔØ
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ 4ñ Ùùs9   ‚CœC �C©A7CÂ CÂ!CÂ9CÂ:CÃCÃCc                ó<   € V ^8„  d   QhR\         R\        R\        /# r   rP   )r.   s   "r/   r0   r0   z  s"   € ÷ ñ ¬Tð ´|ð Ôeoñ r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5ir,  )rW   r    r   rf   rH   r‚   s   &&& r/   Údelete_equipment_purchaserÉ  y  sW   é € à—‘Ô)¨7Ó3×3€DßÜ¨Ð4DÔEÐEØ
�)‰)�D‹/×ÐØ
�)‰)‹+×Òñ	 4ñ Ùùrj   z/equipment-rentalc          
      ó–   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\         \        ,          R\        R\        /# )r'   rb  r£   r¤   r*   r+   rd  )r.   s   "r/   r0   r0   …  sF   € ÷ "ñ "Ü”S�Mð"äœ�~ð"ô ”d�^ð"ô 	ð	"ô
 ñ"r1   c              ƒ   ó  "  € \        \        4      P                  \        P                  P	                  4       4      pV '       d3   VP                  \        P                  P                  R V  R 24      4      pV'       d#   VP                  \        P                  V8¬  4      pV'       d#   VP                  \        P                  V8*  4      pVP                  V4      G Rj  x€L
 pVP                  4       P                  4       #  L"5irf  )r   r!   r4   r  rª   r6   rb  rh  r7   r8   r9   )rb  r£   r¤   r*   r+   r:   r;   s   &&&&&  r/   Úlist_equipment_rentalrÌ  „  s¹   é € ô ”/Ó"×+Ñ+¬O×,GÑ,G×,LÑ,LÓ,NÓO€DßØ�z‰zœ/×0Ñ0×6Ñ6¸¸6¸(À!°}ÓEÓFˆßØ�z‰zœ/×5Ñ5¸ÑBÓCˆßØ�z‰zœ/×5Ñ5¸Ñ@ÓAˆØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùs   ‚A<DÁ?)DÂ)6DÃDÃ #Dc                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚEquipmentRentalCreater   r   )r.   s   "r/   r0   r0   ˜  s,   € ÷ ñ ¬7×+HÑ+Hð Ìlð ô  }Gñ r1   c              ƒ   óÌ   "  € \        R/ V P                  4       B pVP                  V4       VP                  4       G R j  x€L
  VP	                  V4      G R j  x€L
  V#  L L5irD   )r!   rF   rG   rH   rI   rs   s   &&& r/   Úcreate_equipment_rentalrÐ  —  sT   é € äÑ2˜W×/Ñ/Ó1Ñ2€DØ‡F�Fˆ4„LØ
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ ÙùrL   z/equipment-rental/{item_id}c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# rw   )r   r"   ÚEquipmentRentalUpdater   r   )r.   s   "r/   r0   r0   ¡  s4   € ÷ ñ ¬4ð ¼'×:WÑ:Wð Ô]ið ô  LVñ r1   c              ƒ   óL  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      P	                  4        F  w  rV\        WEV4       K  	  VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  L� L! L
5ir3  )rW   r!   r   rF   r`   ra   rH   rI   r4  s   &&&&   r/   Úupdate_equipment_rentalrÔ     s‰   é € à—‘œ¨Ó1×1€DßÜ¨Ð4DÔEÐEØ×"Ñ"°Ð"Ó6×<Ñ<Ö>‰ˆÜ�˜Öñ ?à
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ 2ñ
 Ùùre   c                ó<   € V ^8„  d   QhR\         R\        R\        /# r   rP   )r.   s   "r/   r0   r0   ­  s"   € ÷ ñ ¬4ð ´\ð Ôcmñ r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5ir,  )rW   r!   r   rf   rH   r‚   s   &&& r/   Údelete_equipment_rentalr×  ¬  sV   é € à—‘œ¨Ó1×1€DßÜ¨Ð4DÔEÐEØ
�)‰)�D‹/×ÐØ
�)‰)‹+×Òñ	 2ñ Ùùrj   ©ÚMachineConsumptionCostz/machine-costc                óR   € V ^8„  d   QhR\         \        ,          R\        R\        /# )r'   rÂ   r*   r+   r‰  )r.   s   "r/   r0   r0   º  s*   € ÷ "ñ "Ü
”3�-ð"äð"ô ñ"r1   c              ƒ   óF  "  € \        \        4      P                  \        P                  \        P                  4      pV '       d#   VP                  \        P                  V 8H  4      pVP                  V4      G R j  x€L
 pVP                  4       P                  4       #  L"5ir3   )
r   rÙ  r4   Údisplay_orderrŒ  r6   rÂ   r7   r8   r9   )rÂ   r*   r+   r:   r;   s   &&&  r/   Úlist_machine_costrÝ  ¹  sz   é € ô Ô(Ó)×2Ñ2Ü×,Ñ,Ü×)Ñ)ó€D÷ Ø�z‰zÔ0×5Ñ5¸Ñ=Ó>ˆØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùro   c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚMachineCostCreater   r   )r.   s   "r/   r0   r0   Ê  s(   € ÷ ñ ¤w×'@Ñ'@ð Älð Ôt~ñ r1   c              ƒ   óÌ   "  € \        R/ V P                  4       B pVP                  V4       VP                  4       G R j  x€L
  VP	                  V4      G R j  x€L
  V#  L L5irD   )rÙ  rF   rG   rH   rI   rs   s   &&& r/   Úcreate_machine_costrá  É  sT   é € ä!Ñ9 G×$6Ñ$6Ó$8Ñ9€DØ‡F�Fˆ4„LØ
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ ÙùrL   z/machine-cost/{item_id}c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# rw   )r   r"   ÚMachineCostUpdater   r   )r.   s   "r/   r0   r0   Ó  s4   € ÷ ñ ¤tð ´g×6OÑ6Oð ÔUað ô  DNñ r1   c              ƒ   óL  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  RR7      P	                  4        F  w  rV\        WEV4       K  	  VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  L� L! L
5ir3  )rW   rÙ  r   rF   r`   ra   rH   rI   r4  s   &&&&   r/   Úupdate_machine_costrå  Ò  sŠ   é € à—‘Ô.°Ó8×8€DßÜ¨Ð4DÔEÐEØ×"Ñ"°Ð"Ó6×<Ñ<Ö>‰ˆÜ�˜Öñ ?à
�)‰)‹+×ÐØ
�*‰*�TÓ
×ÐØ€Kñ 9ñ
 Ùùre   c                ó<   € V ^8„  d   QhR\         R\        R\        /# r   rP   )r.   s   "r/   r0   r0   ß  s"   € ÷ ñ ¤tð ´ð Ô_iñ r1   c              ƒ   óâ   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  V4      G R j  x€L
  VP	                  4       G R j  x€L
  R #  LL L  L
5ir,  )rW   rÙ  r   rf   rH   r‚   s   &&& r/   Údelete_machine_costrè  Þ  r[  rj   )ÚDailyConsumableStockz/consumables/dailyc          
      óT   € V ^8„  d   QhR\         R\         R\        R\        R\        /# )r'   rÂ   rÃ   Úconsumable_typer*   r+   )r§   r,   r   r   )r.   s   "r/   r0   r0   ì  s:   € ÷ "ñ "Ü
ð"äð"ô ð"ô 	ð	"ô
 ñ"r1   c              ƒ   ó„  "  € \        \        4      P                  \        R \        P                  4      V 8H  \        R\        P                  4      V8H  \        P
                  V8H  4      P                  \        P                  4      pVP                  V4      G Rj  x€L
 pVP                  4       P                  4       #  L"5i)rÂ   rÃ   N)
r   ré  r6   r   r©   rë  r4   r7   r8   r9   )rÂ   rÃ   rë  r*   r+   r:   r;   s   &&&&&  r/   Úlist_daily_consumablesrí  ë  s›   é € ô Ô&Ó'×-Ñ-Ü�Ô,×8Ñ8Ó9¸TÑAÜ�Ô-×9Ñ9Ó:¸eÑCÜ×,Ñ,°Ñ?ó÷ �hÔ#×/Ñ/Ó0ð	 	ð
 —:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùrí   z/consumables/daily/batchc                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r@   )r"   ÚDailyConsumableBatchUpdateReqr   r   )r.   s   "r/   r0   r0   ý  s,   € ÷ 2"ñ 2"Ü×2Ñ2ð2"äð2"ô ñ2"r1   c              ƒ   óê  "  € \        \        4      P                  \        R \        P                  4      V P
                  8H  \        R\        P                  4      V P                  8H  \        P                  V P                  8H  4      pVP                  V4      G Rj  x€L
 pVP                  4       P                  4        Uu/ uF  qUP                  VbK  	  ppV P                  p. p\        V P                  R R7       Fù  p	WyP                  ,           p
W©P                  ,
          pV	P                  V9   dY   WiP                  ,          pWun        V	P                  Vn        W¥n        V	P                  Vn        Wµn        V	P&                  Vn        MV\        V	P                  V	P                  VV	P                  V
V	P                  VV	P&                  R7      pVP)                  V4       VP+                  V4       TpKû  	  VP-                  4       G Rj  x€L
  VP                  VP/                  \        P                  4      4      G Rj  x€L
 pVP                  4       P                  4       #  ELËu upi  L` L,5i)rÂ   rÃ   Nc                 ó   € V P                   # r3   )r©   )Úxs   &r/   Ú<lambda>Ú0batch_upsert_daily_consumables.<locals>.<lambda>  s   € °Q·]²]r1   )rb   )r©   rë  Úopening_stockÚreceived_stockÚtotal_stockÚconsumed_stockÚclosing_stockÚremark)r   ré  r6   r   r©   rÂ   rÃ   rë  r7   r8   r9   Úinitial_opening_stockÚsortedÚ	days_datarö  rø  rõ  r÷  rù  rú  rG   r£  rH   r4   )rA   r*   r+   r:   r;   rt   Úexisting_mapÚcurrent_openingÚ	processedÚdrC  Úclosings   &&&         r/   Úbatch_upsert_daily_consumablesr  ü  sú  é € ô Ô&Ó'×-Ñ-Ü�Ô,×8Ñ8Ó9¸W¿\¹\ÑIÜ�Ô-×9Ñ9Ó:¸g¿m¹mÑKÜ×,Ñ,°×0GÑ0GÑGó€Dð
 —:‘:˜dÓ#×#€FØ7=·~±~Ó7G×7KÑ7KÔ7MÓNÑ7M¨t×$Ñ$ dÒ*Ñ7M€LÐNð ×3Ñ3€OØ€Iä�G×%Ñ%Ñ+B×CˆØ×"2Ñ"2Õ2ˆØ×*Ñ*Õ*ˆà�=‰=˜LÔ(Ø§¡Õ.ˆDØ!0ÔØ"#×"2Ñ"2ˆDÔØ$ÔØ"#×"2Ñ"2ˆDÔØ!(ÔØŸ(™(ˆD�Kä'ØŸM™MØ !× 1Ñ 1Ø-Ø ×/Ñ/Ø!Ø ×/Ñ/Ø%Ø—x‘xô	ˆDð �F‰F�4ŒLà×Ñ˜ÔØ!Šñ5 Dð8 �)‰)‹+×Ðð —:‘:˜dŸm™mÔ,@×,LÑ,LÓMÓN×N€FØ�>‰>Ó×ÑÓ!Ð!òO $ùÚNñD ñ OùsC   ‚BI3ÂI'Â$I3ÃI*ÃD8I3ÈI/È5I3ÉI1É#I3É*I3É1I3)ÚDecimalÚjan_costÚfeb_costÚmar_costÚapr_costÚmay_costÚjun_costÚjul_costÚaug_costÚsep_costÚoct_costÚnov_costÚdec_costi¸  iÜ  c          	      óŠ   € V ^8„  d   QhR\         \        ,          R\        R\        \        \         \        ,          3,          /# )r'   Úcost_per_busÚbusesÚreturn)r   ÚDr§   Útupler,   )r.   s   "r/   r0   r0   D  s3   € ÷ ñ œX¤a�[ð ´ð ¼¼sÄHÌSÅMÐ?QÕ9Rñ r1   c                óŽ   € V^ 8X  d   V f   R# RRV R R23# V f   R# V \         8¼  d
   RRV R R23# V \        8¼  d
   RRV R R23# R# )	z6Return (alert_level, alert_message) for a machine row.ÚWATCHu   â‚¹z,.0fu7    spent with 0 buses produced â€” verify production dataÚALERTu@   /bus is very high â€” investigate machine aging or faulty sparesu%   /bus â€” monitor this machine closely)ÚOKN)ÚALERT_THRESHOLDÚWATCH_THRESHOLD)r  r  s   &&r/   Ú
_get_alertr  D  s   € à�„zØÒØÐØ˜#˜l¨4Ð0Ð0gÐhÐhÐhØÒØÐØ”Ô&Ø˜#˜l¨4Ð0Ð0pÐqÐqÐqØ”Ô&Ø˜#˜l¨4Ð0Ð0UÐVÐVÐVØÐr1   z/cost-vs-productionzYear (e.g. 2026)zMonth number 1-12)rž   rŸ   r|  c                óH   € V ^8„  d   QhR\         R\         R\        R\        /# rè   ré   )r.   s   "r/   r0   r0   T  s6   € ÷ Sñ SÜ
ðSäðSô 	ðSô ñ	Sr1   c              ƒ  ól  "  € ^ RI Hp \        V,          p\        V4      P	                  VP
                  V 8H  VP                  P                  R4      4      pVP                  V4      G Rj  x€L
 pVP                  4       P                  4       p^ p	V'       d+   \        W…4      p
 V
'       d   \        \        V
4      4      M^ p	\        V4      P	                  VP
                  V 8H  \         P"                  ! VP                  4      P%                  . RO4      ( 4      P'                  VP(                  VP*                  4      pVP                  V4      G Rj  x€L
 pVP                  4       P-                  4       p. p\/        R4      pV Fµ  p\/        \1        \        VV4      ;'       g    ^ 4      4      pVV,          pV	^ 8”  d   V^ 8”  d   VV	,          pMV^ 8X  d   \/        R4      pMRp\3        VV	4      w  ppTP5                  \6        P8                  ! VP                  TT	Ve   \;        V^4      MRVVR7      4       K·  	  V	^ 8”  d   \;        Wù,          ^4      pMV^ 8X  d   \/        R4      pMRp\6        P<                  ! V V\>        V,          V	VVVR7      #  EL)  \        \        3 d    ^ p	 ELëi ; i EL_5i)a  
Analytics: For each machine, compare monthly maintenance cost against
the number of buses dispatched in that period. Calculates cost/bus and
flags machines where cost is unjustifiably high relative to production.

Bus count is auto-derived from chassis_master.dispatched_at.
rØ  z%Total bus%NÚ0)Úmachine_nameÚ
month_costÚbuses_producedr  Úalert_levelÚalert_message)rÂ   rÃ   Ú
month_nameÚtotal_buses_producedÚtotal_maintenance_costÚoverall_cost_per_busÚmachines)z
total costz	total busz%/ busz% / bus) Úapp.models.maintenance_modelsrÙ  ÚMONTH_FIELD_MAPr   r6   rÂ   r!  rh  r7   r8   r¢  Úgetattrr§   ÚfloatÚ
ValueErrorÚ	TypeErrorr
   r„  Úin_r4   rÜ  rŒ  r9   r  r,   r  r£  r"   ÚMachineCostVsProductionItemÚroundÚCostVsProductionOutÚMONTH_NAMES)rÂ   rÃ   r*   r+   rÙ  Úmonth_fieldÚtotal_bus_stmtÚtotal_bus_resultÚtotal_bus_rowr#  ÚvalÚ	cost_stmtÚcost_resultÚmachine_rowsÚmachine_itemsÚ
total_costrz  r"  r  r$  r%  r)  s   &&&&                  r/   Úcost_vs_productionr@  S  sy  é € õ Eä! %Õ(€Kô Ð2Ó3×9Ñ9Ø×#Ñ# tÑ+Ø×+Ñ+×1Ñ1°-Ó@ó€Nð  ŸZ™Z¨Ó7×7ÐØ$×,Ñ,Ó.×4Ñ4Ó6€Mà€NßÜ�mÓ1ˆð	ß03œS¤ s£œ_¸ˆNô
 Ð-Ó.×4Ñ4Ø×#Ñ# tÑ+Ü	�ŠÐ*×7Ñ7Ó	8×	<Ñ	<Ò=mÓ	nÐnó÷ �hÐ%×3Ñ3Ð5K×5VÑ5VÓWð ð Ÿ
™
 9Ó-×-€KØ×&Ñ&Ó(×,Ñ,Ó.€Lð €MÜ�3“€JãˆÜ”sœ7 3¨Ó4×9Ð9¸Ó:Ó;ˆ
Ø�jÕ ˆ
à˜AÔ *¨q¤.Ø%¨Õ6‰LØ˜1Œ_Ü˜S›6‰LàˆLä%/°¸nÓ%MÑ"ˆ�]à×ÑœW×@Ò@Ø×)Ñ)Ø!Ø)Ø3?Ò3Kœ˜|¨QÔ/ÐQUØ#Ø'ô
ö 	ñ ð. ˜ÔÜ$ ZÕ%@À!ÓDÑØ	�qŒÜ  ›vÑà#Ðä×&Ò&ØØÜ˜uÕ%Ø+Ø)Ø1Øôð òk 8øô œIÐ&ô 	Ø‹Nð	úò .ùsJ   ‚A)J4Á+JÁ,+J4ÂJ4Â$J ÃBJ4ÅJ1ÅEJ4ÊJ.Ê*J4Ê-J.Ê.J4)Ú ÚJanÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDec)ŽÚfastapir   r   r   r   r   r   r	   Ú
sqlalchemyr
   r   r   r   rŽ   r—   Úsqlalchemy.ext.asyncior   Úsqlalchemy.futurer   Úsqlalchemy.ormr   Útypingr   r   r�   r   r   r   Úapp.core.securityr   Úapp.models.core_modelsr   Úapp.core.databaser   r+  r   r   r   r   r   r   r   r    r!   rA  r"   ÚrouterrW   ÚMaintenanceAssetOutr<   ÚpostÚHTTP_201_CREATEDrK   rY   Úputrd   rf   ÚHTTP_204_NO_CONTENTri   ÚChecklistItemOutrn   ru   r}   rƒ   r�   ÚMaintenanceRecordListOutr¬   ÚMaintenanceRecordOutrÕ   rÛ   rã   ræ   ÚPMScheduleOutrì   rò   rù   rþ   r  r  r  r  r  ÚDieselRecordOutr#  r)  r.  r7  ÚLPGGasRecordOutr:  rD  rG  rM  ÚSolarMaintenanceOutrP  rU  rZ  r`  ÚIncomingMaterialOutri  ro  rs  rv  r,   r{  rá   r‡  ÚMonthlyStockOutr�  r¬  r²  r·  rº  ÚEquipmentPurchaseOutr½  rÂ  rÆ  rÉ  ÚEquipmentRentalOutrÌ  rÐ  rÔ  r×  rÙ  ÚMachineCostOutrÝ  rá  rå  rè  ré  ÚDailyConsumableStockOutrí  r  Údecimalr  r  r5  r,  r  r  r  r4  r@  rE   r1   r/   Ú<module>rk     sØ  ðß V× VÑ Vß 6Ó 6Û 	Û Ý /Ý $Ý 'ß !Ý ß #å 0Ý -Ý $÷÷ õ õ
 á	‹€ð
 ‡�ˆI d¨7×+FÑ+FÕ&G€ÓHá"'¨£+Ù % d£Ù˜v“Ù&Ñ'9¸-ÈÓ'PÓQö	"ó Ið"ð ‡�ˆY w×'BÑ'BÐPV×PgÑPg€ÓhÙSZÐ[aÓSbñ  @Gñ  HZð  [hð  jró  Hsó  @tö ó iðð ‡�Ð °×1LÑ1L€ÓMÙ7>¸v³ÑcjÑk}ð  Lð  NTó  lUó  dVö ó Nðð ‡�Ð °×1LÑ1L€ÓMÙcjÐkqÓcrñ  PWñ  Xjð  kxð  z@ó  XAó  PBö ó Nðð ‡�Ð#°×1KÑ1K€ÓLÙ:AÀ&»/Ñfmñ  oAð  BOð  QYó  oZó  g[ö ó Mðð ‡�ˆL¨¨g×.FÑ.FÕ)G€ÓHá"'¨£+Ù˜v“Ù&Ñ'9¸-ÈÓ'PÓQö"ó Ið"ð ‡�ˆ\¨'×*BÑ*BÐPV×PgÑPg€ÓhÙY`ÐagÓYhñ  FMñ  N`ð  anð  pxó  Nyó  Fzö ó iðð ‡�Ð"°7×3KÑ3K€ÓLÙhoÐpvÓhwñ  U\ñ  ]oð  p}ð  Gó  ]Hó  UIö ó Mðð ‡�Ð%°6×3MÑ3M€ÓNÙBIÈ&Ã/Ñnuñ  wIð  JWð  Yaó  wbó  ocö ó Oðð ‡�ˆ_Óá˜C“yÙ&Ñ'9¸-ÈÓ'RÓSö7ó ð7ð& ‡�ˆJ t¨G×,LÑ,LÕ'M€ÓNá$ T›{Ù&+¨D£kÙ! $›KÙ# D›kÙ % d£Ù# D›kÙ�a˜A”Ù�s˜q TÔ*Ù˜v“Ù&Ñ'9¸-ÈÓ'PÓQö"ó Oð"ð< ‡�ˆZ¨×(DÑ(DÐRX×RiÑRi€ÓjÙU\Ð]cÓUdñ  BIñ  J\ð  ]jð  ltó  Juó  Bvö 1ó kð1ðh ‡�Ð"°7×3OÑ3O€ÓPÙ9@À»ÑelÑmð  ANð  PVó  nWó  fXö ó Qðð ‡�Ð"°7×3OÑ3O€ÓPÙfmÐntÓfuñ  SZñ  [mð  n{ð  }Có  [Dó  SEö ,ó Qð,ð^ ‡�Ð%°6×3MÑ3M€ÓNÙ<CÀF»OÑhoñ  qCð  DQð  S[ó  q\ó  i]ö ó Oðð ‡�ˆK¨¨W×-BÑ-BÕ(C€ÓDá�c“
Ù�s“Ù˜v“Ù&Ñ'9¸-ÈÓ'PÓQö	"ó Eð"ð& ‡�ˆ[¨×)>Ñ)>ÈF×LcÑLc€ÓdÙV]Ð^dÓVeñ  CJñ  K]ð  ^kð  muó  Kvó  Cwö ó eðð ‡�Ð"°7×3HÑ3H€ÓIÙfmÐntÓfuñ  SZñ  [mð  n{ð  }Có  [Dó  SEö 	ó Jð	ð ‡�Ð%°6×3MÑ3M€ÓNÙCJÈ6Ã?Ñovñ  xJð  KXð  Zbó  xcó  pdö ó Oðð ‡�ˆL¨×)JÑ)J€ÓKÙ+2°6«?ÑW^Ñ_qÐrð  BHó  `Ió  XJö Ró LðR÷j ]Ñ \ð ‡�Ð¨d°7×3JÑ3JÕ.K€ÓLá˜v“Ù&Ñ'9¸-ÈÓ'PÓQö"ó Mð"ð ‡�Ð¨w×/FÑ/FÐTZ×TkÑTk€ÓlÙW^Ð_eÓWfñ  DKñ  L^ð  _lð  nvó  Lwó  Dxö ó mðð ‡�Ð*¸×8RÑ8R€ÓSÙAHÈÃÑmtñ  vHð  IVð  X`ó  vaó  nbö ó Tðð ‡�Ð'¸×8OÑ8O€ÓPÙfmÐntÓfuñ  SZñ  [mð  n{ð  }Có  [Dó  SEö ó Qðð ‡�Ð¨t°G×4KÑ4KÕ/L€ÓMá˜v“Ù&Ñ'9¸-ÈÓ'PÓQö"ó Nð"ð ‡�Ð°×0GÑ0GÐU[×UlÑUl€ÓmÙX_Ð`fÓXgñ  ELñ  M_ð  `mð  owó  Mxó  Eyö ó nðð ‡�Ð+¸×9SÑ9S€ÓTÙBIÈ&Ã/Ñnuñ  wIð  JWð  Yaó  wbó  ocö ó Uðð ‡�Ð(¸×9PÑ9P€ÓQÙgnÐouÓgvñ  T[ñ  \nð  o|ð  ~Dó  \Eó  TFö ó Rðð& ‡�Ð °°g×6QÑ6QÕ1R€ÓSá˜v“Ù&Ñ'9¸-ÈÓ'PÓQö"ó Tð"ð ‡�Ð!°'×2MÑ2MÐ[a×[rÑ[r€ÓsÙ_fÐgmÓ_nñ  LSñ  Tfð  gtð  v~ó  Tó  L@ö ó tðð ‡�Ð-¸6×;UÑ;U€ÓVÙELÈVÃ_Ñqxñ  zLð  MZð  \dó  zeó  rfö ó Wðð ‡�Ð*¸7×;VÑ;V€ÓWÙnuÐv|Ón}ñ  [bñ  cuð  vCð  EKó  cLó  [Mö ó Xðð$ ‡�Ð °°g×6QÑ6QÕ1R€ÓSá! $›KÙ# D›kÙ % d£Ù# D›kÙ˜v“Ù&Ñ'9¸-ÈÓ'PÓQö"ó Tð"ð* ‡�Ð!°'×2MÑ2MÐ[a×[rÑ[r€ÓsÙ_fÐgmÓ_nñ  LSñ  Tfð  gtð  v~ó  Tó  L@ö 
ó tð
ð ‡�Ð*¸7×;VÑ;V€ÓWÙnuÐv|Ón}ñ  [bñ  cuð  vCð  EKó  cLó  [Mö ó Xðð& ‡�Ð-¸6×;UÑ;U€ÓVÙELÈVÃ_Ñqxñ  zLð  MZð  \dó  zeó  rfö ó Wðð ‡�Ð(¸¸c½€ÓCÙ3:¸6³?Ñ_fÑgyð  {Hð  JPó  hQó  `Rö ,ó Dð,ð ‡�Ð.¸t€ÓDá˜SÐ.TÔUÙ˜3Ð,ZÔ[Ù˜v“Ù&Ñ'9¸-ÈÓ'PÓQö	dó Eðdð8 ‡�Ð¨T°'×2IÑ2IÕ-J€ÓKá % d£Ù!& t£Ù˜v“Ù&Ñ'9¸-ÈÓ'PÓQö	"ó Lð"ð ‡�Ð+¸D€ÓAá˜c›
Ù˜S“zÙ˜c›
Ù˜S“zÙ˜v“Ù&Ñ'9¸-ÈÓ'RÓSö9hó Bð9hðv ‡�Ð¨g×.EÑ.EÐSY×SjÑSj€ÓkÙW^Ð_eÓWfñ  DKñ  L^ð  _lð  nvó  Lwó  Dxö "ó lð"ðJ ‡�Ð'¸×8OÑ8O€ÓPÙgnÐouÓgvñ  T[ñ  \nð  o|ð  ~Dó  \Eó  TFö ó Qðð4 ‡�Ð*¸×8RÑ8R€ÓSÙBIÈ&Ã/Ñnuñ  wIð  JWð  Yaó  wbó  ocö ó Tðð ‡�Ð!°$°w×7SÑ7SÕ2T€ÓUá  ›;Ù ›+Ù˜v“Ù&Ñ'9¸-ÈÓ'PÓQö	"ó Vð"ð$ ‡�Ð"°7×3OÑ3OÐ]c×]tÑ]t€ÓuÙahÐioÓapñ  NUñ  Vhð  ivð  x@ó  VAó  NBö ó vðð ‡�Ð+¸G×<XÑ<X€ÓYÙpwÐx~Ópñ  ]dñ  ewð  xEð  GMó  eNó  ]Oö 	ó Zð	ð ‡�Ð.¸F×<VÑ<V€ÓWÙFMÈfÃoÑryñ  {Mð  N[ð  ]eó  {fó  sgö ó Xðð ‡�Ð°°W×5OÑ5OÕ0P€ÓQá! $›KÙ % d£Ù# D›kÙ˜v“Ù&Ñ'9¸-ÈÓ'PÓQö"ó Rð"ð$ ‡�Ð °×1KÑ1KÐY_×YpÑYp€ÓqÙ]dÐekÓ]lñ  JQñ  Rdð  erð  t|ó  R}ó  J~ö ó rðð ‡�Ð)¸'×:TÑ:T€ÓUÙlsÐtzÓl{ñ  Y`ñ  asð  tAð  CIó  aJó  YKö ó Vðð ‡�Ð,¸&×:TÑ:T€ÓUÙDKÈFÃOÑpwñ  yKð  LYð  [có  ydó  qeö ó Vðõ Aà‡�ˆO¨D°×1GÑ1GÕ,H€ÓIá ›+Ù˜v“Ù&Ñ'9¸-ÈÓ'PÓQö"ó Jð"ð ‡�ˆ_¨W×-CÑ-CÐQW×QhÑQh€ÓiÙU\Ð]cÓUdñ  BIñ  J\ð  ]jð  ltó  Juó  Bvö ó jðð ‡�Ð%°g×6LÑ6L€ÓMÙdkÐlrÓdsñ  QXñ  Ykð  lyð  {Aó  YBó  QCö ó Nðð ‡�Ð(°f×6PÑ6P€ÓQÙ@GÈÃÑlsñ  uGð  HUð  W_ó  u`ó  maö ó Rðõ ?à‡�Ð °°g×6UÒ6UÕ1V€ÓWá�c“
Ù�s“Ù  ›:Ù˜v“Ù&Ñ'9¸-ÈÓ'PÓQö"ó Xð"ð  ‡�Ð'¸¸W×=\Ò=\Õ8]€Ó^ñ ˜v“Ù&Ñ'9¸-ÈÓ'RÓSö2"ó _ð2"õn !ò9€ð €z�1�j ! Z°°JØ€z�1�j ! Z°°JØ€z�2�z 2 z°2°zð€ð €Ø€õð ‡�Ð!°'×2MÒ2M€ÓNá�cÐ'9Ô:Ù�s˜q RÐ5HÔIÙ˜v“Ù&Ñ'9¸-ÈÓ'PÓQö	Só OòSr1   