diff --git a/addons/account/views/account_view.xml b/addons/account/views/account_view.xml index 49999d11..4e984b30 100644 --- a/addons/account/views/account_view.xml +++ b/addons/account/views/account_view.xml @@ -1063,6 +1063,7 @@ + diff --git a/addons/account/views/res_config_settings_views.xml b/addons/account/views/res_config_settings_views.xml index 07a12cb9..bccd1950 100644 --- a/addons/account/views/res_config_settings_views.xml +++ b/addons/account/views/res_config_settings_views.xml @@ -117,7 +117,7 @@ -

Currencies

+

Currencies

diff --git a/addons/l10n_ae/data/l10n_ae_chart_data.xml b/addons/l10n_ae/data/l10n_ae_chart_data.xml index e2103cbd..f5493717 100644 --- a/addons/l10n_ae/data/l10n_ae_chart_data.xml +++ b/addons/l10n_ae/data/l10n_ae_chart_data.xml @@ -1643,7 +1643,6 @@ customs - 0 diff --git a/addons/l10n_ae_extend/__manifest__.py b/addons/l10n_ae_extend/__manifest__.py index 3334f115..9c3a3420 100644 --- a/addons/l10n_ae_extend/__manifest__.py +++ b/addons/l10n_ae_extend/__manifest__.py @@ -19,7 +19,7 @@ United Arab Emirates accounting chart and localization. 'views/report_vat_201_view.xml', 'views/report_menu_view.xml', 'views/vat_config_type.xml', - 'views/company_view.xml', + 'views/res_config_view.xml', 'views/purchase_order_view.xml', 'views/sale_order_view.xml', 'views/account_invoice_view.xml', diff --git a/addons/l10n_ae_extend/data/journal_data.xml b/addons/l10n_ae_extend/data/journal_data.xml index 0b108d19..1a2abaa5 100644 --- a/addons/l10n_ae_extend/data/journal_data.xml +++ b/addons/l10n_ae_extend/data/journal_data.xml @@ -60,7 +60,7 @@ 205301 - Reverse Charge(Vat) + Reverse Charge(VAT) @@ -70,12 +70,6 @@ - - - - - - 571001 diff --git a/addons/l10n_ae_extend/demo/account_invoice_demo.xml b/addons/l10n_ae_extend/demo/account_invoice_demo.xml index 9592453e..2700af50 100644 --- a/addons/l10n_ae_extend/demo/account_invoice_demo.xml +++ b/addons/l10n_ae_extend/demo/account_invoice_demo.xml @@ -25,7 +25,7 @@ 885.0 - 2.0 + 18.0 885.0 - 1.0 + 5.0 + + + + + + out_invoice + + + + + + + + + Graphics Card + + + 885.0 + 20.0 + + + + + Basic Computer + + + 23500.0 + 2.0 + + + + + + + + + + + + + + + out_refund + + + + + + + + + + Graphics Card + + 800.0 + + 3.0 + + + + + Basic Computer + + + 23000.0 + 1.0 + + + + + + + + + + + + + + out_invoice + + + + + + + + + Graphics Card + + + 885.0 + 15.0 + + + + + Basic Computer + + + 23500.0 + 4.0 + + + + + + + + + + + + + + + out_refund + + + + + + + + + + Graphics Card + + 800.0 + + 5.0 + + + + + Basic Computer + + + 23500.0 + 2.0 + + + + + + + + + + + + + + out_invoice + + + + + + + + + Little server + + + 40000 + 5.0 + + + + + + + + + + + + + + out_refund + + + + + + + + + + Little server + + + 40000 + 1.0 + + + + + + + + @@ -194,4 +419,106 @@ + + + + + + in_invoice + + + + + + + + + Graphics Card + + + 876.0 + 5.0 + + + + + Basic Computer + + + 23500.0 + 2.0 + + + + + + Little server + + + 40000 + 3.0 + + + + + + + + + + + + + + + in_refund + + + + + + + + + + Graphics Card + + + 876.0 + 3.0 + + + + + Basic Computer + + + 23500.0 + 1.0 + + + + + + Little server + + + 40000 + 1.0 + + + + + + + + \ No newline at end of file diff --git a/addons/l10n_ae_extend/models/__init__.py b/addons/l10n_ae_extend/models/__init__.py index 9252a0a7..b3d23f2e 100644 --- a/addons/l10n_ae_extend/models/__init__.py +++ b/addons/l10n_ae_extend/models/__init__.py @@ -1,7 +1,7 @@ # Part of flectra. See LICENSE file for full copyright and licensing details. from . import vat_config_type -from . import company +from . import res_config from . import sale from . import purchase from . import account_invoice diff --git a/addons/l10n_ae_extend/models/account_invoice.py b/addons/l10n_ae_extend/models/account_invoice.py index 252c6542..0cbadf39 100644 --- a/addons/l10n_ae_extend/models/account_invoice.py +++ b/addons/l10n_ae_extend/models/account_invoice.py @@ -1,7 +1,6 @@ # Part of Flectra. See LICENSE file for full copyright and licensing details. -from flectra import fields, models, api, _ -from flectra.exceptions import Warning +from flectra import fields, models, api class ReverseAccountInvoiceTax(models.Model): @@ -22,7 +21,7 @@ class AccountInvoice(models.Model): return self.vat_config_type.search(domain, limit=1) vat_config_type = fields.Many2one( - 'vat.config.type', 'Vat Type', default=_default_config_type, + 'vat.config.type', 'VAT Type', default=_default_config_type, readonly=True, states={'draft': [('readonly', False)]}) reverse_charge = fields.Boolean( 'Reverse Charge', readonly=True, @@ -63,8 +62,14 @@ class AccountInvoice(models.Model): def action_invoice_open(self): if not self.reverse_charge: return super(AccountInvoice, self).action_invoice_open() - if not self.company_id.rc_vat_account_id: - raise Warning(_('Define Reverse Charge Account in Company!')) + config_id = self.env[ + 'res.config.settings'].search([], order='id desc', limit=1) + rc_account = config_id.rc_vat_account_id or \ + self.env.ref('l10n_ae_extend.rc_vat_account') + vat_account = config_id.vat_expense_account_id or \ + self.env.ref('l10n_ae_extend.rc_vat_expense_account') + customs_account = config_id.customs_duty_account_id or \ + self.env.ref('l10n_ae.uae_account_3694') list_data = [] account_tax_obj = self.env['account.tax'] custom_amount = 0.0 @@ -77,7 +82,7 @@ class AccountInvoice(models.Model): if self.partner_id.vat: account_id = tax_line.account_id.id elif tax_id.tax_type == 'vat': - account_id = self.company_id.vat_expense_account_id.id + account_id = vat_account.id list_data.append((0, 0, { 'name': tax_line.name, 'partner_id': @@ -109,20 +114,22 @@ class AccountInvoice(models.Model): for move_line_id in list_data: move_line_id[2].update({'move_id': self.move_id.id}) list_data.append( - (0, 0, self.get_move_line_vals(total_tax_amount - custom_amount))) + (0, 0, self.get_move_line_vals( + total_tax_amount - custom_amount, rc_account))) if custom_amount: - list_data.append((0, 0, self.get_move_line_vals(custom_amount))) + list_data.append((0, 0, self.get_move_line_vals( + custom_amount, customs_account))) self.move_id.state = 'draft' self.move_id.line_ids = list_data self.move_id.post() return res @api.multi - def get_move_line_vals(self, credit): + def get_move_line_vals(self, credit, account_id): return { 'name': '/', 'partner_id': self.partner_id.parent_id.id or self.partner_id.id, - 'account_id': self.company_id.rc_vat_account_id.id, + 'account_id': account_id.id, 'credit': credit, 'move_id': self.move_id.id, 'invoice_id': self.id, diff --git a/addons/l10n_ae_extend/models/company.py b/addons/l10n_ae_extend/models/company.py deleted file mode 100644 index a1f9e3a1..00000000 --- a/addons/l10n_ae_extend/models/company.py +++ /dev/null @@ -1,12 +0,0 @@ -# Part of Flectra. See LICENSE file for full copyright and licensing details. - -from flectra import fields, models - - -class ResCompany(models.Model): - _inherit = 'res.company' - - rc_vat_account_id = fields.Many2one('account.account', 'Reverse Charge') - customs_duty_account_id = fields.Many2one( - 'account.account', 'Customs Expense') - vat_expense_account_id = fields.Many2one('account.account', 'Vat Expense') diff --git a/addons/l10n_ae_extend/models/purchase.py b/addons/l10n_ae_extend/models/purchase.py index 719ef18c..4b33c03b 100644 --- a/addons/l10n_ae_extend/models/purchase.py +++ b/addons/l10n_ae_extend/models/purchase.py @@ -12,7 +12,7 @@ class PurchaseOrder(models.Model): ('journal_id.type', '=', 'purchase')], limit=1) vat_config_type = fields.Many2one( - 'vat.config.type', 'Vat Type', default=_default_config_type, + 'vat.config.type', 'VAT Type', default=_default_config_type, readonly=True, states={'draft': [('readonly', False)]}) reverse_charge = fields.Boolean( 'Reverse Charge', readonly=True, diff --git a/addons/l10n_ae_extend/models/res_config.py b/addons/l10n_ae_extend/models/res_config.py new file mode 100644 index 00000000..ad5b84cf --- /dev/null +++ b/addons/l10n_ae_extend/models/res_config.py @@ -0,0 +1,34 @@ +# Part of Flectra. See LICENSE file for full copyright and licensing details. + +from flectra import fields, models, api + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + rc_vat_account_id = fields.Many2one('account.account', 'Reverse Charge') + customs_duty_account_id = fields.Many2one( + 'account.account', 'Customs Expense') + vat_expense_account_id = fields.Many2one('account.account', 'VAT Expense') + + @api.model + def get_values(self): + res = super(ResConfigSettings, self).get_values() + res.update( + rc_vat_account_id=self.env.ref('l10n_ae_extend.rc_vat_account').id, + customs_duty_account_id=self.env.ref( + 'l10n_ae.uae_account_3694').id, + vat_expense_account_id=self.env.ref( + 'l10n_ae_extend.rc_vat_expense_account').id, + ) + return res + + def set_values(self): + super(ResConfigSettings, self).set_values() + params = self.env['ir.config_parameter'].sudo() + params.set_param('rc_vat_account_id', + self.rc_vat_account_id) + params.set_param('customs_duty_account_id', + self.customs_duty_account_id) + params.set_param('vat_expense_account_id', + self.vat_expense_account_id) diff --git a/addons/l10n_ae_extend/models/sale.py b/addons/l10n_ae_extend/models/sale.py index 6740ebfb..d8709230 100644 --- a/addons/l10n_ae_extend/models/sale.py +++ b/addons/l10n_ae_extend/models/sale.py @@ -12,7 +12,7 @@ class SaleOrder(models.Model): ('journal_id.type', '=', 'sale')], limit=1) vat_config_type = fields.Many2one( - 'vat.config.type', 'Vat Type', default=_default_config_type, + 'vat.config.type', 'VAT Type', default=_default_config_type, readonly=True, states={'draft': [('readonly', False)]}) @api.multi diff --git a/addons/l10n_ae_extend/models/vat_config_type.py b/addons/l10n_ae_extend/models/vat_config_type.py index f9157e57..ed3041c9 100644 --- a/addons/l10n_ae_extend/models/vat_config_type.py +++ b/addons/l10n_ae_extend/models/vat_config_type.py @@ -7,9 +7,9 @@ class JournalConfigType(models.Model): _name = 'vat.config.type' _description = 'Config Type' - name = fields.Char('Name') - code = fields.Char('Code') - journal_id = fields.Many2one('account.journal', 'Journal') + name = fields.Char('Name', required=True) + code = fields.Char('Code', required=True) + journal_id = fields.Many2one('account.journal', 'Journal', required=True) vat_type = fields.Selection([ ('local_sale', 'Local Sale'), ('inside_gcc_sale', 'Inside GCC Sale'), @@ -18,6 +18,7 @@ class JournalConfigType(models.Model): ('local_purchase', 'Local Purchase'), ('inside_gcc_purchase', 'Inside GCC Purchase'), ('outside_gcc_purchase', 'Outside GCC Purchase'), - ('designated_zone_purchase', 'Designated Zone Purchase')]) + ('designated_zone_purchase', 'Designated Zone Purchase')], + 'VAT Type', required=True) type = fields.Selection([ - ('sale', 'Sale'), ('purchase', 'Purchase')], 'Type') + ('sale', 'Sale'), ('purchase', 'Purchase')], 'Type', required=True) diff --git a/addons/l10n_ae_extend/tests/test_account_invoice.py b/addons/l10n_ae_extend/tests/test_account_invoice.py index b7d6b92a..6ffb79de 100644 --- a/addons/l10n_ae_extend/tests/test_account_invoice.py +++ b/addons/l10n_ae_extend/tests/test_account_invoice.py @@ -55,9 +55,13 @@ class TestAccountInvoice(TestAECommon): self.assertEquals(invoice_id.amount_tax, 0) self.assertEquals(len(invoice_id.tax_line_ids), 0) self.assertEquals(len(invoice_id.reverse_tax_line_ids), 1) + config_id = self.env[ + 'res.config.settings'].search([], order='id desc', limit=1) + rc_account = config_id.rc_vat_account_id or \ + self.env.ref('l10n_ae_extend.rc_vat_account') move_line_id = self.env['account.move.line'].search([ ('move_id', '=', invoice_id.move_id.id), - ('account_id', '=', self.main_company.rc_vat_account_id.id)]) + ('account_id', '=', rc_account.id)]) self.assertEquals(move_line_id.credit, amount_tax) def test_report_data(self): @@ -76,11 +80,11 @@ class TestAccountInvoice(TestAECommon): dict_data = report_obj.get_report_values(None, data) self.assertEquals( - dict_data['get_local_sale']['amount'], 1770) - self.assertEquals(dict_data['get_local_sale']['tax_amount'], 88.5) - self.assertEquals(dict_data['get_local_sale']['adjustment'], 885) + dict_data['get_local_sale']['amount'], 15930.0) + self.assertEquals(dict_data['get_local_sale']['tax_amount'], 796.5) + self.assertEquals(dict_data['get_local_sale']['adjustment'], 4425.00) self.assertEquals( - dict_data['get_local_sale']['return_tax_amount'], 44.25) + dict_data['get_local_sale']['return_tax_amount'], 221.25) self.assertEquals(dict_data['get_local_purchase']['amount'], 17520) self.assertEquals(dict_data['get_local_purchase']['tax_amount'], 876) @@ -96,5 +100,5 @@ class TestAccountInvoice(TestAECommon): dict_data['get_reverse_charge_data']['adjustment'], 4380) self.assertEquals( dict_data['get_reverse_charge_data']['return_tax_amount'], 219) - self.assertEquals( - dict_data['get_total_vat_due']['total_tax_amount'], -1050.75) + self.assertEquals(round( + dict_data['get_total_vat_due']['total_tax_amount'], 2), 587.40) diff --git a/addons/l10n_ae_extend/views/account_invoice_view.xml b/addons/l10n_ae_extend/views/account_invoice_view.xml index 81100f23..e7f131fd 100644 --- a/addons/l10n_ae_extend/views/account_invoice_view.xml +++ b/addons/l10n_ae_extend/views/account_invoice_view.xml @@ -15,6 +15,17 @@ + + uae.account.invoice.tree.inherit + account.invoice + + + + + + + + reverse.account.invoice.tax.tree reverse.account.invoice.tax @@ -52,6 +63,17 @@ + + uae.account.invoice.supplier.tree.inherit + account.invoice + + + + + + + + uae.account.tax.form.inherit account.tax diff --git a/addons/l10n_ae_extend/views/company_view.xml b/addons/l10n_ae_extend/views/company_view.xml deleted file mode 100644 index ef2cfd76..00000000 --- a/addons/l10n_ae_extend/views/company_view.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - uae.res.company.form.inherit - res.company - - - - - - - - - - - diff --git a/addons/l10n_ae_extend/views/report_menu_view.xml b/addons/l10n_ae_extend/views/report_menu_view.xml index 88cf4a14..8c41d83a 100644 --- a/addons/l10n_ae_extend/views/report_menu_view.xml +++ b/addons/l10n_ae_extend/views/report_menu_view.xml @@ -3,7 +3,7 @@ VAT 201
- From
- To + Date from :
+ Date to :
@@ -59,7 +59,7 @@ - + @@ -97,28 +97,28 @@ - + - + - + - + diff --git a/addons/l10n_ae_extend/views/res_config_view.xml b/addons/l10n_ae_extend/views/res_config_view.xml new file mode 100644 index 00000000..13f9fee5 --- /dev/null +++ b/addons/l10n_ae_extend/views/res_config_view.xml @@ -0,0 +1,46 @@ + + + + uae.res.config.settings.view.form.inherit + res.config.settings + + + + +

