Esempio n. 1
0
    def test_amounts(self):
        b = SubmitSmBill(self.user)

        b.setAmount('submit_sm', 1.1)
        b.setAmount('submit_sm_resp', 2)
        self.assertEqual(b.getAmount('submit_sm'), 1.1)
        self.assertEqual(b.getAmount('submit_sm_resp'), 2)
        self.assertEqual(b.getTotalAmounts(), 3.1)
Esempio n. 2
0
    def test_default(self):
        b = SubmitSmBill(self.user)

        self.assertEqual(b.getAmount('submit_sm'), 0.0)
        self.assertEqual(b.getAmount('submit_sm_resp'), 0.0)
        self.assertEqual(b.getAction('decrement_submit_sm_count'), 0)
        self.assertNotEquals(b.bid, None)
        self.assertEqual(b.user, self.user)
Esempio n. 3
0
    def test_amounts(self):
        b = SubmitSmBill(self.user)

        b.setAmount('submit_sm', 1.1)
        b.setAmount('submit_sm_resp', 2)
        self.assertEqual(b.getAmount('submit_sm'), 1.1)
        self.assertEqual(b.getAmount('submit_sm_resp'), 2)
        self.assertEqual(b.getTotalAmounts(), 3.1)
Esempio n. 4
0
    def test_default(self):
        b = SubmitSmBill(self.user)

        self.assertEqual(b.getAmount('submit_sm'), 0.0)
        self.assertEqual(b.getAmount('submit_sm_resp'), 0.0)
        self.assertEqual(b.getAction('decrement_submit_sm_count'), 0)
        self.assertNotEquals(b.bid, None)
        self.assertEqual(b.user, self.user)
Esempio n. 5
0
    def getBillFor(self, user):
        """This will return the exact bill for user depending on his defined quotas
        """

        if not isinstance(user, User):
            raise InvalidRouteParameterError("user is not an instance of User")

        # Init
        bill = SubmitSmBill(user)

        # Route billing processing
        # [RULE 1] If route is rated and user's balance is not unlimited (balance != None) then
        # user will be billed for the selected route rate.
        if self.getRate() > 0 and user.mt_credential.getQuota('balance') is not None:
            early_decrement_balance_percent = user.mt_credential.getQuota('early_decrement_balance_percent')
            route_rate = self.getRate()
            # if early_decrement_balance_percent is defined then user will be:
            # - First: billed early_decrement_balance_percent % of the route rate on submit_sm
            # - Second: billed for the rest of the route rate on submit_sm_resp reception
            # If early_decrement_balance_percent is None (undefined) then the route rate will be
            # billed on submit_sm with no care about submit_sm_resp
            if early_decrement_balance_percent is not None:
                bill.setAmount('submit_sm', route_rate * early_decrement_balance_percent / 100)
                bill.setAmount('submit_sm_resp', route_rate - bill.getAmount('submit_sm'))
            else:
                bill.setAmount('submit_sm', route_rate)
                bill.setAmount('submit_sm_resp', 0)

        # [RULE 2] if user's submit_sm_count is not unlimited (!=None) then decrement it when sending
        # submit_sm
        if user.mt_credential.getQuota('submit_sm_count') is not None:
            bill.setAction('decrement_submit_sm_count', 1)

        return bill
Esempio n. 6
0
    def getBillFor(self, user):
        """This will return the exact bill for user depending on his defined quotas
        """
        
        if not isinstance(user, User):
            raise InvalidRouteParameterError("user is not an instance of User")
        
        # Init
        bill = SubmitSmBill(user)

        # Route billing processing
        # [RULE 1] If route is rated and user's balance is not unlimited (balance != None) then 
        # user will be billed for the selected route rate.
        if self.getRate() > 0 and user.mt_credential.getQuota('balance') is not None:
            early_decrement_balance_percent = user.mt_credential.getQuota('early_decrement_balance_percent')
            route_rate = self.getRate()
            # if early_decrement_balance_percent is defined then user will be:
            # - First: billed early_decrement_balance_percent % of the route rate on submit_sm
            # - Second: billed for the rest of the route rate on submit_sm_resp reception
            # If early_decrement_balance_percent is None (undefined) then the route rate will be
            # billed on submit_sm with no care about submit_sm_resp
            if early_decrement_balance_percent is not None:
                bill.setAmount('submit_sm', route_rate * early_decrement_balance_percent / 100)
                bill.setAmount('submit_sm_resp', route_rate - bill.getAmount('submit_sm'))
            else:
                bill.setAmount('submit_sm', route_rate)
                bill.setAmount('submit_sm_resp', 0)
        
        # [RULE 2] if user's submit_sm_count is not unlimited (!=None) then decrement it when sending
        # submit_sm
        if user.mt_credential.getQuota('submit_sm_count') is not None:
            bill.setAction('decrement_submit_sm_count', 1)
        
        return bill