+
    `Øjºþ  ã                   ó  € ^ RI HtHtHtHt ^ RIHt ^ RIHt ^ RI	H
t
HtHt ^ RIHt ^ RIHtHt ^ RIt^ RIHtHtHt ^ R	IHt ^ R
IHt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&H't'H(t(H)t)H*t*H+t+H,t, ^ RI-H.t. ^ RI/H0t0H1t1 ^ RI2H3t3 ^ RI4H5t5 ^ RI4H6t7 ^ RI8H9t9 ]! R.R7      t:]:Pw                  R4      ]! R4      ]! R4      ]! ]4      ]! ]! RR4      4      3R R ll4       t<]:Pw                  R]]5Pz                  ,          R7      ]! ]4      ]! ]! RR.R4      4      3R R ll4       t>]:Pw                  R]]5P~                  ,          R7      ]! ]4      ]! ]! RR.R4      4      3R  R! ll4       t@]:Pw                  R"]]5P‚                  ,          R7      RRR]! ]4      ]! ]! RR.R4      4      3R# R$ ll4       tB]:Pw                  R%]5P‚                  R7      ]! ]4      ]! ]! RR.R4      4      3R& R' ll4       tC]:P‰                  R"]5P‚                  R7      ]! ]4      ]! ]! RR(4      4      3R) R* ll4       tE]:P�                  R%]5P‚                  R7      ]! ]4      ]! ]! RR+4      4      3R, R- ll4       tG]:Pw                  R.]]5P�                  ,          R7      ]! ]4      ]! ]! RR4      4      3R/ R0 ll4       tI]:P‰                  R.]5P�                  R7      ]! ]4      ]! ]! RR(4      4      3R1 R2 ll4       tJ]:P‰                  R3]5P–                  R7      ]! ]4      ]! ]! RR(4      4      3R4 R5 ll4       tL]:Pw                  R3]]5P–                  ,          R7      ]! ]4      ]! ]! RR4      4      3R6 R7 ll4       tM]:P‰                  R8]5P–                  R7      ]! ]4      ]! ]! RR+4      4      3R9 R: ll4       tN]:P‰                  R;]5Pž                  R7      ]! ]4      ]! ]! RR(4      4      3R< R= ll4       tP]:Pw                  R;]]5Pž                  ,          R7      ]! ]4      ]! ]! RR4      4      3R> R? ll4       tQ]:P¥                  R@]5Pž                  R7      ]! ]4      ]! ]! RR+4      4      3RA RB ll4       tS]:P‰                  RC]5P¨                  R7      ]! ]4      ]! ]! RR(4      4      3RD RE ll4       tU]:P‰                  RF]5P¨                  R7      ]! ]4      ]! ]! RRG4      4      3RH RI ll4       tV]:Pw                  RC]]5P¨                  ,          R7      ]! ]4      ]! ]! RR4      4      3RJ RK ll4       tW]:Pw                  RL]]5P°                  ,          R7      ]! ]4      ]! ]! RR4      4      3RM RN ll4       tY]:P‰                  RO]5P°                  R7      R]! ]4      ]! ]! RRG4      4      3RP RQ ll4       tZ]:P‰                  RR]5P°                  R7      ]! ]4      ]! ]! RRG4      4      3RS RT ll4       t[]:P‰                  RL]5P°                  R7      ]! ]4      ]! ]! RR(4      4      3RU RV ll4       t\]:P‰                  R]5P~                  R7      ]! ]4      ]! ]! RR(4      4      3RW RX ll4       t]]:P�                  RY]5P~                  R7      ]! ]4      ]! ]! RR+4      4      3RZ R[ ll4       t^]:P                  RY4      ]! ]4      ]! ]! RR\4      4      3R] R^ ll4       t_^ R_I/H`t` ^ R`IaHbtb ]:Pw                  Ra]]b,          R7      ]! ]4      ]! ]! RR4      4      3Rb Rc ll4       tc]:Pw                  Rd]bR7      ]! ]4      ]! ]! RR4      4      3Re Rf ll4       td]:P¥                  Rg]bR7      ]! ]4      ]! ]! RR+4      4      3Rh Ri ll4       te]:Pw                  Rj]]5PÌ                  ,          R7      ]! ]4      ]! ]! RR.R4      4      3Rk Rl ll4       tg]:Pw                  Rm]5PÌ                  R7      ]! ]4      ]! ]! RR.R4      4      3Rn Ro ll4       th]:P‰                  Rj]5PÌ                  R7      ]! ]4      ]! ]! RR(4      4      3Rp Rq ll4       ti]:P�                  Rm]5PÌ                  R7      ]! ]4      ]! ]! RR+4      4      3Rr Rs ll4       tj]:Pw                  Rt]5PÖ                  R7      ]! ]4      ]! ]! RR4      4      3Ru Rv ll4       tl]:Pw                  Rw]]5PÚ                  ,          R7      ]! ]4      ]! ]! RR4      4      3Rx Ry ll4       tn]:P‰                  Rw]5PÚ                  R7      ]! ]4      ]! ]! RR(4      4      3Rz R{ ll4       to]:P�                  R|]5PÚ                  R7      ]! ]4      ]! ]! RR+4      4      3R} R~ ll4       tp]:P                  R|4      ]! ]4      ]! ]! RR\4      4      3R R€ ll4       tq^ R�I/HrtrHsts ]:P¥                  R‚4      ]! ]4      ]! ]! RR+4      4      3Rƒ R„ ll4       tt]:Pw                  R…]]5Pê                  ,          R7      RR]! RR†R‡7      RRˆ]! ]4      ]! ]! . R�OR4      4      3R‰ RŠ ll4       tv]:Pw                  R‹]5Pî                  R7      ]! ]4      ]! ]! . R�OR4      4      3RŒ R� ll4       tx]:Pw                  RŽ]5Pò                  R7      ]! ]4      ]! ]! . R�OR4      4      3R� R� ll4       tz]:P‰                  R‘4      ]! ]4      ]! ]! . R�OR+4      4      3R’ R“ ll4       t{]:P‰                  R”4      ]! ]4      ]! ]! . R�OR+4      4      3R• R– ll4       t|]:Pw                  R—4      ]! ]4      ]! ]! . R�OR4      4      3R˜ R™ ll4       t}]:P‰                  Rš]5Pü                  R7      ]! ]4      ]! ]! . R�ORG4      4      3R› Rœ ll4       tR# )žé    )Ú	APIRouterÚDependsÚHTTPExceptionÚQuery)ÚAsyncSession)Úselect)ÚfuncÚdeleteÚcase)Úselectinload)ÚListÚOptionalN)ÚdatetimeÚdateÚ	timedelta)Úget_db)Úrequire_permissionÚrequire_permission_any)Ú
LoginUsers)ÚCustomerMasterÚCustomerContactÚCustomerTypeMasterÚTransportMasterÚSalesEnquiryÚSparePartsOrderÚSparePartsOrderDetailÚServiceOrderÚSalesActivityLogÚCustomerPaymentLogÚGoodwillApprovalLogÚClientMasterÚDealerClientMapÚSalesVehicleTemplateÚSalesVehicleTemplateFeature)ÚStoreMaster)ÚDealerClientMasterÚDealerOrder)ÚDecimal)Úschemas)Ú	dashboard)ÚInventoryServicezSales Module)Útagsz
/dashboardÚSALESÚviewc                ót   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\        R\        /# )é   Ú
start_dateÚend_dateÚdbÚcurrent_user)r   r   r   r   )Úformats   "Ú:/var/www/html/audi_dev/backend/app/modules/sales/routes.pyÚ__annotate__r7       s>   € ÷ Iñ IÜœ•ðIä”t�nðIô 	ðIô ñ	Ió    c              ƒ  óê   "  € T;'       g    \         P                  ! 4       pT ;'       g    V\        ^R7      ,
          pWT8”  d   \        RRR7      h\        P
                  ! W%V4      G Rj  x€L
 #  L5i)zELive pipeline plus period figures (default period: the last 30 days).©Údaysé�  z-Start date must be on or before the end date.©Ústatus_codeÚdetailN)r   Útodayr   r   Úsales_dashboard_serviceÚbuild_dashboard)r1   r2   r3   r4   ÚendÚstarts   &&&&  r6   Úsales_dashboardrE      s]   é € ð ×
"Ð
"”d—j’j“l€CØ×2Ð2˜#¤	¨rÔ 2Õ2€EØ„{Ü¨Ð4cÔdÐdÜ(×8Ò8¸ÀCÓH×HÐHÑHùs   ‚(A3«AA3Á,A1Á-A3z/customer-types)Úresponse_modelÚYARDc                ó0   € V ^8„  d   QhR\         R\        /# ©r0   r3   r4   ©r   r   )r5   s   "r6   r7   r7   /   ó   € ÷ "ñ "¤,ð "ÔPZñ "r8   c              ƒ   óÖ   "  € V P                  \        \        4      P                  \        P                  R 8H  4      4      G Rj  x€L
 pVP                  4       P                  4       #  L"5i©TN)Úexecuter   r   ÚwhereÚ	is_activeÚscalarsÚall©r3   r4   Úresults   && r6   Úlist_customer_typesrU   .   sP   é € à—:‘:œfÔ%7Ó8×>Ñ>Ô?Q×?[Ñ?[Ð_cÑ?cÓdÓe×e€FØ�>‰>Ó×ÑÓ!Ð!ñ fùó   ‚AA)ÁA'Á#A)z/transportsc                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7   4   s   € ÷ "ñ "œlð "ÌJñ "r8   c              ƒ   óÐ   "  € V P                  \        \        4      P                  \        P                  4      4      G R j  x€L
 pVP                  4       P                  4       #  L"5i©N)rN   r   r   Úorder_byÚnamerQ   rR   rS   s   && r6   Úlist_transportsr\   3   sH   é € à—:‘:œf¤_Ó5×>Ñ>¼×?SÑ?SÓTÓU×U€FØ�>‰>Ó×ÑÓ!Ð!ñ Vùs   ‚?A&ÁA$Á#A&z
/customersc          
      ó–   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\         \        ,          R\        R\        /# )r0   Ú	type_codeÚregionÚcityr3   r4   )r   Ústrr   r   )r5   s   "r6   r7   r7   :   sF   € ÷ ñ Üœ�}ðä”S�Mðô ”3�-ðô 	ð	ô
 ñr8   c           
   ƒ   ó  "  € \        \        4      P                  \        \        P                  4      \        \        P
                  4      4      P                  \        P                  R 8H  4      pV '       d#   VP                  \        P                  V 8H  4      pV'       d#   VP                  \        P                  V8H  4      pV'       d3   VP                  \        P                  P                  RV R24      4      pVP                  V4      G Rj  x€L
 pVP                  4       P                  4       p\        VP                  \        \         P"                  \$        P&                  ! \         P(                  4      4      P                  \         P                  R 8H  4      P+                  \         P"                  4      4      G Rj  x€L
 P                  4       4      pV F$  p	VP-                  V	P.                  ^ 4      V	n        K&  	  V#  Lõ LD5i)TÚ%N)r   r   Úoptionsr   ÚcontactsÚcustomer_typerO   rP   r^   r_   r`   ÚilikerN   rQ   rR   Údictr&   Ú	dealer_idr	   ÚcountÚ	client_idÚgroup_byÚgetÚcustomer_idÚactive_client_count)
r^   r_   r`   r3   r4   ÚstmtrT   Ú	customersÚcountsÚcs
   &&&&&     r6   Úlist_customersrt   9   s|  é € ô ”.Ó!×)Ñ)Ü”^×,Ñ,Ó-Ü”^×1Ñ1Ó2ó÷ �eŒN×$Ñ$¨Ñ,Ó-ð 	÷ Ø�z‰zœ.×2Ñ2°iÑ?Ó@ˆßØ�z‰zœ.×/Ñ/°6Ñ9Ó:ˆßØ�z‰zœ.×-Ñ-×3Ñ3°a¸°v¸Q°KÓ@ÓAˆà—:‘:˜dÓ#×#€FØ—‘Ó ×$Ñ$Ó&€Iä˜Ÿ™ÜÔ!×+Ñ+¬T¯ZªZÔ8J×8TÑ8TÓ-UÓVß	‰Ô!×+Ñ+¨tÑ3Ó	4ß	‰Ô$×.Ñ.Ó	/ó÷ ÷ �sƒuó	€Fó
 ˆØ &§
¡
¨1¯=©=¸!Ó <ˆÖñ ð Ðñ $ñùs3   ‚BHÂ")HÃAHÄHÄB2HÇH
ÇAHÈ
Hz/customers/{customer_id}c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r0   rn   r3   r4   ©ra   r   r   )r5   s   "r6   r7   r7   Z   s"   € ÷ ñ ¤Cð ¬\ð Ô[eñ r8   c              ƒ   ó¨  "  € \        \        4      P                  \        \        P                  4      \        \        P
                  4      4      P                  \        P                  V 8H  \        P                  R 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V#  L95i)TNé”  úCustomer not foundr=   )r   r   rd   r   re   rf   rO   rn   rP   rN   rQ   Úfirstr   )rn   r3   r4   rp   rT   Úcustomers   &&&   r6   Úget_customerr|   Y   s¤   é € ä”.Ó!×)Ñ)Ü”^×,Ñ,Ó-Ü”^×1Ñ1Ó2ó÷ �eÜ×"Ñ" kÑ1Ü× Ñ  DÑ(óð 	ð —:‘:˜dÓ#×#€FØ�~‰~Ó×%Ñ%Ó'€HßÜ¨Ð4HÔIÐIØ€Oñ	 $ùs   ‚BCÂCÂ)CÃCÚcreatec                óP   € V ^8„  d   QhR\         P                  R\        R\        /# ©r0   Údatar3   r4   )r)   ÚCustomerMasterCreater   r   )r5   s   "r6   r7   r7   i   s,   € ÷ 2!ñ 2!Ü
×
&Ñ
&ð2!äð2!ô ñ2!r8   c              ƒ   óž  "  € V P                   '       g<   R \        \        P                  ! 4       4      R,          P	                  4        2V n         VP                  \        \        4      P                  \        P                   V P                   8H  4      4      G Rj  x€L
 pVP                  4       P                  4       '       d   \        RRR7      hVP                  \        \        4      P                  \        P                  P                  V P                  P                  4       4      \        P                  R8H  4      4      G Rj  x€L
 pVP                  4       P                  4       '       d*   \        RRV P                  P                  4        R2R7      h\        V P                   V P                  V P                   V P"                  V P$                  V P&                  V P(                  V P*                  V P,                  V P.                  V P0                  V P2                  V P                  V P4                  R	7      pVP7                  V4       V P8                   F�  p\;        VP<                  ;'       g    \        \        P                  ! 4       4      V P                   VP                  VP>                  VP@                  VPB                  VPD                  VP                  R
7      pVP7                  V4       KŸ  	  VPG                  4       G Rj  x€L
  \        \        4      PI                  \K        \        P8                  4      \K        \        PL                  4      4      P                  \        P                   VP                   8H  4      pVP                  V4      G Rj  x€L
 p	V	P                  4       P                  4       #  EL( EL~ L¸ L*5i)zCUST-ºNé   NNr<   zCustomer ID already existsr=   TúA customer named 'ú' already exists)rn   r[   r^   Úgoodwill_reasonÚgstinÚpanÚbilling_addressÚshipping_addressr`   ÚstateÚpincoder_   rP   Úallow_chassis_tracking©Ú
