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)