summaryrefslogtreecommitdiff
path: root/addons/l10n_in_purchase
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/l10n_in_purchase
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/l10n_in_purchase')
-rw-r--r--addons/l10n_in_purchase/__init__.py4
-rw-r--r--addons/l10n_in_purchase/__manifest__.py21
-rw-r--r--addons/l10n_in_purchase/models/__init__.py5
-rw-r--r--addons/l10n_in_purchase/models/account_move.py18
-rw-r--r--addons/l10n_in_purchase/models/purchase_order.py43
-rw-r--r--addons/l10n_in_purchase/views/purchase_order_views.xml17
-rw-r--r--addons/l10n_in_purchase/views/report_purchase_order.xml32
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>