3
w^j                 @   s>  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( ej)edd ej*ej+d G dd deZ,G dd de j-Z.G dd dZ/d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uspsZ
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/letter.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   8   s    zNumberedCanvas.__init__N)r$   c             C   s   | j jt| j | j  dS )z
        Show page
        N)r.   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)	lenr.   r3   updatedraw_page_numberr   r-   r5   save)r!   	num_pagesstater"   r"   r#   r9   C   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!   Z
page_countr"   r"   r#   r8   N   s    
zNumberedCanvas.draw_page_number)r(   r)   r*   r+   r   r5   r9   r8   r"   r"   r"   r#   r,   3   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_companyZ_customer_title_customer_surname_customer_firstname_customer_street_customer_postcode_customer_city_customer_countryZ_customer_mailZ_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_taxZ_shipping_methodZ_shiping_details_sold_items_comment_memo_ab_docNo_shippingDate_docDate_show_customer_name_in_doc_vat_nr_arbeitsort_customer_shipping_Telephone
_deal_with))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dealWithr"   r"   r#   r   `   sR     %zSogoodPrintable.__init__N)r$   c          	   C   sN  t  }|jtdtd |jtdtd d}| jr8d}t|dt dt }|j|j	|j
\}}|r|j||jdt  |j|j
 d	t   n |j||jdt  |j|j
  |rJtd
ddd}	td
ddtd}
d}| jdkrd}n2| jdkrd}n"| jdkrd}n| jdkrd}d}| jr(d}t||d
 }td|d
 }t| jdk rbt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 }nJ| jdkrd | j| j| j| j| j| jf }nd!| j| j| j| j | j!f }t||	}d"}| j"d#kr2d$}| j"d%krBd&}| j"d'krRd(}| j#d)krj| jrjd*}t||
}| j$d+krd,|| j%| j&| j'f }nd-|| j%| j&| j'| j$f }t||
}|||g||ggg}t(|d.t d/t d0}t)d?dDdIdNg}|j*| |j|j	|j
\}}|j||j	d |j |d  |j|j
 | d9t   d:S )Ozd
        Header on each page
        :param c: Canvas
        :param doc: SimpleDocTemplate
        ZJustify)name	alignmentZRightzimages/maimai.pngzimages/logo_pdf.pngg333333@grh|?   g?Normal	   r>   )r   fontSizeleading)r   r   r   r   zDokumenten-Nr.0zAngebots-Nr.1zBestell-Nr.2zLieferschein-Nr.3zRechnungs-Nr.zs<font size="7">
            <u>Mai & Mai GmbH - Gutenbergring 1 - 63110 Rodgau</u>
            </font>
            z<font size="7">
                    <u>Sogood GmbH - Gutenbergring 1 - 63110 Rodgau</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>
                        z<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>
                        aX  <font>
                          <b>Mai & Mai GmbH</b><br/>
                          Gutenbergring 1<br/>
                          63110 Rodgau<br/>
                          Tel.: +49 6106 6670592<br/>
                          www.doporro.com<br/>
                          <br/>
                          </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>
                    Z
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>
                     z<font>
                <b>%s: </b>%s<br/>
                <b>Datum: </b>%s<br/>
                <b>Lieferdatum: </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=   )	colWidths
