Subversion Repositories SmartDukaan

Rev

Rev 7018 | Rev 7177 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6908 rajveer 1
#!/usr/bin/python
2
 
3
from elixir import *
4
from datetime import datetime, timedelta, date 
5
import sys
6
from shop2020.model.v1.order.impl import DataService
7
from shop2020.model.v1.order.impl.DataAccessors import move_orders_to_correct_warehouse
6964 rajveer 8
from shop2020.model.v1.order.impl.DataService import InsuranceDetailForOrder,\
9
    Order
6908 rajveer 10
import xlwt
11
from shop2020.utils import EmailAttachmentSender
12
from shop2020.utils.EmailAttachmentSender import get_attachment_part
6909 rajveer 13
from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus
6962 rajveer 14
from shop2020.clients.CatalogClient import CatalogClient
6908 rajveer 15
 
6964 rajveer 16
def delivered_orders():
6974 rajveer 17
    DataService.initialize(db_hostname="192.168.190.114")
6908 rajveer 18
    todate = datetime.now() 
19
    todate = todate-timedelta(days = 10)
20
    insurances = InsuranceDetailForOrder.query.filter(InsuranceDetailForOrder.isDeclared == False).filter(InsuranceDetailForOrder.startDate >= todate).all()
21
    if not insurances:
22
        return
23
 
24
    wbk = xlwt.Workbook()
25
    sheet = wbk.add_sheet('main')
26
 
6941 rajveer 27
    date_style = xlwt.XFStyle()
28
    date_style.num_format_str = "D/M/YY"
29
 
6908 rajveer 30
    heading_xf = xlwt.easyxf('font: bold on; align: wrap on, vert centre, horiz center')
31
    sheet.set_panes_frozen(True)
32
    sheet.set_horz_split_pos(1)
33
    sheet.set_remove_splits(True)
34
 
35
    excel_integer_format = '0'
36
    integer_style = xlwt.XFStyle()
37
    integer_style.num_format_str = excel_integer_format
38
 
39
    sheet.write(0, 0, "Riskstartdate", heading_xf)
40
    sheet.write(0, 1, "StoreId", heading_xf)
41
    sheet.write(0, 2, "SystemInvoiceNumber", heading_xf)
42
    sheet.write(0, 3, "CustomerName", heading_xf)
43
    sheet.write(0, 4, "Type", heading_xf)
44
    sheet.write(0, 5, "Make", heading_xf)
45
    sheet.write(0, 6, "Model", heading_xf)
46
    sheet.write(0, 7, "EquipmentIdentificationNumber", heading_xf)
47
    sheet.write(0, 8, "Qty", heading_xf)
48
    sheet.write(0, 9, "Rate", heading_xf)
49
    sheet.write(0, 10, "TaxAmount", heading_xf)
50
    sheet.write(0, 11, "NetSales", heading_xf)
51
    sheet.write(0, 12, "FatherName", heading_xf)
52
    sheet.write(0, 13, "Birthdate", heading_xf)
53
    sheet.write(0, 14, "SystemInvoiceDate.", heading_xf)
54
    sheet.write(0, 15, "OrderId", heading_xf)
55
    sheet.write(0, 16, "OtherDetails3", heading_xf)
56
 
57
    xstr = lambda s: s or ""
58
 
6962 rajveer 59
    declaredAmount= 0.0
6908 rajveer 60
    i = 1
61
    for insurance in insurances:
62
        order = insurance.order
6909 rajveer 63
        if order.status != OrderStatus.DELIVERY_SUCCESS:
64
            continue
6908 rajveer 65
        line = order.lineitems[0]
66
        insurance.isDeclared = True
6962 rajveer 67
        declaredAmount += line.total_price
6908 rajveer 68
 
6941 rajveer 69
        sheet.write(i, 0, insurance.startDate, date_style)
6908 rajveer 70
        sheet.write(i, 1, '')
71
        sheet.write(i, 2, order.invoice_number)
72
        sheet.write(i, 3, order.customer_name)
73
        sheet.write(i, 4, 'Mobile Phones')
74
        sheet.write(i, 5, line.brand)
75
        sheet.write(i, 6, xstr(line.model_name) + " " + xstr(line.model_number))
76
        sheet.write(i, 7, line.serial_number)
77
        sheet.write(i, 8, line.quantity)
78
        sheet.write(i, 9, line.unit_price)
79
        sheet.write(i, 10, "0")
80
        sheet.write(i, 11, line.total_price)
81
        sheet.write(i, 12, insurance.guardianName)
82
        sheet.write(i, 13, insurance.dob)
6941 rajveer 83
        sheet.write(i, 14, order.billing_timestamp, date_style)
6908 rajveer 84
        sheet.write(i, 15, order.id)
85
        sheet.write(i, 16, '')        
86
        i = i + 1
87
 
88
    session.commit()
6962 rajveer 89
    client = CatalogClient().get_client()
