This commit is contained in:
parent
ca6a342f0e
commit
f2f7eb0756
2
.env
2
.env
@ -15,5 +15,5 @@ PASSWORD="odoo"
|
|||||||
ADDONS="--addons-path=/opt/odoo/addons/,/opt/odoo/customaddons/$CUSTOMADDONS_DIR"
|
ADDONS="--addons-path=/opt/odoo/addons/,/opt/odoo/customaddons/$CUSTOMADDONS_DIR"
|
||||||
# ARGS=""
|
# ARGS=""
|
||||||
# ARGS="-d bross"
|
# ARGS="-d bross"
|
||||||
#ARGS="-d cybro_hms -u bross_hms,exely_integration,bross_bank_management"
|
ARGS="-d cybro_hms -u bross_hms,exely_integration,bross_bank_management"
|
||||||
# DEBUG="-m debugpy --listen 0.0.0.0:5678 --wait-for-client"
|
# DEBUG="-m debugpy --listen 0.0.0.0:5678 --wait-for-client"
|
||||||
|
|||||||
42
bross.py
42
bross.py
@ -10,38 +10,46 @@ headers = {
|
|||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
}
|
}
|
||||||
#url = "https://connect.hopenapi.com/api/exelypms/v1/analytics/services"
|
#url = "https://connect.hopenapi.com/api/exelypms/v1/analytics/services"
|
||||||
|
|
||||||
#payload = {'startDate': '20240909', 'endDate': '20240910', 'dateKind': 0, 'language': 'en'}
|
#payload = {'startDate': '20240909', 'endDate': '20240910', 'dateKind': 0, 'language': 'en'}
|
||||||
#response = requests.get(url, data=payload, headers=headers)
|
#response = requests.get(url, data=payload, headers=headers)
|
||||||
|
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/analytics/services?startDate=20241008&endDate=20241008&dateKind=4", headers=headers)
|
# SERVICES TIME PERIODS
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings/20240301-503875-1211582391", headers=headers)
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/analytics/services?startDate=20241008&endDate=20241008&dateKind=0", headers=headers)
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings/20241217-503875-1220773707", headers=headers)
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/analytics/services/cancelled?startDate=20241008&endDate=20241008&dateKind=0", headers=headers)
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings/20240122-503875-1210423183", headers=headers)
|
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings/20240909-503875-1219004943", headers=headers)
|
# PAYMENTS TIME PERIOD
|
||||||
|
response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/analytics/payments?startDateTime=202408010000&endDateTime=202408072359&includeServices=true", headers=headers)
|
||||||
|
|
||||||
|
# BOOKINGS TIME PERIOD
|
||||||
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings?modifiedFrom=2024-01-01T00:00&modifiedTo=2024-01-30T23:59&state=Active", headers=headers)
|
||||||
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings?modifiedFrom=2024-01-01T00:00&modifiedTo=2024-01-30T23:59&state=Cancelled", headers=headers)
|
||||||
|
|
||||||
|
# BOOKING
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings/20241009-503875-1220777184", headers=headers) # Room move
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings/20241009-503875-1220777184", headers=headers) # Room move
|
||||||
|
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/guests/9007199255607320", headers=headers)
|
# INVOICES
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/rooms", headers=headers)
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings/20241009-503875-1220777184/invoices?language=en", headers=headers)
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/companies", headers=headers)
|
|
||||||
|
|
||||||
|
# BOOKINGS ROOMS
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings/20241009-503875-1220777184/rooms", headers=headers)
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings/20241009-503875-1220777184/rooms", headers=headers)
|
||||||
|
|
||||||
|
# ALL COMPANIES
|
||||||
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/companies", headers=headers)
|
||||||
|
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/analytics/services", headers=headers)
|
# GUESTS needs guest id
|
||||||
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/guests/9007199255607320", headers=headers)
|
||||||
|
|
||||||
|
# ROOM STAYS needs guest id
|
||||||
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/guests/9007199255607320/room-stays", headers=headers)
|
||||||
|
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/analytics/payments", headers=headers)
|
# ALL ROOMS
|
||||||
response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/analytics/payments?startDateTime=202408010000&endDateTime=202408012359&includeServices=true", headers=headers)
|
|
||||||
|
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings?modifiedFrom=2024-01-01T00:00&modifiedTo=2024-01-30T23:59&state=Active", headers=headers)
|
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings?modifiedFrom=2024-01-31T23:59&modifiedTo=2024-02-290T23:59&state=Active", headers=headers)
|
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/bookings?modifiedFrom=2024-10-08T20:00&modifiedTo=2024-10-08T22:00&state=Cancelled", headers=headers)
|
|
||||||
|
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/rooms", headers=headers)
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/rooms", headers=headers)
|
||||||
|
|
||||||
|
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/rooms?roomTypeId=5020078", headers=headers)
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/rooms?roomTypeId=5020078", headers=headers)
|
||||||
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/rooms?roomTypeId=5019645", headers=headers)
|
# response = requests.get("https://connect.hopenapi.com/api/exelypms/v1/rooms?roomTypeId=5019645", headers=headers)
|
||||||
|
|
||||||
|
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
data = response.json()
|
data = response.json()
|
||||||
print(data)
|
print(data)
|
||||||
|
|||||||
@ -12,10 +12,12 @@
|
|||||||
'data': [
|
'data': [
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
'data/bank_conf.xml',
|
'data/bank_conf.xml',
|
||||||
|
'cron/crons.xml',
|
||||||
'views/main_menu.xml',
|
'views/main_menu.xml',
|
||||||
'views/bank_views.xml',
|
'views/bank_views.xml',
|
||||||
'views/bank_account_views.xml',
|
'views/bank_account_views.xml',
|
||||||
'views/bank_settings_views.xml',
|
'views/bank_settings_views.xml',
|
||||||
|
'views/raw_movements.xml',
|
||||||
],
|
],
|
||||||
'installable': True,
|
'installable': True,
|
||||||
'application': True,
|
'application': True,
|
||||||
|
|||||||
15
bross_bank_management/cron/crons.xml
Normal file
15
bross_bank_management/cron/crons.xml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="ir_cron_get_movements_data" model="ir.cron">
|
||||||
|
<field name="name">Get Movements Data</field>
|
||||||
|
<field name="model_id" ref="model_bank_raw_movements"/>
|
||||||
|
<field name="state">code</field>
|
||||||
|
<field name="code">model.get_movements()</field>
|
||||||
|
<field name="user_id" ref="base.user_root"/>
|
||||||
|
<field name="interval_number">1</field>
|
||||||
|
<field name="active" eval="False"/>
|
||||||
|
<field name="priority">100</field>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
@ -1,3 +1,4 @@
|
|||||||
from . import bank
|
from . import bank
|
||||||
from . import bank_account
|
from . import bank_account
|
||||||
from . import bank_settings
|
from . import bank_settings
|
||||||
|
from . import bank_models
|
||||||
|
|||||||
57
bross_bank_management/models/bank_models.py
Normal file
57
bross_bank_management/models/bank_models.py
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
import base64
|
||||||
|
import tempfile
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from odoo import models, fields, _
|
||||||
|
from tbc_bank_integration_service_lib.client import TBCBankClient
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
|
|
||||||
|
class BankMovements(models.Model):
|
||||||
|
_name = 'bank.raw.movements'
|
||||||
|
_description = 'Bank Movements'
|
||||||
|
|
||||||
|
json_data = fields.Json(string="Json Data")
|
||||||
|
json_hash_code = fields.Char(string="Hash Code")
|
||||||
|
bid = fields.Char(string="Movement Id")
|
||||||
|
|
||||||
|
parent_id = fields.Many2one('bank.raw.movements', string="Parent Record")
|
||||||
|
history_ids = fields.One2many(comodel_name="bank.raw.movements", inverse_name='parent_id', string="History")
|
||||||
|
|
||||||
|
def create_or_update_raw_data(self, data, model, bid):
|
||||||
|
json_data = json.dumps(data, sort_keys=True, indent=4, ensure_ascii=False)
|
||||||
|
hash_object = hashlib.sha256(json_data.encode())
|
||||||
|
hash_hex = hash_object.hexdigest()
|
||||||
|
|
||||||
|
found_raw_record = self.env[model].search([
|
||||||
|
('bid', '=', bid),
|
||||||
|
])
|
||||||
|
|
||||||
|
if found_raw_record:
|
||||||
|
if found_raw_record.json_hash_code != hash_hex:
|
||||||
|
# found_raw_record.write({
|
||||||
|
# 'json_data': json_data,
|
||||||
|
# 'json_hash_code': hash_hex
|
||||||
|
# })
|
||||||
|
new_created_record = self.env[model].create({
|
||||||
|
'json_data': json_data,
|
||||||
|
'json_hash_code': hash_hex,
|
||||||
|
'bid': bid,
|
||||||
|
})
|
||||||
|
found_raw_record.parent_id = new_created_record.id
|
||||||
|
else:
|
||||||
|
found_raw_record = self.env[model].create({
|
||||||
|
'json_data': json_data,
|
||||||
|
'json_hash_code': hash_hex,
|
||||||
|
'bid': bid
|
||||||
|
})
|
||||||
|
|
||||||
|
def get_movements(self):
|
||||||
|
client = self.env['bank.settings'].get_request_object()
|
||||||
|
try:
|
||||||
|
movement_id = '013762510743.2'
|
||||||
|
movements_by_id = client.get_account_movements_by_id('111111', movement_id)
|
||||||
|
self.create_or_update_raw_data(movements_by_id, 'bank.raw.movements', movements_by_id['data'].get('movementId'))
|
||||||
|
except Exception as e:
|
||||||
|
_logger.error(e)
|
||||||
@ -19,18 +19,19 @@ class BankSettings(models.Model):
|
|||||||
nonce = fields.Char(string='Nonce', required=True)
|
nonce = fields.Char(string='Nonce', required=True)
|
||||||
|
|
||||||
def get_request_object(self):
|
def get_request_object(self):
|
||||||
cert_data = base64.b64decode(self.cert_file_path)
|
config = self.env.ref('bross_bank_management.bank_api_configuration')
|
||||||
|
cert_data = base64.b64decode(config.cert_file_path)
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(delete=False, suffix='.pfx') as temp_cert_file:
|
with tempfile.NamedTemporaryFile(delete=False, suffix='.pfx') as temp_cert_file:
|
||||||
temp_cert_file.write(cert_data)
|
temp_cert_file.write(cert_data)
|
||||||
temp_cert_file_path = temp_cert_file.name
|
temp_cert_file_path = temp_cert_file.name
|
||||||
|
|
||||||
client = TBCBankClient(
|
client = TBCBankClient(
|
||||||
self.wsdl_url,
|
config.wsdl_url,
|
||||||
temp_cert_file_path,
|
temp_cert_file_path,
|
||||||
self.cert_password,
|
config.cert_password,
|
||||||
self.username,
|
config.username,
|
||||||
self.current_password
|
config.current_password
|
||||||
)
|
)
|
||||||
return client
|
return client
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_brosse_bank_user,access_brosse_bank,model_brosse_bank,base.group_user,1,1,1,1
|
access_brosse_bank_user,access_brosse_bank,model_brosse_bank,base.group_user,1,1,1,1
|
||||||
access_brosse_bank_account_user,access_brosse_bank_account,model_brosse_bank_account,base.group_user,1,1,1,1
|
access_brosse_bank_account_user,access_brosse_bank_account,model_brosse_bank_account,base.group_user,1,1,1,1
|
||||||
access_bank_settings_admin,access_bank_settings,model_bank_settings,base.group_system,1,1,1,1
|
access_bank_settings_admin,access_bank_settings,model_bank_settings,base.group_system,1,1,1,1
|
||||||
|
bross_bank_management.access_bank_raw_movements,access_bank_raw_movements,bross_bank_management.model_bank_raw_movements,base.group_user,1,1,1,1
|
||||||
|
60
bross_bank_management/views/raw_movements.xml
Normal file
60
bross_bank_management/views/raw_movements.xml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
<record id="view_bank_raw_movements_list" model="ir.ui.view">
|
||||||
|
<field name="name">bank.raw.movements.list</field>
|
||||||
|
<field name="model">bank.raw.movements</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<list>
|
||||||
|
<field name="json_data"/>
|
||||||
|
<field name="json_hash_code"/>
|
||||||
|
<field name="create_date"/>
|
||||||
|
<field name="write_date"/>
|
||||||
|
</list>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_bank_raw_movements_form" model="ir.ui.view">
|
||||||
|
<field name="name">bank.raw.movements.form</field>
|
||||||
|
<field name="model">bank.raw.movements</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form edit="0">
|
||||||
|
<header>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<sheet>
|
||||||
|
<group class="oe_title">
|
||||||
|
<h1><field name="bid"/></h1>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="json_hash_code"/>
|
||||||
|
<field name="json_data"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="create_date"/>
|
||||||
|
<field name="write_date"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="history_ids">
|
||||||
|
<list editable="bottom">
|
||||||
|
<field name="bid"/>
|
||||||
|
<field name="json_data"/>
|
||||||
|
<field name="json_hash_code"/>
|
||||||
|
<field name="create_date"/>
|
||||||
|
<field name="write_date"/>
|
||||||
|
</list>
|
||||||
|
</field>
|
||||||
|
</group>
|
||||||
|
</sheet>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="bank_raw_movements_action" model="ir.actions.act_window">
|
||||||
|
<field name="name">Bank Raw Movements</field>
|
||||||
|
<field name="res_model">bank.raw.movements</field>
|
||||||
|
<field name="view_mode">list,form</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem id="menu_bank_raw_movements_submenu" name="Bank Raw Movements" parent="bank_management_submenu" sequence="40" action="bank_raw_movements_action" groups="base.group_system"/>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
@ -22,6 +22,7 @@
|
|||||||
'views/raw_customers.xml',
|
'views/raw_customers.xml',
|
||||||
'views/raw_roomstays.xml',
|
'views/raw_roomstays.xml',
|
||||||
'views/raw_guests.xml',
|
'views/raw_guests.xml',
|
||||||
|
'views/raw_payments.xml',
|
||||||
],
|
],
|
||||||
# only loaded in demonstration mode
|
# only loaded in demonstration mode
|
||||||
'demo': [
|
'demo': [
|
||||||
|
|||||||
@ -12,6 +12,17 @@
|
|||||||
<field name="priority">100</field>
|
<field name="priority">100</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record id="ir_cron_get_exely_payments" model="ir.cron">
|
||||||
|
<field name="name">Get Exely Payments</field>
|
||||||
|
<field name="model_id" ref="model_exely_modified_bookings"/>
|
||||||
|
<field name="state">code</field>
|
||||||
|
<field name="code">model.get_exely_payments()</field>
|
||||||
|
<field name="user_id" ref="base.user_root"/>
|
||||||
|
<field name="interval_number">1</field>
|
||||||
|
<field name="active" eval="False"/>
|
||||||
|
<field name="priority">100</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<record id="ir_cron_process_exely_data" model="ir.cron">
|
<record id="ir_cron_process_exely_data" model="ir.cron">
|
||||||
<field name="name">Process Exely Data</field>
|
<field name="name">Process Exely Data</field>
|
||||||
<field name="model_id" ref="model_exely_modified_bookings"/>
|
<field name="model_id" ref="model_exely_modified_bookings"/>
|
||||||
|
|||||||
@ -88,6 +88,18 @@ class ExelyRawGuests(models.Model):
|
|||||||
history_ids = fields.One2many(comodel_name="exely.raw.guests", inverse_name='parent_id', string="History")
|
history_ids = fields.One2many(comodel_name="exely.raw.guests", inverse_name='parent_id', string="History")
|
||||||
|
|
||||||
|
|
||||||
|
class ExelyRawPayments(models.Model):
|
||||||
|
_name = 'exely.raw.payments'
|
||||||
|
_description = 'Exely Raw Payments'
|
||||||
|
|
||||||
|
json_data = fields.Json(string="Json Data")
|
||||||
|
json_hash_code = fields.Char(string="Hash Code")
|
||||||
|
bid = fields.Char(string="Guest Id")
|
||||||
|
|
||||||
|
parent_id = fields.Many2one('exely.raw.payments', string="Parent Record")
|
||||||
|
history_ids = fields.One2many(comodel_name="exely.raw.payments", inverse_name='parent_id', string="History")
|
||||||
|
|
||||||
|
|
||||||
class ExelyModifiedData(models.Model):
|
class ExelyModifiedData(models.Model):
|
||||||
_name = 'exely.modified.bookings'
|
_name = 'exely.modified.bookings'
|
||||||
_description = 'Exely Modified Bookings'
|
_description = 'Exely Modified Bookings'
|
||||||
@ -98,13 +110,13 @@ class ExelyModifiedData(models.Model):
|
|||||||
booking_number = fields.Char(string="Booking Number")
|
booking_number = fields.Char(string="Booking Number")
|
||||||
status = fields.Char(string="Status")
|
status = fields.Char(string="Status")
|
||||||
|
|
||||||
def generate_date_ranges(self, start_date, end_date):
|
def generate_date_ranges(self, start_date, end_date, period, format):
|
||||||
date_ranges = []
|
date_ranges = []
|
||||||
current_date = start_date
|
current_date = start_date
|
||||||
|
|
||||||
while current_date < end_date:
|
while current_date < end_date:
|
||||||
period_start = current_date.replace(hour=0, minute=0, second=0, microsecond=0)
|
period_start = current_date.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||||
period_end = min(current_date + timedelta(days=29), end_date)
|
period_end = min(current_date + timedelta(days=period), end_date)
|
||||||
|
|
||||||
if period_end.date() < end_date.date():
|
if period_end.date() < end_date.date():
|
||||||
period_end = period_end.replace(hour=23, minute=59)
|
period_end = period_end.replace(hour=23, minute=59)
|
||||||
@ -112,8 +124,8 @@ class ExelyModifiedData(models.Model):
|
|||||||
period_end = end_date
|
period_end = end_date
|
||||||
|
|
||||||
date_ranges.append((
|
date_ranges.append((
|
||||||
period_start.strftime("%Y-%m-%dT%H:%M"),
|
period_start.strftime(format),
|
||||||
period_end.strftime("%Y-%m-%dT%H:%M")
|
period_end.strftime(format)
|
||||||
))
|
))
|
||||||
|
|
||||||
current_date = period_end + timedelta(days=1)
|
current_date = period_end + timedelta(days=1)
|
||||||
@ -155,6 +167,30 @@ class ExelyModifiedData(models.Model):
|
|||||||
'bid': bid
|
'bid': bid
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def get_exely_payments(self):
|
||||||
|
exely_api_conf = self.env['exely.api.conf'].search([], limit=1)
|
||||||
|
if exely_api_conf:
|
||||||
|
headers = {
|
||||||
|
'X-API-KEY': exely_api_conf.api_key,
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
raise UserError(_("Please configure Exely API Key"))
|
||||||
|
|
||||||
|
start_date = datetime(2024, 1, 1)
|
||||||
|
end_date = datetime.now()
|
||||||
|
|
||||||
|
date_ranges = self.generate_date_ranges(start_date, end_date, 7, "%Y%m%d%H%M")
|
||||||
|
|
||||||
|
to_create = []
|
||||||
|
for start, end in date_ranges:
|
||||||
|
print(f"{start} to {end}")
|
||||||
|
|
||||||
|
payments = self.get_exely_data_api(f"https://connect.hopenapi.com/api/exelypms/v1/analytics/payments?startDateTime={start}&endDateTime={end}&includeServices=true", headers)
|
||||||
|
if payments:
|
||||||
|
self.create_or_update_raw_data(payments, 'exely.raw.payments', f"{start}{end}")
|
||||||
|
|
||||||
|
|
||||||
def get_exely_data(self):
|
def get_exely_data(self):
|
||||||
exely_api_conf = self.env['exely.api.conf'].search([], limit=1)
|
exely_api_conf = self.env['exely.api.conf'].search([], limit=1)
|
||||||
if exely_api_conf:
|
if exely_api_conf:
|
||||||
@ -179,7 +215,7 @@ class ExelyModifiedData(models.Model):
|
|||||||
start_date = datetime(2024, 1, 1)
|
start_date = datetime(2024, 1, 1)
|
||||||
end_date = datetime.now()
|
end_date = datetime.now()
|
||||||
|
|
||||||
date_ranges = self.generate_date_ranges(start_date, end_date)
|
date_ranges = self.generate_date_ranges(start_date, end_date, 29, "%Y-%m-%dT%H:%M")
|
||||||
|
|
||||||
to_create = []
|
to_create = []
|
||||||
for status in STATES:
|
for status in STATES:
|
||||||
|
|||||||
@ -7,4 +7,5 @@ exely_integration.access_exely_raw_companies,access_exely_raw_companies,exely_in
|
|||||||
exely_integration.access_exely_raw_rooms,access_exely_raw_rooms,exely_integration.model_exely_raw_rooms,base.group_user,1,1,1,1
|
exely_integration.access_exely_raw_rooms,access_exely_raw_rooms,exely_integration.model_exely_raw_rooms,base.group_user,1,1,1,1
|
||||||
exely_integration.access_exely_raw_customers,access_exely_raw_customers,exely_integration.model_exely_raw_customers,base.group_user,1,1,1,1
|
exely_integration.access_exely_raw_customers,access_exely_raw_customers,exely_integration.model_exely_raw_customers,base.group_user,1,1,1,1
|
||||||
exely_integration.access_exely_raw_roomstays,access_exely_raw_roomstays,exely_integration.model_exely_raw_roomstays,base.group_user,1,1,1,1
|
exely_integration.access_exely_raw_roomstays,access_exely_raw_roomstays,exely_integration.model_exely_raw_roomstays,base.group_user,1,1,1,1
|
||||||
exely_integration.access_exely_raw_guests,access_exely_raw_guests,exely_integration.model_exely_raw_guests,base.group_user,1,1,1,1
|
exely_integration.access_exely_raw_guests,access_exely_raw_guests,exely_integration.model_exely_raw_guests,base.group_user,1,1,1,1
|
||||||
|
exely_integration.access_exely_raw_payments,access_exely_raw_payments,exely_integration.model_exely_raw_payments,base.group_user,1,1,1,1
|
||||||
|
67
exely_integration/views/raw_payments.xml
Normal file
67
exely_integration/views/raw_payments.xml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
<record model="ir.ui.view" id="exely_raw_payments_view_list">
|
||||||
|
<field name="name">exely.raw.payments.list</field>
|
||||||
|
<field name="model">exely.raw.payments</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<list>
|
||||||
|
<field name="bid"/>
|
||||||
|
<field name="json_data"/>
|
||||||
|
<field name="json_hash_code"/>
|
||||||
|
<field name="create_date"/>
|
||||||
|
<field name="write_date"/>
|
||||||
|
</list>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="exely_raw_payments_view_form">
|
||||||
|
<field name="name">exely.raw.payments.form</field>
|
||||||
|
<field name="model">exely.raw.payments</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form edit="0">
|
||||||
|
<header>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<sheet>
|
||||||
|
<group class="oe_title">
|
||||||
|
<h1><field name="bid"/></h1>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="json_hash_code"/>
|
||||||
|
<field name="json_data"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="create_date"/>
|
||||||
|
<field name="write_date"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="history_ids">
|
||||||
|
<list editable="bottom">
|
||||||
|
<field name="bid"/>
|
||||||
|
<field name="json_data"/>
|
||||||
|
<field name="json_hash_code"/>
|
||||||
|
<field name="create_date"/>
|
||||||
|
<field name="write_date"/>
|
||||||
|
</list>
|
||||||
|
</field>
|
||||||
|
</group>
|
||||||
|
</sheet>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.actions.act_window" id="exely_raw_payments_action">
|
||||||
|
<field name="name">exely.raw.payments</field>
|
||||||
|
<field name="res_model">exely.raw.payments</field>
|
||||||
|
<field name="view_mode">list,form</field>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="o_view_nocontent_smiling_face">
|
||||||
|
Create your first raw payments record.
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem name="Raw Payments" id="exely_raw_payments_submenu" parent="exely_integration_submenu" action="exely_raw_payments_action" sequence="80"/>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
Loading…
Reference in New Issue
Block a user