3
bˁi                 @   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/gutschrift.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_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
_deal_with_country_orderId	_systemId)$r$   buffer	is_sogoodplatform_id
order_datetypetaxcustomerCompanycustomerTitlecustomerSurnamecustomerFirstnamecustomerStreetcustomerPostcodecustomerCitycustomerCountrycustomerMailcustomerTelephonepaymentMethodpaymentDetailspaidSumpaidTaxshippingMethodshippingDatails	soldItemscommentmemo_abdocNoshippingDatedocDateshow_customer_name_in_docvat_nr
arbeitsortdealWithcountryorderIdsystemIdr%   r%   r&   r!   b   sH      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d+| 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/d0t	 d0t	 }td1d0t	 d0t	 }td2d0t	 d0t	 }d3}d4}d5}| jrd6}d7}d8}| j%d9kr.d:}| j%d;kr>d<}| j%d=krNd>}| j&d?krf| jrfd@}g t||gg t||gg t||gg}dAt }t'|dBt	 dCt	 g|gt| dD}|j(t)dadHdbdet*j+fdIdfdidFt*j+fdmdqdvg dO}t||}dP}t||}d| _,| j,dkr4dQ|	| j-| j.| j/| j0f }ndR|	| j/| j.| j1| j,f }t||}||||g||||ggg}t'|dSt	 dTt dD} t)d{dddg}!| j(|! | j2|j3|j\}"}#| j||j3d |j |"d  |j|j dYt   t4d& dZ }$|j5t*j6 |j7d& |j8d[|$|"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.3zRechnungs-Nr.5zGutschrift Nr.:z<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 %s</b><br/>
                                    %s<br/>
                                    %s %s<br/>
                                    %s</font>
                                    z & 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>
                        z<font>
                        <b>Lager:</b>Gutenbergring1<br/>
                          63110 Rodgau, DE<br/>
                        <b>Tel.:</b>+49 6106 667585<br/>
                         <br/>
                        </font>z<font>
                <b>%s: </b>%s<br/>
                <b>Datum: </b>%s<br/>
                <b>Bezug auf Rechnung Nr.: </b>%s<br/>
                <b>Bestellnummer: </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   )9r   addr   r   r   printrI   rn   r   r   rg   
drawHeight	drawWidthdrawOn
leftMarginr   r#   bottomMarginrH   r   r9   rM   rc   _customer_shipping_company_customer_shipping_firstname_customer_shipping_surname_customer_shipping_Telephone_customer_shipping_street_customer_shipping_postcode_customer_shipping_city_customer_shipping_countryrP   rO   rQ   rR   rS   rT   re   rf   r   setStyler	   r   whiterd   rJ   rb   r`   ri   ra   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&   header%  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,d1g}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 )2z
        Footer on each page
                Runs demo demonstrating usage of Spreadsheet Tables.
        :param c: Canvas
        :param doc: SimpleDocTemplate
        r      r   )r   r   u   <font>
                        Amtsgelicht Offenbach<br/>
                        HRB 42229<br/>
                        <b>Geschäftsführer:</b> Wei Tao<br/>
                        </font>
                        z<font>
                      <b>Bankverbindung:</b> Commerzbank<br/>
                      <b>BLZ:</b> 50040000<br/>
                      <b>Konto:</b> 413058900<br/>
                      </font>
                      z<font>
                         <b>BIC:</b> COBADEFF004<br/>
                         <b>IBAN:</b> DE7250 040000 0413 0589 00<br/>
                         <b>USt-IdNr:</b> DE265808049<br/>
                         </font>
                         u   <font>
                             Amtsgelicht Offenbach<br/>
                             HRB 42229<br/>
                             <b>Geschäftsführer:</b> Shaoyan Huang<br/>
                             </font>
                             z<font>
                           <b>Bankverbindung:</b> Commerzbank<br/>
                           <b>BLZ:</b> 50080000<br/>
                           <b>Konto:</b> 0635289300<br/>
                           </font>
                           a  <font>
                              <b>BIC:</b> DRESDEFFXXX<br/>
                              <b>IBAN:</b> DE3350 080000 0635 2893 00<br/>
                              <b>USt-IdNr:</b> DE814341426<br/>
                              </font>
                              r   r   r   r   FONTSIZEr?   r   r   r   r   g@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&   footerG  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tdd d)}|jt||d  |jtdd* d+| j }|jt||d  |jtdd& | jrd,}nd-}|jt||d  | jd.kr| jdkr|jtdd/ |jtd0| j |d  d1}|jt||d  td2d3t d4t }|jtdd5 tj| j}|j }	|	d6 |	d7  }
