diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/l10n_in/report/exempted_gst_report.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/l10n_in/report/exempted_gst_report.py')
| -rw-r--r-- | addons/l10n_in/report/exempted_gst_report.py | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/addons/l10n_in/report/exempted_gst_report.py b/addons/l10n_in/report/exempted_gst_report.py new file mode 100644 index 00000000..661a5c08 --- /dev/null +++ b/addons/l10n_in/report/exempted_gst_report.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, tools + + +class L10nInExemptedReport(models.Model): + _name = "l10n_in.exempted.report" + _description = "Exempted Gst Supplied Statistics" + _auto = False + + account_move_id = fields.Many2one('account.move', string="Account Move") + partner_id = fields.Many2one('res.partner', string="Customer") + out_supply_type = fields.Char(string="Outward Supply Type") + in_supply_type = fields.Char(string="Inward Supply Type") + nil_rated_amount = fields.Float("Nil rated supplies") + exempted_amount = fields.Float("Exempted") + non_gst_supplies = fields.Float("Non GST Supplies") + date = fields.Date("Date") + company_id = fields.Many2one('res.company', string="Company") + journal_id = fields.Many2one('account.journal', string="Journal") + + def _select(self): + select_str = """SELECT aml.id AS id, + aml.partner_id AS partner_id, + am.date, + aml.balance * (CASE WHEN aj.type = 'sale' THEN -1 ELSE 1 END) AS price_total, + am.journal_id, + aj.company_id, + aml.move_id as account_move_id, + + (CASE WHEN p.state_id = cp.state_id + THEN (CASE WHEN p.vat IS NOT NULL + THEN 'Intra-State supplies to registered persons' + ELSE 'Intra-State supplies to unregistered persons' + END) + WHEN p.state_id != cp.state_id + THEN (CASE WHEN p.vat IS NOT NULL + THEN 'Inter-State supplies to registered persons' + ELSE 'Inter-State supplies to unregistered persons' + END) + END) AS out_supply_type, + (CASE WHEN p.state_id = cp.state_id + THEN 'Intra-State supplies' + WHEN p.state_id != cp.state_id + THEN 'Inter-State supplies' + END) AS in_supply_type, + + (CASE WHEN ( + SELECT MAX(account_tax_id) FROM account_move_line_account_tax_rel + JOIN account_tax at ON at.id = account_tax_id + WHERE account_move_line_id = aml.id AND at.tax_group_id IN + ((SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name='nil_rated_group')) + ) IS NOT NULL + THEN aml.balance * (CASE WHEN aj.type = 'sale' THEN -1 ELSE 1 END) + ELSE 0 + END) AS nil_rated_amount, + + (CASE WHEN ( + SELECT MAX(account_tax_id) FROM account_move_line_account_tax_rel + JOIN account_tax at ON at.id = account_tax_id + WHERE account_move_line_id = aml.id AND at.tax_group_id IN + ((SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name='exempt_group')) + ) IS NOT NULL + THEN aml.balance * (CASE WHEN aj.type = 'sale' THEN -1 ELSE 1 END) + ELSE 0 + END) AS exempted_amount, + + (CASE WHEN ( + SELECT MAX(account_tax_id) FROM account_move_line_account_tax_rel + WHERE account_move_line_id = aml.id + ) IS NULL + THEN aml.balance * (CASE WHEN aj.type = 'sale' THEN -1 ELSE 1 END) + ELSE 0 + END) AS non_gst_supplies + """ + return select_str + + def _from(self): + from_str = """FROM account_move_line aml + JOIN account_move am ON am.id = aml.move_id + JOIN account_account aa ON aa.id = aml.account_id + JOIN account_journal aj ON aj.id = am.journal_id + JOIN res_company c ON c.id = aj.company_id + LEFT JOIN res_partner cp ON cp.id = COALESCE(aj.l10n_in_gstin_partner_id, c.partner_id) + LEFT JOIN res_partner p ON p.id = am.partner_id + LEFT JOIN res_country pc ON pc.id = p.country_id + WHERE aa.internal_type = 'other' and aml.tax_line_id IS NULL + """ + return from_str + + def init(self): + tools.drop_view_if_exists(self.env.cr, self._table) + self._cr.execute("""CREATE OR REPLACE VIEW %s AS (%s %s)""" % ( + self._table, self._select(), self._from())) |
