Örnek 13
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)