Senaryo :

Vade bakiye raporunu alıp, vadesi geçen tüm carilere e-posta gönderelim.

Örnekler diadevdays sunucusu üzerinde çalışmaktadır.

Örnek Kod (python):


# coding=utf-8
import simplejson
import treq
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)

raporTasarimBody = {"rpr_tasarimlar_listele" :
                {"session_id": sessionID,
                 "firma_kodu": firma_kodu,
                 "donem_kodu": donem_kodu,
                 "filters":[{"field": "raporkodu", "operator": "=", "value": "scf1100b"},
                                {"field": "dil", "operator": "=", "value": "tr"}],
                 "sorts": "",
                 "params": "",
                 "limit": 1,
                 "offset": 0
                }
            }
tasarimResult = callWs(wsAdresMain + 'rpr/json', raporTasarimBody)
tasarimKey = tasarimResult['result'][0]['_key']

raporSonucBody = {"rpr_raporsonuc_getir" :
                {"session_id": sessionID,
                 "firma_kodu": firma_kodu,
                 "donem_kodu": donem_kodu,
                 "report_code":"scf1100b",
                 "tasarim_key": tasarimKey,
                 "param":  {"hesaplamaturu": "Müşteri",
                            "tarihreferans": datetime.now().strftime('%Y-%m-%d'),
                            "tarihbitis": "2023-12-31",
                            "erkenfaiz": "0",
                            "gecfaiz": "0",
                            "ustIslemTuruKeys": [],
                            "_key_sis_sube": 0,
                            "_key_muh_masrafmerkezi": 0,
                            "_key_sis_doviz": 0,
                            "bakiyesiolmayan": "True",
                            "irsaliyeleriDahilEt": "False",
                            "teslimolmamissiparisler": "False",
                            "odenmeyentaksitler": "False",
                            "teminatlarigoster": "False",
                            "raporlamadovizinegorehesapla": "False",
                            "vadesigecenhareketdetayigoster": "False",
                            "vadesigelmeyenhareketdetayigoster": "False",
                            "baeslemeilekapananlarihesaplama": "False",
                            "malzemebaglantilari": "False",
                            "vadesigecenbakiye1": 0,
                            "vadesigecenbakiye2":999999999,
                            "filtreler": [{"filtreadi": "carikartkodu",
                                          "filtreturu": "aralik",
                                          "ilkdeger": "AL001",
                                          "sondeger": "AL001",
                                          "serbest": ""
                                         }]
                            },
                 "format_type": "json"
                }
            }

raporSonucResult = callWs(wsAdresMain + 'rpr/json', raporSonucBody)

raporSonuc = raporSonucResult['result']
raporSonucData = base64.b64decode(raporSonuc)
raporSonucData = simplejson.loads(raporSonucData)
pprint(raporSonucData)
for raporSatir in raporSonucData['__rows']:
    if raporSatir.get('vadesigecentutar'):
        # mail gönder
        cariGetirBody = {"scf_carikart_getir" :
                {"session_id": sessionID,
                 "firma_kodu": firma_kodu,
                 "donem_kodu": donem_kodu,
                 "key": raporSatir['_key_scf_carikart'],
                 "params": {"selectedcolumns": ['eposta']}
                }
            }
        cariGetirResult = callWs(wsAdresMain + 'scf/json', cariGetirBody)
        print("*** cariGetirResult: ", cariGetirResult)
        cariEPosta = cariGetirResult['result']['eposta']
        print("*** cariEPosta: ", cariEPosta)

        vadeEkstreBody = {"rpr_raporsonuc_getir" :
                {"session_id": sessionID,
                 "firma_kodu": firma_kodu,
                 "donem_kodu": donem_kodu,
                 "report_code":"scf9014b",
                 "tasarim_key": "0",
                 "param":  {"_key": raporSatir['_key_scf_carikart'],
                            "hesaplamaturu": "Müşteri",
                            "tarihreferans": "2023-05-25",
                            "erkenfaiz": "0",
                            "gecfaiz": "0",
                            "ustIslemTuruKeys": [],
                            "_key_sis_sube": 0,
                            "_key_muh_masrafmerkezi": 0,
                            "irsaliyeleriDahilEt": "False",
                            "teslimolmamissiparisler": "False",
                            "odenmeyentaksitler": "False",
                            "teminatlarigoster": "False",
                            "kapanmadurumunagoregrupla": "True",
                            "baeslemeilekapananlarihesaplama": "False",
                            "eslemelerigoster": "True",
                            "eslenmeyenlerigoster": "False",
                            "kapananlarigosterme": "False",
                            "malzemebaglantilari": "False",
                            "malzemeBaglantiKeys": []
                            },
                 "format_type": "pdf"
                }
            }

        vadeEkstreResponse = callWs(wsAdresMain + 'rpr/json', vadeEkstreBody)

        epostaGonderBody = {"sis_eposta_gonder" :
            {"session_id": sessionID,
             "firma_kodu": firma_kodu,
             "donem_kodu": donem_kodu,
             "sender": senderEmail,
             "cc": cariEPosta,
             "bcc": "",
             "subject": "Vade Ekstre Raporu",
             "body": "Rapor sonucunuz ektedir",
             "attachments": [{"base64data": vadeEkstreResponse['result'],
                     "mime": "application/pdf", 
                     "name": "VadeEkstre"
                   }]
            }
        }
        epostaGonderResult = callWs(wsAdresMain + 'sis/json', epostaGonderBody)
        print("E-posta gonderildi")