Senaryo :
Belirli bir formatta barkod üretip stok kartına atama, örneğin: stok kodu (integer değeri) + kdv oranı + ean13 değeri. Örnekte sadece stok kart kodu 000010-000020 arasındaki kartlar için uygulanmıştır.
Örnekler diademo sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# -*- coding: utf-8 -*-
'''
Örnek çalışma:
Belirli bir formatta barkod üretip stok kartına atama, stok kodu integer değeri + kdv oranı + ean13 değeri.
Stok kart kodu: 000010-000020 arasındaki stoklar sadece
'''
import sys
import json
from pprint import pprint
import urllib2
import base64
# 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 : İlgili stokları bulalım
# scf_stokkart_listele servisine ilgili filtreyi uygulayarak stoğu alalım
postBody = {"scf_stokkart_listele" :
{"session_id": session_id,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"filters":[{"field": "stokkartkodu", "operator": ">=", "value": "000010"},
{"field": "stokkartkodu", "operator": "<=", "value": "000020"}]
}
}
wsResult = callWs(wsAdresMain + 'scf/json', postBody)
stokKartlarResult = wsResult['result']
print u"%d adet stok kart bilgisi alındı" % len(stokKartlarResult)
############################################
# 3. AŞAMA : STOK KARTLARINA BARKOD ATAMASI YAPALIM
for stokKarti in stokKartlarResult:
# stok kart kodu ve kdv satış ile başlayan uygun ean13 barkodu isteyelim.
postBody = {"scf_stokkart_barkod_uret" :
{"session_id": session_id,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"params": {"turu": "EAN13", "onnumara": "%d%d" %(int(stokKarti['stokkartkodu']), float(stokKarti['kdvsatis']))}
}
}
barkodResult = callWs(wsAdresMain + 'scf/json', postBody)
# Stok kartı ana birimine ilgili barkodu ekleyelim.
postBody = {"scf_stokkart_guncelle" :
{"session_id": session_id,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"kart":
{
"_key": stokKarti['_key'],
"m_birimler": [{
"_key": stokKarti['anabirimkey'], # sadece ana birimde çalışacağız
"m_barkodlar": [{
"barkod": barkodResult['msg'],
"teraziyegonder": "H",
"turu": "S"}]
}
]
}
}
}
callWs(wsAdresMain + 'scf/json', postBody)
print u"%s -> %s eklendi." % (stokKarti['stokkartkodu'], barkodResult['msg'])
print u"İşlem tamamlandı."