Örnek 4
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ı."