def import_account(import_file=None):
        if import_file is None:
            import_file = os.path.join(settings.BASE_DIR, 'sampledata',
                                       'account code.xlsx')

        data = ImportSample.load_data("account_import_adapter", import_file)
        if not data:
            return

        accounts = list()
        for rec in data:
            # Update table define to jis code

            DbAgent.execute_query(
                "update account set id=%s, deleted_flag = true where id=%s",
                [rec['jis_id'], rec['id']])
            DbAgent.execute_query(
                "update table_definition set account_id=%s where account_id=%s",
                [rec['jis_id'], rec['id']])
            try:
                Account.objects.get(Q(pk=rec['id']) | Q(pk=rec['jis_id']))
            except ObjectDoesNotExist:
                o = Account()
                o.id = rec['jis_id']
                o.title = rec['title']
                if rec['tax_class'] is not None:
                    o.tax_class = rec['tax_class']
                else:
                    o.tax_class = 1
                o.settlement_date_type = rec['settlement_date_type']
                if rec['account_class'] is not None:
                    o.account_class = rec['account_class']
                else:
                    o.account_class = 3

                if rec['type'] is not None:
                    o.type = rec['type']

                o.is_cash = rec['is_cash']

                if rec['account_name']:
                    o.account_name = rec['account_name']
                else:
                    o.account_name = rec['title']
                if rec['account_code']:
                    o.account_code = rec['account_code']
                else:
                    o.account_code = rec['id']

                accounts.append(o)

        Account.objects.bulk_create(accounts)
    def import_scheduled(import_file=None):
        from default.logic.userlogic import LoginUser
        user = LoginUser.get_login_user()

        if import_file is None:
            import_file = os.path.join(settings.BASE_DIR, 'sampledata',
                                       'scheduled.xlsx')

        data = ImportSample.load_data("scheduled_import_adapter", import_file)
        if not data:
            return

        from default.models.models2 import ScheduledJournal
        l = list()
        start_date = None
        end_date = None
        for rec in data:
            o = ScheduledJournal()
            o.owner_id = user.id
            o.type = rec['type']
            o.accrual_date = rec['accrual_date']
            o.settlement_date = rec['settlement_date']
            if end_date is None or end_date < o.settlement_date:
                end_date = o.settlement_date
            if start_date is None or start_date > o.settlement_date:
                start_date = o.settlement_date

            o.account_id = rec['account_id']
            o.opposite_account_id = rec['opposite_account_id']
            o.amount = rec['amount']
            o.tax = rec['tax']
            o.reference = rec['reference']
            o.definition_type = rec['definition_type']
            o.definition_id = rec['definition_id']
            o.tax_class = rec['tax_class']
            o.tax_rate_id = rec['tax_rate_id']
            l.append(o)

        # Delete old data first
        if start_date is not None and end_date is not None:
            DbAgent.execute_query(
                "delete from scheduled_journal where "
                "owner_id=%s and settlement_date >= %s and settlement_date <=%s",
                [user.id, start_date, end_date])

        ScheduledJournal.objects.bulk_create(l)
    def import_budget(term_number, import_file=None):
        if import_file is None:
            import_file = os.path.join(settings.BASE_DIR, 'sampledata',
                                       'budget.xlsx')

        data = ImportSample.load_data("budget_import_adapter", import_file)
        if not data:
            return

        from default.logic.fiscaltermlogic import FiscalTermLogic
        from default.models.models2 import Budget
        from default.logic.userlogic import LoginUser
        from helper.util import Util
        user = LoginUser.get_login_user()

        budgets = []
        periods = FiscalTermLogic.get_term_period_list(term_number)
        periods = list(periods)
        for rec in data:
            for i in range(12):
                if i < len(periods):
                    budget = Budget()
                    budget.owner_id = user.id
                    budget.plan_type = rec['plan_type']
                    budget.account_id = rec['account_id']
                    budget.fiscal_period_id = periods[i].id
                    budget.comment = rec['comment']
                    budget.amount = rec['amount{0}'.format(i + 1)]
                    budgets.append(budget)

        DbAgent.execute_query(
            "delete from budget where owner_id=%s and fiscal_period_id in ({0})"
            .format(", ".join(map(str,
                                  Util.model_list_to_list(periods,
                                                          "id")))), [user.id])

        Budget.objects.bulk_create(budgets)