43 lines
1.9 KiB
Python
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
|