İçindekiler

Örnek 6

Senaryo :

Sevk edilen siparişleri alıp ilgili cariye mail atar.

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

Örnek Kod (python):


# -*- coding: utf-8 -*-
'''
Örnek çalışma:
Sevkedilen siparişleri listele ve mail gönder.
'''
import sys
import json
from pprint import pprint
import urllib2
 
# servis çağrısı atılacak adres ön eki
wsAdresMain = 'https://diadevdays.ws.dia.com.tr/api/v3/'
 
# diadevdays sunucusundaki ilgili firma kodu
firma_kodu = 4
 
# diadevdays 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',
             "params": {"apikey": "773f9085-9dc8-4f50-b34d-f7b56da33b5f"}
            }
        }
 
wsResult = callWs(wsAdresMain + 'sis/json', postBody)
session_id = wsResult['msg']
print "session_id: %s" % session_id

############################################
# 2. AŞAMA : SEVK EDİLEN SİPARİŞLERİ LİSTELEYELİM.

postBody = {"scf_siparis_listele" :
            {"session_id": session_id,
             "firma_kodu": firma_kodu,
             "donem_kodu": donem_kodu,
             "filters":[{"field": "siparisdurum", "operator": "=", "value": "- Tamamı Sevk Edilmiş"}],
             "sorts": [{"field": "_cdate", "sorttype": "DESC"}],
             "params": "",
             "limit": 1,
             "offset": 0
            }
          }

 
siparisResult = callWs(wsAdresMain + 'scf/json', postBody)
siparisResult = siparisResult['result']

############################################
# 3. AŞAMA : SEVK EDİLEN SİPARİŞLER İÇİN MAIL GÖNDERELİM.

for siparis in siparisResult:

    # Sipariş carisinin e-postasını bulalım.
    postBody = {"scf_carikart_getir" :
                {"session_id": session_id,
                 "firma_kodu": firma_kodu,
                 "donem_kodu": donem_kodu,
                 "filters": "",
                 "sorts": "",
                 "params": {"_key": siparis.get('_key_scf_carikart') or 0},
                 "limit": 1,
                 "offset": 0
                }
              }

     
    cariResult = callWs(wsAdresMain + 'scf/json', postBody)
    cariResult = cariResult['result']

    subject = raw_input("Gönderilecek e-postanın konusunu giriniz:  ")
    body = raw_input("Gönderilecek e-postanın içeriğini giriniz:  ")

    if cariResult['eposta']:
 
        # Elimizdeki bilgileri kullanarak e-postamızı oluşturup gönderelim.
        postBody = {"sis_eposta_gonder" :
                    {"session_id": session_id,
                     "firma_kodu": firma_kodu,
                     "donem_kodu": donem_kodu,
                     "sender": "bilgi@dia.com.tr",
                     "cc": cariResult['eposta'],
                     "bcc": "",
                     "subject": subject,
                     "body": body
                    }
                }
        callWs(wsAdresMain + 'sis/json', postBody)
 
        print u"'%s' ünvanlı cariye eposta gönderildi. (Eposta Adresi:%s)" % (cariResult['unvan'], cariResult['eposta'])
    else:
        print u"DİKKAT: '%s' ünvanlı cariye eposta adresi tanımlanmamış!" % cariResult['unvan']