Ë
    ‰þjÐ,  ã                  ó@  — d dl mZ d dlZd dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d d	lmZ d
ZdZdZdZdZej3                  dd«      ZdddedœZddddddddœZdddedœZddded d!d"œZdd#dedœZd$d#dedœZ dd%dedœZ!d$d%dedœZ"dd&dedœZ#d$d&dedœZ$d'd(d)ded*d+œZ%d'd,d)ded*d-d.œZ& G d/„ d0e«      Z'dFd1„Z(dGd2„Z)dHd3„Z*dIdJd4„Z+dIdKd5„Z,dLd6„Z-dMd7„Z.dNd8„Z/dOd9„Z0dPd:„Z1dQd;„Z2dRd<„Z3dSd=„Z4d>d?œdTd@„Z5dUdA„Z6eddBdCœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dVdD„Z7dWdE„Z8y)Xé    )ÚannotationsN)ÚdateÚdatetimeÚtimezone)ÚBytesIO)ÚPath)ÚRequestÚurlopen)ÚFPDF)ÚNimitSevakReceiptRequest)Úresolve_gujarati_font_pathsÚGujaratiRegularÚGujaratiBold)é#   é   é    éÒ   i)  Ú
0123456789u   à«¦à«§à«¨à«©à«ªà««à«¬à«­à«®à«¯g     `f@é,   é   )ÚxÚyÚ	font_sizeÚ	font_nameg      d@g     €J@g      E@g      I@gÍÌÌÌÌÌü?g®Gáz®ï?)r   r   ÚwÚhÚinset_xÚinset_yÚscaleé   éA   é   éJ   é–   gš™™™™™@)r   r   r   r   ÚwidthÚline_heighté\   g     €V@ée   én   g       @g     @`@g     €f@g333333@)r   r   r%   r   r   r&   g     `b@gš™™™™™@)r   r   r%   r   r   r&   Úgapc                  ó   — e Zd Zy)Ú
ReceiptPDFN)Ú__name__Ú
__module__Ú__qualname__© ó    ú7/var/www/html/sdm-receipt/app/services/pdf_generator.pyr,   r,   }   s   „ Ør1   r,   c                 ó®   — t        ddd¬«      } | j                  d¬«       | j                  ddd«       | j                  «        | j	                  d«       | S )	NÚPÚmmÚA4)ÚorientationÚunitÚformatF)Úautor   T)r,   Úset_auto_page_breakÚset_marginsÚadd_pageÚset_text_shaping)Úpdfs    r2   Ú
_build_pdfr@   �   sM   € Ü
 ¨4¸Ô
=€CØ×Ñ ÐÔ'Ø‡O�O�B˜˜BÔØ‡L�L„NØ×Ñ˜ÔØ€Jr1   c                ó¢   — t        «       \  }}| j                  t        dt        |«      ¬«       | j                  t        dt        |«      ¬«       y )NÚ )ÚstyleÚfname)r   Úadd_fontÚREGULAR_FONT_NAMEÚstrÚBOLD_FONT_NAME)r?   Úregular_pathÚ	bold_paths      r2   Ú_register_fontsrK   Š   s=   € Ü9Ó;Ñ€L�)Ø‡L�LÔ"¨"´C¸Ó4E€LÔFØ‡L�L” r´°Y³€LÕ@r1   c                 ój   — dt        j                  t        j                  «      j                  dz  d›�S )NzNS-i † Ú05d)r   Únowr   ÚutcÚmicrosecondr0   r1   r2   Úgenerate_receipt_numberrQ   �   s*   € Ø”—‘œhŸl™lÓ+×7Ñ7¸&Ñ@ÀÐEÐFÐFr1   c                óH   — t        | xs d«      j                  «       }|xs |S )NrB   )rG   Ústrip)ÚvalueÚfallbackÚtexts      r2   Ú_normalize_textrW   ”   s$   € ÜˆuŠ{˜Ó×!Ñ!Ó#€DØÒ�8Ðr1   c                ó–   — | D �cg c]  }t        |d«      ‘Œ }}|D �cg c]  }|sŒ|‘Œ	 }}|rdj                  |«      S |S c c}w c c}w )NrB   ú, )rW   Újoin)ÚvaluesrU   rT   ÚcleanedÚitemss        r2   Ú_format_listr^   ™   sO   € Ø7=Ö>¨eŒ˜u bÕ)Ð>€GÐ>Ø 'Ö1�uª5ŠUÐ1€EÐ1Ù$ˆ4�9‰9�UÓÐ2¨(Ð2ùò ?ùÚ1s   …AžA¦Ac                óP   — | €y| j                  d«      j                  t        «      S )NÚ-z%d/%m/%Y)ÚstrftimeÚ	translateÚGUJARATI_DIGIT_TRANSLATION)rT   s    r2   Ú_format_gujarati_daterd   Ÿ   s%   € Ø€}ØØ�>‰>˜*Ó%×/Ñ/Ô0JÓKÐKr1   c                ó–   — t        | j                  «      }| j                  r|j                  | j                  «       dt	        |«      › �S )Nu   àª¸à«‡àªµàª¾ àª¯àª¾àª¦à«€ :- )ÚlistÚavailable_sevasÚother_seva_detailsÚappendr^   )ÚpayloadÚ
seva_itemss     r2   Ú_build_seva_list_textrl   ¥   sB   € Ü�g×-Ñ-Ó.€JØ×!Ò!Ø×Ñ˜'×4Ñ4Ô5Ø*¬<¸
Ó+CÐ*DÐEÐEr1   c           	     óp  — t        | j                  «      }t        | j                  «      }t        | j                  «      }t        | j                  «      }t        | j                  «      }t        | j                  «      }d|› d|› d�d|› d�d|› d|› d|› d�g}| j                  r|j                  d	«       |S )
Nu@   à«§. àª¹à«‡ àª¸à«�àªµàª¾àª®à«€àªœà«€, àª¹à«�àª‚ àª¤àª¾àª°à«€àª– u    àª¥à«€ u«    àª¸à«�àª§à«€ àª®.à«¨à«®, à«ªà«§ àªªà«�àª°àª®àª¾àª£à«‡ àª¨àª¿àª®àª¿àª¤à«�àª¤ àª¬àª¨à«€ àª†àªªàª¨à«‡ àª°àª¾àªœà«€ àª•àª°àªµàª¾ àª¸à«‡àªµàª¾àª®àª¾àª‚ àª†àªµà«€ àª¶àª•à«€àª¶.u   à«¨. àª®àª¨à«‡ u(    àªšàª²àª¾àªµàª¤àª¾ àª†àªµàª¡à«‡ àª›à«‡.u@   à«©. àª¹à«‡ àª¸à«�àªµàª¾àª®à«€àªœà«€, àª®àª¾àª°à«€ àªªàª¾àª¸à«‡ u*    àª›à«‡. àªœà«‡ àª¹à«�àª‚ àª¤àª¾àª°à«€àª– uE    àª¸à«‡àªµàª¾àª®àª¾àª‚ àª²àª¾àªµà«€ àª¶àª•à«�àª‚ àª¤à«‡àª® àª›à«�àª‚.uP  à«ª. àª¹à«‡ àª¸à«�àªµàª¾àª®à«€àªœà«€!, àª¦àª¿àªµàª¸à«‡ àª¹à«�àª‚ àª®àª¾àª°àª¾ àªµà«�àª¯àªµàª¹àª¾àª°/ àªµà«�àª¯àªµàª¸àª¾àª¯àª®àª¾àª‚ àªµà«�àª¯àª¸à«�àª¤ àª¹à«‹àª‰ àª›à«�àª‚ , àªªàª°àª‚àª¤à«� àª®àª¾àª°à«‡ àª¨àª¿àª®àª¿àª¤ àª¬àª¨àªµà«�àª‚ àª›à«‡ , àª¹à«�àª‚ àª°àª¾àª¤à«�àª°à«‡ àª¸à«‡àªµàª¾ àª®àª¾àª‚ àªšà«‹àª•à«�àª•àª¸ àª†àªµà«€ àª¶àª•à«€àª¶)
rd   Úseva_available_fromÚseva_available_toÚvehicle_available_fromÚvehicle_available_tor^   Údrivable_vehiclesÚavailable_vehiclesÚnight_shift_availableri   )rj   Ú	seva_fromÚseva_toÚvehicle_fromÚ
vehicle_torr   rs   Úpointss           r2   Ú_build_prayer_pointsrz   ¬   sþ   € Ü% g×&AÑ&AÓB€IÜ# G×$=Ñ$=Ó>€GÜ(¨×)GÑ)GÓH€LÜ& w×'CÑ'CÓD€JÜ$ W×%>Ñ%>Ó?ÐÜ% g×&@Ñ&@ÓAÐð KÈ9È+ÐU]Ð^eÐ]fð  gRð  	SØ
Ð+Ð,Ð,TÐUØ
JÐK]ÐJ^ð  _Ið  JVð  IWð  W_ð  `jð  _kð  kpð  	qð€Fð ×$Ò$Ø�‰ð _ô	
ð €Mr1   c                óš   — | sy d| v r| j                  dd«      d   n| }	 t        t        j                  |«      «      S # t        $ r Y y w xY w)NÚ,é   )Úsplitr   Úbase64Ú	b64decodeÚ	Exception)Údatarj   s     r2   Ú_decode_imagerƒ   Â   sR   € ÙØØ'*¨d¡{ˆd�j‰j˜˜aÓ  Ò#¸€GðÜ”v×'Ñ'¨Ó0Ó1Ð1øÜò Ùðús    > ¾	A
Á	A
c                ó¾   — | sy 	 t        | ddi¬«      }t        |d¬«      5 }t        |j                  «       «      cd d d «       S # 1 sw Y   y xY w# t        $ r Y y w xY w)Nz
User-Agentzsdm-receipt-service/1.0)Úheadersé   )Útimeout)r	   r
   r   Úreadr�   )ÚurlÚrequestÚresponses      r2   Ú_load_remote_imagerŒ   Ì   s_   € ÙØðÜ˜#¨Ð6OÐ'PÔQˆÜ�W bÔ)ð 	,¨XÜ˜8Ÿ=™=›?Ó+÷	,÷ 	,ò 	,ûäò Ùðús-   …A ¡Aº	A ÁAÁ	A ÁA Á	AÁAc                ó²   — | sy 	 t        | «      j                  «       }|j                  «       r|j                  «       rt	        |«      S y # t
        $ r Y y w xY w©N)r   Ú
