Subversion Repositories SmartDukaan

Rev

Rev 5791 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/usr/bin/python

'''
Send mail to courier partners to pickup the orders from store.

Created on 26-Jul-2012

@author: Rajveer
'''
import xlwt
import datetime
from optparse import OptionParser
from textwrap import dedent



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

from shop2020.model.v1.order.impl import DataService
from shop2020.model.v1.order.impl.DataService import Order
from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus
from shop2020.clients.LogisticsClient import LogisticsClient
from shop2020.thriftpy.logistics.ttypes import PickupStore, DeliveryType
from shop2020.clients.CatalogClient import CatalogClient
from shop2020.utils.EmailAttachmentSender import mail, get_attachment_part


def process_pickup_store_returns():
    DataService.initialize(db_hostname="192.168.190.114", echoOn=True)
    to_date = datetime.datetime.today() + datetime.timedelta(days = -5)
    logistics_store_order_mapping = {}
    orders = Order.query.filter(Order.pickupStoreId > 0).filter(Order.delivery_timestamp <= to_date).order_by(Order.pickupStoreId).order_by(Order.logistics_provider_id).order_by(Order.warehouse_id).all()
    for order in orders:
        if logistics_store_order_mapping.has_key(order.pickupStoreId, order.logistics_provider_id, order.warehouse_id):
            logistics_store_order_mapping.get(order.pickupStoreId, order.logistics_provider_id, order.warehouse_id).append(order.id)
        else:
            logistics_store_order_mapping[order.pickupStoreId, order.logistics_provider_id, order.warehouse_id] = [order.id]
        order.status = OrderStatus.RET_PICKUP_REQUEST_RAISED
        order.statusDescription = "Return request raised"
    session.commit()
    
    lclient = LogisticsClient().get_client()
    cclient = CatalogClient().get_client()
    for key in logistics_store_order_mapping.iterkeys():
        provider = lclient.getProvider(key[1])
        to_addr = provider.details[DeliveryType.PREPAID].email
        pickupStore = lclient.getPickupStore(key[0])
        warehouse = cclient.getWarehouse(key[2])
        subject = "Pickup request from " + pickupStore.city
        raw_message = '''
        Dear Sir/Madam,
        
        Kindly arrange a pickup today from %(customer_city)s. Pickup and delivery addresses are mentioned below.

        Pickup Order Ids: %(order_ids)
        
        Pickup CODE: %(provider_code)s
        
        Pickup Address:

        %(customer_address)s

        Delivery Address:

        %(warehouse_executive)s
        %(warehouse_address)s
        PIN %(warehouse_pin)s
        
        Thanks and Regards
        Sandeep Sachdeva
        '''
        
        if warehouse.id == 7:
            executive = 'Amit Kumar'
        else:
            executive = 'Dinesh Kumar'
        
        address = pickupStore.name + "\n" + pickupStore.line1 + "\n"
        if pickupStore.line2:
            address = address + pickupStore.line2 + "\n"
        address = address + pickupStore.city + "\n"
        address = address + pickupStore.state + "\n"
        address = address + "PIN " + pickupStore.pin + "\n"
        address = address + "Phone: " + pickupStore.phone
        
        order_ids = ""
        order_ids.join(logistics_store_order_mapping.get(key))
        
        message = dedent(raw_message) % { 'customer_city' : pickupStore.city,
                                          'provider_code' : provider.details[DeliveryType.PREPAID].accountNo,
                                          'order_weight' : str(0.5),
                                          'customer_address' : address,
                                          'warehouse_executive' : executive,
                                          'warehouse_address' : warehouse.location,
                                          'warehouse_pin' : warehouse.pincode,
                                          'order_ids' : order_ids}
        to_addresses = [to_addr, 'suraj.sharma@shop2020.in']
        
        mail('cnc.center@shop2020.in', '5h0p2o2o', to_addresses, subject, message)

def main():
    process_pickup_store_returns()

if __name__ == '__main__':
    main()