Commit 1f0aa88a by Owo Sugiana

Discount tagihan pokok untuk Tangerang Selatan

1 parent eef8497f
0.1.5 2020-06-30
----------------
- Discount tagihan pokok untuk Tangerang Selatan
0.1.4 2020-06-23
----------------
- Penambahan Tangerang Selatan
......
import sys
from datetime import date
from datetime import datetime
from configparser import ConfigParser
from optparse import OptionParser
import transaction
......@@ -20,7 +20,7 @@ def show_rp(label, value):
def date_from_str(s):
d, m, y = s.split('-')
return date(int(y), int(m), int(d))
return datetime(int(y), int(m), int(d))
def get_option(argv):
......@@ -49,6 +49,7 @@ def show(inq):
show_val('Jatuh Tempo', inq.get_jatuh_tempo())
show_val('Bulan Tunggakan', inq.bln_tunggakan)
show_val('Tahun Pajak', inq.get_tahun())
show_val('Status Pembayaran', inq.get_status_pembayaran())
if not inq.is_paid():
return
pay = inq.invoice2payment()
......
......@@ -197,6 +197,9 @@ class Inquiry(Query):
def get_luas_bangunan(self):
return self.invoice.luas_bng_sppt
def get_status_pembayaran(self):
return self.invoice.status_pembayaran_sppt
def is_paid(self):
return self.total < 1
......
......@@ -6,12 +6,20 @@ from ..base import (
)
from ..default import (
Inquiry as BaseInquiry,
Reversal,
Reversal as BaseReversal,
AvailableInvoice as BaseAvailableInvoice,
)
from .models import PembayaranSppt
AKHIR_DISC = date(2020, 12, 31)
PERIODE_DISC_POKOK = {
2020 : {
7: 0.15,
8: 0.1,
},
}
AKHIR_DISC_DENDA = date(2020, 12, 31)
THN_AWAL = 2014
THN_AKHIR = 2019
THN_DISC = []
......@@ -20,6 +28,21 @@ for i in range(THN_AWAL, THN_AKHIR+1):
class Inquiry(BaseInquiry):
def get_payment_model(self): # Override
return PembayaranSppt
def hitung_pokok(self): # Override
BaseInquiry.hitung_pokok(self)
self.discount_pokok = None
if self.tgl_bayar.year not in PERIODE_DISC_POKOK:
return
bulan_disc = PERIODE_DISC_POKOK[self.tgl_bayar.year]
if self.tgl_bayar.month not in bulan_disc:
return
disc = bulan_disc[self.tgl_bayar.month]
self.discount_pokok = disc * self.tagihan
self.tagihan -= self.discount_pokok
def belum_lunas_di_periode_discount(self):
DBSession = get_db_session()
Sppt = self.get_invoice_model()
......@@ -33,7 +56,7 @@ class Inquiry(BaseInquiry):
def hitung_denda(self): # Override
BaseInquiry.hitung_denda(self)
self.denda_sblm_diskon = self.denda
if self.tgl_bayar.date() > AKHIR_DISC:
if self.tgl_bayar.date() > AKHIR_DISC_DENDA:
return
if self.invoice.thn_pajak_sppt < str(THN_AWAL):
if self.belum_lunas_di_periode_discount():
......@@ -44,6 +67,12 @@ class Inquiry(BaseInquiry):
def before_save(self, bayar): # Override
bayar.denda_sblm_diskon = self.denda_sblm_diskon
bayar.discount_pokok = self.discount_pokok
class Reversal(BaseReversal):
def get_payment_model(self): # Override
return PembayaranSppt
class AvailableInvoice(BaseAvailableInvoice):
......@@ -63,6 +92,13 @@ class AvailableInvoiceTangsel(AvailableInvoice):
AvailableInvoice.__init__(self, persen_denda, option.count, option.tahun)
self.option = option
def get_msg(self, inq):
s = AvailableInvoice.get_msg(self, inq)
if not inq.discount_pokok:
return s
return '{}, Discount Pokok {}'.format(
s, thousand(inq.discount_pokok))
def get_filter(self, q): # Override
if self.option.discount_penuh:
DBSession = get_db_session()
......
from sqlalchemy import (
Column,
Float,
)
from sismiop.models.default import PembayaranSppt as BasePembayaranSppt
class PembayaranSppt(BasePembayaranSppt):
__table_args__ = dict(extend_existing=True)
discount_pokok = Column(Float)
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!