diff --git a/l10n_us_form_1099/README.rst b/l10n_us_form_1099/README.rst new file mode 100644 index 00000000..6f74cf0b --- /dev/null +++ b/l10n_us_form_1099/README.rst @@ -0,0 +1,133 @@ +============ +US Form 1099 +============ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ca6a09d2598e43a884c78485b3203770db77c90a15fd2792e0d6bba822a17dee + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--usa-lightgray.png?logo=github + :target: https://github.com/OCA/l10n-usa/tree/17.0/l10n_us_form_1099 + :alt: OCA/l10n-usa +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/l10n-usa-17-0/l10n-usa-17-0-l10n_us_form_1099 + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-usa&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +When companies hire others as contractors, the contractor in question +may work for themselves, another company or be the whole other company. +This is a huge range, but it can be simplified down to "do I report +their payment to the IRS as a 1099?". + +This module extends the functionality of a partner and allows you to +specify 1099 suppliers, their 1099 type and their 1099-MISC box. + +It also provides a report of payments by vendors, types and boxes in +Invoicing > Reporting > 1099 Report. + +You will still need to manage payment and IRS reporting separately. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +1. Go to Contacts > Configuration > 1099 Types +2. Review the existing types and update them if necessary +3. Go to Contacts > Configuration > 1099-MISC Boxes +4. Review the existing boxes and update them if necessary + +Usage +===== + +To use this module, you need to: + +1. Go to Contacts +2. Create or select a partner +3. Go to the Sales & Purchases tab +4. Check the "Is a 1099" box +5. Select their 1099 type +6. If their type is 1099-MISC, you can select their box +7. Go to Invoicing > Vendors > Bills (or Payments) +8. Create vendor bills and payments for those 1099 vendors +9. Go to Invoicing > Reporting > 1099 Report + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Open Source Integrators +* Brian McMaster + +Contributors +------------ + +- Jenny Wu +- Maxime Chambreuil +- Serpent Consulting Services Pvt. Ltd. +- Bhavesh Odedra +- Brian McMaster +- Jevin Dement +- Levent Karakas + +Other credits +------------- + +The development of this module has been financially supported by: + +- Open Source Integrators +- Brian McMaster + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-max3903| image:: https://github.com/max3903.png?size=40px + :target: https://github.com/max3903 + :alt: max3903 + +Current `maintainer `__: + +|maintainer-max3903| + +This module is part of the `OCA/l10n-usa `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_us_form_1099/__init__.py b/l10n_us_form_1099/__init__.py new file mode 100644 index 00000000..1382cbf6 --- /dev/null +++ b/l10n_us_form_1099/__init__.py @@ -0,0 +1,6 @@ +# Copyright (C) 2017 Open Source Integrators +# Copyright (C) 2019 Brian McMaster +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models +from . import reports diff --git a/l10n_us_form_1099/__manifest__.py b/l10n_us_form_1099/__manifest__.py new file mode 100644 index 00000000..e88c7575 --- /dev/null +++ b/l10n_us_form_1099/__manifest__.py @@ -0,0 +1,29 @@ +# Copyright (C) 2017-2024 Open Source Integrators +# Copyright (C) 2019-2024 Brian McMaster +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "US Form 1099", + "version": "17.0.1.0.0", + "author": "Open Source Integrators, " + "Brian McMaster, " + "Odoo Community Association (OCA)", + "license": "AGPL-3", + "summary": "Manage 1099 Types and Suppliers", + "category": "Customers", + "maintainer": "Open Source Integrators", + "website": "https://github.com/OCA/l10n-usa", + "depends": ["contacts", "account"], + "data": [ + "data/type_1099_data.xml", + "data/box_1099_misc_data.xml", + "security/ir.model.access.csv", + "views/type_1099_views.xml", + "views/box_1099_misc_views.xml", + "views/res_partner_views.xml", + "reports/account_payment_1099_report_views.xml", + ], + "installable": True, + "development_status": "Production/Stable", + "maintainers": ["max3903"], +} diff --git a/l10n_us_form_1099/data/box_1099_misc_data.xml b/l10n_us_form_1099/data/box_1099_misc_data.xml new file mode 100644 index 00000000..516d329e --- /dev/null +++ b/l10n_us_form_1099/data/box_1099_misc_data.xml @@ -0,0 +1,59 @@ + + + Box 1 Rents + + + Box 2 Royalties + + + Box 3 Other Income + + + Box 4 Fed Income Tax withheld + + + Box 5 Fishing Boat Proceeds + + + Box 6 Medical & Health Care + + + Box 7 Nonemployee Compensation + + + Box 8 Substitute Payments + + + Box 9 Payer made direct sales of $5,000... + + + Box 10 Crop Insurance Proceeds + + + Box 13 Excess Golden Parachute + + + Box 14 Gross Amount Paid to an Attorney + + + Box 15a Section 409A deferrals + + + Box 15b Section 409A Income + + + Box 16a State Tax withheld + + + Box 16b Local Tax Withheld + + + Box 17 State No. + + + Box 18a State Income + + + Box 18b Local Income + + diff --git a/l10n_us_form_1099/data/type_1099_data.xml b/l10n_us_form_1099/data/type_1099_data.xml new file mode 100644 index 00000000..7bea795b --- /dev/null +++ b/l10n_us_form_1099/data/type_1099_data.xml @@ -0,0 +1,59 @@ + + + 1099-A + + + 1099-B + + + 1099-C + + + 1099-CAP + + + 1099-DIV + + + 1099-G + + + 1099-H + + + 1099-INT + + + 1099-K + + + 1099-LTC + + + 1099-MISC + + + 1099-OID + + + 1099-PATR + + + 1099-Q + + + 1099-R + + + 1099-S + + + 1099-SA + + + RRB-1099 + + + SSA-1099 + + diff --git a/l10n_us_form_1099/i18n/l10n_us_form_1099.pot b/l10n_us_form_1099/i18n/l10n_us_form_1099.pot new file mode 100644 index 00000000..f1a97ced --- /dev/null +++ b/l10n_us_form_1099/i18n/l10n_us_form_1099.pot @@ -0,0 +1,159 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_us_form_1099 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: l10n_us_form_1099 +#: model:ir.actions.act_window,name:l10n_us_form_1099.action_account_payment_report_1099 +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_report_1099_graph +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_report_1099_pivot +msgid "1099 Payment Analysis" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model,name:l10n_us_form_1099.model_account_payment_1099_report +msgid "1099 Payment Statistics" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.ui.menu,name:l10n_us_form_1099.menu_action_account_payment_report_1099 +msgid "1099 Report" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model,name:l10n_us_form_1099.model_type_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__type_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_partner__type_1099_id +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_users__type_1099_id +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_type_1099_form +msgid "1099 Type" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.actions.act_window,name:l10n_us_form_1099.action_type_1099_view +#: model:ir.ui.menu,name:l10n_us_form_1099.type_1099_menu_config +msgid "1099 Types" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model,name:l10n_us_form_1099.model_box_1099_misc +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__box_1099_misc +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_partner__box_1099_misc_id +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_users__box_1099_misc_id +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_box_1099_misc_form +msgid "1099-MISC Box" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.actions.act_window,name:l10n_us_form_1099.action_box_1099_misc_view +#: model:ir.ui.menu,name:l10n_us_form_1099.box_1099_misc_menu_config +msgid "1099-MISC Boxes" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model,name:l10n_us_form_1099.model_res_partner +msgid "Contact" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__create_uid +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__create_uid +msgid "Created by" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__create_date +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__create_date +msgid "Created on" +msgstr "" + +#. module: l10n_us_form_1099 +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +msgid "Date" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__display_name +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__display_name +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__display_name +msgid "Display Name" +msgstr "" + +#. module: l10n_us_form_1099 +#: model_terms:ir.actions.act_window,help:l10n_us_form_1099.action_account_payment_report_1099 +msgid "" +"From this report, you can have an overview of the amount paid to your 1099\n" +" vendors." +msgstr "" + +#. module: l10n_us_form_1099 +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +msgid "Group By" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__id +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__id +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__id +msgid "ID" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_partner__is_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_users__is_1099 +msgid "Is a 1099?" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report____last_update +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc____last_update +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099____last_update +msgid "Last Modified on" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__write_uid +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__write_date +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__write_date +msgid "Last Updated on" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__name +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__name +msgid "Name" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__amount +msgid "Payment Amount" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__date +msgid "Payment Date" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__vendor_id +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +msgid "Vendor" +msgstr "" diff --git a/l10n_us_form_1099/i18n/nl_NL.po b/l10n_us_form_1099/i18n/nl_NL.po new file mode 100644 index 00000000..f9bd7f9f --- /dev/null +++ b/l10n_us_form_1099/i18n/nl_NL.po @@ -0,0 +1,169 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_us_form_1099 +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-27 02:45+0000\n" +"PO-Revision-Date: 2017-06-27 02:45+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: l10n_us_form_1099 +#: model:ir.actions.act_window,name:l10n_us_form_1099.action_account_payment_report_1099 +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_report_1099_graph +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_report_1099_pivot +msgid "1099 Payment Analysis" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model,name:l10n_us_form_1099.model_account_payment_1099_report +msgid "1099 Payment Statistics" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.ui.menu,name:l10n_us_form_1099.menu_action_account_payment_report_1099 +msgid "1099 Report" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model,name:l10n_us_form_1099.model_type_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__type_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_partner__type_1099_id +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_users__type_1099_id +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_type_1099_form +msgid "1099 Type" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.actions.act_window,name:l10n_us_form_1099.action_type_1099_view +#: model:ir.ui.menu,name:l10n_us_form_1099.type_1099_menu_config +msgid "1099 Types" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model,name:l10n_us_form_1099.model_box_1099_misc +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__box_1099_misc +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_partner__box_1099_misc_id +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_users__box_1099_misc_id +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_box_1099_misc_form +msgid "1099-MISC Box" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.actions.act_window,name:l10n_us_form_1099.action_box_1099_misc_view +#: model:ir.ui.menu,name:l10n_us_form_1099.box_1099_misc_menu_config +msgid "1099-MISC Boxes" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model,name:l10n_us_form_1099.model_res_partner +msgid "Contact" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__create_uid +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__create_uid +msgid "Created by" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__create_date +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__create_date +msgid "Created on" +msgstr "" + +#. module: l10n_us_form_1099 +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +msgid "Date" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__display_name +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__display_name +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__display_name +msgid "Display Name" +msgstr "" + +#. module: l10n_us_form_1099 +#: model_terms:ir.actions.act_window,help:l10n_us_form_1099.action_account_payment_report_1099 +msgid "" +"From this report, you can have an overview of the amount paid to your 1099\n" +" vendors." +msgstr "" + +#. module: l10n_us_form_1099 +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +msgid "Group By" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__id +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__id +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__id +msgid "ID" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_partner__is_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_res_users__is_1099 +#, fuzzy +msgid "Is a 1099?" +msgstr "Is een 1099" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report____last_update +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc____last_update +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099____last_update +msgid "Last Modified on" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__write_uid +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__write_date +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__write_date +msgid "Last Updated on" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_box_1099_misc__name +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_type_1099__name +msgid "Name" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__amount +msgid "Payment Amount" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__date +msgid "Payment Date" +msgstr "" + +#. module: l10n_us_form_1099 +#: model:ir.model.fields,field_description:l10n_us_form_1099.field_account_payment_1099_report__vendor_id +#: model_terms:ir.ui.view,arch_db:l10n_us_form_1099.view_account_payment_1099_report_search +msgid "Vendor" +msgstr "" + +#~ msgid "Partner" +#~ msgstr "Relatie" diff --git a/l10n_us_form_1099/models/__init__.py b/l10n_us_form_1099/models/__init__.py new file mode 100644 index 00000000..87fc818d --- /dev/null +++ b/l10n_us_form_1099/models/__init__.py @@ -0,0 +1,5 @@ +# Copyright (C) 2019 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 diff --git a/l10n_us_form_1099/models/box_1099_misc.py b/l10n_us_form_1099/models/box_1099_misc.py new file mode 100644 index 00000000..18e7ecda --- /dev/null +++ b/l10n_us_form_1099/models/box_1099_misc.py @@ -0,0 +1,11 @@ +# Copyright (C) 2019-2024 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class Box1099Misc(models.Model): + _name = "box.1099.misc" + _description = "1099-MISC Box" + + name = fields.Char() diff --git a/l10n_us_form_1099/models/res_partner.py b/l10n_us_form_1099/models/res_partner.py new file mode 100644 index 00000000..567d67db --- /dev/null +++ b/l10n_us_form_1099/models/res_partner.py @@ -0,0 +1,13 @@ +# Copyright (C) 2017-2024 Open Source Integrators +# Copyright (C) 2019-2024 Brian McMaster +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResPartner(models.Model): + _inherit = "res.partner" + + 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") diff --git a/l10n_us_form_1099/models/type_1099.py b/l10n_us_form_1099/models/type_1099.py new file mode 100644 index 00000000..e27a90d0 --- /dev/null +++ b/l10n_us_form_1099/models/type_1099.py @@ -0,0 +1,11 @@ +# Copyright (C) 2019-2024 Brian McMaster +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class Type1099(models.Model): + _name = "type.1099" + _description = "1099 Type" + + name = fields.Char() diff --git a/l10n_us_form_1099/pyproject.toml b/l10n_us_form_1099/pyproject.toml new file mode 100644 index 00000000..4231d0cc --- /dev/null +++ b/l10n_us_form_1099/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/l10n_us_form_1099/readme/CONFIGURE.md b/l10n_us_form_1099/readme/CONFIGURE.md new file mode 100644 index 00000000..96f800e5 --- /dev/null +++ b/l10n_us_form_1099/readme/CONFIGURE.md @@ -0,0 +1,4 @@ +1. Go to Contacts \> Configuration \> 1099 Types +2. Review the existing types and update them if necessary +3. Go to Contacts \> Configuration \> 1099-MISC Boxes +4. Review the existing boxes and update them if necessary diff --git a/l10n_us_form_1099/readme/CONTRIBUTORS.md b/l10n_us_form_1099/readme/CONTRIBUTORS.md new file mode 100644 index 00000000..95a5cb5b --- /dev/null +++ b/l10n_us_form_1099/readme/CONTRIBUTORS.md @@ -0,0 +1,7 @@ +- Jenny Wu \<\> +- Maxime Chambreuil \<\> +- Serpent Consulting Services Pvt. Ltd. \<\> +- Bhavesh Odedra \<\> +- Brian McMaster \<\> +- Jevin Dement \<\> +- Levent Karakas \<\> diff --git a/l10n_us_form_1099/readme/CREDITS.md b/l10n_us_form_1099/readme/CREDITS.md new file mode 100644 index 00000000..32e819d7 --- /dev/null +++ b/l10n_us_form_1099/readme/CREDITS.md @@ -0,0 +1,4 @@ +The development of this module has been financially supported by: + +- Open Source Integrators \<\> +- Brian McMaster diff --git a/l10n_us_form_1099/readme/DESCRIPTION.md b/l10n_us_form_1099/readme/DESCRIPTION.md new file mode 100644 index 00000000..dad6553f --- /dev/null +++ b/l10n_us_form_1099/readme/DESCRIPTION.md @@ -0,0 +1,12 @@ +When companies hire others as contractors, the contractor in question +may work for themselves, another company or be the whole other company. +This is a huge range, but it can be simplified down to "do I report +their payment to the IRS as a 1099?". + +This module extends the functionality of a partner and allows you to +specify 1099 suppliers, their 1099 type and their 1099-MISC box. + +It also provides a report of payments by vendors, types and boxes in Invoicing \> +Reporting \> 1099 Report. + +You will still need to manage payment and IRS reporting separately. diff --git a/l10n_us_form_1099/readme/USAGE.md b/l10n_us_form_1099/readme/USAGE.md new file mode 100644 index 00000000..49b2b95a --- /dev/null +++ b/l10n_us_form_1099/readme/USAGE.md @@ -0,0 +1,11 @@ +To use this module, you need to: + +1. Go to Contacts +2. Create or select a partner +3. Go to the Sales & Purchases tab +4. Check the "Is a 1099" box +5. Select their 1099 type +6. If their type is 1099-MISC, you can select their box +7. Go to Invoicing \> Vendors \> Bills (or Payments) +8. Create vendor bills and payments for those 1099 vendors +9. Go to Invoicing \> Reporting \> 1099 Report diff --git a/l10n_us_form_1099/reports/__init__.py b/l10n_us_form_1099/reports/__init__.py new file mode 100644 index 00000000..680840ad --- /dev/null +++ b/l10n_us_form_1099/reports/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2019 Brian McMaster +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import account_payment_1099_report diff --git a/l10n_us_form_1099/reports/account_payment_1099_report.py b/l10n_us_form_1099/reports/account_payment_1099_report.py new file mode 100644 index 00000000..8dcdfb19 --- /dev/null +++ b/l10n_us_form_1099/reports/account_payment_1099_report.py @@ -0,0 +1,67 @@ +# Copyright (C) 2019-2024 Brian McMaster +# Copyright (C) 2019-2024 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from psycopg2.extensions import AsIs + +from odoo import fields, models, tools + + +class AccountPayment1099Report(models.Model): + _name = "account.payment.1099.report" + _description = "1099 Payment Statistics" + _auto = False + + date = fields.Date("Payment Date", readonly=True) + amount = fields.Float("Payment Amount", readonly=True) + 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) + + 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 + """ + + def _from(self): + return """ + FROM account_payment AS pmt + """ + + 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 + """ + + def _where(self): + return """ + WHERE + v.is_1099 = TRUE + """ + + def init(self): + tools.drop_view_if_exists(self._cr, self._table) + self._cr.execute( + """ + CREATE OR REPLACE VIEW %s AS ( + %s + %s + %s + %s + ) + """, + ( + AsIs(self._table), + AsIs(self._select()), + AsIs(self._from()), + AsIs(self._join()), + AsIs(self._where()), + ), + ) diff --git a/l10n_us_form_1099/reports/account_payment_1099_report_views.xml b/l10n_us_form_1099/reports/account_payment_1099_report_views.xml new file mode 100644 index 00000000..177bbdad --- /dev/null +++ b/l10n_us_form_1099/reports/account_payment_1099_report_views.xml @@ -0,0 +1,72 @@ + + + + account.payment.1099.report.pivot + account.payment.1099.report + + + + + + + + + + account.payment.1099.report.graph + account.payment.1099.report + + + + + + + + + + account.payment.1099.report.search + account.payment.1099.report + + + + + + + + + + + + + + + 1099 Payment Analysis + account.payment.1099.report + pivot,graph + + + From this report, you can have an overview of the amount paid to your 1099 + vendors. + + + + diff --git a/l10n_us_form_1099/security/ir.model.access.csv b/l10n_us_form_1099/security/ir.model.access.csv new file mode 100644 index 00000000..fede60fa --- /dev/null +++ b/l10n_us_form_1099/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_type_user_1099,access_type_1099,model_type_1099,base.group_user,1,0,0,0 +access_type_system_1099,access_type_1099,model_type_1099,account.group_account_manager,1,1,1,1 +access_box_1099_misc_user,access_box_1099_misc,model_box_1099_misc,base.group_user,1,0,0,0 +access_box_1099_misc_manager,access_box_1099_misc,model_box_1099_misc,account.group_account_manager,1,1,1,1 +access_account_payment_1099_report_user,account_payment_1099_report,model_account_payment_1099_report,account.group_account_user,1,0,0,0 +access_account_payment_1099_report_manager,account_payment_1099_report,model_account_payment_1099_report,account.group_account_manager,1,1,1,1 diff --git a/l10n_us_form_1099/static/description/icon.png b/l10n_us_form_1099/static/description/icon.png new file mode 100644 index 00000000..3a0328b5 Binary files /dev/null and b/l10n_us_form_1099/static/description/icon.png differ diff --git a/l10n_us_form_1099/static/description/index.html b/l10n_us_form_1099/static/description/index.html new file mode 100644 index 00000000..110f42bb --- /dev/null +++ b/l10n_us_form_1099/static/description/index.html @@ -0,0 +1,473 @@ + + + + + + +US Form 1099 + + + +
+