expanduserÚexistsÚis_filerG   r�   )Ú
path_valueÚ	candidates     r2   Ú_load_local_imager”   Ø   sZ   € ÙØðÜ˜Ó$×/Ñ/Ó1ˆ	Ø×ÑÔ )×"3Ñ"3Ô"5Ü�y“>Ð!ð øô ò Ùðús   …AA
 Á
	AÁAc                 ó¤   — t        t        «      j                  «       j                  d   } | dz  dz  dz  }|j	                  «       rt        |«      S y )Né   ÚassetsÚimageszform.jpg)r   Ú__file__ÚresolveÚparentsr�   rG   )Úproject_rootÚbackground_paths     r2   Ú_load_form_background_imagerž   æ   sM   € Üœ“>×)Ñ)Ó+×3Ñ3°AÑ6€LØ" XÑ-°Ñ8¸:ÑE€OØ×ÑÔÜ�?Ó#Ð#Ør1   c                ó"   —  | j                   |Ž  y rŽ   )Úset_text_color)r?   Úrgbs     r2   Ú_set_text_colorr¢   î   s   € Ø€C×Ñ˜Òr1   g¸…ëQ¸î?)r   c               ór   — ||z  }||z  }|||z
  dz  z   }	|||z
  dz  z   }
| j                  ||	|
||d¬«       y )Nr–   T)r   r   r   r   Úkeep_aspect_ratio)Úimage)r?   r¥   r   r   r   r   r   Útarget_wÚtarget_hÚoffset_xÚoffset_ys              r2   Ú_draw_centered_imagerª   ò   sS   € Ø�5‰y€HØ�5‰y€HØ�Q˜‘\ QÑ&Ñ'€HØ�Q˜‘\ QÑ&Ñ'€HØ‡I�Iˆe�x 8¨x¸8ÐW[€IÕ\r1   c                óþ   — t        |d«      }|rot        | t        «       | j                  t	        t
        d   «      t
        d   ¬«       | j                  t
        d   t
        d   «       | j                  dd|¬	«       y y )
