Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[14.0][IMP] Improved l10n_us_form_1099 : 1099 classification by transaction #75

Open
wants to merge 3 commits into
base: 14.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions l10n_us_form_1099/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
===========
Expand Down Expand Up @@ -93,6 +95,7 @@ Contributors
* Bhavesh Odedra <[email protected]>
* Brian McMaster <[email protected]>
* Jevin Dement <[email protected]>
* Chankya Soni <[email protected]>

Other credits
~~~~~~~~~~~~~
Expand Down
5 changes: 3 additions & 2 deletions l10n_us_form_1099/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)",
Expand All @@ -13,14 +13,15 @@
"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",
"security/ir.model.access.csv",
"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,
Expand Down
4 changes: 2 additions & 2 deletions l10n_us_form_1099/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Copyright (C) 2019 Open Source Integrators
# Copyright (C) 2021 Open Source Integrators
Copy link
Sponsor Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don'a change the work year please

# 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
63 changes: 63 additions & 0 deletions l10n_us_form_1099/models/account_move.py
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion l10n_us_form_1099/models/box_1099_misc.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion l10n_us_form_1099/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (C) 2017 Open Source Integrators
# Copyright (C) 2021 Open Source Integrators
Copy link
Sponsor Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same

# Copyright (C) 2019 Brian McMaster
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

Expand Down
1 change: 1 addition & 0 deletions l10n_us_form_1099/models/type_1099.py
Original file line number Diff line number Diff line change
@@ -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).

Expand Down
1 change: 1 addition & 0 deletions l10n_us_form_1099/reports/__init__.py
Original file line number Diff line number Diff line change
@@ -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).

Expand Down
25 changes: 15 additions & 10 deletions l10n_us_form_1099/reports/account_payment_1099_report.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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):
Expand Down
58 changes: 58 additions & 0 deletions l10n_us_form_1099/views/account_move.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<odoo>
<!-- Copyright (C) 2021 Open Source Integrators Copyright (C) 2019 Brian
McMaster License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->

<record id="account_move_view_form_l10n_us_1099" model="ir.ui.view">
<field name="name">account_move_line_view_form</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<xpath
expr="//field[@name='invoice_line_ids']//field[@name='account_id']"
position="after"
>
<field
name="is_1099"
attrs="{'column_invisible' : [('parent.move_type', '!=', 'in_invoice')]}"
/>
<field
name="type_1099_id"
options="{'no_create': 1, 'no_open':1}"
attrs="{'readonly': [('is_1099', '=', False)], 'column_invisible' : [('parent.move_type', '!=', 'in_invoice')]}"
/>
<field
name="box_1099_misc_id"
options="{'no_create': 1, 'no_open':1}"
attrs="{'readonly': ['|',('is_1099', '=', False),('type_1099_id', '!=', %(l10n_us_form_1099.1099_type_misc)d)],
'column_invisible' : [('parent.move_type', '!=', 'in_invoice')]}"
/>
<field
name="legal_id_number"
attrs="{'column_invisible' : [('parent.move_type', '!=', 'in_invoice')]}"
/>
</xpath>

<xpath
expr="//field[@name='line_ids']//field[@name='account_id']"
position="after"
>
<field name="is_1099" invisible="1" />
<field
name="type_1099_id"
options="{'no_create': 1, 'no_open':1}"
attrs="{'readonly': [('is_1099', '=', False)]}"
invisible="1"
/>
<field
name="box_1099_misc_id"
options="{'no_create': 1, 'no_open':1}"
invisible="1"
attrs="{'readonly': ['|', ('is_1099', '=', False),('type_1099_id', '!=', %(l10n_us_form_1099.1099_type_misc)d)]}"
/>
<field name="legal_id_number" invisible="1" />
</xpath>

</field>
</record>

</odoo>