UAE Accounts

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/addons/l10n_ae_extend/views/vat_config_type.xml b/addons/l10n_ae_extend/views/vat_config_type.xml index 870e9f84..c51cbe2e 100644 --- a/addons/l10n_ae_extend/views/vat_config_type.xml +++ b/addons/l10n_ae_extend/views/vat_config_type.xml @@ -7,9 +7,9 @@ + - @@ -22,14 +22,13 @@ - - - + + + - - - + + @@ -38,7 +37,7 @@ - Vat Types + VAT Types vat.config.type form tree,form @@ -48,7 +47,7 @@ diff --git a/addons/l10n_ae_extend/wizard/vat_201.py b/addons/l10n_ae_extend/wizard/vat_201.py index 1ecf28ad..987b6e06 100644 --- a/addons/l10n_ae_extend/wizard/vat_201.py +++ b/addons/l10n_ae_extend/wizard/vat_201.py @@ -1,12 +1,12 @@ # Part of Flectra. See LICENSE file for full copyright and licensing details. -from flectra import fields, models +from flectra import fields, models, api, _ class Vat201Report(models.TransientModel): _name = "vat.201.report" - _description = "Vat 201" + _description = "VAT 201" date_from = fields.Date(string='Start Date') date_to = fields.Date(string='End Date') @@ -15,6 +15,12 @@ class Vat201Report(models.TransientModel): required=True, default=lambda self: self.env.user.company_id) currency_id = fields.Many2one(related='company_id.currency_id') + @api.constrains('date_from', 'date_to') + def _check_date(self): + if self.date_from > self.date_to: + raise ValueError(_("End Date must be greater than " + "Start Date!")) + def print_report(self, data): data['form'] = \ self.read(['date_from', 'date_to', 'company_id', 'currency_id'])[0] diff --git a/addons/l10n_ae_extend/wizard/vat_201_view.xml b/addons/l10n_ae_extend/wizard/vat_201_view.xml index 224d09eb..3522053e 100644 --- a/addons/l10n_ae_extend/wizard/vat_201_view.xml +++ b/addons/l10n_ae_extend/wizard/vat_201_view.xml @@ -5,7 +5,7 @@ Vat 201 vat.201.report -
+ @@ -19,7 +19,7 @@
- Vat 201 + VAT 201 vat.201.report ir.actions.act_window form @@ -29,6 +29,6 @@ new - +

VAT on PurchasVAT on Purchase Standard rated domestic purchases
Total VAT due for current periodTotal VAT due for current period
Corrections from previous periodCorrections from previous period
VAT credit carried forword from previous period(s)VAT credit carried forword from previous period(s)
Net VAT dueNet VAT due