§
    ÐÚ’j¦  ã                  óò   — d dl mZ d dlZ	 d dlZd dlZd dlZd dlZd dlmZ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mZmZ  ej        d¦  «        Zdd„Z G d„ d¦  «        ZdS )é    )ÚannotationsN)ÚdateÚdatetime)ÚROUND_HALF_UPÚDecimal)ÚAny)ÚWorkbook)Ú	AlignmentÚBorderÚFontÚPatternFillÚSide)Úget_column_letteré   )ÚDSCONS_DEFAULT_COMPANY_NAMEÚDSCONS_DEFAULT_TAX_CODEÚ
to_decimalzdscons.invoice.misa_exporterÚamountúDecimal | float | strÚreturnÚstrc                óÞ  ‡— 	 t          t          t          | ¦  «        ¦  «                             t          d¦  «        t          ¬¦  «        ¦  «        }n# t
          $ r Y dS w xY w|dk    rdS |dk     }t          |¦  «        }g d¢Šg d¢}ddˆfd„}g }|}|dk    r#|                     |dz  ¦  «         |dz  }|dk    °#g }t          t          |¦  «        dz
  dd¦  «        D ]k}||         }	|	dk    r[ ||	|t          |¦  «        dz
  k    ¬¦  «        }
||         }|r|                     |
› d|› �¦  «         ŒV|                     |
¦  «         Œld 
                    |¦  «                             ¦   «         }d 
                    |                     ¦   «         ¦  «        }|d                              ¦   «         |dd…         z   dz   }|r(d|d                              ¦   «         z   |dd…         z   }|S )uf   Chuyá»ƒn Ä‘á»•i sá»‘ tiá»�n thÃ nh chá»¯ tiáº¿ng Viá»‡t chuáº©n xÃ¡c cho hÃ³a Ä‘Æ¡n GTGT / Káº¿ toÃ¡n.r   ©Úroundingu   KhÃ´ng Ä‘á»“ng cháºµn.r   )
Ú u   má»™tÚhaiÚbau   bá»‘nu   nÄƒmu   sÃ¡uu   báº£yu   tÃ¡mu   chÃ­n)r   u   nghÃ¬nu   triá»‡uu   tá»·u   nghÃ¬n tá»·u   triá»‡u tá»·FÚnÚintÚis_highest_groupÚboolr   r   c                óð  •— | dz  }| dz  }|dz  }|dz  }g }|dk    s|s|                      ‰|         › d�¦  «         |dk    rx|                      ‰|         › d�¦  «         |dk    r|                      d¦  «         nå|dk    r|                      d	¦  «         nÉ|dk    r|                      ‰|         ¦  «         n§|dk    rS|                      d
¦  «         |dk    r|                      d	¦  «         np|dk    r|                      ‰|         ¦  «         nN|dk    rH|dk    rB|dk    s|s|                      d‰|         › �¦  «         n|                      ‰|         ¦  «         d                     |¦  «        S )Néd   é
   r   u    trÄƒmr   u    mÆ°Æ¡iu   má»‘té   u   lÄƒmu   mÆ°á»�izlinh ú )ÚappendÚjoin)r   r    ÚhundredÚ	remainderÚtenÚoneÚresÚunitss          €úWC:\Projects\DSCons\app\modules\invoices\application\invoice_processing\misa_exporter.pyÚread_three_digitsz5vietnamese_number_to_words.<locals>.read_three_digits)   s�  ø€ Ø�s‘(ˆØ˜‘Gˆ	Ø˜2‰oˆØ˜"‰nˆàˆà�QŠ;ˆ;Ð.ˆ;Ø�JŠJ˜% œ.Ð0Ð0Ð0Ñ1Ô1Ð1à�Š7ˆ7Ø�JŠJ˜% œ*Ð-Ð-Ð-Ñ.Ô.Ð.Ø�aŠxˆxØ—
’
˜7Ñ#Ô#Ð#Ð#Ø˜’�Ø—
’
˜6Ñ"Ô"Ð"Ð"Ø�q’�Ø—
’
˜5 œ:Ñ&Ô&Ð&øØ�AŠXˆXØ�JŠJ�yÑ!Ô!Ð!Ø�aŠxˆxØ—
’
˜6Ñ"Ô"Ð"Ð"Ø�q’�Ø—
’
˜5 œ:Ñ&Ô&Ð&øØ�AŠXˆX˜# š'˜'Ø˜Š{ˆ{Ð"2ˆ{Ø—
’
Ð/ 5¨¤:Ð/Ð/Ñ0Ô0Ð0Ð0à—
’
˜5 œ:Ñ&Ô&Ð&à�xŠx˜‰}Œ}Ðó    iè  éÿÿÿÿ)r    r&   Nu    Ä‘á»“ng cháºµn.u   Ã‚m )F)r   r   r    r!   r   r   )r   r   r   Úquantizer   Ú	ExceptionÚabsr'   ÚrangeÚlenr(   ÚstripÚsplitÚupperÚlower)r   ÚvalÚis_negativeÚscalesr0   ÚgroupsÚtempÚwordsÚiÚg_valÚg_strÚscaleÚresult_textr.   s                @r/   Úvietnamese_number_to_wordsrG      s@  ø€ ð(Ý•'�#˜f™+œ+Ñ&Ô&×/Ò/µ¸±
´
Å]Ð/ÑSÔSÑTÔTˆˆøÝð (ð (ð (Ø'Ð'Ð'ð(øøøð ˆa‚x€xØ'Ð'à˜’'€KÝ
ˆc‰(Œ(€CàYÐYÐY€EØMÐMÐM€Fðð ð ð ð ð ð ðB €FØ€DØ
�Š(ˆ(Ø�Š�d˜T‘kÑ"Ô"Ð"Ø�‰ˆð �Š(ˆ(ð €EÝ•3�v‘;”; ‘? B¨Ñ+Ô+ð $ð $ˆØ�q”	ˆØ�1Š9ˆ9Ø%Ð% e¸qÅCÈÁKÄKÐRSÁOÒ?SÐUÑUÔUˆEØ˜1”IˆEØð $Ø—’ Ð/Ð/¨Ð/Ð/Ñ0Ô0Ð0Ð0à—’˜UÑ#Ô#Ð#øà—(’(˜5‘/”/×'Ò'Ñ)Ô)€KØ—(’(˜;×,Ò,Ñ.Ô.Ñ/Ô/€Kà˜a”.×&Ò&Ñ(Ô(¨;°q°r°r¬?Ñ:Ð=OÑO€KØð HØ˜{¨1œ~×3Ò3Ñ5Ô5Ñ5¸ÀAÀBÀB¼ÑGˆàÐs   ƒAA Á
A"Á!A"c                  ón   — e Zd ZdZd-d„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d.d/d"„Z	 d0d1d$„Zd2d%„Zd3d&„Z	 	 	 d4d5d,„Z	d	S )6ÚInvoiceMisaExportMixinub   Mixin cung cáº¥p kháº£ nÄƒng xuáº¥t XML, HTML báº£n thá»ƒ hiá»‡n vÃ  Excel chuáº©n MISA meInvoice.Úinvoiceúdict[str, Any]Úitemsúlist[dict[str, Any]]r   r   c                óv  — t          |                     dd¦  «        ¦  «                             d¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     d¦  «        }|rt          |¦  «        nt          t          j        ¦   «         ¦  «        }|                     d	¦  «        pt
          }|                     d
¦  «        pt          }	|                     d¦  «        pd}
|                     d¦  «        pd}|                     d¦  «        pd}|                     d¦  «        pd}t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }|                     d¦  «        pt          |¦  «        }g }t          |d¦  «        D �]�\  }}|                     d¦  «        pd 
                    dd¦  «         
                    dd¦  «         
                    dd¦  «        }|                     d ¦  «        pd!|d"›�}|                     d#¦  «        pd$}t          |                     d%d&¦  «        ¦  «        }t          |                     d'd¦  «        ¦  «        }t          |                     d(d¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     d)d¦  «        ¦  «        }|t          d¦  «        k    r||z   }|                     d*|› d+|› d,|› d-|› d.|d/›d0|d/›d1|d/›d2|d3›d4|d5›d6|d/›d7|d/›d8�¦  «         �Œ’d9                     |¦  «        }d                     g d:‘|› ‘d;‘|› ‘d<‘|› ‘d=‘|› ‘d>‘|	› ‘d?‘|› ‘d@‘|