NrB   r   r   ©Úsizer   r   r   gÍÌÌÌÌÌ@©rV   )rW   r¢   Ú	BODY_TEXTÚset_fontrG   ÚFORM_NUMBER_BOXÚset_xyÚcell)r?   Úform_numberÚnormalized_numbers      r2   Ú_draw_form_number_boxr¶   ú   sk   € Ü'¨°RÓ8ÐÙÜ˜œYÔ'Ø�‰”Sœ¨Ñ5Ó6¼_È[Ñ=YˆÔZØ�
‰
”? 3Ñ'¬¸Ñ)=Ô>Ø�‰��CÐ/ˆÕ0ð	 r1   g      @©r   r%   r&   c               ó
  — t        |d«      }|s|S t        | t        «       | j                  ||¬«       | j	                  ||«       |€| j                  d||¬«       ||z   S | j                  |||¬«       | j                  «       S )NrB   r¬   r   r®   )rW   r¢   r¯   r°   r²   r³   Ú
multi_cellÚget_y)	r?   rV   r   r   r   r   r%   r&   rT   s	            r2   Ú
_draw_textr»     s   € ô ˜D "Ó%€EÙØˆä�CœÔ#Ø‡L�L� €LÔ+Ø‡J�Jˆq�!ÔØ€}Ø�‰��K eˆÔ,Ø�;‰Ðà�‰�u˜k°ˆÔ6Ø�y‰y‹{Ðr1   c                ó	  — t        «       }t        |«       |j                  d|› �«       t        «       }t	        | j
                  «      xs, t        | j                  «      xs t        | j                  «      }t        | j                  xs | j                  xs |d«      }|r|j                  |ddt        t        ¬«       |rct        ||t         d   t         d   z   t         d   t         d   z   t         d	   t         d   d
