bphtb.py 3.12 KB
import logging
import re
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()
"""
BPHTB
http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/inq
http://103.66.86.115:8989/interface-tangerang-1.0.0/bphtbJson/pay
"""


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

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

        return \
            {
                "noRef": get_random_number(6),
                "dateSettlement": date_settlement,
                "merchantType": "6014",
                "accountCurrency": "360",
                "terminalId": "02W001",
                "terminalName": "Mobile POS Tangsel",
                "terminalLoc": "Tangerang Selatan",
                "nop": nop,
                "nomerPermohonan": no_bayar,

            }

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

            result = self.get_price(sub_total)
            admin = int(self.vendor_produk.produk.harga)
            rincian = dict(
                pokok=pokok,
                denda=denda,
                discount=disc_biller,
                subtotal=sub_total,
                admin=admin,
                total=sub_total + admin,
                harga_pasar=int(resp["nilaiPasarObjekPajak"]),
                luas_bumi=int(resp["luasTanah"]),
                luas_bng=int(resp["luasBangunan"]),
                jenis_perolehan=resp["jenisPerolehanHak"],
                npwp=re.sub(r"\D", "", resp["nPWP"]),
                nm_wp=resp["namaWajibPajak"],
                alamat_wp=resp["alamatWajibPajak"],
                rt_wp=resp["rTWajibPajak"],
                rw_wp=resp["rWWajibPajak"],
                kelurahan_wp=resp["kelurahanWajibPajak"],
                kecamatan_wp=resp["kecamatanWajibPajak"],
                kota_wp=resp["kotaWajibPajak"],
                kode_pos_wp=re.sub(r"\D", "", resp["kodePosWajibPajak"]),
                alamat_op=resp["alamatObjekPajak"],
                kelurahan_op=resp["kelurahanObjekPajak"],
                kecamatan_op=resp["kecamatanObjekPajak"],
                jenis_sspd=resp["jenisSetoran"],
                thn_pajak=resp["tahunPajak"],
                nm_notaris=resp["namaNotaris"],
                # = resp["namaKCPBank": "",
                # = resp["nomorTransaksi": "",
                # = resp["responseDesc": "SUCCESS",
            )
            result.update(dict(rincian=rincian))
            return result

        else:
            return self.inquiry_error(resp)