Skip to content

Commit

Permalink
[MIG]pos_customer_required_fields: Migration to 16.0
Browse files Browse the repository at this point in the history
  • Loading branch information
LaetitiaElabore committed Oct 1, 2024
1 parent 6f40e7a commit 2f8a739
Show file tree
Hide file tree
Showing 25 changed files with 1,041 additions and 0 deletions.
121 changes: 121 additions & 0 deletions pos_customer_required_fields/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
========================================
Point Of Sale - Customer required fields
========================================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:5e1195e22d1cb20ca6b0ced42d6ae852966f3e8817a742d5e9c193708fd1b3ef
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Fpos-lightgray.png?logo=github
:target: https://github.com/OCA/pos/tree/16.0/pos_customer_required_fields
:alt: OCA/pos
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_customer_required_fields
: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/pos&target_branch=16.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module enforce users to properly define customer fields
created from point of sale or used in pos order.

From PoS config you will be able to define required fields.

Using this module without `pos_customer_required` module you are
still able to create PoS order without customer.

**Table of contents**

.. contents::
:local:

Configuration
=============

To define customer required field on PoS UI:

#. Go to any PoS configuration *Point of Sale > Configuration > Point of Sale*.
#. Edit Partner required fields.

.. warning::

Make sure to choose only `res.partner`'s fields present on the PoS UI.

Usage
=====

To create or edit partner from PoS

#. Open PoS session
#. Click on client button
#. required filed are highlight (in green)

.. figure:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_customer_required_fields/static/description/pos_edit_customer.png

If you choose an existing partner with missing informations
while validating the payment you will be ask to collect missing
customer informations.

.. figure:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_customer_required_fields/static/description/pos_customer_missing_fields.png

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/pos/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/pos/issues/new?body=module:%20pos_customer_required_fields%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
~~~~~~~

* Pierre Verkest

Contributors
~~~~~~~~~~~~

`Moka Tourisme <https://www.mokatourisme.fr>`_

* Pierre Verkest <[email protected]>

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-petrus-v| image:: https://github.com/petrus-v.png?size=40px
:target: https://github.com/petrus-v
:alt: petrus-v

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-petrus-v|

