Subversion Repositories SmartDukaan

Rev

Rev 1408 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/usr/bin/python 
'''
Mails a report of orders which should have been delivered
but have been not. It is scheduled to run after the LogisticsReconciliation.

@author: Chandranshu
'''
import os
import sys
import csv

if __name__ == '__main__' and __package__ is None:
    sys.path.insert(0, os.getcwd())

from shop2020.utils.Utils import to_py_date
from shop2020.utils.EmailAttachmentSender import get_attachment_part, mail
from shop2020.clients.TransactionClient import TransactionClient
from shop2020.clients.LogisticsClient import LogisticsClient

from_user = 'cnc.center@shop2020.in'
from_pwd = '5h0p2o2o'
to = ['cnc.center@shop2020.in']

def get_undelivered_orders(providerId = -1, warehouseId = -1):
    txnClient = TransactionClient().get_client()
    undeliveredOrders = txnClient.getUndeliveredOrders(providerId, warehouseId)
    return undeliveredOrders
    
def generate_undelivered_orders_report(orders):
    filename = os.getenv("HOME") + os.sep + "UndeliveredOrders.csv"
    logistics_client = LogisticsClient().get_client()
    providers = logistics_client.getAllProviders()
    writer = csv.writer(open(filename, "wb"), delimiter=',', quoting=csv.QUOTE_NONE)
    writer.writerow(['AWB No', 'Shipping Date', 'Courier Name', 'Delivery Location', 'Non-delivery Reason'])
    provider = None
    for order in orders:
        for p in providers:
            if p.id == order.logistics_provider_id:
                provider=p
                break
        writer.writerow([order.airwaybill_no, to_py_date(order.shipping_timestamp), provider.name, order.customer_city, order.statusDescription])
    
    return filename
    
    
def main():
    orders = get_undelivered_orders()
    filename = generate_undelivered_orders_report(orders)
    print "Generated undelivered orders report to:" + filename
    part = get_attachment_part(filename)
    mail(from_user, from_pwd, to, "Undelivered orders", "This is a system generated email.Please don't reply to it.", part)

if __name__ == '__main__':
    main()