§
    »w†iÛ'  ã                   óâ   — d Z ddlmZ ddl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mZmZmZmZ dd
lmZ ddlmZ ddlmZ ddededefd„Zddededededef
d„Z d„ Z!d„ Z"dS )u]   GÃ©nÃ©ration PDF pour facture extraite â€“ prÃ©sentation type FACTURE DE VENTE (modÃ¨le RDC).é    )ÚBytesIO)ÚDecimal)Úcolors)ÚA4)ÚgetSampleStyleSheetÚParagraphStyle)Úmm)Úcanvas)ÚSimpleDocTemplateÚ	ParagraphÚSpacerÚTableÚ
TableStyle)Ú	renderPDF)ÚQrCodeWidget)ÚDrawingé   Úqr_rawÚsize_mmÚreturnc                 ó|  — t          |¦  «        t          z  }t          | ¦  «        }|                     ¦   «         \  }}}}||z
  }||z
  }	|dk    s|	dk    r't	          ||¦  «        }
|
                     |¦  «         |
S ||z  }||	z  }t	          |||dd|| |z  | |z  g¬¦  «        }
|
                     |¦  «         |
S )u8  
    GÃ©nÃ¨re un QR code (Drawing) via ReportLab sans dÃ©pendances externes.

    IMPORTANT :
    - QrCodeWidget n'a pas de .scale() sur certaines versions
    - donc on applique la transformation sur le Drawing (transform matrix)
    - et on translate pour remettre l'origine visible (bounds[0], bounds[1])
    r   )Ú	transform)Úfloatr	   r   Ú	getBoundsr   Úadd)r   r   ÚsizeÚwidgetÚx1Úy1Úx2Úy2ÚwÚhÚdÚsxÚsys                ú6D:\djangoapp\venvfact\factures\extratfile\pdf_utils.pyÚ_qr_flowabler(      sÛ   € õ �‰>Œ>�BÑ€DÝ˜&Ñ!Ô!€Fð ×%Ò%Ñ'Ô'�N€BˆˆB�Ø
ˆR‰€AØ
ˆR‰€Að 	ˆA‚v€v��a’�Ý�D˜$ÑÔˆØ	�Šˆf‰ŒˆØˆð 
�‰€BØ	�‰€Bõ 	��d r¨1¨a°°b°S¸2±XÀ¸sÀR¹xÐ&HÐIÑIÔI€AØ‡E‚Eˆ&�M„M€MØ€Hó    é   é
   éd   Úx_mmÚy_mmc                 ó^  — t          ¦   «         }t          j        |t          ¬¦  «        }t          \  }}|t          z  }|t          z  }	t          | |¬¦  «        }
t          j        |
|||	¦  «         |                     ¦   «          | 	                    ¦   «          | 
                    d¦  «         |S )uÏ   
    CrÃ©e un PDF d'une page A4 contenant uniquement le QR Ã  la position (x_mm, y_mm) depuis le bas-gauche.
    UtilisÃ© pour superposer le QR sur un PDF xhtml2pdf (sans fond, seul le QR est dessinÃ©).
    )Úpagesize©r   r   )r   Ú
pdf_canvasÚCanvasr   r	   r(   r   ÚdrawÚshowPageÚsaveÚseek)r   r   r-   r.   ÚbufÚcÚw_pageÚh_pageÚx_ptÚy_ptÚ
qr_drawings              r'   Úmake_qr_overlay_pdfr?   5   s“   € õ
 ‰)Œ)€CÝÔ˜#­Ð+Ñ+Ô+€AÝ�N€FˆFà•"‰9€DØ•"‰9€DÝ˜f¨gÐ6Ñ6Ô6€JÝ„N�:˜q $¨Ñ-Ô-Ð-Ø‡J‚J�L„L€LØ‡F‚F�H„H€HØ‡H‚HˆQ�K„K€KØ€Jr)   c                 óÚ   — | €dS t          | t          ¦  «        rt          | ¦  «        } | d›}|                     d¦  «        }|d                              dd¦  «        }|d         }|› d|› �S )uM   Format nombre style CDF : 10.000,00 (point = milliers, virgule = dÃ©cimales).Nõ   â€”z,.2fú.r   ú,é   )Ú