contact_idrn   r[   ÚdesignationÚemailÚphoneÚ
is_primaryrP   )'rn   ra   ÚuuidÚuuid4ÚupperrN   r   r   rO   rQ   rz   r   r[   rg   ÚstriprP   r^   r‡   rˆ   r‰   rŠ   r‹   r`   rŒ   r�   r_   rŽ   Úaddre   r   r�   r‘   r’   r“   r”   Úcommitrd   r   rf   )
r€   r3   r4   rT   Úexisting_nameÚnew_customerÚcontact_dataÚnew_contactrp   Úress
   &&&       r6   Úcreate_customerr    h   sý  é € ð ××ÐØ"¤3¤t§z¢z£|Ó#4°RÕ#8×#>Ñ#>Ó#@Ð"AÐBˆÔà—:‘:œf¤^Ó4×:Ñ:¼>×;UÑ;UÐY]×YiÑYiÑ;iÓjÓk×k€FØ‡~�~Ó×Ñ×ÒÜ¨Ð4PÔQÐQàŸ*™*¤V¬NÓ%;×%AÑ%AÄ.×BUÑBU×B[ÑB[Ð\`×\eÑ\e×\kÑ\kÓ\mÓBnÔp~÷  qIñ  qIð  MQñ  qQó  &Ró  S÷  S€MØ×ÑÓ×$Ñ$×&Ò&Ü¨Ð6HÈÏÉÏÉÓIZÐH[Ð[kÐ4lÔmÐmä!Ø×$Ñ$Ø�Y‰YØ—.‘.Ø×,Ñ,Ø�j‰jØ�H‰HØ×,Ñ,Ø×.Ñ.Ø�Y‰YØ�j‰jØ—‘Ø�{‰{Ø—.‘.Ø#×:Ñ:ô€Lð  ‡F�Fˆ<ÔàŸœˆÜ%Ø#×.Ñ.×CÐC´#´d·j²j³lÓ2CØ×(Ñ(Ø×"Ñ"Ø$×0Ñ0Ø×$Ñ$Ø×$Ñ$Ø#×.Ñ.Ø"×,Ñ,ô	
ˆð 	�‰ˆ{Öñ &ð �)‰)‹+×ÐÜ”.Ó!×)Ñ)¬,´~×7NÑ7NÓ*OÔQ]Ô^l×^zÑ^zÓQ{Ó|÷  Cñ  Cô  DR÷  D^ñ  D^ð  bn÷  bzñ  bzñ  Dzó  {€DØ—
‘
˜4Ó ×
 €CØ�;‰;‹=×ÑÓ Ð òU lò SñF á
 ùs^   ‚BOÂOÂ'OÃBOÅOÅ	'OÅ1DOÉ7BOÌO	ÌBOÎ OÎ!#OÏOÏ	OÏOÚeditc                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# )r0   rn   r€   r3   r4   )ra   r)   ÚCustomerMasterUpdater   r   )r5   s   "r6   r7   r7   ž   s6   € ÷ 2ñ 2Üð2ä
×
&Ñ
&ð2ô 	ð2ô ñ	2r8   c              ƒ   óN  "  € \        \        4      P                  \        \        P                  4      \        \        P
                  4      4      P                  \        P                  V 8H  \        P                  R 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VP                  Ee   VP                  P                  4       VP                  8w  dÜ   VP                  \        \        4      P                  \        P                  P                  VP                  P                  4       4      \        P                  R 8H  \        P                  V 8g  4      4      G Rj  x€L
 pVP                  4       P                  4       '       d*   \        RRVP                  P                  4        R2R7      hVP!                  R R0R	7      pVP#                  4        F  w  rš\%        WiV
4       K  	  VP                  e¾   VP                   F
  pR
Vn        K  	  VP                   F“  p\'        VP(                  ;'       g    \+        \,        P.                  ! 4       4      V VP                  VP0                  VP2                  VP4                  VP6                  VP                  R7      pVP9                  V4       K•  	  VP;                  4       G Rj  x€L
  VP=                  VRR.4      G Rj  x€L
  V#  EL… EL� L( L5i)TNrx   ry   r=   r<   r…   r†   re   )Úexclude_unsetÚexcludeFr�   rf   )r   r   rd   r   re   rf   rO   rn   rP   rN   rQ   rz   r   r[   r˜   rg   Ú
model_dumpÚitemsÚsetattrr   r�   ra   r•   r–   r‘   r’   r“   r”   r™   rš   Úrefresh)rn   r€   r3   r4   rp   rT   r{   r›   Úupdate_dataÚkeyÚvalueÚexistingr�   rž   s   &&&&          r6   Úupdate_customerr¯   �   sy  é € ô ”.Ó!×)Ñ)Ü”^×,Ñ,Ó-Ü”^×1Ñ1Ó2ó÷ �eÜ×"Ñ" kÑ1Ü× Ñ  DÑ(óð 	ð —:‘:˜dÓ#×#€FØ�~‰~Ó×%Ñ%Ó'€HßÜ¨Ð4HÔIÐIà‡y�yÓ §¡§¡Ó!2°h·m±mÔ!CØ Ÿj™jÜ”>Ó"ß‰U”>×&Ñ&×,Ñ,¨T¯Y©Y¯_©_Ó->Ó?Ä×AYÑAYÐ]aÑAaÔcq×c}Ñc}ð  BMñ  dMó  Nó
÷ 
ˆð × Ñ Ó"×(Ñ(×*Ò*Ü¨CÐ:LÈTÏYÉYÏ_É_ÓM^ÐL_Ð_oÐ8pÔqÐqà—/‘/°¸z¸l�/ÓK€KØ!×'Ñ'Ö)‰
ˆÜ�˜uÖ%ñ *ð ‡}�}Ò à ×)Ô)ˆHØ!&ˆHÖñ *ð !ŸMœMˆLÜ)Ø'×2Ñ2×GÐG´c¼$¿*º*»,Ó6GØ'Ø!×&Ñ&Ø(×4Ñ4Ø"×(Ñ(Ø"×(Ñ(Ø'×2Ñ2Ø&×0Ñ0ô	ˆKð �F‰F�;Öñ *ð �)‰)‹+×ÐØ
�*‰*�X 
¨OÐ<Ó
=×=Ð=Ø€OòK $ò
ñ: Ù=ùs]   ‚BL%ÂLÂ)L%ÃCL%ÆLÆ'L%Æ8B0L%É)BL%Ë8L!Ë9L%ÌL#ÌL%ÌL%Ì!L%Ì#L%z
/enquiriesc                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7   ×   s   € ÷ "ñ "œ\ð "Ì:ñ "r8   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rY   )r   r   rZ   Ú
created_atÚdescrN   rQ   rR   ©r3   r4   rp   rT   s   &&  r6   Úlist_enquiriesrµ   Ö   sU   é € ä”,Ó×(Ñ(¬×)@Ñ)@×)EÑ)EÓ)GÓH€DØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùs   ‚AA6ÁA4Á#A6c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r   )r)   ÚSalesEnquiryCreater   r   )r5   s   "r6   r7   r7   Ý   s,   € ÷ 	ñ 	Ü
×
$Ñ
$ð	äð	ô ñ	r8   c              ƒ   óè   "  € \        R/ V P                  4       BR VP                  /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)Ú
created_byN© )r   r§   Úuser_idr™   rš   rª   )r€   r3   r4   Únew_enqs   &&& r6   Úcreate_enquiryr½   Ü   s_   é € ô ÑP˜TŸ_™_Ó.ÑP¸<×;OÑ;OÒP€GØ‡F�Fˆ7„OØ
�)‰)‹+×ÐØ
�*‰*�WÓ
×ÐØ€Nñ Ùùs$   ‚AA2ÁA.ÁA2Á'A0Á(A2Á0A2z/spare-partsc                óP   € V ^8„  d   QhR\         P                  R\        R\        /# ©r0   Úpayloadr3   r4   )r)   ÚSparePartsOrderCreater   r   )r5   s   "r6   r7   r7   ö   s,   € ÷ %!ñ %!Ü×*Ñ*ð%!äð%!ô ñ%!r8   c           	   ƒ   óŠ  "  € \        V P                  R V P                  VP                  R7      pVP	                  V4       VP                  4       G Rj  x€L
  V P                   FV  p\        VP                  VP                  VP                  VP                  VP                  R7      pVP	                  V4       KX  	  \        RVP                  RVP                  R7      pVP	                  V4       VP                  4       G Rj  x€L
  VP                  V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       P-                  4       #  ELf L¶ LŸ L)5i)ÚPENDING)rn   ÚstatusÚtotal_amountr¹   N)Úorder_idÚrm_idÚqtyÚ
unit_priceÚline_amountÚSPARE_PARTSÚCREATED©Úentity_typeÚ	entity_idÚactivity_typeÚperformed_by)r   rn   rÅ   r»   r™   ÚflushÚdetailsr   rÆ   rÇ   rÈ   rÉ   rÊ   r   rš   rª   r   rd   r   rO   rN   rQ   rz   )	rÀ   r3   r4   ÚorderÚdetr?   Úactivityrp   rŸ   s	   &&&      r6   Úcreate_spare_parts_orderr×   õ   si  é € ô Ø×'Ñ'ØØ×)Ñ)Ø×'Ñ'ô	€Eð ‡F�Fˆ5„MØ
�(‰(‹*×Ðà�ŒˆÜ&Ø—^‘^Ø—)‘)Ø—‘Ø—~‘~ØŸ™ô
ˆð 	�‰ˆvŽñ ô  Ø!Ø—.‘.ØØ!×)Ñ)ô	€Hð ‡F�Fˆ8Ôà
�)‰)‹+×ÐØ
�*‰*�UÓ
×Ðä”/Ó"×*Ñ*¬<¼×8OÑ8OÓ+PÓQ×WÑWÔXg×XpÑXpÐty÷  uCñ  uCñ  YCó  D€DØ—
‘
˜4Ó ×
 €CØ�;‰;‹=×ÑÓ Ð ò3 ñ( Ùñ !ùsJ   ‚AGÁF:ÁB1GÄF=ÄGÄF?Ä A7GÆGÆ#GÆ=GÆ?GÇGc                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7     s   € ÷ "ñ "Üð"äñ"r8   c              ƒ   ó<  "  € \        \        4      P                  \        \        P                  4      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rY   )r   r   rd   r   rÓ   rZ   r²   r³   rN   rQ   rR   r´   s   &&  r6   Úlist_spare_parts_ordersrÚ     sn   é € ô
 ”/Ó"×*Ñ*¬<¼×8OÑ8OÓ+PÓQ×ZÑZÔ[j×[uÑ[u×[zÑ[zÓ[|Ó}€DØ—:‘:˜dÓ#×#€FØ�>‰>Ó×ÑÓ!Ð!ñ $ùs   ‚A5BÁ7BÁ8#Bz/spare-parts/{order_id}/issuec                ó<   € V ^8„  d   QhR\         R\        R\        /# )r0   rÆ   r3   r4   rv   )r5   s   "r6   r7   r7   '  s&   € ÷ 3ñ 3Üð3äð3ô ñ3r8   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                  4       pV'       g   \        RRR7      hVP                  R8X  d   \        RRR7      hVP                  R8”  d   VP                  R8X  d   \        R	R
R7      hVP                  \        \        4      P                  \        P                  R8H  4      4      G R j  x€L
 P                  4       P                  4       pV'       g   \        RRR7      h\!        V4      p VP                   Fk  pVP#                  VP$                  VP&                  \)        \+        VP,                  ) 4      4      RRVP                  RVP.                   2R7      G R j  x€L
  Km  	  RTn        \3        RTP                  RTP4                  R7      p
TP7                  T
4       TP9                  4       G R j  x€L
  TP;                  T4      G R j  x€L
  T#  ELñ EL. L|  \0         d   p	\        R\+        T	4      R7      hR p	?	ii ; i LP L95i)Nrx   zOrder not foundr=   ÚISSUEDr<   zAlready issuedi'  ÚSTORE_KEEPERi“  z4Store Manager approval required for high value partsz
Main Storeiô  zMain Store not configuredÚISSUEÚSPARE_PARTS_ORDERz	Issue by )rÇ   Ústore_idrÈ   Útransaction_typeÚreference_typeÚreference_idÚremarksrË   rÍ   )r   r   rd   r   rÓ   rO   rÆ   rN   rQ   rz   r   rÄ   rÅ   Úroler%   Ú
store_namer+   Úpost_transactionrÇ   rá   r(   ra   rÈ   ÚusernameÚ
ValueErrorr   r»   r™   rš   rª   )rÆ   r3   r4   rp   rT   rÔ   Ú
main_storeÚinv_servicerÕ   ÚerÖ   s   &&&        r6   Úissue_spare_parts_orderrî   &  s  é € ô ”/Ó"×*Ñ*¬<¼×8OÑ8OÓ+PÓQ×WÑWÔXg×XpÑXpÐt|ÑX|Ó}€DØ—:‘:˜dÓ#×#€FØ�N‰NÓ×"Ñ"Ó$€EßÜ¨Ð4EÔFÐFà‡|�|�xÔÜ¨Ð4DÔEÐEð ×Ñ˜EÔ! l×&7Ñ&7¸>Ô&IÜ¨Ð4jÔkÐkàŸ
™
¤6¬+Ó#6×#<Ñ#<¼[×=SÑ=SÐWcÑ=cÓ#dÓe×e×nÑnÓp×vÑvÓx€JßÜ¨Ð4OÔPÐPä" 2Ó&€Kð<Ø—=”=ˆCØ×.Ñ.Ø—i‘iØ#×,Ñ,ÜœC §¡ ›MÓ*Ø!(Ø2Ø"Ÿ^™^Ø# L×$9Ñ$9Ð#:Ð;ð /ó ÷ ò ñ !ð €E„LäØ!Ø—.‘.ØØ!×)Ñ)ô	€Hð ‡F�Fˆ8Ôà
�)‰)‹+×ÐØ
�*‰*�UÓ
×ÐØ€Lò[ $ò fñøô ô <Ü¨´C¸³FÔ;Ð;ûð<úñ Ùùs‡   ‚A*JÁ,IÁ-)JÂBJÄ2I Ä3'JÅJÅ4A2I% Ç&I#Ç'I% Ç/AJÈ=JÈ>JÉJÉJÉ JÉ#I% É%JÉ0JÊJÊJÊJz/service-ordersc                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r¿   )r)   ÚServiceOrderCreater   r   )r5   s   "r6   r7   r7   _  s,   € ÷ ñ Ü×'Ñ'ðäðô ñr8   c              ƒ   óh  "  € \        R/ V P                  4       B pVP                  V4       VP                  4       G R j  x€L
  \	        RVP
                  RVP                  R7      pVP                  V4       VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  Lk L! L
5i)NÚSERVICErÌ   rÍ   rº   )	r   rh   r™   rÒ   r   Ú
service_idr»   rš   rª   )rÀ   r3   r4   rÔ   rÖ   s   &&&  r6   Úcreate_service_orderrô   ^  s—   é € ô Ñ*˜7Ÿ<™<›>Ñ*€EØ‡F�Fˆ5„MØ
�(‰(‹*×ÐäØØ×"Ñ"ØØ!×)Ñ)ô	€Hð ‡F�Fˆ8Ôà
�)‰)‹+×ÐØ
�*‰*�UÓ
×ÐØ€Lñ ñ Ùùs6   ‚>B2Á B,ÁAB2ÂB.ÂB2Â%B0Â&B2Â.B2Â0B2c                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7   u  rK   r8   c              ƒ   óì   "  € V P                  \        \        4      P                  \        P                  P                  4       4      4      G R j  x€L
 pVP                  4       P                  4       #  L"5irY   )rN   r   r   rZ   r²   r³   rQ   rR   rS   s   && r6   Úlist_service_ordersr÷   t  sQ   é € à—:‘:œf¤\Ó2×;Ñ;¼L×<SÑ<S×<XÑ<XÓ<ZÓ[Ó\×\€FØ�>‰>Ó×ÑÓ!Ð!ñ ]ùó   ‚AA4ÁA2Á#A4z#/service-orders/{service_id}/statusc                óH   € V ^8„  d   QhR\         R\         R\        R\        /# )r0   ró   rÄ   r3   r4   rv   )r5   s   "r6   r7   r7   z  s0   € ÷ ñ Üðäðô 	ðô ñ	r8   c              ƒ   óè  "  € \        \        4      P                  \        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Wn        \        RVP                  RVVP                  R7      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! L
5i)Nrx   ú	Not foundr=   rò   ÚSTATUS_UPDATE)rÎ   rÏ   rÐ   Ú	new_valuerÑ   )r   r   rO   ró   rN   rQ   rz   r   rÄ   r   r»   r™   rš   rª   )ró   rÄ   r3   r4   rp   rT   rÔ   rÖ   s   &&&&    r6   Úupdate_service_order_statusrþ   y  sÈ   é € ô ”,Ó×%Ñ%¤l×&=Ñ&=ÀÑ&KÓL€DØ—:‘:˜dÓ#×#€FØ�N‰NÓ×"Ñ"Ó$€EßÜ¨°KÔ@Ð@à„LäØØ×"Ñ"Ø%ØØ!×)Ñ)ô€Hð ‡F�Fˆ8Ôà
�)‰)‹+×ÐØ
�*‰*�UÓ
×ÐØ€Lñ% $ñ  Ùùs=   ‚AC2ÁC,Á)C2Á1AC2ÃC.ÃC2Ã%C0Ã&C2Ã.C2Ã0C2z	/paymentsc                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r¿   )r)   ÚCustomerPaymentLogCreater   r   )r5   s   "r6   r7   r7   ˜  s,   € ÷ ñ Ü×-Ñ-ðäðô ñr8   c           
   ƒ   ó6  "  € \        V P                  V P                  V P                  V P                  V P
                  R VP                  R7      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Ã   )rn   rÆ   ÚamountÚpayment_modeÚreference_norÄ   Úrecorded_byN)
r   rn   rÆ   r  r  r  r»   r™   rš   rª   )rÀ   r3   r4   Úpays   &&& r6   Úrecord_paymentr  —  s‚   é € ô Ø×'Ñ'Ø×!Ñ!Ø�~‰~Ø×)Ñ)Ø×)Ñ)ØØ ×(Ñ(ô€Cð ‡F�Fˆ3„KØ
�)‰)‹+×ÐØ
�*‰*�S‹/×ÐØ€Jñ Ùùs$   ‚A3BÁ5BÁ6BÂBÂBÂBz/payments/{payment_id}/confirmÚapprovec                ó<   € V ^8„  d   QhR\         R\        R\        /# )r0   Ú
payment_idr3   r4   rv   )r5   s   "r6   r7   r7   ¬  s&   € ÷ ñ Üðäðô ñr8   c              ƒ   óÞ  "  € \        \        4      P                  \        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VP                  R8X  d   \        RRR7      hRVn        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)Nrx   rû   r=   Ú	CONFIRMEDr<   zAlready confirmed)r   r   rO   r
  rN   rQ   rz   r   rÄ   r»   Úconfirmed_byrš   rª   )r
  r3   r4   rp   rT   r  s   &&&   r6   Úconfirm_paymentr  «  sÀ   é € ô Ô$Ó%×+Ñ+Ô,>×,IÑ,IÈZÑ,WÓX€DØ—:‘:˜dÓ#×#€FØ
�.‰.Ó
×
 Ñ
 Ó
"€CßÜ¨°KÔ@Ð@à
‡z�z�[Ô Ü¨Ð4GÔHÐHà€C„JØ#×+Ñ+€CÔØ
�)‰)‹+×ÐØ
�*‰*�S‹/×ÐØ€Jñ $ñ Ùùs=   ‚AC-ÁC'Á)C-Á1AC-ÃC)ÃC-Ã C+Ã!C-Ã)C-Ã+C-c                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7   Á  s   € ÷ "ñ "œLð "Ì*ñ "r8   c              ƒ   óì   "  € V P                  \        \        4      P                  \        P                  P                  4       4      4      G R j  x€L
 pVP                  4       P                  4       #  L"5irY   )rN   r   r   rZ   r²   r³   rQ   rR   rS   s   && r6   Úlist_paymentsr  À  sS   é € à—:‘:œfÔ%7Ó8×AÑAÔBT×B_ÑB_×BdÑBdÓBfÓgÓh×h€FØ�>‰>Ó×ÑÓ!Ð!ñ iùrø   z/goodwill-queuec                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7   È  rK   r8   c              ƒ   óÖ   "  € V P                  \        \        4      P                  \        P                  R 8H  4      4      G Rj  x€L
 pVP                  4       P                  4       #  L"5i)rÃ   N)rN   r   r    rO   rÄ   rQ   rR   rS   s   && r6   Úlist_goodwill_queuer  Ç  sP   é € à—:‘:œfÔ%8Ó9×?Ñ?Ô@S×@ZÑ@ZÐ^gÑ@gÓhÓi×i€FØ�>‰>Ó×ÑÓ!Ð!ñ jùrV   z%/goodwill-queue/{approval_id}/approvec                ó^   € V ^8„  d   QhR\         R\        \         ,          R\        R\        /# ©r0   Úapproval_idÚnotesr3   r4   )ra   r   r   r   )r5   s   "r6   r7   r7   Í  s4   € ÷ ñ Üðä”C�=ðô 	ðô ñ	r8   c              ƒ   ó®  "  € \        \        4      P                  \        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RVn        VP                  Vn
        Wn        VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  V#  Lˆ L! L
5i)Nrx   rû   r=   ÚAPPROVED)r   r    rO   r  rN   rQ   rz   r   rÄ   r»   Ú
manager_idÚmanager_notesrš   rª   ©r  r  r3   r4   rp   rT   Úgws   &&&&   r6   Úapprove_goodwillr  Ì  s¬   é € ô Ô%Ó&×,Ñ,Ô-@×-LÑ-LÐP[Ñ-[Ó\€DØ—:‘:˜dÓ#×#€FØ	�‰Ó	×	Ñ	Ó	!€BßÜ¨°KÔ@Ð@à€B„IØ ×(Ñ(€B„MØÔØ
�)‰)‹+×ÐØ
�*‰*�R‹.×ÐØ€Iñ $ñ Ùùs<   ‚ACÁCÁ)CÁ1>CÂ/CÂ0CÃCÃ	CÃCÃCz$/goodwill-queue/{approval_id}/rejectc                óH   € V ^8„  d   QhR\         R\         R\        R\        /# r  rv   )r5   s   "r6   r7   r7   á  s0   € ÷ ñ Üðäðô 	ðô ñ	r8   c              ƒ   óØ  "  € V'       g   \        R RR7      h\        \        4      P                  \        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RVn        VP                  Vn
        Wn        VP                  4       G Rj  x€L
  VP                  V4      G Rj  x€L
  V#  Lˆ L! L
5i)r<   zNotes required for rejectionr=   Nrx   rû   ÚREJECTED)r   r   r    rO   r  rN   rQ   rz   rÄ   r»   r  r  rš   rª   r  s   &&&&   r6   Úreject_goodwillr#  à  s½   é € ÷ Ü¨Ð4RÔSÐSäÔ%Ó&×,Ñ,Ô-@×-LÑ-LÐP[Ñ-[Ó\€DØ—:‘:˜dÓ#×#€FØ	�‰Ó	×	Ñ	Ó	!€BßÜ¨°KÔ@Ð@à€B„IØ ×(Ñ(€B„MØÔØ
�)‰)‹+×ÐØ
�*‰*�R‹.×ÐØ€Iñ $ñ Ùùs<   ‚AC*ÁC$Á)C*Â>C*ÃC&ÃC*ÃC(ÃC*Ã&C*Ã(C*c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r   )r)   ÚGoodwillApprovalLogCreater   r   )r5   s   "r6   r7   r7   ú  s,   € ÷ ñ Ü
×
+Ñ
+ðäðô ñr8   c           	   ƒ   ó2  "  € \        \        P                  ! 4       V P                  V P                  V P
                  R VP                  R7      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  rÎ   rÏ   ÚreasonrÄ   Úrequested_byN)
r    r•   r–   rÎ   rÏ   r'  r»   r™   rš   rª   )r€   r3   r4   Úgoodwills   &&& r6   Úcreate_goodwill_requestr*  ù  sy   é € ô #Ü—J’J“LØ×$Ñ$Ø—.‘.Ø�{‰{ØØ!×)Ñ)ô€Hð ‡F�Fˆ8ÔØ
�)‰)‹+×ÐØ
�*‰*�XÓ
×ÐØ€Oñ Ùùs$   ‚A1BÁ3BÁ4BÂBÂBÂBc                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r   )r)   ÚTransportMasterCreater   r   )r5   s   "r6   r7   r7     s(   € ÷ 	ñ 	¤×!>Ñ!>ð 	ÄLð 	Ôr|ñ 	r8   c              ƒ   ó8  "  € V P                  4       pVP                  R 4      '       g™   RP                  VR,          P                  4        Uu. uF  qDP	                  4       '       g   K  VNK  	  up4      R,          pT;'       g8    R\
        P                  ! 4       P                  R,          P                  4        2VR &   \        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# u upi  L$ L5i)Útransport_idÚ r[   :Né   NzTPT-:Né   NNrº   )r§   rm   Újoinr—   Úisalnumr•   r–   Úhexr   r™   rš   rª   )r€   r3   r4   rÀ   rs   Ú
clean_codeÚnew_transports   &&&    r6   Úcreate_transportr7    sÜ   é € à�o‰oÓ€GØ�;‰;�~×&Ò&Ø—W‘W¨°­×)>Ñ)>Ô)@ÓPÑ)@ AÇIÁIÇKŸa˜aÑ)@ÑPÓQÐRUÕVˆ
Ø",×"UÐ"U°$´t·z²z³|×7GÑ7GÈÕ7K×7QÑ7QÓ7SÐ6TÐ0Uˆ�ÑÜ#Ñ. gÑ.€MØ‡F�Fˆ=ÔØ
�)‰)‹+×ÐØ
�*‰*�]Ó
#×#Ð#ØÐùò Qñ Ù#ùs=   ‚ADÁDÁ*DÁ0DÂA*DÃ1DÃ2DÄ
DÄDÄDz/transports/{transport_id}c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# )r0   r.  r€   r3   r4   )ra   r)   r,  r   r   )r5   s   "r6   r7   r7     s4   € ÷ 
ñ 
¬ð 
´G×4QÑ4Qð 
ÔWcð 
ô  FPñ 
r8   c              ƒ   óÜ  "  € VP                  \        \        4      P                  \        P                  V 8H  4      4      G R j  x€L
 pVP                  4       P                  4       pV'       g   \        RRR7      hVP                  RR7      pVP                  4        F  w  rx\        WWV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)Nrx   úTransport not foundr=   T©r¥   )rN   r   r   rO   r.  rQ   rz   r   r§   r¨   r©   rš   rª   )	r.  r€   r3   r4   rT   Ú	transportr«   r¬   r­   s	   &&&&     r6   Úupdate_transportr=    s¼   é € à—:‘:œf¤_Ó5×;Ñ;¼O×<XÑ<XÐ\hÑ<hÓiÓj×j€FØ—‘Ó ×&Ñ&Ó(€IßÜ¨Ð4IÔJÐJØ—/‘/°�/Ó5€KØ!×'Ñ'Ö)‰
ˆÜ�	 Ö&ñ *à
�)‰)‹+×ÐØ
�*‰*�YÓ
×ÐØÐñ kñ Ùùs=   ‚AC,ÁC&Á)C,Á/AC,ÃC(ÃC,ÃC*Ã C,Ã(C,Ã*C,r
   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r0   r.  r3   r4   rv   )r5   s   "r6   r7   r7   ,  s"   € ÷ !ñ !¬ð !´,ð !Ô`jñ !r8   c              ƒ   óÞ  "  € VP                  \        \        4      P                  \        P                  V 8H  4      4      G R j  x€L
 pVP                  4       P                  4       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R/#  Lm L" L  \         d(    TP                  4       G R j  x€L 
  \        RRR7      hi ; i5i)Nrx   r:  r=   r<   z,Cannot delete transporter (might be in use).rÄ   Úsuccess)rN   r   r   rO   r.  rQ   rz   r   r
   rš   Ú	ExceptionÚrollback)r.  r3   r4   rT   r<  s   &&&  r6   Údelete_transportrC  +  sÇ   é € à—:‘:œf¤_Ó5×;Ñ;¼O×<XÑ<XÐ\hÑ<hÓiÓj×j€FØ—‘Ó ×&Ñ&Ó(€IßÜ¨Ð4IÔJÐJðdØ�i‰i˜	Ó"×"Ð"Ø�i‰i‹k×Ðð
 �iÐ Ð ñ kñ 	#ÙøÜô dØ�k‰k‹m×ÑÜ¨Ð4bÔcÐcðdüs`   ‚AC-ÁB2Á)C-Á/C-Á=B8 ÂB4ÂB8 Â)B6Â*B8 Â.C-Â4B8 Â6B8 Â8C*ÃCÃC*Ã*C-)ÚDealerRequest)ÚDealerRequestOutz/dealer-requestsc                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7   @  s   € ÷ ñ Üðäñr8   c              ƒ   ó   "  € \        \        \        P                  4      P	                  \        \        P
                  \        P                  8H  4      P                  \        P                  P                  4       4      pV P                  V4      G R j  x€L
 p. pVP                  4        F  w  rVWen        VP                  V4       K  	  V#  L85irY   )r   rD  r   r[   r2  rn   ri   rZ   r²   r³   rN   rR   Údealer_nameÚappend)r3   r4   rp   rT   ÚoutÚreqr[   s   &&     r6   Úadmin_list_dealer_requestsrL  ?  s˜   é € ô 	Œ}œn×1Ñ1Ó2ß	‰Œnœn×8Ñ8¼M×<SÑ<SÑSÓ	Tß	‰”-×*Ñ*×/Ñ/Ó1Ó	2ð 	ð
 —:‘:˜dÓ#×#€Fà
€CØ—Z‘Z–\‰	ˆØŒØ�
‰
�3Žñ "ð €Jñ $ùs   ‚BCÂCÂ9Cz/dealer-requests/{request_id}c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# ©r0   Ú
request_idr3   r4   ©r•   ÚUUIDr   r   )r5   s   "r6   r7   r7   S  s*   € ÷ ñ Ü—	‘	ðäðô ñr8   c              ƒ   ó„  "  € \        \        \        P                  4      P	                  \        \        P
                  \        P                  8H  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w  rgWvn        V#  L55i)Nrx   zDealer request not foundr=   )r   rD  r   r[   r2  rn   ri   rO   rO  rN   rz   r   rH  )rO  r3   r4   rp   rT   ÚrowrK  r[   s   &&&     r6   Úadmin_get_dealer_requestrT  R  s“   é € ô 	Œ}œn×1Ñ1Ó2ß	‰Œnœn×8Ñ8¼M×<SÑ<SÑSÓ	Tß	‰Œ}×'Ñ'¨:Ñ5Ó	6ð 	ð
 —:‘:˜dÓ#×#€FØ
