darsoarafa commited on
Commit
67dce92
·
verified ·
1 Parent(s): 46eddd9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -10
app.py CHANGED
@@ -46,10 +46,33 @@ def create_pdf(data, filename):
46
 
47
  # Tabel Produk
48
  elements.append(Paragraph("Daftar Produk yang Ditawarkan:", bold_style))
49
- table_data = [["Nama Produk", "Jumlah", "Harga (Rp)"]]
 
 
 
50
  for p in data['produk']:
51
- table_data.append([p['nama'], str(p['jumlah']), f"{p['harga']:,}"])
52
- table = Table(table_data)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  table.setStyle(TableStyle([
54
  ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
55
  ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
@@ -57,17 +80,19 @@ def create_pdf(data, filename):
57
  ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
58
  ('FONTSIZE', (0, 0), (-1, -1), 12),
59
  ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
60
- ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
61
  ('GRID', (0, 0), (-1, -1), 1, colors.black),
 
 
 
62
  ]))
 
 
 
 
63
  elements.append(table)
64
  elements.append(Spacer(1, 0.5*cm))
65
 
66
- # Diskon
67
- diskon_text = f"Diskon: {data['diskon']}%".format() if 'diskon' in data else "Diskon: Tidak ada"
68
- elements.append(Paragraph(diskon_text, normal_style))
69
- elements.append(Spacer(1, 0.5*cm))
70
-
71
  # Syarat dan Ketentuan
72
  syarat_text = f"Syarat dan Ketentuan:<br/>{data['syarat']}" if 'syarat' in data else "Syarat dan Ketentuan: Tidak ada"
73
  elements.append(Paragraph(syarat_text, normal_style))
@@ -107,7 +132,10 @@ def buat_penawaran(nama_prospek, alamat_prospek, jenis_prospek, produk_dipilih,
107
  data['produk'].append({'nama': "Produk Contoh", 'jumlah': 1, 'harga': 100000})
108
 
109
  if diskon:
110
- data['diskon'] = diskon
 
 
 
111
  if syarat:
112
  data['syarat'] = syarat
113
 
 
46
 
47
  # Tabel Produk
48
  elements.append(Paragraph("Daftar Produk yang Ditawarkan:", bold_style))
49
+
50
+ # Data tabel
51
+ table_data = [["Nama Produk", "Jumlah", "Harga (Rp)", "Total (Rp)"]]
52
+ sub_total = 0
53
  for p in data['produk']:
54
+ total = p['jumlah'] * p['harga']
55
+ sub_total += total
56
+ table_data.append([p['nama'], str(p['jumlah']), f"{p['harga']:,}", f"{total:,}"])
57
+
58
+ # Hitung diskon dan grand total
59
+ if 'diskon' in data and data['diskon']:
60
+ diskon_percent = float(data['diskon'])
61
+ diskon_amount = (diskon_percent / 100) * sub_total
62
+ grand_total = sub_total - diskon_amount
63
+ else:
64
+ diskon_percent = 0
65
+ diskon_amount = 0
66
+ grand_total = sub_total
67
+
68
+ # Tambahkan baris sub-total, diskon, dan grand total
69
+ table_data.append(["", "", "Sub-Total", f"{sub_total:,}"])
70
+ if diskon_percent > 0:
71
+ table_data.append(["", "", f"Diskon ({diskon_percent}%)", f"-{diskon_amount:,}"])
72
+ table_data.append(["", "", "Grand Total", f"{grand_total:,}"])
73
+
74
+ # Buat tabel
75
+ table = Table(table_data, colWidths=[6*cm, 2*cm, 3*cm, 3*cm])
76
  table.setStyle(TableStyle([
77
  ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
78
  ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
 
80
  ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
81
  ('FONTSIZE', (0, 0), (-1, -1), 12),
82
  ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
83
+ ('BACKGROUND', (0, 1), (-1, -3), colors.beige),
84
  ('GRID', (0, 0), (-1, -1), 1, colors.black),
85
+ ('SPAN', (0, -2), (1, -2)), # Span sub-total
86
+ ('SPAN', (0, -1), (1, -1)), # Span grand total
87
+ ('ALIGN', (2, -2), (3, -1), 'RIGHT'), # Align right for totals
88
  ]))
89
+ if diskon_percent > 0:
90
+ table.setStyle(TableStyle([
91
+ ('SPAN', (0, -3), (1, -3)), # Span diskon
92
+ ]))
93
  elements.append(table)
94
  elements.append(Spacer(1, 0.5*cm))
95
 
 
 
 
 
 
96
  # Syarat dan Ketentuan
97
  syarat_text = f"Syarat dan Ketentuan:<br/>{data['syarat']}" if 'syarat' in data else "Syarat dan Ketentuan: Tidak ada"
98
  elements.append(Paragraph(syarat_text, normal_style))
 
132
  data['produk'].append({'nama': "Produk Contoh", 'jumlah': 1, 'harga': 100000})
133
 
134
  if diskon:
135
+ try:
136
+ data['diskon'] = float(diskon)
137
+ except ValueError:
138
+ data['diskon'] = 0
139
  if syarat:
140
  data['syarat'] = syarat
141