z  z
  t         d   t         d   d
z  z
  t         d   ¬«       t#        ||«       t%        |dt        | j&                  d«      › �t(        d   t(        d   t(        d   t+        t(        d   «      ¬«       t%        |dt        | j,                  d«      › �t.        d   t.        d   t.        d   t+        t.        d   «      t.        d   t.        d   ¬«       t%        |dt        | j0                  d«      › �t2        d   t2        d   t2        d   t+        t2        d   «      ¬«       t%        |dt        | j4                  d«      › �t6        d   t6        d   t6        d   t+        t6        d   «      ¬«       t%        |dt        | j8                  d«      › �t:        d   t:        d   t:        d   t+        t:        d   «      ¬«       t%        |dt        | j<                  d«      › dt        | j>                  d«      › �t@        d   t@        d   t@        d   t+        t@        d   «      ¬«       t%        |dt        | jB                  d«      › �tD        d   tD        d   tD        d   t+        tD        d   «      ¬«       t%        |dt        | jF                  d«      › �tH        d   tH        d   tH        d   t+        tH        d   «      ¬«       t%        |tK        | «      tL        d   tL        d   tL        d   t+        tL        d   «      tL        d   tL        d   ¬«       tN        d   }tQ        | «      D ]M  }t%        ||tN        d   |tN        d   t+        tN        d   «      tN        d   tN        d   ¬«      }|tN        d   z  }ŒO tS        |jU                  «       «      S )NzNimit Sevak Gujarati Receipt - rB   r   )r   r   r   r   r   r   r   r   r   r–   r   r   )r   r   r   r   r   u   àª¨àª¾àª® :- àª¶à«�àª°à«€ r   r   )r   u   àª°àª¹à«‡àª àª¾àª£ :- r%   r&   r·   u'   àª†àª§àª¾àª°àª•àª¾àª°à«�àª¡ àª¨àª‚. :- u   àª®à«‹ àª¨àª‚. :- u   àªµà«�àª¯àªµàª¸àª¾àª¯ :- u   àª‰àª‚àª®àª° :- rY   u   àªªà«�àª°àª¦à«‡àª¶ :- u6   àª•àª¾àª°à«�àª¯àª•àª°à«�àª¤àª¾ àª¨à«�àª‚ àª¨àª¾àª® :- r*   )+r@   rK   Ú	set_titlerž   rƒ   Úphoto_image_base64r”   Úprofile_photo_urlrŒ   rW   Úform_noÚreceipt_numberr¥   ÚPAGE_WIDTH_MMÚPAGE_HEIGHT_MMrª   ÚPHOTO_FRAMEr¶   r»   Úapplicant_nameÚ
