Subversion Repositories SmartDukaan

Rev

Rev 6903 | Rev 6911 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6903 Rev 6906
Line 11... Line 11...
11
from elixir import *
11
from elixir import *
12
from random import randrange
12
from random import randrange
13
from reportlab.lib.units import inch
13
from reportlab.lib.units import inch
14
from reportlab.pdfgen.canvas import Canvas
14
from reportlab.pdfgen.canvas import Canvas
15
from reportlab.rl_config import defaultPageSize
15
from reportlab.rl_config import defaultPageSize
-
 
16
from reportlab.lib.styles import ParagraphStyle
-
 
17
from reportlab.lib.styles import getSampleStyleSheet
-
 
18
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
16
from shop2020.clients.AlertClient import AlertClient
19
from shop2020.clients.AlertClient import AlertClient
17
from shop2020.clients.CatalogClient import CatalogClient
20
from shop2020.clients.CatalogClient import CatalogClient
18
from shop2020.clients.HelperClient import HelperClient
21
from shop2020.clients.HelperClient import HelperClient
19
from shop2020.clients.InventoryClient import InventoryClient
22
from shop2020.clients.InventoryClient import InventoryClient
20
from shop2020.clients.LogisticsClient import LogisticsClient
23
from shop2020.clients.LogisticsClient import LogisticsClient
Line 25... Line 28...
25
from shop2020.model.v1.order.impl import DataService, RechargeService
28
from shop2020.model.v1.order.impl import DataService, RechargeService
26
from shop2020.model.v1.order.impl.DataService import Transaction, LineItem, \
29
from shop2020.model.v1.order.impl.DataService import Transaction, LineItem, \
27
    Order, BatchNoGenerator, InvoiceIDGenerator, TransactionRequiringExtraProcessing, \
30
    Order, BatchNoGenerator, InvoiceIDGenerator, TransactionRequiringExtraProcessing, \
28
    OrderInventory, Alert, PaymentSettlement, EBSSettlementSummary, \
31
    OrderInventory, Alert, PaymentSettlement, EBSSettlementSummary, \
29
    CodVerificationAgent, Attribute, RechargeVoucherTracker, EmiScheme, \
32
    CodVerificationAgent, Attribute, RechargeVoucherTracker, EmiScheme, \
30
    MiscCharges, BlockedIpRange, DeniedIpAddress, InsuranceDetailForOrder
33
    MiscCharges, BlockedIpRange, DeniedIpAddress, InsuranceDetailForOrder,\
-
 
34
    DocumentStore
31
from shop2020.model.v1.order.impl.model.MobileRechargeOrder import \
35
from shop2020.model.v1.order.impl.model.MobileRechargeOrder import \
32
    MobileRechargeOrder
36
    MobileRechargeOrder
33
from shop2020.model.v1.order.impl.model.ReturnOrder import ReturnOrder
37
from shop2020.model.v1.order.impl.model.ReturnOrder import ReturnOrder
34
from shop2020.thriftpy.alert.ttypes import MonitoredEntity, EntityType
38
from shop2020.thriftpy.alert.ttypes import MonitoredEntity, EntityType
35
from shop2020.thriftpy.logistics.ttypes import DeliveryType, PickUpType
39
from shop2020.thriftpy.logistics.ttypes import DeliveryType, PickUpType
Line 559... Line 563...
559
            html_tr += "<td align='center'>" + ("%.0f" % lineitem.quantity) + "</td>"
563
            html_tr += "<td align='center'>" + ("%.0f" % lineitem.quantity) + "</td>"
560
            html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem.unit_price) + "</td>"
564
            html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem.unit_price) + "</td>"
561
            html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem_total_price) + "</td></tr>"
565
            html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem_total_price) + "</td></tr>"
562
            total_amount += lineitem_total_price
566
            total_amount += lineitem_total_price
563
            html_table += html_tr
567
            html_table += html_tr
564
            
