3
9h                 @   sV  d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZm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 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'm(Z( ddl)m*Z* ddlm+Z+ ej,edd ej-ej.d G dd deZ/G dd de j0Z1G dd dZ2dS )z
 * @author Xiaobo Sun
 * created  on 23.06.2018
 * @copyright (C) 2018 Sogood International GmbH - all rights reserved
 * @licence
 * Unauthorized copying of this file, via any medium is strictly prohibited
 * Proprietary and confidential
    N)colors)A4)SimpleDocTemplate	ParagraphSpacerImageTable
TableStyleFlowable)getSampleStyleSheetParagraphStyle)inchcm)
pdfmetrics)TTFont)TA_RIGHT	TA_CENTERTA_LEFT
TA_JUSTIFY)canvas)mm)createBarcodeDrawing)Drawing)eanbcqrusps)KeepTogether)letter
DejaVuSanszfonts/DejaVuSans.ttfzde_DE.UTF-8c               @   s&   e Zd ZdZdd ZddddZdS )SampleFlowablezM
    Sample Flowable Usage
    Usage : elements.append(SampleFlowable())
    c             C   s   t j|  d| _d| _d S )N2   )r
   __init__widthheight)self r%   +/data/git/entellipy_wy/pdf/esgeneratepdf.pyr!   )   s    
zSampleFlowable.__init__N)returnc             C   s   | j jd| j| j| j dS )z
        Draw a line
        r   N)canvliner#   r"   )r$   r%   r%   r&   draw.   s    zSampleFlowable.draw)__name__
__module____qualname____doc__r!   r*   r%   r%   r%   r&   r   #   s   r   c               @   sB   e Zd ZdZdd ZddddZdddd	Zddd
dZdS )NumberedCanvasz%
    Page Number - Canvas Sample
    c             O   s   t jj| f|| g | _d S )N)r   Canvasr!   _saved_page_states)r$   argskwargsr%   r%   r&   r!   :   s    zNumberedCanvas.__init__N)r'   c             C   s   | j jt| j | j  dS )z
        Show page
        N)r1   appenddict__dict__
_startPage)r$   r%   r%   r&   showPage>   s    zNumberedCanvas.showPagec             C   sL   t | j}x0| jD ]&}| jj| | j| tjj|  qW tjj|  dS )z:
        Add page info to each page (page x of y)
        N)	lenr1   r6   updatedraw_page_numberr   r0   r8   save)r$   	num_pagesstater%   r%   r&   r<   E   s    

zNumberedCanvas.savec             C   s.   | j d | jdt dt d| j|f  dS )zI
        Draw page number
        :param page_count: page number
           d   
   z	%d von %dN)setFontSizedrawCentredStringr   _pageNumber)r$   
page_countr%   r%   r&   r;   P   s    
zNumberedCanvas.draw_page_number)r+   r,   r-   r.   r!   r8   r<   r;   r%   r%   r%   r&   r/   5   s
   r/   c               @   s   e Zd ZdZdd ZddddZdddd	Zddd
