Subversion Repositories SmartDukaan

Rev

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

Rev 7181 Rev 7190
Line 168... Line 168...
168
    if order.insurer > 0:
168
    if order.insurer > 0:
169
        insuranceDetail = InsuranceDetailForOrder()
169
        insuranceDetail = InsuranceDetailForOrder()
170
        insuranceDetail.dob = t_order.dob
170
        insuranceDetail.dob = t_order.dob
171
        insuranceDetail.guardianName = t_order.guardianName
171
        insuranceDetail.guardianName = t_order.guardianName
172
        insuranceDetail.order = order
172
        insuranceDetail.order = order
-
 
173
    if t_order.freebieItemId:
-
 
174
        order.freebieItemId = t_order.freebieItemId
173
    return order
175
    return order
174
    
176
    
175
def create_transaction(t_transaction):
177
def create_transaction(t_transaction):
176
    t_orders = t_transaction.orders
178
    t_orders = t_transaction.orders
177
    if not t_orders:
179
    if not t_orders:
Line 565... Line 567...
565
            html_tr += "<td align='center'>" + ("%.0f" % lineitem.quantity) + "</td>"
567
            html_tr += "<td align='center'>" + ("%.0f" % lineitem.quantity) + "</td>"
566
            html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem.unit_price) + "</td>"
568
            html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem.unit_price) + "</td>"
567
            html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem_total_price) + "</td></tr>"
569
            html_tr += "<td align='center'> Rs. " + ("%.2f" % lineitem_total_price) + "</td></tr>"
568
            total_amount += lineitem_total_price
570
            total_amount += lineitem_total_price
569
            html_table += html_tr
571
            html_table += html_tr
-
 
572
        if order.freebieItemId:
-
 
573
            catalog_client = CatalogClient().get_client()
-
 
574
            item = catalog_client.getItem(order.freebieItemId)
-
 
575
            html_table += "<tr><td align='center'></td><td style='font-style:italic;'> Free Item: "+item.brand + " " + item.modelName + " " + item.modelNumber+"</td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td></tr>"
570
        if order.insurer:
576
        if order.insurer:
571
            html_table += "<tr><td colspan=6>&nbsp;</td></tr>"
577
            html_table += "<tr><td colspan=6>&nbsp;</td></tr>"
572
            html_table += "<tr><td align='center'></td><td style='font-style:italic;'>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>"
578
            html_table += "<tr><td align='center'></td><td style='font-style:italic;'>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>"
573
            html_table += "<td align='center'>" + str(order.insuranceAmount) + "</td></tr>"
579
            html_table += "<td align='center'>" + str(order.insuranceAmount) + "</td></tr>"
574
            total_amount += order.insuranceAmount
580
            total_amount += order.insuranceAmount
Line 1170... Line 1176...
1170
                inventoryClient.reduceReservationCount(itemId, order.fulfilmentWarehouseId, sourceId, order.id, order.lineitems[0].quantity)
1176
                inventoryClient.reduceReservationCount(itemId, order.fulfilmentWarehouseId, sourceId, order.id, order.lineitems[0].quantity)
1171
                inventoryClient.reserveItemInWarehouse(itemId, warehouse.id, sourceId, order.id, to_java_date(order.created_timestamp), to_java_date(order.promised_shipping_time), order.lineitems[0].quantity)
1177
                inventoryClient.reserveItemInWarehouse(itemId, warehouse.id, sourceId, order.id, to_java_date(order.created_timestamp), to_java_date(order.promised_shipping_time), order.lineitems[0].quantity)
1172
                order.fulfilmentWarehouseId = warehouse.id
1178
                order.fulfilmentWarehouseId = warehouse.id
1173
                break
1179
                break
1174
 
1180
 
