예제 #1
0
    def __get(self, date_from, date_to, date_format='%Y%m%d'):
        # get top up
        q = TopUp.query()

        if date_from:
            q = q.filter(TopUp.tran_date >= date_from)

        if date_to:
            q = q.filter(TopUp.tran_date <= date_to)

        q = q.filter(TopUp.void == False)
        top_ups = q.order(TopUp.tran_date).fetch()

        # sum amt
        top_up_list = []
        top_up_days = {}
        for top_up in top_ups:
            key = "%s" % (top_up.tran_date.strftime(date_format))

            top_up_day = None
            if top_up_days.has_key(key):
                top_up_day = top_up_days[key]
            else:
                top_up_day = TopUpSummaryViewModel()
                top_up_day.tran_date = top_up.tran_date
                top_up_days[key] = top_up_day
                top_up_list.append(top_up_day)

            top_up_day.sub_total += top_up.sub_total
            top_up_day.comm_amt += top_up.comm_amt
            top_up_day.amt += top_up.amt

        return top_up_list
예제 #2
0
 def __sum_car_top_up(self, closing_date):
     # get topup
     da = TopUpDataAccess()
     key = da.get_key(closing_date)
     
     q2 = TopUp.query(ancestor=key)
     q2 = q2.filter(TopUp.void==False)
     top_ups = q2.fetch()
     
     # sum by car
     top_up_cars = {}
     for top_up in top_ups:
         top_up_obj = None
         if top_up_cars.has_key(top_up.car_reg_no):
             top_up_obj = top_up_cars[top_up.car_reg_no]
         else:
             top_up_obj = {}
             top_up_obj['car_reg_no'] = top_up.car_reg_no
             top_up_obj['tran_date'] = top_up.tran_date
             top_up_obj['amt'] = 0
             top_up_cars[top_up.car_reg_no] = top_up_obj
             
         top_up_obj['amt'] += top_up.sub_total
         
     return top_up_cars
예제 #3
0
 def __get(self, date_from, date_to, date_format='%Y%m%d'):
     # get top up
     q = TopUp.query()
     
     if date_from:
         q = q.filter(TopUp.tran_date >= date_from)
         
     if date_to:
         q = q.filter(TopUp.tran_date <= date_to)
         
     q = q.filter(TopUp.void==False)
     top_ups = q.order(TopUp.tran_date).fetch()
     
     # sum amt
     top_up_list = []
     top_up_days = {}
     for top_up in top_ups:
         key = "%s" % (top_up.tran_date.strftime(date_format))
         
         top_up_day = None
         if top_up_days.has_key(key):
             top_up_day = top_up_days[key]
         else:
             top_up_day = TopUpSummaryViewModel()
             top_up_day.tran_date = top_up.tran_date
             top_up_days[key] = top_up_day
             top_up_list.append(top_up_day)
         
         top_up_day.sub_total += top_up.sub_total
         top_up_day.comm_amt += top_up.comm_amt
         top_up_day.amt += top_up.amt
     
     return top_up_list
예제 #4
0
    def post(self, agent_code):
        json_values = {}

        try:
            #get
            agent_code = self.request.get('agentCode')

            topups = TopUp.query(TopUp.agent_code == agent_code).fetch()

            data = []
            for topup in topups:
                data.append({
                    'carPlate':
                    topup.car_reg_no,
                    'tranDate':
                    DateTime.to_date_string(topup.tran_date),
                    'subTotal':
                    topup.sub_total,
                    'commission':
                    topup.comm_amt,
                    'amount':
                    topup.amt,
                    'tranCode':
                    topup.tran_code,
                })

            json_values['returnStatus'] = True
            json_values['data'] = data
        except Exception, ex:
            json_values['returnStatus'] = False
            json_values['returnMessage'] = str(ex)
예제 #5
0
 def __sum_agent_top_up(self, closing_date):
     # get topup
     da = TopUpDataAccess()
     key = da.get_key(closing_date)
     
     q2 = TopUp.query(ancestor=key)
     q2 = q2.filter(TopUp.void==False)
     top_ups = q2.fetch()
     
     # sum by agent
     top_up_agents = {}
     for top_up in top_ups:
         top_up_obj = None
         if top_up_agents.has_key(top_up.agent_code):
             top_up_obj = top_up_agents[top_up.agent_code]
         else:
             top_up_obj = {}
             top_up_obj['agent_code'] = top_up.agent_code
             top_up_obj['tran_date'] = top_up.tran_date
             top_up_obj['amt'] = 0
             top_up_agents[top_up.agent_code] = top_up_obj
             
         top_up_obj['amt'] += top_up.amt
         
     return top_up_agents