This module is part of the `OCA/pos <https://github.com/OCA/pos/tree/16.0/pos_customer_required_fields>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
4 changes: 4 additions & 0 deletions pos_customer_required_fields/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright 2022 Moka Tourisme (https://www.mokatourisme.fr).
# @author Pierre Verkest <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import models
32 changes: 32 additions & 0 deletions pos_customer_required_fields/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Copyright 2022 Moka Tourisme (https://www.mokatourisme.fr).
# @author Pierre Verkest <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Point Of Sale - Customer required fields",
"summary": "Define customer required field used in PoS order.",
"version": "16.0.1.0.0",
"category": "Point of Sale",
"author": "Pierre Verkest, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/pos",
"license": "AGPL-3",
"maintainers": [
"petrus-v",
],
"depends": [
"point_of_sale",
"base",
"base_setup",
],
"data": [
"views/view_pos_config.xml",
],
"assets": {
"point_of_sale.assets": [
"pos_customer_required_fields/static/src/xml/PartnerDetailsEdit.xml",
"pos_customer_required_fields/static/src/js/PartnerDetailsEdit.js",
"pos_customer_required_fields/static/src/css/pos.css",
]
},
"demo": [],
"installable": True,
}
82 changes: 82 additions & 0 deletions pos_customer_required_fields/i18n/fr.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_customer_required_fields
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-01 11:34+0000\n"
"PO-Revision-Date: 2024-10-01 11:34+0000\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: pos_customer_required_fields
#: model:ir.model,name:pos_customer_required_fields.model_res_config_settings
msgid "Config Settings"
msgstr "Paramètres de configuration"

#. module: pos_customer_required_fields
#: model:ir.model,name:pos_customer_required_fields.model_res_partner
msgid "Contact"
msgstr ""

#. module: pos_customer_required_fields
#. odoo-python
#: code:addons/pos_customer_required_fields/models/res_partner.py:0
#, python-format
msgid "Following required field(s) is/are not set: %s."
msgstr "Le(s) champ(s) requis suivant n'est/ne sont pas renseigné(s) : %s."

#. module: pos_customer_required_fields
#: model:ir.model.fields,help:pos_customer_required_fields.field_pos_config__res_partner_required_fields_ids
#: model:ir.model.fields,help:pos_customer_required_fields.field_res_config_settings__pos_res_partner_required_fields_ids
msgid ""
"List of fields that are required while creating or updating a res partner "
"from the point of sale."
msgstr ""
"Champs obligatoire lors de la création/modification d'un contact depuis le "
"point de vente (choisir uniquement parmis les champs disponible dans "
"l'interface)."

#. module: pos_customer_required_fields
#: model:ir.model.fields,field_description:pos_customer_required_fields.field_pos_config__res_partner_required_fields_ids
#: model:ir.model.fields,field_description:pos_customer_required_fields.field_res_config_settings__pos_res_partner_required_fields_ids
#: model_terms:ir.ui.view,arch_db:pos_customer_required_fields.pos_config_view_form
msgid "Partner required fields"
msgstr "Contact (client): champs requis"

#. module: pos_customer_required_fields
#: model:ir.model.fields,field_description:pos_customer_required_fields.field_pos_config__res_partner_required_fields_names
#: model:ir.model.fields,field_description:pos_customer_required_fields.field_res_config_settings__pos_res_partner_required_fields_names
msgid "Partner required fields names"
msgstr "Nom technique des champs requis"

#. module: pos_customer_required_fields
#: model:ir.model,name:pos_customer_required_fields.model_pos_config
msgid "Point of Sale Configuration"
msgstr "Paramétrage du point de vente"

#. module: pos_customer_required_fields
#: model:ir.model.fields,help:pos_customer_required_fields.field_pos_config__res_partner_required_fields_names
#: model:ir.model.fields,help:pos_customer_required_fields.field_res_config_settings__pos_res_partner_required_fields_names
msgid "Technical fields to avoid adding ir.model.fields in pos model"
msgstr "Champ technique utilisé dans l'interface du point de vente"

#. module: pos_customer_required_fields
#: model_terms:ir.ui.view,arch_db:pos_customer_required_fields.pos_config_view_form
msgid ""
"This ensure following fields are set in partner while\n"
" creating from the pos order.\n"
"\n"
" Also if user pick an existing partner created in the\n"
" backend without that field, user will be prompt to\n"
" add that information."
msgstr ""
"Permet de verifier que l'ensemble des champs suivant sont définis sur les "
"clients des commandes de point de vente ainsi qu'à l'édition ou création des"
" clients depuis le point de vente."
4 changes: 4 additions & 0 deletions pos_customer_required_fields/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# from . import res_partner
from . import res_config_settings
from . import pos_config
from . import res_partner
31 changes: 31 additions & 0 deletions pos_customer_required_fields/models/pos_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Copyright 2022 Moka Tourisme (https://www.mokatourisme.fr).
# @author Pierre Verkest <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models


class PosConfig(models.Model):
_inherit = "pos.config"

res_partner_required_fields_ids = fields.Many2many(
"ir.model.fields",
string="Partner required fields",
domain=[("model", "=", "res.partner")],
help=(
"List of fields that are required while creating "
"or updating a res partner from the point of sale."
),
)
res_partner_required_fields_names = fields.Char(
string="Partner required fields names",
compute="_compute_res_partner_required_fields_names",
help="Technical fields to avoid adding ir.model.fields in pos model",
store=True,
)

@api.depends("res_partner_required_fields_ids")
def _compute_res_partner_required_fields_names(self):
for config in self:
config.res_partner_required_fields_names = ",".join(
config.res_partner_required_fields_ids.mapped("name")
)
19 changes: 19 additions & 0 deletions pos_customer_required_fields/models/res_config_settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2022 Moka Tourisme (https://www.mokatourisme.fr).
# @author Pierre Verkest <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models


class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"

pos_res_partner_required_fields_ids = fields.Many2many(
related="pos_config_id.res_partner_required_fields_ids",
string="Partner required fields",
readonly=False,
)
pos_res_partner_required_fields_names = fields.Char(
related="pos_config_id.res_partner_required_fields_names",
string="Partner required fields names",
readonly=False,
)
27 changes: 27 additions & 0 deletions pos_customer_required_fields/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Copyright 2022 Moka Tourisme (https://www.mokatourisme.fr).
# @author Pierre Verkest <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, api, models
from odoo.exceptions import ValidationError


class ResPartner(models.Model):
_inherit = "res.partner"

@api.model
def create_from_ui(self, partner_data):
"""Ensure all fields required pos session fields to be set."""
pos_config_id = partner_data.pop("pos_config_id")
partner_id = super().create_from_ui(partner_data)
partner = self.browse(partner_id)
pos_config = self.env["pos.config"].browse(int(pos_config_id))
missing_fields = []
for field in pos_config.res_partner_required_fields_ids:
if not getattr(partner, field.name):
missing_fields.append(field.field_description)
if missing_fields:
raise ValidationError(
_("Following required field(s) is/are not set: %s.")
% ", ".join(missing_fields)
)
return partner_id
8 changes: 8 additions & 0 deletions pos_customer_required_fields/readme/CONFIGURE.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
To define customer required field on PoS UI:

#. Go to any PoS configuration *Point of Sale > Configuration > Point of Sale*.
#. Edit Partner required fields.

.. warning::

Make sure to choose only `res.partner`'s fields present on the PoS UI.
3 changes: 3 additions & 0 deletions pos_customer_required_fields/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
`Moka Tourisme <https://www.mokatourisme.fr>`_

* Pierre Verkest <[email protected]>
7 changes: 7 additions & 0 deletions pos_customer_required_fields/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
This module enforce users to properly define customer fields
created from point of sale or used in pos order.

From PoS config you will be able to define required fields.

Using this module without `pos_customer_required` module you are
still able to create PoS order without customer.
13 changes: 13 additions & 0 deletions pos_customer_required_fields/readme/USAGE.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
To create or edit partner from PoS

#. Open PoS session
#. Click on client button
#. required filed are highlight (in green)

.. figure:: ../static/description/pos_edit_customer.png

If you choose an existing partner with missing informations
while validating the payment you will be ask to collect missing
customer informations.

.. figure:: ../static/description/pos_customer_missing_fields.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 2f8a739

Please sign in to comment.