�,‰,‹.€CçÜ¨Ð4NÔOÐOà�I€CØ„OØ€Jñ $ùs   ‚BC ÂB>Â	C Â%C z)/dealer-requests/{request_id}/acknowledgec                óP   € V ^8„  d   QhR\         P                  R\        R\        /# rN  rP  )r5   s   "r6   r7   r7   h  s*   € ÷ ñ Ü—	‘	ðäðô ñr8   c              ƒ   ó‚  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  R8w  d   \        RRR7      hRVn        VP                  Vn        \        P                  ! 4       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)Nrx   zRequest not foundr=   rÃ   r<   z,Request is already acknowledged or completedÚACKNOWLEDGED)rm   rD  r   rÄ   r»   Úacknowledged_byr   ÚutcnowÚacknowledged_atrš   rª   )rO  r3   r4   rK  s   &&& r6   Ú admin_acknowledge_dealer_requestr[  g  s›   é € ð —‘”} jÓ1×
1€CßÜ¨Ð4GÔHÐHØ
‡z�z�YÔÜ¨Ð4bÔcÐcà€C„JØ&×.Ñ.€CÔÜ"Ÿ/š/Ó+€CÔØ
�)‰)‹+×ÐØ
�*‰*�S‹/×ÐØ€Jñ 2ñ Ùùs9   ‚B?œB9�B?©A0B?ÂB;ÂB?Â2B=Â3B?Â;B?Â=B?z/clientsc                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7     s   € ÷ ñ œ<ð Ìñ r8   c              ƒ   ób  "  € V P                  \        \        4      P                  \        P                  R 8H  4      P                  \        P                  4      4      G Rj  x€L
 pVP                  4       P                  4       pV P                  \        \        P                  \        P                  4      4      G Rj  x€L
 p/ pVP                  4        F&  w  rgVP                  V. 4      P                  V4       K(  	  V F$  pVP                  VP                  . 4      Vn        K&  	  V#  LÉ Ln5irM   )rN   r   r!   rO   rP   rZ   r[   rQ   rR   r"   rk   ri   Ú
setdefaultrI  rm   Údealers)	r3   r4   rT   ÚclientsÚmapsÚclient_dealersÚcidÚdidrs   s	   &&       r6   Úlist_clientsre  ~  sæ   é € à—:‘:œf¤\Ó2×8Ñ8¼×9OÑ9OÐSWÑ9WÓX×aÑaÔbn×bsÑbsÓtÓu×u€FØ�n‰nÓ×"Ñ"Ó$€Gð —‘œF¤?×#<Ñ#<¼o×>WÑ>WÓXÓY×Y€DØ€NØ—H‘H–J‰ˆØ×!Ñ! # rÓ*×1Ñ1°#Ö6ñ ó ˆØ"×&Ñ& q§{¡{°BÓ7ˆŽ	ñ à€Nñ vñ Zùs&   ‚AD/Á!D+Á"AD/Â>D-Â?A-D/Ä-D/z/clients/{client_id}c                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r0   rk   r3   r4   rv   )r5   s   "r6   r7   r7   Ž  s"   € ÷ ñ ¤ð ¬ð ÔWañ r8   c              ƒ   ó|  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  \	        \
        P                  4      P                  \
        P                  V 8H  4      4      G R j  x€L
 pVP                  4        Uu. uF  qU^ ,          NK  	  upVn
        V#  L– L3u upi 5i)Nrx   úClient not foundr=   )rm   r!   r   rN   r   r"   ri   rO   rk   rR   r_  )rk   r3   r4   Úclientra  Úrs   &&&   r6   Ú
