__init__.py 10.8 KB
# from tangsel.base.tools.api import JsonRpcInvalidData
# from tangsel.pbb.models import PbbDBSession, PembayaranSppt, Sppt, PenguranganCovid
# from pyramid_rpc.jsonrpc import jsonrpc_method
# from sqlalchemy import func, and_, literal_column
# from sqlalchemy.dialects import oracle
# from datetime import datetime, timedelta


# # PBB
# @jsonrpc_method(method='get_per_tanggal', endpoint='api-report-pbb')
# def get_per_tanggal(request, data):
#     """
#     Digunakan untuk mengambil data pembayaran untuk diolah menjadi
#     dashboard dan report pada aplikasi Merchant Report.
#     """

#     is_list = isinstance(data, list)
#     data_list = is_list and data or [data]
#     for data in data_list:
#         if not (('tanggal_awal' in data) or ('tanggal_akhir' in data) or ('partner_id' in data)
#                 or ('kd_kanwil' in data) or ('kd_kantor' in data) or ('kd_tp' in data) or ('is_discount' in data)):
#             raise JsonRpcInvalidData
#         print('ISI DATA >>')
#         print(data)

#     # Params
#     tgl_awal = data['tanggal_awal']
#     tgl_akhir = data['tanggal_akhir']
#     tgl_akhir = datetime.strptime(tgl_akhir,'%Y-%m-%d') + timedelta(days=1)
#     tgl_akhir = tgl_akhir.strftime('%Y-%m-%d')
#     partner_id = data['partner_id']
#     kd_kanwil = data['kd_kanwil']
#     kd_kantor = data['kd_kantor']
#     kd_tp = data['kd_tp']
#     is_discount = data['is_discount']

#     # Cek apakah menggunakan dialect oracle atau bukan
#     oracle_dialect = isinstance(PbbDBSession.get_bind().dialect, oracle.dialect)

#     join_thn_pajak_sppt = func.to_char(PembayaranSppt.thn_pajak_sppt) \
#         if oracle_dialect else PembayaranSppt.thn_pajak_sppt
#     order_by_tgl_pembayaran_sppt = func.to_char(PembayaranSppt.tgl_pembayaran_sppt, 'YYYY-MM-DD') \
#         if oracle_dialect else PembayaranSppt.tgl_pembayaran_sppt

#     # Query select
#     query = PbbDBSession.query(
#         # Sppt.kode.label('invoice_id'),
#         # Sppt.kode.label('invoice_no'),
#         PembayaranSppt.kd_propinsi,
#         PembayaranSppt.kd_dati2,
#         PembayaranSppt.kd_kecamatan,
#         PembayaranSppt.kd_kelurahan,
#         PembayaranSppt.kd_blok,
#         PembayaranSppt.no_urut,
#         PembayaranSppt.kd_jns_op,
#         PembayaranSppt.thn_pajak_sppt,
#         PembayaranSppt.pembayaran_sppt_ke,
#         Sppt.nm_wp_sppt.label('wp_nama'),
#         literal_column("'PBB'").label('jenis_pajak'),
#         func.to_char(PembayaranSppt.tgl_pembayaran_sppt, 'YYYY-MM-DD').label('tgl'),
#         func.to_char(PembayaranSppt.tgl_rekam_byr_sppt, 'YYYY-MM-DD hh24:mi:ss').label('jam'),
#         Sppt.pbb_yg_harus_dibayar_sppt.label('pokok'),
#         PembayaranSppt.denda_sppt.label('denda'),
#         (func.coalesce(PembayaranSppt.discount, 0) if is_discount else literal_column("0")).label('discount'),
#         PembayaranSppt.jml_sppt_yg_dibayar.label('bayar'),
#         literal_column("'-'").label('ntp'),
#         literal_column("'-'").label('ntb')
#     )

#     # Query join
#     query = query.join(Sppt, and_(
#         Sppt.kd_propinsi == PembayaranSppt.kd_propinsi,
#         Sppt.kd_dati2 == PembayaranSppt.kd_dati2,
#         Sppt.kd_kecamatan == PembayaranSppt.kd_kecamatan,
#         Sppt.kd_kelurahan == PembayaranSppt.kd_kelurahan,
#         Sppt.kd_blok == PembayaranSppt.kd_blok,
#         Sppt.no_urut == PembayaranSppt.no_urut,
#         Sppt.kd_jns_op == PembayaranSppt.kd_jns_op,
#         Sppt.thn_pajak_sppt == join_thn_pajak_sppt
#     ))

