diff --git a/addons/l10n_in/data/account_tax_group_data.xml b/addons/l10n_in/data/account_tax_group_data.xml index 73111e9f77f..43c56ffe981 100644 --- a/addons/l10n_in/data/account_tax_group_data.xml +++ b/addons/l10n_in/data/account_tax_group_data.xml @@ -29,5 +29,9 @@ Nil Rated + + Non GST Supplies + + diff --git a/addons/l10n_in/data/account_tax_template_data.xml b/addons/l10n_in/data/account_tax_template_data.xml index 01d2e315fd6..a74756367b8 100644 --- a/addons/l10n_in/data/account_tax_template_data.xml +++ b/addons/l10n_in/data/account_tax_template_data.xml @@ -75,6 +75,17 @@ Zero Rated 7 + + Non GST Supplies + Non GST Supplies + 8 + + + + State CESS + State CESS + 9 + @@ -147,6 +158,39 @@ if tax > result:result=tax + + + Non GST Supplies + Non GST Supplies + sale + percent + 0 + + + + + + IGST 0% IGST 0% diff --git a/addons/l10n_in/demo/account_invoice_demo.xml b/addons/l10n_in/demo/account_invoice_demo.xml index eddd07d6459..1523ca1e6ed 100644 --- a/addons/l10n_in/demo/account_invoice_demo.xml +++ b/addons/l10n_in/demo/account_invoice_demo.xml @@ -11,9 +11,61 @@ regular + eval="obj().search([ + ('type', '=', 'sale'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).id"/> + + + + + out_invoice + + + + + + regular + IN Company - - A - Kannamangala + 36AABCT1332L011 + Block no. 401 + Street 2 + Hyderabad - - 56066 + + 500001 +91 81234 56789 info@company.inexample.com www.inexample.com diff --git a/addons/l10n_in/demo/res_partner_demo.xml b/addons/l10n_in/demo/res_partner_demo.xml index 3562e34824d..40d85295b2e 100644 --- a/addons/l10n_in/demo/res_partner_demo.xml +++ b/addons/l10n_in/demo/res_partner_demo.xml @@ -25,7 +25,21 @@ 382007 - 12GEOPS0823BBZH + 24AACCT6304M1ZB + + + + Registered Customer Intra State + + 1 + regular + floor-1, Maddikunta-Ankanpally Village + Post box No 2, NH-65 + Sangareddy + 500002 + + + 36AAACM4154G1ZO @@ -65,7 +79,7 @@ 382007 - 12GEOPS0823BBZ1 + 24GEOPS0823BBZ1 diff --git a/addons/l10n_in/models/account_invoice.py b/addons/l10n_in/models/account_invoice.py index 1260d5b740d..90e03b53d63 100644 --- a/addons/l10n_in/models/account_invoice.py +++ b/addons/l10n_in/models/account_invoice.py @@ -17,13 +17,13 @@ class AccountMove(models.Model): ('overseas', 'Overseas'), ('special_economic_zone', 'Special Economic Zone'), ('deemed_export', 'Deemed Export') - ], string="GST Treatment", compute="_compute_l10n_in_gst_treatment", store=True, readonly=False) + ], string="GST Treatment", compute="_compute_l10n_in_gst_treatment", store=True, readonly=False, copy=True) l10n_in_state_id = fields.Many2one('res.country.state', string="Location of supply") l10n_in_gstin = fields.Char(string="GSTIN") # For Export invoice this data is need in GSTR report l10n_in_shipping_bill_number = fields.Char('Shipping bill number', readonly=True, states={'draft': [('readonly', False)]}) l10n_in_shipping_bill_date = fields.Date('Shipping bill date', readonly=True, states={'draft': [('readonly', False)]}) - l10n_in_shipping_port_code_id = fields.Many2one('l10n_in.port.code', 'Port code', states={'draft': [('readonly', False)]}) + l10n_in_shipping_port_code_id = fields.Many2one('l10n_in.port.code', 'Port code', readonly=True, states={'draft': [('readonly', False)]}) l10n_in_reseller_partner_id = fields.Many2one('res.partner', 'Reseller', domain=[('vat', '!=', False)], help="Only Registered Reseller", readonly=True, states={'draft': [('readonly', False)]}) @api.depends('amount_total') @@ -94,3 +94,9 @@ class AccountMove(models.Model): if not move.l10n_in_state_id: move.l10n_in_state_id = company_unit_partner.state_id return posted + + def _l10n_in_get_warehouse_address(self): + """Return address where goods are delivered/received for Invoice/Bill""" + # TO OVERRIDE + self.ensure_one() + return False diff --git a/addons/l10n_in/models/res_partner.py b/addons/l10n_in/models/res_partner.py index f14e39536a3..4860e528f89 100644 --- a/addons/l10n_in/models/res_partner.py +++ b/addons/l10n_in/models/res_partner.py @@ -3,6 +3,7 @@ from odoo import api, fields, models, _ +TEST_GST_NUMBER = "36AABCT1332L011" class ResPartner(models.Model): _inherit = 'res.partner' @@ -44,3 +45,13 @@ class ResPartner(models.Model): def _commercial_fields(self): res = super()._commercial_fields() return res + ['l10n_in_gst_treatment'] + + def check_vat_in(self, vat): + """ + This TEST_GST_NUMBER is used as test credentials for EDI + but this is not a valid number as per the regular expression + so TEST_GST_NUMBER is considered always valid + """ + if vat == TEST_GST_NUMBER: + return True + return super().check_vat_in(vat) diff --git a/addons/l10n_in_purchase_stock/models/__init__.py b/addons/l10n_in_purchase_stock/models/__init__.py index b1a8586e9e1..c076a07a574 100644 --- a/addons/l10n_in_purchase_stock/models/__init__.py +++ b/addons/l10n_in_purchase_stock/models/__init__.py @@ -3,3 +3,4 @@ from . import purchase_order from . import stock_warehouse +from . import account_move diff --git a/addons/l10n_in_purchase_stock/models/account_move.py b/addons/l10n_in_purchase_stock/models/account_move.py new file mode 100644 index 00000000000..ea377c95af5 --- /dev/null +++ b/addons/l10n_in_purchase_stock/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 models + + +class AccountMove(models.Model): + _inherit = "account.move" + + def _l10n_in_get_warehouse_address(self): + res = super()._l10n_in_get_warehouse_address() + if self.invoice_line_ids.purchase_line_id: + company_shipping_id = self.mapped( + "invoice_line_ids.purchase_line_id.move_ids.warehouse_id.partner_id" + ) + if len(company_shipping_id) == 1: + return company_shipping_id + return res diff --git a/addons/l10n_in_sale_stock/models/__init__.py b/addons/l10n_in_sale_stock/models/__init__.py index fcfd6a142db..6100d5bedb0 100644 --- a/addons/l10n_in_sale_stock/models/__init__.py +++ b/addons/l10n_in_sale_stock/models/__init__.py @@ -3,3 +3,4 @@ from . import sale_order from . import stock_warehouse +from . import account_move diff --git a/addons/l10n_in_sale_stock/models/account_move.py b/addons/l10n_in_sale_stock/models/account_move.py new file mode 100644 index 00000000000..af510725e71 --- /dev/null +++ b/addons/l10n_in_sale_stock/models/account_move.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models + + +class AccountMove(models.Model): + _inherit = "account.move" + + def _l10n_in_get_warehouse_address(self): + res = super()._l10n_in_get_warehouse_address() + if self.invoice_line_ids.sale_line_ids: + company_shipping_id = self.mapped("invoice_line_ids.sale_line_ids.order_id.warehouse_id.partner_id") + if len(company_shipping_id) == 1: + return company_shipping_id + return res