Subversion Repositories SmartDukaan

Rev

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

Rev 18756 Rev 18769
Line 138... Line 138...
138
        OrderStatus.DOA_CERT_INVALID : -5
138
        OrderStatus.DOA_CERT_INVALID : -5
139
}
139
}
140
 
140
 
141
creditTxnMultiplierMap = {
141
creditTxnMultiplierMap = {
142
    CreditTxnType.BLOCKED : 1,
142
    CreditTxnType.BLOCKED : 1,
143
    CreditTxnType.BLOCK_REVERSED : -1, 
143
    CreditTxnType.BLOCKED_REVERSED : -1, 
144
    CreditTxnType.LOAN : -1,
144
    CreditTxnType.LOAN : -1,
145
    CreditTxnType.CORRECTION : 1                  
145
    CreditTxnType.CORRECTION : 1                  
146
}
146
}
147
 
147
 
148
loanTxnMultplierMap = {
148
loanTxnMultplierMap = {
Line 2363... Line 2363...
2363
                    total_amount = total_amount + ordObj.total_amount + ordObj.shippingCost - ordObj.gvAmount
2363
                    total_amount = total_amount + ordObj.total_amount + ordObj.shippingCost - ordObj.gvAmount
2364
                creditObj = __creditHistoryObj(order.customer_id, 1, order.transaction.id, total_amount, CreditTxnType.LOAN, order.logisticsTransactionId)
2364
                creditObj = __creditHistoryObj(order.customer_id, 1, order.transaction.id, total_amount, CreditTxnType.LOAN, order.logisticsTransactionId)
2365
                creditTxns = []
2365
                creditTxns = []
2366
                creditTxns.append(creditObj)
2366
                creditTxns.append(creditObj)
2367
                try:
2367
                try:
2368
                    process_credit_transaction(order.transaction.id, order.customer_id, 1, creditTxns)
2368
                    process_credit_transaction(order.transaction.id, order.customer_id, 1, creditTxns, order.invoice_number)
2369
                except:
2369
                except:
2370
                    traceback.print_exc()
2370
                    traceback.print_exc()
2371
                    session.rollback()
2371
                    session.rollback()
2372
                    return
2372
                    return
2373
            session.commit()
2373
            session.commit()
Line 2415... Line 2415...
2415
                total_amount = total_amount + ordObj.total_amount + ordObj.shippingCost - ordObj.gvAmount
2415
                total_amount = total_amount + ordObj.total_amount + ordObj.shippingCost - ordObj.gvAmount
2416
            creditObj = __creditHistoryObj(order.customer_id, 1, order.transaction.id, total_amount, CreditTxnType.LOAN, order.logisticsTransactionId)
2416
            creditObj = __creditHistoryObj(order.customer_id, 1, order.transaction.id, total_amount, CreditTxnType.LOAN, order.logisticsTransactionId)
2417
            creditTxns = []
2417
            creditTxns = []
2418
            creditTxns.append(creditObj)
2418
            creditTxns.append(creditObj)
2419
            try:
2419
            try:
2420
                process_credit_transaction(order.transaction.id, order.customer_id, 1, creditTxns)
2420
                process_credit_transaction(order.transaction.id, order.customer_id, 1, creditTxns, order.invoice_number)
2421
            except:
2421
            except:
2422
                traceback.print_exc()
2422
                traceback.print_exc()
2423
                session.rollback()
2423
                session.rollback()
2424
                return
2424
                return
2425
        
2425
        
Line 3056... Line 3056...
3056
            if order.transaction.payment_option == capitalFloatPayMethod:
3056
            if order.transaction.payment_option == capitalFloatPayMethod:
3057
                total_amount = 0
3057
                total_amount = 0
3058
                for ordObj in grouppedOrdersList:
3058
                for ordObj in grouppedOrdersList:
3059
                    total_amount = total_amount + ordObj.total_amount + ordObj.shippingCost - ordObj.gvAmount
3059
                    total_amount = total_amount + ordObj.total_amount + ordObj.shippingCost - ordObj.gvAmount
3060
                
3060
                
3061
                creditObj = __creditHistoryObj(order.customer_id, 1, order.transaction.id, total_amount, CreditTxnType.BLOCK_REVERSED, order.logisticsTransactionId)
3061
                creditObj = __creditHistoryObj(order.customer_id, 1, order.transaction.id, total_amount, CreditTxnType.BLOCKED_REVERSED, order.logisticsTransactionId)
3062
                creditTxns = []
3062
                creditTxns = []
3063
                creditTxns.append(creditObj)
3063
                creditTxns.append(creditObj)
3064
                try:
3064
                try:
3065
                    process_credit_transaction(order.transaction.id, order.customer_id, 1, creditTxns)
3065
                    process_credit_transaction(order.transaction.id, order.customer_id, 1, creditTxns)
3066
                except:
3066
                except:
Line 3495... Line 3495...
3495
                order.statusDescription = "Order Cancelled on customer request"
3495
                order.statusDescription = "Order Cancelled on customer request"
3496
                order.received_return_timestamp = datetime.datetime.now()
3496
                order.received_return_timestamp = datetime.datetime.now()
3497
            
3497
            
3498
            if order.transaction.payment_option == capitalFloatPayMethod:
3498
            if order.transaction.payment_option == capitalFloatPayMethod:
3499
                total_amount = order.total_amount + order.shippingCost - order.gvAmount
3499
                total_amount = order.total_amount + order.shippingCost - order.gvAmount
-
 
3500
                shipping_id = str(order.id)
-
 
3501
                if order.logisticsTransactionId is not None:
-
 
3502
                    shipping_id = order.logisticsTransactionId
3500
                creditObj = __creditHistoryObj(order.customer_id, 1, order.transaction.id, total_amount, CreditTxnType.BLOCK_REVERSED, order.logisticsTransactionId)
3503
                creditObj = __creditHistoryObj(order.customer_id, 1, order.transaction.id, total_amount, CreditTxnType.BLOCKED_REVERSED, shipping_id)
3501
                creditTxns = []
3504
                creditTxns = []
3502
                creditTxns.append(creditObj)
3505
                creditTxns.append(creditObj)
3503
                try:
3506
                try:
3504
                    process_credit_transaction(order.transaction.id, order.customer_id, 1, creditTxns)
3507
                    process_credit_transaction(order.transaction.id, order.customer_id, 1, creditTxns)
3505
                except:
3508
                except:
Line 9048... Line 9051...
9048
        return True
9051
        return True
9049
    
9052
    
9050
def __get_user_sanction(sanctionId):
9053
def __get_user_sanction(sanctionId):
9051
    return UserSanction.get_by(id=sanctionId)
9054
    return UserSanction.get_by(id=sanctionId)
9052
 
9055
 
9053
def get_credit_history_records(paymentId, userId, creditorId, creditTxnType):
9056
def get_credit_history_records(paymentId, userId, creditorId, creditTxnType, limit=0, offset=0):
9054
    credit_hs_query = CreditHistory.query
9057
    credit_hs_query = CreditHistory.query
9055
    if paymentId:
9058
    if paymentId and paymentId>0:
9056
        credit_hs_query = credit_hs_query.filter(CreditHistory.payment_id==paymentId)
9059
        credit_hs_query = credit_hs_query.filter(CreditHistory.payment_id==paymentId)
9057
    if userId:
9060
    if userId and userId>0:
9058
        credit_hs_query = credit_hs_query.filter(CreditHistory.user_id==userId)
9061
        credit_hs_query = credit_hs_query.filter(CreditHistory.user_id==userId)
9059
    if creditorId:
9062
    if creditorId and creditorId>0:
9060
        credit_hs_query = credit_hs_query.filter(CreditHistory.creditor_id==creditorId)
9063
        credit_hs_query = credit_hs_query.filter(CreditHistory.creditor_id==creditorId)
9061
    if creditTxnType:
9064
    if creditTxnType:
9062
        credit_hs_query = credit_hs_query.filter(CreditHistory.credit_type==CreditTxnType._VALUES_TO_NAMES[creditTxnType])
9065
        credit_hs_query = credit_hs_query.filter(CreditHistory.credit_type==CreditTxnType._VALUES_TO_NAMES[creditTxnType])
-
 
9066
    credit_hs_query = credit_hs_query.offset(offset)
-
 
9067
    if limit:
-
 
9068
        credit_hs_query = credit_hs_query.limit(limit)
-
 
9069
    credit_hs_query = credit_hs_query.order_by(desc(CreditHistory.created))
9063
    return credit_hs_query.all()
9070
    return credit_hs_query.all()
9064
 
9071
 
9065
def process_credit_transaction(paymentId, userId, creditorId, creditTxns):
9072
def process_credit_transaction(paymentId, userId, creditorId, creditTxns, invoiceNumber=None):
9066
    us_query = UserSanction.query
9073
    us_query = UserSanction.query
9067
    if userId:
9074
    if userId:
9068
        us_query = us_query.filter(UserSanction.user_id == userId)
9075
        us_query = us_query.filter(UserSanction.user_id == userId)
9069
    if creditorId:
9076
    if creditorId:
9070
        us_query = us_query.filter(UserSanction.creditor_id == creditorId)
9077
        us_query = us_query.filter(UserSanction.creditor_id == creditorId)
Line 9090... Line 9097...
9090
    if creditHistoryTotal < 0:
9097
    if creditHistoryTotal < 0:
9091
        logging.info("Error: Credit History is Negative. Payment Id:- "+str(paymentId))
9098
        logging.info("Error: Credit History is Negative. Payment Id:- "+str(paymentId))
9092
        raise TransactionServiceException(222, "Error: Credit History is Negative. Payment Id:- "+str(paymentId))
9099
        raise TransactionServiceException(222, "Error: Credit History is Negative. Payment Id:- "+str(paymentId))
9093
    
9100
    
9094
    for creditTxn in creditTxns:
9101
    for creditTxn in creditTxns:
9095
        if creditTxn.credit_type in [CreditTxnType.BLOCK_REVERSED]:
9102
        if creditTxn.credit_type in [CreditTxnType.BLOCKED_REVERSED]:
9096
            amountToReversed = amountToReversed + creditTxn.amount
9103
            amountToReversed = amountToReversed + creditTxn.amount
9097
        if creditTxn.credit_type in [CreditTxnType.LOAN]:
9104
        if creditTxn.credit_type in [CreditTxnType.LOAN]:
9098
            amountToLoan = amountToLoan + creditTxn.amount
9105
            amountToLoan = amountToLoan + creditTxn.amount
9099
        if creditTxn.credit_type in [CreditTxnType.BLOCKED]:
9106
        if creditTxn.credit_type in [CreditTxnType.BLOCKED]:
9100
            amountToBlocked = amountToBlocked + creditTxn.amount   
9107
            amountToBlocked = amountToBlocked + creditTxn.amount   
Line 9129... Line 9136...
9129
                loanHistoryRec.creditor_id = creditorId
9136
                loanHistoryRec.creditor_id = creditorId
9130
                loanHistoryRec.payment_id = paymentId
9137
                loanHistoryRec.payment_id = paymentId
9131
                loanHistoryRec.amount = creditTxn.amount * loanTxnMultplierMap.get(creditTxn.credit_type)
9138
                loanHistoryRec.amount = creditTxn.amount * loanTxnMultplierMap.get(creditTxn.credit_type)
9132
                loanHistoryRec.credit_type = CreditTxnType._VALUES_TO_NAMES[creditTxn.credit_type]
9139
                loanHistoryRec.credit_type = CreditTxnType._VALUES_TO_NAMES[creditTxn.credit_type]
9133
                loanHistoryRec.loan_id = creditTxn.shipping_id
9140
                loanHistoryRec.loan_id = creditTxn.shipping_id
-
 
9141
                if invoiceNumber is not None:
-
 
9142
                    loanHistoryRec.invoiceNumber = invoiceNumber
9134
                if creditorDueDateMap.has_key(creditorId):
9143
                if creditorDueDateMap.has_key(creditorId):
9135
                    due_days = creditorDueDateMap.get(creditorId)
9144
                    due_days = creditorDueDateMap.get(creditorId)
9136
                    loanHistoryRec.due_date = datetime.datetime.now()+timedelta(days=due_days)
9145
                    loanHistoryRec.due_date = datetime.datetime.now()+timedelta(days=due_days)
9137
                else:
9146
                else:
9138
                    fetchCreditorDueDateMap()
9147
                    fetchCreditorDueDateMap()
Line 9149... Line 9158...
9149
    loanAmount = 0
9158
    loanAmount = 0
9150
    for loanHistory in loanhistoryRecords:
9159
    for loanHistory in loanhistoryRecords:
9151
        loanAmount = loanAmount + loanHistory.amount
9160
        loanAmount = loanAmount + loanHistory.amount
9152
    return loanAmount
9161
    return loanAmount
9153
 
9162
 
9154
def get_loan_history_records(paymentId, userId, creditorId, creditTxnType):
9163
def get_loan_history_records(paymentId, userId, creditorId, creditTxnType, limit=0, offset=0):
9155
    loan_hs_query = LoanHistory.query
9164
    loan_hs_query = LoanHistory.query
9156
    if paymentId:
9165
    if paymentId and paymentId>0:
9157
        loan_hs_query = loan_hs_query.filter(LoanHistory.payment_id==paymentId)
9166
        loan_hs_query = loan_hs_query.filter(LoanHistory.payment_id==paymentId)
9158
    if userId:
9167
    if userId and userId>0:
9159
        loan_hs_query = loan_hs_query.filter(LoanHistory.user_id==userId)
9168
        loan_hs_query = loan_hs_query.filter(LoanHistory.user_id==userId)
9160
    if creditorId:
9169
    if creditorId and creditorId>0:
9161
        loan_hs_query = loan_hs_query.filter(LoanHistory.creditor_id==creditorId)
9170
        loan_hs_query = loan_hs_query.filter(LoanHistory.creditor_id==creditorId)
9162
    if creditTxnType:
9171
    if creditTxnType:
9163
        loan_hs_query = loan_hs_query.filter(LoanHistory.credit_type==CreditTxnType._VALUES_TO_NAMES[creditTxnType])
9172
        loan_hs_query = loan_hs_query.filter(LoanHistory.credit_type==CreditTxnType._VALUES_TO_NAMES[creditTxnType])
-
 
9173
    loan_hs_query = loan_hs_query.offset(offset)
-
 
9174
    if limit:
-
 
9175
        loan_hs_query = loan_hs_query.limit(limit)
-
 
9176
    loan_hs_query = loan_hs_query.order_by(desc(LoanHistory.created))
9164
    return loan_hs_query.all()
9177
    return loan_hs_query.all()
9165
 
9178
 
9166
def process_loan_transaction(paymentId, userId, creditorId, loantxns):
9179
def process_loan_transaction(paymentId, userId, creditorId, loantxns):
9167
    us_query = UserSanction.query
9180
    us_query = UserSanction.query
9168
    if userId:
9181
    if userId:
Line 9226... Line 9239...
9226
                loanHistoryRec.creditor_id = creditorId
9239
                loanHistoryRec.creditor_id = creditorId
9227
                loanHistoryRec.payment_id = paymentId
9240
                loanHistoryRec.payment_id = paymentId
9228
                loanHistoryRec.amount = loanTxn.amount * loanTxnMultplierMap.get(loanTxn.credit_type)
9241
                loanHistoryRec.amount = loanTxn.amount * loanTxnMultplierMap.get(loanTxn.credit_type)
9229
                loanHistoryRec.credit_type = CreditTxnType._VALUES_TO_NAMES[loanTxn.credit_type]
9242
                loanHistoryRec.credit_type = CreditTxnType._VALUES_TO_NAMES[loanTxn.credit_type]
9230
                loanHistoryRec.loan_id = loanTxn.loan_id
9243
                loanHistoryRec.loan_id = loanTxn.loan_id
-
 
9244
                loanHistoryRec.invoiceNumber = loanTxn.invoiceNumber
9231
                loanRec = LoanHistory.get_by(payment_id=paymentId,loan_id=loanTxn.loan_id, credit_type='LOAN')
9245
                loanRec = LoanHistory.get_by(payment_id=paymentId,loan_id=loanTxn.loan_id, credit_type='LOAN')
9232
                userSanction.loan = userSanction.loan + (loanTxn.amount * loanTxnMultplierMap.get(loanTxn.credit_type))
9246
                userSanction.loan = userSanction.loan + (loanTxn.amount * loanTxnMultplierMap.get(loanTxn.credit_type))
9233
        else:
9247
        else:
9234
            loanHistoryRec = LoanHistory.get_by(payment_id=paymentId,loan_id=loanTxn.loan_id, credit_type=CreditTxnType._VALUES_TO_NAMES[loanTxn.credit_type])
9248
            loanHistoryRec = LoanHistory.get_by(payment_id=paymentId,loan_id=loanTxn.loan_id, credit_type=CreditTxnType._VALUES_TO_NAMES[loanTxn.credit_type])
9235
            if loanHistoryRec is None:
9249
            if loanHistoryRec is None:
Line 9238... Line 9252...
9238
                loanHistoryRec.creditor_id = creditorId
9252
                loanHistoryRec.creditor_id = creditorId
9239
                loanHistoryRec.payment_id = paymentId
9253
                loanHistoryRec.payment_id = paymentId
9240
                loanHistoryRec.amount = loanTxn.amount * loanTxnMultplierMap.get(loanTxn.credit_type)
9254
                loanHistoryRec.amount = loanTxn.amount * loanTxnMultplierMap.get(loanTxn.credit_type)
9241
                loanHistoryRec.credit_type = CreditTxnType._VALUES_TO_NAMES[loanTxn.credit_type]
9255
                loanHistoryRec.credit_type = CreditTxnType._VALUES_TO_NAMES[loanTxn.credit_type]
9242
                loanHistoryRec.loan_id = loanTxn.loan_id
9256
                loanHistoryRec.loan_id = loanTxn.loan_id
-
 
9257
                loanHistoryRec.invoiceNumber = loanTxn.invoiceNumber
9243
                if loanTxn.credit_type in [CreditTxnType.LOAN]:
9258
                if loanTxn.credit_type in [CreditTxnType.LOAN]:
9244
                    if creditorDueDateMap.has_key(creditorId):
9259
                    if creditorDueDateMap.has_key(creditorId):
9245
                        due_days = creditorDueDateMap.get(creditorId)
9260
                        due_days = creditorDueDateMap.get(creditorId)
9246
                        loanHistoryRec.due_date = datetime.datetime.now()+timedelta(days=due_days)
9261
                        loanHistoryRec.due_date = datetime.datetime.now()+timedelta(days=due_days)
9247
                    else:
9262
                    else:
Line 9255... Line 9270...
9255
                logging.info("Error: Entry already existed for "+str(paymentId) + " Loan Id:- "+str(loanTxn.loan_id) +" Loan Txn Type:- "+CreditTxnType._VALUES_TO_NAMES[loanTxn.credit_type])
9270
                logging.info("Error: Entry already existed for "+str(paymentId) + " Loan Id:- "+str(loanTxn.loan_id) +" Loan Txn Type:- "+CreditTxnType._VALUES_TO_NAMES[loanTxn.credit_type])
9256
                raise TransactionServiceException(227, "Error: Entry already existed for "+str(paymentId) + " Loan Id:- "+str(loanTxn.loan_id) +" Loan Txn Type:- "+CreditTxnType._VALUES_TO_NAMES[loanTxn.credit_type])
9271
                raise TransactionServiceException(227, "Error: Entry already existed for "+str(paymentId) + " Loan Id:- "+str(loanTxn.loan_id) +" Loan Txn Type:- "+CreditTxnType._VALUES_TO_NAMES[loanTxn.credit_type])
9257
    session.commit()   
9272
    session.commit()   
9258
    return True
9273
    return True
9259
    
9274
    
9260
def __loanHistoryObj(user_id, creditor_id, paymentId, amount, credit_type, loan_id):
9275
def __loanHistoryObj(user_id, creditor_id, paymentId, amount, credit_type, loan_id, value_date=None, invoiceNumber=None):
9261
    loanobj = TLoanHistory()
9276
    loanobj = TLoanHistory()
9262
    loanobj.user_id = user_id
9277
    loanobj.user_id = user_id
9263
    loanobj.creditor_id = creditor_id    
9278
    loanobj.creditor_id = creditor_id    
9264
    loanobj.payment_id = paymentId
9279
    loanobj.payment_id = paymentId
9265
    loanobj.amount = amount
9280
    loanobj.amount = amount
9266
    loanobj.credit_type = credit_type
9281
    loanobj.credit_type = credit_type
9267
    loanobj.loan_id = loan_id
9282
    loanobj.loan_id = loan_id
-
 
9283
    if value_date is not None:
-
 
9284
        loanobj.value_date = to_java_date(value_date)
-
 
9285
    if invoiceNumber is not None:
-
 
9286
        loanobj.invoiceNumber = invoiceNumber
9268
    return loanobj
9287
    return loanobj
9269
 
9288
 
9270
def __creditHistoryObj(user_id, creditor_id, paymentId, amount, credit_type, shipping_id):
9289
def __creditHistoryObj(user_id, creditor_id, paymentId, amount, credit_type, shipping_id):
9271
    creditObj = TCreditHistory()
9290
    creditObj = TCreditHistory()
9272
    creditObj.user_id = user_id
9291
    creditObj.user_id = user_id