› ‘dA‘|› ‘dB‘|› ‘dC‘|› ‘dD‘|d/›‘dE‘|d/›‘dF‘|d/›‘dG‘|› ‘dH‘t          j        ¦   «                              dI¦  «        › ‘dJ‘|› ‘dK‘|› ‘dL‘¦  «        }|S )MuX   Sinh chuá»—i XML chuáº©n Ä‘á»‹nh dáº¡ng MISA meInvoice & Nghá»‹ Ä‘á»‹nh 123/2020/NÄ�-CP.Úinvoice_numberÚ00000001é   Úinvoice_seriesÚ1C26TDSÚtemplate_codeÚ1Ú
issue_dateÚseller_nameÚseller_tax_codeÚseller_addressõJ   ThÃ´n TÃº Ä�Ã´i 3, xÃ£ Kiáº¿n Minh, huyá»‡n Kiáº¿n Thá»¥y, TP Háº£i PhÃ²ngÚ
buyer_nameu   KhÃ¡ch hÃ ng mua láº»Úbuyer_tax_coder   Úbuyer_addressÚsubtotal_amount_vndr   Úvat_rate_percentÚvat_amount_vndÚtotal_amount_vndÚamount_in_wordsr   Ú	item_nameú&z&amp;ú<z&lt;ú>z&gt;Ú	item_codezSP-Ú03dÚunitõ   LÃ´Úquantityç      ð?Úunit_price_vndÚamount_before_vat_vndÚtotal_item_amount_vndz    <Item>
      <LineNumber>z</LineNumber>
      <ItemCode>z</ItemCode>
      <ItemName>z</ItemName>
      <UnitName>z</UnitName>
      <Quantity>z.4fz</Quantity>
      <UnitPrice>z%</UnitPrice>
      <AmountWithoutVAT>z'</AmountWithoutVAT>
      <VATRateName>z.0fz%</VATRateName>
      <VATRate>z.2fz </VATRate>
      <ItemVATAmount>z(</ItemVATAmount>
      <ItemTotalAmount>z</ItemTotalAmount>
    </Item>ú
z§<?xml version="1.0" encoding="utf-8"?>
<Invoice xmlns="http://meinvoice.vn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <InvoiceHeader>
    <TemplateCode>z#</TemplateCode>
    <InvoiceSeries>z </InvoiceSeries>
    <InvoiceNo>z</InvoiceNo>
    <InvoiceDate>z˜</InvoiceDate>
    <CurrencyCode>VND</CurrencyCode>
    <ExchangeRate>1.0000</ExchangeRate>
    <PaymentMethod>TM/CK</PaymentMethod>
    <SellerTaxCode>z&</SellerTaxCode>
    <SellerLegalName>z&</SellerLegalName>
    <SellerAddress>zŽ</SellerAddress>
    <SellerPhone>0904.388.999</SellerPhone>
    <SellerEmail>contact@dinhsonconstruction.com</SellerEmail>
    <BuyerTaxCode>z$</BuyerTaxCode>
    <BuyerLegalName>z$</BuyerLegalName>
    <BuyerAddress>z+</BuyerAddress>
    <TotalAmountWithoutVAT>z(</TotalAmountWithoutVAT>
    <VATAmount>z%</VATAmount>
    <TotalAmountWithVAT>z.</TotalAmountWithVAT>
    <TotalAmountInWords>z$</TotalAmountInWords>
    <SignDate>z%Y-%m-%dT%H:%M:%Sz</SignDate>
    <SignerName>z„</SignerName>
    <SoftwareProvider>MISA meInvoice - Integrated DSCons ERP</SoftwareProvider>
  </InvoiceHeader>
  <InvoiceDetails>
z
  </InvoiceDetails>
</Invoice>)r   ÚgetÚzfillr   Útodayr   r   r   rG   Ú	enumerateÚreplacer   r'   r(   r   ÚnowÚstrftime) ÚselfrJ   rL   Úinv_noÚseriesÚtemplateÚissue_date_valÚissue_date_strrW   Ú
seller_taxÚseller_addrr[   Ú	buyer_taxÚ
buyer_addrÚsubtotalÚvat_rateÚ
vat_amountÚtotalrb   Úitems_xml_linesÚidxÚitmÚi_nameÚi_codeÚi_unitÚi_qtyÚi_priceÚi_amountÚi_vatÚi_totalÚitems_blockÚxml_contents                                    r/   Úgenerate_misa_xmlz(InvoiceMisaExportMixin.generate_misa_xmlh   sö  € õ �W—[’[Ð!1°:Ñ>Ô>Ñ?Ô?×EÒEÀaÑHÔHˆØ—’Ð-¨yÑ9Ô9ˆØ—;’;˜°Ñ4Ô4ˆØ Ÿš \Ñ2Ô2ˆØ0>ÐU�˜^Ñ,Ô,Ð,ÅCÍÌ
ÉÌÑDUÔDUˆà—k’k -Ñ0Ô0ÐOÕ4OˆØ—[’[Ð!2Ñ3Ô3ÐNÕ7Nˆ
à�KŠKÐ(Ñ)Ô)ð \Ø[ð 	ð
 —[’[ Ñ.Ô.ÐIÐ2Iˆ
Ø—K’KÐ 0Ñ1Ô1Ð7°Rˆ	Ø—[’[ Ñ1Ô1Ð7°Rˆ
å˜gŸkškÐ*?ÀÑCÔCÑDÔDˆÝ˜gŸkškÐ*<¸aÑ@Ô@ÑAÔAˆÝ §¢Ð,<¸aÑ @Ô @ÑAÔAˆ
Ý˜7Ÿ;š;Ð'9¸1Ñ=Ô=Ñ>Ô>ˆà!Ÿ+š+Ð&7Ñ8Ô8ð 
Õ<VØñ=
ô =
ˆð ˆÝ! %¨Ñ+Ô+ð 	ñ 	‰HˆC�à—’˜Ñ%Ô%Ð+¨ß’˜˜gÑ&Ô&ß’˜˜fÑ%Ô%ß’˜˜fÑ%Ô%ð	 ð —W’W˜[Ñ)Ô)Ð<¨_°3¨_¨_¨_ˆFØ—W’W˜V‘_”_Ð-¨ˆFÝ˜sŸwšw z°3Ñ7Ô7Ñ8Ô8ˆEÝ  §¢Ð)9¸1Ñ!=Ô!=Ñ>Ô>ˆGÝ! #§'¢'Ð*AÀ1Ñ"EÔ"EÑFÔFˆHÝ˜sŸwšwÐ'7¸Ñ;Ô;Ñ<Ô<ˆEÝ  §¢Ð)@À!Ñ!DÔ!DÑEÔEˆGØ�' !™*œ*Ò$Ð$Ø" UÑ*�à×"Ò"ð $Øð$ð $àð$ð $ð ð$ð $ð ð	$ð $ð
 ð$ð $ð $ð ð$ð $ð $ð "ð$ð $ð $ð ð$ð $ð $ð ð$ð $ð $ð ð$ð $ð $ð  ð$ð $ð $ð $ñ ô ð ñ ð —i’i Ñ0Ô0ˆð÷ ò ð ð ð ð ðð ð ð ð ð	ð ð ð ð
 ðð ð ð ð !ðð ð ð ð ðð ð ð ð "ðð ð ð ð  ðð ð ð ð ðð ð ð ð   ð!ð ð ð ð" ð#ð ð ð ð$ %ð%ð ð ð ð ð& ð'ð ð ð ð ð( ð)ð ð ð ð ð* )ð+ð ð ð õ, Œ|‰~Œ~×&Ò&Ð':Ñ;Ô;ð-ð ð ð ð. ð/ð ð ð ð6 ð7ð ð ð ñ ô ˆð< Ðr1   Nç       @rS   úTM/CKFÚ
SuperAdminr[   r\   ú
str | Noner]   Úbuyer_emailÚbuyer_phoneÚbuyer_representativeúlist[dict[str, Any]] | Noner_   ÚfloatrR   rO   rV   Úpayment_methodÚnotesÚ
project_idÚis_draftr!   Ú	user_namec                óÒ
  — |pg }|sdddœS g }t          d¦  «        }t          d¦  «        }t          t          |¦  «        ¦  «        }t          |d¦  «        D �]\  }}|                     d¦  «        pd|› �}|                     d¦  «        pd	|d
›�}|                     d¦  «        pd}t	          |                     dd¦  «        ¦  «        }t	          |                     dd¦  «        ¦  «        }||z                       t          d¦  «        t          ¬¦  «        }d|v r+|d         �#t          t          |d         ¦  «        ¦  «        }n|}t          t          |                     dd¦  «        ¦  «        ¦  «        }|                     d¦  «        rt	          |d         ¦  «        }n<||t          d¦  «        z  z                       t          d¦  «        t          ¬¦  «        }||z
  } | |t          d¦  «        z  z                       t          d¦  «        t          ¬¦  «        }!| |!z   }"|| z  }||!z  }|                     ||||||| ||!|"|||                      ||¦  «        dœ¦  «         �Œ||z   }#t          |#¦  «        }$|  
                    ¦   «         5 }%|%                     ¦   «         5 }&|
