From f428be93cc7db3e999c4c3c729f7cf611d1b34ab Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Tue, 13 Oct 2020 16:20:41 -0700 Subject: [PATCH] [ADD] sale_payment_web: for 13.0 --- sale_payment_web/__init__.py | 2 + sale_payment_web/__manifest__.py | 27 ++++ sale_payment_web/models/__init__.py | 2 + sale_payment_web/models/payment.py | 12 ++ sale_payment_web/models/sale.py | 16 +++ sale_payment_web/security/ir.model.access.csv | 2 + sale_payment_web/security/sale_security.xml | 9 ++ sale_payment_web/tests/__init__.py | 1 + sale_payment_web/tests/test_sale_payment.py | 23 ++++ sale_payment_web/views/sale_views.xml | 15 +++ sale_payment_web/wizard/__init__.py | 1 + .../wizard/account_payment_register.py | 120 ++++++++++++++++++ .../wizard/account_payment_register_views.xml | 17 +++ 13 files changed, 247 insertions(+) create mode 100644 sale_payment_web/__init__.py create mode 100755 sale_payment_web/__manifest__.py create mode 100644 sale_payment_web/models/__init__.py create mode 100644 sale_payment_web/models/payment.py create mode 100644 sale_payment_web/models/sale.py create mode 100644 sale_payment_web/security/ir.model.access.csv create mode 100644 sale_payment_web/security/sale_security.xml create mode 100644 sale_payment_web/tests/__init__.py create mode 100644 sale_payment_web/tests/test_sale_payment.py create mode 100644 sale_payment_web/views/sale_views.xml create mode 100644 sale_payment_web/wizard/__init__.py create mode 100644 sale_payment_web/wizard/account_payment_register.py create mode 100644 sale_payment_web/wizard/account_payment_register_views.xml diff --git a/sale_payment_web/__init__.py b/sale_payment_web/__init__.py new file mode 100644 index 00000000..9b429614 --- /dev/null +++ b/sale_payment_web/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/sale_payment_web/__manifest__.py b/sale_payment_web/__manifest__.py new file mode 100755 index 00000000..b60ca6a1 --- /dev/null +++ b/sale_payment_web/__manifest__.py @@ -0,0 +1,27 @@ +{ + 'name': 'Sale Payment Web', + 'author': 'Hibou Corp. ', + 'category': 'Sales', + 'version': '13.0.1.0.0', + 'description': + """ +Sale Payment Web +================ + +Allow sales people to register payments for sale orders. + +Electronic payments will create transactions and automatically reconcile on the invoice. + + """, + 'depends': [ + 'payment', + 'sale', + ], + 'auto_install': False, + 'data': [ + 'security/sale_security.xml', + 'security/ir.model.access.csv', + 'wizard/account_payment_register_views.xml', + 'views/sale_views.xml', + ], +} diff --git a/sale_payment_web/models/__init__.py b/sale_payment_web/models/__init__.py new file mode 100644 index 00000000..b70704c4 --- /dev/null +++ b/sale_payment_web/models/__init__.py @@ -0,0 +1,2 @@ +from . import payment +from . import sale diff --git a/sale_payment_web/models/payment.py b/sale_payment_web/models/payment.py new file mode 100644 index 00000000..275fbbd5 --- /dev/null +++ b/sale_payment_web/models/payment.py @@ -0,0 +1,12 @@ +from odoo import api, models + + +class PaymentTransaction(models.Model): + _inherit = 'payment.transaction' + + @api.model + def create(self, values): + active_ids = self._context.get('active_ids') + if active_ids and self._context.get('active_model') == 'sale.order': + values['sale_order_ids'] = [(6, 0, active_ids)] + return super(PaymentTransaction, self).create(values) diff --git a/sale_payment_web/models/sale.py b/sale_payment_web/models/sale.py new file mode 100644 index 00000000..667c1bcd --- /dev/null +++ b/sale_payment_web/models/sale.py @@ -0,0 +1,16 @@ +from odoo import models, _ + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + def action_payment_register(self): + return { + 'name': _('Register Payment'), + 'res_model': 'account.payment.register', + 'view_mode': 'form', + 'view_id': self.env.ref('account.view_account_payment_form_multi').id, + 'context': {'active_ids': self.ids, 'active_model': 'sale.order'}, + 'target': 'new', + 'type': 'ir.actions.act_window', + } diff --git a/sale_payment_web/security/ir.model.access.csv b/sale_payment_web/security/ir.model.access.csv new file mode 100644 index 00000000..7643ab48 --- /dev/null +++ b/sale_payment_web/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_payment_method,account.payment.method,account.model_account_payment_method,group_payment_web,1,0,0,0 diff --git a/sale_payment_web/security/sale_security.xml b/sale_payment_web/security/sale_security.xml new file mode 100644 index 00000000..7234cc38 --- /dev/null +++ b/sale_payment_web/security/sale_security.xml @@ -0,0 +1,9 @@ + + + + + Sale Order Payments + + + + diff --git a/sale_payment_web/tests/__init__.py b/sale_payment_web/tests/__init__.py new file mode 100644 index 00000000..35d768d5 --- /dev/null +++ b/sale_payment_web/tests/__init__.py @@ -0,0 +1 @@ +from . import test_sale_payment diff --git a/sale_payment_web/tests/test_sale_payment.py b/sale_payment_web/tests/test_sale_payment.py new file mode 100644 index 00000000..e5255f1a --- /dev/null +++ b/sale_payment_web/tests/test_sale_payment.py @@ -0,0 +1,23 @@ +from odoo.addons.sale.tests.test_sale_to_invoice import TestSaleToInvoice + + +class TestSalePayment(TestSaleToInvoice): + + def setUp(self): + super(TestSalePayment, self).setUp() + self.context = { + 'active_model': 'sale.order', + 'active_ids': [self.sale_order.id], + 'active_id': self.sale_order.id, + } + + def test_payment(self): + self.sale_order.action_confirm() + payment_wizard = self.env['account.payment.register'].with_context(self.context).create({}) + self.assertTrue(payment_wizard.journal_id) + + payment_action = payment_wizard.create_payments() + self.assertTrue(isinstance(payment_action, dict)) + payment = self.env[payment_action['res_model']].browse(payment_action['res_id']) + self.assertTrue(payment.exists()) + self.assertEqual(payment.amount, self.sale_order.amount_total) diff --git a/sale_payment_web/views/sale_views.xml b/sale_payment_web/views/sale_views.xml new file mode 100644 index 00000000..b95fdff1 --- /dev/null +++ b/sale_payment_web/views/sale_views.xml @@ -0,0 +1,15 @@ + + + + + sale.order.form.inherit + sale.order + + + +