Initial commit: OCA Edi packages (42 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:05 +02:00
commit df976c03db
2184 changed files with 571602 additions and 0 deletions

View file

@ -0,0 +1,44 @@
# Base eBill Payment Contract
Odoo addon: base_ebill_payment_contract
## Installation
```bash
pip install odoo-bringout-oca-edi-framework-base_ebill_payment_contract
```
## Dependencies
This addon depends on:
- account_invoice_transmit_method
## Manifest Information
- **Name**: Base eBill Payment Contract
- **Version**: 16.0.1.0.2
- **Category**: N/A
- **License**: AGPL-3
- **Installable**: False
## Source
Based on [OCA/edi-framework](https://github.com/OCA/edi-framework) branch 16.0, addon `base_ebill_payment_contract`.
## 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,103 @@
===========================
Base eBill Payment Contract
===========================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:305c1c00d3de8d5ef06c54ff8bad41c5051a5ad6725e4095da4399e76b8f3881
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Fedi-lightgray.png?logo=github
:target: https://github.com/OCA/edi/tree/16.0/base_ebill_payment_contract
:alt: OCA/edi
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/edi-16-0/edi-16-0-base_ebill_payment_contract
: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/edi&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
The goal of this module is to be a common ground for ebilling addons.
It adds an ebill.payment.contract attached to a partner.
Alone this module has no purpose. It needs to be installed with a module that implements a specific ebilling system.
This depending module has to implement his own 'transmit.method'.
**Table of contents**
.. contents::
:local:
Usage
=====
To use this module, you need to:
#. Install a specific e-billing module
(None are ready, yet)
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/edi/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/edi/issues/new?body=module:%20base_ebill_payment_contract%0Aversion:%2016.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
~~~~~~~
* Camptocamp
Contributors
~~~~~~~~~~~~
* Thierry Ducrest <thierry.ducrest@camptocamp.com>
* Phuc Tran Thanh <phuc@trobz.com>
Other credits
~~~~~~~~~~~~~
The development of this module has been financially supported by:
* Camptocamp
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-TDu| image:: https://github.com/TDu.png?size=40px
:target: https://github.com/TDu
:alt: TDu
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-TDu|
This module is part of the `OCA/edi <https://github.com/OCA/edi/tree/16.0/base_ebill_payment_contract>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,17 @@
# Copyright 2020 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Base eBill Payment Contract",
"summary": """
Base for managing e-billing contracts""",
"version": "16.0.1.0.2",
"development_status": "Beta",
"license": "AGPL-3",
"author": "Camptocamp,Odoo Community Association (OCA)",
"maintainers": ["TDu"],
"website": "https://github.com/OCA/edi",
"depends": ["account_invoice_transmit_method"],
"data": ["security/ir.model.access.csv", "views/ebill_payment_contract.xml"],
"demo": ["demo/ebill_payment_contract.xml"],
}

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record model="ebill.payment.contract" id="ebill_payment_contract_demo_1">
<field name="transmit_method_id" ref="account_invoice_transmit_method.mail" />
<field name="state">draft</field>
<field name="partner_id" ref="base.res_partner_12" />
</record>
<record model="ebill.payment.contract" id="ebill_payment_contract_demo_2">
<field name="transmit_method_id" ref="account_invoice_transmit_method.mail" />
<field name="state">open</field>
<field name="partner_id" ref="base.res_partner_12" />
</record>
</odoo>

View file

@ -0,0 +1,116 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_ebill_payment_contract
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__cancel
msgid "Cancel"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model,name:base_ebill_payment_contract.model_res_partner
msgid "Contact"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__create_uid
msgid "Created by"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__create_date
msgid "Created on"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__partner_id
msgid "Customer"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__display_name
msgid "Display Name"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__draft
msgid "Draft"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__date_end
msgid "End date"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__id
msgid "ID"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__is_valid
msgid "Is Valid"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract____last_update
msgid "Last Modified on"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__write_uid
msgid "Last Updated by"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__write_date
msgid "Last Updated on"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__name
msgid "Name"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__open
msgid "Open"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__transmit_method_id
msgid "Service Name"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__date_start
msgid "Start date"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__state
msgid "State"
msgstr ""
#. module: base_ebill_payment_contract
#: model_terms:ir.ui.view,arch_db:base_ebill_payment_contract.ebill_payment_contract_search_view
msgid "Valid"
msgstr ""
#. module: base_ebill_payment_contract
#: model:ir.actions.act_window,name:base_ebill_payment_contract.ebill_payment_contract_act_window
#: model:ir.model,name:base_ebill_payment_contract.model_ebill_payment_contract
#: model:ir.ui.menu,name:base_ebill_payment_contract.ebill_payment_contract_menu
msgid "eBill Payment Contract"
msgstr ""

View file

@ -0,0 +1,116 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_ebill_payment_contract
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__cancel
msgid "Cancel"
msgstr "Otkaži"
#. module: base_ebill_payment_contract
#: model:ir.model,name:base_ebill_payment_contract.model_res_partner
msgid "Contact"
msgstr "Kontakt"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__partner_id
msgid "Customer"
msgstr "Kupac"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__draft
msgid "Draft"
msgstr "U pripremi"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__date_end
msgid "End date"
msgstr "Završni datum"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__id
msgid "ID"
msgstr "ID"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__is_valid
msgid "Is Valid"
msgstr "Ispravan"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__name
msgid "Name"
msgstr "Naziv:"
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__open
msgid "Open"
msgstr "Otvori"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__transmit_method_id
msgid "Service Name"
msgstr "Naziv usluge"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__date_start
msgid "Start date"
msgstr "Početni datum"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__state
msgid "State"
msgstr "Status"
#. module: base_ebill_payment_contract
#: model_terms:ir.ui.view,arch_db:base_ebill_payment_contract.ebill_payment_contract_search_view
msgid "Valid"
msgstr "Odobreno"
#. module: base_ebill_payment_contract
#: model:ir.actions.act_window,name:base_ebill_payment_contract.ebill_payment_contract_act_window
#: model:ir.model,name:base_ebill_payment_contract.model_ebill_payment_contract
#: model:ir.ui.menu,name:base_ebill_payment_contract.ebill_payment_contract_menu
msgid "eBill Payment Contract"
msgstr "eBill ugovor o plaćanju"

View file

@ -0,0 +1,122 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_ebill_payment_contract
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-20 22:34+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\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.17\n"
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__cancel
msgid "Cancel"
msgstr "Cancelar"
#. module: base_ebill_payment_contract
#: model:ir.model,name:base_ebill_payment_contract.model_res_partner
msgid "Contact"
msgstr "Contacto"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__create_date
msgid "Created on"
msgstr "Creado el"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__partner_id
msgid "Customer"
msgstr "Cliente"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__display_name
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_res_partner__display_name
msgid "Display Name"
msgstr "Mostrar Nombre"
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__draft
msgid "Draft"
msgstr "Borrador"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__date_end
msgid "End date"
msgstr "Fecha Final"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__id
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_res_partner__id
msgid "ID"
msgstr "ID"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__is_valid
msgid "Is Valid"
msgstr "Es Válido"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract____last_update
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_res_partner____last_update
msgid "Last Modified on"
msgstr "Última modificación el"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__write_uid
msgid "Last Updated by"
msgstr "Última Actualización por"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__write_date
msgid "Last Updated on"
msgstr "Última Actualización el"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__name
msgid "Name"
msgstr "Nombre"
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__open
msgid "Open"
msgstr "Abrir"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__transmit_method_id
msgid "Service Name"
msgstr "Nombre del Servicio"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__date_start
msgid "Start date"
msgstr "Fecha Inicio"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__state
msgid "State"
msgstr "Estado"
#. module: base_ebill_payment_contract
#: model_terms:ir.ui.view,arch_db:base_ebill_payment_contract.ebill_payment_contract_search_view
msgid "Valid"
msgstr "Válido"
#. module: base_ebill_payment_contract
#: model:ir.actions.act_window,name:base_ebill_payment_contract.ebill_payment_contract_act_window
#: model:ir.model,name:base_ebill_payment_contract.model_ebill_payment_contract
#: model:ir.ui.menu,name:base_ebill_payment_contract.ebill_payment_contract_menu
msgid "eBill Payment Contract"
msgstr "Contrato de pago de facturas electrónicas"

View file

@ -0,0 +1,119 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_ebill_payment_contract
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-08-23 12: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: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__cancel
msgid "Cancel"
msgstr "Annulla"
#. module: base_ebill_payment_contract
#: model:ir.model,name:base_ebill_payment_contract.model_res_partner
msgid "Contact"
msgstr "Contatto"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__create_date
msgid "Created on"
msgstr "Creato il"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__partner_id
msgid "Customer"
msgstr "Cliente"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__draft
msgid "Draft"
msgstr "Bozza"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__date_end
msgid "End date"
msgstr "Data fine"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__id
msgid "ID"
msgstr "ID"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__is_valid
msgid "Is Valid"
msgstr "È valido"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__name
msgid "Name"
msgstr "Nome"
#. module: base_ebill_payment_contract
#: model:ir.model.fields.selection,name:base_ebill_payment_contract.selection__ebill_payment_contract__state__open
msgid "Open"
msgstr "Aperto"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__transmit_method_id
msgid "Service Name"
msgstr "Nome servizio"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__date_start
msgid "Start date"
msgstr "Data inizio"
#. module: base_ebill_payment_contract
#: model:ir.model.fields,field_description:base_ebill_payment_contract.field_ebill_payment_contract__state
msgid "State"
msgstr "Stato"
#. module: base_ebill_payment_contract
#: model_terms:ir.ui.view,arch_db:base_ebill_payment_contract.ebill_payment_contract_search_view
msgid "Valid"
msgstr "Valido"
#. module: base_ebill_payment_contract
#: model:ir.actions.act_window,name:base_ebill_payment_contract.ebill_payment_contract_act_window
#: model:ir.model,name:base_ebill_payment_contract.model_ebill_payment_contract
#: model:ir.ui.menu,name:base_ebill_payment_contract.ebill_payment_contract_menu
msgid "eBill Payment Contract"
msgstr "Contratto pagamento e-fattura"

View file

@ -0,0 +1,2 @@
from . import res_partner
from . import ebill_payment_contract

View file

@ -0,0 +1,70 @@
# Copyright 2020 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class EbillPaymentContract(models.Model):
_name = "ebill.payment.contract"
_description = "eBill Payment Contract"
transmit_method_id = fields.Many2one(
comodel_name="transmit.method",
string="Service Name",
ondelete="restrict",
)
partner_id = fields.Many2one(
comodel_name="res.partner", required=True, string="Customer"
)
name = fields.Char(related="partner_id.name")
date_start = fields.Date(
string="Start date",
required=True,
default=fields.Date.today,
)
date_end = fields.Date(string="End date")
state = fields.Selection(
selection=[("draft", "Draft"), ("open", "Open"), ("cancel", "Cancel")],
required=True,
default="draft",
)
is_valid = fields.Boolean(compute="_compute_is_valid", search="_search_is_valid")
@api.onchange("state")
def _onchange_state(self):
"""Change the end date if contract is canceled."""
if self.state == "cancel" and self.date_end > fields.Date.today():
self.date_end = fields.Date.today()
@api.depends("state", "date_start", "date_end")
def _compute_is_valid(self):
"""Check that the contract is valid
It is valid if the contract is opened and its start date is in the past
And his end date is in the future or not set.
"""
today = fields.Date.today()
for contract in self:
contract.is_valid = (
contract.state == "open"
and contract.date_start
and contract.date_start <= today
and (not contract.date_end or contract.date_end >= today)
)
def _search_is_valid(self, operator, value):
now = fields.Date.today()
domain = [
("state", "=", "open"),
("date_start", "<=", now),
"|",
("date_end", "=", False),
("date_end", ">=", now),
]
valid_contract = self.search(domain)
if (operator == "=" and value) or (operator == "!=" and not value):
new_operator = "in"
else:
new_operator = "not in"
return [("id", new_operator, valid_contract.ids)]

View file

@ -0,0 +1,33 @@
# Copyright 2019 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import logging
from odoo import models
from odoo.osv.expression import AND
_logger = logging.getLogger(__name__)
class ResPartner(models.Model):
_inherit = "res.partner"
def get_active_contract(self, transmit_method, domain=None):
"""Return the active contract for a specific transmit method."""
self.ensure_one()
base_domain = [
("is_valid", "=", True),
("partner_id", "=", self.id),
("transmit_method_id", "=", transmit_method.id),
]
contract = self.env["ebill.payment.contract"].search(
AND([domain or [], base_domain]), limit=1
)
if not contract:
_logger.error(
"eBill contract for {} on {} not found".format(
self.name, transmit_method.name
)
)
return contract

View file

@ -0,0 +1,2 @@
* Thierry Ducrest <thierry.ducrest@camptocamp.com>
* Phuc Tran Thanh <phuc@trobz.com>

View file

@ -0,0 +1,3 @@
The development of this module has been financially supported by:
* Camptocamp

View file

@ -0,0 +1,4 @@
The goal of this module is to be a common ground for ebilling addons.
It adds an ebill.payment.contract attached to a partner.
Alone this module has no purpose. It needs to be installed with a module that implements a specific ebilling system.
This depending module has to implement his own 'transmit.method'.

View file

@ -0,0 +1,4 @@
To use this module, you need to:
#. Install a specific e-billing module
(None are ready, yet)

View file

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_ebill_payment_contract_read,Read access on ebill.payment.contract to everybody,model_ebill_payment_contract,,1,0,0,0
access_ebill_payment_contract_full,Full access on ebill.payment.contract to Financial Manager,model_ebill_payment_contract,account.group_account_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_ebill_payment_contract_read Read access on ebill.payment.contract to everybody model_ebill_payment_contract 1 0 0 0
3 access_ebill_payment_contract_full Full access on ebill.payment.contract to Financial Manager model_ebill_payment_contract account.group_account_manager 1 1 1 1

View file

@ -0,0 +1,446 @@
<!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>Base eBill Payment Contract</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="base-ebill-payment-contract">
<h1 class="title">Base eBill Payment Contract</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:305c1c00d3de8d5ef06c54ff8bad41c5051a5ad6725e4095da4399e76b8f3881
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/edi/tree/16.0/base_ebill_payment_contract"><img alt="OCA/edi" src="https://img.shields.io/badge/github-OCA%2Fedi-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/edi-16-0/edi-16-0-base_ebill_payment_contract"><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/edi&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>The goal of this module is to be a common ground for ebilling addons.
It adds an ebill.payment.contract attached to a partner.
Alone this module has no purpose. It needs to be installed with a module that implements a specific ebilling system.
This depending module has to implement his own transmit.method.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#other-credits" id="toc-entry-6">Other credits</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<p>To use this module, you need to:</p>
<ol class="arabic simple">
<li>Install a specific e-billing module
(None are ready, yet)</li>
</ol>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/edi/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/edi/issues/new?body=module:%20base_ebill_payment_contract%0Aversion:%2016.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-3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<ul class="simple">
<li>Camptocamp</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<ul class="simple">
<li>Thierry Ducrest &lt;<a class="reference external" href="mailto:thierry.ducrest&#64;camptocamp.com">thierry.ducrest&#64;camptocamp.com</a>&gt;</li>
<li>Phuc Tran Thanh &lt;<a class="reference external" href="mailto:phuc&#64;trobz.com">phuc&#64;trobz.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="other-credits">
<h2><a class="toc-backref" href="#toc-entry-6">Other credits</a></h2>
<p>The development of this module has been financially supported by:</p>
<ul class="simple">
<li>Camptocamp</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-7">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">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/TDu"><img alt="TDu" src="https://github.com/TDu.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/edi/tree/16.0/base_ebill_payment_contract">OCA/edi</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 @@
from . import test_base_ebill_payment_contract

View file

@ -0,0 +1,70 @@
# Copyright 2020 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from datetime import date, timedelta
from odoo.tests.common import Form, SingleTransactionCase
class TestBaseEbillPaymentContract(SingleTransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.contract1 = cls.env.ref(
"base_ebill_payment_contract.ebill_payment_contract_demo_1"
)
cls.partner = cls.contract1.partner_id
cls.method_post = cls.env.ref("account_invoice_transmit_method.post")
def test_contract_validity(self):
self.contract1.state = "open"
# Contract starting today
self.contract1.date_start = date.today()
self.contract1.date_end = date.today() + timedelta(days=10)
self.assertTrue(self.contract1.is_valid)
# Contract finishing tomorrow
self.contract1.date_start = date.today() - timedelta(days=100)
self.contract1.date_end = date.today()
self.assertTrue(self.contract1.is_valid)
# Contract with no end date
self.contract1.date_start = date.today() - timedelta(days=100)
self.contract1.date_end = None
self.assertTrue(self.contract1.is_valid)
def test_contract_is_not_valid(self):
self.contract1.state = "draft"
self.assertFalse(self.contract1.is_valid)
self.contract1.state = "cancel"
self.assertFalse(self.contract1.is_valid)
self.contract1.state = "open"
# Contract in the past
self.contract1.date_start = date.today() - timedelta(days=5)
self.contract1.date_end = date.today() - timedelta(days=1)
self.assertFalse(self.contract1.is_valid)
# Contract in the future
self.contract1.date_start = date.today() + timedelta(days=1)
self.contract1.date_end = date.today() + timedelta(days=5)
self.assertFalse(self.contract1.is_valid)
# Contract in the future with no end date
self.contract1.date_start = date.today() + timedelta(days=1)
self.contract1.date_end = None
self.assertFalse(self.contract1.is_valid)
def test_contract_canceled(self):
"""Check end date when contract is canceled."""
self.contract1.date_start = date.today() - timedelta(days=6)
self.contract1.date_end = date.today() + timedelta(days=6)
self.contract1.state = "open"
with Form(self.contract1) as uiform:
uiform.state = "cancel"
self.assertEqual(date.today(), self.contract1.date_end)
def test_contract_valid_different_transmition_method(self):
self.contract1.state = "open"
self.contract1.date_start = date.today()
self.contract1.date_end = date.today() + timedelta(days=10)
self.assertTrue(self.contract1.is_valid)
self.assertTrue(
self.partner.get_active_contract(self.contract1.transmit_method_id)
)
self.assertFalse(self.partner.get_active_contract(self.method_post))

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2020 Camptocamp SA
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="ebill_payment_contract_form_view">
<field name="name">ebill.payment.contract.form</field>
<field name="model">ebill.payment.contract</field>
<field name="arch" type="xml">
<form>
<sheet>
<group name="main">
<field name="transmit_method_id" />
<field name="state" />
<field name="date_start" />
<field name="date_end" />
<field name="partner_id" />
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="ebill_payment_contract_search_view">
<field name="name">ebill.payment.contract.search</field>
<field name="model">ebill.payment.contract</field>
<field name="arch" type="xml">
<search>
<field name="transmit_method_id" />
<field name="partner_id" />
<filter
name="is_valid"
string="Valid"
domain="[('is_valid', '=', True)]"
/>
</search>
</field>
</record>
<record model="ir.ui.view" id="ebill_payment_contract_tree_view">
<field name="name">ebill.payment.contract.tree</field>
<field name="model">ebill.payment.contract</field>
<field name="arch" type="xml">
<tree>
<field name="transmit_method_id" />
<field name="partner_id" />
<field name="state" />
<field name="date_start" />
<field name="date_end" />
<field name="is_valid" invisible="1" />
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="ebill_payment_contract_act_window">
<field name="name">eBill Payment Contract</field>
<field name="res_model">ebill.payment.contract</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="context">{}</field>
</record>
<record model="ir.ui.menu" id="ebill_payment_contract_menu">
<field name="name">eBill Payment Contract</field>
<field name="parent_id" ref="account.menu_finance_receivables" />
<field name="action" ref="ebill_payment_contract_act_window" />
<field name="sequence" eval="16" />
</record>
</odoo>

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 Base_ebill_payment_contract Module - base_ebill_payment_contract
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 base_ebill_payment_contract. 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,5 @@
# Dependencies
This addon depends on:
- [account_invoice_transmit_method](../../odoo-bringout-oca-account-invoicing-account_invoice_transmit_method)

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 base_ebill_payment_contract or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-edi-framework-base_ebill_payment_contract"
# or
uv pip install odoo-bringout-oca-edi-framework-base_ebill_payment_contract"
```

View file

@ -0,0 +1,13 @@
# Models
Detected core models and extensions in base_ebill_payment_contract.
```mermaid
classDiagram
class ebill_payment_contract
class res_partner
```
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: base_ebill_payment_contract. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon base_ebill_payment_contract
- License: LGPL-3

View file

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

View file

@ -0,0 +1,34 @@
# Security
Access control and security definitions in base_ebill_payment_contract.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../base_ebill_payment_contract/security/ir.model.access.csv)**
- 2 model access rules
## Record Rules
Row-level security rules defined in:
```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:
- **[ir.model.access.csv](../base_ebill_payment_contract/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
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 base_ebill_payment_contract
```

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-edi-framework-base_ebill_payment_contract"
version = "16.0.0"
description = "Base eBill Payment Contract -
Base for managing e-billing contracts"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-edi-framework-account_invoice_transmit_method>=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 = ["base_ebill_payment_contract"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]