sU|&                     d¦  «         |&                     ¦   «         d         dz   }'t          |'¦  «                             d¦  «        }(n"t          |
¦  «                             d¦  «        }(|pt          t          j        ¦   «         ¦  «        })|rdnd}*| }+|+rt"          nd},|(|	d|)t"          t$          d||pd |pd ||||#|$d!œ}-|                      |-|¦  «        }.t)          j        |.                     d"¦  «        ¦  «                             ¦   «         }/|p|rd#nd$}0|r	|0d%|› d&�z  }0d'}1|&                     |1|(|	|)t$          t"          d|pd ||pd ||||#|$|*|+|,|+||0|.|/f¦  «         t          |&                     ¦   «         d(         ¦  «        }2d)}3|D ]f}|&                     |3|2|d*         |d         |d         |d         |d         |d         |d+         |d         |d,         |d-         |d.         f¦  «         Œg|rd/nd0}4|&                     d1|2|4|t1          j        d2|*t5          |#¦  «        d3œd4¬5¦  «        f¦  «         |%                     ¦   «          |rd6nd7}5d8d9|5› d:|(› d;|	› d<�|2|(|	|t5          |#¦  «        |$d=œcddd¦  «         cddd¦  «         S # 1 swxY w Y   	 ddd¦  «         dS # 1 swxY w Y   dS )>u�   Láº­p vÃ  xuáº¥t hÃ³a Ä‘Æ¡n Ä‘áº§u ra (bÃ¡n ra) má»›i chuáº©n MISA meInvoice (há»— trá»£ cáº£ KÃ½ phÃ¡t hÃ nh hoáº·c LÆ°u nhÃ¡p).ÚerroruB   HÃ³a Ä‘Æ¡n pháº£i cÃ³ Ã­t nháº¥t 1 dÃ²ng hÃ ng hÃ³a / dá»‹ch vá»¥.©ÚstatusÚmessagez0.0000r   rc   u   HÃ ng hÃ³a / Dá»‹ch vá»¥ #rg   zVT-rh   ri   rj   rk   rl   rm   g        z0.0001r   r_   NÚdiscount_rate_percentÚdiscount_amount_vndz100.0)Ú
item_orderrc   rg   ri   rk   rm   rn   r_   r`   ro   r§   r¨   Úcost_categoryzASELECT COUNT(*) AS c FROM erp_invoices WHERE direction = 'output'ÚcrQ   ÚdraftÚvalidrU   rZ   r   )rO   rR   rT   rV   rW   rX   rY   r[   r\   r]   r^   r_   r`   ra   rb   zutf-8u2   Báº£n nhÃ¡p hÃ³a Ä‘Æ¡n Ä‘iá»‡n tá»­ MISA meInvoiceu4   Láº­p hÃ³a Ä‘Æ¡n Ä‘iá»‡n tá»­ chuáº©n MISA meInvoicez	 [Email: ú]a*  
                    INSERT INTO erp_invoices (
                        direction, invoice_type, invoice_number, invoice_series, template_code,
                        issue_date, seller_tax_code, seller_name, seller_address,
                        buyer_tax_code, buyer_name, buyer_address,
                        subtotal_amount_vnd, vat_rate_percent, vat_amount_vnd, total_amount_vnd,
                        amount_in_words, status, signature_valid, signed_by, signed_at,
                        source_channel, reconciliation_status, matched_project_id, notes,
                        xml_raw_content, xml_hash_sha256
                    ) VALUES (
                        'output', 'vat', %s, %s, '1',
                        %s, %s, %s, %s,
                        %s, %s, %s,
                        %s, %s, %s, %s,
                        %s, %s, %s, %s, CASE WHEN %s THEN CURRENT_TIMESTAMP ELSE NULL END,
                        'misa_meinvoice', 'unreconciled', %s, %s,
                        %s, %s
                    ) RETURNING id;
                Úidaˆ  
                    INSERT INTO erp_invoice_items (
                        invoice_id, item_order, item_name, item_code, unit, quantity,
                        unit_price_vnd, amount_before_vat_vnd, vat_rate_percent, vat_amount_vnd,
                        total_item_amount_vnd, cost_category
                    ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);
                r©   rn   r`   ro   rª   ÚCREATE_MISA_DRAFT_INVOICEÚISSUE_MISA_OUTPUT_INVOICEz«
                    INSERT INTO erp_invoice_audit_logs (invoice_id, action_type, performed_by, details_json)
                    VALUES (%s, %s, %s, %s);
                Úmisa_meinvoice)Úsourcer¥   r…   F©Úensure_asciiu   LÆ°u nhÃ¡p thÃ nh cÃ´ngu"   Láº­p vÃ  phÃ¡t hÃ nh thÃ nh cÃ´ngÚsuccessu   Ä�Ã£ u     HÃ³a Ä‘Æ¡n MISA meInvoice sá»‘ õ    (KÃ½ hiá»‡u z).)r¥   r¦   Ú
invoice_idrO   rR   r    ra   rb   )r   r   rt   rq   r   r3   r   r'   Úcategorize_item_costrG   Úget_connectionÚcursorÚexecuteÚfetchonerr   r   rs   r   r   r“   ÚhashlibÚsha256ÚencodeÚ	hexdigestÚjsonÚdumpsrœ   Úcommit)6rx   r[   r\   r]   r˜   r™   rš   rL   r_   rR   rO   rV   r�   rž   rŸ   r    r¡   Úparsed_itemsÚsubtotal_vndÚtotal_vat_vndÚdefault_vat_rater‡   rˆ   ÚnameÚcoderi   ÚqtyÚpricer   Úline_vat_rateÚdisc_pctÚdisc_amtÚnet_line_amtÚline_vat_amtÚ	total_amtra   Úamount_wordsÚconnÚcurÚnext_noÚfinal_inv_noÚfinal_issue_dateÚ
inv_statusÚ	is_signedÚ	signed_byÚinv_dictÚxml_strÚxml_hashÚ	note_textÚ
insert_sqlÚnew_idÚitem_sqlÚaction_nameÚstatus_labels6                                                         r/   Úissue_output_invoicez+InvoiceMisaExportMixin.issue_output_invoiceÈ   s•  € ð( �˜ˆØð 	à!Ø_ðð ð ð
 ˆÝ˜xÑ(Ô(ˆÝ Ñ)Ô)ˆÝ"¥3Ð'7Ñ#8Ô#8Ñ9Ô9Ðå! %¨Ñ+Ô+ð 0	ñ 0	‰HˆC�Ø—7’7˜;Ñ'Ô'ÐMÐ+MÈÐ+MÐ+MˆDØ—7’7˜;Ñ'Ô'Ð:¨?°¨?¨?¨?ˆDØ—7’7˜6‘?”?Ð+ eˆDÝ˜SŸWšW Z°Ñ5Ô5Ñ6Ô6ˆCÝ˜sŸwšwÐ'7¸Ñ=Ô=Ñ>Ô>ˆEØ˜E‘k×+Ò+­G°HÑ,=Ô,=ÍÐ+ÑVÔVˆFð " SÐ(Ð(¨SÐ1CÔ-DÐ-PÝ '­¨CÐ0BÔ,CÑ(DÔ(DÑ EÔ E��à 0�õ �s 3§7¢7Ð+BÀCÑ#HÔ#HÑIÔIÑJÔJˆHØ�wŠwÐ,Ñ-Ô-ð Ý% cÐ*?Ô&@ÑAÔA��à" hµ¸Ñ1AÔ1AÑ&AÑB×LÒLÝ˜HÑ%Ô%µð Mñ ô �ð " HÑ,ˆLØ(¨M½GÀGÑ<LÔ<LÑ,LÑM×WÒWÝ˜Ñ!Ô!­Mð Xñ ô ˆLð % |Ñ3ˆIà˜LÑ(ˆLØ˜\Ñ)ˆMà×Òà"%Ø!%Ø!%Ø Ø #Ø&+Ø-9Ø(5Ø&2Ø-6Ø-5Ø+3Ø%)×%>Ò%>¸tÀTÑ%JÔ%Jðð ñô ð ñ ð$ (¨-Ñ7ÐÝ1Ð2BÑCÔCˆà× Ò Ñ"Ô"ð a	 dØ—’‘”ð ` #à%ð @Ø—K’KØ[ñô ð ð "Ÿlšl™nœn¨SÔ1°AÑ5�GÝ#& w¡<¤<×#5Ò#5°aÑ#8Ô#8�L�Lå#& ~Ñ#6Ô#6×#<Ò#<¸QÑ#?Ô#?�Là#-Ð#BµµT´Z±\´\Ñ1BÔ1BÐ Ø(0Ð=˜W˜W°g�
