perizinan.py 2.16 KB
import sys
from argparse import ArgumentParser
from configparser import ConfigParser
from pprint import pprint
from datetime import datetime
from opensipkd.string.money import thousand
from ..perizinan import Inquiry


default_base_url = 'https://dtoptimis.bogorkab.go.id/api/v2/intg'

help_base_url = 'default ' + default_base_url


def get_option(argv):
    parser = ArgumentParser()
    parser.add_argument('conf')
    parser.add_argument('--invoice-id', required=True)
    parser.add_argument('--payment', action='store_true')
    parser.add_argument('--reversal', action='store_true')
    parser.add_argument('--ntb')
    parser.add_argument('--debug', action='store_true')
    return parser.parse_args(argv)


def show(label, value):
    print(f'{label}: {value}')


def show_money(label, value):
    v = thousand(value)
    s = f'Rp {v}'
    show(label, s)


def error(s):
    print(s)
    sys.exit()


def main(argv=sys.argv[1:]):
    option = get_option(argv)
    conf = ConfigParser()
    conf.read(option.conf)
    do_inquiry = not option.reversal
    inq = Inquiry(
            conf.get('main', 'base_url'), conf.get('main', 'username'),
            conf.get('main', 'password'), option.invoice_id, option.debug,
            do_inquiry=do_inquiry)
    if do_inquiry:
        if not inq.invoice:
            error(inq.resp)
        if option.debug:
            pprint(inq.resp)
        show('Nama Izin', inq.nama_izin())
        show('Kode Izin', inq.kode_izin())
        show('Jenis Layanan', inq.jenis_layanan())
        show('No Resi', inq.nomor_resi())
        show('Pemohon', inq.nama_wp())
        show('Lokasi', inq.lokasi())
        show_money('Tagihan', inq.tagihan)
        show_money('Denda', inq.denda)
        show_money('Total', inq.total)
    if option.payment:
        if option.ntb:
            ntb = option.ntb
        else:
            ntb = datetime.now().strftime('%Y%m%d%H%M%S')
        r = inq.do_payment(ntb)
        print('Payment Response:')
        pprint(r)
        show('NTP', inq.ntp())
    elif option.reversal:
        if not option.ntb:
            error('--ntb harus diisi')
        r = inq.do_reversal(option.ntb)
        print('Reversal Response:')
        pprint(r)