#     # Query filter
#     query = query.filter(
#         PembayaranSppt.tgl_pembayaran_sppt >= func.to_date(tgl_awal, 'yyyy-MM-dd'),
#         PembayaranSppt.tgl_pembayaran_sppt < func.to_date(tgl_akhir, 'yyyy-MM-dd'),
#         PembayaranSppt.kd_kanwil == kd_kanwil,
#         PembayaranSppt.kd_kantor == kd_kantor,
#         PembayaranSppt.kd_tp == kd_tp
#     )

#     # Query order
#     query = query.order_by(order_by_tgl_pembayaran_sppt)

#     # Generate result
#     result = []
#     for row in query.all():
#         # kondisi untuk kota bogor (3271-pbb)
#         bogor_diskon_denda = 0
#         bogor_diskon_bayar = 0
#         if (partner_id == 1):
#             diskon_bogor = PenguranganCovid.query() \
#                 .filter(PenguranganCovid.kd_propinsi == row.kd_propinsi,
#                         PenguranganCovid.kd_dati2 == row.kd_dati2,
#                         PenguranganCovid.kd_kecamatan == row.kd_kecamatan,
#                         PenguranganCovid.kd_kelurahan == row.kd_kelurahan,
#                         PenguranganCovid.kd_blok == row.kd_blok,
#                         PenguranganCovid.no_urut == row.no_urut,
#                         PenguranganCovid.kd_jns_op == row.kd_jns_op,
#                         PenguranganCovid.thn_pajak_sppt == row.thn_pajak_sppt,
#                         PenguranganCovid.pembayaran_sppt_ke == row.pembayaran_sppt_ke) \
#                 .first()
#             if diskon_bogor:
#                 bogor_diskon_denda = diskon_bogor.denda
#                 bogor_diskon_bayar = diskon_bogor.bayar

#         nop = "{}{}{}{}{}{}{}".format(
#             row.kd_propinsi, row.kd_dati2, row.kd_kecamatan, row.kd_kelurahan, row.kd_blok, row.no_urut, row.kd_jns_op)
#         nop_tnn = "{}{}".format(nop, row.thn_pajak_sppt)

#         dict_row = {}
#         dict_row['invoice_id'] = row.pembayaran_sppt_ke
#         dict_row['invoice_no'] = nop_tnn
#         dict_row['wp_nama'] = row.wp_nama
#         dict_row['jenis_pajak'] = row.jenis_pajak
#         dict_row['tgl'] = row.tgl
#         dict_row['jam'] = row.jam
#         dict_row['pokok'] = row.pokok
#         dict_row['denda'] = row.denda
#         dict_row['discount'] = row.discount
#         dict_row['bayar'] = row.bayar - float(bogor_diskon_bayar)
#         dict_row['ntp'] = row.ntp
#         dict_row['ntb'] = row.ntb
#         # additional
#         dict_row['partner_id'] = partner_id
#         result.append(dict_row)

#         print(f'### NOP: {nop_tnn}')
#         print(f'### POKOK: {row.pokok}, DENDA: {row.denda}, DISC: {row.discount}')
#         print(f'### DISC DENDA BGR: {bogor_diskon_denda}, DISC BAYAR BGR: {bogor_diskon_bayar}')
#         print(f'### BAYAR: {row.bayar}\n')

#     return dict(message="Sukses - %d data" % len(result), data=result)


# # PBB - Konversi dari func yang di api-pbb
# @jsonrpc_method(method='Xget_per_tanggal', endpoint='api-report-pbb')
# def Xget_per_tanggal(request, data):
#     """
#     Digunakan untuk mengambil data pembayaran untuk diolah menjadi
#     dashboard dan report pada aplikasi Merchant Report.
#     """
#     is_list = isinstance(data, list)
#     data_list = is_list and data or [data]
#     for data in data_list:
#         if not (('tanggal_awal' in data) or ('tanggal_akhir' in data)):
#             raise JsonRpcInvalidData
#         print('ISI DATA >>')
#         print(data)

#     # Params
#     tgl_awal = data['tanggal_awal']
#     tgl_akhir = data['tanggal_akhir']
#     partner_id = data['partner_id']
#     kd_kanwil = data['kd_kanwil']
#     kd_kantor = data['kd_kantor']
#     kd_tp = data['kd_tp']
#     is_discount = data['is_discount']

#     # Cek apakah menggunakan dialect oracle atau bukan
#     oracle_dialect = isinstance(PbbDBSession.get_bind().dialect, oracle.dialect)

#     join_thn_pajak_sppt = func.to_char(PembayaranSppt.thn_pajak_sppt) \
#         if oracle_dialect else PembayaranSppt.thn_pajak_sppt
#     order_by_tgl_pembayaran_sppt = func.to_char(PembayaranSppt.tgl_pembayaran_sppt, 'YYYY-MM-DD') \
#         if oracle_dialect else PembayaranSppt.tgl_pembayaran_sppt

