Subversion Repositories SmartDukaan

Rev

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

Rev 23003 Rev 23069
Line 93... Line 93...
93
    WarehouseServiceException
93
    WarehouseServiceException
94
from shop2020.utils.EmailAttachmentSender import mail, get_attachment_part, \
94
from shop2020.utils.EmailAttachmentSender import mail, get_attachment_part, \
95
    mail_html
95
    mail_html
96
from shop2020.utils.Utils import to_py_date, to_java_date, \
96
from shop2020.utils.Utils import to_py_date, to_java_date, \
97
    getSyncOperatorsForRecharge, generate_random_code
97
    getSyncOperatorsForRecharge, generate_random_code
98
from sqlalchemy.orm import aliased
98
from sqlalchemy.orm import aliased, joinedload
99
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
99
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
100
from sqlalchemy.sql import func
100
from sqlalchemy.sql import func
101
from sqlalchemy.sql.expression import and_, or_, desc, not_, distinct, cast, \
101
from sqlalchemy.sql.expression import and_, or_, desc, not_, distinct, cast, \
102
    between
102
    between
103
from string import Template
103
from string import Template
Line 1802... Line 1802...
1802
    if order.customer_id != customer_id:
1802
    if order.customer_id != customer_id:
1803
        raise TransactionServiceException(108, "order: " + str(order_id) + " does not belong to customer: " + str(customer_id))
1803
        raise TransactionServiceException(108, "order: " + str(order_id) + " does not belong to customer: " + str(customer_id))
1804
    return order
1804
    return order
1805
 
1805
 
1806
def get_all_orders(statuses, from_date, to_date, warehouse_id):
1806
def get_all_orders(statuses, from_date, to_date, warehouse_id):
1807
    query = Order.query
1807
    query = Order.query.options(joinedload('lineitems'))
1808
    if not len(statuses):
1808
    if not len(statuses):
1809
        query = query.filter(Order.status >= OrderStatus.COD_VERIFICATION_PENDING)
1809
        query = query.filter(Order.status >= OrderStatus.COD_VERIFICATION_PENDING)
1810
    else:
1810
    else:
1811
        query = query.filter(Order.status.in_(statuses))
1811
        query = query.filter(Order.status.in_(statuses))
1812
    if warehouse_id:
1812
    if warehouse_id:
Line 1817... Line 1817...
1817
    if to_date:
1817
    if to_date:
1818
        query = query.filter(Order.created_timestamp < to_date)
1818
        query = query.filter(Order.created_timestamp < to_date)
1819
    return query.all()
1819
    return query.all()
1820
 
1820
 
1821
def get_orders_in_batch(statuses=[], offset=0, limit=0, warehouse_id=None, source=0):
1821
def get_orders_in_batch(statuses=[], offset=0, limit=0, warehouse_id=None, source=0):
1822
    query = Order.query
1822
    query = Order.query.options(joinedload('lineitems'))
1823
    if warehouse_id:
1823
    if warehouse_id:
1824
        query = query.filter(Order.warehouse_id == warehouse_id)
1824
        query = query.filter(Order.warehouse_id == warehouse_id)
1825
    if source:
1825
    if source:
1826
        query = query.filter(Order.source == source)
1826
        query = query.filter(Order.source == source)
1827
    if statuses:
1827
    if statuses:
Line 1830... Line 1830...
1830
    if limit:
1830
    if limit:
1831
        query = query.limit(limit)
1831
        query = query.limit(limit)
1832
    return query.all()
1832
    return query.all()
1833
 
1833
 
1834
def get_orders_in_batch_as_promised_shipping(statuses=[], offset=0, limit=0, warehouse_id=None, source=0):
1834
def get_orders_in_batch_as_promised_shipping(statuses=[], offset=0, limit=0, warehouse_id=None, source=0):
1835
    query = Order.query
1835
    query = Order.query.options(joinedload('lineitems'))
1836
    if warehouse_id:
1836
    if warehouse_id:
1837
        query = query.filter(Order.warehouse_id == warehouse_id)
1837
        query = query.filter(Order.warehouse_id == warehouse_id)
1838
    if source:
1838
    if source:
1839
        query = query.filter(Order.source == source)
1839
        query = query.filter(Order.source == source)
1840
    if statuses:
1840
    if statuses:
Line 11506... Line 11506...
11506
        return False
11506
        return False
11507
    finally:
11507
    finally:
11508
        session.close()
11508
        session.close()
11509
 
11509
 
11510
 
11510
 
-
 
11511
def get_in_transit_orders():
-
 
11512
    try:
-
 
11513
        warehouseDbConnection = getDbConnection("localhost","root", "shop2020", "warehouse")
-
 
11514
    except:
-
 
11515
        raise TransactionServiceException(302, "Unable to connect to Warehouse System")
-
 
11516
    whCursor = warehouseDbConnection.cursor()
-
 
11517
    
11511
 
11518
 
11512
 
11519
 
11513
def is_shipment_cod(logisticsTransactionId):
11520
def is_shipment_cod(logisticsTransactionId):
11514
    orders = Order.query.filter_by(logisticsTransactionId=logisticsTransactionId).all()
11521
    orders = Order.query.filter_by(logisticsTransactionId=logisticsTransactionId).all()
11515
    net_payable = 0
11522
    net_payable = 0
Line 11518... Line 11525...
11518
            return False
11525
            return False
11519
        else:
11526
        else:
11520
            net_payable += order.net_payable_amount
11527
            net_payable += order.net_payable_amount
11521
    
11528
    
11522
    return True if net_payable > 0 else False
11529
    return True if net_payable > 0 else False
-
 
11530
 
-
 
11531
def get_intransit_orders_on_date_by_item_id(closingDate, itemId):
-
 
11532
    closingDateInclusive = to_py_date(closingDate) + datetime.timedelta(days=1)
-
 
11533
    orders = Order.query.options(joinedload('lineitems')).filter(LineItem.item_id==itemId).filter(Order.billing_timestamp < closingDateInclusive).filter(or_(Order.refund_timestamp >= closingDateInclusive, Order.delivery_timestamp >= closingDateInclusive)).all()
-
 
11534
    t_orders = []
-
 
11535
    for order in orders:
-
 
11536
        if order.lineitems[0].item_id==itemId:
-
 
11537
            t_orders.append(to_t_order(order))
-
 
11538
    return t_orders
-
 
11539
 
-
 
11540
def get_intransit_orders_on_date(closingDate):
-
 
11541
    closingDateInclusive = to_py_date(closingDate) + datetime.timedelta(days=1)
-
 
11542
    orders = Order.query.options(joinedload('lineitems')).filter(Order.billing_timestamp < closingDateInclusive).filter(or_(Order.refund_timestamp >= closingDateInclusive, Order.delivery_timestamp >= closingDateInclusive)).all()
-
 
11543
    return [to_t_order(order) for order in orders]
11523
    
11544
    
11524
    
11545
    
11525
 
11546
 
11526
 
11547
 
11527
 
11548