Ö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ı."