1175
def add_billing_details(orderId, invoice_number, serialNumbers, itemNumbers, billedBy, jacketNumber, billingType, fulfilmentWarehouseId, authorize):
1181
def add_billing_details(orderId, invoice_number, serialNumbers, itemNumbers, freebieWarehouseId, billedBy, jacketNumber, billingType, fulfilmentWarehouseId, authorize):
1176
    if jacketNumber is None or jacketNumber <= 0:
1182
    if jacketNumber is None or jacketNumber <= 0:
1177
        raise TransactionServiceException(110, "Invalid jacket number")
1183
        raise TransactionServiceException(110, "Invalid jacket number")
1178
    
1184
    
1179
    if billedBy is None or billedBy.strip() == "":
1185
    if billedBy is None or billedBy.strip() == "":
1180
        raise TransactionServiceException(110, "Invalid Biller")
1186
        raise TransactionServiceException(110, "Invalid Biller")
1181
    
1187
    
1182
    order = Order.get_by(id=orderId)
1188
    order = Order.get_by(id=orderId)
1183
    if not order:
1189
    if not order:
1184
        raise TransactionServiceException(101, "No order found for the given order id" + str(orderId))
1190
        raise TransactionServiceException(101, "No order found for the given order id" + str(orderId))
1185
 
1191
 
-
 
1192
    '''
-
 
1193
    First checking whether freebie can be billed or not otherwise wont proceed.
-
 
1194
    '''
-
 
1195
    if billingType == BillingType.OURS:
-
 
1196
        if order.freebieItemId is not None or order.freebieItemId>0:
-
 
1197
            if freebieWarehouseId is not None or freebieWarehouseId >0:
-
 
1198
                try:
-
 
1199
                    warehouse_client = WarehouseClient().get_client()
-
 
1200
                    inventoryItem = warehouse_client.scanfreebie(orderId, order.freebieItemId, freebieWarehouseId, ScanType.SALE);
-
 
1201
                    
-
 
1202
                    attr = Attribute()
-
 
1203
                    attr.orderId = orderId
-
 
1204
                    attr.name = "freebie_tp"
-
 
1205
                    attr.value = str(inventoryItem.unitPrice)
-
 
1206
                    
-
 
1207
                    attr1 = Attribute()
-
 
1208
                    attr1.orderId = orderId
-
 
1209
                    attr1.name = "freebie_vendor"
-
 
1210
                    attr1.value = str(inventoryItem.supplierId)
-
 
1211
    
-
 
1212
                    inventory_client = InventoryClient().get_client()
-
 
1213
                    warehouse = inventory_client.getWarehouse(freebieWarehouseId)
-
 
1214
                    item_pricing = inventory_client.getItemPricing(order.freebieItemId, warehouse.vendor.id)
-
 
1215
                    #lineitem.transfer_price = item_pricing.transferPrice
-
 
1216
                    attr2 = Attribute()
-
 
1217
                    attr2.orderId = orderId
-
 
1218
                    attr2.name = "freebie_nlc"
-
 
1219
                    attr2.value = str(item_pricing.nlc)
-
 
1220
                except Exception as e:
-
 
1221
                    print sys.exc_info()[0]
-
 
1222
                    print e.message
-
 
1223
                    raise Exception('Error in billing freebie for warehouseId ' + str(freebieWarehouseId))
1186
    
1224
    
1187
    lineitem = order.lineitems[0]
1225
    lineitem = order.lineitems[0]
1188
    item_id = lineitem.item_id
1226
    item_id = lineitem.item_id
1189
    
1227
    
1190
#    inventoryClient = InventoryClient().get_client()
1228
#    inventoryClient = InventoryClient().get_client()
Line 3525... Line 3563...
3525
<div>
3563
<div>
3526
    <p>Dear Customer,</p>
3564
    <p>Dear Customer,</p>
3527
    <p>
3565
    <p>
3528
        We are pleased to inform that we have shipped the order: $order_id for your product $product_name on $shipping_datetime. 
3566
        We are pleased to inform that we have shipped the order: $order_id for your product $product_name on $shipping_datetime. 
