Örnek 5
Senaryo :
Bugün alınan tüm siparişlerin pdf formatında tanımlı bir mail adresine gönderilmesi.
Örnekler diademo sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# -*- coding: utf-8 -*- ''' Örnek çalışma: Bugün alınan tüm siparişlerin belirli bir mail adresine e-posta olarak gönderilmesi. ''' import sys import json from pprint import pprint import urllib2 from datetime import datetime # 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 # iso formatta bugün tarihi bugun = datetime.now().strftime('%Y-%m-%d') # gönderilecek sabit mail adresi mailAdresi = "bilgi@dia.com.tr" 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 : Bugün girilen siparişleri bulalım # scf_siparis_listele servisine ilgili filtreyi uygulayarak alınan siparişleri alalım postBody = {"scf_siparis_listele" : {"session_id": session_id, "firma_kodu": firma_kodu, "donem_kodu": donem_kodu, "filters":[{"field": "tarih", "operator": "=", "value": bugun}, {"field": "turu", "operator": "=", "value": "2"}], # 1 alınan, 2 verilen "sorts": [{"field": "fisno", "sorttype": "ASC"}] } } wsResult = callWs(wsAdresMain + 'scf/json', postBody) siparislerResult = wsResult['result'] print u"%d adet sipariş bilgisi alındı" % len(siparislerResult) ############################################ # 3. AŞAMA : SİPARİŞLER ÇIKTILARINI ALALIM VE MAİL ATALIM if siparislerResult: # Siparişler için tek tek sipariş çıktısı raporunu çalıştıralım, alınan pdf datalarını # attachment olarak e-maile ekleyeceğiz attachments = [] for siparis in siparislerResult: postBody ={"rpr_raporsonuc_getir" : {"session_id": session_id, "firma_kodu": firma_kodu, "donem_kodu": donem_kodu, "report_code":"scf2201b", "tasarim_key": "1266", # sipariş tasarım key "param": {"_key": siparis['_key'], # sipariş _key "filtreler": [], "siralama":[], "gruplama":[] }, "format_type": "pdf" } } wsResult = callWs(wsAdresMain + 'rpr/json', postBody) attachments.append({"base64data": wsResult['result'], "mime": "text/plain", "name": u"%s_%s.pdf" % (siparis['fisno'], siparis['belgeno']) }) # İlgili mail adresine siparişler ekli halde mailimizi gönderelim. postBody = {"sis_eposta_gonder" : {"session_id": session_id, "firma_kodu": firma_kodu, "donem_kodu": donem_kodu, "sender": "bilgi@dia.com.tr", "cc": mailAdresi, "bcc": "", "subject": u"%s tarihinde alınan siparişler (test için dikkate almayın!)" % bugun, "body": u"%d adet sipariş alınmıştır. (test)" % len(siparislerResult), "attachments":attachments } } callWs(wsAdresMain + 'sis/json', postBody) print u"İşlem tamamlandı."