#     # Query select
#     query = PbbDBSession.query(
#         # PembayaranSppt.id,
#         PembayaranSppt.kd_propinsi,
#         PembayaranSppt.kd_dati2,
#         PembayaranSppt.kd_kecamatan,
#         PembayaranSppt.kd_kelurahan,
#         PembayaranSppt.kd_blok,
#         PembayaranSppt.no_urut,
#         PembayaranSppt.kd_jns_op,
#         PembayaranSppt.thn_pajak_sppt,
#         PembayaranSppt.pembayaran_sppt_ke,
#         PembayaranSppt.kd_kanwil,
#         PembayaranSppt.kd_kantor,
#         PembayaranSppt.kd_tp,
#         Sppt.pbb_yg_harus_dibayar_sppt,
#         PembayaranSppt.denda_sppt,
#         PembayaranSppt.jml_sppt_yg_dibayar,
#         func.to_char(PembayaranSppt.tgl_pembayaran_sppt, 'YYYY-MM-DD').label('tgl_pembayaran_sppt'),
#         func.to_char(PembayaranSppt.tgl_rekam_byr_sppt, 'YYYY-MM-DD hh24:mi:ss').label('tgl_rekam_byr_sppt'),
#         PembayaranSppt.nip_rekam_byr_sppt,
#         Sppt.nm_wp_sppt.label('nama_wp'),
#         (func.coalesce(PembayaranSppt.discount, 0) if is_discount else 0).label('discount')
#     )

#     # Query join
#     query = query.join(Sppt, and_(
#         Sppt.kd_propinsi == PembayaranSppt.kd_propinsi,
#         Sppt.kd_dati2 == PembayaranSppt.kd_dati2,
#         Sppt.kd_kecamatan == PembayaranSppt.kd_kecamatan,
#         Sppt.kd_kelurahan == PembayaranSppt.kd_kelurahan,
#         Sppt.kd_blok == PembayaranSppt.kd_blok,
#         Sppt.no_urut == PembayaranSppt.no_urut,
#         Sppt.kd_jns_op == PembayaranSppt.kd_jns_op,
#         Sppt.thn_pajak_sppt == join_thn_pajak_sppt
#     ))

#     # Query filter
#     query = query.filter(
#         PembayaranSppt.tgl_pembayaran_sppt >= func.to_date(tgl_awal, 'yyyy-MM-dd'),
#         PembayaranSppt.tgl_pembayaran_sppt <= func.to_date(tgl_akhir, 'yyyy-MM-dd'),
#         PembayaranSppt.kd_kanwil == kd_kanwil,
#         PembayaranSppt.kd_kantor == kd_kantor,
#         PembayaranSppt.kd_tp == kd_tp
#     )

#     # Query order
#     query = query.order_by(order_by_tgl_pembayaran_sppt)

#     # Generate result
#     result = []
#     for row in query.all():
#         dict_row = {}
#         # dict_row['id_bayar'] = item.id
#         dict_row['kd_propinsi'] = row.kd_propinsi
#         dict_row['kd_dati2'] = row.kd_dati2
#         dict_row['kd_kecamatan'] = row.kd_kecamatan
#         dict_row['kd_kelurahan'] = row.kd_kelurahan
#         dict_row['kd_blok'] = row.kd_blok
#         dict_row['no_urut'] = row.no_urut
#         dict_row['kd_jns_op'] = row.kd_jns_op
#         dict_row['thn_pajak_sppt'] = row.thn_pajak_sppt
#         dict_row['pembayaran_sppt_ke'] = row.pembayaran_sppt_ke
#         dict_row['kd_kanwil'] = row.kd_kanwil
#         dict_row['kd_kantor'] = row.kd_kantor
#         dict_row['kd_tp'] = row.kd_tp
#         dict_row['pbb_yg_harus_dibayar_sppt'] = row.pbb_yg_harus_dibayar_sppt
#         dict_row['denda_sppt'] = row.denda_sppt
#         dict_row['jml_sppt_yg_dibayar'] = row.jml_sppt_yg_dibayar
#         dict_row['tgl_pembayaran_sppt'] = row.tgl_pembayaran_sppt
#         dict_row['tgl_rekam_byr_sppt'] = row.tgl_rekam_byr_sppt
#         dict_row['nip_rekam_byr_sppt'] = row.nip_rekam_byr_sppt
#         dict_row['nama_wp'] = row.nama_wp
#         dict_row['discount'] = row.discount
#         # additioinal
#         dict_row['partner_id'] = partner_id
#         result.append(dict_row)

#     return dict(message="Sukses - %d data" % len(result), data=result)