pajak.py
4.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
from sqlalchemy import (
Column, Integer, DateTime, ForeignKey, UniqueConstraint, String, SmallInteger,
Index, Float, func)
from sqlalchemy.orm import (
relationship
)
from sqlalchemy.schema import FetchedValue
from . import PAD_TABLE_ARGS, DefaultModel, Base
from . import (PjdlUsaha, PjdlRekening)
from . import (DBSession)
class PjdlPajak(Base, DefaultModel):
__tablename__ = 'pad_pajak'
__table_args__ = (
UniqueConstraint('rekening_id', 'rekeningkdsub'),
Index('pad_pajak_rekening_id_usaha_id_rekdenda_id_idx', 'rekening_id', 'usaha_id',
'rekdenda_id'),
PAD_TABLE_ARGS
)
id = Column(Integer, primary_key=True)
usaha_id = Column(ForeignKey(PjdlUsaha.id, onupdate='CASCADE'), nullable=False,
server_default=FetchedValue())
pajaknm = Column(String(100))
rekening_id = Column(ForeignKey(
PjdlRekening.id, onupdate='CASCADE'), nullable=False)
rekeningkdsub = Column(String(5), server_default=FetchedValue())
rekdenda_id = Column(Integer)
masapajak = Column(SmallInteger, nullable=False,
server_default=FetchedValue())
jatuhtempo = Column(SmallInteger, server_default=FetchedValue())
multiple = Column(SmallInteger, server_default=FetchedValue())
jalan_klas_id = Column(Integer)
tmt = Column(DateTime)
enabled = Column(SmallInteger)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
status_reklame_id = Column(Integer)
bahan_komponen = Column(String(255))
satuan_ukuran = Column(String(50))
biaya_pembuatan = Column(Float(53))
batas_min_masa_pajak = Column(String(50))
rekening = relationship('PjdlRekening', primaryjoin='PjdlPajak.rekening_id == PjdlRekening.id',
backref='pad_pajaks')
usaha = relationship('PjdlUsaha', primaryjoin='PjdlPajak.usaha_id == PjdlUsaha.id',
backref='pad_pajaks')
@classmethod
def query_nama(cls, nama):
return cls.query().filter(cls.pajaknm == nama)
@classmethod
def query_register(cls, order_field="pajaknm"):
return cls.query_from(columns=[cls.pajaknm.label('Nama Pajak'),
PjdlUsaha.usahanm.label('Nama Usaha'),
cls.enabled.label('Aktif')]). \
outerjoin(PjdlUsaha, PjdlUsaha.id == cls.usaha_id). \
order_by(getattr(cls, order_field))
@classmethod
def get_list(cls):
r = []
q = cls.query().order_by(cls.pajaknm)
for row in q:
g = (str(row.id), f"{row.pajaknm}")
r.append(g)
return r
@classmethod
def query_id(cls, id):
return cls.query().filter(cls.id == id)
@classmethod
def get_jatuhtempo(cls, usaha_id=None):
result = DBSession.query(func.max(cls.jatuhtempo)).\
filter_by(enabled=1).\
filter_by(usaha_id=usaha_id).scalar()
return result
class PjdlPajakTarif(Base, DefaultModel):
__tablename__ = 'pad_pajak_tarif'
__table_args__ = PAD_TABLE_ARGS
id = Column(Integer, primary_key=True)
pajak_id = Column(ForeignKey(PjdlPajak.id, ondelete=u'CASCADE', onupdate=u'CASCADE'),
nullable=False)
tarif = Column(Float(53))
opsen_tarif = Column(Float(53))
reklame = Column(Float(53), nullable=False, server_default=FetchedValue())
minomset = Column(Float(53), server_default=FetchedValue())
tmt = Column(DateTime)
enabled = Column(SmallInteger)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
pajak = relationship('PjdlPajak', primaryjoin='PjdlPajakTarif.pajak_id == PjdlPajak.id',
backref='padpajak_pad_pajak_tarifs')
@classmethod
def query_register(cls, order_field="pajak_id"):
return cls.query_from(columns=[PjdlPajak.pajaknm.label('Nama Pajak'),
cls.tarif, cls.minomset, cls.tmt,
cls.enabled.label('Status')]). \
outerjoin(PjdlPajak, PjdlPajak.id == cls.pajak_id). \
order_by(getattr(cls, order_field))
@classmethod
def get_list(cls, kecamatan_id=None):
r = []
q = cls.query(cls).order_by(cls.kelurahannm)
if kecamatan_id:
q.filter(cls.kecamatan_id == kecamatan_id)
for row in q:
g = (str(row.id), f"{row.kode}/ {row.nama}")
r.append(g)
return r