pbb.py 2.59 KB
import logging
from datetime import datetime
import urllib3
from opensipkd.base.tools import get_random_number
from .pajak import Vendor as VendorClass
log = logging.getLogger(__name__)
urllib3.disable_warnings()


class Vendor(VendorClass):
    def __init__(self, vendor_produk, invoice_det):
        VendorClass.__init__(self, vendor_produk, invoice_det=invoice_det)
        self.inq_url = '{0}/pbbJson/inq'.format(self.url)
        self.pay_url = '{0}/pbbJson/pay'.format(self.url)

    def inquiry_field(self):
        kini = datetime.now()
        date_settlement = kini.strftime("%m%d")
        nop = self.id_pel[:18]
        tahun = self.id_pel[-4:]

        return \
            {
                "noRef": get_random_number(6),
                "dateSettlement": date_settlement,
                "merchantType": "6025",
                "accountCurrency": "360",
                "terminalId": "02W010",
                "terminalName": "02W010",
                "terminalLoc": "Tangerang Selatan",
                "nop": nop,
                "tahunPajak": tahun,

            }

    def response_field(self):
        resp = self.response
        if resp["responseCode"] == "00":
            pokok = int(resp["tagihan"] or '0')
            denda = int(resp["denda"] or '0')
            disc_biller = int(resp["diskon"] or '0')
            sub_total = pokok + denda - disc_biller

            result = self.get_price(sub_total)
            admin = int(self.vendor_produk.produk.harga)
            # todo: cek kembali harga apakah wajar atau tidak
            #  adm_biller = int(resp["diskon"] or '0')
            #  jika harga admin biller > dari admin
            #  if self.amt_buy < sub_total+adm_biller:
            #     raise
            #  if admin < adm_biller:
            #     admin = adm_biller

            rincian = dict(
                pokok=pokok,
                denda=denda,
                discount=disc_biller,
                subtotal=sub_total,
                admin=admin,
                total=sub_total + admin,
                # code=resp["responseCode"],
                # message=resp["responseDesc"],
                nama=resp["nama"],
                alamat=resp["lokasi"],
                kelurahaan=resp["kelurahaan"],
                kecamatan=resp["kecamatan"],
                provinsi=resp["provinsi"],
                luas_bumi=int(resp["luasTanah"]),
                luas_bng=int(resp["luasBangunan"]),
                jatuh_tempo=resp["tanggalJatuhTempo"],
            )
            result.update(dict(rincian=rincian))
            return result

        else:
            return self.inquiry_error(resp)