Senaryo :
Vade bakiye raporunu alıp, vadesi geçen tüm carilere e-posta gönderelim.
Örnekler diadevdays sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# coding=utf-8
import simplejson
import treq
import base64
import urllib2
from datetime import datetime
from pprint import pprint
wsAdresMain = 'https://diadevdays.ws.dia.com.tr/api/v3/'
firma_kodu = 4
donem_kodu = 1
apikey = "773f9085-9dc8-4f50-b34d-f7b56da33b5f"
def callWs(wsAdres, postBody):
try:
postBody = simplejson.dumps(postBody, cls=simplejson.JSONEncoder)
req = urllib2.Request(wsAdres,
data=postBody,
headers={"Content-Type": "application/json"})
content = urllib2.urlopen(req).read()
except Exception, e:
print("Exception: {}".format(repr(e)))
wsResult = simplejson.loads(content)
return wsResult
loginBody = {"login" :
{"username": "ws",
"password": "ws",
"disconnect_same_user": True,
"lang": "tr",
"params": {"apikey": apikey}
}
}
loginResult = callWs(wsAdresMain + 'sis/json', loginBody)
sessionID = loginResult['msg']
if not sessionID:
print("Login yapilamadi")
exit(0)
raporTasarimBody = {"rpr_tasarimlar_listele" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"filters":[{"field": "raporkodu", "operator": "=", "value": "scf1100b"},
{"field": "dil", "operator": "=", "value": "tr"}],
"sorts": "",
"params": "",
"limit": 1,
"offset": 0
}
}
tasarimResult = callWs(wsAdresMain + 'rpr/json', raporTasarimBody)
tasarimKey = tasarimResult['result'][0]['_key']
raporSonucBody = {"rpr_raporsonuc_getir" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"report_code":"scf1100b",
"tasarim_key": tasarimKey,
"param": {"hesaplamaturu": "Müşteri",
"tarihreferans": datetime.now().strftime('%Y-%m-%d'),
"tarihbitis": "2023-12-31",
"erkenfaiz": "0",
"gecfaiz": "0",
"ustIslemTuruKeys": [],
"_key_sis_sube": 0,
"_key_muh_masrafmerkezi": 0,
"_key_sis_doviz": 0,
"bakiyesiolmayan": "True",
"irsaliyeleriDahilEt": "False",
"teslimolmamissiparisler": "False",
"odenmeyentaksitler": "False",
"teminatlarigoster": "False",
"raporlamadovizinegorehesapla": "False",
"vadesigecenhareketdetayigoster": "False",
"vadesigelmeyenhareketdetayigoster": "False",
"baeslemeilekapananlarihesaplama": "False",
"malzemebaglantilari": "False",
"vadesigecenbakiye1": 0,
"vadesigecenbakiye2":999999999,
"filtreler": [{"filtreadi": "carikartkodu",
"filtreturu": "aralik",
"ilkdeger": "AL001",
"sondeger": "AL001",
"serbest": ""
}]
},
"format_type": "json"
}
}
raporSonucResult = callWs(wsAdresMain + 'rpr/json', raporSonucBody)
raporSonuc = raporSonucResult['result']
raporSonucData = base64.b64decode(raporSonuc)
raporSonucData = simplejson.loads(raporSonucData)
pprint(raporSonucData)
for raporSatir in raporSonucData['__rows']:
if raporSatir.get('vadesigecentutar'):
# mail gönder
cariGetirBody = {"scf_carikart_getir" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"key": raporSatir['_key_scf_carikart'],
"params": {"selectedcolumns": ['eposta']}
}
}
cariGetirResult = callWs(wsAdresMain + 'scf/json', cariGetirBody)
print("*** cariGetirResult: ", cariGetirResult)
cariEPosta = cariGetirResult['result']['eposta']
print("*** cariEPosta: ", cariEPosta)
vadeEkstreBody = {"rpr_raporsonuc_getir" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"report_code":"scf9014b",
"tasarim_key": "0",
"param": {"_key": raporSatir['_key_scf_carikart'],
"hesaplamaturu": "Müşteri",
"tarihreferans": "2023-05-25",
"erkenfaiz": "0",
"gecfaiz": "0",
"ustIslemTuruKeys": [],
"_key_sis_sube": 0,
"_key_muh_masrafmerkezi": 0,
"irsaliyeleriDahilEt": "False",
"teslimolmamissiparisler": "False",
"odenmeyentaksitler": "False",
"teminatlarigoster": "False",
"kapanmadurumunagoregrupla": "True",
"baeslemeilekapananlarihesaplama": "False",
"eslemelerigoster": "True",
"eslenmeyenlerigoster": "False",
"kapananlarigosterme": "False",
"malzemebaglantilari": "False",
"malzemeBaglantiKeys": []
},
"format_type": "pdf"
}
}
vadeEkstreResponse = callWs(wsAdresMain + 'rpr/json', vadeEkstreBody)
epostaGonderBody = {"sis_eposta_gonder" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"sender": senderEmail,
"cc": cariEPosta,
"bcc": "",
"subject": "Vade Ekstre Raporu",
"body": "Rapor sonucunuz ektedir",
"attachments": [{"base64data": vadeEkstreResponse['result'],
"mime": "application/pdf",
"name": "VadeEkstre"
}]
}
}
epostaGonderResult = callWs(wsAdresMain + 'sis/json', epostaGonderBody)
print("E-posta gonderildi")