US Form 1099

+ + +

Production/Stable License: AGPL-3 OCA/l10n-usa Translate me on Weblate Try me on Runboat

+

When companies hire others as contractors, the contractor in question +may work for themselves, another company or be the whole other company. +This is a huge range, but it can be simplified down to “do I report +their payment to the IRS as a 1099?”.

+

This module extends the functionality of a partner and allows you to +specify 1099 suppliers, their 1099 type and their 1099-MISC box.

+

It also provides a report of payments by vendors, types and boxes in +Invoicing > Reporting > 1099 Report.

+

You will still need to manage payment and IRS reporting separately.

+

Table of contents

+ +
+

Configuration

+
    +
  1. Go to Contacts > Configuration > 1099 Types
  2. +
  3. Review the existing types and update them if necessary
  4. +
  5. Go to Contacts > Configuration > 1099-MISC Boxes
  6. +
  7. Review the existing boxes and update them if necessary
  8. +
+
+
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Contacts
  2. +
  3. Create or select a partner
  4. +
  5. Go to the Sales & Purchases tab
  6. +
  7. Check the “Is a 1099” box
  8. +
  9. Select their 1099 type
  10. +
  11. If their type is 1099-MISC, you can select their box
  12. +
  13. Go to Invoicing > Vendors > Bills (or Payments)
  14. +
  15. Create vendor bills and payments for those 1099 vendors
  16. +
  17. Go to Invoicing > Reporting > 1099 Report
  18. +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Open Source Integrators
  • +
  • Brian McMaster
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

