Skip to content

Commit

Permalink
[14.0][ADD] l10n_us_form_1099
Browse files Browse the repository at this point in the history
  • Loading branch information
Chanakya-SerpentCS committed Mar 2, 2021
1 parent 26a5a50 commit 1020beb
Show file tree
Hide file tree
Showing 11 changed files with 173 additions and 16 deletions.
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", "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
19 changes: 19 additions & 0 deletions l10n_us_form_1099/migrations/14.0.1.0.2/post-migration.py
Original file line number Diff line number Diff line change
@@ -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
""",
)
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
# 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
67 changes: 67 additions & 0 deletions l10n_us_form_1099/models/account_move.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# 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 than \
set Default 'is_1099' from newly selected 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?")
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"
)
allow_modify = fields.Boolean("Allow Modify Lines", compute="_compute_allow_fields")

@api.depends("product_id")
def _compute_allow_fields(self):
"""
Make Allow Modify = True if selected product is Service else False
"""
for record in self:
if record.product_id.type == "service":
record.allow_modify = True
else:
record.allow_modify = False

@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
# 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
60 changes: 60 additions & 0 deletions l10n_us_form_1099/views/account_move.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<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="{'readonly': [('allow_modify', '=', False)]}"
/>
<field name="allow_modify" invisible="1" />
<field
name="type_1099_id"
options="{'no_create': 1, 'no_open':1}"
attrs="{'readonly': ['|', ('is_1099', '=', False),('allow_modify', '=', False)]}"
/>
<field
name="box_1099_misc_id"
options="{'no_create': 1, 'no_open':1}"
attrs="{'readonly': ['|','|',('allow_modify', '=', False),('is_1099', '=', False),('type_1099_id', '!=', %(l10n_us_form_1099.1099_type_misc)d)]}"
/>
<field name="legal_id_number" />
</xpath>

<xpath
expr="//field[@name='line_ids']//field[@name='account_id']"
position="after"
>
<field
name="is_1099"
attrs="{'readonly': [('allow_modify', '=', False)]}"
invisible="1"
/>
<field name="allow_modify" invisible="1" />
<field
name="type_1099_id"
options="{'no_create': 1, 'no_open':1}"
attrs="{'readonly': ['|', ('is_1099', '=', False),('allow_modify', '=', False)]}"
invisible="1"
/>
<field
name="box_1099_misc_id"
options="{'no_create': 1, 'no_open':1}"
invisible="1"
attrs="{'readonly': ['|','|',('allow_modify', '=', False),('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>

0 comments on commit 1020beb

Please sign in to comment.