İçindekiler

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