Senaryo :
Ankara şehri, Sincan ilçesinde bulunan cariler için toplu borç dekontu (cari hesap fişi) oluşturulmak istenmektedir.
Örnekler diademo sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# -*- coding: utf-8 -*- ''' Örnek çalışma: Ankara, Sincandaki tüm carilere 150 TL alacak dekontu oluştur. ''' 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 : İŞLEM YAPILACAK CARİ KARTLARI TESBİT EDELİ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": "sehir", "operator": "=", "value": "ANKARA"}, {"field": "ilce", "operator": "=", "value": "Sincan"}], "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 : GELEN CARİLERİ İÇİN BORÇ DEKONTU OLUŞTURALIM # Oluşacak borç dekontu için uygun fiş numarasını bulalım. # sis_numara_getir servisi sıradaki numarayı getirir postBody = {"sis_numara_getir" : {"session_id": session_id, "firma_kodu": firma_kodu, "donem_kodu": donem_kodu, "table_name": "scf_carihesap_fisi", "column_name" : "fisno" } } wsResult = callWs(wsAdresMain + 'sis/json', postBody) fisNo = wsResult['result']['kod'] print u"Cari Hesap Fiş Numarası: %s" % fisNo # Önceden aldığımız cari hesap bilgilerini kullanarak # cari hesap fişi kalemlerini oluşturulım cariFisKalemleri = [] for cariKart in cariKartlarResult: cariFisKalemleri.append( { "_key_scf_carikart": cariKart['_key'], "_key_sis_doviz": {"adi": "TL"}, "_key_sis_doviz_raporlama": {"adi": "TL"}, "aciklama": "Aidat dekontu", "alacak": "0.00", "borc": "150.00", "dovizkuru": "1.00", "raporlamadovizkuru": "1.00", "vade": "2017-09-30" } ) # Cari hesap fişini ekleyelim. postBody = {"scf_carihesap_fisi_ekle" : {"session_id": session_id, "firma_kodu": firma_kodu, "donem_kodu": donem_kodu, "kart": { "_key_sis_sube": {"subekodu": "SUBE001"}, "aciklama1": "Aidat", "fisno": fisNo, "m_kalemler": cariFisKalemleri, "saat": "10:00:00", "tarih": "2017-09-30", "turu": "BD" } } } wsResult = callWs(wsAdresMain + 'scf/json', postBody) print u"Borç dekontu ekleme işlemi tamamlandı!"