rowHeightsFONTr   	HelveticaLEFTPADDING(   RIGHTPADDINGVALIGNTOPU   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   addr   r   r   rE   r   r   wrapr   bottomMargindrawOn
leftMarginr   r    rD   r   r6   rI   ra   rP   rR   rQ   rd   rS   rT   rU   rV   rK   rJ   rL   rM   rN   rO   rc   re   rb   r^   r`   r_   r   r	   setStyle)r!   cdocZis_first_pagestylesZlogoimwhZPaSt1ZPaSt2Zdoc_nr_titleZvendor_addr_inLineZvendor_addr_inLine_pZempty_row_between_addrs_pZcustomer_addrZcustomer_addr_pZvendor_addrZvendor_addr_pZdoc_infoZ
doc_info_pdatatablestyleZw1Zh1r"   r"   r#   header-  s    * 







	


zSogoodPrintable.headerc             C   s   dddddgdddd	d
gdddj dddgdddddgg}| jrzdddddgdddd	dgdddj dddgdddddgg}td5d:d?dDg}t|d)d*d+d,d-gd.t d/}|j| |j|j|j\}}|j	||j
| d0S )Ez
        Footer on each page
                Runs demo demonstrating usage of Spreadsheet Tables.
        :param c: Canvas
        :param doc: SimpleDocTemplate
        zMai & Mai GmbHzTelefon: +49 6106 6670592zAmtsgericht OffenbachzBankverbindung:zIBAN: DE7250 040000zGutenbergring 1zE-Mail: info@maimai24.dez	HRB 44229ZCommerzbankz0413 0589 00z63110 Rodgaur   u   Geschäftsführerin: Wei Taozutf-8zBLZ: 50040000zBIC: COBADEFF004ZDeutschlandzKonto: 413058900zUSt-IdNr: DE265808049zSogood International GmbHzTelefon: +49 6106 6667585zIBAN: DE3350 080000zE-Mail: info@sogood.dez	HRB 42229z0635 2893 00u    Geschäftsführer: Shaoyan HuangzBLZ: 50080000zBIC: DRESDEFFXXXzKonto: 635289300zUSt-IdNr: DE814341426r   r   r   r   FONTSIZEr<   ALIGNLEFTr   MIDDLEg/$V@g`")]@gOnB]@gV-U@g rV@g333333?)r   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   )encoderE   r	   r   r   r   r   r   r   r   r   )r!   r   r   r   r   r   r   r   r"   r"   r#   footer  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}| jdkr|jtdd n|jtdd | jdkr0d}n(| jdkrBd}n| jdkrTd }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' |jtd(| j |d  | jd)kr| jdkrd*}|jt||d  |jtdd$ td+d,t d-t }d.|_|j| tj| j}|j }|d, |d/  }	|d0 |d  }
td1dd2|	 d/d/d2|
 d/d/gd3}|j| |j| | jdkr@|jtdd d%| j }|jt||d  n:| jdkrz|jtdd d%| j }|jt||d  |jtdd' d4}|jt||d  |jtdd$ d5S )6zC
        write first page content
        :param elements:
        Z