3529
        The shipment will be delivered to you via $courier_name Courier Service vide AWB# $awb.
3567
        The shipment will be delivered to you via $courier_name Courier Service vide AWB# $awb.
-
 
3568
        $freebie_text
3530
    </p>
3569
    </p>
3531
    <p>
3570
    <p>
3532
        Expected delivery date for your order is $expected_delivery_date.
3571
        Expected delivery date for your order is $expected_delivery_date.
3533
        <br/>
3572
        <br/>
3534
        $otg_text
3573
        $otg_text
Line 3577... Line 3616...
3577
            otg_text = 'Your order is covered under our <a href="http://www.saholic.com/static/on-time-guarantee">On Time Guarantee; We Pay if we Delay.</a> We apologize in advance for the expected delay from our initial promised delivery date of ' + promised_delivery_date + '. Your will receive a Gift Voucher Code at time of delivery based on the actual delay. You can use the same to buy any Mobile, Camera, Laptop, Tablet, Accessory or Mobile/DTH Recharge from our website.'
3616
            otg_text = 'Your order is covered under our <a href="http://www.saholic.com/static/on-time-guarantee">On Time Guarantee; We Pay if we Delay.</a> We apologize in advance for the expected delay from our initial promised delivery date of ' + promised_delivery_date + '. Your will receive a Gift Voucher Code at time of delivery based on the actual delay. You can use the same to buy any Mobile, Camera, Laptop, Tablet, Accessory or Mobile/DTH Recharge from our website.'
3578
        elif new_expected_delivery_timestamp < order.promised_delivery_time:
3617
        elif new_expected_delivery_timestamp < order.promised_delivery_time:
3579
            otg_text = 'We are happy to inform you that we expect to deliver your order before time. Your order is covered under our <a href="http://www.saholic.com/static/on-time-guarantee">On Time Guarantee; We Pay if we Delay.</a> Please note, compensation for delay (If Any) will be computed from the initial promised delivery date of ' + promised_delivery_date + '.'
3618
            otg_text = 'We are happy to inform you that we expect to deliver your order before time. Your order is covered under our <a href="http://www.saholic.com/static/on-time-guarantee">On Time Guarantee; We Pay if we Delay.</a> Please note, compensation for delay (If Any) will be computed from the initial promised delivery date of ' + promised_delivery_date + '.'
3580
        else:            
3619
        else:            
3581
            otg_text = 'Your order is covered under our <a href="http://www.saholic.com/static/on-time-guarantee">On Time Guarantee; We Pay if we Delay.</a> We are committed to deliver your order by our initial promised delivery date of ' + promised_delivery_date + '.'
3620
            otg_text = 'Your order is covered under our <a href="http://www.saholic.com/static/on-time-guarantee">On Time Guarantee; We Pay if we Delay.</a> We are committed to deliver your order by our initial promised delivery date of ' + promised_delivery_date + '.'
-
 
3621
    
-
 
3622
    freebie_text = "<br/>"
-
 
3623
    if order.freebieItemId:
-
 
3624
        catalog_client = CatalogClient().get_client()
-
 
3625
        item = catalog_client.getItem(order.freebieItemId)
-
 
3626
        freebie_text = freebie_text = "We have also sent you " + item.brand + " " + item.modelName + item.modelNumber +" as promised"
-
 
3627
    else:
-
 
3628
        freebie_orderId = get_order_attribute_value(order.id, "freebieOrderId")
-
 
3629
        if freebie_orderId != "":
-
 
3630
            line_items = get_line_items_for_order(int(freebie_orderId))
-
 
3631
            freebie_text = freebie_text + "Due to some unavoidable issues in procuring " +line_items(0).brand + " " + line_items(0).model_name + " " + line_items(0).model_number
-
 
3632
            freebie_text = freebie_text + " Your freebie will be sent as a separate order with OrderId : " + freebie_orderId + "<br/> You can track the status of this order from My Orders section in saholic.com"
3582
        
3633
        