|	d8 |	d  }d9}|t|
| }t|||d7d7|d7d7gd:}|j| ||gg}t||j|jgd;d<}|jtdJd?dKdNtj fdSdXd]dbdDdcdfd7tj fg |j|j!d7< |j| |jtdd& | jdkrH|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/ dES )gzC
        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Sehr geehrte Damen und Herrenr   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:u   vielen Dank für Ihre Bestellung und das uns entgegengebrachte Vertrauen.<br/>Wir stellen Ihnen hiermit folgende Gutschrift aus:r  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>Gutschrift</b></font>   z<font size=10><b>%s</b>,</font>rA   z<font size=10>%s</font>   z4<font size=10><b>Zahlungsmethode: (GOGSA)</b></font>   zw<font size=10>[Gutschrift] Die originale Afterbuy Order-ID: %s<br/>Die ware wurde schon an den Kunden versendet.</font>uB   <font size=10>Mit freundlichen Grüßen<br/>Ihr Sogood Team</font>uE   <font size=10>Mit freundlichen Grüßen<br/>Ihr Mai & Mai Team</font>Paypalr   z/<font size=10><b>Zahlungsmethode:</b> %s</font>z<font size=10><br/>Mit Paypal zahlen Sie mittels QR-Code schnell und sicher.<br/>Bitte scannen Sie den folgenden QR-Code:</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   r4  r5  r   )r   r   r   r   )r   r   r   r   r   r   r   r   )r   r6  r7  r   r   r   r   r   r   r   )r   r8  r9  r   r   r   r   r   r   r   )r2  r:  r;  r   r   r   r   r   r   r   )r3  r<  r=  r   )r   r   r   r   )r   r   )$r   r   r   r   r   r   rH   r4   r   rJ   rK   r   r   table1tableSumInforh   rI   rW   r   r   r   QrCodeWidgetrX   	getBoundsmaxr   r   r   r"   r   r	   r   r   _argWr^   r_   )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,99r.  r   z4% Rabatt auf Ihre Bestellungz-8,99r   z5% Rabatt auf Ihre Bestellungz-10,99BodyTextCJKr-  c                s   g | ]} fd d|D qS )c                s   g | ]}t | qS r%   )r   ).0cell)sr%   r&   
<listcomp>u  s    z4SogoodPrintable.table.<locals>.<listcomp>.<listcomp>r%   )rZ  row)r\  r%   r&   r]  u  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   s  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 ]x}g }|jt| |jd|d  d |d   | j dkr|jd* |jd | j dkr|jd+ |j| |d
7 }qVW d}d}g }|jt| |jd| d|  |jd| j d  |jd |jd| j d  |j| 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r|dkr|jt|| | n|t|d
 kr|jt|| | nd|t|d krD|jt|| | n<|t|d krl|jt|| | n|jt|| |	 n>|dks|dkr|jt|| | n|jt|| |	 qW |j| qW | j dkrt|ddddd gd!}nt|d"d#d$gd!}t|}td0d'd1d3d(tjfg}|dkrlx4td
|d
 D ]"}|jd'd|fd4|fd)tj qFW |jd'd|d
 fd5|d
 fd(tj |j| |S )6z]
        Runs demo demonstrating usage of Spreadsheet Tables.
        :return: Table
        r   z
<b>Pos</b>z<b>Artikelbezeichnung</b>z<b>Einzelpreis</b>z<b>Anzahl</b>z<b>Gesamtpreis</b>F)strictitemsr   z<b>r   z</b><br/>Artikelnummer: eanz0,00z EURr   ZGutschriftbetragZ
8888888888-r   rX  rY  r-  r   r   r.  r   i  F   r/  r  )r   r    i^  r@   r   CENTER	LINEBELOWg      ?g{Gz?z0,00 EURz0,00 EURr   r   r   r   r   r   )r   ro  rp  rm  )r   r   r   )r   r   r   r   )rH   r4   jsonloadsr]   strrY   r   rc  r   r   r   r   r   ranger9   r   r   r	   r   r   r   grayr   )r$   r   loaded_json
items_json	pos_countxr^  Zgutschrift_commentZgutschrift_eanr\  s_rights_centerrf  data_with_style_rowre  rg  new_rowr   ror%   r%   r&   r>  ~  s    












"$
zSogoodPrintable.table1c             C   s  g }d}ddd|d g}|j | t| jt| j }dddd| j| d g}|j | ddd| j d 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rb|j t|| | n|j t|| |
 q6W |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Versandkosten : z EURzZwischensumme : rk  zMwSt. z% : z<b>Gesamtsumme :</b>z<b>z EUR</b>rX  rY  r-     r         r@   r  )r   r   r   r   rm  rn  g{Gz?g      ?z<b>-r   r   r   r   r   r   )r   r  r  rm  )r  r   r   r  )r   r  r  r   )r  r   r   r   )r   r   )r4   floatrY   rZ   formatPricerL   r   rc  r   r   r   rightIndentr   rt  r9   r   r   r	   r   r   r   )r$   r   	sum_1_valsum_1	sum_2_valsum_2sum_3sum_4r\  rz  r{  rf  r^  r|  re  rg  r   r%   r%   r&   r?    sT    

&



zSogoodPrintable.tableSumInfoc             C   s:   t djt|}|jdd}|jdd}|jdd}|S )Nz	{:12,.2f},#.)rs  formatr  replace)r$   pp_newr%   r%   r&   r  U  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
        +   r`  )pagesizerightMarginr   	topMarginr   )onFirstPageonLaterPagescanvasmaker)
r   rG   r   rN  buildr  r  r/   getvalueclose)r$   r   rD  pdfr%   r%   r&   do]  s    


zSogoodPrintable.do)r+   r,   r-   r.   r!   r   r  r  r  rN  staticmethodr   r>  r?  r  r  r%   r%   r%   r&   rF   [   s"    D  $\  " DrF   )3r.   datetimerq  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.   $&