예제 #6
0
    def __sum_car_top_up(self, closing_date):
        # get topup
        da = TopUpDataAccess()
        key = da.get_key(closing_date)

        q2 = TopUp.query(ancestor=key)
        q2 = q2.filter(TopUp.void == False)
        top_ups = q2.fetch()

        # sum by car
        top_up_cars = {}
        for top_up in top_ups:
            top_up_obj = None
            if top_up_cars.has_key(top_up.car_reg_no):
                top_up_obj = top_up_cars[top_up.car_reg_no]
            else:
                top_up_obj = {}
                top_up_obj['car_reg_no'] = top_up.car_reg_no
                top_up_obj['tran_date'] = top_up.tran_date
                top_up_obj['amt'] = 0
                top_up_cars[top_up.car_reg_no] = top_up_obj

            top_up_obj['amt'] += top_up.sub_total

        return top_up_cars
예제 #7
0
    def __sum_agent_top_up(self, closing_date):
        # get topup
        da = TopUpDataAccess()
        key = da.get_key(closing_date)

        q2 = TopUp.query(ancestor=key)
        q2 = q2.filter(TopUp.void == False)
        top_ups = q2.fetch()

        # sum by agent
        top_up_agents = {}
        for top_up in top_ups:
            top_up_obj = None
            if top_up_agents.has_key(top_up.agent_code):
                top_up_obj = top_up_agents[top_up.agent_code]
            else:
                top_up_obj = {}
                top_up_obj['agent_code'] = top_up.agent_code
                top_up_obj['tran_date'] = top_up.tran_date
                top_up_obj['amt'] = 0
                top_up_agents[top_up.agent_code] = top_up_obj

            top_up_obj['amt'] += top_up.amt

        return top_up_agents
예제 #8
0
파일: topup.py 프로젝트: edwardsak/carpark
    def post(self):
        json_values = {}

        try:
            #get
            date_from = self.request.get('dateFrom')
            date_to = self.request.get('dateTo')
            agent_code = self.request.get('agentCode')

            q = TopUp.query()

            if date_from and len(date_from) > 0:
                date_from = DateTime.to_date(date_from)

            if date_to and len(date_to) > 0:
                date_to = DateTime.to_date(date_to)

            if agent_code:
                q = q.filter(TopUp.agent_code == agent_code)

            if (not date_from and date_to):
                raise Exception('You must enter a Date.')

            topups = q.fetch()

            data = []
            for topup in topups:
                data.append({
                    'tranCode':
                    topup.tran_code,
                    'carPlate':
                    topup.car_reg_no,
                    'tranDate':
                    DateTime.to_date_string(topup.tran_date),
                    'agentCode':
                    topup.agent_code,
                    'subTotal':
                    topup.sub_total,
                    'commission':
                    topup.comm_amt,
                    'amount':
                    topup.amt,
                })

            json_values['returnStatus'] = True
            json_values['data'] = data
        except Exception, ex:
            json_values['returnStatus'] = False
            json_values['returnMessage'] = str(ex)
예제 #9
0
    def post(self):
        json_values = {}

        try:
            date_from = self.request.get('dateFrom')
            date_to = self.request.get("dateTo")
            carPlate = self.request.get('carPlate')
            current_agent = self.current_agent()
            agent_code = current_agent.code

            q = TopUp.query()

            if date_from and len(date_from) > 0:
                date_from = DateTime.to_date(date_from)
                q = q.filter(TopUp.tran_date >= date_from)

            if date_to and len(date_to) > 0:
                date_to = DateTime.to_date(date_to)
                q = q.filter(TopUp.tran_date <= date_to)

            if carPlate:
                q = q.filter(TopUp.car_reg_no == carPlate)

            if (not date_from and date_to and carPlate):
                q = q.filter(TopUp.agent_code == agent_code)

            topUps = q.fetch()

            # create json
            data = []
            for topUp in topUps:
                data.append({
                    'agentCode': topUp.agent_code,
                    'tranCode': topUp.tran_code,
                    'carPlate': topUp.car_reg_no,
                    'date': DateTime.to_date_string(topUp.tran_date),
                    'subTotal': topUp.sub_total,
                    'commission': topUp.comm_amt,
                    'amount': topUp.amt,
                })

            json_values['returnStatus'] = True
            json_values['data'] = data
        except Exception, ex:
            json_values['returnStatus'] = False
            json_values['returnMessage'] = str(ex)
