diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2023-08-09 11:09:23 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2023-08-09 11:09:23 +0700 |
| commit | 4aa5108543075227378b856ce31f478bd5a3b3db (patch) | |
| tree | ef4f8ba5a598f08b03ac0404c88da7869b81dab0 /indoteknik_custom/models/account_report_general_ledger.py | |
| parent | cdbb16de1b4da9fdc5f170d411d2bf3b489bfafb (diff) | |
ledger
Diffstat (limited to 'indoteknik_custom/models/account_report_general_ledger.py')
| -rw-r--r-- | indoteknik_custom/models/account_report_general_ledger.py | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/indoteknik_custom/models/account_report_general_ledger.py b/indoteknik_custom/models/account_report_general_ledger.py deleted file mode 100644 index 4e909872..00000000 --- a/indoteknik_custom/models/account_report_general_ledger.py +++ /dev/null @@ -1,227 +0,0 @@ -from datetime import datetime -from dateutil.relativedelta import relativedelta -from odoo.exceptions import UserError -import json -from datetime import timedelta, date -import datetime -import io -from odoo import api, fields, models, _ -from odoo.tools.float_utils import float_round -from odoo.tools import date_utils -try: - from odoo.tools.misc import xlsxwriter -except ImportError: - import xlsxwriter - -class AccountReportGeneralLedger(models.TransientModel): - _inherit = "account.report.general.ledger.xlsx" - - journal_ids = fields.Many2many('account.journal', string=_('Journals'), required=True,default=lambda self: self.env['account.journal'].search([('id', '=', 10)])) - - def _build_contexts(self, data): - result = {} - result['journal_ids'] = 'journal_ids' in data['form'] and data['form']['journal_ids'] or False - result['state'] = 'target_move' in data['form'] and data['form']['target_move'] or '' - date_from = data['form']['date_from'] or False - - if date_from: - date_from = fields.Date.from_string(date_from) - - date_from -= relativedelta(days=1) - - result['date_from'] = fields.Date.to_string(date_from) - else: - result['date_from'] = False - - result['date_to'] = data['form']['date_to'] or False - result['strict_range'] = True if result['date_from'] else False - return result - - def check_report_ledger(self): - self.ensure_one() - data = {} - data['ids'] = self.env.context.get('active_ids', []) - data['model'] = self.env.context.get('active_model', 'ir.ui.menu') - data['form'] = self.read(['date_from', 'date_to', 'journal_ids', 'target_move'])[0] - used_context = self._build_contexts(data) - data['form']['used_context'] = dict(used_context, lang=self.env.context.get('lang') or 'en_US') - return { - 'type': 'ir.actions.report', - 'data': {'model': 'account.report.general.ledger.xlsx', - 'options': json.dumps(data, default=date_utils.json_default), - 'output_format': 'xlsx', - 'report_name': 'general ledger report', - }, - 'report_type': 'xlsx' - } - - def get_xlsx_report(self, options, response): - output = io.BytesIO() - workbook = xlsxwriter.Workbook(output, {'in_memory': True}) - data = {} - vals = self.search([('id', '=', options['form']['id'])]) - data['form'] = vals.read([])[0] - data['model'] = 'ir.ui.menu' - data['ids'] = [] - data['form']['used_context'] = { - 'date_to': options['form'].get('date_to', False), - 'date_from': options['form'].get('date_from', False), - 'strict_range': True, - 'state': options['form']['target_move'], - 'journal_ids': options['form']['journal_ids'], - } - - env_obj = vals.env['report.account.report_generalledger'] - sortby = data['form'].get('sortby', 'sort_date') - display_account = data['form']['display_account'] - codes = [] - if data['form'].get('journal_ids', False): - codes = [journal.code for journal in self.env['account.journal'].search([('id', 'in', data['form']['journal_ids'])])] - # accounts = vals.active_account if vals.active_account else self.env['account.account'].search([]) - accounts = self.env['account.account'].browse(options['ids']) or self.env['account.account'].search([]) - init_balance = vals['initial_balance'] - date_from = options['form'].get('date_from', False) - date_to = options['form'].get('date_to', False) - report_obj = env_obj.with_context(data['form'].get('used_context', {}))._get_account_move_entry_custom( - accounts, init_balance, sortby, display_account) - sheet = workbook.add_worksheet() - format1 = workbook.add_format({'font_size': 16, 'align': 'center', 'bg_color': '#D3D3D3', 'bold': True}) - format1.set_font_color('#000080') - format2 = workbook.add_format({'font_size': 12, 'bold': True, 'bg_color': '#D3D3D3'}) - format3 = workbook.add_format({'font_size': 10, 'bold': True}) - format4 = workbook.add_format({'font_size': 10}) - format6 = workbook.add_format({'font_size': 10, 'bold': True}) - format7 = workbook.add_format({'font_size': 10, 'align': 'center'}) - format5 = workbook.add_format({'font_size': 10, 'align': 'right'}) - format1.set_align('center') - format2.set_align('center') - format3.set_align('right') - format4.set_align('left') - codes = [] - if data['form'].get('journal_ids', False): - codes = [journal.code for journal in - self.env['account.journal'].search([('id', 'in', data['form']['journal_ids'])])] - logged_users = self.env['res.company']._company_default_get('account.account') - report_date = datetime.datetime.now().strftime("%Y-%m-%d") - sheet.merge_range('M8:N8', _("Report Date"), format3) - sheet.merge_range('M9:N9', report_date, format4) - sheet.merge_range(1, 0, 1, 14, logged_users.name, format4) - sheet.merge_range(3, 0, 4, 14, _("General Ledger Report"), format1) - sheet.merge_range('A6:B6', _("Journals :"), format6) - - row = 6 - col = 0 - i = 0 - for values in codes: - sheet.write(row, col + i, values, format7) - i += 1 - if data['form']['display_account'] == 'all': - display_account = _('All accounts') - elif data['form']['display_account'] == 'movement': - display_account = _('With movements') - else: - display_account = _('With balance not equal to zero') - - if data['form']['target_move'] == 'all': - target_moves = _('All entries') - else: - target_moves = _('All posted entries') - - if data['form']['sortby'] == 'sort_date': - sortby = 'Date' - else: - sortby = 'Journal and partners' - if data['form']['date_from']: - date_start = datetime.datetime.strptime(str(data['form']['used_context']['date_from']), '%Y-%m-%d') - date_start = date_start.strftime('%Y-%m-%d') - else: - date_start = "" - if data['form']['date_to']: - date_end = datetime.datetime.strptime(str(data['form']['used_context']['date_to']), '%Y-%m-%d') - date_end = date_end.strftime('%Y-%m-%d') - else: - date_end = "" - if sortby == 'Date': - sheet.write('G8', _("Start Date"), format3) - sheet.write('G9', date_start, format4) - sheet.write('J8', _("End Date"), format3) - sheet.write('J9', date_end, format4) - sheet.merge_range('C8:D8', _("Sorted By"), format3) - sheet.merge_range('C9:D9', sortby, format4) - sheet.merge_range('A8:B8', _("Display Account"), format6) - sheet.merge_range('A9:B9', display_account, format7) - sheet.merge_range('E8:F8', _("Target Moves"), format6) - sheet.merge_range('E9:F9', target_moves, format7) - sheet.write('A11', "Date ", format2) - sheet.write('B11', "JRNL", format2) - sheet.merge_range('C11:D11', _("Partner"), format2) - sheet.merge_range('E11:F11', _("Ref"), format2) - sheet.merge_range('G11:H11', _("Move"), format2) - sheet.merge_range('I11:L11', _("Entry Label"), format2) - sheet.write('M11', _("Debit"), format2) - sheet.write('N11', _("Credit"), format2) - sheet.write('O11', _("Balance"), format2) - sheet.write('P11', _("Debit Month"), format2) - sheet.write('Q11', _("Credit Month"), format2) - sheet.write('R11', _("Balance Month"), format2) - accounts = self.env['account.account'].search([]) - row_number = 11 - col_number = 0 - for account in accounts: - for values in report_obj: - if account['name'] == values['name'] and account['company_id'].id == values['company_id']: - sheet.write(row_number, col_number, account['code'], format3) - sheet.merge_range(row_number, col_number + 1, row_number, col_number + 11, account['name'], format6) - sheet.write(row_number, col_number + 12, - logged_users.currency_id.symbol + ' ' + "{:,.2f}".format(values['debit']), format3) - sheet.write(row_number, col_number + 13, - logged_users.currency_id.symbol + ' ' + "{:,.2f}".format(values['credit']), format3) - sheet.write(row_number, col_number + 14, - logged_users.currency_id.symbol + ' ' + "{:,.2f}".format(values['balance']), format3) - row_number += 1 - for lines in values['move_lines']: - if lines['ldate']: - formatted_date = datetime.datetime.strptime(str(lines['ldate']), '%Y-%m-%d') - formatted_date = formatted_date.strftime('%Y-%m-%d') - else: - formatted_date = "" - - sheet.write(row_number, col_number, formatted_date, format4) - sheet.write(row_number, col_number + 1, lines['lcode'], format4) - sheet.merge_range(row_number, col_number + 2, row_number, col_number + 3, lines['partner_name'], - format4) - sheet.merge_range(row_number, col_number + 4, row_number, col_number + 5, lines['lref'], - format4) - sheet.merge_range(row_number, col_number + 6, row_number, col_number + 7, lines['move_name'], - format4) - sheet.merge_range(row_number, col_number + 8, row_number, col_number + 11, lines['lname'], - format4) - sheet.write(row_number, col_number + 12, "{:,}".format(lines['debit']), format5) - sheet.write(row_number, col_number + 13, "{:,.2f}".format(lines['credit']), format5) - sheet.write(row_number, col_number + 14, "{:,.2f}".format(lines['balance']), format5) - - if lines['lname'] == 'Initial Balance': - debit_value = lines.get('debit', 0.0) - value_debit = values.get('debit', 0.0) - total_debit = value_debit - debit_value - debit_month = "{:,.2f}".format(total_debit) - - credit_value = lines.get('credit', 0.0) - value_credit = values.get('credit', 0.0) - total_credit = value_credit - credit_value - credit_month = "{:,.2f}".format(total_credit) - - total_balance = total_debit - total_credit - balance_month = "{:,.2f}".format(total_balance) - sheet.write(row_number, col_number + 15, debit_month, format5) - sheet.write(row_number, col_number + 16, credit_month, format5) - sheet.write(row_number, col_number + 17, balance_month, format5) - - row_number += 1 - - - workbook.close() - output.seek(0) - response.stream.write(output.read()) - output.close() - |
