Commit 8f19385b by Owo Sugiana

Tambah piutang retribusi

1 parent 31b46d12
build
dist
*egg-info
test.ini
......@@ -65,7 +65,17 @@ def clean_pad(d: dict):
clean_values(d, ['tgl'], to_date)
CLEANER = dict(pbb=clean_pbb, bphtb=clean_bphtb, pad=clean_pad)
def clean_retribusi(d: dict):
clean_values(d, ['id', 'denda', 'pokok', 'total_tagihan'], int)
clean_values(d, ['tanggal_jatuh_tempo'], to_date)
CLEANER = dict(
pbb=clean_pbb, bphtb=clean_bphtb, pad=clean_pad, retribusi=clean_retribusi)
class BaseError(Exception):
pass
class WebClient:
......@@ -87,19 +97,32 @@ class WebClient:
self.headers = {"Authorization": f"Bearer {token}"}
return r
def get_transaction_url(self, pajak: str) -> str:
return self.base_url + '/laporan/' + pajak
def send(
self, pajak: str, tgl_awal=date.today(),
tgl_akhir=date.today()) -> dict:
log = getLogger('send')
url = self.base_url + '/laporan/' + pajak
t_awal = tgl_awal.strftime('%Y-%m-%d')
t_akhir = tgl_akhir.strftime('%Y-%m-%d')
p = dict(
tanggal_dari=t_awal, tanggal_sampai=t_akhir, page=1, per_page=25)
p = dict(tanggal_dari=t_awal, tanggal_sampai=t_akhir)
return self.loop(pajak, p)
def get_cleaner_func(self, pajak: str):
return CLEANER[pajak]
def loop(self, pajak: str, params: dict) -> list:
log = getLogger('send')
url = self.get_transaction_url(pajak)
p = dict(params)
p.update(dict(page=1, per_page=25))
r_all = []
while True:
log.info(f'Request GET {url} {p}')
r = requests.get(url, headers=self.headers, params=p, timeout=30)
log.info(f'Request GET {url} {params}')
r = requests.get(
url, headers=self.headers, params=p, timeout=30)
if r.status_code != 200:
raise BaseError(f'HTTP Error {r.status_code}')
r = r.json()
if not r['data']:
log.info(f'Response {r}')
......@@ -112,7 +135,7 @@ class WebClient:
break
p['page'] += 1
result = []
func_cleaner = CLEANER[pajak]
func_cleaner = self.get_cleaner_func(pajak)
for d in r_all:
func_cleaner(d)
result.append(d)
......
from datetime import date
from . import (
WebClient,
to_date,
clean_values,
)
def cleaner(d: dict):
clean_values(d, ['id', 'denda', 'pokok', 'total_tagihan'], int)
clean_values(d, ['tanggal_jatuh_tempo'], to_date)
class Piutang(WebClient):
def get_transaction_url(self, *args, **kwargs): # Override
return self.base_url + '/laporan/piutang'
def get_cleaner_func(self, *args, **kwargs): # Override
return cleaner
def send(
self, pajak: str, tgl_awal=date.today(),
tgl_akhir=date.today()) -> dict: # Override
t_awal = tgl_awal.strftime('%Y-%m-%d')
t_akhir = tgl_akhir.strftime('%Y-%m-%d')
tahun = tgl_awal.year
p = dict(
jatuh_tempo_dari=t_awal, jatuh_tempo_sampai=t_akhir,
jenis_piutang=pajak, tahun_pajak=tahun, jenis_pajak=4)
return self.loop(pajak, p)
import sys
from datetime import (
datetime,
date,
)
from argparse import ArgumentParser
from configparser import ConfigParser
from pprint import pprint
from cirebon_kota_payment_report.piutang import Piutang
from .logger import setup_logging
def main(argv=sys.argv[1:]):
pajak = ['retribusi']
kini = date.today()
tgl = kini.strftime('%d-%m-%Y')
help_tgl = f'default {tgl}'
pars = ArgumentParser()
pars.add_argument('conf')
pars.add_argument('pajak', choices=pajak)
pars.add_argument('--tgl', default=tgl, help=help_tgl)
option = pars.parse_args(argv)
setup_logging(option.conf)
t = option.tgl.split(',')
tgl_awal = t[0]
if t[1:]:
tgl_akhir = t[1]
else:
tgl_akhir = tgl_awal
tgl_awal = datetime.strptime(tgl_awal, '%d-%m-%Y')
tgl_akhir = datetime.strptime(tgl_akhir, '%d-%m-%Y')
tgl_awal = tgl_awal.date()
tgl_akhir = tgl_akhir.date()
conf = ConfigParser()
conf.read(option.conf)
cf = dict(conf.items('main'))
client = Piutang()
r = client.login(cf['username'], cf['password'])
r = client.send(option.pajak, tgl_awal, tgl_akhir)
pprint(r)
count = len(r)
print(f'Ada {count} transaksi.')
......@@ -3,7 +3,7 @@ requires = ['setuptools >= 64']
[project]
name = 'cirebon-kota-web-service'
version = '0.1'
version = '0.2'
dependencies = [
'requests',
]
......@@ -21,3 +21,4 @@ classifiers = [
[project.scripts]
cirebon_kota_payment_report = 'cirebon_kota_payment_report.scripts.payment_report:main'
cirebon_kota_piutang = 'cirebon_kota_payment_report.scripts.piutang:main'
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!