get_clientrl  �  s�   é € à—6‘6œ,¨	Ó2×2€FßÜ¨Ð4FÔGÐGà—‘œF¤?×#<Ñ#<Ó=×CÑCÄO×D]ÑD]ÐajÑDjÓkÓl×l€DØ$(§H¡H¤JÓ/¡J˜q˜—d�d¡JÑ/€F„NØ€Mñ 3ñ mùÚ/ùs9   ‚B<œB3�B<©AB<ÂB5ÂB<ÂB7Â)B<Â5B<Â7B<c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r   )r)   ÚClientMasterCreater   r   )r5   s   "r6   r7   r7   ˜  s(   € ÷ ñ œg×8Ñ8ð ¼lð Ôlvñ r8   c              ƒ   ó„  "  € \        V P                  ;'       g7    R \        \        P                  ! 4       4      R,          P                  4        2V P                  V P                  V P                  V P                  V P                  V P                  V P                  VP                  R7	      pVP                  V4       V P                   F(  pVP                  \!        WCP                  R7      4       K*  	  VP#                  4       G Rj  x€L
  VP%                  V4      G Rj  x€L
  V P                  Vn        V#  L0 L5i)zCLI-rƒ   )	rk   r[   Úcontact_personr“   r’   Úaddressr`   rŒ   Úcreated_by_user_id©ri   rk   N)r!   rk   ra   r•   r–   r—   r[   rp  r“   r’   rq  r`   rŒ   r»   r™   Ú
dealer_idsr"   rš   rª   r_  )r€   r3   r4   Ú
new_clientrd  s   &&&  r6   Úcreate_clientrv  —  së   é € äØ—.‘.×JÐJ d¬3¬t¯zªz«|Ó+<¸RÕ+@×+FÑ+FÓ+HÐ*IÐ$JØ�Y‰YØ×*Ñ*Ø�j‰jØ�j‰jØ—‘Ø�Y‰YØ�j‰jØ'×/Ñ/ô
€Jð ‡F�Fˆ:Ôà�ŒˆØ
�‰Œ¨×8LÑ8LÔMÖNñ ð �)‰)‹+×ÐØ
�*‰*�ZÓ
 × Ð ØŸ™€JÔØÐñ Ù ùs$   ‚D	E ÄD<ÄE Ä$D>Ä%E Ä>E c                ó\   € V ^8„  d   QhR\         R\        P                  R\        R\        /# )r0   rk   r€   r3   r4   )ra   r)   ÚClientMasterUpdater   r   )r5   s   "r6   r7   r7   ¯  s3   € ÷ ñ ¤3ð ¬g×.HÑ.Hð Ìlð ô  }Gñ r8   c              ƒ   óx  "  € 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R 4      pVP                  4        F  w  rx\        WGV4       K  	  Vez   VP                  \        P                  P                  4       P                  \        P                  V 8H  4      4      G R j  x€L
  V F  p	VP                  \        W�R7      4       K   	  VP                  4       G R j  x€L
  VP                  V4      G R j  x€L
  VP                  \!        \        P"                  4      P                  \        P                  V 8H  4      4      G R j  x€L
 p
V
P%                  4        Uu. uF  q»^ ,          NK  	  upVn        V#  ELŽ LÙ LŸ Lˆ L:u upi 5i)Nrx   ri  r=   Tr;  rt  rs  )rm   r!   r   rh   Úpopr¨   r©   rN   r"   Ú	__table__r
   rO   rk   r™   rš   rª   r   ri   rR   r_  )rk   r€   r3   r4   rj  r«   rt  r¬   r­   rd  ra  rk  s   &&&&        r6   Úupdate_clientr|  ®  sW  é € à—6‘6œ,¨	Ó2×2€FßÜ¨Ð4FÔGÐGà—)‘)¨$�)Ó/€KØ—‘ ¨tÓ4€Jà!×'Ñ'Ö)‰
ˆÜ�˜UÖ#ñ *ð ÒØ�j‰jœ×2Ñ2×9Ñ9Ó;×AÑAÄ/×B[ÑB[Ð_hÑBhÓiÓj×jÐjÛˆCØ�F‰F”?¨SÔFÖGñ ð �)‰)‹+×ÐØ
�*‰*�VÓ
×Ðà—‘œF¤?×#<Ñ#<Ó=×CÑCÄO×D]ÑD]ÐajÑDjÓkÓl×l€DØ$(§H¡H¤JÓ/¡J˜q˜—d�d¡JÑ/€F„NØ€Mò) 3ñ 	kñ ÙálùÚ/ùsp   ‚F:œF*�F:©B*F:ÃF-Ã;F:ÄF/ÄF:Ä(F1Ä)AF:Å8F3Å9F:ÆF5Æ F:Æ-F:Æ/F:Æ1F:Æ3F:Æ5F:z/clients/{client_id}/trackingc                ó<   € V ^8„  d   QhR\         R\        R\        /# rg  rv   )r5   s   "r6   r7   r7   Ç  s"   € ÷ ñ ¬ð ´,ð Ô`jñ r8   c              ƒ   ó@  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RRR7      hVP                  \	        \
        P                  4      P                  \
        P                  V 8H  4      4      G R j  x€L
 pVP                  4        Uu. uF  qU^ ,          NK  	  pp^ RI
Hp VP                  \	        VP                  4      P                  VP                  V 8H  4      4      G R j  x€L
 pVP                  4        Uu. uF  qU^ ,          NK  	  ppRVP                  RVP                  R\        V4      R\        V Uu. uF  qˆR9  g   K  VNK  	  up4      R
\        V Uu. uF  qˆR	8X  g   K  VNK  	  up4      R\        V U	u. uF  q™R9   g   K  V	NK  	  up	4      R\        V U	u. uF  q™R8X  g   K  V	NK  	  up	4      R\        V U	u. uF  q™R8X  g   K  V	NK  	  up	4      /#  ELÖ ELtu upi  EL	u upi u upi u upi u up	i u up	i u up	i 5i)Nrx   ri  r=   ©ÚChassisMasterrk   r[   Útotal_ordersÚpending_ordersr  Úcompleted_ordersÚchassis_in_yardÚchassis_in_productionÚHANDED_TO_PRODUCTIONÚchassis_dispatchedÚ
DISPATCHED)r  Ú	CANCELLED)ÚYARD_PENDING_CHECKÚYARD_CHECKED)rm   r!   r   rN   r   r'   rÄ   rO   rk   rR   Úapp.models.yard_modelsr€  Úcurrent_statusr[   Úlen)
rk   r3   r4   rj  Úordersrk  r€  ÚchassisÚors   s
   &&&       r6   Úget_client_trackingr’  Æ  sÅ  é € à—6‘6œ,¨	Ó2×2€FßÜ¨Ð4FÔGÐGð —:‘:œf¤[×%7Ñ%7Ó8×>Ñ>¼{×?TÑ?TÐXaÑ?aÓbÓc×c€FØ"ŸJ™JœLÓ)™L�q��dˆd™L€FÐ)å4Ø—J‘Jœv m×&BÑ&BÓC×IÑIÈ-×JaÑJaÐenÑJnÓoÓp×p€GØ$Ÿ[™[œ]Ó+™]˜��tˆt™]€GÐ+ð 	�V×%Ñ%Ø�—‘Øœ˜F›Øœ#©&ÓX©& QÐ=WÑ4WŸq˜q©&ÑXÓYØœC©FÓ G©F q¸;Ñ6F§ ©FÑ GÓHØœ3©7Ób©7 aÐ;aÑ6a§ ©7ÑbÓcØ¤±Ó%X±¨AÐAWÑ<W§a a±Ñ%XÓ!YØœc©gÓ"K©g¨¸lÑ9J§1 1©gÑ"KÓLð	ð 	ò 3ò
 dùÚ)ò qùÚ+ùò YùÚ GùÚbùÚ%XùÚ"Kùs²   ‚HœG2�H©AHÂG5ÂHÂG8Â)AHÃ4G=Ã5HÄH Ä/HÅHÅHÅHÅ.H
Å;H
ÆHÆHÆHÆ$HÆ4H"ÇH"ÇHÇH&Ç$H&Ç*	HÇ5HÇ8HÈ Hz/vehicle-templatesc                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7   ä  s   € ÷ "ñ "¤\ð "ÔS]ñ "r8   c              ƒ   ó  "  € V P                  \        \        4      P                  \	        \        P
                  4      4      P                  \        P                  4      4      G R j  x€L
 pVP                  4       P                  4       #  L"5irY   )
rN   r   r#   rd   r   ÚfeaturesrZ   r[   rQ   rR   rS   s   && r6   Úlist_vehicle_templatesr–  ã  se   é € à—:‘:ÜÔ#Ó$ß	‰”Ô2×;Ñ;Ó<Ó	=ß	‰Ô&×+Ñ+Ó	,ó÷ €Fð
 �>‰>Ó×ÑÓ!Ð!ñùs   ‚A%BÁ'B
Á(#Bc                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r   )r)   ÚSalesVehicleTemplateCreater   r   )r5   s   "r6   r7   r7   í  s-   € ÷ $ñ $¬×(JÑ(Jð $ÔP\ð $ô  Iñ $r8   c           
   ƒ   ó(  "  € \        V P                  V P                  V P                  V P                  VP
                  R 7      pVP                  V4       VP                  4       G Rj  x€L
  V P                   Fa  p\        VP                  VP                  VP                  VP                  VP                  VP                  R7      pVP                  V4       Kc  	  VP!                  4       G Rj  x€L
  VP#                  \%        \         4      P'                  \)        \         P                  4      4      P+                  \         P                  VP                  8H  4      4      G Rj  x€L
 pVP-                  4       P/                  4       #  EL" L› L'5i))r[   Úmodel_idÚbody_type_idÚ
segment_idrr  N©Útemplate_idÚ
feature_idÚfeature_option_idÚ
bool_valueÚ
text_valueÚ	image_url)r#   r[   rš  r›  rœ  r»   r™   rÒ   r•  r$   rž  rŸ  r   r¡  r¢  r£  rš   rN   r   rd   r   rO   rQ   rz   )r€   r3   r4   ÚtemplateÚfÚfeatrT   s   &&&    r6   Úcreate_vehicle_templater§  ì  s,  é € ä#Ø�Y‰YØ—‘Ø×&Ñ&Ø—?‘?Ø'×/Ñ/ô€Hð ‡F�Fˆ8ÔØ
�(‰(‹*×Ðà�]Œ]ˆÜ*Ø ×,Ñ,Ø—|‘|Ø×1Ñ1Ø—|‘|Ø—|‘|Ø—k‘kô
ˆð 	�‰ˆtŽñ ð �)‰)‹+×Ðà—:‘:ÜÔ#Ó$ß	‰”Ô2×;Ñ;Ó<Ó	=ß	‰Ô#×/Ñ/°8×3GÑ3GÑGÓ	Hó÷ €Fð
 �>‰>Ó×!Ñ!Ó#Ð#ò) ñ ñùs8   ‚A'FÁ)FÁ*BFÃ2FÃ3A5FÅ(FÅ)#FÆFÆFz /vehicle-templates/{template_id}c                óp   € V ^8„  d   QhR\         P                  R\        P                  R\        R\
        /# )r0   rž  r€   r3   r4   )r•   rQ  r)   ÚSalesVehicleTemplateUpdater   r   )r5   s   "r6   r7   r7     s8   € ÷ ($ñ ($¬t¯y©yð ($Ä×@bÑ@bð ($Ôhtð ($ô  Wañ ($r8   c           
   ƒ   ó  "  € VP                  \        \        4      P                  \	        \        P
                  4      4      P                  \        P                  V 8H  4      4      G R j  x€L
 pVP                  4       P                  4       pV'       g   \        RRR7      hVP                  e   VP                  Vn        VP                  Vn        VP                  Vn        VP                  Vn        VP
                  eÐ   VP                  \        \         4      P#                  \         P                  V 8H  4      4      G R j  x€L
  VP%                  4       G R j  x€L
  VP
                   Fa  p\!        VP                  VP&                  VP(                  VP*                  VP,                  VP.                  R7      pVP1                  V4       Kc  	  VP3                  4       G R j  x€L
  VP                  \        \        4      P                  \	        \        P
                  4      4      P#                  \        P                  VP                  8H  4      4      G R j  x€L
 pVP                  4       P                  4       #  EL EL= EL( L¡ L-5i)Nrx   úTemplate not foundr=   r�  )rN   r   r#   rd   r   r•  Úfilterrž  rQ   rz   r   r[   rš  r›  rœ  r
   r$   rO   rÒ   rŸ  r   r¡  r¢  r£  r™   rš   )rž  r€   r3   r4   rT   r¤  r¥  r¦  s   &&&&    r6   Úupdate_vehicle_templater­    sú  é € à—:‘:œfÔ%9Ó:×BÑBÄ<ÔPd×PmÑPmÓCnÓo×vÑvô  xL÷  xXñ  xXð  \gñ  xgó  hó  i÷  i€FØ�~‰~Ó×%Ñ%Ó'€HßÜ¨Ð4HÔIÐIà‡y�yÒØŸ	™	ˆŒð
 Ÿ™€HÔØ ×-Ñ-€HÔØŸ/™/€HÔà‡}�}Ò à�j‰jœÔ ;Ó<×BÑBÔC^×CjÑCjÐnyÑCyÓzÓ{×{Ð{Ø�h‰h‹j×Ðð —”ˆAÜ.Ø$×0Ñ0ØŸ<™<Ø"#×"5Ñ"5ØŸ<™<ØŸ<™<ØŸ+™+ôˆDð �F‰F�4ŽLñ ð �)‰)‹+×Ðà—:‘:ÜÔ#Ó$ß	‰”Ô2×;Ñ;Ó<Ó	=ß	‰Ô#×/Ñ/°8×3GÑ3GÑGÓ	Hó÷ €Fð
 �>‰>Ó×!Ñ!Ó#Ð#òO iò" 	|Úñ ñùsc   ‚A(J
Á*I=Á+)J
ÂB.J
ÅJ ÅJ
ÅJÅBJ
Ç$JÇ%A5J
ÉJÉ#J
Ê J
ÊJ
ÊJ
ÊJ
c                óP   € V ^8„  d   QhR\         P                  R\        R\        /# )r0   rž  r3   r4   rP  )r5   s   "r6   r7   r7   8  s&   € ÷ +ñ +¬t¯y©yð +¼lð +Ôlvñ +r8   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R/#  LN L" L5i)Nrx   r«  r=   ÚmessagezTemplate deleted)rm   r#   r   r
   rš   )rž  r3   r4   r¤  s   &&& r6   Údelete_vehicle_templater±  7  sd   é € à—V‘VÔ0°+Ó>×>€HßÜ¨Ð4HÔIÐIØ
�)‰)�HÓ
×ÐØ
�)‰)‹+×ÐØÐ)Ð*Ð*ñ ?ñ Ùùs8   ‚A1œA+�A1©!A1Á
A-ÁA1Á"A/Á#	A1Á-A1Á/A1)ÚDealerOrderVehicleÚDealerOrderVehicleFeaturez6/dealer-orders/{order_id}/vehicles/{vehicle_id}/configc          
      ó�   € V ^8„  d   QhR\         P                  R\         P                  R\        P                  R\        R\
        /# )r0   rÆ   Ú
