feat: hide authorizer for rental orders, auto-set sale type

Rental orders no longer show the "Authorizer Required?" question or
the Authorizer field. The sale type is automatically set to 'Rentals'
when creating or confirming a rental order. Validation logic also
skips authorizer checks for rental sale type.

Made-with: Cursor
This commit is contained in:
gsinghpal
2026-02-25 23:33:23 -05:00
parent 3c8f83b8e6
commit 14fe9ab716
51 changed files with 4192 additions and 822 deletions

View File

@@ -66,17 +66,21 @@ class PoyntTerminal(models.Model):
# === BUSINESS METHODS === #
def _get_provider_sudo(self):
return self.provider_id.sudo()
def action_refresh_status(self):
"""Refresh the terminal status from Poynt Cloud."""
for terminal in self:
try:
store_id = terminal.store_id_poynt or terminal.provider_id.poynt_store_id
provider = terminal._get_provider_sudo()
store_id = terminal.store_id_poynt or provider.poynt_store_id
if store_id:
endpoint = f'stores/{store_id}/storeDevices/{terminal.device_id}'
else:
endpoint = f'storeDevices/{terminal.device_id}'
result = terminal.provider_id._poynt_make_request('GET', endpoint)
result = provider._poynt_make_request('GET', endpoint)
poynt_status = result.get('status', 'UNKNOWN')
if poynt_status == 'ACTIVATED':
@@ -130,7 +134,8 @@ class PoyntTerminal(models.Model):
if order_id:
payment_request['orderId'] = order_id
store_id = self.store_id_poynt or self.provider_id.poynt_store_id or ''
provider = self._get_provider_sudo()
store_id = self.store_id_poynt or provider.poynt_store_id or ''
data_str = json.dumps({
'action': 'sale',
@@ -142,12 +147,12 @@ class PoyntTerminal(models.Model):
})
try:
result = self.provider_id._poynt_make_request(
result = provider._poynt_make_request(
'POST',
'cloudMessages',
business_scoped=False,
payload={
'businessId': self.provider_id.poynt_business_id,
'businessId': provider.poynt_business_id,
'storeId': store_id,
'deviceId': self.device_id,
'ttl': 300,
@@ -173,7 +178,7 @@ class PoyntTerminal(models.Model):
:return: The full callback URL.
:rtype: str
"""
base_url = self.provider_id.get_base_url()
base_url = self._get_provider_sudo().get_base_url()
return f"{base_url}/payment/poynt/terminal/callback"
def action_check_terminal_payment_status(self, reference):
@@ -188,8 +193,9 @@ class PoyntTerminal(models.Model):
"""
self.ensure_one()
provider = self._get_provider_sudo()
try:
txn_result = self.provider_id._poynt_make_request(
txn_result = provider._poynt_make_request(
'GET',
'transactions',
params={
@@ -201,7 +207,7 @@ class PoyntTerminal(models.Model):
transactions = txn_result.get('transactions', [])
if not transactions:
txn_result = self.provider_id._poynt_make_request(
txn_result = provider._poynt_make_request(
'GET',
'transactions',
params={