dZddddZddddZ	e
dd Zdd Zdd Zdd Zdd ZdS )SogoodPrintablez
    Main Class
    A4 is 210mm x 297mm, 8.27 x 11.69 inches. 1 inch is 72 points (not pixel)
    dimension 592 x 842 points
    c*       *      C   s   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _| | _|!| _ |"| _!|#| _"|$| _#|%| _$|&| _%|'| _&|(| _'|)| _(dS )u	  
        :param buffer:
        :param is_sogood: False
        :param platform_id(new): 9876543210 : if afterbuy-id available, else goodone-order id
        :param order_date(new): "25.06.2018 09:30:00" - new
        :param type(new): 0 Angebot, 1 Auftragsbestätigung, 2 Lieferschein, 3 Rechnung
        :param tax(new): 19
        :param customerCompany: "Muster International GmbH"
        :param customerTitle(new): "Herr"
        :param customerSurname: "Müller"
        :param customerFirstname: "Thomas"
        :param customerStreet: "Hans-Kohl-Str. 27"
        :param customerPostcode: "64646"
        :param customerCity: "Heppenheim"
        :param customerCountry: "Deutschland"
        :param customerMail: "thomas.müller@muster.de"
        :param customerTelephone: "+49 151 00000000"
        :param customerShippingCompany: "Muster International GmbH"
        :param customerShippingSurname: "Müller"
        :param customerShippingFirstname: "Thomas"
        :param customerShippingStreet: "Hans-Kohl-Str. 27"
        :param customerShippingPostcode: "64646"
        :param customerShippingCity: "Heppenheim"
        :param customerShippingCountry: "Deutschland"
        :param paymentMethod: "Paypal"
        :param paymentDetails: "http://url_to_qrcode"
        :param paidSum: "289.00"
        :param paidTax(new): "50.00"
        :param shippingMethod: "DHL/DPD/EkremTranksport"
        :param shippingDatails: "28.06.2018"
        :param soldItems:
             {"items":
              [
                {
                  "ean": "4250755330211",
                  "quantity": "1",
                  "price": "310.99",
                  "comment": "ECHT GLAS DUSCHE DUSCHABTRENNUNG DUSCHKABINE AUS SICHERHEITSGLAS RAVENNA17-2",
                  "tax": "19"
                 },
                {
                  "ean": "4250755304137",
                  "quantity": "3",
                  "price": "60.99",
                  "comment": "WC SITZ TOILETTENDECKEL KLODECKEL KLOBRILLE TOILETTENSITZ SOFTCLOSE WCD376",
                  "tax": "19"
                },
                {
                  "ean": "4250755323091",
                  "quantity": "1",
                  "price": "260.99",
                  "comment": "140x200 cm Design Walk-In Duschabtrennung Bremen1 in grauem Glas mit 4-eckigem Stabilisator BRAM2 <br/>
                             Breite (cm): 140 cm <br/>
                             Stabilisator: 4 - eckig (BRAM2)",
                  "tax": "19"
                },
                {
                  "ean": "4250755323091",
                  "quantity": "2",
                  "price": "520.99",
                  "comment": "LUXUS DUSCHE DUSCHWAND DUSCHABTRENNUNG AUS ECHTGLAS VARIABEL 80-120CM BREMEN 1s",
                  "tax": "19"
                },
                {
                  "ean": "4251242935322",
                  "quantity": "1",
                  "price": "109.99",
                  "comment": "ABLAUFGARNITUR SIPHON DUSCHTASSE Ø90MM <br/> ABLAUFLOCH GERUCHVERSCHLUSS AL02",
                  "tax": "19"
                },
                {
                  "ean": "4251242935322",
                  "quantity": "1",
                  "price": "29.95",
                  "comment": "Nano-M für Duschwand Wachbecken WC & <br/> Bildet SOGOOD",
                  "tax": "19"},
                {
                  "ean": "4251242935322",
                  "quantity": "1",
                  "price": "29.95",
                  "comment": "Nano-M für Duschwand Wachbecken WC & <br/> Bildet SOGOOD",
                  "tax": "19"
                 },
                {
                  "ean": "4251242935322",
                  "quantity": "1",
                  "price": "29.95",
                  "comment": "Nano-M für Duschwand Wachbecken WC & <br/> Bildet SOGOOD",
                  "tax": "19"
                },
                {
                  "ean": "4250755323527",
                  "quantity": "1",
                  "price": "329.95",
                  "comment": "Bremen2ms 90x200 cm 10 mm (BR10703MS 90)",
                  "tax": "19"
                },
                {
                  "ean": "4250755323091",
                  "quantity": "1",
                  "price": "260.99",
                  "comment": "140x200 cm Design Walk-In Duschabtrennung Bremen1 in grauem Glas mit 4-eckigem Stabilisator BRAM2 <br/>
                            Breite (cm): 140 cm <br/>
                            Stabilisator: 4 - eckig (BRAM2)",
                  "tax": "19"
                },
                {
                  "ean": "",
                  "quantity": "1",
                  "price": "-260.99",
                  "comment": "4% Rabatt auf Ihre Bestellung",
                  "tax": "19"
                },
                {
                  "ean": "",
                  "quantity": "1",
                  "price": "-300.99",
                  "comment": "5% Rabatt auf Ihre Bestellung",
                  "tax": "19"
                }
              ]
            }
        :param comment: "testing memo..."
        N))_buffer_type
