Crons
All checks were successful
Update odoo 18 / update (push) Successful in 30s

This commit is contained in:
mgite 2024-11-18 12:36:12 +04:00
parent 40ae3c6d45
commit d16c9b86fd
3 changed files with 31 additions and 14 deletions

View File

@ -7,8 +7,9 @@
<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="interval_number">5</field>
<field name="interval_type">minutes</field>
<field name="active" eval="True"/>
<field name="priority">100</field>
</record>

View File

@ -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')
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']:
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_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:
movement = json.loads(rec.json_data)

View File

@ -7,8 +7,9 @@
<field name="state">code</field>
<field name="code">model.get_exely_data()</field>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="active" eval="False"/>
<field name="interval_number">5</field>
<field name="interval_type">minutes</field>
<field name="active" eval="True"/>
<field name="priority">100</field>
</record>