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_purchase | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/l10n_in_purchase')
| -rw-r--r-- | addons/l10n_in_purchase/__init__.py | 4 | ||||
| -rw-r--r-- | addons/l10n_in_purchase/__manifest__.py | 21 | ||||
| -rw-r--r-- | addons/l10n_in_purchase/models/__init__.py | 5 | ||||
| -rw-r--r-- | addons/l10n_in_purchase/models/account_move.py | 18 | ||||
| -rw-r--r-- | addons/l10n_in_purchase/models/purchase_order.py | 43 | ||||
| -rw-r--r-- | addons/l10n_in_purchase/views/purchase_order_views.xml | 17 | ||||
| -rw-r--r-- | addons/l10n_in_purchase/views/report_purchase_order.xml | 32 |
7 files changed, 140 insertions, 0 deletions
diff --git a/addons/l10n_in_purchase/__init__.py b/addons/l10n_in_purchase/__init__.py new file mode 100644 index 00000000..dc5e6b69 --- /dev/null +++ b/addons/l10n_in_purchase/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import models diff --git a/addons/l10n_in_purchase/__manifest__.py b/addons/l10n_in_purchase/__manifest__.py new file mode 100644 index 00000000..bcecef57 --- /dev/null +++ b/addons/l10n_in_purchase/__manifest__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +{ + 'name': 'Indian - Purchase Report(GST)', + 'version': '1.0', + 'description': """GST Purchase Report""", + 'category': 'Accounting/Localizations/Purchase', + 'depends': [ + 'l10n_in', + 'purchase', + ], + 'data': [ + 'views/report_purchase_order.xml', + 'views/purchase_order_views.xml', + ], + 'installable': True, + 'application': False, + 'auto_install': True, + 'license': 'LGPL-3', +} diff --git a/addons/l10n_in_purchase/models/__init__.py b/addons/l10n_in_purchase/models/__init__.py new file mode 100644 index 00000000..476326ad --- /dev/null +++ b/addons/l10n_in_purchase/models/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import purchase_order +from . import account_move diff --git a/addons/l10n_in_purchase/models/account_move.py b/addons/l10n_in_purchase/models/account_move.py new file mode 100644 index 00000000..c753c2cc --- /dev/null +++ b/addons/l10n_in_purchase/models/account_move.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, models + + +class AccountMove(models.Model): + _inherit = 'account.move' + + @api.onchange('purchase_vendor_bill_id', 'purchase_id') + def _onchange_purchase_auto_complete(self): + purchase_order_id = self.purchase_vendor_bill_id.purchase_order_id or self.purchase_id + if purchase_order_id and self.l10n_in_company_country_code == 'IN': + journal_id = self.purchase_vendor_bill_id.purchase_order_id.l10n_in_journal_id or self.purchase_id.l10n_in_journal_id + if journal_id: + self.journal_id = journal_id + self.l10n_in_gst_treatment = purchase_order_id.l10n_in_gst_treatment + return super()._onchange_purchase_auto_complete() diff --git a/addons/l10n_in_purchase/models/purchase_order.py b/addons/l10n_in_purchase/models/purchase_order.py new file mode 100644 index 00000000..a7d0d4ac --- /dev/null +++ b/addons/l10n_in_purchase/models/purchase_order.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models +from odoo.addons.purchase.models.purchase import PurchaseOrder as Purchase + + +class PurchaseOrder(models.Model): + _inherit = "purchase.order" + + l10n_in_journal_id = fields.Many2one('account.journal', string="Journal", \ + states=Purchase.READONLY_STATES, domain="[('type', '=', 'purchase')]") + l10n_in_gst_treatment = fields.Selection([ + ('regular', 'Registered Business - Regular'), + ('composition', 'Registered Business - Composition'), + ('unregistered', 'Unregistered Business'), + ('consumer', 'Consumer'), + ('overseas', 'Overseas'), + ('special_economic_zone', 'Special Economic Zone'), + ('deemed_export', 'Deemed Export') + ], string="GST Treatment", states=Purchase.READONLY_STATES, compute="_compute_l10n_in_gst_treatment", store=True) + l10n_in_company_country_code = fields.Char(related='company_id.country_id.code', string="Country code") + + @api.onchange('company_id') + def l10n_in_onchange_company_id(self): + if self.l10n_in_company_country_code == 'IN': + domain = [('company_id', '=', self.company_id.id), ('type', '=', 'purchase')] + journal = self.env['account.journal'].search(domain, limit=1) + if journal: + self.l10n_in_journal_id = journal.id + + @api.depends('partner_id') + def _compute_l10n_in_gst_treatment(self): + for order in self: + # set default value as False so CacheMiss error never occurs for this field. + order.l10n_in_gst_treatment = False + if order.l10n_in_company_country_code == 'IN': + l10n_in_gst_treatment = order.partner_id.l10n_in_gst_treatment + if not l10n_in_gst_treatment and order.partner_id.country_id and order.partner_id.country_id.code != 'IN': + l10n_in_gst_treatment = 'overseas' + if not l10n_in_gst_treatment: + l10n_in_gst_treatment = order.partner_id.vat and 'regular' or 'consumer' + order.l10n_in_gst_treatment = l10n_in_gst_treatment diff --git a/addons/l10n_in_purchase/views/purchase_order_views.xml b/addons/l10n_in_purchase/views/purchase_order_views.xml new file mode 100644 index 00000000..4200706e --- /dev/null +++ b/addons/l10n_in_purchase/views/purchase_order_views.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="view_purchase_order_form_inherit_l10n_in_purchase" model="ir.ui.view"> + <field name="name">purchase.order.form.inherit.l10n.in.purchase</field> + <field name="model">purchase.order</field> + <field name="inherit_id" ref="purchase.purchase_order_form"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='partner_id']" position="after"> + <field name="l10n_in_company_country_code" invisible="1"/> + <field name="l10n_in_gst_treatment" attrs="{'invisible': [('l10n_in_company_country_code', '!=', 'IN')], 'required': [('l10n_in_company_country_code', '=', 'IN')]}"/> + </xpath> + <xpath expr="//group[@name='other_info']//field[@name='user_id']" position="after"> + <field name="l10n_in_journal_id" options="{'no_create': True}" domain="[('company_id', '=', company_id), ('type', '=', 'purchase')]" attrs="{'invisible': [('l10n_in_company_country_code', '!=', 'IN')]}"/> + </xpath> + </field> + </record> +</odoo> diff --git a/addons/l10n_in_purchase/views/report_purchase_order.xml b/addons/l10n_in_purchase/views/report_purchase_order.xml new file mode 100644 index 00000000..f2ffc084 --- /dev/null +++ b/addons/l10n_in_purchase/views/report_purchase_order.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <template id="gst_report_purchaseorder_document_inherit" inherit_id="purchase.report_purchaseorder_document"> + <xpath expr="//t[@t-foreach='o.order_line']//td[@id='product']" position="replace"> + <td> + <span t-field="line.name"/> + <t t-if="line.product_id.l10n_in_hsn_code and o.company_id.country_id.code == 'IN'"> + <h6> + <strong class="ml16">HSN/SAC Code:</strong> + <span t-field="line.product_id.l10n_in_hsn_code"/> + </h6> + </t> + </td> + </xpath> + </template> + + <template id="gst_report_purchasequotation_document_inherit" inherit_id="purchase.report_purchasequotation_document"> + <xpath expr="//t[@t-foreach='o.order_line']//td[@id='product']" position="replace"> + <td> + <span t-field="order_line.name"/> + <t t-if="order_line.product_id.l10n_in_hsn_code and o.company_id.country_id.code == 'IN'"> + <h6> + <strong class="ml16">HSN/SAC Code:</strong> + <span t-field="order_line.product_id.l10n_in_hsn_code"/> + </h6> + </t> + </td> + </xpath> + </template> + +</odoo> |
