From a6f057f749b9e3c73e6d4cb4b37b7843be8fb978 Mon Sep 17 00:00:00 2001 From: sanami Date: Mon, 8 Jun 2026 05:25:36 +0000 Subject: [PATCH] [6859][ADD] account_billing --- account_billing/README.rst | 114 +++ account_billing/__init__.py | 4 + account_billing/__manifest__.py | 25 + .../data/account_billing_sequence.xml | 22 + account_billing/data/server_action.xml | 28 + account_billing/i18n/account_billing.pot | 614 ++++++++++++++++ account_billing/i18n/es.po | 680 ++++++++++++++++++ account_billing/i18n/fr_FR.po | 615 ++++++++++++++++ account_billing/i18n/it.po | 639 ++++++++++++++++ account_billing/i18n/ja.po | 632 ++++++++++++++++ account_billing/i18n/nl_NL.po | 649 +++++++++++++++++ account_billing/i18n/zh_CN.po | 625 ++++++++++++++++ account_billing/models/__init__.py | 5 + account_billing/models/account_billing.py | 274 +++++++ account_billing/models/account_move.py | 107 +++ account_billing/pyproject.toml | 3 + account_billing/readme/CONTRIBUTORS.md | 4 + account_billing/readme/DESCRIPTION.md | 10 + account_billing/readme/USAGE.md | 10 + account_billing/report/report.xml | 14 + account_billing/report/report_billing.xml | 100 +++ .../security/account_billing_security.xml | 17 + account_billing/security/ir.model.access.csv | 3 + account_billing/static/description/icon.png | Bin 0 -> 9455 bytes account_billing/static/description/index.html | 461 ++++++++++++ account_billing/static/src/img/icon.png | Bin 0 -> 7338 bytes account_billing/tests/__init__.py | 4 + account_billing/tests/test_account_billing.py | 313 ++++++++ .../views/account_billing_views.xml | 270 +++++++ account_billing/views/account_move_views.xml | 26 + 30 files changed, 6268 insertions(+) create mode 100644 account_billing/README.rst create mode 100644 account_billing/__init__.py create mode 100644 account_billing/__manifest__.py create mode 100644 account_billing/data/account_billing_sequence.xml create mode 100644 account_billing/data/server_action.xml create mode 100644 account_billing/i18n/account_billing.pot create mode 100644 account_billing/i18n/es.po create mode 100644 account_billing/i18n/fr_FR.po create mode 100644 account_billing/i18n/it.po create mode 100644 account_billing/i18n/ja.po create mode 100644 account_billing/i18n/nl_NL.po create mode 100644 account_billing/i18n/zh_CN.po create mode 100644 account_billing/models/__init__.py create mode 100644 account_billing/models/account_billing.py create mode 100644 account_billing/models/account_move.py create mode 100644 account_billing/pyproject.toml create mode 100644 account_billing/readme/CONTRIBUTORS.md create mode 100644 account_billing/readme/DESCRIPTION.md create mode 100644 account_billing/readme/USAGE.md create mode 100644 account_billing/report/report.xml create mode 100644 account_billing/report/report_billing.xml create mode 100644 account_billing/security/account_billing_security.xml create mode 100644 account_billing/security/ir.model.access.csv create mode 100644 account_billing/static/description/icon.png create mode 100644 account_billing/static/description/index.html create mode 100644 account_billing/static/src/img/icon.png create mode 100644 account_billing/tests/__init__.py create mode 100644 account_billing/tests/test_account_billing.py create mode 100644 account_billing/views/account_billing_views.xml create mode 100644 account_billing/views/account_move_views.xml diff --git a/account_billing/README.rst b/account_billing/README.rst new file mode 100644 index 0000000..66a8ff6 --- /dev/null +++ b/account_billing/README.rst @@ -0,0 +1,114 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +=============== +Billing Process +=============== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:50d733e0ce5080841df88469b4939fc61943ac75ba37cb787877b142628c7554 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-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%2Faccount--invoicing-lightgray.png?logo=github + :target: https://github.com/OCA/account-invoicing/tree/19.0/account_billing + :alt: OCA/account-invoicing +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/account-invoicing-19-0/account-invoicing-19-0-account_billing + :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/account-invoicing&target_branch=19.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +In some countries, there is a customary practice for companies to +collect money from their customers only once in a month. For example, +the customer has 3 payments due in a given month, the vendor or billing +company should group all the due AR Invoices in a document call Billing +Document and issue it with all the invoices consolidated to the customer +on the Billing Day. The customer will be paying based on the payable +amount shown in Billing Document in the following month. + +This module use a new document called "Billing" to group these invoices +together. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you have 2 ways: + +1. | Create new billing directly + | Go to *Invoicing -> Customers or Vendors -> Billing* + +2. Create billing from selected invoice(s) + + 1. Go to *Invoicing -> Customers or Vendors -> Invoices or Bills* + 2. Create Invoice + 3. On tree view select invoice and go to *Action -> Create Billing* + +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 +------- + +* Ecosoft + +Contributors +------------ + +- Kitti U. +- Saran Lim. +- Rattapong Chokmasermkul +- Komsan Somwong + +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-Saran440| image:: https://github.com/Saran440.png?size=40px + :target: https://github.com/Saran440 + :alt: Saran440 + +Current `maintainer `__: + +|maintainer-Saran440| + +This module is part of the `OCA/account-invoicing `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_billing/__init__.py b/account_billing/__init__.py new file mode 100644 index 0000000..a186576 --- /dev/null +++ b/account_billing/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2019 Ecosoft Co., Ltd (https://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from . import models diff --git a/account_billing/__manifest__.py b/account_billing/__manifest__.py new file mode 100644 index 0000000..236a01e --- /dev/null +++ b/account_billing/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2019 Ecosoft Co., Ltd (https://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +{ + "name": "Billing Process", + "summary": "Group invoice as billing before payment", + "version": "19.0.1.0.0", + "author": "Ecosoft, Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/OCA/account-invoicing", + "category": "Account", + "depends": ["account"], + "data": [ + "data/account_billing_sequence.xml", + "data/server_action.xml", + "security/ir.model.access.csv", + "security/account_billing_security.xml", + "views/account_billing_views.xml", + "views/account_move_views.xml", + "report/report_billing.xml", + "report/report.xml", + ], + "installable": True, + "maintainers": ["Saran440"], +} diff --git a/account_billing/data/account_billing_sequence.xml b/account_billing/data/account_billing_sequence.xml new file mode 100644 index 0000000..e9df49f --- /dev/null +++ b/account_billing/data/account_billing_sequence.xml @@ -0,0 +1,22 @@ + + + Billing sequence + account.customer.billing + CUST.BIL/%(year)s/ + + + + + 5 + + + Supplier Billing sequence + account.supplier.billing + SUPP.BIL/%(year)s/ + + + + + 5 + + diff --git a/account_billing/data/server_action.xml b/account_billing/data/server_action.xml new file mode 100644 index 0000000..24650e4 --- /dev/null +++ b/account_billing/data/server_action.xml @@ -0,0 +1,28 @@ + + + + Create Billing + + + list + code + + if records: + action = records.action_create_billing() + + + + + + Register Payment + + + + list + code + + if records: + action = records.action_register_payment() + + + diff --git a/account_billing/i18n/account_billing.pot b/account_billing/i18n/account_billing.pot new file mode 100644 index 0000000..fba072c --- /dev/null +++ b/account_billing/i18n/account_billing.pot @@ -0,0 +1,614 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_billing +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.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: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__state +msgid "" +"\n" +" * The 'Draft' status is used when a user create a new billing\n" +"\n" +" * The 'Billed' status is used when user confirmed billing,\n" +" billing number is generated\n" +"\n" +" * The 'Cancelled' status is used when user billing is cancelled\n" +" " +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__invoice_related_count +msgid "# of Invoices" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "%s" +msgstr "" + +#. module: account_billing +#: model:ir.actions.report,print_report_name:account_billing.report_account_billing +msgid "" +"'BILL-%s%s' % (object.name, object.state == 'draft' and '-draft' or '')" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Date" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Number" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Notes :" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Source Document" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Status" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Total" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing Date:" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Currency:" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date:" +msgstr "" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing +msgid "Account Billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date_type +msgid "" +"All invoices with date (threshold date type) before and equal to threshold " +"date will be listed in billing lines" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_residual +msgid "Amount Due" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Are you sure to cancel this document?" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__billing_line_ids +msgid "Bill Lines" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__bill_type +msgid "Bill Type" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__billed +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed Billing" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +#: model:ir.actions.act_window,name:account_billing.action_customer_billing +#: model:ir.actions.act_window,name:account_billing.action_supplier_billing +#: model:ir.actions.report,name:account_billing.report_account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__billing_id +#: model:ir.ui.menu,name:account_billing.menu_action_customer_billing +#: model:ir.ui.menu,name:account_billing.menu_action_supplier_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing %s is cancelled" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__date +msgid "Billing Date" +msgstr "" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing_line +msgid "Billing Line" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_line_ids +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Billing Lines" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "" +"Billing cannot be processed because some invoices are not in the 'Posted' or" +" 'Paid' state already." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is billed." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is reset to draft" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_line_ids +msgid "Billing lines that reference this invoice" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_ids +msgid "Billings" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Cancel" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__cancel +msgid "Cancelled" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Cancelled Billing" +msgstr "" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Click to register a new billing." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__company_id +msgid "Company" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Compute items" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__invoice_related_count +msgid "Count invoice in billing" +msgstr "" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_invoice_billing +msgid "Create Billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_uid +msgid "Created by" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_date +msgid "Created on" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__currency_id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__currency_id +#: model:ir.model.fields,help:account_billing.field_account_billing__currency_id +msgid "Currency" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Customer" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__out_invoice +msgid "Customer Invoice" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__display_name +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__display_name +msgid "Display Name" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__draft +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft Billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date_due +msgid "Due Date" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__date +msgid "Effective date for accounting entries" +msgstr "" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +msgid "" +"Enter the customer the invoices expect to be paid by the customer for this\n" +" bill period. By default the pending invoices will be listed, automatically." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Group By" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__has_message +msgid "Has Message" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__id +msgid "ID" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__invoice_date +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date +msgid "Invoice Date" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Invoice paid already." +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Invoices" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__company_id +msgid "" +"Leave this field empty if this route is shared between all " +"companies" +msgstr "" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Manage supplier billing you want to be used in the system." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_ids +msgid "Messages" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__move_id +msgid "Move" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__name +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Name" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__narration +#: model:ir.model.fields,help:account_billing.field_account_billing__narration +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Notes" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__name +msgid "Number" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__name +msgid "Number of account.billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__origin +msgid "Origin" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__partner_id +msgid "Partner" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__partner_id +msgid "Partner Information" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__payment_paid_all +msgid "Payment Paid All" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__payment_state +msgid "Payment Status" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same currency" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same partner" +msgstr "" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_billing_from_list +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Register Payment" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_ids +msgid "Relationship between invoice and billing" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Search Billings" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Set to Draft" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__state +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__state +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Status" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing_line__origin +msgid "The document(s) that generated the invoice." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Threshold Date" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date_type +msgid "Threshold Date Type" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Threshold Date cannot be later than the %s in lines" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_total +msgid "Total" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount Residual" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__bill_type +msgid "Type of invoice" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Validate" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_supplier_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Vendor" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__in_invoice +msgid "Vendor Bill" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "You cannot reset to draft an invoice that has been billed." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "You need to add a line before validate." +msgstr "" diff --git a/account_billing/i18n/es.po b/account_billing/i18n/es.po new file mode 100644 index 0000000..c01a44a --- /dev/null +++ b/account_billing/i18n/es.po @@ -0,0 +1,680 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_billing +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2026-05-09 09:04+0000\n" +"Last-Translator: Ed-Spain \n" +"Language-Team: none\n" +"Language: es\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" +"X-Generator: Weblate 5.15.2\n" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__state +msgid "" +"\n" +" * The 'Draft' status is used when a user create a new billing\n" +"\n" +" * The 'Billed' status is used when user confirmed billing,\n" +" billing number is generated\n" +"\n" +" * The 'Cancelled' status is used when user billing is cancelled\n" +" " +msgstr "" +"\n" +" * El estado \"Borrador\" se utiliza cuando un usuario crea una " +"nueva facturación.\n" +"\n" +" * El estado 'Facturado' se utiliza cuando el usuario confirma la " +"facturación,\n" +" se genera el número de facturación\n" +"\n" +" * El estado \"Cancelado\" se utiliza cuando se cancela la " +"facturación de un usuario.\n" +" " + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__invoice_related_count +msgid "# of Invoices" +msgstr "# de facturas" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +#, fuzzy +msgid "%s" +msgstr "%s" + +#. module: account_billing +#: model:ir.actions.report,print_report_name:account_billing.report_account_billing +msgid "'BILL-%s%s' % (object.name, object.state == 'draft' and '-draft' or '')" +msgstr "" +"'BILL-%s%s' % (object.name, object.state == 'draft' and '-draft' or '')" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date" +msgstr "Fecha de Vencimiento" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Date" +msgstr "Fecha de Factura" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Number" +msgstr "Número de Factura" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Notes :" +msgstr "Notas:" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Source Document" +msgstr "Documento de Origen" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Status" +msgstr "Estado" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Total" +msgstr "Total" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing Date:" +msgstr "Fecha Facturación:" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Currency:" +msgstr "Divisa:" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date:" +msgstr "Fecha de Vencimiento:" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing +msgid "Account Billing" +msgstr "Facturación de Cuentas" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction +msgid "Action Needed" +msgstr "Acción Necesaria" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date_type +msgid "" +"All invoices with date (threshold date type) before and equal to threshold " +"date will be listed in billing lines" +msgstr "" +"Todas las facturas con fecha (tipo de fecha umbral) anterior e igual a la " +"fecha umbral aparecerán en las líneas de facturación" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_residual +#, fuzzy +msgid "Amount Due" +msgstr "Total adeudado" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Are you sure to cancel this document?" +msgstr "¿Está seguro de cancelar este documento?" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_attachment_count +msgid "Attachment Count" +msgstr "Conteo de Archivos Adjuntos" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__billing_line_ids +msgid "Bill Lines" +msgstr "Líneas de Factura" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__bill_type +msgid "Bill Type" +msgstr "Tipo de Factura" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__billed +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed" +msgstr "Facturado" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed Billing" +msgstr "Facturación Facturada" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +#: model:ir.actions.act_window,name:account_billing.action_customer_billing +#: model:ir.actions.act_window,name:account_billing.action_supplier_billing +#: model:ir.actions.report,name:account_billing.report_account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__billing_id +#: model:ir.ui.menu,name:account_billing.menu_action_customer_billing +#: model:ir.ui.menu,name:account_billing.menu_action_supplier_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing" +msgstr "Facturación" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing %s is cancelled" +msgstr "Facturación %s cancelada" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__date +msgid "Billing Date" +msgstr "Fecha de Facturación" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing_line +msgid "Billing Line" +msgstr "Línea de facturación" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_line_ids +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Billing Lines" +msgstr "Líneas de Facturación" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "" +"Billing cannot be processed because some invoices are not in the 'Posted' or " +"'Paid' state already." +msgstr "" +"La facturación no puede procesarse porque algunas facturas no están en " +"estado 'Publicado' o 'Pagado'." + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is billed." +msgstr "La facturación está facturada." + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is reset to draft" +msgstr "La facturación se ha reestablecido a borrador" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_line_ids +msgid "Billing lines that reference this invoice" +msgstr "Líneas de facturación que hacen referencia a esta factura" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_ids +msgid "Billings" +msgstr "Facturaciones" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__cancel +msgid "Cancelled" +msgstr "Cancelado/a" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Cancelled Billing" +msgstr "Facturación Cancelada" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Click to register a new billing." +msgstr "Click para registrar una nueva facturación." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__company_id +msgid "Company" +msgstr "Compañía" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +#, fuzzy +msgid "Compute items" +msgstr "Calcular" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__invoice_related_count +msgid "Count invoice in billing" +msgstr "Conteo de facturas en facturación" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_invoice_billing +msgid "Create Billing" +msgstr "Crear Facturación" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__currency_id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__currency_id +#: model:ir.model.fields,help:account_billing.field_account_billing__currency_id +msgid "Currency" +msgstr "Divisa" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Customer" +msgstr "Cliente" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__out_invoice +msgid "Customer Invoice" +msgstr "Factura Cliente" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__display_name +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__draft +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft" +msgstr "Borrador" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft Billing" +msgstr "Facturación Borrador" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date_due +msgid "Due Date" +msgstr "Fecha de Vencimiento" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__date +msgid "Effective date for accounting entries" +msgstr "Fecha efectiva para entradas contables" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +msgid "" +"Enter the customer the invoices expect to be paid by the customer for this\n" +" bill period. By default the pending invoices will be listed, " +"automatically." +msgstr "" +"Introduzca el cliente que espera que pague las facturas correspondientes a " +"este\n" +" periodo de facturación. Por defecto se listarán automáticamente " +"las facturas pendientes." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_follower_ids +msgid "Followers" +msgstr "Seguidores" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguimiento (Socios)" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Group By" +msgstr "Grupo por" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__has_message +#, fuzzy +msgid "Has Message" +msgstr "Mensajes" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__id +msgid "ID" +msgstr "ID" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Si está marcada, nuevos mensajes requieren su atención." + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Si está marcado, hay nuevos mensajes que requieren su atención." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__invoice_date +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date +msgid "Invoice Date" +msgstr "Fecha Factura" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Invoice paid already." +msgstr "La factura ya ha sido pagada." + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Invoices" +msgstr "Facturas" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_is_follower +msgid "Is Follower" +msgstr "Es Seguidor/a" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_move +msgid "Journal Entry" +msgstr "Entrada Diario" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_uid +msgid "Last Updated by" +msgstr "Última Actualización por" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_date +msgid "Last Updated on" +msgstr "Última Actualización el" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__company_id +msgid "" +"Leave this field empty if this route is shared between all " +"companies" +msgstr "" +"Deje este campo vacío si esta ruta es compartida entre todas las " +"compañías" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Manage supplier billing you want to be used in the system." +msgstr "" +"Gestione la facturación del proveedor que desea que se utilice en el sistema." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error +msgid "Message Delivery error" +msgstr "Error en Entrega de Mensaje" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_ids +msgid "Messages" +msgstr "Mensajes" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__move_id +msgid "Move" +msgstr "Apunte" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__name +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Name" +msgstr "Nombre" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__narration +#: model:ir.model.fields,help:account_billing.field_account_billing__narration +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Notes" +msgstr "Notas" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__name +msgid "Number" +msgstr "Número" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction_counter +msgid "Number of Actions" +msgstr "Número de Acciones" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__name +msgid "Number of account.billing" +msgstr "Número de account.billing" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error_counter +msgid "Number of errors" +msgstr "Número de errores" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction_counter +#, fuzzy +msgid "Number of messages requiring action" +msgstr "Número de mensajes que requieren atención" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de mensajes con error de entrega" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__origin +msgid "Origin" +msgstr "Origen" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__partner_id +msgid "Partner" +msgstr "Socio" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__partner_id +msgid "Partner Information" +msgstr "Información del Socio" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__payment_paid_all +msgid "Payment Paid All" +msgstr "Pago pagado completamente" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__payment_state +msgid "Payment Status" +msgstr "Estado del Pago" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same currency" +msgstr "Seleccione facturas con la misma moneda" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same partner" +msgstr "Seleccione facturas con el mismo interlocutor" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_billing_from_list +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +#, fuzzy +msgid "Register Payment" +msgstr "Registro de Pago" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_ids +msgid "Relationship between invoice and billing" +msgstr "Relación entre factura y facturación" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Search Billings" +msgstr "Buscar en Facturaciones" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Set to Draft" +msgstr "Establecer a Borrador" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__state +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__state +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Status" +msgstr "Situación" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing_line__origin +msgid "The document(s) that generated the invoice." +msgstr "Referencia del documento(s) que ha creado esta factura." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Threshold Date" +msgstr "Umbral Fecha" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date_type +msgid "Threshold Date Type" +msgstr "Umbral Fecha Tipo" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Threshold Date cannot be later than the %s in lines" +msgstr "La Fecha Umbral no puede ser posterior al %s de las líneas" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_total +msgid "Total" +msgstr "Total" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount" +msgstr "Importe Total" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount Residual" +msgstr "Importe total pendiente" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__bill_type +msgid "Type of invoice" +msgstr "Tipo de factura" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Validate" +msgstr "Validar" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_supplier_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Vendor" +msgstr "Vendedor" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__in_invoice +msgid "Vendor Bill" +msgstr "Factura de Vendedor" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__website_message_ids +msgid "Website Messages" +msgstr "Mensajes de la Página web" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__website_message_ids +msgid "Website communication history" +msgstr "Historial de la comunicación del sitio web" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "You cannot reset to draft an invoice that has been billed." +msgstr "No puede restablecer a borrador una factura que ya ha sido cobrada." + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "You need to add a line before validate." +msgstr "Debe añadir una línea antes de validar." + +#, python-format +#~ msgid "" +#~ "Billing cannot be processed because some invoices are not in state Open" +#~ msgstr "" +#~ "No se puede procesar la facturación porque algunas facturas no están en " +#~ "estado Abierto" + +#~ msgid "Followers (Channels)" +#~ msgstr "Seguidores/as (Canales)" + +#~ msgid "Invoice" +#~ msgstr "Factura" + +#~ msgid "Invoice/Bill Date" +#~ msgstr "Fecha de la factura" + +#~ msgid "Last Modified on" +#~ msgstr "Última Modificación el" + +#~ msgid "Main Attachment" +#~ msgstr "Archivo Adjunto Principal" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Números de mensajes que requieren una acción" + +#~ msgid "Number of unread messages" +#~ msgstr "Número de mensajes no leídos" + +#~ msgid "Unread Messages" +#~ msgstr "Mensajes no leídos" + +#~ msgid "Unread Messages Counter" +#~ msgstr "Contador de Mensajes no Leídos" diff --git a/account_billing/i18n/fr_FR.po b/account_billing/i18n/fr_FR.po new file mode 100644 index 0000000..f34dfa5 --- /dev/null +++ b/account_billing/i18n/fr_FR.po @@ -0,0 +1,615 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_billing +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: fr_FR\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: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__state +msgid "" +"\n" +" * The 'Draft' status is used when a user create a new billing\n" +"\n" +" * The 'Billed' status is used when user confirmed billing,\n" +" billing number is generated\n" +"\n" +" * The 'Cancelled' status is used when user billing is cancelled\n" +" " +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__invoice_related_count +msgid "# of Invoices" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "%s" +msgstr "" + +#. module: account_billing +#: model:ir.actions.report,print_report_name:account_billing.report_account_billing +msgid "'BILL-%s%s' % (object.name, object.state == 'draft' and '-draft' or '')" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Date" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Number" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Notes :" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Source Document" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Status" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Total" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing Date:" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Currency:" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date:" +msgstr "" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing +msgid "Account Billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date_type +msgid "" +"All invoices with date (threshold date type) before and equal to threshold " +"date will be listed in billing lines" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_residual +msgid "Amount Due" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Are you sure to cancel this document?" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__billing_line_ids +msgid "Bill Lines" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__bill_type +msgid "Bill Type" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__billed +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed Billing" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +#: model:ir.actions.act_window,name:account_billing.action_customer_billing +#: model:ir.actions.act_window,name:account_billing.action_supplier_billing +#: model:ir.actions.report,name:account_billing.report_account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__billing_id +#: model:ir.ui.menu,name:account_billing.menu_action_customer_billing +#: model:ir.ui.menu,name:account_billing.menu_action_supplier_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing %s is cancelled" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__date +msgid "Billing Date" +msgstr "" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing_line +msgid "Billing Line" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_line_ids +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Billing Lines" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "" +"Billing cannot be processed because some invoices are not in the 'Posted' or " +"'Paid' state already." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is billed." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is reset to draft" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_line_ids +msgid "Billing lines that reference this invoice" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_ids +msgid "Billings" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Cancel" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__cancel +msgid "Cancelled" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Cancelled Billing" +msgstr "" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Click to register a new billing." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__company_id +msgid "Company" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Compute items" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__invoice_related_count +msgid "Count invoice in billing" +msgstr "" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_invoice_billing +msgid "Create Billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_uid +msgid "Created by" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_date +msgid "Created on" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__currency_id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__currency_id +#: model:ir.model.fields,help:account_billing.field_account_billing__currency_id +msgid "Currency" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Customer" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__out_invoice +msgid "Customer Invoice" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__display_name +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__display_name +msgid "Display Name" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__draft +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft Billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date_due +msgid "Due Date" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__date +msgid "Effective date for accounting entries" +msgstr "" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +msgid "" +"Enter the customer the invoices expect to be paid by the customer for this\n" +" bill period. By default the pending invoices will be listed, " +"automatically." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Group By" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__has_message +msgid "Has Message" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__id +msgid "ID" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__invoice_date +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date +msgid "Invoice Date" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Invoice paid already." +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Invoices" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__company_id +msgid "" +"Leave this field empty if this route is shared between all " +"companies" +msgstr "" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Manage supplier billing you want to be used in the system." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_ids +msgid "Messages" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__move_id +msgid "Move" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__name +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Name" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__narration +#: model:ir.model.fields,help:account_billing.field_account_billing__narration +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Notes" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__name +msgid "Number" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__name +msgid "Number of account.billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__origin +msgid "Origin" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__partner_id +msgid "Partner" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__partner_id +msgid "Partner Information" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__payment_paid_all +msgid "Payment Paid All" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__payment_state +msgid "Payment Status" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same currency" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same partner" +msgstr "" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_billing_from_list +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Register Payment" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_ids +msgid "Relationship between invoice and billing" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Search Billings" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Set to Draft" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__state +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__state +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Status" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing_line__origin +msgid "The document(s) that generated the invoice." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Threshold Date" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date_type +msgid "Threshold Date Type" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Threshold Date cannot be later than the %s in lines" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_total +msgid "Total" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount Residual" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__bill_type +msgid "Type of invoice" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Validate" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_supplier_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Vendor" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__in_invoice +msgid "Vendor Bill" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "You cannot reset to draft an invoice that has been billed." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "You need to add a line before validate." +msgstr "" diff --git a/account_billing/i18n/it.po b/account_billing/i18n/it.po new file mode 100644 index 0000000..0144f0b --- /dev/null +++ b/account_billing/i18n/it.po @@ -0,0 +1,639 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_billing +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2026-04-27 13:45+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\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" +"X-Generator: Weblate 5.15.2\n" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__state +msgid "" +"\n" +" * The 'Draft' status is used when a user create a new billing\n" +"\n" +" * The 'Billed' status is used when user confirmed billing,\n" +" billing number is generated\n" +"\n" +" * The 'Cancelled' status is used when user billing is cancelled\n" +" " +msgstr "" +"\n" +" * Lo stato \"Bozza\" viene utilizzato quando un utente crea una " +"nuova fatturazione\n" +"\n" +" * Lo stato \"Fatturato\" viene utilizzato quando l'utente ha " +"confermato la fatturazione,\n" +" viene generato il numero di fatturazione\n" +"\n" +" * Lo stato \"Annullato\" viene utilizzato quando la fatturazione " +"dell'utente viene annullata\n" +" " + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__invoice_related_count +msgid "# of Invoices" +msgstr "N° di fatture" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "%s" +msgstr "%s" + +#. module: account_billing +#: model:ir.actions.report,print_report_name:account_billing.report_account_billing +msgid "'BILL-%s%s' % (object.name, object.state == 'draft' and '-draft' or '')" +msgstr "" +"'FATTURA-%s%s' % (object.name, object.state == 'draft' and '-draft' or '')" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date" +msgstr "Data scadenza" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Date" +msgstr "Data fattura" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Number" +msgstr "Numero fatturar" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Notes :" +msgstr "Note :" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Source Document" +msgstr "Documento origine" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Status" +msgstr "Stato" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Total" +msgstr "Totale " + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing Date:" +msgstr "Data fatturazione:" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Currency:" +msgstr "Valuta:" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date:" +msgstr "Data scadenza:" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing +msgid "Account Billing" +msgstr "Fatturazione conto" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction +msgid "Action Needed" +msgstr "Azione richiesta" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date_type +msgid "" +"All invoices with date (threshold date type) before and equal to threshold " +"date will be listed in billing lines" +msgstr "" +"Tutte le fatture con data (tipo data soglia) precedente e uguale alla data " +"soglia saranno elencate nelle righe di fatturazione" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_residual +msgid "Amount Due" +msgstr "Importo dovuto" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Are you sure to cancel this document?" +msgstr "Sicuri di annullare questo documento?" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_attachment_count +msgid "Attachment Count" +msgstr "Conteggio allegati" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__billing_line_ids +msgid "Bill Lines" +msgstr "Righe fattura" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__bill_type +msgid "Bill Type" +msgstr "Tipo fattura" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__billed +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed" +msgstr "Fatturato" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed Billing" +msgstr "Fatturazione fatturata" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +#: model:ir.actions.act_window,name:account_billing.action_customer_billing +#: model:ir.actions.act_window,name:account_billing.action_supplier_billing +#: model:ir.actions.report,name:account_billing.report_account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__billing_id +#: model:ir.ui.menu,name:account_billing.menu_action_customer_billing +#: model:ir.ui.menu,name:account_billing.menu_action_supplier_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing" +msgstr "Fatturazione" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing %s is cancelled" +msgstr "La fatturazione %s è annullata" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__date +msgid "Billing Date" +msgstr "Data fatturazione" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing_line +msgid "Billing Line" +msgstr "Riga fatturazione" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_line_ids +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Billing Lines" +msgstr "Righe fatturazione" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "" +"Billing cannot be processed because some invoices are not in the 'Posted' or " +"'Paid' state already." +msgstr "" +"La fatturazione non può essere elaborata perché alcune fatture non sono " +"ancora nello stato \"Registrate\" o \"Pagate\"." + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is billed." +msgstr "La fatturazione è fatturata." + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is reset to draft" +msgstr "La fatturazione è reimpostata a bozza" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_line_ids +msgid "Billing lines that reference this invoice" +msgstr "Righe pagamento che si riferiscono a questa fattura" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_ids +msgid "Billings" +msgstr "Fatturazioni" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Cancel" +msgstr "Annulla" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__cancel +msgid "Cancelled" +msgstr "Annullata" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Cancelled Billing" +msgstr "Fatturazione annullata" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Click to register a new billing." +msgstr "Fare clic per registrare una nuova fatturazione." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__company_id +msgid "Company" +msgstr "Azienda" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Compute items" +msgstr "Calcola elementi" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__invoice_related_count +msgid "Count invoice in billing" +msgstr "Conta fatture in fatturazione" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_invoice_billing +msgid "Create Billing" +msgstr "Crea fatturazione" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__currency_id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__currency_id +#: model:ir.model.fields,help:account_billing.field_account_billing__currency_id +msgid "Currency" +msgstr "Valuta" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Customer" +msgstr "Cliente" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__out_invoice +msgid "Customer Invoice" +msgstr "Fattura cliente" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__display_name +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__draft +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft" +msgstr "Bozza" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft Billing" +msgstr "Bozza fatturazione" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date_due +msgid "Due Date" +msgstr "Data scadenza" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__date +msgid "Effective date for accounting entries" +msgstr "Data effettiva registrazioni contabili" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +msgid "" +"Enter the customer the invoices expect to be paid by the customer for this\n" +" bill period. By default the pending invoices will be listed, " +"automatically." +msgstr "" +"Inserire il cliente che le fatture prevedono di pagare per questo periodo di " +"fatturazione. \n" +" Per impostazione predefinita, le fatture in sospeso saranno " +"elencate automaticamente." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_follower_ids +msgid "Followers" +msgstr "Seguito da" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguito da (partner)" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Group By" +msgstr "Raggruppa per" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__has_message +msgid "Has Message" +msgstr "Ha un messaggio" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__id +msgid "ID" +msgstr "ID" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Se selezionata, nuovi messaggi richiedono attenzione." + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__invoice_date +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date +msgid "Invoice Date" +msgstr "Data fattura" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Invoice paid already." +msgstr "Fattura già pagata." + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Invoices" +msgstr "Fatture" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_is_follower +msgid "Is Follower" +msgstr "Segue" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_move +msgid "Journal Entry" +msgstr "Registrazione contabile" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__company_id +msgid "" +"Leave this field empty if this route is shared between all " +"companies" +msgstr "" +"Lasciare questo campo vuoto se questo percorso è condiviso tra " +"tutte le aziende" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Manage supplier billing you want to be used in the system." +msgstr "Gestione fatturazione fornitori che si vuole utilizzare nel sistema." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error +msgid "Message Delivery error" +msgstr "Errore di consegna messaggio" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_ids +msgid "Messages" +msgstr "Messaggi" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__move_id +msgid "Move" +msgstr "Registrazione" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__name +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Name" +msgstr "Nome" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__narration +#: model:ir.model.fields,help:account_billing.field_account_billing__narration +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Notes" +msgstr "Note" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__name +msgid "Number" +msgstr "Numero" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction_counter +msgid "Number of Actions" +msgstr "Numero di azioni" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__name +msgid "Number of account.billing" +msgstr "Numero di account.billing" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error_counter +msgid "Number of errors" +msgstr "Numero di errori" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Numero di messaggi che richiedono un'azione" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Numero di messaggi con errore di consegna" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__origin +msgid "Origin" +msgstr "Origine" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__partner_id +msgid "Partner" +msgstr "Partner" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__partner_id +msgid "Partner Information" +msgstr "Informazioni partner" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__payment_paid_all +msgid "Payment Paid All" +msgstr "Pagamenti completi" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__payment_state +msgid "Payment Status" +msgstr "Stato pagamento" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same currency" +msgstr "Selezionare fatture con la stessa valuta" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same partner" +msgstr "Selezionare fatture con lo stesso partner" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_billing_from_list +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Register Payment" +msgstr "Registra pagamento" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_ids +msgid "Relationship between invoice and billing" +msgstr "Relazione tra fattura e fatturazione" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Search Billings" +msgstr "Cerca fatturazioni" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Set to Draft" +msgstr "Imposta a bozza" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__state +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__state +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Status" +msgstr "Stato" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing_line__origin +msgid "The document(s) that generated the invoice." +msgstr "Documento(i) che ha generato la fattura." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Threshold Date" +msgstr "Data soglia" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date_type +msgid "Threshold Date Type" +msgstr "Tipo soglia data" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Threshold Date cannot be later than the %s in lines" +msgstr "La data soglia non può essere dopo il %s nelle righe" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_total +msgid "Total" +msgstr "Totale" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount" +msgstr "Importo totale" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount Residual" +msgstr "Valore totale residuo" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__bill_type +msgid "Type of invoice" +msgstr "Tipo di fattura" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Validate" +msgstr "Valida" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_supplier_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Vendor" +msgstr "Fornitore" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__in_invoice +msgid "Vendor Bill" +msgstr "Fattura fornitore" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__website_message_ids +msgid "Website Messages" +msgstr "Messaggi sito web" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__website_message_ids +msgid "Website communication history" +msgstr "Cronologia comunicazioni sito web" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "You cannot reset to draft an invoice that has been billed." +msgstr "Non si può riportare a bozza una fattura che è stata fatturata." + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "You need to add a line before validate." +msgstr "Bisogna inserire una riga prima di validare." diff --git a/account_billing/i18n/ja.po b/account_billing/i18n/ja.po new file mode 100644 index 0000000..512c65f --- /dev/null +++ b/account_billing/i18n/ja.po @@ -0,0 +1,632 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_billing +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2026-01-22 01:22+0000\n" +"Last-Translator: Ryoko Tsuda \n" +"Language-Team: none\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.15.2\n" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__state +msgid "" +"\n" +" * The 'Draft' status is used when a user create a new billing\n" +"\n" +" * The 'Billed' status is used when user confirmed billing,\n" +" billing number is generated\n" +"\n" +" * The 'Cancelled' status is used when user billing is cancelled\n" +" " +msgstr "" +"\n" +" * 'ドラフト' 状態は、ユーザが新しい合計請求書を作成したときに使用" +"されます\n" +"\n" +" * '請求済' 状態はユーザが合計請求書を検証し、合計請求書番号が生成" +"された時に\n" +" 使用されます\n" +"\n" +" * '取消' 状態はユーザが合計請求書を取消した時に使用されます\n" +" " + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__invoice_related_count +msgid "# of Invoices" +msgstr "# 請求書" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "%s" +msgstr "" + +#. module: account_billing +#: model:ir.actions.report,print_report_name:account_billing.report_account_billing +msgid "'BILL-%s%s' % (object.name, object.state == 'draft' and '-draft' or '')" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date" +msgstr "期日" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Date" +msgstr "請求日" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Number" +msgstr "請求書番号" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Notes :" +msgstr "ノート :" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Source Document" +msgstr "参照元" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Status" +msgstr "状態" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Total" +msgstr "合計" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing Date:" +msgstr "合計請求日:" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Currency:" +msgstr "通貨:" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date:" +msgstr "期日:" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing +msgid "Account Billing" +msgstr "合計請求書" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction +msgid "Action Needed" +msgstr "要アクション" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date_type +msgid "" +"All invoices with date (threshold date type) before and equal to threshold " +"date will be listed in billing lines" +msgstr "閾日タイプの日付が閾日以前請求書が合計請求書明細行に追加されます" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_residual +msgid "Amount Due" +msgstr "未消込額" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Are you sure to cancel this document?" +msgstr "このドキュメントを本当に取消しますか" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_attachment_count +msgid "Attachment Count" +msgstr "添付数" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__billing_line_ids +msgid "Bill Lines" +msgstr "合計請求書明細" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__bill_type +msgid "Bill Type" +msgstr "合計請求書タイプ" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__billed +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed" +msgstr "請求済" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed Billing" +msgstr "請求済合計請求書" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +#: model:ir.actions.act_window,name:account_billing.action_customer_billing +#: model:ir.actions.act_window,name:account_billing.action_supplier_billing +#: model:ir.actions.report,name:account_billing.report_account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__billing_id +#: model:ir.ui.menu,name:account_billing.menu_action_customer_billing +#: model:ir.ui.menu,name:account_billing.menu_action_supplier_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing" +msgstr "合計請求書" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing %s is cancelled" +msgstr "合計請求書 %s は取消されました" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__date +msgid "Billing Date" +msgstr "合計請求日" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing_line +msgid "Billing Line" +msgstr "合計請求書明細" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_line_ids +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Billing Lines" +msgstr "合計請求書明細" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "" +"Billing cannot be processed because some invoices are not in the 'Posted' or " +"'Paid' state already." +msgstr "" +"「記帳済」または「支払済」の状態になっていない請求書があるため、合計請求処理" +"ができません。" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is billed." +msgstr "合計請求書が請求されました。" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is reset to draft" +msgstr "合計請求書がドラフトにリセットされます" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_line_ids +msgid "Billing lines that reference this invoice" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_ids +msgid "Billings" +msgstr "合計請求書" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Cancel" +msgstr "取消" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__cancel +msgid "Cancelled" +msgstr "取消済" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Cancelled Billing" +msgstr "取消済合計請求書" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Click to register a new billing." +msgstr "クリックして新しい合計請求書を登録します。" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__company_id +msgid "Company" +msgstr "会社" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Compute items" +msgstr "明細を算出" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__invoice_related_count +msgid "Count invoice in billing" +msgstr "合計請求書の請求書数" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_invoice_billing +msgid "Create Billing" +msgstr "合計請求書作成" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_uid +msgid "Created by" +msgstr "作成者" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_date +msgid "Created on" +msgstr "作成日" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__currency_id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__currency_id +#: model:ir.model.fields,help:account_billing.field_account_billing__currency_id +msgid "Currency" +msgstr "通貨" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Customer" +msgstr "顧客" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__out_invoice +msgid "Customer Invoice" +msgstr "顧客請求書" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__display_name +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__display_name +msgid "Display Name" +msgstr "表示名" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__draft +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft" +msgstr "ドラフト" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft Billing" +msgstr "ドラフト合計請求書" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date_due +msgid "Due Date" +msgstr "期日" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__date +msgid "Effective date for accounting entries" +msgstr "会計仕訳有効日" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +msgid "" +"Enter the customer the invoices expect to be paid by the customer for this\n" +" bill period. By default the pending invoices will be listed, " +"automatically." +msgstr "" +"合計請求期間中に顧客から支払われる予定の請求書を入力します。\n" +"デフォルトでは、保留中の請求書が自動的にリストアップされます。" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_follower_ids +msgid "Followers" +msgstr "フォロワー" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_partner_ids +msgid "Followers (Partners)" +msgstr "フォロワー (取引先)" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Group By" +msgstr "グループ化" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__has_message +msgid "Has Message" +msgstr "メッセージあり" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__id +msgid "ID" +msgstr "ID" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction +msgid "If checked, new messages require your attention." +msgstr "チェックした場合は、新しいメッセージに注意が必要です。" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "チェックした場合は、いくつかのメッセージは配信エラーになります。" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__invoice_date +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date +msgid "Invoice Date" +msgstr "請求日" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Invoice paid already." +msgstr "請求書は既に支払済です。" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Invoices" +msgstr "請求書" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_is_follower +msgid "Is Follower" +msgstr "フォロー中" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_move +msgid "Journal Entry" +msgstr "仕訳" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_uid +msgid "Last Updated by" +msgstr "最終更新者" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_date +msgid "Last Updated on" +msgstr "最終更新日" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__company_id +msgid "" +"Leave this field empty if this route is shared between all " +"companies" +msgstr "" +"このルートがすべての会社で共有される場合は、この項目を空欄にしてください" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Manage supplier billing you want to be used in the system." +msgstr "システムで仕入先合計請求書を管理。" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error +msgid "Message Delivery error" +msgstr "メッセージ配信エラー" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_ids +msgid "Messages" +msgstr "メッセージ" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__move_id +msgid "Move" +msgstr "仕訳" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__name +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Name" +msgstr "名称" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__narration +#: model:ir.model.fields,help:account_billing.field_account_billing__narration +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Notes" +msgstr "ノート" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__name +msgid "Number" +msgstr "番号" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction_counter +msgid "Number of Actions" +msgstr "アクション数" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__name +msgid "Number of account.billing" +msgstr "合計請求書数" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error_counter +msgid "Number of errors" +msgstr "エラー数" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "アクションを必要とするメッセージの数" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "配信エラーのメッセージ数" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__origin +msgid "Origin" +msgstr "発生元" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__partner_id +msgid "Partner" +msgstr "取引先" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__partner_id +msgid "Partner Information" +msgstr "取引先情報" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__payment_paid_all +msgid "Payment Paid All" +msgstr "全額支払済" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__payment_state +msgid "Payment Status" +msgstr "支払状態" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same currency" +msgstr "同じ通貨の請求書を選択してください" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same partner" +msgstr "同じ取引先の請求書を選択してください" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_billing_from_list +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Register Payment" +msgstr "支払登録" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_ids +msgid "Relationship between invoice and billing" +msgstr "顧客請求書と仕入先請求書の関係" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Search Billings" +msgstr "合計請求書検索" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Set to Draft" +msgstr "ドラフトに設定" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__state +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__state +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Status" +msgstr "状態" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing_line__origin +msgid "The document(s) that generated the invoice." +msgstr "顧客請求書を生成したドキュメント" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Threshold Date" +msgstr "閾日" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date_type +msgid "Threshold Date Type" +msgstr "閾日タイプ" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Threshold Date cannot be later than the %s in lines" +msgstr "閾日は、明細行の %s より後にすることはできません" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_total +msgid "Total" +msgstr "合計" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount" +msgstr "合計金額" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount Residual" +msgstr "残額合計" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__bill_type +msgid "Type of invoice" +msgstr "請求書タイプ" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Validate" +msgstr "検証" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_supplier_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Vendor" +msgstr "仕入先" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__in_invoice +msgid "Vendor Bill" +msgstr "仕入先請求書" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__website_message_ids +msgid "Website Messages" +msgstr "ウェブサイトメッセージ" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__website_message_ids +msgid "Website communication history" +msgstr "ウェブサイト通信履歴" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "You cannot reset to draft an invoice that has been billed." +msgstr "請求済みの請求書をドラフト状態にリセットすることはできません。" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "You need to add a line before validate." +msgstr "検証の前に行を追加する必要があります。" diff --git a/account_billing/i18n/nl_NL.po b/account_billing/i18n/nl_NL.po new file mode 100644 index 0000000..aae10f7 --- /dev/null +++ b/account_billing/i18n/nl_NL.po @@ -0,0 +1,649 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_billing +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-05-03 13:33+0000\n" +"Last-Translator: Bosd \n" +"Language-Team: none\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" +"X-Generator: Weblate 4.14.1\n" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__state +msgid "" +"\n" +" * The 'Draft' status is used when a user create a new billing\n" +"\n" +" * The 'Billed' status is used when user confirmed billing,\n" +" billing number is generated\n" +"\n" +" * The 'Cancelled' status is used when user billing is cancelled\n" +" " +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__invoice_related_count +msgid "# of Invoices" +msgstr "# facturen" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "%s" +msgstr "" + +#. module: account_billing +#: model:ir.actions.report,print_report_name:account_billing.report_account_billing +msgid "'BILL-%s%s' % (object.name, object.state == 'draft' and '-draft' or '')" +msgstr "" +"'VERZAMELFACTUUR-%s%s' % (object.name, object.state == 'draft' and '-draft' " +"or '')" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date" +msgstr "Vervaldatum" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Date" +msgstr "Factuurdatum" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Number" +msgstr "Factuurnummer" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Notes :" +msgstr "Notities :" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Source Document" +msgstr "Brondocument" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Status" +msgstr "Status" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Total" +msgstr "Totaal" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing Date:" +msgstr "Factuurdatum:" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Currency:" +msgstr "Valuta:" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date:" +msgstr "Vervaldatum:" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing +msgid "Account Billing" +msgstr "Account verzamelfacturen" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction +msgid "Action Needed" +msgstr "Actie nodig" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date_type +msgid "" +"All invoices with date (threshold date type) before and equal to threshold " +"date will be listed in billing lines" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_residual +msgid "Amount Due" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Are you sure to cancel this document?" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_attachment_count +msgid "Attachment Count" +msgstr "Aantal bijlages" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__billing_line_ids +msgid "Bill Lines" +msgstr "Factuurregels" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__bill_type +msgid "Bill Type" +msgstr "Verzamelfactuur type" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__billed +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed" +msgstr "Verzamelfactuur gefactureerd" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed Billing" +msgstr "Gefactureerde verzamelfactuur" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +#: model:ir.actions.act_window,name:account_billing.action_customer_billing +#: model:ir.actions.act_window,name:account_billing.action_supplier_billing +#: model:ir.actions.report,name:account_billing.report_account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__billing_id +#: model:ir.ui.menu,name:account_billing.menu_action_customer_billing +#: model:ir.ui.menu,name:account_billing.menu_action_supplier_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing" +msgstr "Verzamelfactuur" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing %s is cancelled" +msgstr "Factureer %s is geannuleerd" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__date +msgid "Billing Date" +msgstr "Factuurdatum" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing_line +msgid "Billing Line" +msgstr "Factuurlijn" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_line_ids +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Billing Lines" +msgstr "Factuurregels" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "" +"Billing cannot be processed because some invoices are not in the 'Posted' or " +"'Paid' state already." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is billed." +msgstr "Verzamelfactuur is gefactureerd." + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is reset to draft" +msgstr "Verzamelfactuur wordt teruggezet naar concept" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_line_ids +msgid "Billing lines that reference this invoice" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_ids +msgid "Billings" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Cancel" +msgstr "Annuleer" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__cancel +msgid "Cancelled" +msgstr "Geannuleerd" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Cancelled Billing" +msgstr "Geannuleerde verzamelfactuur" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Click to register a new billing." +msgstr "Klik om een nieuwe verzamelfactuur te maken." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__company_id +msgid "Company" +msgstr "Bedrijf" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Compute items" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__invoice_related_count +msgid "Count invoice in billing" +msgstr "Aantal facturen in verzamelfactuur" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_invoice_billing +msgid "Create Billing" +msgstr "Verzamelfactuur maken" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__currency_id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__currency_id +#: model:ir.model.fields,help:account_billing.field_account_billing__currency_id +msgid "Currency" +msgstr "Valuta" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Customer" +msgstr "Klant" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__out_invoice +msgid "Customer Invoice" +msgstr "Klantfactuur" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__display_name +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__display_name +msgid "Display Name" +msgstr "Schermnaam" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__draft +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft" +msgstr "Concept" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft Billing" +msgstr "Ontwerp verzamelfactuur" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date_due +msgid "Due Date" +msgstr "Vervaldatum" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__date +msgid "Effective date for accounting entries" +msgstr "Effectieve datum voor boekingen" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +msgid "" +"Enter the customer the invoices expect to be paid by the customer for this\n" +" bill period. By default the pending invoices will be listed, " +"automatically." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_follower_ids +msgid "Followers" +msgstr "Volgers" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_partner_ids +msgid "Followers (Partners)" +msgstr "Volgers (relaties)" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Group By" +msgstr "Groepeer op" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__has_message +msgid "Has Message" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__id +msgid "ID" +msgstr "ID" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Wanneer aangevinkt, zijn er nieuwe berichten met acties." + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Wanneer aangevinkt, zijn er berichten met een foutmelding." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__invoice_date +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date +msgid "Invoice Date" +msgstr "Factuur Datum" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Invoice paid already." +msgstr "Factuur reeds betaald." + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Invoices" +msgstr "Facturen" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_is_follower +msgid "Is Follower" +msgstr "Is volger" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__company_id +msgid "" +"Leave this field empty if this route is shared between all " +"companies" +msgstr "" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Manage supplier billing you want to be used in the system." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error +msgid "Message Delivery error" +msgstr "Bericht leveringsfout" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_ids +msgid "Messages" +msgstr "Berichten" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__move_id +msgid "Move" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__name +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Name" +msgstr "Naam" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__narration +#: model:ir.model.fields,help:account_billing.field_account_billing__narration +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Notes" +msgstr "Notities" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__name +msgid "Number" +msgstr "Nummer" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction_counter +msgid "Number of Actions" +msgstr "Aantal acties" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__name +msgid "Number of account.billing" +msgstr "Aantal van account.billing" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error_counter +msgid "Number of errors" +msgstr "Aantal fouten" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Aantal berichten met leveringsfout" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__origin +msgid "Origin" +msgstr "Oorsprong" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__partner_id +msgid "Partner" +msgstr "Relatie" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__partner_id +msgid "Partner Information" +msgstr "Partner Informatie" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__payment_paid_all +msgid "Payment Paid All" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__payment_state +msgid "Payment Status" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same currency" +msgstr "Selecteer facturen met dezelfde valuta" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same partner" +msgstr "Selecteer facturen met dezelfde relatie" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_billing_from_list +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Register Payment" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_ids +msgid "Relationship between invoice and billing" +msgstr "Relatie tussen factuur en verzamelfacturen" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Search Billings" +msgstr "Zoek verzamelfacturen" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Set to Draft" +msgstr "Zet op concept" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__state +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__state +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Status" +msgstr "Status" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing_line__origin +msgid "The document(s) that generated the invoice." +msgstr "The document(en) welke de factuur hebben genereerd." + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Threshold Date" +msgstr "Drempelwaarde datum" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date_type +msgid "Threshold Date Type" +msgstr "Drempelwaarde datum type" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Threshold Date cannot be later than the %s in lines" +msgstr "Drempelwaarde datum kan niet later zijn dan de %s in regels" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_total +msgid "Total" +msgstr "Totaal" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount" +msgstr "Totaal bedrag" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount Residual" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__bill_type +msgid "Type of invoice" +msgstr "Type factuur" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Validate" +msgstr "Valideren" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_supplier_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Vendor" +msgstr "Leverancier" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__in_invoice +msgid "Vendor Bill" +msgstr "Leveranciersfactuur" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__website_message_ids +msgid "Website Messages" +msgstr "Website berichten" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__website_message_ids +msgid "Website communication history" +msgstr "Website communicatie geschiedenis" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "You cannot reset to draft an invoice that has been billed." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "You need to add a line before validate." +msgstr "" + +#~ msgid "Followers (Channels)" +#~ msgstr "Volgers (kanalen)" + +#~ msgid "Invoice" +#~ msgstr "Factuur" + +#~ msgid "Invoice/Bill Date" +#~ msgstr "Factuur/verzamelfactuur datum" + +#~ msgid "Last Modified on" +#~ msgstr "Laatst gewijzigd op" + +#~ msgid "Main Attachment" +#~ msgstr "Hoofd bijlage" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Aantal berichten die actie vereisen" + +#~ msgid "Number of unread messages" +#~ msgstr "Aantal ongelezen berichten" + +#~ msgid "Unread Messages" +#~ msgstr "Ongelezen berichten" + +#~ msgid "Unread Messages Counter" +#~ msgstr "Aantal ongelezen berichten" + +#~ msgid "SMS Delivery error" +#~ msgstr "SMS leverfout" diff --git a/account_billing/i18n/zh_CN.po b/account_billing/i18n/zh_CN.po new file mode 100644 index 0000000..3dbc83b --- /dev/null +++ b/account_billing/i18n/zh_CN.po @@ -0,0 +1,625 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_billing +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-01-07 11:39+0000\n" +"Last-Translator: 黎伟杰 <674416404@qq.com>\n" +"Language-Team: none\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__state +msgid "" +"\n" +" * The 'Draft' status is used when a user create a new billing\n" +"\n" +" * The 'Billed' status is used when user confirmed billing,\n" +" billing number is generated\n" +"\n" +" * The 'Cancelled' status is used when user billing is cancelled\n" +" " +msgstr "" +"\n" +" * “草稿”状态:用户创建新账单时\n" +"\n" +" * “确认”状态:用户已经确认账单,\n" +" 账单编号产生\n" +"\n" +" * “取消”状态:账单被用户取消\n" +" " + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__invoice_related_count +msgid "# of Invoices" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "%s" +msgstr "" + +#. module: account_billing +#: model:ir.actions.report,print_report_name:account_billing.report_account_billing +msgid "'BILL-%s%s' % (object.name, object.state == 'draft' and '-draft' or '')" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Date" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Invoice Number" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Notes :" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Source Document" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Status" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Total" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing Date:" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Currency:" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Due Date:" +msgstr "" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing +msgid "Account Billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date +#: model:ir.model.fields,help:account_billing.field_account_billing__threshold_date_type +msgid "" +"All invoices with date (threshold date type) before and equal to threshold " +"date will be listed in billing lines" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_residual +msgid "Amount Due" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Are you sure to cancel this document?" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__billing_line_ids +msgid "Bill Lines" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__bill_type +msgid "Bill Type" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__billed +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Billed Billing" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +#: model:ir.actions.act_window,name:account_billing.action_customer_billing +#: model:ir.actions.act_window,name:account_billing.action_supplier_billing +#: model:ir.actions.report,name:account_billing.report_account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__billing_id +#: model:ir.ui.menu,name:account_billing.menu_action_customer_billing +#: model:ir.ui.menu,name:account_billing.menu_action_supplier_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Billing" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing %s is cancelled" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__date +msgid "Billing Date" +msgstr "" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_billing_line +msgid "Billing Line" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_line_ids +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Billing Lines" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "" +"Billing cannot be processed because some invoices are not in the 'Posted' or " +"'Paid' state already." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is billed." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Billing is reset to draft" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_line_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_line_ids +msgid "Billing lines that reference this invoice" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,field_description:account_billing.field_account_move__billing_ids +msgid "Billings" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Cancel" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__cancel +msgid "Cancelled" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +msgid "Cancelled Billing" +msgstr "" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Click to register a new billing." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__company_id +msgid "Company" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Compute items" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__invoice_related_count +msgid "Count invoice in billing" +msgstr "" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_invoice_billing +msgid "Create Billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_uid +msgid "Created by" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__create_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__create_date +msgid "Created on" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__currency_id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__currency_id +#: model:ir.model.fields,help:account_billing.field_account_billing__currency_id +msgid "Currency" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Customer" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__out_invoice +msgid "Customer Invoice" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__display_name +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__display_name +msgid "Display Name" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__state__draft +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.report_billing_document +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Draft Billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date_due +msgid "Due Date" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__date +msgid "Effective date for accounting entries" +msgstr "" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_customer_billing +msgid "" +"Enter the customer the invoices expect to be paid by the customer for this\n" +" bill period. By default the pending invoices will be listed, " +"automatically." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Group By" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__has_message +msgid "Has Message" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__id +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__id +msgid "ID" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__invoice_date +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__threshold_date_type__invoice_date +msgid "Invoice Date" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Invoice paid already." +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Invoices" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: account_billing +#: model:ir.model,name:account_billing.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_uid +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__write_date +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__company_id +msgid "" +"Leave this field empty if this route is shared between all " +"companies" +msgstr "" + +#. module: account_billing +#: model_terms:ir.actions.act_window,help:account_billing.action_supplier_billing +msgid "Manage supplier billing you want to be used in the system." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_ids +msgid "Messages" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__move_id +msgid "Move" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__name +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Name" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__narration +#: model:ir.model.fields,help:account_billing.field_account_billing__narration +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Notes" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__name +msgid "Number" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__name +msgid "Number of account.billing" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__origin +msgid "Origin" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__partner_id +msgid "Partner" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__partner_id +msgid "Partner Information" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__payment_paid_all +msgid "Payment Paid All" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__payment_state +msgid "Payment Status" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same currency" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "Please select invoices with same partner" +msgstr "" + +#. module: account_billing +#: model:ir.actions.server,name:account_billing.action_account_billing_from_list +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Register Payment" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_bank_statement_line__billing_ids +#: model:ir.model.fields,help:account_billing.field_account_move__billing_ids +msgid "Relationship between invoice and billing" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Search Billings" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Set to Draft" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__state +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__state +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Status" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing_line__origin +msgid "The document(s) that generated the invoice." +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Threshold Date" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__threshold_date_type +msgid "Threshold Date Type" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "Threshold Date cannot be later than the %s in lines" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing_line__amount_total +msgid "Total" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Total Amount Residual" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__bill_type +msgid "Type of invoice" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_billing_form +msgid "Validate" +msgstr "" + +#. module: account_billing +#: model_terms:ir.ui.view,arch_db:account_billing.view_account_supplier_billing_tree +#: model_terms:ir.ui.view,arch_db:account_billing.view_billing_search +msgid "Vendor" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields.selection,name:account_billing.selection__account_billing__bill_type__in_invoice +msgid "Vendor Bill" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,field_description:account_billing.field_account_billing__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: account_billing +#: model:ir.model.fields,help:account_billing.field_account_billing__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_move.py:0 +msgid "You cannot reset to draft an invoice that has been billed." +msgstr "" + +#. module: account_billing +#. odoo-python +#: code:addons/account_billing/models/account_billing.py:0 +msgid "You need to add a line before validate." +msgstr "" diff --git a/account_billing/models/__init__.py b/account_billing/models/__init__.py new file mode 100644 index 0000000..580db06 --- /dev/null +++ b/account_billing/models/__init__.py @@ -0,0 +1,5 @@ +# Copyright 2019 Ecosoft Co., Ltd (https://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from . import account_billing +from . import account_move diff --git a/account_billing/models/account_billing.py b/account_billing/models/account_billing.py new file mode 100644 index 0000000..0c4e598 --- /dev/null +++ b/account_billing/models/account_billing.py @@ -0,0 +1,274 @@ +# Copyright 2019 Ecosoft Co., Ltd (https://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from odoo import api, fields, models +from odoo.exceptions import UserError, ValidationError + + +class AccountBilling(models.Model): + _name = "account.billing" + _description = "Account Billing" + _inherit = ["mail.thread"] + _order = "date desc, id desc" + + name = fields.Char( + readonly=True, + copy=False, + help="Number of account.billing", + ) + partner_id = fields.Many2one( + comodel_name="res.partner", + required=True, + help="Partner Information", + tracking=True, + ) + company_id = fields.Many2one( + comodel_name="res.company", + string="Company", + default=lambda self: self.env.company, + index=True, + help="Leave this field empty if this route is shared \ + between all companies", + ) + date = fields.Date( + string="Billing Date", + readonly=True, + default=fields.Date.context_today, + help="Effective date for accounting entries", + tracking=True, + ) + threshold_date = fields.Date( + readonly=True, + default=lambda self: fields.Date.context_today(self), + required=True, + tracking=True, + help="All invoices with date (threshold date type) before and equal to " + "threshold date will be listed in billing lines", + ) + invoice_related_count = fields.Integer( + string="# of Invoices", + compute="_compute_invoice_related_count", + help="Count invoice in billing", + ) + state = fields.Selection( + selection=[("draft", "Draft"), ("cancel", "Cancelled"), ("billed", "Billed")], + string="Status", + readonly=True, + default="draft", + help=""" + * The 'Draft' status is used when a user create a new billing\n + * The 'Billed' status is used when user confirmed billing, + billing number is generated\n + * The 'Cancelled' status is used when user billing is cancelled + """, + ) + narration = fields.Html( + string="Notes", + readonly=True, + help="Notes", + ) + bill_type = fields.Selection( + selection=[("out_invoice", "Customer Invoice"), ("in_invoice", "Vendor Bill")], + readonly=True, + default=lambda self: self._context.get("bill_type", False), + help="Type of invoice", + ) + currency_id = fields.Many2one( + comodel_name="res.currency", + string="Currency", + required=True, + default=lambda self: self.env.company.currency_id, + readonly=True, + help="Currency", + ) + billing_line_ids = fields.One2many( + comodel_name="account.billing.line", + inverse_name="billing_id", + string="Bill Lines", + readonly=True, + ) + threshold_date_type = fields.Selection( + selection=[("invoice_date_due", "Due Date"), ("invoice_date", "Invoice Date")], + required=True, + readonly=True, + default="invoice_date_due", + help="All invoices with date (threshold date type) before and equal to " + "threshold date will be listed in billing lines", + ) + payment_paid_all = fields.Boolean( + compute="_compute_payment_paid_all", + store=True, + ) + + @api.depends("billing_line_ids.payment_state") + def _compute_payment_paid_all(self): + for rec in self: + if not rec.billing_line_ids: + rec.payment_paid_all = False + continue + rec.payment_paid_all = all( + line.payment_state == "paid" for line in rec.billing_line_ids + ) + + def _get_moves_domain(self, date, types=False): + return [ + ("partner_id", "=", self.partner_id.id), + ("state", "=", "posted"), + ("payment_state", "!=", "paid"), + ("currency_id", "=", self.currency_id.id), + (date, "<=", self.threshold_date), + ("move_type", "in", types), + ] + + def _get_moves(self, date, types=False): + domain = self._get_moves_domain(date, types=types) + return self.env["account.move"].search(domain) + + @api.depends("billing_line_ids") + def _compute_invoice_related_count(self): + for rec in self: + rec.invoice_related_count = len(rec.billing_line_ids) + + def _compute_display_name(self): + for billing in self: + billing.display_name = billing.name or "Draft Billing" + + def validate_billing(self): + for rec in self: + if not rec.billing_line_ids: + raise UserError(self.env._("You need to add a line before validate.")) + date_type = dict(self._fields["threshold_date_type"].selection).get( + rec.threshold_date_type + ) + if any(rec.threshold_date < b.invoice_date for b in rec.billing_line_ids): + raise ValidationError( + self.env._( + "Threshold Date cannot be later than the %(date_type)s in " + "lines", + date_type=date_type, + ) + ) + # keep the number in case of a billing reset to draft + if not rec.name: + # Use the right sequence to set the name + if rec.bill_type == "out_invoice": + sequence_code = "account.customer.billing" + if rec.bill_type == "in_invoice": + sequence_code = "account.supplier.billing" + rec.name = ( + self.env["ir.sequence"] + .with_context(ir_sequence_date=rec.date) + .next_by_code(sequence_code) + ) + rec.write({"state": "billed"}) + rec.message_post(body=self.env._("Billing is billed.")) + return True + + def action_cancel_draft(self): + for rec in self: + rec.write({"state": "draft"}) + rec.message_post(body=self.env._("Billing is reset to draft")) + return True + + def action_cancel(self): + for rec in self: + invoice_paid = rec.billing_line_ids.mapped("move_id").filtered( + lambda m: m.payment_state == "paid" + ) + if invoice_paid: + raise ValidationError(self.env._("Invoice paid already.")) + rec.write({"state": "cancel"}) + rec.message_post( + body=self.env._("Billing %(name)s is cancelled", name=rec.name) + ) + return True + + def action_register_payment(self): + return self.mapped("billing_line_ids.move_id").action_register_payment() + + def invoice_relate_billing_tree_view(self): + self.ensure_one() + name = ( + self.env._("Invoices") + if self.bill_type == "out_invoice" + else self.env._("Bills") + ) + return { + "name": name, + "view_mode": "list,form", + "res_model": "account.move", + "view_id": False, + "views": [ + (self.env.ref("account.view_move_tree").id, "list"), + (self.env.ref("account.view_move_form").id, "form"), + ], + "type": "ir.actions.act_window", + "domain": [("id", "in", [rec.move_id.id for rec in self.billing_line_ids])], + "context": {"create": False}, + } + + def _get_billing_line_dict(self, moves): + billing_line_dict = [ + { + "billing_id": self.id, + "move_id": m.id, + "amount_total": m.amount_total + * (-1 if m.move_type in ["out_refund", "in_refund"] else 1), + } + for m in moves + ] + return billing_line_dict + + def compute_lines(self): + self.ensure_one() + self.billing_line_ids = False + types = ["in_invoice", "in_refund"] + if self.bill_type == "out_invoice": + types = ["out_invoice", "out_refund"] + moves = self._get_moves(self.threshold_date_type, types) + billing_line_dict = self._get_billing_line_dict(moves) + self.billing_line_ids.create(billing_line_dict) + + +class AccountBillingLine(models.Model): + _name = "account.billing.line" + _description = "Billing Line" + + billing_id = fields.Many2one(comodel_name="account.billing") + move_id = fields.Many2one( + comodel_name="account.move", + index=True, + ) + name = fields.Char(related="move_id.name") + invoice_date = fields.Date(compute="_compute_invoice_date") + origin = fields.Char(related="move_id.invoice_origin") + currency_id = fields.Many2one(related="move_id.currency_id") + amount_total = fields.Monetary( + string="Total", + readonly=True, + ) + amount_residual = fields.Monetary( + compute="_compute_amount_residual", + store=True, + string="Amount Due", + ) + state = fields.Selection(related="move_id.state") + payment_state = fields.Selection(related="move_id.payment_state") + + @api.depends( + "billing_id.threshold_date_type", + "move_id.invoice_date", + "move_id.invoice_date_due", + ) + def _compute_invoice_date(self): + for line in self: + if line.billing_id.threshold_date_type == "invoice_date_due": + line.invoice_date = line.move_id.invoice_date_due + continue + line.invoice_date = line.move_id.invoice_date + + @api.depends("move_id.amount_residual") + def _compute_amount_residual(self): + for rec in self: + sign = -1 if rec.move_id.move_type in ["out_refund", "in_refund"] else 1 + rec.amount_residual = rec.move_id.amount_residual * sign diff --git a/account_billing/models/account_move.py b/account_billing/models/account_move.py new file mode 100644 index 0000000..8dccd20 --- /dev/null +++ b/account_billing/models/account_move.py @@ -0,0 +1,107 @@ +# Copyright 2019 Ecosoft Co., Ltd (https://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import Command, api, fields, models +from odoo.exceptions import UserError + + +class AccountMove(models.Model): + _inherit = "account.move" + + billing_line_ids = fields.One2many( + comodel_name="account.billing.line", + inverse_name="move_id", + string="Billing Lines", + groups="account.group_account_invoice", + help="Billing lines that reference this invoice", + ) + billing_ids = fields.Many2many( + comodel_name="account.billing", + string="Billings", + compute="_compute_billing_ids", + groups="account.group_account_invoice", + help="Relationship between invoice and billing", + ) + + @api.depends("billing_line_ids.billing_id") + def _compute_billing_ids(self): + for rec in self: + rec.billing_ids = rec.billing_line_ids.mapped("billing_id") + + def _get_billing_type(self): + outbound_types = {"out_invoice", "out_refund", "out_receipt"} + move_types = set(self.mapped("move_type")) + return "out_invoice" if move_types.issubset(outbound_types) else "in_invoice" + + def _create_billing(self, partner): + billing = self.env["account.billing"].create( + { + "partner_id": partner.id, + "bill_type": self._get_billing_type(), + "currency_id": self.mapped("currency_id")[0].id, + "billing_line_ids": [ + Command.create( + { + "move_id": m.id, + "amount_total": m.amount_total + * (-1 if m.move_type in ["out_refund", "in_refund"] else 1), + "amount_residual": m.amount_residual + * (-1 if m.move_type in ["out_refund", "in_refund"] else 1), + } + ) + for m in self + ], + } + ) + return billing + + def action_create_billing(self): + partner = self.mapped("partner_id") + currency_ids = self.mapped("currency_id") + if len(partner) > 1: + raise UserError(self.env._("Please select invoices with same partner")) + + if len(currency_ids) > 1: + raise UserError(self.env._("Please select invoices with same currency")) + + if any(move.state != "posted" or move.payment_state == "paid" for move in self): + raise UserError( + self.env._( + "Billing cannot be processed because " + "some invoices are not in the 'Posted' or 'Paid' state already." + ) + ) + + billing = self._create_billing(partner) + + action = { + "name": self.env._("Billing"), + "type": "ir.actions.act_window", + "res_model": "account.billing", + "context": {"create": False}, + } + if len(billing) == 1: + action.update( + { + "view_mode": "form", + "res_id": billing.id, + } + ) + else: + action.update( + { + "view_mode": "list,form", + "domain": [("id", "in", billing.ids)], + } + ) + return action + + def button_draft(self): + for rec in self: + if rec.billing_ids.filtered(lambda x: x.state != "cancel"): + raise UserError( + self.env._( + "You cannot reset to draft an invoice that has been billed." + ) + ) + return super().button_draft() diff --git a/account_billing/pyproject.toml b/account_billing/pyproject.toml new file mode 100644 index 0000000..4231d0c --- /dev/null +++ b/account_billing/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/account_billing/readme/CONTRIBUTORS.md b/account_billing/readme/CONTRIBUTORS.md new file mode 100644 index 0000000..83ede99 --- /dev/null +++ b/account_billing/readme/CONTRIBUTORS.md @@ -0,0 +1,4 @@ +- Kitti U. \<\> +- Saran Lim. \<\> +- Rattapong Chokmasermkul \<\> +- Komsan Somwong \<\> diff --git a/account_billing/readme/DESCRIPTION.md b/account_billing/readme/DESCRIPTION.md new file mode 100644 index 0000000..59a943a --- /dev/null +++ b/account_billing/readme/DESCRIPTION.md @@ -0,0 +1,10 @@ +In some countries, there is a customary practice for companies to +collect money from their customers only once in a month. For example, +the customer has 3 payments due in a given month, the vendor or billing +company should group all the due AR Invoices in a document call Billing +Document and issue it with all the invoices consolidated to the customer +on the Billing Day. The customer will be paying based on the payable +amount shown in Billing Document in the following month. + +This module use a new document called "Billing" to group these invoices +together. diff --git a/account_billing/readme/USAGE.md b/account_billing/readme/USAGE.md new file mode 100644 index 0000000..c9bbe9f --- /dev/null +++ b/account_billing/readme/USAGE.md @@ -0,0 +1,10 @@ +To use this module, you have 2 ways: + +1. Create new billing directly + Go to *Invoicing -\> Customers or Vendors -\> Billing* + +2. Create billing from selected invoice(s) + 1. Go to *Invoicing -\> Customers or Vendors -\> Invoices or Bills* + 2. Create Invoice + 3. On tree view select invoice and go to *Action -\> Create + Billing* diff --git a/account_billing/report/report.xml b/account_billing/report/report.xml new file mode 100644 index 0000000..328edd1 --- /dev/null +++ b/account_billing/report/report.xml @@ -0,0 +1,14 @@ + + + Billing + account.billing + account_billing.report_billing + qweb-pdf + account_billing.report_billing + + report + 'BILL-%s%s' % (object.name, object.state == 'draft' and '-draft' or '') + + diff --git a/account_billing/report/report_billing.xml b/account_billing/report/report_billing.xml new file mode 100644 index 0000000..eaefb11 --- /dev/null +++ b/account_billing/report/report_billing.xml @@ -0,0 +1,100 @@ + + + + diff --git a/account_billing/security/account_billing_security.xml b/account_billing/security/account_billing_security.xml new file mode 100644 index 0000000..5f30b60 --- /dev/null +++ b/account_billing/security/account_billing_security.xml @@ -0,0 +1,17 @@ + + + + Account Billing Multi-company + + ['|', ('company_id', 'in', company_ids), ('company_id', '=', False)] + + + Account Billing Line Multi-company + + ['|', ('billing_id.company_id', 'in', company_ids), ('billing_id.company_id', '=', False)] + + diff --git a/account_billing/security/ir.model.access.csv b/account_billing/security/ir.model.access.csv new file mode 100644 index 0000000..6922818 --- /dev/null +++ b/account_billing/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_billing,access_account_billing,model_account_billing,account.group_account_invoice,1,1,1,1 +access_account_billing_line,access_account_billing_line,model_account_billing_line,account.group_account_invoice,1,1,1,1 diff --git a/account_billing/static/description/icon.png b/account_billing/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/account_billing/static/description/index.html b/account_billing/static/description/index.html new file mode 100644 index 0000000..b8c3caf --- /dev/null +++ b/account_billing/static/description/index.html @@ -0,0 +1,461 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Billing Process

