diff --git a/bross_bank_management/cron/crons.xml b/bross_bank_management/cron/crons.xml
index d827deb..cadd2a8 100644
--- a/bross_bank_management/cron/crons.xml
+++ b/bross_bank_management/cron/crons.xml
@@ -7,8 +7,9 @@
code
model.get_movements()
- 1
-
+ 5
+ minutes
+
100
diff --git a/bross_bank_management/models/bank_models.py b/bross_bank_management/models/bank_models.py
index 359c0bf..825ba0a 100644
--- a/bross_bank_management/models/bank_models.py
+++ b/bross_bank_management/models/bank_models.py
@@ -49,9 +49,12 @@ class BankMovements(models.Model):
hash_object = hashlib.sha256(json_data.encode())
hash_hex = hash_object.hexdigest()
- found_raw_record = self.env[model].search([
- ('bid', '=', bid),
- ])
+ find_records = self.env[model].search([('bid', '=', bid)])
+
+ if len(find_records) > 1:
+ found_raw_record = find_records.sorted(key=lambda x: x.id, reverse=True)[0]
+ else:
+ found_raw_record = find_records
if found_raw_record:
if found_raw_record.json_hash_code != hash_hex:
@@ -64,9 +67,10 @@ class BankMovements(models.Model):
'json_hash_code': hash_hex,
'bid': bid,
})
- found_raw_record.parent_id = new_created_record.id
+ for record in find_records:
+ record.parent_id = new_created_record.id
else:
- found_raw_record = self.env[model].create({
+ self.env[model].create({
'json_data': json_data,
'json_hash_code': hash_hex,
'bid': bid
@@ -74,9 +78,18 @@ class BankMovements(models.Model):
def get_movements(self):
client = self.env['bank.settings'].get_request_object()
- today_formatted_date = datetime.now().strftime('%Y-%m-%dT00:00:00.000')
+
+ found_record = self.env['bank.raw.movements'].search([])
+ if found_record:
+ latest_record = self.env['bank.raw.movements'].search([], order='write_date desc', limit=1)
+ max_write_date = latest_record.write_date
+ max_modified_id = latest_record.id
- res = client.get_account_movements_by_date_range('111111', '2024-01-01T00:00:00.000', today_formatted_date)
+ max_id_to_process = max_modified_id if found_record else 0
+ start_date = max_write_date.strftime('%Y-%m-%dT00:00:00.000') if found_record else '2024-01-01T00:00:00.000'
+ end_date = datetime.now().strftime('%Y-%m-%dT00:00:00.000')
+
+ res = client.get_account_movements_by_date_range('111111', start_date, end_date)
if not res['data']:
raise UserError(_('No data found for movements'))
@@ -87,12 +100,14 @@ class BankMovements(models.Model):
pages = math.ceil(int(res['data']['pager']['totalcount']) / int(res['data']['pager']['pagesize']))
if pages > 1:
for page in range(1, pages):
- res = client.get_account_movements_by_date_range_next_page('111111', page, 700, '2024-01-01T00:00:00.000', today_formatted_date)
+ res = client.get_account_movements_by_date_range_next_page('111111', page, 700, start_date, end_date)
for movement in res['data']['movements']:
self.create_or_update_raw_data(movement, 'bank.raw.movements', movement['movementId'])
+ self.process_movements(max_id_to_process)
- def process_movements(self):
- to_process_movements = self.env['bank.raw.movements'].search([])
+ def process_movements(self, to_process_from_id):
+ to_process_movements = self.env['bank.raw.movements'].search([('id', '>', to_process_from_id)])
+
for rec in to_process_movements:
movement = json.loads(rec.json_data)
diff --git a/exely_integration/cron/crons.xml b/exely_integration/cron/crons.xml
index 051261d..1f94ddc 100644
--- a/exely_integration/cron/crons.xml
+++ b/exely_integration/cron/crons.xml
@@ -7,8 +7,9 @@
code
model.get_exely_data()
- 1
-
+ 5
+ minutes
+
100