FIELD_NAMErG   ÚaddressÚFIELD_ADDRESSÚaadhar_card_noÚFIELD_AADHARÚ	mobile_noÚFIELD_MOBILEÚ
occupationÚFIELD_OCCUPATIONÚageÚgenderÚ	FIELD_AGEÚpradeshÚFIELD_PRADESHÚreference_person_nameÚFIELD_REFERENCErl   ÚSEVA_SECTIONÚPRAYER_POINTS_SECTIONrz   ÚbytesÚoutput)rj   rÁ   r?   Úbackground_imageÚphoto_imager´   Ú	current_yÚpoints           r2   Úgenerate_nimit_sevak_pdfrÞ     sŸ  € Ü
‹,€CÜ�CÔØ‡M�MÐ3°NÐ3CÐDÔEä2Ó4Ðä�g×0Ñ0Ó1ò 	9Ü˜W×6Ñ6Ó7ò	9ä˜g×7Ñ7Ó8ð ô
 " '§/¡/Ò"]°W×5KÑ5KÒ"]È~Ð_aÓb€KáØ�	‰	Ð" a¨1´Äˆ	ÔPáÜØØÜ˜#Ñ¤¨YÑ!7Ñ7Ü˜#Ñ¤¨YÑ!7Ñ7Ü˜#Ñ¤+¨iÑ"8¸1Ñ"<Ñ=Ü˜#Ñ¤+¨iÑ"8¸1Ñ"<Ñ=Ü˜gÑ&õ	
