Örnek 2
Senaryo :
Borcu 10000 TL üzerindeki carilere e-posta ile toplu ekstre gönderilmesi.
Örnekler diademo sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# -*- coding: utf-8 -*-
'''
Örnek çalışma:
Borcu 10000 TL üzeri olan carilere toplu cari hesap ekstresi atılması
'''
import sys
import json
from pprint import pprint
import urllib2
# servis çağrısı atılacak adres ön eki
wsAdresMain = 'https://diademo.ws.dia.com.tr/api/v3/'
# diademo sunucusundaki ilgili firma kodu
firma_kodu = 34
# diademo sunucusundaki ilgili dönem kodu
donem_kodu = 1
def callWs(wsAdres, postBody):
# Gönderilen adrese, gönderilen json çağrısı atar,
# sonuç başarılıysa döndürür, yoksa çıkar
req = urllib2.Request(wsAdres,
data=json.dumps(postBody),
headers={"Content-Type": "application/json"})
wsResult = urllib2.urlopen(req).read()
wsResult = json.loads(wsResult)
# sonuç kodu 200 döndüyse başarılı
if wsResult and wsResult['code'] == '200':
# msg içerisinde sessin id çıkaralım
return wsResult
else:
pprint(wsResult)
sys.exit(0)
############################################
# 1. AŞAMA : SESSION ID ALALIM
# login ws parametreleri
postBody = {"login" :
{"username": 'ws',
"password": 'ws',
"disconnect_same_user": True,
"lang": 'tr',
}
}
wsResult = callWs(wsAdresMain + 'sis/json', postBody)
session_id = wsResult['msg']
print "session_id: %s" % session_id
############################################
# 2. AŞAMA : BORCU 10000 TL den büyük carileri bulalım.
# scf_carikart_listele servisine ilgili filtreyi uygulayarak carileri alalım
postBody = {"scf_carikart_listele" :
{"session_id": session_id,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"filters": [{"field": "bakiye", "operator": ">", "value": "10000"},
{"field": "ba", "operator": "=", "value": "(B)"}],
"sorts": [{"field": "carikartkodu", "sorttype": "ASC"}],
"params": {},
"limit": 0,
"offset": 0
}
}
wsResult = callWs(wsAdresMain + 'scf/json', postBody)
cariKartlarResult = wsResult['result']
print u"Toplam %d adet cari bulundu" % len(cariKartlarResult)
############################################
# 3. AŞAMA : BORCU OLAN CARİLERE EKSTRELERİNİN GÖNDERİLMESİ
# Bulunan carilerde eposta adresi olanlar için
# cari hesap ekstresini alalım ve sonucunu e-posta olarak gönderelim.
for cariKart in cariKartlarResult:
if cariKart['eposta']:
# Cari ekstre raporunun pdf formatlı halini sunucudan alalım
postBody = {"rpr_raporsonuc_getir" :
{"session_id": session_id,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"report_code":"scf1110a",
"tasarim_key": "1202",
"param": {"_key": cariKart['_key'],
"tarihbaslangic": "2017-01-01",
"tarihbitis": "2017-12-31",
"tarihreferans": "2017-09-08",
"vadeyontem": "B",
"vadefarki": "0",
"__ekparametreler": ["acilisbakiyesi"],
"__fisturleri": [],
"_key_sis_sube": 0,
"_subeler": [],
"topluekstre": "False",
"tekniksformgoster": "False",
"baesitsegosterme": "False",
"filtreler": [],
"siralama":[],
"gruplama":[]
},
"format_type": "pdf"
}
}
cariEkstreResult = callWs(wsAdresMain + 'rpr/json', postBody)
#cariEkstreResult['result'] içerisinde rapor sonucu base64 encode edilmiş halde döner.
# Elimizdeki bilgileri kullanarak e-postamızı oluşturup gönderelim.
# attachments olarak da cari hesap ekstresini ekleyelim.
postBody = {"sis_eposta_gonder" :
{"session_id": session_id,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"sender": "bilgi@dia.com.tr",
"cc": cariKart['eposta'],
"bcc": "",
"subject": u"Cari ekstre (test amaçlı, dikkate almayın!)",
"body": u"Sayın %s, %.2f TL borcunuz bulunmaktadır, cari ekstre ektedir, bilginize. İyi Çalışmalar. (test!)" % (cariKart['unvan'], float(cariKart['bakiye']) ),
"attachments": [{"base64data": cariEkstreResult['result'],
"mime": "text/plain",
"name": "CariHesapEkstresi.pdf"
}]
}
}
callWs(wsAdresMain + 'sis/json', postBody)
print u"'%s' ünvanlı cariye eposta gönderildi. (Eposta Adresi:%s)" % (cariKart['unvan'], cariKart['eposta'])
else:
print u"DİKKAT: '%s' ünvanlı cariye eposta adresi tanımlanmamış!" % cariKart['unvan']
print u"İşlem tamamlandı."