568
        if order.insurer:
-
 
569
            html_table += "<tr><td colspan=6>&nbsp;</td></tr>"
-
 
570
            html_table += "<tr><td align='center'></td><td>Insured Against Theft for 1 Year. <a href='http://www.saholic.com/static/insurance-terms'>Know More</a></td><td align='center'></td><td align='center'></td><td align='center'></td>"
-
 
571
            html_table += "<td align='center'>" + order.insuranceAmount + "</td></tr>"
565
    emi_amount = 0
572
    emi_amount = 0
566
    miscCharges = get_misc_charges(transaction_id)
573
    miscCharges = get_misc_charges(transaction_id)
567
    if miscCharges.get(1):
574
    if miscCharges.get(1):
568
        emi_amount = miscCharges.get(1)
575
        emi_amount = miscCharges.get(1)
569
        
576
        
Line 633... Line 640...
633
    email_header = Template(html_header).substitute(dict(order_date = formated_order_date, customer_name = customer_name, source_url = source_url, otgLink = otgLink))
640
    email_header = Template(html_header).substitute(dict(order_date = formated_order_date, customer_name = customer_name, source_url = source_url, otgLink = otgLink))
634
    email_footer = Template(html_footer).substitute(dict(total_amount = "%.2f" % total_amount, emi_amount = "%.2f" % emi_amount, net_amount = "%.2f" % (total_amount-order.gvAmount), secret_code = random_text, store_address = store_address, store_delivery_date = store_delivery_date, source_url = source_url, source_name = source_name))
641
    email_footer = Template(html_footer).substitute(dict(total_amount = "%.2f" % total_amount, emi_amount = "%.2f" % emi_amount, net_amount = "%.2f" % (total_amount-order.gvAmount), secret_code = random_text, store_address = store_address, store_delivery_date = store_delivery_date, source_url = source_url, source_name = source_name))
635
    
642
    
636
    try:
643
    try:
637
        helper_client = HelperClient().get_client()
644
        helper_client = HelperClient().get_client()
638
        if transaction.orders[0].otg :
-
 
639
            helper_client.saveUserEmailForSending([user_email], "", subject, email_header + html_table + email_footer, str(transaction_id), "TransactionInfo", [], ['rajneesh.arora@shop2020.in','rajveer.singh@shop2020.in','abhishek.mathur@shop2020.in','amit.sirohi@shop2020.in'])
-
 
640
        else:
-
 
641
            helper_client.saveUserEmailForSending([user_email], "", subject, email_header + html_table + email_footer, str(transaction_id), "TransactionInfo", [], [])
645
        helper_client.saveUserEmailForSending([user_email], "", subject, email_header + html_table + email_footer, str(transaction_id), "TransactionInfo", [], [])
642
         
646
         
643
        return True
647
        return True
644
    except Exception as e:
648
    except Exception as e:
645
        print e
649
        print e
646
        return False
650
        return False
Line 850... Line 854...
850
        html_tr += "<td align='center'>" + ("%.0f" % lineitem.quantity) + "</td>"
854
        html_tr += "<td align='center'>" + ("%.0f" % lineitem.quantity) + "</td>"
851
        html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem.unit_price) + "</td>"
855
        html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem.unit_price) + "</td>"
852
        html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem_total_price) + "</td></tr>"
856
        html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem_total_price) + "</td></tr>"
853
        total_amount += lineitem_total_price
857
        total_amount += lineitem_total_price
854
        html_table += html_tr
858
        html_table += html_tr
-
 
859
    if order.insurer:
-
 
860
        html_table += "<tr><td align='center'></td><td>Insured Against Theft for 1 Year. <a href='http://www.saholic.com/static/insurance-terms'>Know More</a></td><td align='center'></td><td align='center'></td>"
-
 
861
        html_table += "<td align='center'>" + order.insuranceAmount + "</td></tr>"
-
 
862
        total_amount += order.insuranceAmount