90
    client.updateInsuranceDeclaredAmount(1, declaredAmount)
91
 
6908 rajveer 92
    today = date.today()
93
    datestr = str(today.year) + "-" + str(today.month) + "-" + str(today.day)
94
    filename = "/tmp/insurance-" + datestr + ".xls"
95
    wbk.save(filename)
6974 rajveer 96
    EmailAttachmentSender.mail("cnc.center@shop2020.in", "5h0p2o2o", ["ab@universalinsurance.co.in", "urmila.phadke@universalinsurace.co.in"], "Insurance Details for date " + datestr, "Please find attached insurance details for today.", [get_attachment_part(filename)], ["pramit.singh@shop2020.in","rbuniversal@gmail.com","rajveer.singh@shop2020.in","anupam.singh@shop2020.in","rajneesh.arora@shop2020.in"], [])
6964 rajveer 97
 
98
def returned_orders():
6974 rajveer 99
    DataService.initialize(db_hostname="192.168.190.114")
6964 rajveer 100
    todate = datetime.now() 
101
    todate = todate-timedelta(days = 2)
102
    orders = Order.query.filter(Order.insurer > 0).filter(Order.received_return_timestamp >= todate).all()
103
 
104
    if not orders:
105
        return
106
 
107
    wbk = xlwt.Workbook()
108
    sheet = wbk.add_sheet('main')
109
 
110
    date_style = xlwt.XFStyle()
111
    date_style.num_format_str = "D/M/YY"
112
 
113
    heading_xf = xlwt.easyxf('font: bold on; align: wrap on, vert centre, horiz center')
114
    sheet.set_panes_frozen(True)
115
    sheet.set_horz_split_pos(1)
116
    sheet.set_remove_splits(True)
117
 
118
    excel_integer_format = '0'
119
    integer_style = xlwt.XFStyle()
120
    integer_style.num_format_str = excel_integer_format
121
 
122
    sheet.write(0, 0, "SalesReturnDate", heading_xf)
123
    sheet.write(0, 1, "SalesReturnNumber", heading_xf)
124
    sheet.write(0, 2, "CustomerName", heading_xf)
125
    sheet.write(0, 3, "EquipmentIdentificationNumber", heading_xf)
126
    sheet.write(0, 4, "SystemInvoiceNumber", heading_xf)
127
    sheet.write(0, 5, "Rate", heading_xf)
128
    sheet.write(0, 6, "Amount", heading_xf)
7154 rajveer 129
    sheet.write(0, 7, "OrderId", heading_xf)
6964 rajveer 130
 
131
    xstr = lambda s: s or ""
132
 
133
    declaredAmount= 0.0
134
    i = 1
135
    for order in orders:
136
        insurance = order.insuranceDetails[0]
7018 rajveer 137
        if not (insurance.startDate or insurance.expiryDate) or insurance.expiryDate < datetime.now():
6964 rajveer 138
            continue
139
 
140
        line = order.lineitems[0]
141
        insurance.expiryDate = order.received_return_timestamp
142
 
143
        insured_days = ((order.received_return_timestamp).date() - ((insurance.startDate).date())).days 
144
 
145
        declaredAmount += line.total_price/365*(365-insured_days)
146
 
147
        sheet.write(i, 0, insurance.startDate, date_style)
148
        sheet.write(i, 1, order.invoice_number)
149
        sheet.write(i, 2, order.customer_name)
150
        sheet.write(i, 3, line.serial_number)
151
        sheet.write(i, 4, order.invoice_number)
152
        sheet.write(i, 5, line.unit_price)
153
        sheet.write(i, 6, line.unit_price)
7154 rajveer 154
        sheet.write(i, 7, order.id)
6964 rajveer 155
        i = i + 1
156
 
157
    session.commit()
158
    client = CatalogClient().get_client()
159
    client.updateInsuranceDeclaredAmount(1, -declaredAmount)
160
 
161
    today = date.today()
162
    datestr = str(today.year) + "-" + str(today.month) + "-" + str(today.day)
163
    filename = "/tmp/insurance-return-" + datestr + ".xls"
164
    wbk.save(filename)
7018 rajveer 165
    EmailAttachmentSender.mail("cnc.center@shop2020.in", "5h0p2o2o", ["ab@universalinsurance.co.in", "urmila.phadke@universalinsurace.co.in"], "Cancelled Insurance Policy Details for date " + datestr, "Please find attached orders which insurance need to be cancelled for today.", [get_attachment_part(filename)], ["pramit.singh@shop2020.in","rbuniversal@gmail.com","rajveer.singh@shop2020.in","anupam.singh@shop2020.in","rajneesh.arora@shop2020.in"], [])
6908 rajveer 166
 
6964 rajveer 167
def main():
168
    delivered_orders()
169
    returned_orders()
170
 
6908 rajveer 171
if __name__ == '__main__':
172
    main()
173