vehicle_idr€   r3   r4   )r•   rQ  r)   ÚDealerOrderConfigUpdater   r   )r5   s   "r6   r7   r7   F  sO   € ÷ Y=ñ Y=Ü�i‰iðY=ä—	‘	ðY=ô ×
)Ñ
)ðY=ô 	ð	Y=ô
 ñY=r8   c           
   ƒ   ó’  "  € VP                  \        V4      G R j  x€L
 pV'       d   VP                  V 8w  d   \        RRR7      hVP	                  \        \        4      P                  \        P                  V8H  4      4      G R j  x€L
 P                  4       P                  4       pV Uu/ uF  p\        VP                  4      VbK  	  ppVP                  ;'       g    . p	\        VP                  4      \        VP                  4      8w  d   RV	9  d   V	P                  R4       \        VP                   4      \        VP                   4      8w  d   RV	9  d   V	P                  R4       \        VP"                  4      \        VP"                  4      8w  d   RV	9  d   V	P                  R4       VP$                   EFs  p
VP                  \        V
P                  4      4      pRpV'       g   RpMò\        VP&                  ;'       g    R	4      \        V
P&                  ;'       g    R	4      8w  g°   \)        VP*                  4      \)        V
P*                  4      8w  gƒ   \        VP,                  ;'       g    R	4      \        V
P,                  ;'       g    R	4      8w  gB   \        VP.                  ;'       g    R	4      \        V
P.                  ;'       g    R	4      8w  d   RpV'       g   EK2  \        V
P                  4      V	9  g   EKO  V	P                  \        V
P                  4      4       EKv  	  W•n        VP"                  Vn        VP                  Vn        VP                   Vn        RVn        VP	                  \        P2                  P5                  4       P                  \        P                  V8H  4      4      G R j  x€L
  VP                  \6        V 4      G R j  x€L
 pV'       Ed³   . p. pV	 F‘  pVR8X  d   VP                  R
4       K  VR8X  d   VP                  R4       K7  VR8X  d   VP                  R4       KQ  VR8X  d   VP                  R4       Kk   ^ R IpVP                  VP:                  ! V4      4       K“  	  V'       d‘   ^ RIHp VP	                  \        V4      P                  VP                  PA                  V4      4      4      G R j  x€L
 P                  4       P                  4       pV F  pVP                  VPB                  4       K   	  V'       d   RRPE                  V4       R2MR	pRVPF                  ^,            V R2pVPH                  '       g	   VVn$        M-VVPH                  9  d   V;PH                  RV 2,          un$        VP$                   FW  p\        VVP                  VP&                  VP*                  VP,                  VP.                  R7      pVPK                  V4       KY  	  VPM                  4       G R j  x€L
  RR/#  EL EL£u upi  ELl ELQ    EKF  ; i ELa L%5i)Nrx   zVehicle not found in orderr=   Ú	body_typeÚsegmentÚmodelFTr/  ÚModelz	Body TypeÚSegmentrÈ   ÚQuantity)ÚSpecialFeatureMasterz (z, Ú)zSalesperson edited Config Ú.Ú
)Úorder_vehicle_idrŸ  r   r¡  r¢  r£  r°  z"Configuration updated successfully)'rm   r²  rÆ   r   rN   r   r³  rO   rÂ  rQ   rR   ra   rŸ  Úedited_fieldsr›  rI  rœ  rš  r•  r   Úboolr¡  r¢  r£  Ú	is_editedr{  r
   r'   r•   rQ  Úapp.models.dealer_modelsr¾  Úin_Úfeature_namer2  Úsequence_norå   r™   rš   )rÆ   rµ  r€   r3   r4   ÚvehicleÚold_featuresr¥  Ú	old_f_maprÃ  ÚpfÚold_fÚis_f_editedrÔ   Úedited_namesÚfeature_ids_to_fetchÚfieldr•   r¾  ÚfeatsÚ
edited_strÚ
new_remarkr¦  s   &&&&&                  r6   Úupdate_dealer_order_configrÖ  E  sº  é € ð —F‘FÔ-¨zÓ:×:€Gß�g×&Ñ&¨(Ô2Ü¨Ð4PÔQÐQàŸ*™*ÜÔ(Ó)ß	‰Ô(×9Ñ9¸ZÑGÓ	Hó÷ ÷ �wƒy—‘“ð ñ 0<Ó<©|¨!”�Q—\‘\Ó" AÒ%©|€IÐ<à×)Ñ)×/Ð/¨R€MÜ
ˆ7×ÑÓ ¤C¨×(9Ñ(9Ó$:Ô:¸{ÐR_Ô?_Ø×Ñ˜[Ô)Ü
ˆ7×ÑÓ¤# d§o¡oÓ"6Ô6¸9ÈMÔ;YØ×Ñ˜YÔ'Ü
ˆ7×ÑÓ¤ D§M¡MÓ 2Ô2°wÀmÔ7SØ×Ñ˜WÔ%à�m�mˆØ—‘œc "§-¡-Ó0Ó1ˆØˆßØ‰KÜ�×(Ñ(×.Ð.¨BÓ/´3°r×7KÑ7K×7QÐ7QÈrÓ3RÔRÔVZÐ[`×[kÑ[kÓVlÔptÐuw÷  vCñ  vCó  qDô  WDô  HKð  LQ÷  L\ñ  L\÷  Lbð  Lbð  `bó  Hcô  gjð  km÷  kxñ  kx÷  k~ð  k~ð  |~ó  gô  Hô  CFð  GL÷  GVñ  GV÷  G\ð  G\ð  Z\ó  C]ô  adð  eg÷  eqñ  eq÷  ewð  ewð  uwó  axô  CxØˆKçŠ;œ3˜rŸ}™}Ó-°]×BØ× Ñ ¤ R§]¡]Ó!3×4ñ ð *Ôà—}‘}€GÔØ×,Ñ,€GÔØŸ™€GÔØ€GÔð �*‰*Ô.×8Ñ8×?Ñ?ÓA×GÑGÔHa×HrÑHrð  wAñ  IAó  Bó  C÷  Cð  Cð —&‘&œ hÓ/×/€Eß€uØˆØ!ÐÛ"ˆEØ˜Ô ×!4Ñ!4°WÖ!=Ø˜+Ô% |×':Ñ':¸;Ö'GØ˜)Ô# \×%8Ñ%8¸Ö%CØ˜%” ×!4Ñ!4°ZÖ!@ðÛØ(×/Ñ/°·	²	¸%Ó0@ÖAñ #÷  ÝEØŸ:™:¤fÐ-AÓ&B×&HÑ&HÐI]×IhÑIh×IlÑIlð  nBó  JCó  'Dó  E÷  E÷  Nñ  Nó  P÷  Tñ  Tó  VˆEÛ�Ø×#Ñ# A§N¡NÖ3ñ ÷ 9E�r˜$Ÿ)™) LÓ1Ð2°!Ñ4È"ˆ
Ø1°'×2EÑ2EÈÕ2IÐ1JÈ:È,ÐVWÐXˆ
Ø�}�}ˆ}Ø&ˆE�MØ˜uŸ}™}Ô,Ø�MŠM˜r * Ð.Õ.�Mð �]Œ]ˆÜ(Ø'Ø—|‘|Ø×1Ñ1Ø—|‘|Ø—|‘|Ø—k‘kô
ˆð 	�‰ˆtŽñ ð �)‰)‹+×ÐØÐ;Ð<Ð<òe ;òùò =ò: Cò 0øðÛúò Eñ. ùsã   ‚YœX(�Y©AYÂX+Â	$YÂ-X.ÃYÃ!D*YÈYÈ*AYÉ:YÊ"YÊ;YËYË1YÌB9YÏX3ÏYÏ%X6Ï&YÏ3A1YÑ%%X9Ò
YÒAYÓ!YÓ"AYÔ.AYÕ0B/YØYØ 	YØ+YØ.YØ6YØ9X?Ø;YÙYz/induction-readyz<ALL / TODAY / TOMORROW / UPCOMING / UNSCHEDULED / YYYY-MM-DD)ÚdescriptionFc                óÄ   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\        R\        R\        /# )r0   ri   Úda_lite_statusÚschedule_filterÚsearchÚinclude_inductedr3   r4   )r   ra   rÄ  r   r   )r5   s   "r6   r7   r7   ¥  sg   € ÷ |ñ |Üœ�}ð|äœS•Mð|ô œc•]ð|ô ”S�Mð	|ô
 ð|ô 	ð|ô ñ|r8   c              ƒ  óÜ  "  € ^ RI HpHp ^ RIHp	Hp
 ^ RIHpHpH	pH
pHpHpHpHp VP                  ! 4       pVV! ^R7      ,           p\!        V	4      P#                  V	P$                  P'                  R4      4      pV'       g;   VP#                  V	P(                  R8g  V	P*                  P-                  . R;O4      4      pV '       d   VP#                  V	P.                  V 8H  4      pV'       d   VP#                  V	P0                  V8H  4      pVP3                  VP5                  V	P$                  P7                  4       V	P8                  P7                  4       4      4      G Rj  x€L
 P;                  4       P=                  4       pV'       g   . # V Uu. uF1  pVP>                  '       g   K  VP>                  PA                  4       NK3  	  pp/ pV'       dû   VP3                  \!        V4      PC                  WÍPD                  VPD                  8H  4      PC                  W¼PF                  VPF                  8H  4      P#                  VP>                  PI                  V4      VPJ                  R8H  4      4      G Rj  x€L
 P;                  4       P=                  4       pV F4  pVP>                  '       g   K  VVVP>                  PA                  4       &   K6  	  \M        4       pV F‰  pVPN                  '       d   VPQ                  VPN                  4       VP>                  '       d   VP>                  PA                  4       MRpVV9   g   Kg  VPQ                  VV,          PD                  4       K‹  	  / pV'       EdÙ   \!        VVPR                  VPJ                  PU                  R	4      VP.                  PU                  R
4      VPV                  PU                  R4      \X        PZ                  PU                  R4      \\        PZ                  PU                  R4      V
P^                  PU                  R4      VPZ                  PU                  R4      VPZ                  PU                  R4      4
      PC                  W¼PF                  VPF                  8H  4      Pa                  \X        VP.                  \X        Pb                  8H  4      Pa                  \\        VPV                  \\        PV                  8H  4      Pa                  W¬Pd                  V
Pd                  8H  4      Pa                  WüPf                  VPf                  8H  4      Pa                  VVPh                  VPh                  8H  4      P#                  VPD                  PI                  \k        V4      4      VPJ                  R8H  4      pVP3                  V4      G Rj  x€L
 P=                  4        F‰  p V ^ ,          p!RV!RV PR                  R	V Pl                  RV Pn                  RV Pp                  RV Pr                  RV Pt                  RV Pv                  RV Px                  RV Pz                  /
VV!PD                  &   K‹  	  / p"V'       Ed   \!        VPD                  VP|                  VP~                  VP€                  VP‚                  VP„                  4      PC                  VVP†                  VP†                  8H  4      Pa                  VVPˆ                  VPŠ                  8H  4      P#                  VPD                  PI                  \k        V4      4      4      p#/ p$VP3                  V#4      G Rj  x€L
 P=                  4        Fç  p%Rp&V%P~                  R8X  d/   V%P€                  '       d   V%P|                   RV%P€                   2p&MnV%P~                  R8X  d    V%P‚                  '       d   V%P|                  p&M>V%P~                  R8X  d.   V%P„                  '       d   V%P|                   RV%P„                   2p&V&'       g   K¼  V$P�                  V%PD                  . 4      P�                  V&4       Ké  	  V$P‘                  4        F!  w  p'p(RPC                  V(R,          4      V"V'&   K#  	  \“        VP3                  \!        V
Pd                  V
P^                  4      4      G Rj  x€L
 P=                  4       4      p)\“        VP3                  \!        \X        Pb                  \X        PZ                  4      4      G Rj  x€L
 P=                  4       4      p*\“        VP3                  \!        \\        PV                  \\        PZ                  4      4      G Rj  x€L
 P=                  4       4      p+. p,V EF×  pVP>                  '       d   VP>                  PA                  4       MRpVP•                  V4      pRp'VPN                  '       d   VPN                  V9   d   VPN                  p'M%V'       d   VPD                  V9   d   VPD                  p'V''       g   K¤  VP•                  V'/ 4      p-V-P•                  R	4      R8w  d   KÎ  \—        V\˜        4      '       dñ   VPA                  4       '       dÛ   VPA                  4       P›                  4       p.V.R8X  d   VPœ                  V8w  d   EK3  M V.R8X  d   VPœ                  V8w  d   EKO  M„V.R8X  d(   VPœ                  '       d   VPœ                  V8”  g   EK}  MVV.R8X  d   VPœ                  e   EK–  M=V.R8w  d7    VPž                  ! VPA                  4       4      p/VPœ                  V/8w  d   EKÓ   VP•                  V'/ 4      p-V-P•                  R4      p!V-P•                  R4      ;'       g    VP.                  p0V-P•                  R4      ;'       g    V*P•                  V04      p1V-P•                  R4      ;'       g    VPV                  p2V-P•                  R4      ;'       g    V+P•                  V24      p3VP$                  '       d   VVP$                  ,
          P¢                  M^ p4\¤        P¦                  ! R</ R VP¨                  bR!VP>                  bR"V!'       d   V!PF                  MRbRV-P•                  R4      bR#V'bRV0bRV1bRV2bRV3bR$V!'       d   V!Pd                  MVPd                  bRV-P•                  R4      ;'       g    V)P•                  VPd                  4      bR%V!'       d   V!Pf                  MRbRV-P•                  R4      bR&V!'       d   V!Ph                  MRbRV-P•                  R4      bR'VPª                  bR(VP¬                  bR)VP®                  bR*VP°                  bR+VP$                  bR,V4bR-VP0                  ;'       g    R.bR/VP²                  bR0VP(                  bR1VP*                  ;'       g    R2bR3V'       d   VP´                  MRbR	V-P•                  R	4      bR4V!'       d   V!P¶                  M^bR5VPœ                  bR6VP¸                  bR7VPº                  bR8V''       d   V"P•                  V'4      MRbR9VP¼                  b p5V'       dÏ   VPA                  4       P¿                  4       p6V5P>                   R:V5PR                  ;'       g    R R:V5Pr                  ;'       g    R R:V5Pt                  ;'       g    R R:V5Pv                  ;'       g    R R:V5Px                  ;'       g    R R:V5P®                  ;'       g    R 2P¿                  4       p7V6V79  d   EKÆ  V,P�                  V54       EKÚ  	  V,#  ELãu upi  ELÚ E	L¦ EL EL¶ ELc EL  \          d     EL2i ; i5i)=a  