855
    
863
            
856
    html_footer = """
864
    html_footer = """
857
        <tr><td colspan=5>&nbsp;</td></tr>
865
        <tr><td colspan=5>&nbsp;</td></tr>
858
        <tr><td colspan=5><hr /></td></tr>
866
        <tr><td colspan=5><hr /></td></tr>
859
        <tr>
867
        <tr>
860
            <td colspan=4>Total Amount</td>
868
            <td colspan=4>Total Amount</td>
Line 879... Line 887...
879
    email_header = Template(html_header).substitute(dict(order_date = formated_order_date, customer_name = customer_name, pickup_text = pickup_text, source_url = source_url))
887
    email_header = Template(html_header).substitute(dict(order_date = formated_order_date, customer_name = customer_name, pickup_text = pickup_text, source_url = source_url))
880
    email_footer = Template(html_footer).substitute(dict(total_amount = "%.2f" % total_amount, source_name = source_name))
888
    email_footer = Template(html_footer).substitute(dict(total_amount = "%.2f" % total_amount, source_name = source_name))
881
    
889
    
882
    try:
890
    try:
883
        helper_client = HelperClient(host_key = "helper_service_server_host_prod").get_client()
891
        helper_client = HelperClient(host_key = "helper_service_server_host_prod").get_client()
884
        if order.otg:
-
 
885
            helper_client.saveUserEmailForSending([user_email], "", subject, email_header + html_table + email_footer, str(order.id), "DeliverySuccess", [], ['rajneesh.arora@shop2020.in','rajveer.singh@shop2020.in','abhishek.mathur@shop2020.in','amit.sirohi@shop2020.in'])
-
 
886
        else:
-
 
887
            helper_client.saveUserEmailForSending([user_email], "", subject, email_header + html_table + email_footer, str(order.id), "DeliverySuccess", [], [])
892
        helper_client.saveUserEmailForSending([user_email], "", subject, email_header + html_table + email_footer, str(order.id), "DeliverySuccess", [], [])
888
        return True
893
        return True
889
    except Exception as e:
894
    except Exception as e:
890
        print e
895
        print e
891
        return False
896
        return False
892
 
897
 
Line 1513... Line 1518...
1513
        else:
1518
        else:
1514
            order.status = OrderStatus.DELIVERY_SUCCESS
1519
            order.status = OrderStatus.DELIVERY_SUCCESS
1515
            order.statusDescription = "Order delivered"
1520
            order.statusDescription = "Order delivered"
1516
            update_trust_level(order)
1521
            update_trust_level(order)
1517
            if order.insuranceDetails:
1522
            if order.insuranceDetails:
-
 
1523
                try:
1518
                order.insuranceDetails[0].startDate = order.delivery_timestamp
1524
                    update_insurance_details(order)
-
 
1525
                except:
1519
                order.insuranceDetails[0].expiryDate = order.delivery_timestamp + timedelta(days = 365)
1526
                    print "Error generating insurance file for order " + str(order.id)
-
 
1527
                    session.rollback()
-
 
1528
                    return
-
 
1529
                    
1520
            if enqueue_delivery_success_mail(order) :
1530
            if enqueue_delivery_success_mail(order) :
1521
                session.commit()
1531
                session.commit()
1522
            else :
1532
            else :
1523
                session.rollback()
1533
                session.rollback()
1524
            try:
1534
            try:
Line 1526... Line 1536...
1526
                alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
1536
                alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
1527
            except Exception as e:
1537
            except Exception as e:
1528
                print "Exception in scheduling alert in ShippedFromWarehouse method"
1538
                print "Exception in scheduling alert in ShippedFromWarehouse method"
1529
                print e
1539
                print e
1530
 
1540
 
-
 
1541
def update_insurance_details(order):
-
 
1542
    order.insuranceDetails[0].startDate = order.delivery_timestamp
-
 
