Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,45 @@
# Account Brand
Odoo addon: account_brand
## Installation
```bash
pip install odoo-bringout-oca-brand-account_brand
```
## Dependencies
This addon depends on:
- account
- brand
## Manifest Information
- **Name**: Account Brand
- **Version**: 18.0.1.0.0
- **Category**: Accounting Management
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/brand](https://github.com/OCA/brand) branch 16.0, addon `account_brand`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,134 @@
=============
Account Brand
=============
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:70da6e15190815554bedb4fa3d814634a44bffdde655ccd4d09306080453377e
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbrand-lightgray.png?logo=github
:target: https://github.com/OCA/brand/tree/18.0/account_brand
:alt: OCA/brand
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/brand-18-0/brand-18-0-account_brand
: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/brand&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows you to send branded invoices to your customers. It
adds a brand field on the invoice and the brand information to the PDF
report.
**Table of contents**
.. contents::
:local:
Configuration
=============
It is important to note that the "brand use level" **should** be set to
``Optional`` or ``Required``. The brand use level is configured in the
Users & Companies settings. By default it is set to 'Do not use brands
on business document'. Then the field to select a brand on the invoice
view will not be available.
To change the "brand use level":
#. Go to Settings > General Settings #. Select the brand use level, the
following options are available:
``Do not use brands on business document`` (Default) ``Optional``
``Required``
Usage
=====
To use this module, you need to:
1. Go to Accounting > Customers > Invoices
2. Select or create an invoice
3. Enter the information and select the brand
4. Print the PDF report. It includes the style and information of the
brand.
To do point 4, the `Brand External Report
Layout <https://github.com/OCA/brand/tree/18.0/brand_external_report_layout/README.rst>`__
OCA module must be installed.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/brand/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 <https://github.com/OCA/brand/issues/new?body=module:%20account_brand%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
-------
* Open Source Integrators
* ACSONE SA/NV
Contributors
------------
- Raphael Lee <rlee@opensourceintegrators.com>
- Steve Campbell <scampbell@opensourceintegrators.com>
- Maxime Chambreuil <mchambreuil@opensourceintegrators.com>
- `Obertix <https://www.obertix.net>`__:
- Vicent Cubells
- Ammar Officewala <aofficewala@opensourceintegrators.com>
- bosd <<c5e2fd43-d292-4c90-9d1f-74ff3436329a@anonaddy.me>
Other credits
-------------
- Open Source Integrators <https://www.opensourceintegrators.com>
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-osi-scampbell| image:: https://github.com/osi-scampbell.png?size=40px
:target: https://github.com/osi-scampbell
:alt: osi-scampbell
.. |maintainer-sbejaoui| image:: https://github.com/sbejaoui.png?size=40px
:target: https://github.com/sbejaoui
:alt: sbejaoui
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-osi-scampbell| |maintainer-sbejaoui|
This module is part of the `OCA/brand <https://github.com/OCA/brand/tree/18.0/account_brand>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,5 @@
# Copyright (C) 2019 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models
from . import wizards

View file

@ -0,0 +1,24 @@
# Copyright (C) 2019 Open Source Integrators
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Account Brand",
"summary": "Send branded invoices and refunds",
"version": "18.0.1.0.0",
"category": "Accounting Management",
"website": "https://github.com/OCA/brand",
"author": "Open Source Integrators,"
"ACSONE SA/NV,"
"Odoo Community Association (OCA)",
"license": "AGPL-3",
"depends": ["account", "brand"],
"data": [
"views/account_move_views.xml",
"views/res_partner_account_brand.xml",
"security/res_partner_account_brand.xml",
],
"installable": True,
"development_status": "Beta",
"maintainers": ["osi-scampbell", "sbejaoui"],
}

View file

@ -0,0 +1,124 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_brand
#
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_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_id
msgid "Account"
msgstr ""
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move_reversal
msgid "Account Move Reversal"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_id
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__brand_id
msgid "Brand"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_use_level
msgid "Brand Use Level"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,help:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,help:account_brand.field_account_move__brand_id
msgid "Brand to use for this sale"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__company_id
msgid "Company"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_uid
msgid "Created by"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_date
msgid "Created on"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__display_name
msgid "Display Name"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__id
msgid "ID"
msgstr ""
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_date
msgid "Last Updated on"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__partner_id
msgid "Partner"
msgstr ""
#. module: account_brand
#: model:ir.actions.act_window,name:account_brand.res_partner_account_brand_act_window
#: model:ir.ui.menu,name:account_brand.res_partner_account_brand_menu
msgid "Partner Accounts by Brand"
msgstr ""
#. module: account_brand
#: model:ir.model.constraint,message:account_brand.constraint_res_partner_account_brand_unique_account_by_partner
msgid "Partner has already an account set for this brand!"
msgstr ""
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__liability_payable
msgid "Payable"
msgstr ""
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
msgid "Please select an account of type %s"
msgstr ""
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__asset_receivable
msgid "Receivable"
msgstr ""
#. module: account_brand
#: model:ir.model,name:account_brand.model_res_partner_account_brand
msgid "Receivable/Payable Partner Account By Brand"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_type
msgid "Type"
msgstr ""

View file

@ -0,0 +1,124 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_brand
#
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_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_id
msgid "Account"
msgstr "Konto"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move_reversal
msgid "Account Move Reversal"
msgstr "Storno temeljnice"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_id
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__brand_id
msgid "Brand"
msgstr "Brand"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_use_level
msgid "Brand Use Level"
msgstr "Razina uporabe brenda"
#. module: account_brand
#: model:ir.model.fields,help:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,help:account_brand.field_account_move__brand_id
msgid "Brand to use for this sale"
msgstr "Brand za ovu prodaju"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__company_id
msgid "Company"
msgstr "Tvrtka"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__display_name
msgid "Display Name"
msgstr "Naziv za prikaz"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__id
msgid "ID"
msgstr "ID"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move
msgid "Journal Entry"
msgstr "Stavka dnevnika"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_uid
msgid "Last Updated by"
msgstr "Zadnje ažurirano"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__partner_id
msgid "Partner"
msgstr "Partner"
#. module: account_brand
#: model:ir.actions.act_window,name:account_brand.res_partner_account_brand_act_window
#: model:ir.ui.menu,name:account_brand.res_partner_account_brand_menu
msgid "Partner Accounts by Brand"
msgstr "Konta partnera po brendu"
#. module: account_brand
#: model:ir.model.constraint,message:account_brand.constraint_res_partner_account_brand_unique_account_by_partner
msgid "Partner has already an account set for this brand!"
msgstr "Partner već ima postavljen konto za ovaj brand!"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__liability_payable
msgid "Payable"
msgstr "Dugovno"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
msgid "Please select an account of type %s"
msgstr "Molimo odaberite konto tipa %s"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__asset_receivable
msgid "Receivable"
msgstr "Potražno"
#. module: account_brand
#: model:ir.model,name:account_brand.model_res_partner_account_brand
msgid "Receivable/Payable Partner Account By Brand"
msgstr "Potražna/Dugovna konta partnera po brendu"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_type
msgid "Type"
msgstr "Tip"

View file

@ -0,0 +1,139 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_brand
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-11-04 13:45+0000\n"
"Last-Translator: Maria Sparenberg <maria.sparenberg@gmx.net>\n"
"Language-Team: none\n"
"Language: de\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_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_id
msgid "Account"
msgstr "Konto"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move_reversal
msgid "Account Move Reversal"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_payment__brand_id
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__brand_id
msgid "Brand"
msgstr "Marke"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_use_level
msgid "Brand Use Level"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,help:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,help:account_brand.field_account_move__brand_id
#: model:ir.model.fields,help:account_brand.field_account_payment__brand_id
msgid "Brand to use for this sale"
msgstr "zu verwendende Marke für diesen Verkauf"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__company_id
msgid "Company"
msgstr "Unternehmen"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_uid
msgid "Created by"
msgstr "Erstellt von"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_date
msgid "Created on"
msgstr "Erstellt am"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__display_name
msgid "Display Name"
msgstr "Anzeigename"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__id
msgid "ID"
msgstr "ID"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move
msgid "Journal Entry"
msgstr "Buchungssatz"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_uid
msgid "Last Updated by"
msgstr "Zuletzt aktualisiert von"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_date
msgid "Last Updated on"
msgstr "Zuletzt aktualisiert am"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__partner_id
msgid "Partner"
msgstr "Partner"
#. module: account_brand
#: model:ir.actions.act_window,name:account_brand.res_partner_account_brand_act_window
#: model:ir.ui.menu,name:account_brand.res_partner_account_brand_menu
msgid "Partner Accounts by Brand"
msgstr ""
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#: model:ir.model.constraint,message:account_brand.constraint_res_partner_account_brand_unique_account_by_partner
#, python-format
msgid "Partner has already an account set for this brand!"
msgstr "Der Partner hat für diese Marke bereits ein Konto!"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__liability_payable
msgid "Payable"
msgstr "Kreditor"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#, python-format
msgid "Please select an account of type %s"
msgstr "Bitte ein Konto vom Typ %s wählen."
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__asset_receivable
msgid "Receivable"
msgstr "Debitor"
#. module: account_brand
#: model:ir.model,name:account_brand.model_res_partner_account_brand
msgid "Receivable/Payable Partner Account By Brand"
msgstr "Debitoren-/Kreditorenkonto nach Marke"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_type
msgid "Type"
msgstr "Typ"
#~ msgid "Last Modified on"
#~ msgstr "Zuletzt geändert am"
#~ msgid "Invoice"
#~ msgstr "Rechnung"

View file

@ -0,0 +1,139 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_brand
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-05-04 12:19+0000\n"
"Last-Translator: gelo joga Rodríguez <gelo.joga@factorlibre.com>\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 4.14.1\n"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_id
msgid "Account"
msgstr "Cuenta"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move_reversal
msgid "Account Move Reversal"
msgstr "Asiento de reversión"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_payment__brand_id
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__brand_id
msgid "Brand"
msgstr "Marca"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_use_level
msgid "Brand Use Level"
msgstr "Uso del campo Marca"
#. module: account_brand
#: model:ir.model.fields,help:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,help:account_brand.field_account_move__brand_id
#: model:ir.model.fields,help:account_brand.field_account_payment__brand_id
msgid "Brand to use for this sale"
msgstr "Marca a usar en esta venta"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__company_id
msgid "Company"
msgstr "Compañía"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_date
msgid "Created on"
msgstr "Creado el"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__id
msgid "ID"
msgstr "ID"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move
msgid "Journal Entry"
msgstr "Asiento contable"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__partner_id
msgid "Partner"
msgstr "Partner"
#. module: account_brand
#: model:ir.actions.act_window,name:account_brand.res_partner_account_brand_act_window
#: model:ir.ui.menu,name:account_brand.res_partner_account_brand_menu
msgid "Partner Accounts by Brand"
msgstr "Cuentas de clientes/proveedores por marca"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#: model:ir.model.constraint,message:account_brand.constraint_res_partner_account_brand_unique_account_by_partner
#, python-format
msgid "Partner has already an account set for this brand!"
msgstr "¡El cliente/proveedor ya tiene establecida una cuenta para esta marca!"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__liability_payable
msgid "Payable"
msgstr "A pagar"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#, python-format
msgid "Please select an account of type %s"
msgstr "Por favor selecciona una cuenta de tipo %s"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__asset_receivable
msgid "Receivable"
msgstr "Por cobrar"
#. module: account_brand
#: model:ir.model,name:account_brand.model_res_partner_account_brand
msgid "Receivable/Payable Partner Account By Brand"
msgstr "Cuentas Por Cobrar/A Pagar de clientes y proveedores por marca"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_type
msgid "Type"
msgstr "Tipo"
#~ msgid "Last Modified on"
#~ msgstr "Última modificación el"
#~ msgid "Invoice"
#~ msgstr "Factura"

View file

@ -0,0 +1,136 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_brand
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-06-25 15:26+0000\n"
"Last-Translator: Ignacio Buioli <ibuioli@gmail.com>\n"
"Language-Team: none\n"
"Language: es_AR\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.17\n"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_id
msgid "Account"
msgstr "Cuenta"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move_reversal
msgid "Account Move Reversal"
msgstr "Reversión de Movimiento de Cuenta"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_payment__brand_id
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__brand_id
msgid "Brand"
msgstr "Marca"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_use_level
msgid "Brand Use Level"
msgstr "Nivel de Uso de Marca"
#. module: account_brand
#: model:ir.model.fields,help:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,help:account_brand.field_account_move__brand_id
#: model:ir.model.fields,help:account_brand.field_account_payment__brand_id
msgid "Brand to use for this sale"
msgstr "Marca a utilizar para este venta"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__company_id
msgid "Company"
msgstr "Compañía"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_date
msgid "Created on"
msgstr "Creado el"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__display_name
msgid "Display Name"
msgstr "Nombre Mostrado"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__id
msgid "ID"
msgstr "ID"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move
msgid "Journal Entry"
msgstr "Asiento Contable"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_date
msgid "Last Updated on"
msgstr "Última modificación el"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__partner_id
msgid "Partner"
msgstr "Contacto"
#. module: account_brand
#: model:ir.actions.act_window,name:account_brand.res_partner_account_brand_act_window
#: model:ir.ui.menu,name:account_brand.res_partner_account_brand_menu
msgid "Partner Accounts by Brand"
msgstr "Cuentas de Contacto por Marca"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#: model:ir.model.constraint,message:account_brand.constraint_res_partner_account_brand_unique_account_by_partner
#, python-format
msgid "Partner has already an account set for this brand!"
msgstr "¡El contacto ya tiene una cuenta configurada para esta marca!"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__liability_payable
msgid "Payable"
msgstr "A Pagar"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#, python-format
msgid "Please select an account of type %s"
msgstr "Por favor, selecciones una cuenta de tipo %s"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__asset_receivable
msgid "Receivable"
msgstr "A Cobrar"
#. module: account_brand
#: model:ir.model,name:account_brand.model_res_partner_account_brand
msgid "Receivable/Payable Partner Account By Brand"
msgstr "Cuenta de contacto a Cobrar/Pagar por Marca"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_type
msgid "Type"
msgstr "Tipo"
#~ msgid "Last Modified on"
#~ msgstr "Última modificación el"

View file

@ -0,0 +1,140 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_brand
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-02-16 14:23+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\n"
"Language-Team: none\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.14.1\n"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_id
msgid "Account"
msgstr "Konto"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move_reversal
msgid "Account Move Reversal"
msgstr "Storno temeljnice"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_payment__brand_id
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__brand_id
msgid "Brand"
msgstr "Brand"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_use_level
msgid "Brand Use Level"
msgstr "Razina uporabe brenda"
#. module: account_brand
#: model:ir.model.fields,help:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,help:account_brand.field_account_move__brand_id
#: model:ir.model.fields,help:account_brand.field_account_payment__brand_id
msgid "Brand to use for this sale"
msgstr "Brand za ovu prodaju"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__company_id
msgid "Company"
msgstr "Tvrtka"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__display_name
msgid "Display Name"
msgstr "Naziv za prikaz"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__id
msgid "ID"
msgstr "ID"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move
msgid "Journal Entry"
msgstr "Stavka dnevnika"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_uid
msgid "Last Updated by"
msgstr "Zadnje ažurirano"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__partner_id
msgid "Partner"
msgstr "Partner"
#. module: account_brand
#: model:ir.actions.act_window,name:account_brand.res_partner_account_brand_act_window
#: model:ir.ui.menu,name:account_brand.res_partner_account_brand_menu
msgid "Partner Accounts by Brand"
msgstr "Konta partnera po brendu"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#: model:ir.model.constraint,message:account_brand.constraint_res_partner_account_brand_unique_account_by_partner
#, python-format
msgid "Partner has already an account set for this brand!"
msgstr "Partner već ima postavljen konto za ovaj brand!"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__liability_payable
msgid "Payable"
msgstr "Dugovno"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#, python-format
msgid "Please select an account of type %s"
msgstr "Molimo odaberite konto tipa %s"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__asset_receivable
msgid "Receivable"
msgstr "Potražno"
#. module: account_brand
#: model:ir.model,name:account_brand.model_res_partner_account_brand
msgid "Receivable/Payable Partner Account By Brand"
msgstr "Potražna/Dugovna konta partnera po brendu"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_type
msgid "Type"
msgstr "Tip"
#~ msgid "Last Modified on"
#~ msgstr "Zadnje modificirano"
#~ msgid "Invoice"
#~ msgstr "Račun"

View file

@ -0,0 +1,133 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_brand
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-01-02 19:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\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.6.2\n"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_id
msgid "Account"
msgstr "Conto"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move_reversal
msgid "Account Move Reversal"
msgstr "Storno movimento conto"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_payment__brand_id
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__brand_id
msgid "Brand"
msgstr "Marca"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_use_level
msgid "Brand Use Level"
msgstr "Livello uso marca"
#. module: account_brand
#: model:ir.model.fields,help:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,help:account_brand.field_account_move__brand_id
#: model:ir.model.fields,help:account_brand.field_account_payment__brand_id
msgid "Brand to use for this sale"
msgstr "Marca da usare per questa vendita"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__company_id
msgid "Company"
msgstr "Azienda"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_date
msgid "Created on"
msgstr "Creato il"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__id
msgid "ID"
msgstr "ID"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move
msgid "Journal Entry"
msgstr "Registrazione contabile"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__partner_id
msgid "Partner"
msgstr "Partner"
#. module: account_brand
#: model:ir.actions.act_window,name:account_brand.res_partner_account_brand_act_window
#: model:ir.ui.menu,name:account_brand.res_partner_account_brand_menu
msgid "Partner Accounts by Brand"
msgstr "Conti partner per marca"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#: model:ir.model.constraint,message:account_brand.constraint_res_partner_account_brand_unique_account_by_partner
#, python-format
msgid "Partner has already an account set for this brand!"
msgstr "Il partner ha già un conto impostato per questa marca!"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__liability_payable
msgid "Payable"
msgstr "Debito"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#, python-format
msgid "Please select an account of type %s"
msgstr "Selezionare un conto di tipo %s"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__asset_receivable
msgid "Receivable"
msgstr "Credito"
#. module: account_brand
#: model:ir.model,name:account_brand.model_res_partner_account_brand
msgid "Receivable/Payable Partner Account By Brand"
msgstr "Conto credito/debito partner per marca"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_type
msgid "Type"
msgstr "Tipo"

View file

@ -0,0 +1,140 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_brand
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-04-09 22:23+0000\n"
"Last-Translator: Bosd <c5e2fd43-d292-4c90-9d1f-74ff3436329a@anonaddy.me>\n"
"Language-Team: none\n"
"Language: 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 5.10.4\n"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_id
#, fuzzy
msgid "Account"
msgstr "Account"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move_reversal
msgid "Account Move Reversal"
msgstr "Boeking terugdraaien"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_payment__brand_id
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__brand_id
msgid "Brand"
msgstr "Merk"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_use_level
msgid "Brand Use Level"
msgstr "Merk gebruiks niveau"
#. module: account_brand
#: model:ir.model.fields,help:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,help:account_brand.field_account_move__brand_id
#: model:ir.model.fields,help:account_brand.field_account_payment__brand_id
msgid "Brand to use for this sale"
msgstr "Merk voor deze verkoop"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__company_id
msgid "Company"
msgstr "Bedrijf"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_uid
msgid "Created by"
msgstr "Aangemaakt door"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_date
msgid "Created on"
msgstr "Aangemaakt op"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__display_name
msgid "Display Name"
msgstr "Weergavenaam"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__id
msgid "ID"
msgstr "ID"
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move
msgid "Journal Entry"
msgstr "Journaalpost"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_uid
msgid "Last Updated by"
msgstr "Laatste wijziging door"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_date
msgid "Last Updated on"
msgstr "Laatste wijziging op"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__partner_id
msgid "Partner"
msgstr "Partner"
#. module: account_brand
#: model:ir.actions.act_window,name:account_brand.res_partner_account_brand_act_window
#: model:ir.ui.menu,name:account_brand.res_partner_account_brand_menu
msgid "Partner Accounts by Brand"
msgstr "Partneraccounts per merk"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#: model:ir.model.constraint,message:account_brand.constraint_res_partner_account_brand_unique_account_by_partner
#, python-format
msgid "Partner has already an account set for this brand!"
msgstr "Partner heeft al een account voor dit merk!"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__liability_payable
msgid "Payable"
msgstr "Te betalen"
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#, python-format
msgid "Please select an account of type %s"
msgstr "Selecteer een account van het type %s"
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__asset_receivable
msgid "Receivable"
msgstr "Te ontvangen"
#. module: account_brand
#: model:ir.model,name:account_brand.model_res_partner_account_brand
msgid "Receivable/Payable Partner Account By Brand"
msgstr "Debiteuren-/crediteurenpartnerrekening per merk"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_type
msgid "Type"
msgstr "Type"
#~ msgid "Last Modified on"
#~ msgstr "Laatst gewijzigt op"
#~ msgid "Journal Entries"
#~ msgstr "Journaal ingave"

View file

@ -0,0 +1,136 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_brand
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2019-09-17 16:24+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 3.8\n"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_id
msgid "Account"
msgstr ""
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move_reversal
msgid "Account Move Reversal"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_id
#: model:ir.model.fields,field_description:account_brand.field_account_payment__brand_id
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__brand_id
msgid "Brand"
msgstr "品牌"
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__brand_use_level
msgid "Brand Use Level"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,help:account_brand.field_account_bank_statement_line__brand_id
#: model:ir.model.fields,help:account_brand.field_account_move__brand_id
#: model:ir.model.fields,help:account_brand.field_account_payment__brand_id
msgid "Brand to use for this sale"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_account_move__company_id
msgid "Company"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_uid
msgid "Created by"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__create_date
msgid "Created on"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__display_name
msgid "Display Name"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__id
msgid "ID"
msgstr ""
#. module: account_brand
#: model:ir.model,name:account_brand.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__write_date
msgid "Last Updated on"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__partner_id
msgid "Partner"
msgstr ""
#. module: account_brand
#: model:ir.actions.act_window,name:account_brand.res_partner_account_brand_act_window
#: model:ir.ui.menu,name:account_brand.res_partner_account_brand_menu
msgid "Partner Accounts by Brand"
msgstr ""
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#: model:ir.model.constraint,message:account_brand.constraint_res_partner_account_brand_unique_account_by_partner
#, python-format
msgid "Partner has already an account set for this brand!"
msgstr ""
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__liability_payable
msgid "Payable"
msgstr ""
#. module: account_brand
#. odoo-python
#: code:addons/account_brand/models/res_partner_account_brand.py:0
#, python-format
msgid "Please select an account of type %s"
msgstr ""
#. module: account_brand
#: model:ir.model.fields.selection,name:account_brand.selection__res_partner_account_brand__account_type__asset_receivable
msgid "Receivable"
msgstr ""
#. module: account_brand
#: model:ir.model,name:account_brand.model_res_partner_account_brand
msgid "Receivable/Payable Partner Account By Brand"
msgstr ""
#. module: account_brand
#: model:ir.model.fields,field_description:account_brand.field_res_partner_account_brand__account_type
msgid "Type"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "发票"

View file

@ -0,0 +1,5 @@
# Copyright (C) 2019 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import account_move
from . import res_partner_account_brand

View file

@ -0,0 +1,58 @@
# Copyright (C) 2019 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class AccountMove(models.Model):
_name = "account.move"
_inherit = ["account.move", "res.brand.mixin"]
brand_id = fields.Many2one()
def _is_brand_required(self):
self.ensure_one()
if self.move_type in ("in_invoice", "in_refund"):
return False
return super()._is_brand_required()
@api.onchange("partner_id")
def _onchange_partner_id(self):
res = super()._onchange_partner_id()
if self.brand_id:
pab_model = self.env["res.partner.account.brand"]
company_id = self.company_id.id
partner = (
self.partner_id
if not company_id
else self.partner_id.with_company(company_id)
)
invoice_type = self.move_type or self.env.context.get(
"move_type", "out_invoice"
)
if partner:
rec_account = pab_model._get_partner_account_by_brand(
"asset_receivable", self.brand_id, partner
)
rec_account = (
rec_account
if rec_account
else partner.property_account_receivable_id
)
pay_account = pab_model._get_partner_account_by_brand(
"liability_payable", self.brand_id, partner
)
pay_account = (
pay_account if pay_account else partner.property_account_payable_id
)
if invoice_type in ("in_invoice", "in_refund"):
account_id = pay_account
else:
account_id = rec_account
if account_id:
self.line_ids.filtered(
lambda line, a=account_id: line.account_id.account_type
== a.account_type
).update({"account_id": account_id.id})
return res

View file

@ -0,0 +1,81 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class ResPartnerAccountBrand(models.Model):
"""This model is meant to be used in case we need to define different
receivable/payable accounts for partners"""
_name = "res.partner.account.brand"
_description = "Receivable/Payable Partner Account By Brand"
partner_id = fields.Many2one(
comodel_name="res.partner", string="Partner", required=False
)
account_id = fields.Many2one(
comodel_name="account.account",
string="Account",
required=True,
domain="[('account_type', 'in', ('liability_payable', 'asset_receivable'))]",
)
brand_id = fields.Many2one(comodel_name="res.brand", string="Brand", required=True)
account_type = fields.Selection(
string="Type",
selection=[
("liability_payable", "Payable"),
("asset_receivable", "Receivable"),
],
required=True,
)
_sql_constraints = [
(
"unique_account_by_partner",
"unique(partner_id, account_id, brand_id, account_type)",
"Partner has already an account set for this brand!",
)
]
@api.constrains("account_id", "account_type")
def _check_account_type(self):
for rec in self:
if (
rec.account_id
and rec.account_type
and rec.account_id.account_type != rec.account_type
):
raise ValidationError(
_("Please select an account of type %s") % rec.account_type
)
@api.onchange("account_type")
def _onchange_account_type(self):
self.ensure_one()
self.update({"account_id": False})
domain = [("id", "=", False)]
if self.account_type == "payable":
domain = [
("internal_type", "=", "payable"),
("deprecated", "=", False),
]
elif self.account_type == "receivable":
domain = [
("internal_type", "=", "receivable"),
("deprecated", "=", False),
]
return {"domain": {"account_id": domain}}
@api.model
def _get_partner_account_by_brand(self, account_type, brand, partner):
domain = [
("brand_id", "=", brand.id),
("account_type", "=", account_type),
]
default_rule = self.search(domain + [("partner_id", "=", False)], limit=1)
partner_rule = False
if partner:
partner_rule = self.search(domain + [("partner_id", "=", partner.id)])
return partner_rule.account_id if partner_rule else default_rule.account_id

View file

@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

View file

@ -0,0 +1,12 @@
It is important to note that the "brand use level" **should** be set to `Optional` or `Required`.
The brand use level is configured in the Users & Companies settings.
By default it is set to 'Do not use brands on business document'.
Then the field to select a brand on the invoice view will not be available.
To change the "brand use level":
#. Go to Settings > General Settings
#. Select the brand use level, the following options are available:
`Do not use brands on business document` (Default)
`Optional`
`Required`

View file

@ -0,0 +1,7 @@
- Raphael Lee \<<rlee@opensourceintegrators.com>\>
- Steve Campbell \<<scampbell@opensourceintegrators.com>\>
- Maxime Chambreuil \<<mchambreuil@opensourceintegrators.com>\>
- [Obertix](https://www.obertix.net):
- Vicent Cubells
- Ammar Officewala \<<aofficewala@opensourceintegrators.com>\>
- bosd \<<c5e2fd43-d292-4c90-9d1f-74ff3436329a@anonaddy.me\>

View file

@ -0,0 +1 @@
- Open Source Integrators \<<https://www.opensourceintegrators.com>\>

View file

@ -0,0 +1,3 @@
This module allows you to send branded invoices to your customers. It
adds a brand field on the invoice and the brand information to the PDF
report.

View file

@ -0,0 +1,8 @@
To use this module, you need to:
1. Go to Accounting \> Customers \> Invoices
2. Select or create an invoice
3. Enter the information and select the brand
4. Print the PDF report. It includes the style and information of the brand.
To do point 4, the [Brand External Report Layout](https://github.com/OCA/brand/tree/18.0/brand_external_report_layout/README.rst) OCA module must be installed.

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 ACSONE SA/NV
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.model.access" id="res_partner_account_brand_access">
<field name="name">res.partner.account.brand access</field>
<field name="model_id" ref="model_res_partner_account_brand" />
<field name="perm_read" eval="1" />
<field name="perm_create" eval="0" />
<field name="perm_write" eval="0" />
<field name="perm_unlink" eval="0" />
</record>
<record
model="ir.model.access"
id="res_partner_account_brand_group_account_invoice_user_access"
>
<field name="name">res.partner.account.brand invoice user access</field>
<field name="model_id" ref="model_res_partner_account_brand" />
<field name="group_id" ref="account.group_account_invoice" />
<field name="perm_read" eval="1" />
<field name="perm_create" eval="1" />
<field name="perm_write" eval="1" />
<field name="perm_unlink" eval="1" />
</record>
</odoo>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,472 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Account Brand</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="account-brand">
<h1 class="title">Account Brand</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:70da6e15190815554bedb4fa3d814634a44bffdde655ccd4d09306080453377e
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/brand/tree/18.0/account_brand"><img alt="OCA/brand" src="https://img.shields.io/badge/github-OCA%2Fbrand-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/brand-18-0/brand-18-0-account_brand"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/brand&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows you to send branded invoices to your customers. It
adds a brand field on the invoice and the brand information to the PDF
report.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-6">Contributors</a></li>
<li><a class="reference internal" href="#other-credits" id="toc-entry-7">Other credits</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-8">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
<p>It is important to note that the “brand use level” <strong>should</strong> be set to
<tt class="docutils literal">Optional</tt> or <tt class="docutils literal">Required</tt>. The brand use level is configured in the
Users &amp; Companies settings. By default it is set to Do not use brands
on business document. Then the field to select a brand on the invoice
view will not be available.</p>
<p>To change the “brand use level”:</p>
<p>#. Go to Settings &gt; General Settings #. Select the brand use level, the
following options are available:
<tt class="docutils literal">Do not use brands on business document</tt> (Default) <tt class="docutils literal">Optional</tt>
<tt class="docutils literal">Required</tt></p>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
<p>To use this module, you need to:</p>
<ol class="arabic simple">
<li>Go to Accounting &gt; Customers &gt; Invoices</li>
<li>Select or create an invoice</li>
<li>Enter the information and select the brand</li>
<li>Print the PDF report. It includes the style and information of the
brand.</li>
</ol>
<p>To do point 4, the <a class="reference external" href="https://github.com/OCA/brand/tree/18.0/brand_external_report_layout/README.rst">Brand External Report
Layout</a>
OCA module must be installed.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/brand/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/brand/issues/new?body=module:%20account_brand%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-4">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-5">Authors</a></h2>
<ul class="simple">
<li>Open Source Integrators</li>
<li>ACSONE SA/NV</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
<ul class="simple">
<li>Raphael Lee &lt;<a class="reference external" href="mailto:rlee&#64;opensourceintegrators.com">rlee&#64;opensourceintegrators.com</a>&gt;</li>
<li>Steve Campbell &lt;<a class="reference external" href="mailto:scampbell&#64;opensourceintegrators.com">scampbell&#64;opensourceintegrators.com</a>&gt;</li>
<li>Maxime Chambreuil &lt;<a class="reference external" href="mailto:mchambreuil&#64;opensourceintegrators.com">mchambreuil&#64;opensourceintegrators.com</a>&gt;</li>
<li><a class="reference external" href="https://www.obertix.net">Obertix</a>:<ul>
<li>Vicent Cubells</li>
</ul>
</li>
<li>Ammar Officewala &lt;<a class="reference external" href="mailto:aofficewala&#64;opensourceintegrators.com">aofficewala&#64;opensourceintegrators.com</a>&gt;</li>
<li>bosd &lt;&lt;<a class="reference external" href="mailto:c5e2fd43-d292-4c90-9d1f-74ff3436329a&#64;anonaddy.me">c5e2fd43-d292-4c90-9d1f-74ff3436329a&#64;anonaddy.me</a>&gt;</li>
</ul>
</div>
<div class="section" id="other-credits">
<h2><a class="toc-backref" href="#toc-entry-7">Other credits</a></h2>
<ul class="simple">
<li>Open Source Integrators &lt;<a class="reference external" href="https://www.opensourceintegrators.com">https://www.opensourceintegrators.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-8">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/osi-scampbell"><img alt="osi-scampbell" src="https://github.com/osi-scampbell.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/sbejaoui"><img alt="sbejaoui" src="https://github.com/sbejaoui.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/brand/tree/18.0/account_brand">OCA/brand</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,2 @@
from . import test_brand_mixin
from . import test_account_move

View file

@ -0,0 +1,110 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests.common import TransactionCase
class TestAccountMove(TransactionCase):
def setUp(self):
super().setUp()
self.product = self.env.ref("product.product_product_4")
self.account_receivable = self.env["account.account"].create(
{
"name": "Partner Receivable",
"code": "RCV00",
"account_type": "asset_receivable",
"reconcile": True,
}
)
self.account_receivable_brand_default = self.env["account.account"].create(
{
"name": "Receivable Brand Default",
"code": "RCV01",
"account_type": "asset_receivable",
"reconcile": True,
}
)
self.account_receivable_partner_brand_default = self.env[
"account.account"
].create(
{
"name": "Receivable Partner Brand Default",
"code": "RCV02",
"account_type": "asset_receivable",
"reconcile": True,
}
)
self.partner_id = self.env.ref("base.res_partner_12")
self.partner_id.property_account_receivable_id = self.account_receivable
self.account_revenue = self.env["account.account"].create(
{"name": "Test sale", "code": "XX.700", "account_type": "income"}
)
self.move = self.env["account.move"].create(
{
"partner_id": self.partner_id.id,
"move_type": "out_invoice",
"invoice_line_ids": [
(
0,
0,
{
"product_id": self.product.id,
"quantity": 1,
"price_unit": 42,
"name": "something",
"account_id": self.account_revenue.id,
},
)
],
}
)
self.brand_id = self.env["res.brand"].create({"name": "Brand"})
def _get_receivable_account(self, move):
return self.move.line_ids.filtered(
lambda line: line.account_id.account_type == "asset_receivable"
).account_id
def test_on_change_partner_id(self):
account = self._get_receivable_account(self.move)
self.assertEqual(account, self.account_receivable)
partner_account_brand = self.env["res.partner.account.brand"].create(
{
"partner_id": False,
"account_id": self.account_receivable_brand_default.id,
"brand_id": self.brand_id.id,
"account_type": "asset_receivable",
}
)
self.move._onchange_partner_id()
account = self._get_receivable_account(self.move)
self.assertEqual(account, self.account_receivable)
self.move.brand_id = self.brand_id
self.move._onchange_partner_id()
account = self._get_receivable_account(self.move)
self.assertEqual(account, self.account_receivable_brand_default)
partner_account_brand.update(
{
"partner_id": self.partner_id.id,
"account_id": self.account_receivable_partner_brand_default.id,
}
)
self.move._onchange_partner_id()
account = self._get_receivable_account(self.move)
self.assertEqual(
account,
self.account_receivable_partner_brand_default,
)
move = self.env["account.move"].create(
{
"partner_id": self.partner_id.id,
"brand_id": self.brand_id.id,
"move_type": "out_invoice",
}
)
account = self._get_receivable_account(move)
self.assertEqual(
account,
self.account_receivable_partner_brand_default,
)

View file

@ -0,0 +1,141 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from lxml import etree
from odoo.exceptions import ValidationError
from odoo.tests import Form
from odoo.tests.common import TransactionCase
from odoo.addons.brand.models.res_company import BRAND_USE_LEVEL_REQUIRED_LEVEL
class TestBrandMixin(TransactionCase):
def setUp(self):
super().setUp()
self.partner = self.env.user.partner_id
self.company = self.env.user.company_id
self.other_company = self.env["res.company"].create(
{"name": "other company", "parent_id": self.company.id}
)
self.journal = self.env["account.journal"].create(
{"type": "sale", "code": "SALE", "name": "Sale journal"}
)
self.invoice = self.env["account.move"].create(
{
"name": "Sample invoice",
"company_id": self.company.id,
"journal_id": self.journal.id,
"partner_id": self.partner.id,
}
)
self.brand = self.env["res.brand"].create({"name": "brand"})
self.other_company_brand = self.env["res.brand"].create(
{"name": "brand", "company_id": self.other_company.id}
)
def test_is_brand_required(self):
self.assertFalse(self.invoice._is_brand_required())
self.company.brand_use_level = BRAND_USE_LEVEL_REQUIRED_LEVEL
self.assertTrue(self.invoice._is_brand_required())
def test_check_brand_requirement(self):
self.env["account.move"].create(
{
"name": "Sample invoice",
"company_id": self.company.id,
"journal_id": self.journal.id,
"partner_id": self.partner.id,
}
)
self.company.brand_use_level = BRAND_USE_LEVEL_REQUIRED_LEVEL
with self.assertRaises(ValidationError):
self.env["account.move"].create(
{
"name": "Sample invoice",
"company_id": self.company.id,
"journal_id": self.journal.id,
"partner_id": self.partner.id,
}
)
self.env["account.move"].create(
{
"name": "Sample invoice",
"company_id": self.company.id,
"journal_id": self.journal.id,
"partner_id": self.partner.id,
"brand_id": self.brand.id,
}
)
def test_check_brand_company_id(self):
invoice = self.env["account.move"].create(
{
"name": "Sample invoice",
"company_id": self.company.id,
"journal_id": self.journal.id,
"partner_id": self.partner.id,
"brand_id": self.brand.id,
}
)
with self.assertRaises(ValidationError):
invoice.brand_id = self.other_company_brand
def test_onchange_brand_id(self):
new_invoice = self.env["account.move"].new(
{
"name": "Sample invoice",
"company_id": self.company.id,
"journal_id": self.journal.id,
"partner_id": self.partner.id,
"brand_id": self.brand.id,
}
)
self.assertEqual(new_invoice.company_id, self.company)
new_invoice.brand_id = self.other_company_brand
new_invoice._onchange_brand_id()
self.assertEqual(new_invoice.company_id, self.other_company)
def test_get_view(self):
view = self.env["account.move"].get_view(
view_id=self.env.ref("account.view_move_form").id,
view_type="form",
)
doc = etree.XML(view["arch"])
self.assertTrue(doc.xpath("//field[@name='brand_id']"))
def test_reverse_move(self):
move = self.env["account.move"].create(
{
"name": "Sample invoice",
"move_type": "out_invoice",
"company_id": self.company.id,
"journal_id": self.journal.id,
"partner_id": self.partner.id,
"brand_id": self.brand.id,
"invoice_line_ids": [
(
0,
0,
{
"product_id": self.env.ref("product.product_product_1").id,
"quantity": 40.0,
"name": "product test 1",
"discount": 10.00,
"price_unit": 2.27,
},
)
],
}
)
move.action_post()
reverse_wizard = Form(
self.env["account.move.reversal"].with_context(
active_ids=move.ids, active_model="account.move"
)
)
reverse_wizard.reason = "modify"
reverse = reverse_wizard.save()
action = reverse.reverse_moves()
credit_note = self.env["account.move"].browse(action.get("res_id"))
self.assertEqual(credit_note.brand_id, self.brand)

View file

@ -0,0 +1,18 @@
<odoo>
<!-- Copyright (C) 2019 Open Source Integrators
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<record id="view_move_form" model="ir.ui.view">
<field name="name">account.move.form - account_brand</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<field name="partner_shipping_id" position="before">
<field
name="brand_id"
invisible="move_type not in ['out_invoice', 'out_refund', 'in_invoice', 'in_refund', 'out_receipt', 'in_receipt']"
readonly="state != 'draft'"
/>
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 ACSONE SA/NV
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="res_partner_account_brand_tree_view">
<field name="name">res.partner.account.brand.list (in account_brand)</field>
<field name="model">res.partner.account.brand</field>
<field name="arch" type="xml">
<list editable="bottom">
<field name="brand_id" />
<field name="account_type" />
<field name="account_id" />
<field name="partner_id" />
</list>
</field>
</record>
<record model="ir.actions.act_window" id="res_partner_account_brand_act_window">
<field name="name">Partner Accounts by Brand</field>
<field name="res_model">res.partner.account.brand</field>
<field name="view_mode">list</field>
</record>
<record model="ir.ui.menu" id="res_partner_account_brand_menu">
<field name="name">Partner Accounts by Brand</field>
<field name="parent_id" ref="account.account_account_menu" />
<field name="action" ref="res_partner_account_brand_act_window" />
</record>
</odoo>

View file

@ -0,0 +1 @@
from . import account_move_reversal

View file

@ -0,0 +1,13 @@
# Copyright 2020 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class AccountMoveReversal(models.TransientModel):
_inherit = "account.move.reversal"
def _prepare_default_reversal(self, move):
res = super()._prepare_default_reversal(move)
res["brand_id"] = move.brand_id.id
return res

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Account_brand Module - account_brand
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for account_brand. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,6 @@
# Dependencies
This addon depends on:
- [account](../../odoo-bringout-oca-ocb-account)
- [brand](../../odoo-bringout-oca-brand-brand)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon account_brand or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-brand-account_brand"
# or
uv pip install odoo-bringout-oca-brand-account_brand"
```

View file

@ -0,0 +1,13 @@
# Models
Detected core models and extensions in account_brand.
```mermaid
classDiagram
class account_move
class res_partner_account_brand
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: account_brand. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon account_brand
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,61 @@
# Security
Access control and security definitions in account_brand.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[CHANGELOG.md](../CHANGELOG.md)**
- 132 model access rules
- **[doc](../doc)**
- **[docker](../docker)**
- **[input](../input)**
- **[nix](../nix)**
- **[odoo.conf](../odoo.conf)**
- 58 model access rules
- **[odoo_packages_bez_l10n.txt](../odoo_packages_bez_l10n.txt)**
- 1947 model access rules
- **[odoo_packages_bringout.txt](../odoo_packages_bringout.txt)**
- 1947 model access rules
- **[odoo_packages.txt](../odoo_packages.txt)**
- 2085 model access rules
- **[output](../output)**
- **[packages](../packages)**
- **[PACKAGES.md](../PACKAGES.md)**
- 298 model access rules
- **[README.md](../README.md)**
- 338 model access rules
- **[scripts](../scripts)**
- **[temp](../temp)**
- **[TRANSLATION_BS_SUMMARY.md](../TRANSLATION_BS_SUMMARY.md)**
- 146 model access rules
## Record Rules
Row-level security rules defined in:
## Security Groups & Configuration
Security groups and permissions defined in:
- **[res_partner_account_brand.xml](../account_brand/security/res_partner_account_brand.xml)**
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[res_partner_account_brand.xml](../account_brand/security/res_partner_account_brand.xml)**
- Security groups, categories, and XML-based rules
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon account_brand
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,43 @@
[project]
name = "odoo-bringout-oca-brand-account_brand"
version = "16.0.0"
description = "Account Brand - Send branded invoices and refunds"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-account>=16.0.0",
"odoo-bringout-oca-brand-brand>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["account_brand"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]