_is_sogood_platform_id_order_date_tax_customer_company_customer_title_customer_surname_customer_firstname_customer_street_customer_postcode_customer_city_customer_country_customer_mail_customer_Telephone_customer_shipping_company_customer_shipping_surname_customer_shipping_firstname_customer_shipping_street_customer_shipping_postcode_customer_shipping_city_customer_shipping_country_payment_method_payment_details_payment_sum_payment_tax_shipping_method_shiping_details_sold_items_comment_memo_ab_docNo_shippingDate_docDate_show_customer_name_in_doc_vat_nr_arbeitsort_customer_shipping_Telephone
_deal_with_country)*r$   buffer	is_sogoodplatform_id
order_datetypetaxcustomerCompanycustomerTitlecustomerSurnamecustomerFirstnamecustomerStreetcustomerPostcodecustomerCitycustomerCountrycustomerMailcustomerTelephonecustomerShippingCompanycustomerShippingSurnamecustomerShippingFirstnamecustomerShippingStreetcustomerShippingPostcodecustomerShippingCitycustomerShippingCountrypaymentMethodpaymentDetailspaidSumpaidTaxshippingMethodshippingDatails	soldItemscommentmemo_abdocNoshippingDatedocDateshow_customer_name_in_docvat_nr
arbeitsortcustomerShippingTelephonedealWithcountryr%   r%   r&   r!   b   sT     &zSogoodPrintable.__init__N)r'   c       %      C   s*  t  }|jtdtd |jtdtd td| j dt| j  d}| jrft|dt	 dt	 }nd	}t|dt	 d
t	 }| j
dkrd}t|dt	 dt	 }dt	 |_dt	 |_|rtd n |j||jdt  |j|j  |r&tdddd}tdddtd}d}	| jdkrd}	nF| jdkr.d}	n4| jdkr@d}	n"| jdkrRd }	n| jd!krbd }	d"}
| jrrd#}
t|
|d }td$|d }t| jd%k rtd&|d }| jd'kr| jdkrd(| j| j| j| j| j| j| j| jf }n$d)| j| j| j | j!| j"| j#| j$f }n| jdkrBd*| j| j| j| j| j| jf }nvd+| jd,k	rV| jn| j| j!d,k	rl| j!n| j| j"d,k	r| j"n| j| j#d,k	r| j#n| j| j$d,k	r| j$n| jf }t||}td-d.t	 d.t	 }td/d.t	 d.t	 }td0d.t	 d.t	 }d1}d2}d3}| jrd4}d5}d6}| j%d7kr.d8}| j%d9kr>d:}| j%d;krNd<}| j&d=krf| jrfd>}g t||gg t||gg t||gg}d?t }t'|d@t	 dAt	 g|gt| dB}|j(t)d`dFdaddt*j+fdGdedhdDt*j+fdldpdug dM}t||}dN}| jrdO}t||}d| _,| j,dkr<dP|	| j-| j.| j/f }ndQ|	| j-| j.| j/| j,f }t||}||||g||||ggg}t'|dRt	 dSt dB} t)dzdddg}!| j(|! | j0|j1|j\}"}#| j||j1d |j |"d  |j|j dXt   t2d% dY }$|j3t*j4 |j5d% |j6dZ|$|"d[ |$ d,S )zd
        Header on each page
        :param c: Canvas
        :param doc: SimpleDocTemplate
        Justify)name	alignmentRightzself._is_sogood: z, type: zimages/sogood.pnggGz?g(\?zimages/newmaimai.pngg(\? zimages/logo_pdf.pngg333333@grh|?g      ?g      @is_first_page   Normal	      )r   fontSizeleading)r   r   r   r   zDokumenten-Nr.0zAngebots-Nr.1zBestell-Nr.2zLieferschein-Nr.3u   Número de factura4z<font size="7">
             <br/>
             <br/>
            <u> Mai & Mai GmbH,Albert-Einstein-Str.6,63128 Dietzenbach,DE</u>
            </font>
            z<font size="7" >
                    <br/>
                    <br/>
                    <u>Sogood International GmbH, Gutenbergring 1- 63110 Rodgau, DE</u>
                    </font>
                    z<font size="9"> <br/></font>   z<font size="9"></font>Yz<font>
                        <b>%s</b><br/>
                        %s %s<br/>
                        ( %s )<br/>
                        %s<br/>
                        %s %s<br/>
                        %s</font>
                        a  <font>
                                    <b>%s</b><br/>
                                    %s %s<br/>
                                    %s<br/>
                                    %s %s<br/>
                                    %s</font>
                                    z<font>
                        <b>%s</b><br/>
                        ( %s )<br/>
                        %s<br/>
                        %s %s<br/>
                        %s</font>
                        z<font>
                        <b>%s</b><br/>
                        %s<br/>
                        %s %s<br/>
                        %s</font>
                        Nzimages/phone.pngg333333?zimages/email.pngzimages/web.pngz
                   <font><img src="images/phone.png" width="12" height="12"/>
                   &nbsp;+49 6106 6670592</font>
                  z
                        <font><img src="images/email.png" width="12" height="12"/>
                        &nbsp;info@maimai24.de</font>
                       z
                        <font><img src="images/web.png" width="12" height="12"/>
                        &nbsp;www.maimai24.de</font>
                       z
                     <font><img src="images/phone.png" width="12" height="12"/>
                     &nbsp;+49 6106 6667585</font>
                    z
                            <font><img src="images/email.png" width="12" height="12"/>
                            &nbsp;info@sogood.de</font>
                             z
                              <font><img src="images/web.png" width="12" height="12"/>
                              &nbsp;www.sogood.de</font>
                           zShowroom-Gelnhausena  <font>
                          <b>Mai & Mai GmbH</b><br/>
                          Gutenbergring 1<br/>
                          63110 Rodgau<br/>
                          Tel.: +49 6106 667585<br/>
                          E-Mail: M.Oymak@doporro.de<br/>
                          www.doporro.com<br/>
                          <br/>
                          </font>
                          zShowroom-Heusenstammu  <font>
                          <b>Mai & Mai GmbH</b><br/>
                          Seligenstädter Grund 11<br/>
                          63150 Heusenstamm<br/>
                          Tel.: +49 6104 8023762<br/>
                          E-Mail: M.Oymak@doporro.de<br/>
                          www.doporro.com<br/>
                          <br/>
                          </font>
                          zShowroom-Dietzenbachah  <font>
                    <b>Mai & Mai GmbH</b><br/>
                    Albert-Einstein-Str. 6<br/>
                    63128 Dietzenbach<br/>
                    Tel.: +49 6074 9146769<br/>
                    E-Mail: M.Oymak@doporro.de<br/>
                    www.doporro.com<br/>
                    <br/>
                    </font>
                    
ersatzteila1  <font>
                    <b>Sogood international GmbH</b><br/>
                    Gutenbergring 1<br/>
                    63110 Rodgau<br/>
                    Tel.: +49 6106 6670592<br/>
                    www.sogood.de<br/>
                    <br/>
                    </font>
                    g      @g{Gz?g      ?)	colWidths
rowHeightsFONTr   	Helvetica
BACKGROUNDGRIDALIGNRIGHTLEFTVALIGNMIDDLEzz
                      <font size="9"> 
                      <br/>
                      </font>
                        u   <font>
                       <b>Almacén:</b>Gutenbergring 1<br/>
                           63110 Rodgau,DE<br/>
                        <b>Tel.:</b>+49 6106 6670592<br/>
                         <br/>
                        </font>z<font>
                            <br/>
                            <br/>
                            <b>Tel.:</b>+49 6106 6670592<br/>
                            <br/>
                            </font>z<font>
                <b>%s: </b>%s<br/>
                <b>Fecha: </b>%s<br/>
                <b>Fecha de entrega: </b>%s
                </font>z<font>
                <b>%s: </b>%s<br/>
                <b>Datum: </b>%s<br/>
                <b>Lieferdatum: </b>%s<br/><br/>
                <b>MwSt-Nr.(VAT): </b>%s
                </font>   r@   LEFTPADDING(   RIGHTPADDINGTOPU      r       r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   )r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )7r   addr   r   r   printrI   rt   r   r   ro   
drawHeight	drawWidthdrawOn
leftMarginr   r#   bottomMarginrH   r   r9   rM   rj   rW   rY   rX   rm   rZ   r[   r\   r]   rP   rO   rQ   rR   rS   rT   rl   rn   r   setStyler	   r   whiterk   rg   ri   rh   wrapr"   r   setStrokeColorblacksetLineWidthr)   )%r$   cdocr   styleslogoimPaSt1PaSt2doc_nr_titlevendor_addr_inLinevendor_addr_inLine_pempty_row_between_addrs_pcustomer_addrcustomer_addr_pim1im2im3tel
email_infoweb_infovendor_addrnew_data
row_height	new_tablenewInfo1vendor_new_info1newInfovendor_new_infodoc_info
doc_info_pdatatablestylew1h1line_yr%   r%   r&   header1  s    



 
	


	$




2
zSogoodPrintable.headerc             C   s6  t dddd}d}t||}d}t||}d}t||}	| jrhd}t||}d	}t||}d
}t||}	|g|g|	ggg}
td!d&d+d0g}dt dt dt g}t|
|dt d}|j| |j|j	|j
\}}|j||j|j|j
 dt   d|j d }|jtj |jd |j	d }|jd|d| | dS )1z
        Footer on each page
                Runs demo demonstrating usage of Spreadsheet Tables.
        :param c: Canvas
        :param doc: SimpleDocTemplate
        r      r   )r   r   z<font>
                            Amtsgelicht Offenbach<br/>
                            HRB 42229<br/>
                            <b>Director general:</b> Wei Tao<br/>
                            </font>
                            z<font>
                          <b>Banca:</b> Commerzbank<br/>
                          <b>BLZ:</b> 50040000<br/>
                          <b>Cuenta:</b> 413058900<br/>
                          </font>
                          u  <font>
                             <b>BIC:</b> COBADEFF004<br/>
                             <b>IBAN:</b> DE7250 040000 0413 0589 00<br/>
                             <b>Número de IVA:</b> DE265808049<br/>
                             </font>
                             a
  <font>
                                 Amtsgelicht Offenbach<br/>
                                 HRB 42229<br/>
                                 <b>Director general:</b> Shaoyan Huang<br/>
                                 </font>
                                 a  <font>
                               <b>Bankverbindung:</b> Commerzbank<br/>
                               <b>BLZ:</b> 50080000<br/>
                               <b>Cuenta:</b> 0635289300<br/>
                               </font>
                               u+  <font>
                                  <b>BIC:</b> DRESDEFFXXX<br/>
                                  <b>IBAN:</b> DE3350 080000 0635 2893 00<br/>
                                  <b>Número de IVA:</b> DE814341426<br/>
                                  </font>
                                  r   r   r   r   FONTSIZEr?   r   r   r   r   g333333@g      ?)r   r      P   0   r    Nr   r   r   r   r   r   )r   r  r  r   r   r   r   r   r   r   )r  r	  r
  r?   r   r   r   r   r   r   )r   r  r  r   r   r   r   r   r   r   )r   r  r  r   )r   r   rI   r	   r   r   r   r   r   r"   r   r   r   r#   r   _heightr   r   r   r   r)   )r$   r   r   normal_style
first_infofirst_info1two_info	two_info1
third_infothird_info1r   r   
col_widthsr   whr   
line_widthr%   r%   r&   footerZ  s<    






 

zSogoodPrintable.footerc             C   s.   |j   | j||d | j|| |j  dS )z[
        First Page
        :param c: Canvas
        :param doc: SimpleDocTemplate
        TN)	saveStater  r  restoreState)r$   r   r   r%   r%   r&   header_footer_first_page  s    z(SogoodPrintable.header_footer_first_pagec             C   s.   |j   | j||d | j|| |j  dS )z[
        First Page
        :param c: Canvas
        :param doc: SimpleDocTemplate
        FN)r  r  r  r  )r$   r   r   r%   r%   r&   header_footer_later_pages  s    z)SogoodPrintable.header_footer_later_pagesc             C   s
  t  }|jtdtdd |jtdtd |jtdtd |jtdtdd	d
 | jdkr|jtdd d| j	| j
f }|jt||d  |jtd| j	ddd d}d}| jdkrd}n.| jdkrd}n| jdkrd}n| jdkrd}d}| jdkr|jtdd n|jtdd |jtdd | jdkrDd }n(| jdkrVd!}n| jdkrhd"}nd#}|jt||d  |jtdd$ d%| }|jt||d  |jtdd& d'| }|jt||d  |jtdd( |j| j  | jdkr |jtdd |j| j  | jd)kr| jdkr|jtdd* |jtd+| j |d  d,}|jt||d  td-d.t d/t }|jtdd0 tj| j}|j }	|	d1 |	d2  }
|	d3 |	d  }d4}|t|
| }t|||d2d2|d2d2gd5}|j| ||gg}t||j|jgd6d7}|jtdEd:dFdItjfdNdSdXd]d?d^dad2tjfg |j|jd2< |j| |jtdd& | jdkr|jtdd d'| j  }|jt||d  n:| jdkr|jtdd d'| j! }|jt||d  |jtdd* d@S )bzC
        write first page content
        :param elements:
        
MY_Justify   )r   r   r   MY_Right)r   r   	MY_CenterMY_Head   zHelvetica-Bold)r   r   r   fontNamer   r   x   z$<font size=8>Auftrag %s am %s</font>r   Code128r   )valuer#   r"   zDamas y caballerosr   r   u^   herzlichen Dank für Ihre Anfrage.<br/>gerne unterbreiten wir Ihnen hiermit folgendes Angebot:r   u   vielen Dank für Ihre Bestellung. Wir freuen uns über Ihren Auftrag.<br/>Details entnehmen Sie bitte der folgenden Übersicht:u^   wir bedanken uns für die gute Zusammenarbeit und liefern Ihnen wie vereinbart folgende Waren:r   ut   vielen Dank für Ihre Bestellung und das uns entgegengebrachte Vertrauen.<br/>Wir berechnen Ihnen hiermit wie folgt:zqGracias por su pedido y la confianza que ha depositado en nosotros.<br/>Por la presente le cobramos lo siguiente:   s      z#<font size=20><b>Angebot</b></font>u0   <font size=20><b>Auftragsbestätigung</b></font>z(<font size=20><b>Lieferschein</b></font>z#<font size=20><b>Factura</b></font>   z<font size=10><b>%s</b>,</font>rA   z<font size=10>%s</font>   Paypalr   u/   <font size=10><b>Método de pago:</b> %s</font>u   <font size=10><br/> Con Paypal puedes pagar de forma rápida y segura mediante un código QR.<br/>Por favor escanee el siguiente código QR:</font>zimages/paypal.pngg333333?g?   r   r      <   )	transformr   )r   hAlignr   r   r   r   r   
TOPPADDINGBOTTOMPADDINGr   Nr   r   r   r   r   r   )r   r7  r8  r   )r   r   r   r   )r   r   r   r   r   r   r   r   )r   r9  r:  r   r   r   r   r   r   r   )r   r;  r<  r   r   r   r   r   r   r   )r5  r=  r>  r   r   r   r   r   r   r   )r6  r?  r@  r   )r   r   r   r   )r   r   )"r   r   r   r   r   r   rH   r4   r   rJ   rK   r   r   table1tableSumInfor^   r   r   r   QrCodeWidgetr_   	getBoundsmaxr   r   r   r"   r   r	   r   r   _argWre   rf   )r$   elementsr   r   ptextletter_greetingletter_texti_p_logoi_qrboundsr"   r#   qr_sizescale_factori_qr_dr   r   r%   r%   r&   write_content  s    	









zSogoodPrintable.write_contentc                 s   d} d}ddddddd	gd
| |  ddddddgd
| d  ddddddgd
| d  ddddddgd
| d  ddddddgg}t    d  d _d _ fdd |D }t|d!d"d#d$d%d%d&gd'}td(d+d.d)tjfd*d/d2d)tjfg}|j| |S )3z]
        Runs demo demonstrating usage of Spreadsheet Tables.
        :return: Table
        r   r   PosEANArtikelbezeichnungStammbezeichnungPAPreisz%d4251242935322u'   ABLAUFGARNITUR SIPHON DUSCHTASSE Ø90MMzABLAUFGARNITUR AL02r   z8,99r   4250755391915z140x200 cm Design Walk-In Duschabtrennung Bremen1 in grauem Glas mit 4-eckigem Stabilisator BRAM2                                     Breite (cm): 140 cm                                     Stabilisator: 4 - eckig (BRAM2)zBremen01VG 140 + MMBR2z288,99r1  r   z4% Rabatt auf Ihre Bestellungz-8,99r   z5% Rabatt auf Ihre Bestellungz-10,99BodyTextCJKr0  c                s   g | ]} fd d|D qS )c                s   g | ]}t | qS r%   )r   ).0cell)sr%   r&   
<listcomp>y  s    z4SogoodPrintable.table.<locals>.<listcomp>.<listcomp>r%   )r]  row)r_  r%   r&   r`  y  s    z)SogoodPrintable.table.<locals>.<listcomp>r   r     Z   r*  r    )r   	INNERGRIDg      ?BOX)r   r   r   r   )r   r   )r   r   r   r   )r   r   )r   wordWrapr   r   r	   r   r   r   )posir   data_with_styletr   r%   )r_  r&   r   `  s&    
zSogoodPrintable.tablec             C   sf  g }| j dkr$|jdddddg n|jdddg tj| jd	d
}|d }d}x|D ]}g }|jt| |jd|d  d |d   | j dkr|j| jt|d d  |j|d  | j dkr|j| jt|d t|d  d  |j| |d7 }qVW t }|d }d|_	d|_
t|_t }|d }d|_	d|_
t|_t }	|	d }	d|	_	d|	_
t|	_g }
x0|D ]&}g }xtt|D ]}| j dkrJ|dkr|jt|| |	 n|t|d kr|jt|| |	 nd|t|d kr|jt|| |	 n<|t|d kr4|jt|| |	 n|jt|| | n>|dks^|dkrt|jt|| |	 n|jt|| | qW |
j| qrW | j dkrt|
dddddgd}nt|
d d!d"gd}t|}td,d%d-d/d&tjfg}|dkr4x4td|d D ]"}|jd%d|fd0|fd'tj qW |jd%d|d fd1|d fd&tj |j| |S )2z]
        Runs demo demonstrating usage of Spreadsheet Tables.
        :return: Table
        r   z
<b>Pos</b>u   <b>Nombre del artículo</b>z<b>Precio unitario</b>z<b>Cantidad</b>z<b>Precio total</b>z<b>Artikelbezeichnung</b>z<b>Anzahl</b>F)strictitemsr   z<b>r   z</b><br/>ID del producto: eanpricez EURquantityr[  r\  r0  r   r   r1  r   i  F   r2  r  )r   r    i^  r@   r   CENTER	LINEBELOWg      ?g{Gz?r   r   r   r   r   r   )r   rs  rt  rq  )r   r   r   )r   r   r   r   )rH   r4   jsonloadsrd   strformatPricefloatr   rf  r   r   r   r   r   ranger9   r   r   r	   r   r   r   grayr   )r$   r   loaded_json
items_json	pos_countxra  r_  s_rights_centerri  data_with_style_rowrh  rj  new_rowr   ror%   r%   r&   rA    s    



(


"$
zSogoodPrintable.table1c             C   s  g }d}ddd|d g}|j | t| jt| j }ddd| j|d g}|j | ddd| j d | j| jd g}|j | dddd	| j| j d
 g}|j | t }|d }d|_d|_t	|_
d|_t }	|	d }	d|	_d|	_t	|	_
t }
|
d }
d|
_d|
_t|
_
g }xp|D ]h}g }xRtt|D ]B}|t|d krZ|j t|| | n|j t|| |
 q.W |j | qW t|ddddgd}td dd"d%dtjfdd(d+dtjfg}|j| |S ),zR
        This table show the sum info of the order
        :return: Table
        z0,00r   zGastos de envio : z EURzImporte sin impuestos :zIVA z% : z%<b>Importe incluyendo impuestos :</b>z<b>z EUR</b>r[  r\  r0     r      r+     r  )r   r   r   r   rq  rr  g{Gz?g      ?r   r   r   r   r   r   )r   r  r  rq  )r  r   r   r  )r   r  r  r   )r  r   r   r   )r   r   )r4   ry  r`   ra   rx  rL   r   rf  r   r   r   rightIndentr   rz  r9   r   r   r	   r   r   r   )r$   r   	sum_1_valsum_1	sum_2_valsum_2sum_3sum_4r_  r  r  ri  ra  r  rh  rj  r   r%   r%   r&   rB    sT    

