diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/pos_mercury/models/pos_mercury.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/pos_mercury/models/pos_mercury.py')
| -rw-r--r-- | addons/pos_mercury/models/pos_mercury.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/addons/pos_mercury/models/pos_mercury.py b/addons/pos_mercury/models/pos_mercury.py new file mode 100644 index 00000000..900e696f --- /dev/null +++ b/addons/pos_mercury/models/pos_mercury.py @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import logging + +from odoo import models, fields, api, _ +from odoo.tools.float_utils import float_compare + +_logger = logging.getLogger(__name__) + + +class BarcodeRule(models.Model): + _inherit = 'barcode.rule' + + type = fields.Selection(selection_add=[ + ('credit', 'Credit Card') + ], ondelete={'credit': 'set default'}) + + +class PosMercuryConfiguration(models.Model): + _name = 'pos_mercury.configuration' + _description = 'Point of Sale Vantiv Configuration' + + name = fields.Char(required=True, help='Name of this Vantiv configuration') + merchant_id = fields.Char(string='Merchant ID', required=True, help='ID of the merchant to authenticate him on the payment provider server') + merchant_pwd = fields.Char(string='Merchant Password', required=True, help='Password of the merchant to authenticate him on the payment provider server') + + +class PoSPayment(models.Model): + _inherit = "pos.payment" + + mercury_card_number = fields.Char(string='Card Number', help='The last 4 numbers of the card used to pay') + mercury_prefixed_card_number = fields.Char(string='Card Number Prefix', compute='_compute_prefixed_card_number', help='The card number used for the payment.') + mercury_card_brand = fields.Char(string='Card Brand', help='The brand of the payment card (e.g. Visa, AMEX, ...)') + mercury_card_owner_name = fields.Char(string='Card Owner Name', help='The name of the card owner') + mercury_ref_no = fields.Char(string='Vantiv reference number', help='Payment reference number from Vantiv Pay') + mercury_record_no = fields.Char(string='Vantiv record number', help='Payment record number from Vantiv Pay') + mercury_invoice_no = fields.Char(string='Vantiv invoice number', help='Invoice number from Vantiv Pay') + + def _compute_prefixed_card_number(self): + for line in self: + if line.mercury_card_number: + line.mercury_prefixed_card_number = "********" + line.mercury_card_number + else: + line.mercury_prefixed_card_number = "" + + +class PoSPaymentMethod(models.Model): + _inherit = 'pos.payment.method' + + pos_mercury_config_id = fields.Many2one('pos_mercury.configuration', string='Vantiv Credentials', help='The configuration of Vantiv used for this journal') + + def _get_payment_terminal_selection(self): + return super(PoSPaymentMethod, self)._get_payment_terminal_selection() + [('mercury', 'Vantiv')] + + @api.onchange('use_payment_terminal') + def _onchange_use_payment_terminal(self): + super(PoSPaymentMethod, self)._onchange_use_payment_terminal() + if self.use_payment_terminal != 'mercury': + self.pos_mercury_config_id = False + +class PosOrder(models.Model): + _inherit = "pos.order" + + @api.model + def _payment_fields(self, order, ui_paymentline): + fields = super(PosOrder, self)._payment_fields(order, ui_paymentline) + + fields.update({ + 'mercury_card_number': ui_paymentline.get('mercury_card_number'), + 'mercury_card_brand': ui_paymentline.get('mercury_card_brand'), + 'mercury_card_owner_name': ui_paymentline.get('mercury_card_owner_name'), + 'mercury_ref_no': ui_paymentline.get('mercury_ref_no'), + 'mercury_record_no': ui_paymentline.get('mercury_record_no'), + 'mercury_invoice_no': ui_paymentline.get('mercury_invoice_no') + }) + + return fields |