Ø (˜L�	Ø;DÐNÕ7Ð7È$�	ð '3Ø&4Ø%(Ø"2Ý#>Ý'>Ø&rØ",Ø&4Ð&:¸Ø%2Ð%8°bØ+7Ø(8Ø&3Ø(8Ø'3ðð �ð$ ×0Ò0°¸<ÑHÔH�Ý"œ>¨'¯.ª.¸Ñ*AÔ*AÑBÔB×LÒLÑNÔN�à!ð àðPÐHÐHàOð ð
 ð <ØÐ!;¨[Ð!;Ð!;Ð!;Ñ;�Ið�
ð& —’Øà$Ø&Ø(Ý/Ý3ØdØ&Ð,¨"Ø"Ø%Ð+¨Ø$Ø(Ø%Ø(Ø$Ø"Ø!Ø!Ø!Ø"Ø!ØØ ð-ñô ð õ6 ˜SŸ\š\™^œ^¨DÔ1Ñ2Ô2�ð�ð (ð ð �CØ—K’KØ à"Ø Ô-Ø Ô,Ø Ô,Ø œKØ 
œOØÐ 0Ô1ØÐ 7Ô8ØÐ 2Ô3ØÐ 0Ô1ØÐ 7Ô8Ø Ô0ðñô ð ð ð*  ð5Ð/Ð/à4ð ð
 —’ðð
 Ø#Ø!Ýœ
à*:Ø*4Ý).Ð/?Ñ)@Ô)@ðð ð
 */ðñ ô ð	ñô ð ð( —’‘”�ð 2:ÐcÐ-Ð-Ð?cð ð (ð  C |ð   Cð   CÐUað   Cð   CÐp~ð   Cð   Cð   CØ"(Ø&2Ø&4Ø (Ý(-Ð.>Ñ(?Ô(?Ø'3ð	ð 	ðo`ð `ð `ð `ñ `ô `ð `ða	ð a	ð a	ð a	ñ a	ô a	ð a	ð a	ð`ð `ð `ð `øøøð `ð `ð `ð `ð `ða	ð a	ð a	ñ a	ô a	ð a	ð a	ð a	ð a	ð a	ð a	ð a	øøøð a	ð a	ð a	ð a	ð a	ð a	s7   ÊUÊ*J UÔ*UÕU	ÕUÕ
U	ÕUÕU Õ#U r¸   c                óP  — |                       ¦   «         5 }|                     ¦   «         5 }|                     d|f¦  «         |                     ¦   «         }|sdddœcddd¦  «         cddd¦  «         S |                     dt          |f¦  «         |                     d||t          j        dt          id	¬
¦  «        f¦  «         |                     ¦   «          dd|d         › d�|dœcddd¦  «         cddd¦  «         S # 1 swxY w Y   	 ddd¦  «         dS # 1 swxY w Y   dS )uV   KÃ½ sá»‘ Ä‘iá»‡n tá»­ vÃ  chÃ­nh thá»©c phÃ¡t hÃ nh hÃ³a Ä‘Æ¡n nhÃ¡p (Draft -> Valid).z(SELECT * FROM erp_invoices WHERE id = %sr£   u-   KhÃ´ng tÃ¬m tháº¥y hÃ³a Ä‘Æ¡n cáº§n kÃ½ sá»‘.r¤   NaL  
                    UPDATE erp_invoices
                    SET status = 'valid',
                        signature_valid = TRUE,
                        signed_by = %s,
                        signed_at = CURRENT_TIMESTAMP,
                        updated_at = CURRENT_TIMESTAMP
                    WHERE id = %s;
                zÆ
                    INSERT INTO erp_invoice_audit_logs (invoice_id, action_type, performed_by, details_json)
                    VALUES (%s, 'SIGN_AND_ISSUE_MISA_INVOICE', %s, %s);
                rÛ   Fr´   r¶   uH   Ä�Ã£ kÃ½ sá»‘ Ä‘iá»‡n tá»­ vÃ  phÃ¡t hÃ nh thÃ nh cÃ´ng HÃ³a Ä‘Æ¡n sá»‘ rO   ú.)r¥   r¦   r¸   )rº   r»   r¼   r½   r   rÂ   rÃ   rÄ   )rx   r¸   r¡   rÔ   rÕ   Úinvs         r/   Úsign_and_issue_invoicez-InvoiceMisaExportMixin.sign_and_issue_invoiceÀ  s?  € ð × Ò Ñ"Ô"ð ,	 dØ—’‘”ð + #Ø—’ÐFÈÈÑVÔVÐVØ—l’l‘n”n�Øð à")Ø#Rðð ð	+ð +ð +ð +ñ +ô +ð +ð,	ð ,	ð ,	ð ,	ñ ,	ô ,	ð ,	ð ,	ð —’ðõ 1°*Ð=ñô ð ð —’ðð
 #Ø!Ýœ
Ø(Õ*EÐFØ).ðñ ô ðñô ð ð —’‘”�ð (ð  CÐjmÐn~Ôjð   Cð   Cð   CØ",ðð ðO+ð +ð +ð +ñ +ô +ð +ð,	ð ,	ð ,	ð ,	ñ ,	ô ,	ð ,	ð ,	ð+ð +ð +ð +øøøð +ð +ð +ð +ð +ð,	ð ,	ð ,	ñ ,	ô ,	ð ,	ð ,	ð ,	ð ,	ð ,	ð ,	ð ,	øøøð ,	ð ,	ð ,	ð ,	ð ,	ð ,	sA   •Dª2DÁDÁ5A4DÃ)DÄD	ÄDÄ	D	Ä
DÄDÄ"Dc              ƒ  ó¶  K  — ddl m} |                      |¦  «        }|sdddœS |                     dd¦  «        }|                     dd	¦  «        }t	          |                     d
d¦  «        ¦  «        }|                     dt
          ¦  «        }|                     dd¦  «        }	d|	› d|› dt          j        t          |                     dd¦  «        ¦  «        pd¦  «        › d|› d|› dt          j        t          |                     d¦  «        ¦  «        pd¦  «        › d|d›dt          j        t          |                     dd¦  «        ¦  «        pd¦  «        › d|› d�}
d|› d|› d |› d!�}| 	                    |||
|	|› d"�¬#¦  «        ƒ d${V —†}|                     d%¦  «        rd%nd&|                     d%¦  «        rd'nd(|                     d¦  «        › �|d)œS )*uM   Gá»­i email thÃ´ng bÃ¡o phÃ¡t hÃ nh hÃ³a Ä‘Æ¡n Ä‘iá»‡n tá»­ cho khÃ¡ch hÃ ng.r   )ÚBrevoEmailServicer£   u   KhÃ´ng tÃ¬m tháº¥y hÃ³a Ä‘Æ¡n.r¤   rO   Ú00000000rR   rS   ra   rW   r[   u   QuÃ½ KhÃ¡ch HÃ nguM  
        <div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; background-color: #0b0f19; color: #f8fafc; padding: 24px; border-radius: 8px; max-width: 650px; margin: 0 auto; border: 1px solid #1e293b;">
            <div style="border-bottom: 1px solid #334155; padding-bottom: 14px; margin-bottom: 16px;">
                <h2 style="color: #06b6d4; margin: 0; font-size: 18px;">ðŸ“„ ThÃ´ng BÃ¡o PhÃ¡t HÃ nh HÃ³a Ä�Æ¡n Ä�iá»‡n Tá»­</h2>
            </div>
            <p style="color: #cbd5e1; font-size: 14px;">KÃ­nh gá»­i: <strong>zr</strong>,</p>
            <p style="color: #cbd5e1; font-size: 13px; line-height: 1.5;">
                <strong>uZ  </strong> xin trÃ¢n trá»�ng thÃ´ng bÃ¡o Ä‘Ã£ phÃ¡t hÃ nh HÃ³a Ä‘Æ¡n Ä‘iá»‡n tá»­ GiÃ¡ Trá»‹ Gia TÄƒng vá»›i cÃ¡c thÃ´ng tin chi tiáº¿t nhÆ° sau:
            </p>
            <div style="background: #1e293b; padding: 14px; border-radius: 6px; margin: 16px 0; font-size: 13px;">
                <div style="margin-bottom: 6px;">Máº«u sá»‘: <strong>rT   rU   r   u!   </strong> Â· KÃ½ hiá»‡u: <strong>uƒ   </strong></div>
                <div style="margin-bottom: 6px;">Sá»‘ hÃ³a Ä‘Æ¡n: <strong style="color: #34d399; font-size: 15px;">uV   </strong></div>
                <div style="margin-bottom: 6px;">NgÃ y láº­p: <strong>rV   u†   </strong></div>
                <div style="margin-bottom: 6px;">Tá»•ng thanh toÃ¡n: <strong style="color: #38bdf8; font-size: 15px;">ú,.0fue    VNÄ�</strong></div>
                <div style="font-style: italic; color: #94a3b8;">(Báº±ng chá»¯: rb   uã  )</div>
            </div>
            <p style="color: #94a3b8; font-size: 12px;">
                QuÃ½ khÃ¡ch cÃ³ thá»ƒ xem vÃ  táº£i báº£n thá»ƒ hiá»‡n hÃ³a Ä‘Æ¡n Ä‘iá»‡n tá»­ chÃ­nh thá»©c báº¥t ká»³ lÃºc nÃ o qua há»‡ thá»‘ng cá»•ng tra cá»©u cá»§a chÃºng tÃ´i.
            </p>
            <hr style="border: none; border-top: 1px solid #334155; margin: 20px 0 12px 0;" />
            <p style="font-size: 11px; color: #64748b; margin: 0; text-align: center;">
                u    Â· MST: 0202111150 Â· Hotline: 0904.388.999 Â· Email: contact@dinhsonconstruction.com
            </p>
        </div>
        u   ðŸ“„ [u7   ] ThÃ´ng bÃ¡o phÃ¡t hÃ nh HÃ³a Ä‘Æ¡n Ä‘iá»‡n tá»­ sá»‘ r·   ú)z
 E-Invoice)Úrecipient_emailÚsubjectÚhtml_contentÚrecipient_nameÚsender_nameNr¶   Úemail_erroru)   Ä�Ã£ gá»­i email hÃ³a Ä‘Æ¡n thÃ nh cÃ´ng.u   Lá»—i gá»­i email: )r¥   r¦   r˜   )
