This commit is contained in:
parent
40ae3c6d45
commit
d16c9b86fd
@ -7,8 +7,9 @@
|
|||||||
<field name="state">code</field>
|
<field name="state">code</field>
|
||||||
<field name="code">model.get_movements()</field>
|
<field name="code">model.get_movements()</field>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="interval_number">1</field>
|
<field name="interval_number">5</field>
|
||||||
<field name="active" eval="False"/>
|
<field name="interval_type">minutes</field>
|
||||||
|
<field name="active" eval="True"/>
|
||||||
<field name="priority">100</field>
|
<field name="priority">100</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|||||||
@ -49,9 +49,12 @@ class BankMovements(models.Model):
|
|||||||
hash_object = hashlib.sha256(json_data.encode())
|
hash_object = hashlib.sha256(json_data.encode())
|
||||||
hash_hex = hash_object.hexdigest()
|
hash_hex = hash_object.hexdigest()
|
||||||
|
|
||||||
found_raw_record = self.env[model].search([
|
find_records = self.env[model].search([('bid', '=', bid)])
|
||||||
('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:
|
||||||
if found_raw_record.json_hash_code != hash_hex:
|
if found_raw_record.json_hash_code != hash_hex:
|
||||||
@ -64,9 +67,10 @@ class BankMovements(models.Model):
|
|||||||
'json_hash_code': hash_hex,
|
'json_hash_code': hash_hex,
|
||||||
'bid': bid,
|
'bid': bid,
|
||||||
})
|
})
|
||||||
found_raw_record.parent_id = new_created_record.id
|
for record in find_records:
|
||||||
|
record.parent_id = new_created_record.id
|
||||||
else:
|
else:
|
||||||
found_raw_record = self.env[model].create({
|
self.env[model].create({
|
||||||
'json_data': json_data,
|
'json_data': json_data,
|
||||||
'json_hash_code': hash_hex,
|
'json_hash_code': hash_hex,
|
||||||
'bid': bid
|
'bid': bid
|
||||||
@ -74,9 +78,18 @@ class BankMovements(models.Model):
|
|||||||
|
|
||||||
def get_movements(self):
|
def get_movements(self):
|
||||||
client = self.env['bank.settings'].get_request_object()
|
client = self.env['bank.settings'].get_request_object()
|
||||||
today_formatted_date = datetime.now().strftime('%Y-%m-%dT00:00:00.000')
|
|
||||||
|
|
||||||
res = client.get_account_movements_by_date_range('111111', '2024-01-01T00:00:00.000', today_formatted_date)
|
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
|
||||||
|
|
||||||
|
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']:
|
if not res['data']:
|
||||||
raise UserError(_('No data found for movements'))
|
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']))
|
pages = math.ceil(int(res['data']['pager']['totalcount']) / int(res['data']['pager']['pagesize']))
|
||||||
if pages > 1:
|
if pages > 1:
|
||||||
for page in range(1, pages):
|
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']:
|
for movement in res['data']['movements']:
|
||||||
self.create_or_update_raw_data(movement, 'bank.raw.movements', movement['movementId'])
|
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_from_id):
|
||||||
|
to_process_movements = self.env['bank.raw.movements'].search([('id', '>', to_process_from_id)])
|
||||||
|
|
||||||
def process_movements(self):
|
|
||||||
to_process_movements = self.env['bank.raw.movements'].search([])
|
|
||||||
for rec in to_process_movements:
|
for rec in to_process_movements:
|
||||||
movement = json.loads(rec.json_data)
|
movement = json.loads(rec.json_data)
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,9 @@
|
|||||||
<field name="state">code</field>
|
<field name="state">code</field>
|
||||||
<field name="code">model.get_exely_data()</field>
|
<field name="code">model.get_exely_data()</field>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="interval_number">1</field>
|
<field name="interval_number">5</field>
|
||||||
<field name="active" eval="False"/>
|
<field name="interval_type">minutes</field>
|
||||||
|
<field name="active" eval="True"/>
|
||||||
<field name="priority">100</field>
|
<field name="priority">100</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user