47c374396d767c47913c7f57ed29ff993b53c9cd
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

1) # -* coding: utf8 *-
2) 
Bernd Wurst Python-3-Migration

Bernd Wurst authored 5 years ago

3) from __future__ import division
Bernd Wurst GiroCode auf den Rechnungen

Bernd Wurst authored 7 months ago

4) from Invoice import Text, Table, Image
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

5) from utils import format_price, split_to_width
6) 
7) 
8) def _breakLine(text, width=72):
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

9)     lines = []
10)     paras = text.split('\n')
11)     for para in paras:
12)         words = para.split(' ')
13)         while len(words) > 0:
14)             mywords = [words[0], ]
15)             del words[0]
16)             while len(words) > 0 and len(u' '.join(mywords) + ' ' + words[0]) <= width:
17)                 mywords.append(words[0])
18)                 del words[0]
19)             lines.append(' '.join(mywords))
20)     return lines
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

21) 
22) 
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

23) def InvoiceToText(iv, bankdata=True):
24)     ret = []
25)     ret.append(u'Rechnungsempfänger:')
26)     for line in iv.addresslines:
27)         ret.append('  %s' % line)
28)     ret.append('')
29)     ret.append('Kundennummer:    %4i' % iv.customerno)
30)     ret.append('Rechnungsnummer: %4i    Rechnungsdatum:  %s' % (iv.id, iv.date.strftime('%d.%m.%Y')))
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

31) 
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

32)     ret.append('')
33)     for part in iv.parts:
34)         if type(part) == Table:
35)             ret.append(InvoiceTableToText(part))
36)         elif type(part) == Text:
37)             ret.append(InvoiceTextToText(part))
Bernd Wurst GiroCode auf den Rechnungen

Bernd Wurst authored 7 months ago

38)         elif type(part) == Image:
39)             # ignore images
40)             pass
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

41)         else:
42)             raise NotImplementedError("Cannot handle part of type %s" % type(part))
Bernd Wurst Verstecke Bankdaten bei Rec...

Bernd Wurst authored 7 years ago

43) 
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

44)     if bankdata:
45)         ret.append('-' * 72)
46)         ret.append('Unsere Bankverbindung:')
47)         ret.append('Volksbank Backnang, BLZ 602 911 20, Konto-Nr. 41512 006')
48)         ret.append('IBAN: DE91602911200041512006, BIC: GENODES1VBK')
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

49) 
Bernd Wurst Python-3-anpassungen

Bernd Wurst authored 5 years ago

50)     return '\n'.join(ret)
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

51) 
52) 
53) def InvoiceTableToText(invoiceTable):
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

54)     ret = []
Bernd Wurst Innergemeinschaftliche Leis...

Bernd Wurst authored 12 years ago

55)     if len(invoiceTable.vat) < 2:
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

56)         ret.append(u'Anz       Beschreibung                                  Preis     Gesamt')
57)         ret.append(u'-' * 72)
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

58)     else:
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

59)         ret.append(u'Anz       Beschreibung                                Preis       Gesamt')
60)         ret.append(u'-' * 72)
61) 
62)     for el in invoiceTable.entries:
63)         unit = ''
64)         if el['unit']:
65)             unit = ' %s' % el['unit']
66)         if len(invoiceTable.vat) < 2:
67)             subject = _breakLine(el['subject'], width=39)
68)             ret.append(u'%5.2f %-3s %-39s  %10s %10s' % (el['count'], unit, subject[0], format_price(el['price']), format_price(el['total'])))
69)             for i in range(1, len(subject)):
70)                 ret.append(u'          %s' % subject[i])
71)         else:
72)             subject = _breakLine(el['subject'], width=41)
73)             ret.append(u'%5.2f %-3s %-37s  %10s %s %10s' % (el['count'], unit, subject[0], format_price(el['price']), invoiceTable.vat[el['vat']][1], format_price(el['total'])))
74)             for i in range(1, len(subject)):
75)                 ret.append(u'          %s' % subject[i])
76)         if 'desc' in el and el['desc']:
77)             desc = _breakLine(el['desc'], 39)
78)             for line in desc:
79)                 ret.append(u'          %s' % line)
80)     ret.append('-' * 72)
81)     if invoiceTable.vatType == 'gross':
82)         ret.append((u'Rechnungsbetrag:  %11s' % format_price(invoiceTable.sum)).rjust(72))
83)         ret.append('')
84)         summaries = []
85)         if len(invoiceTable.vat) == 1:
86)             vat = list(invoiceTable.vat.keys())[0]
87)             summaries.append(u'      Im Rechnungsbetrag sind %.1f%% MwSt enthalten (%s)' % (vat * 100, format_price((invoiceTable.sum / (vat + 1)) * vat)))
88)         else:
Bernd Wurst Python-3-Migration

Bernd Wurst authored 5 years ago

89)             for vat, vatdata in list(invoiceTable.vat.items()):
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

90)                 summaries.append(u'    %s: Im Teilbetrag von %s sind %.1f%% MwSt enthalten (%s)' % (vatdata[1], format_price(vatdata[0]), vat * 100, format_price((vatdata[0] / (vat + 1)) * vat)))
91)         summaries.sort()
92)         for line in summaries:
93)             ret.append(line)
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

94)     else:
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

95)         ret.append((u'Nettobetrag: %11s' % format_price(invoiceTable.sum)).rjust(72))
96)         summaries = []
97)         if len(invoiceTable.vat) == 1:
98)             vat = list(invoiceTable.vat.keys())[0]
99)             summaries.append((u'zzgl. %.1f%% MwSt: %11s' % (vat * 100, format_price(vat * invoiceTable.sum))).rjust(72))
100)         elif len(invoiceTable.vat) > 1:
Bernd Wurst Python-3-Migration

Bernd Wurst authored 5 years ago

101)             for vat, vatdata in list(invoiceTable.vat.items()):
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

102)                 summaries.append((u'zzgl. %4.1f%% MwSt (%s): %11s' % (vat * 100, vatdata[1], format_price(vat * vatdata[0]))).rjust(72))
103)         summaries.sort()
104)         for line in summaries:
105)             ret.append(line)
106)         sum = invoiceTable.sum
Bernd Wurst Python-3-Migration

Bernd Wurst authored 5 years ago

107)         for vat, vatdata in list(invoiceTable.vat.items()):
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

108)             sum += vat * vatdata[0]
109)         ret.append((u'Rechnungsbetrag: %11s' % format_price(sum)).rjust(72))
110)     ret.append('')
Bernd Wurst Python-3-anpassungen

Bernd Wurst authored 5 years ago

111)     return '\n'.join(ret)
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

112) 
113) 
114) def InvoiceTextToText(invoiceText):
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

115)     ret = []
116)     for par in invoiceText.paragraphs:
Bernd Wurst Python-3-anpassungen

Bernd Wurst authored 5 years ago

117)         for s in split_to_width(par, 72):
118)             ret.append(s)
Bernd Wurst automatische code-style-fixes

Bernd Wurst authored 5 years ago

119)         ret.append('')