MY_Justify   )r   r   r   ZMY_Right)r   r   Z	MY_CenterZMY_Head   zHelvetica-Bold)r   r   r   fontNamer   r   x   z$<font size=8>Auftrag %s am %s</font>r   Z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:   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>Rechnung</b></font>   z<font size=10>%s,</font>r>   z<font size=10>%s</font>      z/<font size=10><b>Zahlungsmethode:</b> %s</font>ZPaypalz{<font size=10>Mit Paypal zahlen Sie mittels QR-Code schnell und sicher.<br/>Bitte scannen Sie den folgenden QR-Code:</font>zimages/logo_paypal.pngr   g333333?r   r      -   g     `@)	transformuC   <font size=10>Mit freundlichen Grüßen<br/>Ihr Doporro Team</font>N)r   r   r   r   r   r   rD   r1   r   rF   rG   r   r   table1tableSumInforW   r   r   ZhAlignr   ZQrCodeWidgetrX   Z	getBoundsr   r\   r]   )r!   elementsr   ptextZletter_greetingZletter_textZi_p_logoZi_qrboundsr   r    Zi_qr_dr"   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   PosZEANArtikelbezeichnungZStammbezeichnungPAZPreisz%dZ4251242935322u'   ABLAUFGARNITUR SIPHON DUSCHTASSE Ø90MMzABLAUFGARNITUR AL02r   z8,99r   Z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CJK   c                s   g | ]} fd d|D qS )c                s   g | ]}t | qS r"   )r   ).0cell)sr"   r#   
<listcomp>  s    z4SogoodPrintable.table.<locals>.<listcomp>.<listcomp>r"   )r   row)r   r"   r#   r     s    z)SogoodPrintable.table.<locals>.<listcomp>r   P      Z   r   r   )r   Z	INNERGRIDg      ?BOX)r   r   r   r   )r   r   )r   r   r   r   )r   r   )r   wordWrapr   r   r	   r   blackr   )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 ]}g }|jt| |jd|d  d |d j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rR|dkr|jt|| |	 n|t|d
 kr|jt|| | nd|t|d kr|jt|| |	 n<|t|d kr<|jt|| | n|jt|| | n>|dksf|dkr||jt|| |	 n|jt|| | qW |
j| qzW | j dkrt|
dddddgd}nt|
dd d!gd}td*d$d+d.d%tjfg}|j| |S )/z]
        Runs demo demonstrating usage of Spreadsheet Tables.
        :return: Table
        r   r   r   ZEinzelpreisAnzahlZGesamtpreisF)strictitemsr   z<b>r   z</b><br/>Artikelnummer: eanZ42507553Z42512429Zpricez EURquantityr   r   r   r   r   r   r   i  F   <   )r   r   i^  r=   r   r   	LINEBELOWg      ?r   r   r   r   r   r   )r   r  r  r   )r   r   r   r   )r   r   )rD   r1   jsonloadsr[   strreplaceformatPricefloatr   r   r   r   r   r   r   ranger6   r   r   r	   r   r   r   )r!   r   loaded_json
items_json	pos_countxr   r   s_rights_centerr   data_with_style_rowr   r   r   r"   r"   r#   r     sv    

&

(


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	|_
t }	|	d }	d|	_d|	_t|	_
t }
|
d }
d|
_d|
_t|
_
g }xp|D ]h}g }xRtt|D ]B}|t|d krT|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Versandkosten : z EURzZwischensumme : zMwSt. z% : z<b>Gesamtsumme : </b>z<b>z EUR</b>r   r   r   r      r=   )r   r   r   r   r   r  g      ?g      ?r   r   r   r   r   r   )r   r  r  r   )r  r   r   r  )r   r  r  r   )r  r   r   r   )r   r   )r1   r
  rY   rZ   r	  rH   r   r   r   r   r   r   r   r  r6   r   r   r	   r   r   r   )r!   r   Z	sum_1_valZsum_1Z	sum_2_valZsum_2Zsum_3Zsum_4r   r  r  r   r   r  r   r   r   r"   r"   r#   r   L  sR    

"



zSogoodPrintable.tableSumInfoc             C   s:   t djt|}|jdd}|jdd}|jdd}|S )Nz	{:12,.2f},#.)r  formatr
  r  )r!   pZp_newr"   r"   r#   r	    s
    zSogoodPrintable.formatPricec             C   sR   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   )pagesizeZrightMarginr   Z	topMarginr   )ZonFirstPageZonLaterPagesZcanvasmaker)
r   rC   r   r   buildr   r   r,   getvalueclose)r!   r   r   pdfr"   r"   r#   do  s    



zSogoodPrintable.do)r(   r)   r*   r+   r   r   r   r   r   r   staticmethodr   r   r   r	  r"  r"   r"   r"   r#   rB   Y   s    N K*m" ?rB   )0r+   datetimer  localereportlab.libr   reportlab.lib.pagesizesr   Zreportlab.platypusr   r   r   r   r   r	   r
   Zreportlab.lib.stylesr   r   reportlab.lib.unitsr   r   reportlab.pdfbaser   Zreportlab.pdfbase.ttfontsr   Zreportlab.lib.enumsr   r   r   r   reportlab.pdfgenr   r   Zreportlab.graphics.barcoder   Zreportlab.graphics.shapesr   r   r   r   registerFont	setlocaleLC_ALLr   r-   r,   rB   r"   r"   r"   r#   <module>   s*   $&