summaryrefslogtreecommitdiff
path: root/addons/account_check_printing/wizard
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/account_check_printing/wizard
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/account_check_printing/wizard')
-rw-r--r--addons/account_check_printing/wizard/__init__.py4
-rw-r--r--addons/account_check_printing/wizard/print_prenumbered_checks.py30
-rw-r--r--addons/account_check_printing/wizard/print_prenumbered_checks_views.xml22
3 files changed, 56 insertions, 0 deletions
diff --git a/addons/account_check_printing/wizard/__init__.py b/addons/account_check_printing/wizard/__init__.py
new file mode 100644
index 00000000..2cdbcdb8
--- /dev/null
+++ b/addons/account_check_printing/wizard/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import print_prenumbered_checks
diff --git a/addons/account_check_printing/wizard/print_prenumbered_checks.py b/addons/account_check_printing/wizard/print_prenumbered_checks.py
new file mode 100644
index 00000000..84d4f10a
--- /dev/null
+++ b/addons/account_check_printing/wizard/print_prenumbered_checks.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+import re
+from odoo import api, fields, models, _
+from odoo.exceptions import ValidationError
+
+
+class PrintPreNumberedChecks(models.TransientModel):
+ _name = 'print.prenumbered.checks'
+ _description = 'Print Pre-numbered Checks'
+
+ next_check_number = fields.Char('Next Check Number', required=True)
+
+ @api.constrains('next_check_number')
+ def _check_next_check_number(self):
+ for check in self:
+ if check.next_check_number and not re.match(r'^[0-9]+$', check.next_check_number):
+ raise ValidationError(_('Next Check Number should only contains numbers.'))
+
+ def print_checks(self):
+ check_number = int(self.next_check_number)
+ number_len = len(self.next_check_number or "")
+ payments = self.env['account.payment'].browse(self.env.context['payment_ids'])
+ payments.filtered(lambda r: r.state == 'draft').action_post()
+ payments.filtered(lambda r: r.state == 'posted' and not r.is_move_sent).write({'is_move_sent': True})
+ for payment in payments:
+ payment.check_number = '%0{}d'.format(number_len) % check_number
+ check_number += 1
+ return payments.do_print_checks()
diff --git a/addons/account_check_printing/wizard/print_prenumbered_checks_views.xml b/addons/account_check_printing/wizard/print_prenumbered_checks_views.xml
new file mode 100644
index 00000000..b593440c
--- /dev/null
+++ b/addons/account_check_printing/wizard/print_prenumbered_checks_views.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" ?>
+<odoo>
+
+ <record id="print_pre_numbered_checks_view" model="ir.ui.view">
+ <field name="name">Print Pre-numbered Checks</field>
+ <field name="model">print.prenumbered.checks</field>
+ <field name="arch" type="xml">
+ <form string="Print Pre-numbered Checks">
+ <p>Please enter the number of the first pre-printed check that you are about to print on.</p>
+ <p>This will allow to save on payments the number of the corresponding check.</p>
+ <group>
+ <field name="next_check_number"/>
+ </group>
+ <footer>
+ <button name="print_checks" string="Print" type="object" class="oe_highlight"/>
+ <button string="Cancel" class="btn btn-secondary" special="cancel"/>
+ </footer>
+ </form>
+ </field>
+ </record>
+
+</odoo>