예제 #10
0
    def get(self, tran_code):
        # validate agent is logined or not
        # if not redirect to login page
        if self.authenticate() == False:
            return

        current_agent = self.current_agent()
        topups = TopUp.query(TopUp.tran_code == tran_code).get()

        template_values = {
            'title': 'Borneo Ixora Co',
            'today': DateTime.to_date_string(DateTime.malaysia_today()),
            'current_agent': current_agent,
            'topups': topups
        }

        template = JINJA_ENVIRONMENT.get_template('topup/receipt.html')
        self.response.write(template.render(template_values))
예제 #11
0
    def get(self, agent_code):
        # validate agent is logined or not
        # if not redirect to login page
        if self.authenticate() == False:
            return

        current_user = self.current_user()

        topup = TopUp.query(TopUp.agent_code == agent_code).get()
        agent = Agent.query(Agent.code == agent_code).get()

        template_values = {
            'title': 'Detail Top Up List',
            'today': DateTime.to_date_string(DateTime.malaysia_today()),
            'current_user': current_user,
            'topup': topup,
            'agent': agent
        }

        template = JINJA_ENVIRONMENT.get_template('topup/detail.html')
        self.response.write(template.render(template_values))
예제 #12
0
 def get(self, car_reg_no, tran_date):
     # get bf amt
     bal_amt = 0
     bal_start_date = None
     
     car_mv = CarMovement.query(CarMovement.movement_date <= tran_date - timedelta(days=1)
                                ).order(-CarMovement.movement_date).get()
     
     if car_mv:
         bal_amt = car_mv.bal_amt
         bal_start_date = car_mv.movement_date + timedelta(days=1)
         
     # get trans
     trans = Tran.query(
                        Tran.tran_date >= bal_start_date,
                        Tran.car_reg_no==car_reg_no
                        ).order(Tran.tran_date, Tran.seq).fetch()
         
     registers = Register.query(
                                Register.tran_date >= bal_start_date,
                                Register.car_reg_no==car_reg_no,
                                Charge.void==False,
                                ).fetch()
                                
     top_ups = TopUp.query(
                           TopUp.tran_date >= bal_start_date,
                           TopUp.car_reg_no==car_reg_no,
                           Charge.void==False,
                           ).fetch()
                                
     charges = Charge.query(
                            Charge.tran_date >= bal_start_date,
                            Charge.car_reg_no==car_reg_no,
                            Charge.void==False,
                            ).fetch()
                                
     # group tran by tran_code
     mix_tran_codes = {}
     for register in registers:
         mix_tran_codes[register.tran_code] = register
         
     for top_up in top_ups:
         mix_tran_codes[top_up.tran_code] = top_up
         
     for charge in charges:
         mix_tran_codes[charge.tran_code] = charge
         
     # ppl records
     return_values = []
     
     # bf
     tran_bf_vm = StatementViewModel()
     tran_bf_vm.tran_date = bal_start_date
     tran_bf_vm.description = "B/F"
     tran_bf_vm.bal_amt = bal_amt
     return_values.append(tran_bf_vm)
     
     for tran in trans:
         tran_vm = StatementViewModel()
         tran_vm.bf_amt = bal_amt
         tran_vm.tran_date = tran.tran_date
         tran_vm.tran_code = tran.tran_code
         tran_vm.tran_type = tran.tran_type
         tran_vm.car_reg_no = tran.car_reg_no
         
         if mix_tran_codes.has_key(tran.tran_code):
             mix_tran = mix_tran_codes[tran.tran_code]
             
             if tran.tran_type == Tran.TRAN_TYPE_REGISTER:
                 tran_vm.description = 'Register'
                 tran_vm.db_amt = mix_tran.sub_total
             elif tran.tran_type == Tran.TRAN_TYPE_TOP_UP:
                 tran_vm.description = 'Top Up'
                 tran_vm.db_amt = mix_tran.sub_total
             elif tran.tran_type == Tran.TRAN_TYPE_CHARGE:
                 tran_vm.description = 'Charge'
                 tran_vm.cr_amt = mix_tran.sub_total
                 
         tran_vm.cal_bal_amt()
         bal_amt = tran_vm.bal_amt
         
         return_values.append(tran_vm)
             
     return return_values