Returns all individual chassis that meet the two Induction Ready criteria:
1. Has an active dealer order / build order associated with it.
2. Is available in the yard (inwarded, arrival_date is set).
Also supports filtering by schedule status (TODAY, TOMORROW, UPCOMING, UNSCHEDULED).
©r   r   )r€  ÚVehicleModelMaster)r'   r²  ÚDealerOrderVehicleChassisr³  ÚBodyTypeMasterÚCustomerSegmentMasterr¾  ÚSpecialFeatureOptionMasterr:   Nr†  r  r/  Úorder_statusÚorder_dealer_idÚorder_client_idrH  Úclient_nameÚ
model_nameÚbody_type_nameÚsegment_nameÚovÚorder_nori   rk   ÚDROPDOWNz: ÚBOOLEANÚTEXTu    â€¢ :Né   NÚTODAYÚTOMORROWÚUPCOMINGÚUNSCHEDULEDÚALLÚ
chassis_idÚ
chassis_norÆ   rÂ  rš  r›  rœ  Ú	fuel_typeÚ
light_typeÚyard_locationÚprocurement_statusÚarrival_dateÚdays_in_yardrÙ  rÃ   Úda_lite_photo_urlr�  Útracking_statusÚ
CHASSIS_INÚexpected_delivery_dateÚ	order_qtyÚscheduled_induction_dateÚscheduled_atÚscheduled_byÚfeatures_summaryrå   Ú )ÚWIPÚREADY_FOR_DISPATCHrˆ  rº   )`r   r   r   rŒ  r€  rß  rÆ  r'   r²  rà  r³  rá  râ  r¾  rã  r@   r   rO   rü  Úisnotr�  rÿ  Únotin_ri   rÙ  rN   rZ   r³   r²   rQ   rR   r÷  r˜   r2  rÂ  rÆ   rÇ  rÄ   ÚsetÚdealer_order_vehicle_idr™   rì  Úlabelrk   r   r[   r!   Úmodel_numberÚ	outerjoinrn   rš  r›  rœ  Úlisträ  rå  ræ  rH  rç  rè  ré  rê  rÈ  Ú
input_typeÚoption_valuer¡  r¢  rŸ  r   Ú	option_idr^  rI  r¨   rh   rm   Ú
isinstancera   r—   r  Úfromisoformatrê   r;   r)   ÚInductionReadyChassisOutrö  rø  rù  rú  rû  rþ  r  rÈ   r  r  rå   Úlower)8ri   rÙ  rÚ  rÛ  rÜ  r3   r4   r   r   r€  rß  r'   r²  rà  r³  rá  râ  r¾  rã  r@   Útomorrowrp   Úchassis_listrs   Úchassis_nosÚchassis_to_dovcÚ	dovc_rowsÚdovcÚ
ov_ids_setÚ
c_no_cleanÚov_mapÚov_stmtrS  rë  Úfeatures_summary_mapÚ	feat_stmtÚ
feat_itemsrk  ÚvalÚov_idr¨   Ú
all_modelsÚall_dealersÚall_clientsÚresultsÚov_infoÚsfÚtarget_dÚdealer_id_valÚdealer_name_valÚclient_id_valÚclient_name_valrý  ÚitemÚqÚhaystacks8   &&&&&&&                                                 r6   Úlist_induction_ready_chassisr6  ¤  sE  é € ÷  )ßH÷÷ ó ð �JŠJ‹L€EØ‘y aÔ(Õ(€Hô 	ˆ}Óß	‰ˆ}×)Ñ)×/Ñ/°Ó5Ó	6ð 	÷
 Ø�z‰zØ×(Ñ(Ð,BÑBØ×)Ñ)×0Ñ0Ò1\Ó]ó
ˆ÷
 Ø�z‰z˜-×1Ñ1°YÑ>Ó?ˆçØ�z‰z˜-×6Ñ6¸.ÑHÓIˆàŸ*™* T§]¡]°=×3MÑ3M×3RÑ3RÓ3TÐVc×VnÑVn×VsÑVsÓVuÓ%vÓw×w÷  Añ  Aó  C÷  Gñ  Gó  I€LçØˆ	ñ 2>ÓN±¨AÀÇÅÔ'�1—<‘<×%Ñ%Ö'±€KÐNØ<>€OßØŸ:™:ÜÐ,Ó-ß‰TÐ$×&PÑ&PÐTf×TwÑTwÑ&wÓxß‰T�+×:Ñ:¸k×>RÑ>RÑRÓSß‰UØ)×4Ñ4×8Ñ8¸ÓEØ×"Ñ" kÑ1óó	
÷ 
÷ ‰7‹9—S‘S“Uð 	ó ˆDØ��ŠØ;?� §¡× 5Ñ 5Ó 7Ó8ñ ô
 “€JÛˆØ×$×$Ð$Ø�N‰N˜1×4Ñ4Ô5Ø-.¯\¯\¨\�Q—\‘\×'Ñ'Ô)¸rˆ
Ø˜Ö(Ø�N‰N˜?¨:Õ6×GÑGÖHñ ð €Fß€zäØ"Ø×$Ñ$Ø×"Ñ"×(Ñ(¨Ó8Ø×%Ñ%×+Ñ+Ð,=Ó>Ø×%Ñ%×+Ñ+Ð,=Ó>Ü×#Ñ#×)Ñ)¨-Ó8Ü×!Ñ!×'Ñ'¨Ó6Ø"×/Ñ/×5Ñ5°lÓCØ×#Ñ#×)Ñ)Ð*:Ó;Ø%×*Ñ*×0Ñ0°Ó@ó÷ ‰T�+×:Ñ:¸k×>RÑ>RÑRÓSß‰Y”~ {×'<Ñ'<Ä×@ZÑ@ZÑ'ZÓ[ß‰Y”| [×%:Ñ%:¼l×>TÑ>TÑ%TÓUß‰YÐ)×+FÑ+FÐJ\×JeÑJeÑ+eÓfß‰Y�~×'FÑ'FÈ.×JeÑJeÑ'eÓfß‰YÐ,Ð.@×.KÑ.KÐOd×OoÑOoÑ.oÓpß‰UØ"×3Ñ3×7Ñ7¼¸ZÓ8HÓIØ×"Ñ" kÑ1óð' 	ð0 Ÿ*™* WÓ-×-×2Ñ2Ö4ˆCØ�Q•ˆBà�bØ˜CŸL™LØ × 0Ñ 0Ø˜S×0Ñ0Ø˜S×0Ñ0Ø˜sŸ™Ø˜sŸ™Ø˜cŸn™nØ  #×"4Ñ"4Ø × 0Ñ 0ð+ˆF�2×&Ñ&Ó'ñ 5ð  24Ðß€zäØ)×:Ñ:Ø$×1Ñ1Ø$×/Ñ/Ø*×7Ñ7Ø)×4Ñ4Ø)×4Ñ4ó÷ ‰TÐ&Ð(A×(LÑ(LÐPd×PoÑPoÑ(oÓpß‰YÐ1Ð3L×3^Ñ3^Ðb|÷  cGñ  cGñ  4Gó  Hß‰UÐ,×=Ñ=×AÑAÄ$ÀzÓBRÓSÓTð 	ð 24ˆ
ØŸ
™
 9Ó-×-×2Ñ2Ö4ˆAØˆCØ�|‰|˜zÔ)¨a¯n¯n¨nØŸ™Ð(¨¨1¯>©>Ð*:Ð;‘Ø—‘ Ô*¨q¯|¯|¨|Ø—n‘n‘Ø—‘ Ô'¨A¯L¯L¨LØŸ™Ð(¨¨1¯<©<¨.Ð9�ß‰sØ×%Ñ% a×&8Ñ&8¸"Ó=×DÑDÀSÖIñ 5ð '×,Ñ,Ö.‰LˆE�5Ø*1¯,©,°u¸RµyÓ*AÐ  Ó'ñ /ô ˜RŸZ™Z¬Ð/A×/JÑ/JÐL^×LkÑLkÓ(lÓm×m×rÑrÓtÓu€JÜ˜bŸj™j¬´×0JÑ0JÌN×L_ÑL_Ó)`Óa×a×fÑfÓhÓi€KÜ˜bŸj™j¬´×0FÑ0FÌ×HYÑHYÓ)ZÓ[×[×`Ñ`ÓbÓc€Kà€GÜˆØ-.¯\¯\¨\�Q—\‘\×'Ñ'Ô)¸rˆ
Ø×"Ñ" :Ó.ˆð ˆØ×$×$Ð$¨×)BÑ)BÀfÔ)LØ×-Ñ-‰Eß�d×+Ñ+¨vÔ5Ø×)Ñ)ˆE÷ áà—*‘*˜U BÓ'ˆØ�;‰;�~Ó&¨+Ô5Ùô �o¤s×+Ò+°×0EÑ0E×0GÒ0GØ ×&Ñ&Ó(×.Ñ.Ó0ˆBØ�WŒ}Ø×-Ñ-°Ô6Úð 7à�zÔ!Ø×-Ñ-°Ô9Úð :à�zÔ!Ø×2×2Ð2°q×7QÑ7QÐTYÔ7YÚð 8Zà�}Ô$Ø×-Ñ-Ò9Úð :à�u”ðØ#×1Ò1°/×2GÑ2GÓ2IÓJ�HØ×1Ñ1°XÔ=Ú ð >ð
 —*‘*˜U BÓ'ˆØ�[‰[˜ÓˆàŸ™ KÓ0×?Ð?°A·K±KˆØ!Ÿ+™+ mÓ4×VÐV¸¿¹ÈÓ8VˆØŸ™ KÓ0×?Ð?°A·K±KˆØ!Ÿ+™+ mÓ4×VÐV¸¿¹ÈÓ8Vˆà89¿¿¸˜ §¡Õ.×4Ò4ÈAˆä×/Ò/ò "