The development of this module has been financially supported by:

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

max3903

+

This module is part of the OCA/l10n-usa project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/l10n_us_form_1099/static/description/l10n_us_form_1099.svg b/l10n_us_form_1099/static/description/l10n_us_form_1099.svg new file mode 100644 index 00000000..c237a11f --- /dev/null +++ b/l10n_us_form_1099/static/description/l10n_us_form_1099.svg @@ -0,0 +1,79 @@ + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/l10n_us_form_1099/views/box_1099_misc_views.xml b/l10n_us_form_1099/views/box_1099_misc_views.xml new file mode 100644 index 00000000..970cfc47 --- /dev/null +++ b/l10n_us_form_1099/views/box_1099_misc_views.xml @@ -0,0 +1,42 @@ + + + + view.box.1099.misc.form + box.1099.misc + +
+ + + + + + + +
+
+
+ + box.1099.misc.tree + box.1099.misc + + + + + + + + 1099-MISC Boxes + box.1099.misc + ir.actions.act_window + tree,form + + + +
diff --git a/l10n_us_form_1099/views/res_partner_views.xml b/l10n_us_form_1099/views/res_partner_views.xml new file mode 100644 index 00000000..3eee0ffd --- /dev/null +++ b/l10n_us_form_1099/views/res_partner_views.xml @@ -0,0 +1,24 @@ + + + + res_partner_view_form - l10n_us_form_1099 + res.partner + + + + + + + + + + diff --git a/l10n_us_form_1099/views/type_1099_views.xml b/l10n_us_form_1099/views/type_1099_views.xml new file mode 100644 index 00000000..195bf5c1 --- /dev/null +++ b/l10n_us_form_1099/views/type_1099_views.xml @@ -0,0 +1,43 @@ + + + + view.type.1099.form + type.1099 + +
+ + + + + + + +
+
+
+ + type.1099.tree + type.1099 + + + + + + + + 1099 Types + type.1099 + ir.actions.act_window + tree,form + + + +