1543
    order.insuranceDetails[0].expiryDate = order.delivery_timestamp + timedelta(days = 365)
-
 
1544
    filename = "/tmp/" + str(order.id) + "-policy.pdf"
-
 
1545
    __generate_policy_doc(order, filename)
-
 
1546
    file = open(filename, "rb")
-
 
1547
    pdfFile = file.read()
-
 
1548
    doc = DocumentStore()
1531
    
1549
    doc.docType = 1
-
 
1550
    doc.docSource = order.id
-
 
1551
    doc.document = pdfFile
1532
 
1552
 
1533
def mark_order_as_delivered(orderId, deliveryTimestamp, receiver):
1553
def mark_order_as_delivered(orderId, deliveryTimestamp, receiver):
1534
    order = Order.get_by(id=orderId)
1554
    order = Order.get_by(id=orderId)
1535
    if order == None or order.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DOA_PICKUP_REQUEST_RAISED, OrderStatus.DOA_PICKUP_CONFIRMED, OrderStatus.RET_REQUEST_RECEIVED, OrderStatus.RET_PICKUP_CONFIRMED, OrderStatus.RET_REQUEST_AUTHORIZED, OrderStatus.RET_PICKUP_REQUEST_RAISED, OrderStatus.RTO_IN_TRANSIT, OrderStatus.BILLED, OrderStatus.RECEIVED_AT_STORE]:
1555
    if order == None or order.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DOA_PICKUP_REQUEST_RAISED, OrderStatus.DOA_PICKUP_CONFIRMED, OrderStatus.RET_REQUEST_RECEIVED, OrderStatus.RET_PICKUP_CONFIRMED, OrderStatus.RET_REQUEST_AUTHORIZED, OrderStatus.RET_PICKUP_REQUEST_RAISED, OrderStatus.RTO_IN_TRANSIT, OrderStatus.BILLED, OrderStatus.RECEIVED_AT_STORE]:
1536
        raise TransactionServiceException(101, "Either wrond order id or invalid state " + str(orderId))
1556
        raise TransactionServiceException(101, "Either wrond order id or invalid state " + str(orderId))
Line 1546... Line 1566...
1546
        order.receiver = receiver
1566
        order.receiver = receiver
1547
    order.status = OrderStatus.DELIVERY_SUCCESS
1567
    order.status = OrderStatus.DELIVERY_SUCCESS
1548
    order.statusDescription = "Order delivered"
1568
    order.statusDescription = "Order delivered"
1549
    update_trust_level(order)
1569
    update_trust_level(order)
1550
    if order.insuranceDetails:
1570
    if order.insuranceDetails:
-
 
1571
        try:
1551
        order.insuranceDetails[0].startDate = deliveryTimestamp
1572
            update_insurance_details(order)
-
 
1573
        except:
1552
        order.insuranceDetails[0].expiryDate = deliveryTimestamp + timedelta(days = 365)
1574
            print "Error generating insurance file for order " + str(order.id)
-
 
1575
            session.rollback()
-
 
1576
            return
1553
    session.commit()
1577
    session.commit()
1554
    
1578
    
1555
    if order.pickupStoreId and order.cod:
1579
    if order.pickupStoreId and order.cod:
1556
        __push_collection_to_hotspot(order, "SALE")
1580
        __push_collection_to_hotspot(order, "SALE")
1557
    
1581
    
Line 3543... Line 3567...
3543
    # Calling helper service on production
3567
    # Calling helper service on production
3544
    helperClient = HelperClient(host_key = "helper_service_server_host_prod").get_client()
3568
    helperClient = HelperClient(host_key = "helper_service_server_host_prod").get_client()
3545
    try:
3569
    try:
3546
        emailSubject = 'Shipping Details for Order ID: ' + str(order.id)
3570
        emailSubject = 'Shipping Details for Order ID: ' + str(order.id)
3547
        emailBody = get_shipping_confirmation_email_body(order)