isinstancer   r   ÚsplitÚreplace)ÚvalueÚsÚpartsÚintegerÚdecimals        r'   Ú_fmt_cdfrM   H   sw   € à€}ØˆuÝ�%�Ñ!Ô!ð Ý�e‘”ˆØˆˆ€AØ�GŠG�C‰LŒL€EØ�AŒh×Ò˜s CÑ(Ô(€GØ�AŒh€GØÐ!Ð!˜Ð!Ð!Ð!r)   c                 ó   — | }|j         }t          ¦   «         }t          |t          dt          z  dt          z  dt          z  dt          z  ¬¦  «        }t          ¦   «         }t          d|d         ddd¬¦  «        }g }g }|�rd|                     |j        pd	 	                    ¦   «         pd
¦  «         t          |dd ¦  «        r|                     d|j        › �¦  «         |j        r|                     d|j        › �¦  «         |j        rj|j                             ¦   «                              d¦  «        D ]=}	|	                     ¦   «         r'|                     |	                     ¦   «         ¦  «         Œ>t          |dd ¦  «        r'|                     t!          |j        ¦  «        ¦  «         t          |dd ¦  «        r'|                     t!          |j        ¦  «        ¦  «         n|                     d
¦  «         t          ddt&          j        t'          j        d¦  «        d¬¦  «        }
t          |dd	¦  «        pd
}d                     |¦  «        }d|› d|j        pd
› d|j        pd
› d|j        pd
› d|j        pd
› �
}t7          |                     dd¦  «        |d         ¦  «        t7          d|
¦  «        gd	t7          ||d         ¦  «        gg}t;          |dt          z  dt          z  g¬ ¦  «        }|                     t?          d!d"d#d$d%d&d&t'          j        d¦  «        fd'd&d&t&          j        fd(d)d*d+t&          j         fd,d)d*d-t&          j!        fg¦  «        ¦  «         |                     |¦  «         |                     tE          dd.t          z  ¦  «        ¦  «         |                     t7          |j#        pd/ 	                    ¦   «         |¦  «        ¦  «         |j$        pt!          |j%        ¦  «        }|                     t7          d0|› �t          d1|d         d2dd.¬¦  «        ¦  «        ¦  «         |                     tE          ddt          z  ¦  «        ¦  «         d.t          z  d3t          z  d4t          z  d5t          z  d6t          z  g}g d7¢g}tM          |j'         (                    ¦   «         d¦  «        D ]z\  }}	|                     t!          |¦  «        |	j)        pd
d d3…         tU          |	j+        ¦  «        |	j,        �tU          |	j,        ¦  «        nd
tU          |	j-        ¦  «        g¦  «         Œ{t;          ||¬ ¦  «        }|                     t?          d%d)d8t'          j        d9¦  «        fd:d$d;d<d=d>d)d*d+t&          j         fd?d@g	¦  «        ¦  «         |                     |¦  «         |                     tE          dd.t          z  ¦  «        ¦  «         dA|j.        pd
› �dB|j/        pd
› �g}dCtU          |j0        ¦  «        › �dDtU          |j1        ¦  «        › �dEtU          |j1        ¦  «        › �d	dFtU          |j2        ¦  «        › �g}|j3        �*|                     dGtU          |j3        ¦  «        › �¦  «         |j4        �9|j5        r2|                     dHtU          |j4        ¦  «        › dI|j5        › �¦  «         t7          d                     |¦  «        |d         ¦  «        t7          d                     |¦  «        t          dJddK¬L¦  «        ¦  «        gg}t;          |dt          z  dt          z  g¬ ¦  «        }|                     t?          g dM¢¦  «        ¦  «         |                     |¦  «         |                     tE          ddNt          z  ¦  «        ¦  «         |j2        �tU          |j2        ¦  «        nd
}|                     t7          dO|› dP�t          dQddKd.¬R¦  «        ¦  «        ¦  «         |                     tE          ddNt          z  ¦  «        ¦  «         |                     t7          dSt          dTdKt&          j         d¬U¦  «        ¦  «        ¦  «         g }|j6        r|                     dV|j6        › �¦  «         |j7        r|                     dW|j7        › �¦  «         |j8        r|                     dX|j8        › �¦  «         |j9        r|                     dY|j9        › �¦  «         |j:        r|                     dZ|j:        › �¦  «         |r{|                     t7          d                     |¦  «        t          d[d.t&          j         ¬\¦  «        ¦  «        ¦  «         |                     tE          ddt          z  ¦  «        ¦  «         |j;        r€	 |                     ty          |j;        d]¬^¦  «        ¦  «         n’# tz          $ rH |                     t7          d_|j;        › �t          d`d.t&          j         ¬\¦  «        ¦  «        ¦  «         Y nAw xY w|                     t7          dat          d`d.t&          j         ¬\¦  «        ¦  «        ¦  «         | >                    |¦  «         | ?                    db¦  «         |S )cNé   )r0   ÚrightMarginÚ
leftMarginÚ	topMarginÚbottomMarginÚInvoiceTitleÚNormalé   rD   é   )ÚnameÚparentÚfontSizeÚ	alignmentÚ
spaceAfterÚ rA   Úpoint_de_ventezPoint de vente : zNIF : ú
Ú	telephoneÚemailÚCBr+   z#505050é   )rX   rZ   Ú	textColorÚ	backColorr[   Úclient_typezType : z<br/>Nom : z<br/>NIF : z<br/>Adresse : z<br/>Contact : z<br/>z<b>CLIENT</b>é_   éZ   )Ú	colWidths©ÚALIGN©r   r   ©r   éÿÿÿÿÚLEFT©rk   ©rD   r   ©rD   rn   ÚRIGHT)ÚVALIGNrl   ©rn   rn   ÚTOP©ÚFONTSIZErl   ru   é	   Ú
BACKGROUNDrq   Ú	TEXTCOLORÚBOXrl   ru   g      à?Ú	INNERGRIDg      Ð?é   zFACTURE DE VENTEu   Facture nÂ° ÚInvNumé   é<   é#   r*   é%   )ú#u   DÃ©signationzPrix unitaire (TTC)u	   QuantitÃ©zMontant (TTC)©rn   r   z#E8E8E8)ÚFONTNAMErl   r…   úHelvetica-Bold)rk   rl   rm   ÚCENTER)rk   )rc   r   ru   rs   )rk   rq   rr   ro   ÚGRID)Ú
TOPPADDINGrl   ru   é   )ÚBOTTOMPADDINGrl   ru   r‹   zNombre d'articles : zMode de paiement : zH.T. [B] Taxable 16,00% : zTVA [B] Taxable 16,00% : zTOTAL TVA : zTotal TTC : CDF zMontant TTC : USD zCours de change z du ÚRecapRry   )rX   r[   rZ   )rj   rp   rw   )r†   rl   rq   r‡   é   u0   ArrÃªtÃ© la prÃ©sente facture Ã  la somme de <b>z-</b> francs congolais toutes taxes comprises.ÚArrete)rX   r[   rZ   r\   u:   --- Ã‰LÃ‰MENTS DE SÃ‰CURITÃ‰ DE LA FACTURE NORMALISÃ‰E ---ÚSecTitle)rX   rZ   rd   r\   zISF : zCode DEF/DGI : z
DEF NID : zDEF Compteurs : zDEF Heure : ÚSecBody)rX   rZ   rd   é   r1   u   QR (donnÃ©es) : ÚSecBody2u   QR : â€”r   )@Úsocieter   r   r   r	   r   r   ÚappendÚnomÚupperÚgetattrr^   ÚnifÚadresseÚstriprF   Ústrr`   ra   r   ÚwhiteÚHexColorÚjoinÚ
client_nomÚ
client_nifÚclient_adresseÚclient_telephoner   rG   r   ÚsetStyler   ÚgreyÚ	lightgreyr   Úinvoice_typeÚinvoice_numberÚidÚ	enumerateÚlinesÚallÚdesignationrM   Úunit_price_ttcÚquantityÚ
amount_ttcÚnb_articlesÚpayment_modeÚht_taxable_16Útva_16Útotal_ttc_cdfÚtotal_ttc_usdÚexchange_rateÚexchange_rate_dateÚisfÚcode_def_dgiÚdef_nidÚdef_compteursÚdef_datetimer   r(   Ú	ExceptionÚbuildr7   )Únormalized_invoiceÚinvÚsocÚbufferÚdocÚstylesÚtitle_styleÚstoryÚcompany_linesÚlineÚclient_label_stylerf   Úheader_leftÚheader_right_bodyÚheader_final_dataÚt_headÚinv_noÚ
col_widthsÚdataÚiÚt_linesÚ
recap_leftÚrecap_rightÚ
recap_dataÚt_recapÚ	total_strÚ	sec_liness                              r'   Úrender_extracted_invoice_pdfrÚ   U   sõ
  € Ø
€CØ
Œ+€Cå‰YŒY€FÝ
ØÝØ�‘GØ�‘7Ø•r‘'Ø�"‘Wðñ ô €Cõ !Ñ"Ô"€FÝ ØØ�hÔØØØðñ ô €Kð €Eð €MØ
ñ $Ø×Ò˜cœg˜m¨×2Ò2Ñ4Ô4Ð=¸Ñ>Ô>Ð>Ý�3Ð(¨$Ñ/Ô/ð 	KØ× Ò Ð!I°SÔ5GÐ!IÐ!IÑJÔJÐJØŒ7ð 	5Ø× Ò Ð!3¨#¬'Ð!3Ð!3Ñ4Ô4Ð4ØŒ;ð 	7Øœ×)Ò)Ñ+Ô+×1Ò1°$Ñ7Ô7ð 7ð 7�Ø—:’:‘<”<ð 7Ø!×(Ò(¨¯ª©¬Ñ6Ô6Ð6øÝ�3˜ TÑ*Ô*ð 	5Ø× Ò ¥ S¤]Ñ!3Ô!3Ñ4Ô4Ð4Ý�3˜ Ñ&Ô&ð 	1Ø× Ò ¥ S¤Y¡¤Ñ0Ô0Ð0øà×Ò˜UÑ#Ô#Ð#å'ØØÝ”,Ý”/ )Ñ,Ô,Øðñ ô Ðõ ˜#˜}¨bÑ1Ô1Ð:°U€KØ—)’)˜MÑ*Ô*€Kð	5�+ð 	5ð 	5Ø”Ð( 5ð	5ð 	5à”Ð( 5ð	5ð 	5ð Ô(Ð1¨Eð	5ð 	5ð Ô)Ð2¨Uð		5ð 	5ð õ �k×)Ò)¨$°Ñ8Ô8¸&ÀÔ:JÑKÔKÝ�oÐ'9Ñ:Ô:ð	
ð
 ÝÐ'¨°Ô)9Ñ:Ô:ð	
ð	Ðõ Ð$°µb±¸"½r¹'Ð0BÐCÑCÔC€FØ
‡O‚O•JØ*Ø+Ø+Ø)Ø	�v˜v¥v¤°yÑ'AÔ'AÐBØ	�f˜f¥f¤lÐ3Ø	�˜ #¥v¤{Ð3Ø	�f˜h¨­fÔ.>Ð?ð	 ñ 	ô 	ñ 	ô 	ð 	ð 
‡L‚L�ÑÔÐØ	‡L‚L•˜˜1�r™6Ñ"Ô"Ñ#Ô#Ð#ð 
‡L‚L•˜CÔ,ÐBÐ0B×IÒIÑKÔKÈ[ÑYÔYÑZÔZÐZØÔÐ.¥3 s¤v¡;¤;€FØ	‡L‚L•Ø�vÐÐÝ˜H¨V°HÔ-=ÈÐVWÐdeÐfÑfÔfñô ñ ô ð ð 
‡L‚L•˜˜1�r™6Ñ"Ô"Ñ#Ô#Ð#ð •b‘&˜"�r™' 2­¡7¨Bµ©G°R½"±WÐ=€JØVÐVÐVÐW€DÝ˜SœYŸ]š]™_œ_¨aÑ0Ô0ð ð ‰ˆˆ4Ø�ŠÝ�‰FŒFØÔÐ& ¨¨¨Ô,Ý�TÔ(Ñ)Ô)Ø'+¤}Ð'@�H�T”]Ñ#Ô#Ð#ÀeÝ�T”_Ñ%Ô%ð
ñ 	ô 	ð 	ð 	õ �D JÐ/Ñ/Ô/€GØ×Ò•ZØ	�v˜w­¬¸	Ñ(BÔ(BÐCØ7Ø)Ø,Ø,Ø*Ø	�˜ 3­¬Ð4Ø+Ø.ð
!ñ 
ô 
ñ 
ô 
ð 
ð 
‡L‚L�ÑÔÐØ	‡L‚L•˜˜1�r™6Ñ"Ô"Ñ#Ô#Ð#ð 	:˜sœÐ7°%Ð9Ð9Ø9˜cÔ.Ð7°%Ð9Ð9ð€Jð
 	C¥X¨cÔ.?Ñ%@Ô%@ÐBÐBØ:¥H¨S¬ZÑ$8Ô$8Ð:Ð:Ø-•x ¤
Ñ+Ô+Ð-Ð-Ø
Ø8�8 CÔ$5Ñ6Ô6Ð8Ð8ð€Kð ÔÐ$Ø×ÒÐMµ¸Ô9JÑ0KÔ0KÐMÐMÑNÔNÐNØ
ÔÐ$¨Ô)?Ð$Ø×ÒÐg­h°sÔ7HÑ.IÔ.IÐgÐgÈsÔOeÐgÐgÑhÔhÐhõ 	�'—,’,˜zÑ*Ô*¨F°8Ô,<Ñ=Ô=Ý�'—,’,˜{Ñ+Ô+­^ÀÐUVÐabÐ-cÑ-cÔ-cÑdÔdðð €Jõ �J¨2µ©7°B½±GÐ*<Ð=Ñ=Ô=€GØ×Ò•Zð !ð !ð !ñ ô ñ ô ð ð 
‡L‚L�ÑÔÐØ	‡L‚L•˜˜1�r™6Ñ"Ô"Ñ#Ô#Ð#ð 03Ô/@Ð/L•˜Ô*Ñ+Ô+Ð+ÐRW€IØ	‡L‚L•Øs¸9ÐsÐsÐsÝ˜H°¸AÈ!ÐLÑLÔLñô ñ ô ð ð 
‡L‚L•˜˜1�r™6Ñ"Ô"Ñ#Ô#Ð#ð 
‡L‚L•ØDÝ˜J°½f¼kÐVWÐXÑXÔXñô ñ ô ð ð
 €IØ
„wð -Ø×ÒÐ+ #¤'Ð+Ð+Ñ,Ô,Ð,Ø
Ôð ?Ø×ÒÐ=¨3Ô+;Ð=Ð=Ñ>Ô>Ð>Ø
„{ð 5Ø×ÒÐ3 c¤kÐ3Ð3Ñ4Ô4Ð4Ø
Ôð AØ×ÒÐ?¨CÔ,=Ð?Ð?Ñ@Ô@Ð@Ø
Ôð <Ø×ÒÐ:¨Ô(8Ð:Ð:Ñ;Ô;Ð;àð (Ø�Š•Y˜wŸ|š|¨IÑ6Ô6½ÈIÐ`aÕmsÔmxÐ8yÑ8yÔ8yÑzÔzÑ{Ô{Ð{Ø�Š•V˜A˜q¥2™vÑ&Ô&Ñ'Ô'Ð'ð „zð 	pð	Ø�LŠL� c¤j¸"Ð=Ñ=Ô=Ñ>Ô>Ð>Ð>øÝð 	ð 	ð 	Ø�LŠL�Ø/ 3¤:Ð/Ð/Ý J¸ÅfÄkÐRÑRÔRñô ñ ô ð ð ð ð	øøøð 	�Š•Y˜z­>¸zÐTUÕagÔalÐ+mÑ+mÔ+mÑnÔnÑoÔoÐoà‡I‚IˆeÑÔÐØ
‡K‚K��N„N€NØ€Ms   æ)g çAhèhN)r   )r*   r+   r,   )#Ú__doc__Úior   rL   r   Úreportlab.libr   Úreportlab.lib.pagesizesr   Úreportlab.lib.stylesr   r   Úreportlab.lib.unitsr	   Úreportlab.pdfgenr
   r2   Úreportlab.platypusr   r   r   r   r   Úreportlab.graphicsr   Úreportlab.graphics.barcode.qrr   Úreportlab.graphics.shapesr   rœ   r   r(   r?   rM   rÚ   © r)   r'   ú<module>rç      s‰  ðØ cÐ cØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ð &Ð &Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ "Ð "Ð "Ð "Ð "Ð "Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ (Ð (Ð (Ð (Ð (Ð (à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø -Ð -Ð -Ð -Ð -Ð -ð!ð !˜ð ! uð !°gð !ð !ð !ð !ðHð  ð ¨eð Àð ÐRWð Ðbið ð ð ð ð&
"ð 
"ð 
"ðBð Bð Bð Bð Br)   