05d059c8aff273f6bc4f14e40892bab85bf6c6c3
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

1) # -* coding: utf8 *-
2) 
Bernd Wurst Umbenannt aber wieder in ko...

Bernd Wurst authored 16 years ago

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

Bernd Wurst authored 16 years ago

4) from utils import format_price, split_to_width
5) 
6) 
7) 
8) def _breakLine(text, width=72):
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
21)   
22) 
23) def InvoiceToText(iv):
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')))
31) 
32)   ret.append('')
33)   for part in iv.parts:
Bernd Wurst Umbenannt aber wieder in ko...

Bernd Wurst authored 16 years ago

34)     if type(part) == Table:
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

35)       ret.append(InvoiceTableToText(part))
Bernd Wurst Umbenannt aber wieder in ko...

Bernd Wurst authored 16 years ago

36)     elif type(part) == Text:
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

37)       ret.append(InvoiceTextToText(part))
38)     else:
39)       raise NotImplementedError("Cannot handle part of type %s" % type(part))
40) 
41) 
42)   ret.append('-'*72)
Bernd Wurst Bankverbindung ist nicht me...

Bernd Wurst authored 13 years ago

43)   ret.append('Unsere Bankverbindung:')
Bernd Wurst Neue Bankverbindung

Bernd Wurst authored 15 years ago

44)   ret.append('Volksbank Backnang, BLZ 602 911 20, Konto-Nr. 41512 006')
45)   ret.append('IBAN: DE91602911200041512006, BIC: GENODES1VBK')
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

46)   return ('\n'.join(ret)).encode('utf-8')
47) 
48) 
49) 
50) def InvoiceTableToText(invoiceTable):
51)   ret = []
Bernd Wurst Innergemeinschaftliche Leis...

Bernd Wurst authored 13 years ago

52)   if len(invoiceTable.vat) < 2:
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

53)     ret.append(u'Anz   Beschreibung                                      Preis     Gesamt')
54)     ret.append(u'-'*72)
55)   else:
56)     ret.append(u'Anz   Beschreibung                                    Preis       Gesamt')
57)     ret.append(u'-'*72)
58) 
59)   for el in invoiceTable.entries:
Bernd Wurst Innergemeinschaftliche Leis...

Bernd Wurst authored 13 years ago

60)     if len(invoiceTable.vat) < 2:
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

61)       subject = _breakLine(el['subject'], width=43)
62)       ret.append(u'%5.2f %-43s  %10s %10s' % (el['count'], subject[0], format_price(el['price']), format_price(el['total'])))
63)       for i in range(1,len(subject)):
64)         ret.append(u'      %s' % subject[i])
65)     else:
66)       subject = _breakLine(el['subject'], width=41)
67)       ret.append(u'%5.2f %-41s  %10s %s %10s' % (el['count'], subject[0], format_price(el['price']), invoiceTable.vat[el['vat']][1], format_price(el['total'])))
68)       for i in range(1,len(subject)):
69)         ret.append(u'      %s' % subject[i])
70)     if 'desc' in el and el['desc']:
71)       desc = _breakLine(el['desc'], 43)
72)       for line in desc:
73)         ret.append(u'      %s' % line)
74)   ret.append('-'*72)
75)   if invoiceTable.vatType == 'gross':
76)     ret.append((u'Rechnungsbetrag:  %11s' % format_price(invoiceTable.sum)).rjust(72))
77)     ret.append('')
78)     summaries = []
79)     if len(invoiceTable.vat) == 1:
80)       vat = invoiceTable.vat.keys()[0]
81)       summaries.append(u'      Im Rechnungsbetrag sind %.1f%% MwSt enthalten (%s)' % (vat*100, format_price((invoiceTable.sum/(vat+1))*vat)))
82)     else:
83)       for vat, vatdata in invoiceTable.vat.iteritems():
84)         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)))
85)     summaries.sort()
86)     for line in summaries:
87)       ret.append(line)
88)   else:
89)     ret.append((u'Nettobetrag: %11s' % format_price(invoiceTable.sum)).rjust(72))
90)     summaries = []
91)     if len(invoiceTable.vat) == 1:
92)       vat = invoiceTable.vat.keys()[0]
93)       summaries.append((u'zzgl. %.1f%% MwSt: %11s' % (vat*100, format_price(vat*invoiceTable.sum))).rjust(72))
Bernd Wurst Innergemeinschaftliche Leis...

Bernd Wurst authored 13 years ago

94)     elif len(invoiceTable.vat) > 1:
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

95)       for vat, vatdata in invoiceTable.vat.iteritems():
96)         summaries.append((u'zzgl. %4.1f%% MwSt (%s): %11s' % (vat*100, vatdata[1], format_price(vat*vatdata[0]))).rjust(72))
97)     summaries.sort()
98)     for line in summaries:
99)       ret.append(line)
Bernd Wurst Innergemeinschaftliche Leis...

Bernd Wurst authored 13 years ago

100)     sum = invoiceTable.sum
Bernd Wurst Struktur verändern (broken!)

Bernd Wurst authored 16 years ago

101)     for vat, vatdata in invoiceTable.vat.iteritems():
Bernd Wurst Innergemeinschaftliche Leis...

Bernd Wurst authored 13 years ago

102)       sum += vat*vatdata[0]