3571
        emailBody = get_shipping_confirmation_email_body(order)
3548
        if order.otg:
-
 
3549
            helperClient.saveUserEmailForSending([order.customer_email], None, emailSubject, emailBody, str(order.id), 'ShippingConfirmation', [], ['rajneesh.arora@shop2020.in','rajveer.singh@shop2020.in','abhishek.mathur@shop2020.in','amit.sirohi@shop2020.in'])
-
 
3550
        else:
-
 
3551
            helperClient.saveUserEmailForSending([order.customer_email], None, emailSubject, emailBody, str(order.id), 'ShippingConfirmation', [], [])
3572
        helperClient.saveUserEmailForSending([order.customer_email], None, emailSubject, emailBody, str(order.id), 'ShippingConfirmation', [], [])
3552
        
3573
        
3553
    except Exception as e:
3574
    except Exception as e:
3554
        print e
3575
        print e
3555
    
3576
    
3556
def get_order_distribution_by_status(start_date, end_date):
3577
def get_order_distribution_by_status(start_date, end_date):
Line 4064... Line 4085...
4064
    email_header = Template(html_header).substitute(dict(order_id = display_order_id, order_date = formated_order_date, email = email, source_url = source_url, order_amount = recharge_order.totalAmount, order_status = status, device_number = deviceNumber, service_provider = providerName, failureReason = failureReason))
4085
    email_header = Template(html_header).substitute(dict(order_id = display_order_id, order_date = formated_order_date, email = email, source_url = source_url, order_amount = recharge_order.totalAmount, order_status = status, device_number = deviceNumber, service_provider = providerName, failureReason = failureReason))
4065
    email_footer = Template(html_footer).substitute(dict(source_url = source_url, source_name = source_name))
4086
    email_footer = Template(html_footer).substitute(dict(source_url = source_url, source_name = source_name))
4066
    
4087
    
4067
    try:
4088
    try:
4068
        helper_client = HelperClient().get_client()
4089
        helper_client = HelperClient().get_client()
4069
        helper_client.saveUserEmailForSending([email], "", source_name + " - Recharge Order Details", email_header + email_footer, str(recharge_order.id), "RechargeInfo", [], ['anupam.singh@shop2020.in', 'rajneesh.arora@shop2020.in', 'abhishek.mathur@shop2020.in', 'amit.sirohi@shop2020.in', 'rajveer.singh@shop2020.in'])
4090
        helper_client.saveUserEmailForSending([email], "", source_name + " - Recharge Order Details", email_header + email_footer, str(recharge_order.id), "RechargeInfo", [], [])
4070
        return True
4091
        return True
4071
    except Exception as e:
4092
    except Exception as e:
4072
        print e
4093
        print e
4073
        return False
4094
        return False
4074
 
4095
 
Line 4144... Line 4165...
4144
        session.query(Transaction.id).limit(1).one()
4165
        session.query(Transaction.id).limit(1).one()
4145
        return True
4166
        return True
4146
    except:
4167
    except:
4147
        return False
4168
        return False
4148
 
4169
 
4149
if __name__ == '__main__':
4170
def get_document(docType, docSource):
4150
    print 'Inside main'
-
 
4151
    #def __generate_return_advice(order, warehouse, provider, filename):
4171
    document = DocumentStore.get_by(docType = docType, docSource = docSource)
4152
#    if warehouse.id == 7:
4172
    if document:
4153
#        executive = 'Amit Kumar'
4173
        return document.document
4154
#    else:
4174
    else:
4155
#        executive = 'Dinesh Kumar'
4175
        return None
-
 
4176
 
-
 
4177
def myFirstPage(canvas, doc):
4156
    from reportlab.lib.styles import ParagraphStyle
4178
    canvas.saveState()
4157
    from reportlab.lib.styles import getSampleStyleSheet
4179
    canvas.setFont('Times-Bold',14)
4158
    from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