3583
    info = dict(order_id = order.id, product_name = product, shipping_datetime = shipping_date, awb = order.airwaybill_no, expected_delivery_date = new_expected_delivery_date, courier_name = provider_name, courier_phone = provider_phone, source_name = source_name, otg_text = otg_text)
3634
    info = dict(order_id = order.id, product_name = product, shipping_datetime = shipping_date, awb = order.airwaybill_no, expected_delivery_date = new_expected_delivery_date, courier_name = provider_name, courier_phone = provider_phone, source_name = source_name, otg_text = otg_text, freebie_text = freebie_text)
3584
    return Template(html).substitute(info)
3635
    return Template(html).substitute(info)
3585
 
3636
 
3586
def enqueue_shipping_confirmation_email(order):
3637
def enqueue_shipping_confirmation_email(order):
3587
    # Calling helper service on production
3638
    # Calling helper service on production
3588
    helperClient = HelperClient(host_key = "helper_service_server_host_prod").get_client()
3639
    helperClient = HelperClient(host_key = "helper_service_server_host_prod").get_client()
Line 4730... Line 4781...
4730
    invNum = str(recharge.invoiceNumber)
4781
    invNum = str(recharge.invoiceNumber)
4731
    billingTime = recharge.responseTime
4782
    billingTime = recharge.responseTime
4732
    payMethod = recharge.payMethod
4783
    payMethod = recharge.payMethod
4733
    return __printRechargeInvoice(filename, operator, amount, telNum, customerName, invNum, billingTime, payMethod)
4784
    return __printRechargeInvoice(filename, operator, amount, telNum, customerName, invNum, billingTime, payMethod)
4734
 
4785
 
-
 
4786
def split_freebie_order(order_id, splitReason, shippingDate):
-
 
4787
    order = get_order(order_id)
-
 
4788
    freebie_order = Order()
-
 
4789
    
-
 
4790
    freebie_order.transaction = order.transaction
-
 
4791
    
-
 
4792
    freebie_order.customer_id = order.customer_id
-
 
4793
    freebie_order.customer_email = order.customer_email
-
 
4794
    freebie_order.customer_name = order.customer_name
-
 
4795
    freebie_order.customer_pincode = order.customer_pincode
-
 
4796
    freebie_order.customer_address1 = order.customer_address1
-
 
4797
    freebie_order.customer_address2 = order.customer_address2
-
 
4798
    freebie_order.customer_city = order.customer_city
-
 
4799
    freebie_order.customer_state = order.customer_state
-
 
4800
    freebie_order.customer_mobilenumber = order.customer_mobilenumber
-
 
4801
    freebie_order.total_weight = order.total_weight
-
 
4802
    freebie_order.total_amount = 0.01
-
 
4803
    freebie_order.status = OrderStatus.SUBMITTED_FOR_PROCESSING
-
 
4804
    freebie_order.statusDescription = "In Process";
-
 
4805
    freebie_order.created_timestamp = datetime.datetime.now()
-
 
4806
    freebie_order.cod = 0
-
 
4807
    freebie_order.orderType = OrderType.B2C
-
 
4808
    freebie_order.pickupStoreId = 0
-
 
4809
    freebie_order.otg = 0
-
 
4810
    freebie_order.insurer = 0
-
 
4811
    freebie_order.insuranceAmount = 0
-
 
4812
    
-
 
4813
    logistics_client = LogisticsClient().get_client()
-
 
4814
    logistics_info = logistics_client.getLogisticsInfo(order.customer_pincode, 1, DeliveryType.PREPAID, PickUpType.COURIER)
-
 
4815
    freebie_order.logistics_provider_id = logistics_info.providerId;
-
 
4816
    freebie_order.tracking_id = logistics_info.airway_billno
-
 
4817
    freebie_order.airwaybill_no = logistics_info.airway_billno
-
 
4818
    freebie_order.expected_delivery_time = (to_py_date(shippingDate)+datetime.timedelta(days=logistics_info.deliveryTime)).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)  
