Commit d8fb0bcd by taufikyu

penambahan cron h2h callback pemda

1 parent 34d109a7
...@@ -448,6 +448,7 @@ class ARSspd(CommonModel, Base): ...@@ -448,6 +448,7 @@ class ARSspd(CommonModel, Base):
rekening_id = Column(Integer, nullable=True, default=0) rekening_id = Column(Integer, nullable=True, default=0)
rek_kode = Column(String(16)) rek_kode = Column(String(16))
rek_nama = Column(String(128)) rek_nama = Column(String(128))
posted_pemda = Column(SmallInteger, default=0) #untuk posting ke rpc pemda
arinvoices = relationship("ARInvoice", backref=backref('arsspds')) arinvoices = relationship("ARInvoice", backref=backref('arsspds'))
units = relationship("Unit", backref=backref('arsspds')) units = relationship("Unit", backref=backref('arsspds'))
......
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)
import logging
log = logging.getLogger('LOG CRON RPC PEMDA SCRIPTS')
if len(sys.argv) < 2:
raise Exception('CONFIG .ini Not Found.')
if len(sys.argv) < 3:
raise Exception('tahun Not Found.')
configpath = sys.argv[1] # CONFIG .ini
tahunargs = sys.argv[2] # CONFIG tahun_id
datenow = date.today()
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 = [kode for d in getdata]
return list_kd_bayar
def sendrpc(kd_bayar):
log.info('STARTING RPC CALLBACK PEMDA')
headers = {'Content-Type':'application/json'}
if not 'pemdaqris_url' in settings and not settings['pemdaqris_url']:
log.error('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)
log.info('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:
log.error(err)
raise Exception(err)
return True
except requests.exceptions.RequestException as err:
log.error('Error send BJBQRIS to pemda : {}'.format(err))
raise Exception(err)
def main():
for k in get_listkdbayar():
sendrpc(k)
main()
## python cron_payment_callback_pemda.py [/config.ini] [tahun]
...@@ -678,7 +678,7 @@ def sendrpc(request, kd_bayar): ...@@ -678,7 +678,7 @@ def sendrpc(request, kd_bayar):
headers = {'Content-Type':'application/json'} headers = {'Content-Type':'application/json'}
if not 'pemdava_url' in settings and not settings['pemdava_url']: if not 'pemdava_url' in settings and not settings['pemdava_url']:
log.error('pemdava_url belum ada di settings') log.error('pemdava_url belum ada di settings')
raise Exception('pemdava_url belum ada di settings') raise Exception('pemdava_url belum ada di settings')
url = settings['pemdava_url'] url = settings['pemdava_url']
try: try:
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!