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