inquiry.py
4.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import sys
from datetime import datetime
from argparse import ArgumentParser
import transaction
from opensipkd.string.money import thousand
from opensipkd.waktu import date_from_str
from .common import init
help_tgl_bayar = 'format dd-mm-yyyy'
def show_val(label, value):
print('{}: {}'.format(label, value))
def show_rp(label, value):
show_val(label, 'Rp {}'.format(thousand(value)))
def show_field(t, fieldname):
label = 'Field ' + fieldname
try:
value = getattr(t, fieldname)
except AttributeError:
return
if isinstance(value, float):
show_rp(label, value)
else:
show_val(label, value)
def show_fields(row, fieldnames):
for fieldname in fieldnames:
show_field(row, fieldname)
def get_option(argv):
pars = ArgumentParser()
pars.add_argument('conf', help='File konfigurasi')
pars.add_argument('--invoice-id', required=True)
pars.add_argument('--tgl-bayar', help=help_tgl_bayar)
pars.add_argument('--payment', action='store_true')
pars.add_argument('--reversal', action='store_true')
return pars.parse_args(argv)
def show_payment_from_inquiry(inq):
pay = inq.get_payment()
if pay:
show_payment(pay)
def show_payment(pay):
print('Tabel {}:'.format(pay.__table__.name))
# Binjai
show_fields(
pay, ['id', 'jumlah_bayar', 'tanggal_bayar', 'user_bayar',
'kirim_bpn'])
# Kota Bekasi
show_fields(
pay, ['nop', 'ntpd', 'pembayaran_bphtb_ke', 'bphtb_dibayar',
'tgl_pembayaran_bphtb', 'nip_rekam_byr', 'reversal',
'tanggal_reversal'])
def show_inquiry(inq):
show_val('Invoice ID', inq.invoice_id)
show_val('Luas Tanah', inq.get_luas_tanah())
show_val('Luas Bangunan', inq.get_luas_bangunan())
show_rp('NPOP', inq.get_npop())
show_val('Jenis Perolehan Hak', inq.get_jenis_perolehan_hak())
show_val('Alamat Objek Pajak', inq.get_alamat_op())
show_val('Kelurahan Objek Pajak', inq.get_kelurahan_op())
show_val('Kecamatan Objek Pajak', inq.get_kecamatan_op())
show_val('Kota Objek Pajak', inq.get_kota_op())
show_val('NOP', inq.get_nop())
show_rp('Tagihan', inq.tagihan)
show_rp('Denda', inq.denda)
show_rp('Discount', inq.discount)
show_rp('Total Bayar', inq.total_bayar)
show_rp('Total Tagihan', inq.total)
show_val('Nama Notaris', inq.get_nama_notaris())
show_val('Nama Wajib Pajak', inq.get_nama())
show_val('NPWP', inq.get_npwp())
show_val('Alamat Wajib Pajak', inq.get_alamat_wp())
show_val('Kelurahan Wajib Pajak', inq.get_kelurahan_wp())
show_val('Kecamatan Wajib Pajak', inq.get_kecamatan_wp())
show_val('RT Wajib Pajak', inq.get_rt_wp())
show_val('RW Wajib Pajak', inq.get_rw_wp())
show_val('Kode Pos Wajib Pajak', inq.get_kode_pos_wp())
show_val('Kota Wajib Pajak', inq.get_kota_wp())
show_val('Tahun Pajak', inq.get_tahun())
show_val('Is Available', inq.is_available())
show_payment_from_inquiry(inq)
def error(s):
print(s)
sys.exit()
def main(argv=sys.argv):
option = get_option(argv[1:])
conf, services = init(option)
invoice_id = option.invoice_id
tgl_bayar = option.tgl_bayar and date_from_str(option.tgl_bayar)
inq = services.Inquiry(invoice_id, conf, tgl_bayar)
if not inq.invoice:
error(f'Invoice ID {invoice_id} tidak ada.')
show_inquiry(inq)
if option.payment:
if not inq.total:
error('Tidak ada tagihan, tidak ada yang perlu dibayar.')
if not inq.is_available():
error('Tagihan ini tidak bisa dibayarkan.')
ntb = datetime.now().strftime('%y%m%d%H%M%S')
with transaction.manager:
pay = inq.do_payment(ntb)
show_payment(pay)
print('Berhasil dibayar')
if option.reversal:
rev = services.Reversal(invoice_id)
pay = rev.payment
if not pay:
error(
'Pembayaran tidak ditemukan, tidak ada yang perlu dibatalkan.')
with transaction.manager:
rev.do_reversal()
show_payment(pay)
print('Berhasil dibatalkan')