diff --git a/account_payment_ux/__init__.py b/account_payment_ux/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/account_payment_ux/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/account_payment_ux/__manifest__.py b/account_payment_ux/__manifest__.py new file mode 100644 index 00000000..99151a81 --- /dev/null +++ b/account_payment_ux/__manifest__.py @@ -0,0 +1,24 @@ +# © 2023 ADHOC SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Account Payment UX", + "version": "16.0.1.0.0", + "category": "Payment", + "website": "www.adhoc.com.ar", + "author": "ADHOC SA", + "license": "AGPL-3", + "application": False, + 'installable': True, + 'auto_install': True, + "external_dependencies": { + "python": [], + "bin": [], + }, + "depends": [ + "account_payment", + ], + "data": [ + ], + "demo": [ + ], +} diff --git a/account_payment_ux/models/__init__.py b/account_payment_ux/models/__init__.py new file mode 100644 index 00000000..8d425d04 --- /dev/null +++ b/account_payment_ux/models/__init__.py @@ -0,0 +1,2 @@ +from . import account_payment +from . import payment_transaction diff --git a/account_payment_ux/models/account_payment.py b/account_payment_ux/models/account_payment.py new file mode 100644 index 00000000..ae451a44 --- /dev/null +++ b/account_payment_ux/models/account_payment.py @@ -0,0 +1,15 @@ +from odoo import models + + +class AccountPayment(models.Model): + _inherit = 'account.payment' + + def action_post(self): + """ Odoo a partir de 16, cuando se valida un pago con token, si la transaccion no queda en done cancela el pago + por ahora nosotros revertimos este cambio para el caso de tu cuota""" + return super(AccountPayment, self.with_context(from_action_post=True)).action_post() + + def action_cancel(self): + if self._context.get('from_action_post'): + self = self - self.filtered(lambda x: x.payment_transaction_id.state in ['draft', 'pending', 'authorized']) + return super(AccountPayment, self).action_cancel() diff --git a/account_payment_ux/models/payment_transaction.py b/account_payment_ux/models/payment_transaction.py new file mode 100644 index 00000000..05e1c441 --- /dev/null +++ b/account_payment_ux/models/payment_transaction.py @@ -0,0 +1,23 @@ +from odoo import models + + +class PaymentTransaction(models.Model): + _inherit = 'payment.transaction' + + def _reconcile_after_done(self): + super()._reconcile_after_done() + + # Si el pago relacionado a la trasaccion esta en draft y coinciden los datos + # lo publico y concilio + if self.payment_id and self.payment_id.state == 'draft' and \ + self.payment_id.currency_id == self.currency_id and \ + self.payment_id.amount == abs(self.amount): + + self.payment_id.action_post() + if self.invoice_ids: + self.invoice_ids.filtered(lambda inv: inv.state == 'draft').action_post() + + (self.payment_id.line_ids + self.invoice_ids.line_ids).filtered( + lambda line: line.account_id == self.payment_id.destination_account_id + and not line.reconciled + ).reconcile()