summaryrefslogtreecommitdiff
path: root/addons/pos_mercury/models/pos_mercury.py
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/pos_mercury/models/pos_mercury.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/pos_mercury/models/pos_mercury.py')
-rw-r--r--addons/pos_mercury/models/pos_mercury.py78
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