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)