Ø—|’|ð"
à—|’|ð"
÷ %'�R—[’[¨Døð"
ð —[‘[ Ô,ð	"
ñ
 #ð"
ñ $ð"
ñ (ð"
ñ $ð"
ñ (ð"
÷ %'�R—[’[¨A¯J©Jøð"
ð —{‘{ <Ó0×NÐN°J·N±NÀ1Ç:Á:Ó4Nøð"
÷ -/˜Ÿš°Døð"
ð #Ÿ;™;Ð'7Ô8ð"
÷ )+�r—}’}°øð"
ð !Ÿ™ ^Ô4ð"
ð  —k’kð!"
ð" —|’|ð#"
ð$ Ÿ/š/ð%"
ð&  !×3Ò3ð'"
ð( Ÿšð)"
ñ* &ð+"
ð, ×+Ñ+×8Ð8¨yøð-"
ð.  ×1Ò1ð/"
ð0 ×+Ò+ð1"
ð2 ×-Ñ-×=Ð=°øð3"
÷4 CG 4×#>Ò#>ÈDøð5"
ð6 !Ÿ™ ^Ô4ð7"
÷8 !#�b—f’f¨øð9"
ð: &'×%?Ò%?ð;"
ð< Ÿšð="
ð> Ÿšð?"
÷@ AFÐ1×5Ñ5°eÔ<È4øðA"
ðB —I’IðC"
ˆ÷J Ø—‘“×$Ñ$Ó&ˆAØŸ/™/Ð*¨!¨D¯M©M×,?Ð,?¸RÐ+@ÀÀ$×BRÑBR×BXÐBXÐVXÐAYÐYZÐ[_×[kÑ[k×[qÐ[qÐoqÐZrÐrsÐtx÷  uDñ  uD÷  uJð  uJð  HJð  tKð  KLð  MQ÷  M`ñ  M`÷  Mfð  Mfð  dfð  Lgð  ghð  im÷  i{ñ  i{÷  iAð  iAð  Að  hBð  C÷  Iñ  Ió  KˆHØ˜Ô Úà�‰�t×ñC ðF €Nòa xùò Oò
òb .ò@ .ò nÚaÚ[øôX "ô Úðüs¬  ‚C},Ã%},Ã+A2},Å} Å'},Æ},Æ}Æ%}ÇB+},É.}É/4},Ê(A.},Ì },Ì<0},Í-H8},Ö%}Ö&B)},ÙC!},Ü1}Ü29},Ý,>},Þ+/},ß },à B},â}âA},ã1}ã2A},å}åA0},æ9%},ç$},èA},éA.},ë5},ì1}ì2>},í1$},î)},ï $},ï%#},ð	A},ñ7},ò0},ó$},ó+(},ôA7},ö0},ö=},÷	(},÷2=},ø0)},ù=},ú},ú/},û},û},û4},ü6},ý},ý},ý},ý},ý},ý},ý})ý%},ý(})ý)},z/induction-ready/summaryc                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7   ¥  s   € ÷ ñ Üðäñr8   c              ƒ  ót  aa"  € ^ RI HpHp VP                  ! 4       oSV! ^R7      ,           o\	        WR7      G Rj  x€L
 p\        V4      pV Uu0 uF"  qfP                  '       g   K  VP                  kK$  	  ppV^ 8”  d   \        R V 4       4      V,          MRp\        R V 4       4      p	\        V3R lV 4       4      p
\        V3R	 lV 4       4      p\        V3R
 lV 4       4      p\        R V 4       4      p\        P                  ! V\        V4      \        V^4      V	V
VVVR7      #  Lóu upi 5i)zR
Computes top KPIs for the Induction Ready dashboard including scheduling counts.
rÞ  r:   ©r3   r4   Nc              3   óL   "  € T F  qP                   ;'       g    ^ x € K  	  R# 5i©r   N)rý  ©Ú.0Úis   & r6   Ú	<genexpr>Ú.get_induction_ready_summary.<locals>.<genexpr>³  s   é € Ð8±%¨Q—^‘^×(Ð( qÔ(³%ùs   ‚$™$g        c              3   óJ   "  € T F  qP                   R 8X  g   K  ^x € K  	  R# 5i)ÚOKN)rÙ  r<  s   & r6   r?  r@  ´  s   é € ÐB¡˜1×)9Ñ)9¸TÑ)A—Q’Q£ùs   ‚#™
#c              3   óL   <"  € T F  qP                   S8X  g   K  ^x € K  	  R# 5i©é   N©r  ©r=  r>  r@   s   & €r6   r?  r@  ¶  s   øé € ÐN¡˜A×*DÑ*DÈÑ*M—a’a£ùó   ƒ$š
$c              3   óL   <"  € T F  qP                   S8X  g   K  ^x € K  	  R# 5irD  rF  )r=  r>  r  s   & €r6   r?  r@  ·  s   øé € ÐT¡E˜q×-GÑ-GÈ8Ñ-SŸš£EùrH  c              3   ót   <"  € T F-  qP                   '       g   K  VP                   S8”  g   K)  ^x € K/  	  R# 5irD  rF  rG  s   & €r6   r?  r@  ¸  s)   øé € Ðo¡E˜q×-GÕ-GœÈA×LfÑLfÐinÑLnŸš£Eùs   ƒ8›8®
8c              3   óD   "  € T F  qP                   e   K  ^x € K  	  R # 5irY   rF  r<  s   & r6   r?  r@  ¹  s   é € ÐS¡u !×0JÑ0JŸAšA£uùs   ‚ –
 )Útotal_induction_readyÚtotal_dealersÚavg_yard_ageing_daysÚda_lite_ok_countÚscheduled_today_countÚscheduled_tomorrow_countÚscheduled_upcoming_countÚunscheduled_count)r   r   r   r@   r6  rŽ  ri   Úsumr)   ÚInductionReadySummaryOutÚround)r3   r4   r   r   r¨   Útotalr>  r_  Ú
avg_ageingÚ
da_lite_okÚtoday_countÚtomorrow_countÚupcoming_countrS  r@   r  s   &&            @@r6   Úget_induction_ready_summaryr]  ¤  s  ùé € ÷ )Ø�JŠJ‹L€EØ‘y aÔ(Õ(€Hä.°"ÔP×P€EÜ�‹J€EÙ$)Ó9¡E˜q¯[­[Œ{ˆq�{Œ{¡E€GÐ9ØDIÈAÄI”Ñ8±%Ó8Ó8¸5Ö@ÐSV€JÜÑB¡ÓBÓB€JäÔN¡ÓNÓN€KÜÔT¡EÓTÓT€NÜÔo¡EÓoÓo€NÜÑS¡uÓSÓSÐä×+Ò+Ø#Ü˜'“lÜ" :¨qÓ1Ø#Ø)Ø!/Ø!/Ø+ô	ð 	ñ Qùâ9ùs(   „9D8½D1¾D8ÁD3Á)D3Á9B9D8Ä3D8z/induction-ready/schedule-planc                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7   È  s    € ÷ Dñ DÜðDäñDr8   c           
   ƒ  óÄ  "  € ^ RI HpHp VP                  ! 4       pWC! ^R7      ,           p\	        WR7      G Rj  x€L
 p\        V4      p^ p^ p	^ p
^ p/ pV F�  pVP                  pVf   V^,          pK  VP                  V. 4      P                  VP                  4       Wä8X  d   V^,          pMWå8X  d
   V	^,          p	Wä8¼  g   Kp  Wä8”  g   Kx  V
^,          p
Kƒ  	  \        VP                  4       4      p\        ^4       F!  pVP                  WC! VR7      ,           4       K#  	  . p\        V4       FŒ  pVV8  d   VP                  V4      '       g   K#  VP                  V. 4      pVV8X  d   RpMVV8X  d   RpMVP!                  R4      pVP                  \"        P$                  ! VV\        V4      VR7      4       KŽ  	  \"        P&                  ! VV	V
VVVR	7      #  EL£5i)
z^
Returns the daily planned breakdown and scheduling summary for upcoming induction handovers.
rÞ  r:   r9  NÚTodayÚTomorrowz	%a, %d %b)r   Ú
date_labelrj   Úchassis_ids)rZ  r[  r\  rS  Útotal_ready_countÚdaily_breakdown)r   r   r   r@   r6  rŽ  r  r^  rI  rö  r  ÚkeysÚranger™   Úsortedrm   Ústrftimer)   ÚInductionDateBucketÚSchedulePlanSummaryOut)r3   r4   r   r   r@   r  r¨   Útotal_readyrZ  r[  r\  rS  Údate_mapr3  Ús_dateÚ	all_datesr>  re  ÚdÚc_idsr  s   &&                   r6   Úget_induction_schedule_planrr  Ç  s¿  é € ÷ )Ø�JŠJ‹L€EØ�y aÔ(Õ(€Hä.°"ÔP×P€EÜ�e“*€Kà€KØ€NØ€NØÐð -/€HÛˆØ×.Ñ.ˆØŠ>Ø Õ"Òà×Ñ ¨Ó+×2Ñ2°4·?±?ÔCØŒØ˜qÕ ‘ØÔ#Ø !Õ#�ØŽØ–>Ø" aÕ'’Nñ ô �H—M‘M“OÓ$€IÜ�1ŽXˆØ�‰�e˜i¨QÔ/Õ/Ö0ñ ð €OÜ�IÖˆØˆuŒ9˜XŸ\™\¨!Ÿ_š_ÙØ—‘˜Q Ó#ˆØ�Œ:Ø‰EØ�(Œ]Ø‰Eà—J‘J˜{Ó+ˆEà×ÑÜ×'Ò'ØØ Ü˜%“jØ!ô	ö	
ñ ô( ×)Ò)ØØ%Ø%Ø+Ø%Ø'ôð òe Qùs$   ‚8G ºG»BG ÃG ÃBG ÅBG z/induction-ready/schedulec                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r¿   )r)   ÚScheduleInductionRequestr   r   )r5   s   "r6   r7   r7     s,   € ÷ ?ñ ?Ü×-Ñ-ð?äð?ô ñ?r8   c           
   ƒ  ó4  "  € ^ RI H pHp ^ RIHp V P                  '       g   \        RRR7      hVP                  ! VP                  4      p^ pV P                   EFX  pVP                  WX4      G Rj  x€L
 p	V	'       g   K'  V	P                  R8X  d   K:  ^ RI
Hp
HpHp R	pV	P                  '       d�   VP                  \!        V
P"                  4      P%                  WºP&                  VP&                  8H  4      P)                  VP*                  V	P                  8H  4      4      G Rj  x€L
 P-                  4       pVR
8X  d   RpV'       gä   V	P.                  '       dÒ   VP                  \!        V
P"                  4      P%                  W¼P*                  VP*                  8H  4      P%                  W«P&                  V
P&                  8H  4      P)                  VP.                  V	P.                  P1                  4       8H  4      4      G Rj  x€L
 P3                  4       P5                  4       pR
V9   d   RpV'       g   EKÝ  V P6                  V	n        Win        VP:                  V	n        V P>                  '       d9   V	P@                  ;'       g    R RV P>                   2P1                  4       V	n         V^,          pEK[  	  VPC                  4       G Rj  x€L
  V P6                  '       d   V P6                  PE                  R4      MRpRRRVRRV RV R2/#  EL› ELë EL LK5i)zB
Assigns or clears a planned induction date for selected chassis.
©r   Útimezoner  r<   zNo chassis IDs providedr=   Nr†  ©r'   r²  rà  Fr  Tr/  z
[Schedule Plan]: z%d %b %YÚUnscheduledr@  Úupdated_countr°  úSuccessfully planned z chassis for rÀ  )#r   rw  rŒ  r€  rc  r   ÚnowÚutcrm   r�  rÆ  r'   r²  rà  r  rN   r   rÄ   r2  rÆ   rO   rÂ  Úscalar_one_or_noner÷  r˜   rQ   rR   r  r  r»   r  r  rå   rš   ri  )rÀ   r3   r4   r   rw  r€  r|  rz  Úc_idr�  r'   r²  rà  Úis_confirmedÚ
ord_statusÚdovc_ordÚdate_strs   &&&              r6   Úschedule_chassis_inductionr„    s“  é € ÷ ,Ý4à××ÐÜ¨Ð4MÔNÐNà
�,Š,�x—|‘|Ó
$€CØ€Mà×#Õ#ˆØŸ™˜}Ó3×3ˆßÙà×!Ñ!Ð%;Ô;Ù÷ 	hÑgØˆØ×*×*Ð*Ø "§
¡
Ü�{×)Ñ)Ó*ß‘Ð(×*>Ñ*>ÐBT×B]ÑB]Ñ*]Ó^ß‘Ð)×:Ñ:¸g×>]Ñ>]Ñ]Ó^ó!÷ ÷ "Ñ!Ó#ð	 ð
 ˜[Ô(Ø#�ß × 2× 2Ð 2Ø Ÿj™jÜ�{×)Ñ)Ó*ß‘Ð(×*TÑ*TÐXj×X{ÑX{Ñ*{Ó|ß‘�k×#>Ñ#>À+×BVÑBVÑ#VÓWß‘Ð0×;Ñ;¸w×?QÑ?Q×?WÑ?WÓ?YÑYÓZó	÷ ÷
 ‰w‹yŸ™›ð ð ˜hÔ&Ø#�çÚà+2×+KÑ+KˆÔ(Ø"ÔØ+×3Ñ3ˆÔØ�=�=ˆ=Ø!(§¡×!6Ð!6°BÐ 7Ð7JÈ7Ï=É=È/ÐZ×`Ñ`ÓbˆGŒOØ˜Õ‹ñK $ðN �)‰)‹+×ÐàHO×Hh×HhÐHhˆw×/Ñ/×8Ñ8¸ÔDÐn{€Hà�4Ø˜ØÐ*¨=¨/¸ÀxÀjÐPQÐRðð òS 4òòñ& ùsv   ‚A0LÁ2LÁ3LÁ?2LÂ2A3LÄ%LÄ&"LÅ	LÅB'LÈLÈ0LÈ4ALÊALË
LËLË!-LÌLÌLÌLz /induction-ready/auto-distributec                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r¿   )r)   ÚBatchAutoDistributeRequestr   r   )r5   s   "r6   r7   r7   S  s,   € ÷ 7ñ 7Ü×/Ñ/ð7äð7ô ñ7r8   c              ƒ  ó  "  € ^ RI H pHp ^ RIHp V P                  '       g   \        RRR7      h\        R V P                   4       4      pV^ 8:  d   \        RRR7      h. pV P                  '       d   \        V P                  4      pM:\        V P                  RWR	7      G R
j  x€L
 pV U	u. uF  q™P                  NK  	  pp	V'       g   \        RRR7      hVP                  ! VP                  4      p
^ p^ pV P                   F»  pVP                  ^ 8:  g   V\        V4      8¼  d   K&  W{W½P                  ,            pV\        V4      ,          pV Fi  pVP!                  W_4      G R
j  x€L
 pV'       d   VP"                  R8X  d   K7  VP$                  Vn        V
Vn        VP*                  Vn        V^,          pKk  	  K½  	  VP/                  4       G R
j  x€L
  RRRVRRV R\        V P                  4       R2/#  ELYu up	i  L› L05i)z·
Distributes a batch of chassis across specified dates (e.g. 20 Today, 30 Tomorrow, 10 Day After).
If chassis_ids is not provided, allocates from available unscheduled ready chassis.
rv  r  r<   zNo date distributions providedr=   c              3   ó^   "  € T F#  qP                   ^ 8”  g   K  VP                   x € K%  	  R# 5ir;  )rj   )r=  rp  s   & r6   r?  Ú5auto_distribute_induction_schedule.<locals>.<genexpr>b  s    é € ÐPÑ+@ aÇGÁGÈaÁKœ'˜!Ÿ'ž'Ó+@ùs   ‚-™-z.Total distributed count must be greater than 0rô  )ri   rÚ  r3   r4   Nz.No eligible chassis available for distributionr†  r@  TÚscheduled_countr°  r{  z chassis across z scheduled dates.)r   rw  rŒ  r€  Údistributionsr   rT  rc  r  r6  ri   rö  r|  r}  rj   rŽ  rm   r�  r   r  r  r»   r  rš   )rÀ   r3   r4   r   rw  r€  Útotal_requestedÚcandidate_idsÚready_itemsr>  r|  Úcurr_idxÚtotal_scheduledÚdistÚtarget_slicer  r�  s   &&&              r6   Ú"auto_distribute_induction_scheduler“  R  sÚ  é € ÷ ,Ý4à× × Ð Ü¨Ð4TÔUÐUäÑP¨7×+@Ò+@ÓPÓP€OØ˜!ÔÜ¨Ð4dÔeÐeà€MØ××ÐÜ˜W×0Ñ0Ó1‰ä8À7×CTÑCTÐfsÐxzô  W÷  WˆÙ/:Ó;©{¨!Ÿœ©{ˆÐ;çÜ¨Ð4dÔeÐeà
�,Š,�x—|‘|Ó
$€CØ€HØ€Oà×%Ô%ˆØ�:‰:˜Œ?˜h¬#¨mÓ*<Ô<Ùà$°¿:¹:Õ0EÐFˆØ”C˜Ó%Õ%ˆã ˆDØŸF™F =Ó7×7ˆGß˜g×4Ñ4Ð8NÔNÙØ/3¯y©yˆGÔ,Ø#&ˆGÔ Ø#/×#7Ñ#7ˆGÔ Ø˜qÕ ŠOó !ñ &ð  �)‰)‹+×Ðð 	�4Ø˜?ØÐ*¨?Ð*;Ð;KÌCÐPW×PeÑPeÓLfÐKgÐgxÐyðð ò9 WùÚ;ñ" 8ñ ùsV   ‚A1H
Á41H
Â%G>Â&H
Â.HÃ	H
ÃBH
Å*HÅ+H
Å7A H
ÇHÇ'H
ÈH
ÈH
z/induction-ready/stationsc                ó0   € V ^8„  d   QhR\         R\        /# rI   rJ   )r5   s   "r6   r7   r7   Ž  s   € ÷ ñ Üðäñr8   c              ƒ  ó´  "  € ^ RI Hp V P                  \        V4      P	                  VP
                  R8H  4      P                  VP                  4      4      G Rj  x€L
 P                  4       P                  4       pV Uu. uFH  pR\        VP                  4      RVP                  RVP                  RVP                  ;'       g    ^ /NKJ  	  up#  Luu upi 5i)zO
Returns active stations from StationMaster for production station assignment.
)ÚStationMasterTNÚ
station_idÚstation_codeÚstation_namerÉ  )Úapp.models.rm_modelsr–  rN   r   rO   rP   rZ   rÉ  rQ   rR   ra   r—  r˜  r™  )r3   r4   r–  ÚstationsÚss   &&   r6   Úlist_induction_stationsr�  �  s¿   é € õ 3Ø—j‘jÜˆ}Óß	‰ˆ}×&Ñ&¨$Ñ.Ó	/ß	‰�-×+Ñ+Ó	,ó÷ ÷ �wƒy—‘“ð	 ñ óñ ˆAð œ#˜aŸl™lÓ+Ø˜AŸN™NØ˜AŸN™NØ˜1Ÿ=™=×-Ð-¨Aó		
ñ ñð ñùò
ùs+   ‚ACÁCÁ$CÂ ACÃCÃCÃCz/induction-ready/inductc                óP   € V ^8„  d   QhR\         P                  R\        R\        /# r¿   )r)   ÚInductToProductionRequestr   r   )r5   s   "r6   r7   r7   §  s1   € ÷ Pñ PÜ×.Ñ.ðPäðPô ñPr8   c              ƒ  óº  "  € ^ RI H pHp ^ RIHpHpHp ^ RIHp \        V P                  ;'       g    . 4      p	V	'       g[   V P                  '       dI   \        V P                  P                  4       VVR7      G Rj  x€L
 p
V
 Uu. uF  q»P                  NK  	  p	pV	'       g   \        RRR7      hVP                  ! VP                   4      p^ pV	 EF7  pVP#                  W^4      G Rj  x€L
 pV'       g   K'  VP$                  R	8X  d   K:  VP&                  '       g   \        RR
