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