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