예제 #13
0
    def __get(self, date_from, date_to, date_format='%Y%m%d'):
        # get buy
        q_buy = Buy.query()

        if date_from:
            q_buy = q_buy.filter(Buy.tran_date >= date_from)

        if date_to:
            q_buy = q_buy.filter(Buy.tran_date <= date_to)

        q_buy = q_buy.filter(Buy.void == False)
        buys = q_buy.order(Buy.tran_date).fetch()

        # get top_up
        q_top_up = TopUp.query()

        if date_from:
            q_top_up = q_top_up.filter(TopUp.tran_date >= date_from)

        if date_to:
            q_top_up = q_top_up.filter(TopUp.tran_date <= date_to)

        q_top_up = q_top_up.filter(TopUp.void == False)
        top_ups = q_top_up.order(TopUp.tran_date).fetch()

        # sum amt
        sale_list = []
        sale_days = {}

        for buy in buys:
            key = "%s" % (buy.tran_date.strftime(date_format))

            sale = None
            if sale_days.has_key(key):
                sale = sale_days[key]
            else:
                sale = SaleViewModel()
                sale.tran_date = buy.tran_date
                sale_days[key] = sale
                sale_list.append(sale)

            sale.buy_sub_total += buy.sub_total
            sale.buy_comm_amt += buy.comm_amt
            sale.buy_amt += buy.amt

        for top_up in top_ups:
            key = "%s" % (top_up.tran_date.strftime(date_format))

            sale = None
            if sale_days.has_key(key):
                sale = sale_days[key]
            else:
                sale = SaleViewModel()
                sale.tran_date = top_up.tran_date
                sale_days[key] = sale
                sale_list.append(sale)

            sale.top_up_sub_total += top_up.sub_total
            sale.top_up_comm_amt += top_up.comm_amt
            sale.top_up_amt += top_up.amt

        # cal amt
        for sale in sale_list:
            sale.cal_sub_total()
            sale.cal_amt()

        return sale_list
예제 #14
0
 def fetch(self, tran_date, agent_code=None, tran_code=None):
     key = self.get_key(tran_date, agent_code, tran_code)
     return TopUp.query(ancestor=key).fetch()
예제 #15
0
 def get(self, agent_code, tran_date):
     # get bf amt
     bal_amt = 0
     bal_start_date = None
     
     agent_mv = AgentMovement.query(
                                  AgentMovement.movement_date <= tran_date - timedelta(days=1)
                                  ).order(-AgentMovement.movement_date).get()
     
     if agent_mv:
         bal_amt = agent_mv.bal_amt
         bal_start_date = agent_mv.movement_date + timedelta(days=1)
         
     # get trans
     trans = Tran.query(
                        Tran.tran_date >= bal_start_date,
                        Tran.agent_code==agent_code
                        ).order(Tran.tran_date, Tran.seq).fetch()
     
     buys = Buy.query(
                      Buy.tran_date >= bal_start_date,
                      Buy.agent_code==agent_code,
                      Buy.void==False,
                      ).fetch()
                            
     deposits = Deposit.query(
                            Deposit.tran_date >= bal_start_date,
                            Deposit.agent_code==agent_code,
                            Deposit.void==False,
                            ).fetch()
                            
     registers = Register.query(
                                Register.tran_date >= bal_start_date,
                                Register.agent_code==agent_code,
                                Register.void==False,
                                ).fetch()
                                
     top_ups = TopUp.query(
                           TopUp.tran_date >= bal_start_date,
                           TopUp.agent_code==agent_code,
                           TopUp.void==False,
                           ).fetch()
                                
     # group tran by tran_code
     mix_tran_codes = {}
     for buy in buys:
         mix_tran_codes[buy.tran_code] = buy
         
     for deposit in deposits:
         mix_tran_codes[deposit.tran_code] = deposit
         
     for register in registers:
         mix_tran_codes[register.tran_code] = register
         
     for top_up in top_ups:
         mix_tran_codes[top_up.tran_code] = top_up
         
     # ppl records
     return_values = []
     
     # bf
     tran_bf_vm = StatementViewModel()
     tran_bf_vm.tran_date = bal_start_date
     tran_bf_vm.description = "B/F"
     tran_bf_vm.bal_amt = bal_amt
     return_values.append(tran_bf_vm)
     
     for tran in trans:
         tran_vm = StatementViewModel()
         tran_vm.bf_amt = bal_amt
         tran_vm.tran_date = tran.tran_date
         tran_vm.tran_code = tran.tran_code
         tran_vm.tran_type = tran.tran_type
         tran_vm.agent_code = tran.agent_code
         
         if mix_tran_codes.has_key(tran.tran_code):
             mix_tran = mix_tran_codes[tran.tran_code]
             
             if tran.tran_type == Tran.TRAN_TYPE_BUY:
                 tran_vm.description = 'Buy %s Tag(s)' % (mix_tran.qty)
             elif tran.tran_type == Tran.TRAN_TYPE_DEPOSIT:
                 tran_vm.description = 'Deposit'
                 tran_vm.db_amt = mix_tran.amt
             elif tran.tran_type == Tran.TRAN_TYPE_REGISTER:
                 tran_vm.description = "Register Car Reg. No. '%s'" % (mix_tran.car_reg_no)
             elif tran.tran_type == Tran.TRAN_TYPE_TOP_UP:
                 tran_vm.description = "Top Up Car Reg. No. '%s'" % (mix_tran.car_reg_no)
                 tran_vm.cr_amt = mix_tran.amt
                 
         tran_vm.cal_bal_amt()
         bal_amt = tran_vm.bal_amt
         
         return_values.append(tran_vm)
             
     return return_values