+ +

Beta License: AGPL-3 OCA/account-invoicing Translate me on Weblate Try me on Runboat

+

In some countries, there is a customary practice for companies to +collect money from their customers only once in a month. For example, +the customer has 3 payments due in a given month, the vendor or billing +company should group all the due AR Invoices in a document call Billing +Document and issue it with all the invoices consolidated to the customer +on the Billing Day. The customer will be paying based on the payable +amount shown in Billing Document in the following month.

+

This module use a new document called “Billing” to group these invoices +together.

+

Table of contents

+ +
+

Usage

+

To use this module, you have 2 ways:

+
    +
  1. +
    Create new billing directly
    +
    Go to Invoicing -> Customers or Vendors -> Billing
    +
    +
  2. +
  3. Create billing from selected invoice(s)

    +
      +
    1. Go to Invoicing -> Customers or Vendors -> Invoices or Bills
    2. +
    3. Create Invoice
    4. +
    5. On tree view select invoice and go to Action -> Create Billing
    6. +
    +
  4. +
+
+
+

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

+
    +
  • Ecosoft
  • +
+
+
+

Contributors

+ +
+
+

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:

+

Saran440

+

This module is part of the OCA/account-invoicing project on GitHub.

+

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

+
+
+
+
+ + diff --git a/account_billing/static/src/img/icon.png b/account_billing/static/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a6cd16bef23dcc4b4982f80586a128edc1a2f49d GIT binary patch literal 7338 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 QUjP6A07*qoM6N<$f{y+R<^TWy literal 0 HcmV?d00001 diff --git a/account_billing/tests/__init__.py b/account_billing/tests/__init__.py new file mode 100644 index 0000000..b31a03c --- /dev/null +++ b/account_billing/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2019 Ecosoft Co., Ltd (https://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from . import test_account_billing diff --git a/account_billing/tests/test_account_billing.py b/account_billing/tests/test_account_billing.py new file mode 100644 index 0000000..a460095 --- /dev/null +++ b/account_billing/tests/test_account_billing.py @@ -0,0 +1,313 @@ +# Copyright 2019 Ecosoft Co., Ltd (https://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from datetime import datetime + +from dateutil.relativedelta import relativedelta + +from odoo import Command, fields +from odoo.exceptions import UserError, ValidationError +from odoo.tests.common import TransactionCase + + +class TestAccountBilling(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.journal_sale = cls.env["account.journal"].search([("type", "=", "sale")])[0] + cls.invoice_model = cls.env["account.move"] + cls.invoice_line_model = cls.env["account.move.line"] + cls.billing_model = cls.env["account.billing"] + cls.register_payments_model = cls.env["account.payment.register"] + + cls.partner_id = cls.env["res.partner"].create({"name": "Test Partner"}) + cls.partner_default = cls.env["res.partner"].create( + {"name": "Default Test Partner"} + ) + cls.partner_other = cls.env["res.partner"].create( + {"name": "Other Test Partner"} + ) + cls.payment_term = cls.env.ref("account.account_payment_term_15days") + cls.product = cls.env["product.product"].create( + {"name": "Test Product", "type": "service"} + ) + cls.currency_eur = cls.env.ref("base.EUR") + cls.currency_eur.active = True + cls.currency_usd_id = cls.env.ref("base.USD").id + cls.currency_eur_id = cls.currency_eur.id + cls.account_receivable = cls.env["account.account"].search( + [ + ( + "account_type", + "=", + "asset_receivable", + ) + ], + limit=1, + ) + cls.account_revenue = cls.env["account.account"].search( + [ + ( + "account_type", + "=", + "income", + ), + ("company_ids", "=", cls.env.company.id), + ], + limit=1, + ) + cls.journal_bank = cls.env["account.journal"].create( + {"name": "Bank", "type": "bank", "code": "BNK67"} + ) + cls.payment_method_manual_in = cls.journal_bank.inbound_payment_method_line_ids[ + 0 + ] + + cls.inv_1 = cls.create_invoice( + cls, amount=100, currency_id=cls.currency_eur_id, partner=cls.partner_id.id + ) + cls.inv_2 = cls.create_invoice( + cls, amount=200, currency_id=cls.currency_eur_id, partner=cls.partner_id.id + ) + cls.inv_3 = cls.create_invoice( + cls, amount=300, currency_id=cls.currency_usd_id, partner=cls.partner_id.id + ) + cls.inv_4 = cls.create_invoice( + cls, + amount=400, + currency_id=cls.currency_eur_id, + partner=cls.partner_other.id, + ) + cls.inv_5 = cls.create_invoice( + cls, amount=500, currency_id=cls.currency_usd_id, partner=cls.partner_id.id + ) + cls.inv_6 = cls.create_invoice( + cls, + amount=500, + currency_id=cls.currency_usd_id, + partner=cls.partner_id.id, + invoice_type="in_refund", + ) + + def create_invoice( + self, + amount=None, + invoice_type="out_invoice", + currency_id=None, + partner=None, + account_id=None, + ): + """Returns an open invoice""" + invoice = self.invoice_model.create( + { + "partner_id": partner or self.partner_default.id, + "currency_id": currency_id or self.currency_eur_id, + "move_type": invoice_type, + "invoice_date": fields.Date.context_today(self.env.user), + "date": fields.Date.context_today(self.env.user), + "invoice_payment_term_id": self.payment_term.id, + "invoice_line_ids": [ + Command.create( + { + "product_id": self.product.id, + "quantity": 1, + "price_unit": amount, + "name": "something", + "account_id": self.account_revenue.id, + } + ) + ], + } + ) + invoice.action_post() + return invoice + + def create_payment(self, ctx): + register_payments = self.register_payments_model.with_context(**ctx).create( + { + "journal_id": self.journal_bank.id, + "payment_method_line_id": self.payment_method_manual_in.id, + } + ) + return register_payments.action_create_payments() + + def test_1_invoice_partner(self): + # Test difference partner + invoices = self.inv_1 + self.inv_4 + with self.assertRaises(UserError): + invoices.action_create_billing() + + def test_2_invoice_currency(self): + # Test difference currency + invoices = self.inv_1 + self.inv_3 + with self.assertRaises(UserError): + invoices.action_create_billing() + + def test_3_validate_billing_state_not_open(self): + ctx = {"active_model": "account.move", "active_ids": [self.inv_1.id]} + self.create_payment(ctx) + with self.assertRaises(UserError): + self.inv_1.action_create_billing() + + def test_4_create_billing_from_selected_invoices(self): + """Create two invoices, post it and send context to Billing""" + ctx = { + "active_model": "account.move", + "active_ids": [self.inv_1.id, self.inv_2.id], + "bill_type": "out_invoice", + } + invoices = self.inv_1 + self.inv_2 + action = invoices.action_create_billing() + customer_billing1 = self.billing_model.browse(action["res_id"]) + self.assertEqual(customer_billing1.state, "draft") + # In case other modules change the default value of threshold_date_type + customer_billing1.threshold_date_type = "invoice_date_due" + # Threshold Date error + with self.assertRaises(ValidationError): + customer_billing1.validate_billing() + threshold_date_1 = customer_billing1.threshold_date + relativedelta(years=1) + customer_billing1.threshold_date = threshold_date_1 + customer_billing1.validate_billing() + self.assertEqual(customer_billing1.state, "billed") + self.assertEqual(customer_billing1.invoice_related_count, 2) + customer_billing1.invoice_relate_billing_tree_view() + customer_billing1.action_cancel() + customer_billing1.action_cancel_draft() + + invoices = self.inv_1 + self.inv_2 + action = invoices.action_create_billing() + customer_billing2 = self.billing_model.browse(action["res_id"]) + threshold_date_2 = customer_billing2.threshold_date + relativedelta(years=1) + customer_billing2.threshold_date = threshold_date_2 + customer_billing2.validate_billing() + self.create_payment(ctx) + with self.assertRaises(ValidationError): + customer_billing2.action_cancel() + + def test_5_create_billing_directly(self): + bill1 = self.billing_model.create( + { + "bill_type": "out_invoice", + "partner_id": self.partner_id.id, + "currency_id": self.currency_eur_id, + "threshold_date": datetime.now(), + "threshold_date_type": "invoice_date_due", + } + ) + bill1.threshold_date = bill1.threshold_date + relativedelta(months=12) + # No lines + with self.assertRaises(UserError): + bill1.validate_billing() + + bill1.compute_lines() + # In case _compute_billing_ids is not triggered again after compute_lines. + bill1.billing_line_ids.mapped("move_id")._compute_billing_ids() + self.assertEqual(bill1.invoice_related_count, 2) + self.assertEqual(bill1.billing_line_ids.mapped("move_id.billing_ids"), bill1) + + # Create billing type - supplier + bill2 = self.billing_model.create( + { + "bill_type": "in_invoice", + "partner_id": self.partner_id.id, + "currency_id": self.currency_usd_id, + "threshold_date": datetime.now(), + "threshold_date_type": "invoice_date_due", + } + ) + bill2.threshold_date = bill2.threshold_date + relativedelta(months=1) + bill2.compute_lines() + bill2.validate_billing() + self.assertEqual(bill2.invoice_related_count, 1) + + def test_6_threshold_date_type_invoice_date(self): + """When threshold_date_type is 'invoice_date', the line's invoice_date + should mirror move.invoice_date rather than move.invoice_date_due.""" + billing = self.billing_model.create( + { + "bill_type": "out_invoice", + "partner_id": self.partner_id.id, + "currency_id": self.currency_eur_id, + "threshold_date": datetime.now() + relativedelta(months=12), + "threshold_date_type": "invoice_date", + } + ) + billing.compute_lines() + self.assertTrue(billing.billing_line_ids) + for line in billing.billing_line_ids: + self.assertEqual(line.invoice_date, line.move_id.invoice_date) + + def test_7_check_billing_from_bills(self): + inv_1 = self.create_invoice( + amount=100, + currency_id=self.currency_eur_id, + partner=self.partner_id.id, + invoice_type="in_invoice", + ) + if inv_1.state != "posted": + inv_1.action_post() + inv_2 = inv_1.copy() + # Need to explicitly assign invoice date, not kept on copy + inv_2.invoice_date = fields.Date.context_today(self.env.user) + if inv_2.state != "posted": + inv_2.action_post() + invoices = inv_1 + inv_2 + action = invoices.action_create_billing() + self.billing_model.browse(action["res_id"]) + + def test_8_record_rule_company_restriction(self): + other_company = self.env["res.company"].create({"name": "Other Company"}) + billing_other = self.billing_model.with_company(other_company).create( + { + "bill_type": "out_invoice", + "partner_id": self.partner_id.id, + "currency_id": self.currency_eur_id, + "threshold_date": datetime.now(), + "threshold_date_type": "invoice_date_due", + "company_id": other_company.id, + } + ) + test_user = self.env["res.users"].create( + { + "name": "Test User", + "login": "test@example.com", + "company_id": self.env.company.id, + "group_ids": [ + Command.link(self.env.ref("account.group_account_invoice").id) + ], + } + ) + billing = self.billing_model.with_user(test_user).search( + [("id", "=", billing_other.id)] + ) + self.assertFalse(billing, "Billing from another company should not be visible") + billing_with_sudo = self.billing_model.sudo().search( + [("id", "=", billing_other.id)] + ) + self.assertTrue(billing_with_sudo, "Sudo should bypass company record rule") + + def test_9_check_move_button_draft(self): + self.assertEqual(self.inv_1.state, "posted") + action = self.inv_1.action_create_billing() + customer_billing = self.billing_model.browse(action["res_id"]) + self.assertEqual(customer_billing.state, "draft") + with self.assertRaises(UserError): + self.inv_1.button_draft() + customer_billing.action_cancel() + self.inv_1.button_draft() + self.assertEqual(self.inv_1.state, "draft") + + def test_account_billing_currency(self): + self.assertEqual(self.env.company.currency_id.id, self.currency_usd_id) + inv_1 = self.create_invoice( + amount=100, + currency_id=self.currency_eur_id, + partner=self.partner_id.id, + ) + inv_2 = inv_1.copy() + inv_2.invoice_date = fields.Date.today() + inv_2.action_post() + invoices = inv_1 + inv_2 + action = invoices.action_create_billing() + customer_billing = self.billing_model.browse(action["res_id"]) + self.assertEqual(customer_billing.currency_id.id, self.currency_eur_id) diff --git a/account_billing/views/account_billing_views.xml b/account_billing/views/account_billing_views.xml new file mode 100644 index 0000000..01045f4 --- /dev/null +++ b/account_billing/views/account_billing_views.xml @@ -0,0 +1,270 @@ + + + account.billing.list + account.billing + + + + + + + + + + + + + account.billing.search + account.billing + + + + + + + + + + + + + + + + + + account.billing.form + account.billing + +
+
+
+ +
+ +
+

+

+ + + + + + + + + + + + + + + +