4180
    canvas.drawCentredString(PAGE_WIDTH/2.0, PAGE_HEIGHT- inch, "MOBILE HAND SET INSURANCE – THEFT & BURGLARY RISKS ONLY")
4159
    from reportlab.lib.styles import getSampleStyleSheet
4181
    canvas.setTitle("Insurance Terms")
4160
    from reportlab.rl_config import defaultPageSize
4182
    canvas.restoreState()
-
 
4183
 
-
 
4184
 
4161
    from reportlab.lib.units import inch
4185
def __generate_policy_doc(order, filename):
4162
    PAGE_HEIGHT=defaultPageSize[1]; PAGE_WIDTH=defaultPageSize[0]
4186
    PAGE_HEIGHT=defaultPageSize[1]; PAGE_WIDTH=defaultPageSize[0]
4163
    styles = getSampleStyleSheet()
4187
    styles = getSampleStyleSheet()
4164
    styles.add(ParagraphStyle(name='left', leftIndent=12,fontSize=11), alias='li')
4188
    styles.add(ParagraphStyle(name='left', leftIndent=12,fontSize=11), alias='li')
4165
    styles.add(ParagraphStyle(name='bullet', bulletIndent=24, leftIndent=24), alias='bull')
4189
    styles.add(ParagraphStyle(name='bullet', bulletIndent=24, leftIndent=24), alias='bull')
4166
    
4190
    
4167
    Title = "MOBILE HAND SET INSURANCE – THEFT & BURGLARY RISKS ONLY"
-
 
4168
    
-
 
4169
    def myFirstPage(canvas, doc):
-
 
4170
        canvas.saveState()
-
 
4171
        canvas.setFont('Times-Bold',14)
-
 
4172
        canvas.drawCentredString(PAGE_WIDTH/2.0, PAGE_HEIGHT- inch, Title)
-
 
4173
        canvas.setTitle("Insurance Terms")
-
 
4174
        canvas.restoreState()
-
 
4175
    
-
 
4176
    invoiceNumber = 11111111
4191
    invoiceNumber = order.invoice_number
4177
    billing_timestamp = '2012-03-14'
4192
    billing_timestamp = str(order.billing_timestamp.date()) 
4178
    
4193
    
4179
    doc = SimpleDocTemplate("/home/anupam/Desktop/phello.pdf")
4194
    doc = SimpleDocTemplate(filename)
4180
    Story = [Spacer(1,0.4*inch)]
4195
    Story = [Spacer(1,0.4*inch)]
4181
    style = styles["Normal"]
4196
    style = styles["Normal"]
4182
    text = ("""<u><b>Subject Matter Of Insurance</b></u> : <i>New Mobile Handsets</i> alone and <i>Tablets with 'Voice Calls'</i> only. 
4197
    text = ("""<u><b>Subject Matter Of Insurance</b></u> : <i>New Mobile Handsets</i> alone and <i>Tablets with 'Voice Calls'</i> only. 
4183
    Sold 'online' by <b>Spice Online Retail Private Limited, New Delhi</b>, to its customers.""") 
4198
    Sold 'online' by <b>Spice Online Retail Private Limited, New Delhi</b>, to its customers.""") 
4184
    p = Paragraph(text, style)
4199
    p = Paragraph(text, style)
Line 4323... Line 4338...
4323
    text = ("<i>Insurance is a subject matter of solicitation.</i>")
4338
    text = ("<i>Insurance is a subject matter of solicitation.</i>")
4324
    p = Paragraph(text, style)
4339
    p = Paragraph(text, style)
4325
    Story.append(p)
4340
    Story.append(p)
4326
    Story.append(Spacer(1,0.2*inch))
4341
    Story.append(Spacer(1,0.2*inch))
4327
    
4342
    
4328
    doc.build(Story, onFirstPage=myFirstPage)
-
 
4329
4343
    doc.build(Story, onFirstPage=myFirstPage)
-
 
4344