예제 #16
0
 def get(self, tran_date, agent_code, tran_code):
     key = self.get_key(tran_date, agent_code, tran_code)
     return TopUp.query(ancestor=key).get()
예제 #17
0
 def __get(self, date_from, date_to, date_format='%Y%m%d'):
     # get buy
     q_buy = Buy.query()
     
     if date_from:
         q_buy = q_buy.filter(Buy.tran_date >= date_from)
         
     if date_to:
         q_buy = q_buy.filter(Buy.tran_date <= date_to)
         
     q_buy = q_buy.filter(Buy.void==False)
     buys = q_buy.order(Buy.tran_date).fetch()
     
     # get top_up
     q_top_up = TopUp.query()
     
     if date_from:
         q_top_up = q_top_up.filter(TopUp.tran_date >= date_from)
         
     if date_to:
         q_top_up = q_top_up.filter(TopUp.tran_date <= date_to)
         
     q_top_up = q_top_up.filter(TopUp.void==False)
     top_ups = q_top_up.order(TopUp.tran_date).fetch()
     
     # sum amt
     sale_list = []
     sale_days = {}
     
     for buy in buys:
         key = "%s" % (buy.tran_date.strftime(date_format))
         
         sale = None
         if sale_days.has_key(key):
             sale = sale_days[key]
         else:
             sale = SaleViewModel()
             sale.tran_date = buy.tran_date
             sale_days[key] = sale
             sale_list.append(sale)
             
         sale.buy_sub_total += buy.sub_total
         sale.buy_comm_amt += buy.comm_amt
         sale.buy_amt += buy.amt
         
     for top_up in top_ups:
         key = "%s" % (top_up.tran_date.strftime(date_format))
         
         sale = None
         if sale_days.has_key(key):
             sale = sale_days[key]
         else:
             sale = SaleViewModel()
             sale.tran_date = top_up.tran_date
             sale_days[key] = sale
             sale_list.append(sale)
         
         sale.top_up_sub_total += top_up.sub_total
         sale.top_up_comm_amt += top_up.comm_amt
         sale.top_up_amt += top_up.amt
         
     # cal amt
     for sale in sale_list:
         sale.cal_sub_total()
         sale.cal_amt()
         
     return sale_list