-
 
4819
    freebie_order.promised_delivery_time = order.promised_delivery_time
-
 
4820
    freebie_order.expected_shipping_time = to_py_date(shippingDate)
-
 
4821
    freebie_order.promised_shipping_time = order.promised_shipping_time
-
 
4822
 
-
 
4823
    inventory_client = InventoryClient().get_client()
-
 
4824
    item_availability = inventory_client.getItemAvailabilityAtLocation(freebie_order.lineitems[0].item_id,1)
-
 
4825
    freebie_order.warehouse_id = item_availability[2]
-
 
4826
    freebie_order.fulfillmentWarehouseId = item_availability[0]
-
 
4827
 
-
 
4828
    catalog_client = CatalogClient().get_client()
-
 
4829
    item = catalog_client.getItem(order.freebieItemId)
-
 
4830
    freebie_order.total_weight = item.weight
-
 
4831
    
-
 
4832
    litem = LineItem()
-
 
4833
    litem.item_id = item.id
-
 
4834
    litem.productGroup = item.productGroup
-
 
4835
    litem.brand = item.brand
-
 
4836
    litem.model_number = item.modelNumber
-
 
4837
    litem.model_name = item.modelName
-
 
4838
    litem.color = item.color
-
 
4839
    litem.extra_info = "Freebie Order for Order ID " + str(order.id)
-
 
4840
    litem.quantity = 1
-
 
4841
    litem.unit_price = 0.01
-
 
4842
    litem.unit_weight = item.weight
-
 
4843
    litem.total_price = 0.01
-
 
4844
    litem.total_weight = item.weight
-
 
4845
    litem.vatRate = 5.0
-
 
4846
    
-
 
4847
    freebie_order.lineitems.append(litem)
-
 
4848
    
-
 
4849
    session.commit()
-
 
4850
   
-
 
4851
    inventory_client.reserveItemInWarehouse(freebie_order.lineitems[0].item_id, item_availability[0], 1, freebie_order.id, datetime.datetime.now(), order.promised_shipping_time, 1)
-
 
4852
   
-
 
4853
    parentOrderAttribute = Attribute()
-
 
4854
    parentOrderAttribute.orderId = freebie_order.id
-
 
4855
    parentOrderAttribute.name = "parentOrderIdForFreebie"
-
 
4856
    parentOrderAttribute.value = str(order.id)
-
 
4857
    
-
 
4858
    freebieOrderAttribute = Attribute()
-
 
4859
    freebieOrderAttribute.orderId = order.id
-
 
4860
    freebieOrderAttribute.name = "freebieOrderId"
-
 
4861
    freebieOrderAttribute.value = str(freebie_order.id)
-
 
4862
    session.commit()
-
 
4863
    
-
 
4864
    return freebie_order
-
 
4865
 
4735
def __printRechargeInvoice(filename, operator, amount, telNum, customerName, invNum, billingTime, payMethod): 
4866
def __printRechargeInvoice(filename, operator, amount, telNum, customerName, invNum, billingTime, payMethod): 
4736
    PAGE_HEIGHT=defaultPageSize[1];
4867
    PAGE_HEIGHT=defaultPageSize[1];
4737
    styles = getSampleStyleSheet()
4868
    styles = getSampleStyleSheet()
4738
    styles.add(ParagraphStyle(name='prologue', alignment=TA_CENTER, fontName="Courier", rightIndent = 5, fontSize=10), alias='sH')
4869
    styles.add(ParagraphStyle(name='prologue', alignment=TA_CENTER, fontName="Courier", rightIndent = 5, fontSize=10), alias='sH')
4739
    styles.add(ParagraphStyle(name='text', alignment=TA_JUSTIFY, fontName="Courier", fontSize=10), alias='text')
4870
    styles.add(ParagraphStyle(name='text', alignment=TA_JUSTIFY, fontName="Courier", fontSize=10), alias='text')