"



zSogoodPrintable.tableSumInfoc             C   s:   t djt|}|jdd}|jdd}|jdd}|S )Nz	{:12,.2f},#.)rw  formatry  replace)r$   pp_newr%   r%   r&   rx  J  s
    zSogoodPrintable.formatPricec             C   sT   t | jtddddd}g }| j|| |j|| j| jtd | jj }| jj	  |S )zC
        Entry method of the class
        :rtype: BytesIO
        +   rc  )pagesizerightMarginr   	topMarginr   )onFirstPageonLaterPagescanvasmaker)
r   rG   r   rQ  buildr  r  r/   getvalueclose)r$   r   rG  pdfr%   r%   r&   doR  s    


zSogoodPrintable.do)r+   r,   r-   r.   r!   r  r  r  r  rQ  staticmethodr   rA  rB  rx  r  r%   r%   r%   r&   rF   [   s"    P  +\ " ErF   )3r.   datetimeru  localereportlab.libr   reportlab.lib.pagesizesr   reportlab.platypusr   r   r   r   r   r	   r
   reportlab.lib.stylesr   r   reportlab.lib.unitsr   r   reportlab.pdfbaser   reportlab.pdfbase.ttfontsr   reportlab.lib.enumsr   r   r   r   reportlab.pdfgenr   r   reportlab.graphics.barcoder   reportlab.graphics.shapesr   r   r   r   reportlab.platypus.doctemplater   r   registerFont	setlocaleLC_ALLr   r0   r/   rF   r%   r%   r%   r&   <module>   s.   $&