예제 #18
0
    def __create(self, vm):
        # get master seq
        master_da = MasterDataAccess()
        master = master_da.get('TopUp')
        master.seq += 1
        master.put()

        # insert deposit
        tran_code = TopUp.get_tran_code(master.seq)
        vm.tran_code = tran_code

        data = TopUp(parent=self.get_key(vm.tran_date, vm.agent_code),
                     id=tran_code)
        data.tran_code = tran_code
        data.tran_type = vm.tran_type
        data.tran_date = vm.tran_date
        data.seq = master.seq
        data.agent_code = vm.agent_code
        data.agent = vm.agent.key
        data.remark = vm.remark

        data.car_reg_no = vm.car_reg_no
        data.car = vm.car.key
        data.sub_total = vm.sub_total
        data.comm_per = vm.comm_per
        data.comm_amt = vm.comm_amt
        data.amt = vm.amt

        data.created_by = vm.user_code
        data.created_date = DateTime.malaysia_now()
        data.modified_by = ''
        data.modified_date = None
        data.void_by = ''
        data.void_date = None
        data.void = False
        data.last_modified = str(data.created_date)
        data.put()

        # insert tran
        tran_obj = TranViewModel()
        tran_obj.tran_code = data.tran_code
        tran_obj.tran_date = data.tran_date
        tran_obj.tran_type = data.tran_type
        tran_obj.agent_code = data.agent_code
        tran_obj.car_reg_no = data.car_reg_no

        tran_da = TranDataAccess()
        tran_da.create(tran_obj)

        # update agent bal amt
        agent_da = AgentDataAccess()
        agent = agent_da.get(vm.agent_code)
        agent.bal_amt -= vm.amt
        agent.bal_amt = round(agent.bal_amt, 2)

        if agent.bal_amt < agent.credit_limit:
            raise Exception('You have no more Credits.')

        agent.put()

        # update car bal amt
        car_da = CarDataAccess()
        car = car_da.get(vm.car_reg_no)
        car.bal_amt += vm.sub_total
        car.bal_amt = round(car.bal_amt, 2)
        car.put()
예제 #19
0
    def post(self, reg_no):
        json_values = {}

        try:
            reg_no = self.request.get('reg_no')
            cars = Car.query(Car.reg_no == reg_no).fetch()
            car = cars[0]
            today_date = DateTime.malaysia_today()

            trans = Tran.query(Tran.car_reg_no == reg_no,
                               Tran.tran_date == today_date).order(
                                   Tran.seq).fetch()

            registers = Register.query(
                Register.car_reg_no == reg_no,
                Register.tran_date == today_date).fetch()

            topups = TopUp.query(TopUp.car_reg_no == reg_no,
                                 TopUp.tran_date == today_date).fetch()

            charges = Charge.query(Charge.car_reg_no == car.reg_no,
                                   Charge.tran_date == today_date).fetch()

            # group by tran_code
            register_tran_codes = {}
            for register in registers:
                register_tran_codes[register.tran_code] = register

            topup_tran_codes = {}
            for topup in topups:
                topup_tran_codes[topup.tran_code] = topup

            charge_tran_codes = {}
            for charge in charges:
                charge_tran_codes[charge.tran_code] = charge

            # create json
            data = []
            bal_amt = 0
            for tran in trans:
                if register_tran_codes.has_key(tran.tran_code):
                    register = register_tran_codes[tran.tran_code]
                    bal_amt += register.sub_total
                    bal_amt = round(bal_amt, 2)
                    data.append({
                        'carRegNo':
                        car.reg_no,
                        'date':
                        DateTime.to_date_string(register.tran_date),
                        'description':
                        register.tran_code,
                        'dbAmt':
                        register.sub_total,
                        'crAmt':
                        0,
                        'balAmt':
                        bal_amt
                    })

                elif topup_tran_codes.has_key(tran.tran_code):
                    topup = topup_tran_codes[tran.tran_code]
                    bal_amt += topup.sub_total
                    bal_amt = round(bal_amt, 2)
                    data.append({
                        'carRegNo':
                        car.reg_no,
                        'date':
                        DateTime.to_date_string(topup.tran_date),
                        'description':
                        topup.tran_code,
                        'dbAmt':
                        topup.sub_total,
                        'crAmt':
                        0,
                        'balAmt':
                        bal_amt
                    })

                elif charge_tran_codes.has_key(tran.tran_code):
                    charge = charge_tran_codes[tran.tran_code]
                    bal_amt -= charge.sub_total
                    bal_amt = round(bal_amt, 2)
                    data.append({
                        'carRegNo':
                        car.reg_no,
                        'date':
                        DateTime.to_date_string(charge.tran_date),
                        'description':
                        charge.tran_code,
                        'dbAmt':
                        0,
                        'crAmt':
                        charge.sub_total,
                        'balAmt':
                        bal_amt
                    })

            json_values['returnStatus'] = True
            json_values['data'] = data
        except Exception, ex:
            json_values['returnStatus'] = False
            json_values['returnMessage'] = str(ex)