Ú*app.modules.core.application.alert_servicerë   Úget_invoice_detailrq   rœ   r   ÚhtmlÚescaper   Ú
send_email)rx   r¸   r˜   rë   rè   Úinv_numrz   Ú	total_vndÚsellerÚbuyerÚ	html_bodyrð   r-   s                r/   Úsend_invoice_to_buyer_emailz2InvoiceMisaExportMixin.send_invoice_to_buyer_emailò  sÄ  è è € ð 	QÐPÐPÐPÐPÐPà×%Ò% jÑ1Ô1ˆØð 	TØ%Ð2RÐSÐSÐSà—'’'Ð*¨JÑ7Ô7ˆØ—’Ð)¨9Ñ5Ô5ˆÝ˜#Ÿ'š'Ð"4°aÑ8Ô8Ñ9Ô9ˆ	Ø—’˜Õ(CÑDÔDˆØ—’˜Ð&9Ñ:Ô:ˆðð
 OTðð ð  ðð õ GKÄkÕRUÐVY×V]ÒV]Ð^mÐorÑVsÔVsÑRtÔRtÐRzÐxzÑF{ÔF{ðð ð _eðð ð u|ðð õ HLÄ{ÕSVÐWZ×W^ÒW^Ð_kÑWlÔWlÑSmÔSmÐSsÐqsÑGtÔGtðð ð xAðð ð õ RVÔQ\Õ]`Ðad×ahÒahÐizÐ|~ÑaÔañ  ^Aô  ^Að  ^Gð  EGñ  RHô  RHðð ð* ð+ð ð ˆ	ð4 z˜6ÐyÐyÐZaÐyÐyÐpvÐyÐyÐyˆØ%×0Ò0Ø'ØØ"Ø Ø!Ð-Ð-Ð-ð 1ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð $'§7¢7¨9Ñ#5Ô#5ÐH�i�i¸=à�wŠw�yÑ!Ô!ð:ÐBÐBà9 s§w¢w¨wÑ'7Ô'7Ð9Ð9Ø&ð
ð 
ð 	
r1   c                ó¸
  — |                       |¦  «        }|sdS |                     dg ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }|                     d¦  «        pt          |¦  «        }d}|D ]ë}	t          |	                     d	d¦  «        ¦  «        d
›}
t          |	                     dd¦  «        ¦  «        d›}t          |	                     dd¦  «        ¦  «        d›}|d|	                     d¦  «        › dt	          j        |	                     d¦  «        pd¦  «        › dt	          j        |	                     dd¦  «        pd¦  «        › d|
› d|› d|› d�z  }Œì|                     d¦  «        p%t          j        ¦   «                              d¦  «        }d 	                    g d‘t	          j        |                     d¦  «        pd¦  «        › ‘d‘t	          j        |                     d¦  «        pd¦  «        › ‘d‘t          |                     d¦  «        ¦  «        dd …         › ‘d!‘t          |                     d¦  «        ¦  «        d"d#…         › ‘d$‘t          |                     d¦  «        ¦  «        d%d&…         › ‘d'‘t	          j        t          |                     d(d)¦  «        ¦  «        pd¦  «        › ‘d*‘t	          j        |                     d¦  «        pd¦  «        › ‘d+‘t	          j        |                     d¦  «        pd¦  «        › ‘d,‘t	          j        t          |                     d-¦  «        ¦  «        pd¦  «        › ‘d.‘t	          j        t          |                     d/¦  «        ¦  «        pd¦  «        › ‘d0‘t	          j        t          |                     d1¦  «        ¦  «        pd¦  «        › ‘d2‘t	          j        t          |                     d3¦  «        ¦  «        pd¦  «        › ‘d4‘|                     d5¦  «        pd6› ‘d7‘|                     d8¦  «        pd9› ‘d:‘|› ‘d;‘|d›‘d<‘t	          j        t          |                     d=d¦  «        ¦  «        ¦  «        › ‘d>‘|d›‘d?‘|d›‘d@‘|› ‘dA‘t	          j        t          |                     d-¦  «        ¦  «        pd¦  «        › ‘dB‘|› ‘dC‘t	          j        t          |                     dDd¦  «        ¦  «        d%dE…         ¦  «        › ‘dF‘¦  «        }|S )Gu`   Render báº£n thá»ƒ hiá»‡n HTML khá»• A4 chuáº©n MISA meInvoice & Nghá»‹ Ä‘á»‹nh 123/2020/NÄ�-CP.uN   <html><body><h3>KhÃ´ng tÃ¬m tháº¥y hÃ³a Ä‘Æ¡n Ä‘iá»‡n tá»­.</h3></body></html>rL   ra   r   r^   r`   rb   r   rk   z,.2frm   rí   rn   zk
            <tr>
                <td style="text-align: center; padding: 6px; border: 1px solid #94a3b8;">r©   za</td>
                <td style="padding: 6px 8px; border: 1px solid #94a3b8; font-weight: 500;">rc   z_</td>
                <td style="text-align: center; padding: 6px; border: 1px solid #94a3b8;">ri   z^</td>
                <td style="text-align: right; padding: 6px; border: 1px solid #94a3b8;">zp</td>
                <td style="text-align: right; padding: 6px; border: 1px solid #94a3b8; font-weight: 600;">z$</td>
            </tr>
            Ú	signed_atz%d/%m/%Y %H:%M:%Suh   <!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>HÃ³a Ä�Æ¡n Ä�iá»‡n Tá»­ - rR   Ú_rO   uÑ  </title>
    <style>
        @page { size: A4; margin: 15mm; }
        body {
            font-family: 'Times New Roman', Times, serif;
            color: #1e293b;
            background: #fff;
            margin: 0;
            padding: 20px;
            font-size: 14px;
            line-height: 1.4;
        }
        .invoice-box {
            max-width: 800px;
            margin: auto;
            border: 2px solid #0284c7;
            padding: 24px;
            border-radius: 8px;
            box-shadow: 0 4px 12px rgba(0,0,0,0.1);
        }
        .header-table, .info-table, .items-table, .footer-table {
            width: 100%;
            border-collapse: collapse;
        }
        .title-section {
            text-align: center;
        }
        .title-main {
            font-size: 20px;
            font-weight: bold;
            color: #0369a1;
            text-transform: uppercase;
            margin: 4px 0;
        }
        .items-table th {
            background-color: #f0f9ff;
            border: 1px solid #94a3b8;
            padding: 8px 4px;
            text-align: center;
            font-size: 13px;
        }
        .stamp-box {
            border: 2px dashed #ef4444;
            padding: 10px;
            border-radius: 6px;
            color: #ef4444;
            background: #fef2f2;
            text-align: center;
            display: inline-block;
            font-size: 12px;
            margin-top: 10px;
        }
        @media print {
            body { padding: 0; background: none; }
            .invoice-box { border: 1.5px solid #0284c7; box-shadow: none; }
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <div class="no-print" style="max-width: 800px; margin: 0 auto 16px auto; display: flex; justify-content: space-between; align-items: center;">
        <button onclick="window.print()" style="background: #0284c7; color: #fff; border: none; padding: 8px 20px; border-radius: 6px; font-weight: bold; cursor: pointer;">
            ðŸ–¨ï¸� In HÃ³a Ä�Æ¡n / LÆ°u PDF (A4)
        </button>
        <div style="color: #64748b; font-size: 13px;">Báº£n thá»ƒ hiá»‡n chuáº©n MISA meInvoice Â· Nghá»‹ Ä‘á»‹nh 123/2020/NÄ�-CP</div>
    </div>

    <div class="invoice-box">
        <table class="header-table" style="margin-bottom: 12px;">
            <tr>
                <td style="width: 20%; vertical-align: top;">
                    <div style="font-weight: bold; font-size: 24px; color: #0284c7; letter-spacing: 1px;">DSCONS</div>
                    <div style="font-size: 11px; color: #64748b;">XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ N</div>
                </td>
                <td style="width: 50%; vertical-align: top; text-align: center;">
                    <div class="title-main">HÃ“A Ä�Æ N GIÃ� TRá»Š GIA TÄ‚NG</div>
                    <div style="font-size: 12px; color: #64748b; font-style: italic;">(Báº£n thá»ƒ hiá»‡n cá»§a hÃ³a Ä‘Æ¡n Ä‘iá»‡n tá»­)</div>
                    <div style="margin-top: 4px; font-size: 13px;">NgÃ y rV   rQ   r$   u    thÃ¡ng r%   é   u    nÄƒm Né   u¬   </div>
                </td>
                <td style="width: 30%; vertical-align: top; text-align: right; font-size: 13px;">
                    <div>Máº«u sá»‘: <strong>rT   rU   u=   </strong></div>
                    <div>KÃ½ hiá»‡u: <strong>ud   </strong></div>
                    <div>Sá»‘ HÄ�: <strong style="color: #ef4444; font-size: 16px;">uÚ  </strong></div>
                </td>
            </tr>
        </table>

        <hr style="border: none; border-top: 1px solid #0284c7; margin: 10px 0;" />

        <!-- Seller & Buyer -->
        <table class="info-table" style="margin-bottom: 14px; font-size: 13px;">
            <tr>
                <td style="width: 140px; font-weight: bold; color: #0369a1;">Ä�Æ¡n vá»‹ bÃ¡n hÃ ng:</td>
                <td style="font-weight: bold; font-size: 14px; color: #0f172a;">rW   uÎ   </td>
            </tr>
            <tr>
                <td style="font-weight: bold; color: #0369a1;">MÃ£ sá»‘ thuáº¿:</td>
                <td style="font-weight: bold; font-size: 14px; color: #0284c7;">rX   u�   </td>
            </tr>
            <tr>
                <td style="font-weight: bold; color: #0369a1;">Ä�á»‹a chá»‰:</td>
                <td>rY   uV  </td>
            </tr>
            <tr>
                <td colspan="2"><hr style="border: none; border-top: 1px dashed #cbd5e1; margin: 8px 0;" /></td>
            </tr>
            <tr>
                <td style="font-weight: bold; color: #059669;">TÃªn Ä‘Æ¡n vá»‹ mua:</td>
                <td style="font-weight: bold; font-size: 14px;">r[   u­   </td>
            </tr>
            <tr>
                <td style="font-weight: bold; color: #059669;">MÃ£ sá»‘ thuáº¿:</td>
                <td style="font-weight: bold;">r\   u   ChÆ°a cung cáº¥pu�   </td>
            </tr>
            <tr>
                <td style="font-weight: bold; color: #059669;">Ä�á»‹a chá»‰:</td>
                <td>r]   u   Theo há»£p Ä‘á»“ng thi cÃ´nguI  </td>
            </tr>
            <tr>
                <td style="font-weight: bold; color: #059669;">HÃ¬nh thá»©c thanh toÃ¡n:</td>
                <td>Chuyá»ƒn khoáº£n / Tiá»�n máº·t (TM/CK)</td>
            </tr>
        </table>

        <!-- Line Items -->
        <table class="items-table" style="margin-bottom: 14px;">
            <thead>
                <tr>
                    <th style="width: 40px;">STT</th>
                    <th>TÃªn HÃ ng HÃ³a, Dá»‹ch Vá»¥, Khá»‘i LÆ°á»£ng Thi CÃ´ng</th>
                    <th style="width: 50px;">Ä�VT</th>
                    <th style="width: 70px;">Sá»‘ LÆ°á»£ng</th>
                    <th style="width: 100px;">Ä�Æ¡n GiÃ¡</th>
                    <th style="width: 120px;">ThÃ nh Tiá»�n (VNÄ�)</th>
                </tr>
            </thead>
            <tbody>
                ud  
            </tbody>
        </table>

        <!-- Summary -->
        <table class="info-table" style="margin-bottom: 16px; font-size: 13px;">
            <tr>
                <td style="text-align: right; padding-right: 12px; font-weight: bold;">Cá»™ng tiá»�n hÃ ng:</td>
                <td style="width: 140px; text-align: right; font-weight: bold;">u—    Ä‘</td>
            </tr>
            <tr>
                <td style="text-align: right; padding-right: 12px; font-weight: bold;">Thuáº¿ suáº¥t GTGT (r_   zK%):</td>
                <td style="text-align: right; font-weight: bold;">u.   Ä‘</td>
            </tr>
            <tr>
                <td style="text-align: right; padding-right: 12px; font-weight: bold; font-size: 15px; color: #0369a1;">Tá»•ng cá»™ng tiá»�n thanh toÃ¡n:</td>
                <td style="text-align: right; font-weight: bold; font-size: 16px; color: #ef4444;">uÉ    Ä‘</td>
            </tr>
            <tr>
                <td colspan="2" style="font-style: italic; padding-top: 6px; font-size: 13px;">
                    Sá»‘ tiá»�n viáº¿t báº±ng chá»¯: <strong>u  </strong>
                </td>
            </tr>
        </table>

        <!-- Signatures -->
        <table class="footer-table" style="margin-top: 20px;">
            <tr>
                <td style="width: 50%; text-align: center; vertical-align: top;">
                    <div style="font-weight: bold; text-transform: uppercase;">NgÆ°á»�i Mua HÃ ng</div>
                    <div style="font-size: 11px; color: #64748b; font-style: italic;">(KÃ½, ghi rÃµ há»� tÃªn)</div>
                </td>
                <td style="width: 50%; text-align: center; vertical-align: top;">
                    <div style="font-weight: bold; text-transform: uppercase;">NgÆ°á»�i BÃ¡n HÃ ng</div>
                    <div style="font-size: 11px; color: #64748b; font-style: italic;">(Chá»¯ kÃ½ sá»‘ Ä‘iá»‡n tá»­ há»£p lá»‡)</div>
                    <div class="stamp-box">
                        <div style="font-weight: bold;">âœ“ Ä�Ãƒ KÃ� Ä�Iá»†N Tá»¬ Bá»žI:</div>
                        <div style="font-weight: bold; font-size: 13px; margin: 2px 0;">u/   </div>
                        <div>NgÃ y kÃ½: u{  </div>
                    </div>
                </td>
            </tr>
        </table>

        <div style="border-top: 1px solid #cbd5e1; margin-top: 24px; padding-top: 8px; text-align: center; font-size: 11px; color: #64748b;">
            HÃ³a Ä‘Æ¡n Ä‘iá»‡n tá»­ tra cá»©u táº¡i Cá»•ng Tá»•ng Cá»¥c Thuáº¿: <i>https://hoadondientu.gdt.gov.vn</i> Â· MÃ£ tra cá»©u: <strong>Úxml_hash_sha256é   z3</strong>
        </div>
    </div>
</body>
</html>)rö   rq   rœ   rG   r÷   rø   r   rv   rw   r(   r   )rx   r¸   rè   rL   rû   rÆ   Úvat_vndrÓ   Ú	item_rowsrˆ   Úqty_strÚ	price_strÚamt_strÚsigned_at_strÚhtml_templates                  r/   Úrender_misa_invoice_htmlz/InvoiceMisaExportMixin.render_misa_invoice_html-  sÏ  € à×%Ò% jÑ1Ô1ˆØð 	dØcÐcà—’˜ Ñ$Ô$ˆÝ˜#Ÿ'š'Ð"4°aÑ8Ô8Ñ9Ô9ˆ	Ý˜SŸWšWÐ%:¸AÑ>Ô>Ñ?Ô?ˆÝ˜ŸšÐ 0°!Ñ4Ô4Ñ5Ô5ˆØ—w’wÐ0Ñ1Ô1ð 
Õ5OØñ6
ô 6
ˆð ˆ	Øð 	ð 	ˆCÝ˜sŸwšw z°1Ñ5Ô5Ñ6Ô6Ð=Ð=ˆGÝ  §¢Ð)9¸1Ñ!=Ô!=Ñ>Ô>ÐEÐEˆIÝ˜sŸwšwÐ'>ÀÑBÔBÑCÔCÐJÐJˆGØð 	àZ]×ZaÒZaÐbnÑZoÔZoð	ð 	õ ]aÔ\gÐhk×hoÒhoÐp{Ñh|Ôh|ð  iCð  ACñ  ]Dô  ]Dð	ð 	õ [_ÔZeÐfi×fmÒfmÐntÐvxÑfyÔfyÐfÐ}ñ  [Aô  [Að		ð 	ð
 Zað	ð 	ð Zcð	ð 	ð lsð	ð 	ð 	ñ 	ˆIˆIð Ÿš Ñ,Ô,ð 
µ´±´×0GÒ0GØñ1
ô 1
ˆð~÷ ~ò ~ð ~ð ~ð ~õ '+¤k°#·'²'Ð:JÑ2KÔ2KÐ2QÈrÑ&RÔ&Rð	~ð ~ð ~ð ~õ VZÔU`Ðad×ahÒahÐiyÑazÔazð  bAð  Añ  VBô  VBð	~ð ~ð ~ð ~õb KNÈcÏgÊgÐVbÑNcÔNcÑJdÔJdÐefÐgiÐeiÔJjðc~ð ~ð ~ð ~õb uxÐx{×xÒxð  AMñ  yNô  yNñ  uOô  uOð  PQð  RSð  PSô  uTðc~ð ~ð ~ð ~õb \_ð  `c÷  `gò  `gð  htñ  `uô  `uñ  \vô  \vð  wyð  xyð  wyô  \zðc~ð ~ð ~ð ~õh /3¬k½#¸c¿gºgÀoÐWZÑ>[Ô>[Ñ:\Ô:\Ð:bÐ`bÑ.cÔ.cði~ð ~ð ~ð ~õj /3¬k¸#¿'º'ÐBRÑ:SÔ:SÐ:YÐWYÑ.ZÔ.Zðk~ð ~ð ~ð ~õl VZÔU`Ðad×ahÒahÐiyÑazÔazð  bAð  Añ  VBô  VBðm~ð ~ð ~ð ~õB RVÔQ\Õ]`Ðad×ahÒahÐivÑawÔawÑ]xÔ]xÐ]~Ð|~ÑQÔQðC~ð ~ð ~ð ~õJ RVÔQ\Õ]`Ðad×ahÒahÐizÑa{Ôa{Ñ]|Ô]|ð  ^Cð  ACñ  RDô  RDðK~ð ~ð ~ð ~õR ”[¥ S§W¢WÐ-=Ñ%>Ô%>Ñ!?Ô!?Ð!EÀ2ÑFÔFðS~ð ~ð ~ð ~õ` BFÄÍSÐQT×QXÒQXÐYeÑQfÔQfÑMgÔMgÐMmÐkmÑAnÔAnða~ð ~ð ~ð ~ðh 14·²Ð8HÑ0IÔ0IÐ0_ÐM_ði~ð ~ð ~ð ~ðp —W’W˜_Ñ-Ô-ÐOÐ1Oðq~ð ~ð ~ð ~ðZ ð[~ð ~ð ~ð ~ðj R^ðk~ð ~ð ~ð ~ð ~õp mqÔlwÕx{Ð|÷  }Dò  }Dð  EWð  YZñ  }[ô  }[ñ  y\ô  y\ñ  m]ô  m]ðq~ð ~ð ~ð ~ðr DKðs~ð ~ð ~ð ~ð ~ðz enð{~ð ~ð ~ð ~ð ~ðB ?KðC~ð ~ð ~ð ~õd Z^ÔYdÕehÐil×ipÒipÐq~ÑiÔiñ  fAô  fAð  fGð  EGñ  ZHô  ZHðe~ð ~ð ~ð ~ðf *7ðg~ð ~ð ~ð ~õt SWô  S^õ  _bð  cf÷  cjò  cjð  k|ð  ~@ñ  cAô  cAñ  _Bô  _Bð  CFð  DFð  CFô  _Gñ  SHô  SHðu~ð ~ð ~ð ~ñ ~ô ~ˆð~ Ðr1   ÚallÚ	from_dateÚto_dateÚ	directionÚbytesc                óª  — |                       |dk    rdn|||dd¬¦  «        \  }}t          ¦   «         }|j        }d|_        t	          ddd	d
¬¦  «        }t	          ddd	d¬¦  «        }	t	          ddd	d¬¦  «        }
t          ddd¬¦  «        }t	          dd¬¦  «        }t	          ddd	¬¦  «        }t          t          dd¬¦  «        t          dd¬¦  «        t          dd¬¦  «        t          dd¬¦  «        ¬¦  «        }|dk    rdn	|dk    rdnd}|                     d¦  «         d|› d�|d <   ||d          _	        t          d!d!¬"¦  «        |d          _        d#|j        d$         _        |r
|rd%|› d&|› �nd'}|                     d(¦  «         d)|› �|d*<   |	|d*         _	        t          d!d!¬"¦  «        |d*         _        d+|j        d,         _        g d-¢}|                     g ¦  «         |                     |¦  «         d.|j        d/         _        t          d$t!          |¦  «        d$z   ¦  «        D ]E}|                     d/|¬0¦  «        }|
|_	        ||_        t          d!d!d	¬1¦  «        |_        ||_        ŒFd}d}d}t)          |d$¦  «        D �] \  }}|                     d2¦  «        d3k    rd4nd5}t-          |                     d6d¦  «        ¦  «        }t-          |                     d7d¦  «        ¦  «        }t-          |                     d8d¦  «        ¦  «        }||z  }||z  }||z  }||t/          |                     d9d:¦  «        ¦  «        |                     d;d<¦  «        |                     d=d:¦  «        |                     d>d:¦  «        |                     d?d:¦  «        |                     d@d:¦  «        |                     dAd:¦  «        |                     dBd:¦  «        |||g}|                     |¦  «         |j        }dC|j        |         _        t          d$t!          |¦  «        d$z   ¦  «        D ]z}|                     ||¬0¦  «        } || _	        || _        |dDv rt          d!d!¬"¦  «        | _        ŒB|dEv rt          dFd!¬"¦  «        | _        dG| _        Œdt          dHd!¬"¦  «        | _        Œ{�Œ"|j        d$z   }!|                     |!d$|!d¬I¦  «         |                     |!d$dJ¬K¦  «        }"||"_	        t          dFd!¬"¦  «        |"_        dG|                     |!dL|¬K¦  «        _        ||                     |!dL¬0¦  «        _	        dG|                     |!dM|¬K¦  «        _        ||                     |!dM¬0¦  «        _	        dG|                     |!dN|¬K¦  «        _        ||                     |!dN¬0¦  «        _	        t          d$d¦  «        D ]}||                     |!|¬0¦  «        _        Œg dO¢}#t)          |#d$¦  «        D ]$\  }$}%|%|j        t7          |$¦  «                 _        Œ%t;          j        ¦   «         }&|                     |&¦  «         |&                      ¦   «         S )Pud   Xuáº¥t báº£ng kÃª danh sÃ¡ch hÃ³a Ä‘Æ¡n theo chuáº©n máº«u Excel nháº­p liá»‡u MISA SME / meInvoice.r  Niˆ  r   )r  r  r  ÚlimitÚoffsetÚBang_Ke_Hoa_Don_MISAÚArialé   TÚ003366)rÉ   ÚsizeÚboldÚcolorr$   Ú555555)rÉ   r  Úitalicr  ÚFFFFFFÚ1E40AFÚsolid)Ústart_colorÚ	end_colorÚ	fill_type)rÉ   r  )rÉ   r  r  ÚthinÚCCCCCC)Ústyler  )ÚleftÚrightÚtopÚbottomu   MUA VÃ€O & BÃ�N RAÚinputu   MUA VÃ€Ou   BÃ�N RAzA1:M1u#   Báº¢NG KÃŠ HÃ“A Ä�Æ N Ä�Iá»†N Tá»¬ u    (CHUáº¨N MISA MEINVOICE)ÚA1Úcenter)Ú
horizontalÚverticalé   r   u   Tá»« ngÃ y u    Ä‘áº¿n ngÃ y u   ToÃ n bá»™ ká»³ káº¿ toÃ¡nzA2:M2uH   Ä�Æ¡n vá»‹: CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ N (MST: 0202111150) Â· ÚA2é   é   )ÚSTTu
   Loáº¡i HÄ�u	   NgÃ y HÄ�u
   Máº«u Sá»‘u
   KÃ½ Hiá»‡uu   Sá»‘ HÃ³a Ä�Æ¡nu   MST NgÆ°á»�i BÃ¡nu   TÃªn NgÆ°á»�i BÃ¡nu   MST NgÆ°á»�i Muau   TÃªn NgÆ°á»�i Muau   Tiá»�n HÃ ng (VNÄ�)u   Tiá»�n Thuáº¿ GTGT (VNÄ�)u   Tá»•ng Thanh ToÃ¡n (VNÄ�)é   r  )ÚrowÚcolumn)r0  r1  Ú	wrap_textr  Úoutputu   BÃ¡n rau   Mua vÃ or^   r`   ra   rV   r   rT   rU   rR   rO   rX   rW   r\   r[   é   )r   r5  é   r  r%   é   r  é	   )é   é   é   r*  z#,##0r)  )Ú	start_rowÚstart_columnÚend_rowÚ
end_columnu    Tá»”NG Cá»˜NG TIá»€N HÃ“A Ä�Æ N:)r8  r9  Úvaluer@  rA  rB  )r>  r$   rA  rQ   rA  r  é   é   rH  rI  r4  r4  r<  )!Úlist_invoicesr	   ÚactiveÚtitler   r   r   r   Úmerge_cellsÚfontr
   Ú	alignmentÚrow_dimensionsÚheightr'   r6   r7   ÚcellÚfillÚborderrt   rq   rœ   r   Úmax_rowÚnumber_formatÚcolumn_dimensionsr   ÚwidthÚioÚBytesIOÚsaveÚgetvalue)'rx   r  r  r  Úinvoicesr  ÚwbÚwsÚ
title_fontÚsub_fontÚheader_fontÚheader_fillÚ	data_fontÚbold_data_fontÚthin_borderÚ	dir_labelÚ
period_strÚheadersÚcol_numrR  Útotal_subtotalÚ	total_vatÚ	total_allr‡   rè   Údir_strr‚   ÚvatÚtotÚrow_dataÚrow_idxÚcol_idxr«   Úsummary_row_idxÚsum_cellÚ
col_widthsrB   rX  Úoutput_streams'                                          r/   Úexport_misa_excelz(InvoiceMisaExportMixin.export_misa_excel  s  € ð ×(Ò(Ø'¨5Ò0Ð0�d�d°iØØØØð )ñ 
ô 
‰ˆ�!õ ‰ZŒZˆØŒYˆØ)ˆŒõ ˜w¨R°dÀ(ÐKÑKÔKˆ
Ý˜W¨2°dÀ(ÐKÑKÔKˆÝ ¨b°tÀ8ÐLÑLÔLˆÝ!Ø ¨HÀð
ñ 
ô 
ˆõ ˜g¨BÐ/Ñ/Ô/ˆ	Ý 7°¸$Ð?Ñ?Ô?ˆÝÝ˜F¨(Ð3Ñ3Ô3Ý˜V¨8Ð4Ñ4Ô4Ý˜6¨Ð2Ñ2Ô2Ý˜f¨HÐ5Ñ5Ô5ð	
ñ 
ô 
ˆð ˜EÒ!Ð!ð !Ð à )¨WÒ 4Ð 4�*�*¸)ð 	ð
 	�Š�wÑÔÐØ]¸Ð]Ð]Ð]ˆˆ4‰Ø"ˆˆ4ŒŒÝ&°(ÀXÐNÑNÔNˆˆ4ŒÔØ&(ˆÔ˜!ÔÔ#ð ð.Ø$ð.Ð<˜)Ð<Ð<°7Ð<Ð<Ð<à-ð 	ð
 	�Š�wÑÔÐàcÐWaÐcÐcð 	ˆ4‰ð !ˆˆ4ŒŒÝ&°(ÀXÐNÑNÔNˆˆ4ŒÔØ&(ˆÔ˜!ÔÔ#ð
ð 
ð 
ˆð  	�	Š	�"‰ŒˆØ
�	Š	�'ÑÔÐØ&(ˆÔ˜!ÔÔ#å˜Q¥ G¡¤¨qÑ 0Ñ1Ô1ð 	&ð 	&ˆGØ—7’7˜q¨�7Ñ1Ô1ˆDØ#ˆDŒIØ#ˆDŒIÝ&Ø#¨hÀ$ðñ ô ˆDŒNð &ˆDŒKˆKð ˆØˆ	Øˆ	å! (¨AÑ.Ô.ð '	Rñ '	R‰HˆC�Ø#&§7¢7¨;Ñ#7Ô#7¸8Ò#CÐ#C�i�iÈˆGÝ˜SŸWšWÐ%:¸AÑ>Ô>Ñ?Ô?ˆHÝ˜ŸšÐ 0°!Ñ4Ô4Ñ5Ô5ˆCÝ˜ŸšÐ 2°AÑ6Ô6Ñ7Ô7ˆCà˜hÑ&ˆNØ˜ÑˆIØ˜ÑˆIð ØÝ�C—G’G˜L¨"Ñ-Ô-Ñ.Ô.Ø—’˜¨Ñ-Ô-Ø—’Ð(¨"Ñ-Ô-Ø—’Ð(¨"Ñ-Ô-Ø—’Ð)¨2Ñ.Ô.Ø—’˜ rÑ*Ô*Ø—’Ð(¨"Ñ-Ô-Ø—’˜ bÑ)Ô)ØØØðˆHð �IŠI�hÑÔÐØ”jˆGØ02ˆBÔ˜gÔ&Ô-å  ¥C¨¡M¤M°AÑ$5Ñ6Ô6ð 
Rð 
R�Ø—G’G °�GÑ8Ô8�Ø"�”Ø&�”ØÐ6Ð6Ð6Ý"+°xÈ(Ð"SÑ"SÔ"S�A”K�KØ Ð,Ð,Ý"+°wÈÐ"RÑ"RÔ"R�A”KØ&-�A”O�Oå"+°vÈÐ"QÑ"QÔ"Q�A”K�Kñ
Rð œ* q™.ˆØ
�ŠØ%ØØ#Øð	 	ñ 	
ô 	
ð 	
ð —7’7Ø¨Ð1Sð ñ 
ô 
ˆð 'ˆŒÝ&°'ÀHÐMÑMÔMˆÔð "ð 	�ŠØ¨°.ð 	ñ 	
ô 	
ä
Ø7Eˆ�Š�O¨BˆÑ/Ô/Ô4ØQXˆ�Š�O¨B°iˆÑ@Ô@ÔNØ7Eˆ�Š�O¨BˆÑ/Ô/Ô4ØQXˆ�Š�O¨B°iˆÑ@Ô@ÔNØ7Eˆ�Š�O¨BˆÑ/Ô/Ô4å˜Q ‘|”|ð 	Nð 	NˆGØBMˆB�GŠG˜°ˆGÑ8Ô8Ô?Ð?ð HÐGÐGˆ
Ý! *¨aÑ0Ô0ð 	Eð 	E‰HˆAˆuØ?DˆBÔ Õ!2°1Ñ!5Ô!5Ô6Ô<Ð<åœ
™œˆØ
�Š�ÑÔÐØ×%Ò%Ñ'Ô'Ð'r1   )rJ   rK   rL   rM   r   r   )NNNNNNr”   rS   NNr•   NNFr–   )"r[   r   r\   r—   r]   r—   r˜   r—   r™   r—   rš   r—   rL   r›   r_   rœ   rR   r   rO   r—   rV   r—   r�   r   rž   r—   rŸ   r—   r    r!   r¡   r   r   rK   )r–   )r¸   r   r¡   r   r   rK   )r¸   r   r˜   r   r   rK   )r¸   r   r   r   )NNr  )r  r—   r  r—   r  r   r   r  )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r“   rå   ré   rÿ   r  rx  © r1   r/   rI   rI   e   sù   € € € € € ØlÐlð^ð ^ð ^ð ^ðF &*Ø$(Ø"&Ø"&Ø+/Ø-1Ø"%Ø'Ø%)Ø!%Ø%Ø Ø!%ØØ%ð#vð vð vð vð vðr 1=ð0ð 0ð 0ð 0ð 0ðd9
ð 9
ð 9
ð 9
ðvað að að aðJ !%Ø"Øð	h(ð h(ð h(ð h(ð h(ð h(ð h(r1   rI   )r   r   r   r   ) Ú
__future__r   r÷   r¾   rY  rÂ   Úloggingr   r   Údecimalr   r   Útypingr   Úopenpyxlr	   Úopenpyxl.stylesr
   r   r   r   r   Úopenpyxl.utilsr   Úcommonr   r   r   Ú	getLoggerÚloggerrG   rI   r}  r1   r/   ú<module>rˆ     sa  ðØ "Ð "Ð "Ð "Ð "Ð "Ø €€€ðð €€€Ø 	€	€	€	Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ ,Ð ,Ð ,Ð ,Ð ,Ð ,à TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tà	ˆÔ	Ð9Ñ	:Ô	:€ðIð Ið Ið IðXS(ð S(ð S(ð S(ð S(ñ S(ô S(ð S(ð S(ð S(r1   