Senaryo :
Gün içerisinde restoranda satılan tüm mamüller için gün sonu üretim fişi ekleyelim.
Örnekler diadevdays sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# coding=utf-8
import simplejson
import base64
import urllib2
from datetime import datetime
from pprint import pprint
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)
uretimFisiKalemDict = {}
rstSiparisBody = {"rst_siparis_listele" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"filters": [{"field": "tarih", "operator": "=", "value": "2023-05-23"}],
"sorts": "",
"params": "",
"limit": 100,
"offset": 0
}
}
siparisResponse = callWs(wsAdresMain + 'rst/json', rstSiparisBody)
if siparisResponse.get('result'):
for siparisDetay in siparisResponse['result']:
rstSiparisGetirBody = {"rst_siparis_getir" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"key": siparisDetay.get('_key'),
"params": ""
}
}
sipDetayResponse = callWs(wsAdresMain + 'rst/json', rstSiparisGetirBody)
for sipKalem in sipDetayResponse['result']['m_kalemler']:
if sipKalem['_key_scf_stokkart']['stokkartturu'] == 'MML':
if sipKalem['_key_scf_stokkart']['_key'] not in uretimFisiKalemDict.keys():
uretimFisiKalemDict[sipKalem['_key_scf_stokkart']['_key']] = float(sipKalem['miktar'])
else:
uretimFisiKalemDict[sipKalem['_key_scf_stokkart']['_key']] += float(sipKalem['miktar'])
print(uretimFisiKalemDict)
stokListeleBody = {"scf_stokkart_listele" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"filters":[{"field": "_key", "operator": "IN", "value": ','.join(map(lambda x: str(x), uretimFisiKalemDict.keys()))}],
"sorts": [{"field": "stokkartkodu", "sorttype": "ASC"}],
"params": {"selectedcolumns": ["_key", "stokkartkodu", "anabirimkey"]},
"limit": 100,
"offset": 0
}
}
stokListeResponse = callWs(wsAdresMain +'scf/json', stokListeleBody)
pprint(stokListeResponse)
for stokkart in stokListeResponse['result']:
uretimFisiEkleBody = {"scf_uretim_fisi_ekle" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"kart": {
"_key_scf_stokkart": stokkart['_key'],
"_key_scf_stokkart_birimleri": stokkart['anabirimkey'],
"_key_sis_depo": {"depokodu": "BE001"},
"_key_sis_sube": {"subekodu": "BE001"},
"aciklama1": "23.05.2023 tarihli siparişler sonucu oluşan üretim fişi",
"aciklama2": "",
"aciklama3": "",
"fisno": "WS000001",
"m_kalemler": [],
"miktar": uretimFisiKalemDict[int(stokkart['_key'])],
"saat": datetime.now().strftime("%H:%M:%S"),
"tarih": "2023-05-23",
"tersuretim": "f",
"kalemleriHesapla": True
}
}
}
uretimFisResponse = callWs(wsAdresMain + 'scf/json', uretimFisiEkleBody)
pprint(uretimFisResponse)