İçindekiler

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