ô ˜#˜{Ô+äˆsÐ0´À×AWÑAWÐY[Ó1\Ð0]Ð^Ô`jÐknÑ`oÔq{Ð|ñ  rAô  CMð  NYñ  CZô  fiô  jtð  u@ñ  jAó  fBõ  CÜØØ
 ¤°·±À"Ó!EÐ FÐGÜ�cÑÜ�cÑÜ�kÑ"Ü”m KÑ0Ó1Ü˜GÑ$Ü! -Ñ0õ	ô ˆsÐ=¼oÈg×NdÑNdÐfhÓ>iÐ=jÐkÔmyÐz}Ñm~ô  AMð  NQñ  ARô  T`ð  alñ  Tmô  y|ô  }Ið  JUñ  }Vó  yWõ  XÜˆsÐ(¬¸×9JÑ9JÈBÓ)OÐ(PÐQÔS_Ð`cÑSdÔfrÐsvÑfwô  zFð  GRñ  zSô  _bô  coð  p{ñ  c|ó  _}õ  ~ÜˆsÐ/´À×@RÑ@RÐTVÓ0WÐ/XÐYÔ[kÐloÑ[pô  sCð  DGñ  sHô  JZð  [fñ  Jgô  svô  wGð  HSñ  wTó  sUõ  VÜˆsÐ&¤°w·{±{ÀBÓ'GÐ&HÈÌ?Ð[b×[iÑ[iÐkmÓKnÐJoÐpÔr{Ð|ñ  sAô  CLð  MPñ  CQô  S\ð  ]hñ  Siô  uxô  yBð  CNñ  yOó  uPõ  QÜˆsÐ,¬_¸W¿_¹_ÈbÓ-QÐ,RÐSÔUbÐcfÑUgÔivÐwzÑi{ô  ~Kð  LWñ  ~Xô  dgô  huð  vAñ  hBó  dCõ  DÜˆsÐLÌ_Ð]d×]zÑ]zÐ|~ÓMð  MAð  Bô  DSð  TWñ  DXô  Zið  jmñ  Znô  pð  @Kñ  pLô  X[ô  \kð  lwñ  \xó  Xyõ  zäØÜ˜gÓ&Ü�SÑÜ�SÑÜ�[Ñ!Ü”l ;Ñ/Ó0Ü˜7Ñ#Ü  Ñ/õ	ô & cÑ*€Iä% gÓ.ò 2ˆÜØØÜ! #Ñ&ØÜ! +Ñ.ÜÔ/°Ñ<Ó=Ü'¨Ñ0Ü-¨mÑ<ô	
ˆ	ð 	Ô*¨5Ñ1Ñ1‰	ð2ô �—‘“ÓÐr1   )Úreturnr,   )r?   r,   rß   ÚNone)rß   rG   )r`   )rT   ú
str | NonerU   rG   rß   rG   )r[   ú	list[str]rU   rG   rß   rG   )rT   zdate | Nonerß   rG   )rj   r   rß   rG   )rj   r   rß   râ   )r‚   rá   )r‰   rá   )r’   rá   )rß   rá   )r?   r,   r¡   ztuple[int, int, int]rß   rà   )r?   r,   r   Úfloatr   rã   r   rã   r   rã   r   rã   rß   rà   )r?   r,   r´   rG   rß   rà   )r?   r,   rV   rG   r   rã   r   rã   r   rã   r   rG   r%   zfloat | Noner&   rã   rß   rã   )rj   r   rÁ   rG   rß   rØ   )9Ú
__future__r   r   r   r   r   Úior   Úpathlibr   Úurllib.requestr	   r
   Úfpdfr   Ú
app.modelsr   Úapp.services.font_resolverr   rF   rH   r¯   rÂ   rÃ   rG   Ú	maketransrc   r±   rÄ   rÆ   rÈ   rÊ   rÌ   rÎ   rÑ   rÓ   rÕ   rÖ   r×   r,   r@   rK   rQ   rW   r^   rd   rl   rz   rƒ   rŒ   r”   rž   r¢   rª   r¶   r»   rÞ   r0   r1   r2   ú<module>rì      s:  ðÝ "ã ß -Ñ -Ý Ý ß +å å /Ý Bà%Ð Ø€à€	Ø€Ø€Ø Ÿ]™]¨<Ð9YÓZÐ ð 
Ø	ØØñ	€ð 
Ø	Ø	Ø	ØØØñ€ð 
Ø	ØØ"ñ	€
ð 
Ø	ØØ"ØØñ€ð 
Ø	ØØ"ñ	€ð 
Ø	ØØ"ñ	€ð 
Ø	ØØ"ñ	Ð ð 
Ø	ØØ"ñ	€	ð 
Ø	ØØ"ñ	€ð 
Ø	ØØ"ñ	€ð 
Ø	ØØØ"Øñ€ð 
Ø	ØØØ"ØØñÐ ô	�ô 	óóAóGôô
3óLóFóó,ó	óóóð lpõ ]ó1ð  'ØØñØ	ðà
ðð ðð ð	ð
 ðð ðð ðð ðð óô4Ir1   