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