Senaryo :
Bir sinema salonu olarak bilet alan müşterilere e-arşiv faturası kesip gönderelim.
Örnekler diadevdays sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# coding=utf-8
import simplejson
import treq
import base64
import urllib2
from datetime import datetime
wsAdresMain = 'https://diadevdays.ws.dia.com.tr/api/v3/'
firma_kodu = 4
donem_kodu = 1
apikey = "773f9085-9dc8-4f50-b34d-f7b56da33b5f"
def callWs(wsAdres, postBody):
try:
postBody = simplejson.dumps(postBody, cls=simplejson.JSONEncoder)
req = urllib2.Request(wsAdres,
data=postBody,
headers={"Content-Type": "application/json"})
content = urllib2.urlopen(req).read()
except Exception, e:
print("Exception: {}".format(repr(e)))
wsResult = simplejson.loads(content)
return wsResult
loginBody = {"login" :
{"username": "ws",
"password": "ws",
"disconnect_same_user": True,
"lang": "tr",
"params": {"apikey": apikey}
}
}
loginResult = callWs(wsAdresMain + 'sis/json', loginBody)
sessionID = loginResult['msg']
if not sessionID:
print("Login yapilamadi")
exit(0)
cariTelefonNo = raw_input("Telefon numarasi giriniz: ")
if not cariTelefonNo:
print("Telefon numarasi girilmelidir!")
exit(0)
cariListeleBody = {"scf_carikart_listele" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"filters":[{"field": "ceptel", "operator": "=", "value": cariTelefonNo}],
"sorts": [{"field": "carikartkodu", "sorttype": "DESC"}],
"params": {},
"limit": 1,
"offset": 0
}
}
cariListeResult = callWs(wsAdresMain + 'scf/json', cariListeleBody)
if cariListeResult is not None and cariListeResult.get('result') and len(cariListeResult['result']) > 0:
cariKey = cariListeResult['result'][0]['_key']
cariEPostaBilgi = cariListeResult['result'][0]['eposta']
else:
print("Cari bulunamadi!")
cariAdBilgi = raw_input("Ad soyad giriniz: ")
cariEPostaBilgi = raw_input("Mail adresi giriniz: ")
cariKodBody = {"sis_numara_getir" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"table_name": "scf_carikart",
"column_name" : "carikartkodu",
"template_type": "CARIKART_KODU",
"tarih": datetime.now().strftime('%Y-%m-%d'),
"statu": 1,
"on_eki": "",
"subekey": 0,
"depokey": 0,
"kasakey": 0,
"kategori": "",
"efaturasenaryosu": "",
"eirsaliyesenaryosu": "",
"esmmsenaryosu": ""
}
}
cariKodResult = callWs(wsAdresMain + 'sis/json', cariKodBody)
cariKartKodu = cariKodResult['result']['kod']
cariKartEkleBody = {"scf_carikart_ekle" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"kart":
{"carikartkodu": cariKartKodu,
"carikarttipi": "AL",
"carikayitturu": "KRLS",
"eposta": cariEPostaBilgi,
"m_adresler": [{
"adres1": "",
"adres2": "",
"adresadi": "Fatura Adresi",
"adrestipi": "F",
"anaadres": "1",
"ceptel": cariTelefonNo,
"fax": "",
"ilce": "ÇANKAYA",
"kayitturu": "SHS",
"koordinat_latitude": "0.000000",
"koordinat_longitude": "0.000000",
"ulkeno": "90",
"verginumarasi": "",
"yabanciuyruklu": "H"}],
"unvan": cariAdBilgi,
"verginumarasi": "1111111111",
"verilisnedeni": "",
"weburl": "",
"yabanciuyruklu": "f"}
}
}
cariEkleResult = callWs(wsAdresMain + 'scf/json', cariKartEkleBody)
print("* * * cariEkleResult: ", cariEkleResult)
cariKey = cariEkleResult['key']
hizmetListBody = {"scf_hizmetkart_listele" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"filters":[{"field": "hizmetkartkodu", "operator": "=", "value": "000017"}],
"sorts": "",
"params": {"birimisimleri": True},
"limit": 1,
"offset": 0
}
}
hizmetListResult = callWs(wsAdresMain + 'scf/json', hizmetListBody)
hizmetBirimKey = hizmetListResult['result'][0]['birimkeyleri'].split('|')[0]
faturaNoBody = {"sis_numara_getir" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"table_name": "scf_fatura",
"column_name" : "belgeno2",
"template_type": "FAT_S_FATURANO",
"tarih": datetime.now().strftime('%Y-%m-%d'),
"statu": 2,
"on_eki": "",
"subekey": 0,
"depokey": 0,
"kasakey": 0,
"kategori": "F",
"efaturasenaryosu": "3",
"eirsaliyesenaryosu": "",
"esmmsenaryosu": ""
}
}
faturaNoResult = callWs(wsAdresMain + 'sis/json', faturaNoBody)
print("* * * faturaNoResult: ", faturaNoResult)
faturaNo = faturaNoResult['result']['kod']
faturaEkleBody = {"scf_fatura_ekle":
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"kart":
{
"wsearsiventegratoreilet": True,
"_key_scf_carikart": cariKey,
"_key_scf_carikart_adresleri": {'_key_scf_carikart':cariKey},
"_key_scf_odeme_plani": {"kodu": "002"},
"_key_sis_depo_source": {"depokodu": "BE001"},
"_key_sis_doviz": {"adi": "TL"},
"_key_sis_doviz_raporlama": {"adi": "TL"},
"_key_sis_sube_source": {"subekodu": "BE001"},
"_key_krg_firma": {"kodu": "00000001"},
"aciklama1": "",
"belgeno": "000012",
"belgeno2": faturaNo,
"dovizkuru": "1.000000",
"earsivgonderimeposta": cariEPostaBilgi,
"earsivgonderimsekli": "E",
"earsivodemetarihi": datetime.now().strftime('%Y-%m-%d'),
"efatalias": "",
"efaturasenaryosu": "3",
"efaturatipkodu": "SATIS",
"efaturavergimuafiyetkodu": "",
"efaturavergimuafiyetsebebi": "",
"fisno": "WS000001",
"kargogonderimtarihi": datetime.now().strftime('%Y-%m-%d'),
"konsinyeurunfaturasi": "f",
"m_kalemler": [{
"_key_kalemturu": {"hizmetkartkodu": "000017", "aciklama": "Sinema Bileti"},
"_key_scf_kalem_birimleri": hizmetBirimKey,
"_key_scf_odeme_plani": {"kodu": "002"},
"_key_sis_depo_source": {"depokodu": "BE001"},
"_key_sis_doviz": {"adi": "TL"},
"anamiktar": "2.000000",
"birimfiyati": "50.000000",
"dovizkuru": "1.000000",
"kalemturu": "HZMT",
"kdv": "8.000000",
"kdvdurumu": "H",
"miktar": "2.000000",
"sirano": 10,
"yerelbirimfiyati": "50.000000"}],
"mustahsil_tamam": "f",
"odemeislemli": "t",
"raporlamadovizkuru": "1.000000",
"saat": datetime.now().strftime('%H:%M:%S'),
"sevkadresi1": "Üniversiteler Mh. ODTÜ Teknokent",
"sevkadresi2": "Silikon Blok",
"sevkadresi3": "Çankaya ANKARA",
"tarih": datetime.now().strftime('%Y-%m-%d'),
"turu": 2
}
}
}
faturaEkleResult = callWs(wsAdresMain + 'scf/json', faturaEkleBody)
print("* * * faturaEkleResult: ", faturaEkleResult)