From b0264aa9d864ba21bff69df07555d02ee9b2b4cf Mon Sep 17 00:00:00 2001 From: Chanakya Soni Date: Tue, 2 Mar 2021 17:44:52 +0530 Subject: [PATCH 1/2] [IMP] l10n_us_form_1099 --- l10n_us_form_1099/README.rst | 3 + l10n_us_form_1099/__manifest__.py | 5 +- .../migrations/14.0.1.0.2/post-migration.py | 19 ++++++ l10n_us_form_1099/models/__init__.py | 4 +- l10n_us_form_1099/models/account_move.py | 63 +++++++++++++++++++ l10n_us_form_1099/models/box_1099_misc.py | 2 +- l10n_us_form_1099/models/res_partner.py | 2 +- l10n_us_form_1099/models/type_1099.py | 1 + l10n_us_form_1099/reports/__init__.py | 1 + .../reports/account_payment_1099_report.py | 25 +++++--- l10n_us_form_1099/views/account_move.xml | 58 +++++++++++++++++ 11 files changed, 167 insertions(+), 16 deletions(-) create mode 100644 l10n_us_form_1099/migrations/14.0.1.0.2/post-migration.py create mode 100644 l10n_us_form_1099/models/account_move.py create mode 100644 l10n_us_form_1099/views/account_move.xml diff --git a/l10n_us_form_1099/README.rst b/l10n_us_form_1099/README.rst index fdcc5d7c..f4c84305 100644 --- a/l10n_us_form_1099/README.rst +++ b/l10n_us_form_1099/README.rst @@ -63,7 +63,9 @@ To use this module, you need to: #. If their type is 1099-MISC, you can select their box #. Go to Invoicing > Bills > Vendors #. Create vendor bills and payments for those 1099 vendors +#. Modify "Is a 1099" box on Bill Lines based on your need #. Go to Invoicing > Reporting > 1099 Report +#. If Bill is fully paid then payments will be included in Report Bug Tracker =========== @@ -93,6 +95,7 @@ Contributors * Bhavesh Odedra * Brian McMaster * Jevin Dement +* Chankya Soni Other credits ~~~~~~~~~~~~~ diff --git a/l10n_us_form_1099/__manifest__.py b/l10n_us_form_1099/__manifest__.py index e8fc7d0c..2310882f 100644 --- a/l10n_us_form_1099/__manifest__.py +++ b/l10n_us_form_1099/__manifest__.py @@ -4,7 +4,7 @@ { "name": "US Form 1099", - "version": "14.0.1.0.0", + "version": "14.0.1.0.2", "author": "Open Source Integrators, " "Brian McMaster, " "Odoo Community Association (OCA)", @@ -13,7 +13,7 @@ "category": "Customers", "maintainer": "Open Source Integrators", "website": "https://github.com/OCA/l10n-usa", - "depends": ["contacts", "account"], + "depends": ["contacts", "account", "l10n_us_partner_legal_number"], "data": [ "data/type_1099_data.xml", "data/box_1099_misc_data.xml", @@ -21,6 +21,7 @@ "views/type_1099_view.xml", "views/box_1099_misc_view.xml", "views/res_partner.xml", + "views/account_move.xml", "reports/account_payment_1099_report_views.xml", ], "installable": True, diff --git a/l10n_us_form_1099/migrations/14.0.1.0.2/post-migration.py b/l10n_us_form_1099/migrations/14.0.1.0.2/post-migration.py new file mode 100644 index 00000000..f0e98dd5 --- /dev/null +++ b/l10n_us_form_1099/migrations/14.0.1.0.2/post-migration.py @@ -0,0 +1,19 @@ +# Copyright (C) 2017 Open Source Integrators +# Copyright (C) 2019 Brian McMaster +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.logged_query( + env.cr, + """ + UPDATE account_move_line aml + SET is_1099 = v.is_1099, + type_1099_id = v.type_1099_id, + box_1099_misc_id = v.box_1099_misc_id + FROM res_partner v + WHERE aml.partner_id = v.id + """, + ) diff --git a/l10n_us_form_1099/models/__init__.py b/l10n_us_form_1099/models/__init__.py index 87fc818d..9e9c1823 100644 --- a/l10n_us_form_1099/models/__init__.py +++ b/l10n_us_form_1099/models/__init__.py @@ -1,5 +1,5 @@ -# Copyright (C) 2019 Open Source Integrators +# Copyright (C) 2021 Open Source Integrators # Copyright (C) 2019 Brian McMaster # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from . import type_1099, box_1099_misc, res_partner +from . import type_1099, box_1099_misc, res_partner, account_move diff --git a/l10n_us_form_1099/models/account_move.py b/l10n_us_form_1099/models/account_move.py new file mode 100644 index 00000000..6394bac7 --- /dev/null +++ b/l10n_us_form_1099/models/account_move.py @@ -0,0 +1,63 @@ +# Copyright (C) 2021 Open Source Integrators +# Copyright (C) 2019 Brian McMaster +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AccountMove(models.Model): + _inherit = "account.move" + + @api.onchange("partner_id") + def _onchange_partner_id(self): + """If lines are already added and user change the partner then + set 1099 information from the new partner""" + result = super(AccountMove, self)._onchange_partner_id() + self.invoice_line_ids.is_1099 = self.partner_id.is_1099 + self.invoice_line_ids.type_1099_id = self.partner_id.type_1099_id.id + self.invoice_line_ids.box_1099_misc_id = self.partner_id.box_1099_misc_id.id + return result + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + is_1099 = fields.Boolean("Is a 1099?", compute="_compute_is_1099", store=True) + type_1099_id = fields.Many2one("type.1099", string="1099 Type") + box_1099_misc_id = fields.Many2one("box.1099.misc", string="1099-MISC Box") + legal_id_number = fields.Char( + related="partner_id.legal_id_number", string="Legal ID" + ) + + @api.depends("product_id") + def _compute_is_1099(self): + for record in self: + record.is_1099 = ( + record.move_id.partner_id.is_1099 + and record.product_id.type == "service" + ) + + @api.model + def default_get(self, default_fields): + # OVERRIDE + # Update is_1099, type_1099_id and box_1099_misc_id from default partner + values = super(AccountMoveLine, self).default_get(default_fields) + if values.get("partner_id"): + partner = self.env["res.partner"].browse(values.get("partner_id")) + values.update( + { + "is_1099": partner.is_1099, + "type_1099_id": partner.type_1099_id.id, + "box_1099_misc_id": partner.box_1099_misc_id.id, + } + ) + return values + + @api.onchange("is_1099", "type_1099_id") + def onchange_is_1099(self): + if not self.is_1099: + self.type_1099_id = False + self.box_1099_misc_id = False + type_1099_id = self.env.ref("l10n_us_form_1099.1099_type_misc") + if self.type_1099_id != type_1099_id: + self.box_1099_misc_id = False diff --git a/l10n_us_form_1099/models/box_1099_misc.py b/l10n_us_form_1099/models/box_1099_misc.py index 2c5583e9..c0c8e946 100644 --- a/l10n_us_form_1099/models/box_1099_misc.py +++ b/l10n_us_form_1099/models/box_1099_misc.py @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Open Source Integrators +# Copyright (C) 2021 Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import fields, models diff --git a/l10n_us_form_1099/models/res_partner.py b/l10n_us_form_1099/models/res_partner.py index bcaf7c5e..831619d6 100644 --- a/l10n_us_form_1099/models/res_partner.py +++ b/l10n_us_form_1099/models/res_partner.py @@ -1,4 +1,4 @@ -# Copyright (C) 2017 Open Source Integrators +# Copyright (C) 2021 Open Source Integrators # Copyright (C) 2019 Brian McMaster # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/l10n_us_form_1099/models/type_1099.py b/l10n_us_form_1099/models/type_1099.py index 6f478d13..050d652c 100644 --- a/l10n_us_form_1099/models/type_1099.py +++ b/l10n_us_form_1099/models/type_1099.py @@ -1,3 +1,4 @@ +# Copyright (C) 2021 Open Source Integrators # Copyright (C) 2019 Brian McMaster # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/l10n_us_form_1099/reports/__init__.py b/l10n_us_form_1099/reports/__init__.py index 680840ad..07c78890 100644 --- a/l10n_us_form_1099/reports/__init__.py +++ b/l10n_us_form_1099/reports/__init__.py @@ -1,3 +1,4 @@ +# Copyright (C) 2021 Open Source Integrators # Copyright (C) 2019 Brian McMaster # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/l10n_us_form_1099/reports/account_payment_1099_report.py b/l10n_us_form_1099/reports/account_payment_1099_report.py index 84ac892c..aa64654d 100644 --- a/l10n_us_form_1099/reports/account_payment_1099_report.py +++ b/l10n_us_form_1099/reports/account_payment_1099_report.py @@ -1,5 +1,5 @@ # Copyright (C) 2019 Brian McMaster -# Copyright (C) 2019 Open Source Integrators +# Copyright (C) 2021 Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from psycopg2.extensions import AsIs @@ -17,33 +17,38 @@ class AccountPayment1099Report(models.Model): vendor_id = fields.Many2one("res.partner", "Vendor", readonly=True) type_1099 = fields.Many2one("type.1099", "1099 Type", readonly=True) box_1099_misc = fields.Many2one("box.1099.misc", "1099-MISC Box", readonly=True) + legal_id_number = fields.Char("Legal ID", readonly=True) def _select(self): return """ SELECT - pmt.id AS id, - am.date AS date, - pmt.amount AS amount, v.id AS vendor_id, - v.type_1099_id AS type_1099, - v.box_1099_misc_id AS box_1099_misc + aml.id AS id, + am.date AS date, + aml.price_total AS amount, + aml.type_1099_id AS type_1099, + aml.box_1099_misc_id AS box_1099_misc, + v.legal_id_number as legal_id_number """ def _from(self): return """ - FROM account_payment AS pmt + FROM account_move_line AS aml """ def _join(self): return """ - JOIN res_partner AS v ON pmt.partner_id = v.id - JOIN account_move AS am ON pmt.move_id = am.id + JOIN account_move AS am ON aml.move_id = am.id + JOIN res_partner AS v ON am.partner_id = v.id """ def _where(self): return """ WHERE - v.is_1099 = TRUE + am.payment_state='paid' and + am.move_type='in_invoice' and + aml.exclude_from_invoice_tab=false and + aml.is_1099=True """ def init(self): diff --git a/l10n_us_form_1099/views/account_move.xml b/l10n_us_form_1099/views/account_move.xml new file mode 100644 index 00000000..3e43c8fc --- /dev/null +++ b/l10n_us_form_1099/views/account_move.xml @@ -0,0 +1,58 @@ + + + + + account_move_line_view_form + account.move + + + + + + + + + + + + + + + + + + + + From 42c3662d50bd91f25c67c86289bc7e62337fb0ad Mon Sep 17 00:00:00 2001 From: Antonio Yamuta Date: Tue, 12 Oct 2021 13:56:53 -0700 Subject: [PATCH 2/2] Delete l10n_us_form_1099/migrations/14.0.1.0.2 directory --- .../migrations/14.0.1.0.2/post-migration.py | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 l10n_us_form_1099/migrations/14.0.1.0.2/post-migration.py diff --git a/l10n_us_form_1099/migrations/14.0.1.0.2/post-migration.py b/l10n_us_form_1099/migrations/14.0.1.0.2/post-migration.py deleted file mode 100644 index f0e98dd5..00000000 --- a/l10n_us_form_1099/migrations/14.0.1.0.2/post-migration.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (C) 2017 Open Source Integrators -# Copyright (C) 2019 Brian McMaster -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openupgradelib import openupgrade - - -@openupgrade.migrate() -def migrate(env, version): - openupgrade.logged_query( - env.cr, - """ - UPDATE account_move_line aml - SET is_1099 = v.is_1099, - type_1099_id = v.type_1099_id, - box_1099_misc_id = v.box_1099_misc_id - FROM res_partner v - WHERE aml.partner_id = v.id - """, - )