Skip to content

Commit

Permalink
[MIG] pos_payment_change: Migration to 17.0
Browse files Browse the repository at this point in the history
  • Loading branch information
sylvainvh committed Nov 20, 2024
1 parent ac8c084 commit c7e1b22
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 77 deletions.
2 changes: 1 addition & 1 deletion pos_payment_change/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Point Of Sale - Change Payments",
"version": "16.0.1.0.4",
"version": "17.0.1.0.0",
"summary": "Allow cashier to change order payments, as long as"
" the session is not closed.",
"category": "Point Of Sale",
Expand Down
65 changes: 30 additions & 35 deletions pos_payment_change/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@

/*
:Author: David Goodger ([email protected])
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
: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.
Expand Down Expand Up @@ -274,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }

pre.code .ln { color: grey; } /* line numbers */
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 }
Expand All @@ -300,7 +301,7 @@
span.pre {
white-space: pre }

span.problematic {
span.problematic, pre.problematic {
color: red }

span.section-subtitle {
Expand Down Expand Up @@ -368,12 +369,12 @@ <h1 class="title">Point Of Sale - Change Payments</h1>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:f92dd72ac053a86a8837e2a670cfa091391cadb66e6e3b45553b3b34f8d76400
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/pos/tree/16.0/pos_payment_change"><img alt="OCA/pos" src="https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_payment_change"><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/pos&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><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/pos/tree/17.0/pos_payment_change"><img alt="OCA/pos" src="https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/pos-17-0/pos-17-0-pos_payment_change"><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/pos&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module extends the functionnality of the Odoo Point of Sale to
allow the cashier to change the payments of a PoS order.</p>
<p>This feature is usefull when the user realized that he did a mistake,
just after he marked the order as paid, or during the close of the session,
Only if entries has not been generated.</p>
just after he marked the order as paid, or during the close of the
session, Only if entries has not been generated.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
Expand All @@ -394,22 +395,18 @@ <h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
<ul class="simple">
<li>Go to Point of Sale.</li>
<li>Choose the view list.</li>
<li>Edit your point of sale, and select a value for the field
‘Payment Change Policy’.</li>
<li>Edit your point of sale, and select a value for the field ‘Payment
Change Policy’.</li>
</ul>
<p>Two options are available:</p>
<ul class="simple">
<li>‘Refund and Resale’: Odoo will refund the current
Pos Order to cancel it, and create a new PoS Order
with the correct payment lines</li>
<li>‘Refund and Resale’: Odoo will refund the current Pos Order to cancel
it, and create a new PoS Order with the correct payment lines</li>
<li>‘Update Payments’: Odoo will change payment lines.</li>
</ul>
<div class="figure">
<img alt="https://raw.githubusercontent.com/OCA/pos/16.0/pos_payment_change/static/description/pos_config_form.png" src="https://raw.githubusercontent.com/OCA/pos/16.0/pos_payment_change/static/description/pos_config_form.png" />
</div>
<p><strong>Note</strong>
In some countries the ‘Update Payments’ Option
is not allowed by law, because orders history shouldn’t not be altered.</p>
<p><img alt="image1" src="https://raw.githubusercontent.com/OCA/pos/17.0/pos_payment_change/static/description/pos_config_form.png" /></p>
<p><strong>Note</strong> In some countries the ‘Update Payments’ Option is not allowed
by law, because orders history shouldn’t not be altered.</p>
<p>For that purpose, a constrains is present to check the value of this
field. If the module <tt class="docutils literal">l10n_fr_certification</tt> is installed and if the
current company has an inalterable accounting, it will not be possible
Expand All @@ -421,32 +418,27 @@ <h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
<li>Go to a PoS Order</li>
<li>Click on the button ‘Change Payments’</li>
</ul>
<div class="figure">
<img alt="https://raw.githubusercontent.com/OCA/pos/16.0/pos_payment_change/static/description/pos_order_form.png" src="https://raw.githubusercontent.com/OCA/pos/16.0/pos_payment_change/static/description/pos_order_form.png" />
</div>
<p><img alt="Button Change Payment" src="https://raw.githubusercontent.com/OCA/pos/17.0/pos_payment_change/static/description/pos_order_form.png" /></p>
<ul class="simple">
<li>In the pop up wizard, select the real payment(s) that have been
used to pay the order</li>
<li>In the pop up wizard, select the real payment(s) that have been used
to pay the order</li>
</ul>
<div class="figure">
<img alt="https://raw.githubusercontent.com/OCA/pos/16.0/pos_payment_change/static/description/pos_payment_change_wizard_form.png" src="https://raw.githubusercontent.com/OCA/pos/16.0/pos_payment_change/static/description/pos_payment_change_wizard_form.png" />
</div>
<p><img alt="Button Open Wizard" src="https://raw.githubusercontent.com/OCA/pos/17.0/pos_payment_change/static/description/pos_payment_change_wizard_form.png" /></p>
<ul class="simple">
<li>Then click on the button ‘Change Payments’</li>
</ul>
<p><strong>Note</strong></p>
<p>If the option ‘Refund and Resale’ is selected, changing the payments will
display the three PoS orders. the oringal one, the refund one, and the new one.</p>
<div class="figure">
<img alt="https://raw.githubusercontent.com/OCA/pos/16.0/pos_payment_change/static/description/pos_order_tree.png" src="https://raw.githubusercontent.com/OCA/pos/16.0/pos_payment_change/static/description/pos_order_tree.png" />
</div>
<p>If the option ‘Refund and Resale’ is selected, changing the payments
will display the three PoS orders. the oringal one, the refund one, and
the new one.</p>
<p><img alt="New POS Payments Created" src="https://raw.githubusercontent.com/OCA/pos/17.0/pos_payment_change/static/description/pos_order_tree.png" /></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/pos/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/pos/issues/new?body=module:%20pos_payment_change%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/pos/issues/new?body=module:%20pos_payment_change%0Aversion:%2017.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">
Expand All @@ -470,20 +462,23 @@ <h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-7">Other credits</a></h2>
<p>The development of this module has been financially supported by:</p>
<ul class="simple">
<li>GRAP, Groupement Régional Alimentaire de proximité (www.grap.coop)</li>
<li>Vracoop (www.vracoop.fr)</li>
<li>GRAP, Groupement Régional Alimentaire de proximité
(<a class="reference external" href="http://www.grap.coop">www.grap.coop</a>)</li>
<li>Vracoop (<a class="reference external" href="http://www.vracoop.fr">www.vracoop.fr</a>)</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>
<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/legalsylvain"><img alt="legalsylvain" src="https://github.com/legalsylvain.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/pos/tree/16.0/pos_payment_change">OCA/pos</a> project on GitHub.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/pos/tree/17.0/pos_payment_change">OCA/pos</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>
Expand Down
25 changes: 9 additions & 16 deletions pos_payment_change/views/view_pos_config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,15 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
<field name="model">pos.config</field>
<field name="inherit_id" ref="point_of_sale.pos_config_view_form" />
<field name="arch" type="xml">
<xpath
expr="//div[hasclass('o_settings_container')][2]/div"
position="after"
>
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_right_pane">
<span class="o_form_label">Payment Change Policy</span>
<div class="content-group mt16">
<field
name="payment_change_policy"
colspan="4"
nolabel="1"
/>
</div>
</div>
</div>
<xpath expr="//setting[@id='other_devices']" position="before">
<setting
name="payment_change_policy_setting"
string="Payment Change Policy"
>
<label for="payment_change_policy" class="col-lg-4 o_light_label" />
<field name="payment_change_policy" />
</setting>

</xpath>
</field>
</record>
Expand Down
4 changes: 2 additions & 2 deletions pos_payment_change/views/view_pos_order.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
<button name="refund" position="before">
<button
name="%(action_pos_payment_change_wizard)d"
context="{'pos_session_id' : session_id}"
context="{'pos_order_id' : id}"
string="Change Payments"
type="action"
states="paid,invoiced"
invisible="state not in ('paid', 'invoiced')"
/>
</button>
</field>
Expand Down
14 changes: 11 additions & 3 deletions pos_payment_change/wizards/pos_payment_change_wizard.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ class PosPaymentChangeWizard(models.TransientModel):
_description = "PoS Payment Change Wizard"

# Column Section
order_id = fields.Many2one(comodel_name="pos.order", string="Order", readonly=True)
order_id = fields.Many2one(
comodel_name="pos.order",
string="Order",
readonly=True,
required=True,
ondelete="cascade",
)

old_line_ids = fields.One2many(
comodel_name="pos.payment.change.wizard.old.line",
Expand All @@ -27,14 +33,16 @@ class PosPaymentChangeWizard(models.TransientModel):
string="New Payment Lines",
)

amount_total = fields.Float(string="Total", readonly=True)
amount_total = fields.Float(
string="Total", readonly=True, related="order_id.amount_total"
)

# View Section
@api.model
def default_get(self, fields):
PosOrder = self.env["pos.order"]
res = super().default_get(fields)
order = PosOrder.browse(self._context.get("active_id"))
order = PosOrder.browse(self._context.get("pos_order_id"))
old_lines_vals = []
for payment in order.payment_ids:
old_lines_vals.append(
Expand Down
43 changes: 24 additions & 19 deletions pos_payment_change/wizards/pos_payment_change_wizard_new_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,14 @@ class PosPaymentChangeWizardLine(models.TransientModel):
comodel_name="pos.payment.method",
string="Payment Method",
required=True,
domain=lambda s: s._domain_new_payment_method_id(),
domain="[('id', 'in', available_payment_method_ids)]",
)

available_payment_method_ids = fields.Many2many(
comodel_name="pos.payment.method",
string="Available Payment Methods",
help="List of available payment methods for the current POS Order",
compute="_compute_available_payment_method_ids",
)

company_currency_id = fields.Many2one(
Expand All @@ -33,24 +40,22 @@ class PosPaymentChangeWizardLine(models.TransientModel):

amount = fields.Monetary(
required=True,
default=0.0,
currency_field="company_currency_id",
compute="_compute_amount",
store=True,
readonly=False,
)

@api.model
def _domain_new_payment_method_id(self):
PosOrder = self.env["pos.order"]
order = PosOrder.browse(self.env.context.get("active_id"))
return [("id", "in", order.mapped("session_id.payment_method_ids").ids)]

# View Section
@api.model
def default_get(self, fields):
res = super().default_get(fields)
if "new_line_ids" not in self._context:
return res
balance = self._context.get("amount_total", 0.0)
for line in self.wizard_id.old_line_ids:
balance -= line.get("amount")
res.update({"amount": balance})
return res
@api.depends("wizard_id")
def _compute_available_payment_method_ids(self):
for line in self:
line.available_payment_method_ids = (
line.wizard_id.order_id.session_id.payment_method_ids
)

@api.depends("wizard_id")
def _compute_amount(self):
for line in self:
line.amount = line.wizard_id.amount_total - sum(
old_line.amount for old_line in line.wizard_id.old_line_ids
)
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
<field name="arch" type="xml">
<form>
<group col="4">
<field name="order_id" />
<field name="order_id" force_save="1" />
<field name="amount_total" invisible="1" />
<field name="old_line_ids" colspan="4">
<tree>
<field name="old_payment_method_id" widget="selection" />
<field name="company_currency_id" column_invisible="1" />
<field name="amount" sum="Total" />
</tree>
</field>
Expand All @@ -28,6 +29,11 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
<tree editable="bottom">
<field name="new_payment_method_id" widget="selection" />
<field name="amount" sum="Total" />
<field name="company_currency_id" column_invisible="1" />
<field
name="available_payment_method_ids"
column_invisible="1"
/>
</tree>
</field>
</group>
Expand Down

0 comments on commit c7e1b22

Please sign in to comment.