Files
enterprise-addons/pos_urban_piper/models/pos_session.py
T

43 lines
1.9 KiB
Python

from odoo import models, api
class PosSession(models.Model):
_inherit = 'pos.session'
@api.model
def _load_pos_data_models(self, config):
data = super()._load_pos_data_models(config)
data += ['pos.delivery.provider']
return data
def close_session_from_ui(self, bank_payment_method_diff_pairs=None):
result = super().close_session_from_ui(bank_payment_method_diff_pairs)
if self.config_id.module_pos_urban_piper:
self.config_id.update_store_status(status=False) # api request for updating status at urban piper
self.config_id.set_urban_piper_provider_states({})
return result
def _delete_session(self):
self.config_id.set_urban_piper_provider_states({})
super()._delete_session()
def get_closing_control_data(self):
data = super().get_closing_control_data()
orders = self._get_closed_orders()
urban_piper_payment_method_ids = self.config_id.urbanpiper_payment_methods_ids
data_non_cash_methods = [pm['id'] for pm in data.get('non_cash_payment_methods')] if data.get('non_cash_payment_methods') else []
urban_piper_non_cash_payments_grouped_by_method_id = {pm: orders.payment_ids.filtered(lambda p: p.payment_method_id == pm) for pm in urban_piper_payment_method_ids if pm.id not in data_non_cash_methods}
if data.get('non_cash_payment_methods'):
non_cash_methods = [
{
'name': pm.name,
'amount': sum(urban_piper_non_cash_payments_grouped_by_method_id[pm].mapped('amount')),
'number': len(urban_piper_non_cash_payments_grouped_by_method_id[pm]),
'id': pm.id,
'type': pm.type,
}
for pm in urban_piper_non_cash_payments_grouped_by_method_id
]
data['non_cash_payment_methods'].extend(non_cash_methods)
return data