VP(                   R2R7      h^ RIHpHpHp RpVP2                  pV'       d‡   VP5                  \7        VP8                  4      P;                  VVP<                  VP<                  8H  4      P?                  VP@                  V8H  4      4      G Rj  x€L
 PC                  4       pVR8X  d   RpV'       Eg<   VP(                  '       Ed)   VP5                  \7        VP8                  VP@                  4      P;                  VVP@                  VP@                  8H  4      P;                  VVP<                  VP<                  8H  4      P?                  VP(                  VP(                  PE                  4       8H  4      PG                  \I        VP8                  R8H  ^3^R7      4      4      G Rj  x€L
 PK                  4       pV'       d1   V^ ,          R8X  d#   RpVP2                  '       g   V^,          Vn        V'       g   \        RR
VP(                   R2R7      hR	Vn        RVn&        WÏn'        VPP                  Vn)        V PT                  '       d   V PT                  Vn+        VP5                  \7        V4      P?                  VP                  V8H  VPX                  P[                  R4      4      PG                  VP\                  P_                  4       4      Pa                  ^4      4      G Rj  x€L
 PC                  4       pV'       d%   VP                  ! 4       Pc                  4       Vn,        TPe                  T! TV PT                  ;'       g    VPV                  RVPf                  ;'       g    RVPf                  ;'       g    RVPP                  RV Ph                  ;'       g    RR7      4       VP5                  \7        V4      P?                  VP                  V8H  4      4      G Rj  x€L
 PC                  4       pV'       gH   V! VV Pj                  V Pl                  V Pn                  V Ph                  R7      pVPe                  V4       MŒV Pj                  '       d   V Pj                  Vn5        V Pl                  '       d   V Pl                  Vn6        V Pn                  '       d   V Pn                  Vn7        V Ph                  '       d   V Ph                  Vn8        V^,          pEK:  	  VPs                  4       G Rj  x€L
  \t        Pv                  ! RVRV R2R7      #  ELÅu upi  ELa EL‹ ELy EL= ELE L85i)a^  
Inducts selected chassis into production:
- Sets current_status = 'HANDED_TO_PRODUCTION'
- Sets handed_to_production_at & handed_to_production_by
- Note: tracking_status remains 'CHASSIS_IN' until scanned by the station operator
- Logs event in ChassisStatusLog
- Initializes/updates ProductionReportManualEntry with Line/Contractor group & remarks
rv  )r€  ÚChassisStatusLogÚChassisMovementLog)ÚProductionReportManualEntry)rÚ  r3   r4   Nr<   z5No chassis IDs or scheduled batch found for inductionr=   r†  zChassis zY has not arrived in the yard yet. Both order and yard arrival criteria must be satisfied.rx  Fr  T)Úelse_z| does not have a confirmed order attached (status must be CONFIRMED). Only confirmed orders can be inducted into production.ÚPROCUREMENT_PENDINGÚMANUAL_ENTRYr   Ú
PRODUCTIONz0Inducted to production via Sales Induction Ready)rö  r—  Ú	scan_modeÚfrom_statusÚ	to_statusÚ
changed_byÚscan_locationrå   )rö  Úcontractor_groupÚac_makeÚinterior_workÚremarkzSuccessfully sent z chassis into production.)r@  Úinducted_countr°  )<r   rw  rŒ  r€  r¡  r¢  Ú#app.models.production_report_modelsr£  r  rc  Úscheduled_dater6  Ú	isoformatrö  r   r|  r}  rm   r�  rü  r÷  rÆ  r'   r²  rà  r  rN   r   rÄ   r2  rÆ   rO   rÂ  r~  r˜   rZ   r   rz   rû  Úhanded_to_production_atr»   Úhanded_to_production_byÚinitial_station_idÚcurrent_station_idÚout_timeÚis_r²   r³   ÚlimitÚtimer™   rÿ  rå   r­  r®  r¯  r°  rš   r)   ÚInductToProductionResponse)rÀ   r3   r4   r   rw  r€  r¡  r¢  r£  Útarget_chassis_idsr¨   r>  r|  r±  r  r�  r'   r²  rà  Úconfirmed_order_existsÚtarget_ov_idÚord_resr‚  Úopen_legÚmanual_entrys   &&&                      r6   Úinduct_chassis_to_productionrÄ  ¦  sZ  é € ÷ ,ßZÑZÝOä˜g×1Ñ1×7Ð7°RÓ8Ð÷  '×"8×"8Ð"8Ü2Ø#×2Ñ2×<Ñ<Ó>ØØ%ô
÷ 
ˆñ
 5:Ó:±E¨qŸlœl±EÐÐ:çÜ¨Ð4kÔlÐlà
�,Š,�x—|‘|Ó
$€CØ€Nä"ˆØŸ™˜}Ó3×3ˆßÙà×!Ñ!Ð%;Ô;Ùð ×#×#Ð#ÜØØ! '×"4Ñ"4Ð!5ð  6Oð  Pôð ÷ 	hÑgØ!&ÐØ×6Ñ6ˆßØŸZ™ZÜ�{×)Ñ)Ó*ß‘Ð(¨+×*>Ñ*>ÐBT×B]ÑB]Ñ*]Ó^ß‘Ð)×:Ñ:¸lÑJÓKó÷ ÷ "Ñ!Ó#ð	 ð
 ˜+Ô%Ø)-Ð&ç%Ð%¨'×*<×*<Ñ*<Ø Ÿj™jÜ�{×)Ñ)Ð+D×+UÑ+UÓVß‘Ð(Ð*C×*TÑ*TÐXj×X{ÑX{Ñ*{Ó|ß‘�kÐ#5×#>Ñ#>À+×BVÑBVÑ#VÓWß‘Ð0×;Ñ;¸w×?QÑ?Q×?WÑ?WÓ?YÑYÓZß‘œ$ × 2Ñ 2°kÑ AÀ1ÐEÈQÔOÓPó÷ ÷ ‰u‹wð ÷ ˜H Q�K¨;Ô6Ø)-Ð&Ø×6×6Ð6Ø6>¸qµk�GÔ3ç%ÜØØ! '×"4Ñ"4Ð!5ð  6rð  sôð ð
 "8ˆÔØ%:ˆÔ"Ø*-Ô'Ø*6×*>Ñ*>ˆÔ'à×%×%Ð%Ø)0×)CÑ)CˆGÔ&ð Ÿ*™*ÜÐ%Ó&ß‰UÐ%×0Ñ0°DÑ8Ð:L×:UÑ:U×:YÑ:YÐZ^Ó:_Ó`ß‰XÐ(×3Ñ3×8Ñ8Ó:Ó;ß‰U�1‹Xó	
÷ 
÷
 ÑÓð 	÷ Ø (§¢£× 3Ñ 3Ó 5ˆHÔð 	�‰ÑØØ×1Ñ1×OÐO°W×5OÑ5OØ$Ø×/Ñ/×?Ð?°<Ø×-Ñ-×=Ð=°Ø#×+Ñ+Ø&Ø—O‘O×YÐYÐ'Yô	
ô 		ð !Ÿj™jÜÐ.Ó/×5Ñ5Ð6Q×6\Ñ6\Ð`dÑ6dÓeó
÷ 
çÑÓð 	÷ Ù6ØØ!(×!9Ñ!9ØŸ™Ø%×3Ñ3Ø—‘ôˆLð �F‰F�<Õ à×'×'Ð'Ø07×0HÑ0H�Ô-Ø��ˆØ'.§¡�Ô$Ø×$×$Ð$Ø-4×-BÑ-B�Ô*Ø��ˆØ&-§o¡o�Ô#à˜!Õ‹ñM #ðP �)‰)‹+×Ðä×-Ò-ØØ%Ø$ ^Ð$4Ð4MÐNôð òo
ùò
 ;ò 4ò(òò6
ò,
ñ2 ùs  ‚?YÁYÁ)YÁ=YÁ>YÂYÂ	YÂ$AYÃ)Y
Ã*YÃ6&YÄ:YÅA*YÇYÇ#YÇ'YÇ:CYËYËYË2!YÌYÌ*C,YÐYÐYÐ1AYÑ6YÒYÒ+ YÓAYÔYÔYÔ,AYÖ"YÖ("Y×"Y×.2YØ YØ!"YÙYÙYÙYÙYÙYÙY)r-   ÚDEALER_PORTAL_ADMINrG   r§  )€Úfastapir   r   r   r   Úsqlalchemy.ext.asyncior   Úsqlalchemy.futurer   Ú
sqlalchemyr	   r
   r   Úsqlalchemy.ormr   Útypingr   r   r•   r   r   r   Úapp.core.databaser   Úapp.core.securityr   r   Úapp.models.core_modelsr   Úapp.models.sales_modelsr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   rš  r%   rÆ  r&   r'   Údecimalr(   Úapp.modules.salesr)   r*   rA   Úapp.modules.inventory.servicer+   Úrouterrm   rE   ÚCustomerTypeMasterResponserU   ÚTransportMasterResponser\   ÚCustomerMasterResponsert   r|   Úpostr    Úputr¯   ÚSalesEnquiryResponserµ   r½   ÚSparePartsOrderResponser×   rÚ   rî   ÚServiceOrderResponserô   r÷   Úpatchrþ   ÚCustomerPaymentLogResponser  r  r  ÚGoodwillApprovalLogResponser  r  r#  r*  r7  r=  rC  rD  Ú!app.modules.dealer_portal.schemasrE  rL  rT  r[  ÚClientMasterResponsere  rl  rv  r|  ÚClientTrackingDashboardResponser’  ÚSalesVehicleTemplateResponser–  r§  r­  r±  r²  r³  rÖ  r  r6  rU  r]  rk  rr  r„  r“  r�  r½  rÄ  rº   r8   r6   Ú<module>rã     sí  ðß <Ó <Ý /Ý $ß )Ñ )Ý 'ß !Û ç .Ñ .å $ß HÝ -÷÷ ÷ ÷ ñ õ -ß DÝ Ý %Ý BÝ :á	˜Ð(Ô	)€à‡�ˆLÓá!& t£Ù$ T›{Ù˜v“Ù&Ñ'9¸'À6Ó'JÓKö	Ió ðIð ‡�Ð¨d°7×3UÑ3UÕ.V€ÓWÙ18¸³Ñ]dÑe{ð  ~Eð  GMð  }Nð  PVó  fWó  ^Xö "ó Xð"ð ‡�ˆM¨$¨w×/NÑ/NÕ*O€ÓPÙ-4°V«_ÑY`Ñawð  zAð  CIð  yJð  LRó  bSó  ZTö "ó Qð"ð
 ‡�ˆL¨¨g×.LÑ.LÕ)M€ÓNà#Ø ØÙ˜v“Ù&Ñ'=¸wÈÐ>OÐQWÓ'XÓYöó Oðð> ‡�Ð&°w×7UÑ7U€ÓVÙ<CÀF»OÑhoñ  qGð  IPð  RXð  HYð  [aó  qbó  icö ó Wðð ‡�ˆ\¨'×*HÑ*H€ÓIñ ˜v“Ù&Ñ'9¸'À8Ó'LÓMö2!ó Jð2!ðh ‡�Ð&°w×7UÑ7U€ÓVñ ˜v“Ù&Ñ'9¸'À6Ó'JÓKö	2ó Wð2ðp ‡�ˆL¨¨g×.JÑ.JÕ)K€ÓLÙ,3°F«OÑX_Ñ`rÐszð  }Có  aDó  YEö "ó Mð"ð
 ‡�ˆ\¨'×*FÑ*F€ÓGñ ˜v“Ù&Ñ'9¸'À8Ó'LÓMö	ó Hð	ð0 ‡�ˆ^¨G×,KÑ,K€ÓLñ ˜v“Ù&Ñ'9¸'À8Ó'LÓMö%!ó Mð%!ðN ‡�ˆN¨4°×0OÑ0OÕ+P€ÓQá˜v“Ù&Ñ'9¸'À6Ó'JÓKö"ó Rð"ð ‡�Ð,¸W×=\Ñ=\€Ó]ñ ˜v“Ù&Ñ'9¸'À6Ó'JÓKö3ó ^ð3ðn ‡�Ð¨w×/KÑ/K€ÓLñ ˜v“Ù&Ñ'9¸'À8Ó'LÓMöó Mðð* ‡�Ð¨d°7×3OÑ3OÕ.P€ÓQÙ18¸³Ñ]dÑewÐxð  BHó  fIó  ^Jö "ó Rð"ð ‡�Ð3ÀG×D`ÑD`€Óañ ˜v“Ù&Ñ'9¸'À6Ó'JÓKö	ó bðð: ‡�ˆ[¨×)KÑ)K€ÓLñ ˜v“Ù&Ñ'9¸'À8Ó'LÓMöó Mðð& ‡�Ð-¸g×>`Ñ>`€Óañ ˜v“Ù&Ñ'9¸'À9Ó'MÓNöó bðð( ‡�ˆK¨¨W×-OÑ-OÕ(P€ÓQÙ+2°6«?ÑW^Ñ_qÐryð  |Bó  `Có  XDö "ó Rð"ð ‡�Ð¨d°7×3VÑ3VÕ.W€ÓXÙ18¸³Ñ]dÑewÐxð  BHó  fIó  ^Jö "ó Yð"ð ‡�Ð4ÀW×EhÑEh€Óið  Ù˜v“Ù&Ñ'9¸'À9Ó'MÓNö	ó jðð& ‡�Ð3ÀG×DgÑDg€Óhñ ˜v“Ù&Ñ'9¸'À9Ó'MÓNö	ó iðð0 ‡�Ð¨w×/RÑ/R€ÓSñ ˜v“Ù&Ñ'9¸'À8Ó'LÓMöó Tðð0 ‡�ˆ]¨7×+JÑ+J€ÓKÙSZÐ[aÓSbñ  @Gñ  HZð  [bð  dló  Hmó  @nö 	ó Lð	ð ‡�Ð(¸×9XÑ9X€ÓYÙfmÐntÓfuñ  SZñ  [mð  nuð  w}ó  [~ó  Sö 
ó Zð
ð ‡�Ð+Ó,ÙAHÈÃÑmtñ  vHð  IPð  RZó  v[ó  n\ö !ó -ð!õ  3Ý >à‡�Ð¨tÐ4DÕ/E€ÓFá˜v“Ù&Ñ'9¸'À6Ó'JÓKöó Gðð$ ‡�Ð+Ð<L€ÓMñ ˜v“Ù&Ñ'9¸'À6Ó'JÓKöó Nðð( ‡�Ð9ÐJZ€Ó[ñ ˜v“Ù&Ñ'9¸'À6Ó'JÓKöó \ðð, ‡�ˆJ t¨G×,HÑ,HÕ'I€ÓJÙ*1°&«/ÑV]Ñ^tÐv}ð  @Fð  vGð  IOó  _Pó  WQö ó Kðð ‡�Ð"°7×3OÑ3O€ÓPÙ8?À»Ñdkñ  mCð  ELð  NTð  DUð  W]ó  m^ó  e_ö ó Qðð ‡�ˆZ¨×(DÑ(D€ÓEÙMTÐU[Ë_ñ  zAñ  BTð  U\ð  ^fó  Bgó  zhö ó Fðð, ‡�Ð"°7×3OÑ3O€ÓPÙ]dÐekÓ]lñ  JQñ  Rdð  elð  ntó  Ruó  Jvö ó Qðð. ‡�Ð+¸G×<cÑ<c€ÓdÙAHÈÃÑmtñ  vHð  IPð  RXó  vYó  nZö ó eðð8 ‡�Ð °°g×6ZÑ6ZÕ1[€Ó\Ù4;¸F³OÑ`gÑhzð  |Cð  EKó  iLó  aMö "ó ]ð"ð ‡�Ð!°'×2VÑ2V€ÓWÙ_fÐgmÓ_nñ  LSñ  Tfð  gnð  pxó  Tyó  Lzö $ó Xð$ð> ‡�Ð.¸w×?cÑ?c€ÓdÙw~ð  @Fó  xGñ  dkñ  l~ð  Fð  HNó  lOó  dPö ($ó eð($ðT ‡�Ð1Ó2ÙMTÐU[Ë_ñ  zAñ  BTð  U\ð  ^fó  Bgó  zhö +ó 3ð+÷ Sà‡�ÐFÓGñ
 ˜v“Ù&Ñ'9¸'À6Ó'JÓKöY=ó HðY=ð| ‡�Ð¨t°G×4TÑ4TÕ/U€ÓVà#Ø$(Ù%*¨4Ð={Ô%|Ø Ø"Ù˜v“Ù&Ñ'=Ò>tÐv|Ó'}Ó~ö|ó Wð|ð~ ‡�Ð&°w×7WÑ7W€ÓXá˜v“Ù&Ñ'=Ò>tÐv|Ó'}Ó~öó YððD ‡�Ð,¸W×=[Ñ=[€Ó\á˜v“Ù&Ñ'=Ò>tÐv|Ó'}Ó~öDó ]ðDðN ‡�Ð(Ó)ñ ˜v“Ù&Ñ'=Ò>tÐv|Ó'}Ó~ö?ó *ð?ðD ‡�Ð/Ó0ñ ˜v“Ù&Ñ'=Ò>tÐv|Ó'}Ó~ö7ó 1ð7ðt ‡�Ð'Ó(á˜v“Ù&Ñ'=Ò>tÐv|Ó'}Ó~öó )ðð0 ‡�Ð&°w×7YÑ7Y€ÓZñ ˜v“Ù&Ñ'=Ò>tÐvó  (Aó   BöPó [òPr8   