cron_payment_callback_pemda.py.bak
2.52 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
import sys
import os
import json
import requests
from sqlalchemy import create_engine
from sqlalchemy.sql import text
from datetime import date, datetime, timedelta
from pyramid.paster import (
setup_logging,
get_appsettings,
)
from sqlalchemy import func, and_, case
from sqlalchemy import create_engine, func, engine_from_config
from sqlalchemy.orm import (
scoped_session,
sessionmaker,
relationship,
backref
)
from sqlalchemy.ext.declarative import declarative_base
from esipkd.models.isipkd import (ARInvoice, ARSspd)
## python cron_payment_callback_pemda.py [/config.ini] [tahun]
if len(sys.argv) < 2:
raise Exception('CONFIG .ini Not Found.')
datenow = date.today()
configpath = sys.argv[1] # CONFIG .ini
tahunargs = (len(sys.argv) < 3) and datenow.year or sys.argv[2] # CONFIG tahun_id
settings = get_appsettings(configpath)
engine = engine_from_config(settings, 'sqlalchemy.')
engine.echo = True
DBSession = scoped_session(sessionmaker())
DBSession.configure(bind=engine)
Base = declarative_base()
def get_listkdbayar():
getdata = DBSession.query(ARInvoice.kode).select_from(ARSspd)\
.join(ARInvoice,ARInvoice.id==ARSspd.arinvoice_id)\
.filter(ARSspd.tahun_id == tahunargs,
ARSspd.ntb.notin_(['BJBQRIS','BJBVA']),
ARSspd.tgl_bayar >= datenow,
ARSspd.posted == 0).all()
list_kd_bayar = [d.kode for d in getdata]
return list_kd_bayar
def sendrpc(kd_bayar):
print('STARTING RPC CALLBACK PEMDA')
headers = {'Content-Type':'application/json'}
if not 'pemdaqris_url' in settings and not settings['pemdaqris_url']:
print('pemdaqris_url belum ada di settings')
raise Exception('pemdaqris_url belum ada di settings')
url = settings['pemdaqris_url']
try:
resp = requests.post(url=url,
data=json.dumps(dict(kd_bayar=kd_bayar)),
headers=headers,
verify=False)
print('Response RPC CALLBACK PEMDA : {}'.format(resp.content))
try:
jsonr = json.loads(resp.content)
if jsonr.get('success')==False:
raise Exception(jsonr.get('message'))
except Exception as err:
print(err)
raise Exception(err)
return True
except requests.exceptions.RequestException as err:
print('Error send BJBQRIS to pemda : {}'.format(err))
raise Exception(err)
def main():
for k in get_listkdbayar():
sendrpc(k)
main()