On transaction create assign category following regex
All checks were successful
Update odoo 18 / update (push) Successful in 1m0s

This commit is contained in:
mgite 2024-11-19 12:53:56 +04:00
parent 60ce38d367
commit 7b00bbbe79
2 changed files with 13 additions and 3 deletions

View File

@ -22,6 +22,7 @@ class BrosseBankTransactions(models.Model):
_name = 'brosse.bank.transactions' _name = 'brosse.bank.transactions'
_description = 'Bank Transactions' _description = 'Bank Transactions'
_rec_name = 'document_number' _rec_name = 'document_number'
_order = 'create_date desc'
movement_id = fields.Char(string='Movement ID') movement_id = fields.Char(string='Movement ID')
external_payment_id = fields.Char(string='External Payment ID') external_payment_id = fields.Char(string='External Payment ID')
@ -109,3 +110,12 @@ class BrosseBankTransactions(models.Model):
'amount': rec.amount, 'amount': rec.amount,
'exchange_rate': rec.exchange_rate, 'exchange_rate': rec.exchange_rate,
}) })
def create(self, vals):
res = super(BrosseBankTransactions, self).create(vals)
all_patterns = self.env['hms.payment.categories.regex'].search([])
for pattern in all_patterns:
matching_transaction = pattern.search_transactions_with_wallet_and_domestic(pattern.regex, res)
if matching_transaction:
res.write({'category_id': pattern.category_id.id})
return res

View File

@ -12,9 +12,8 @@ class PaymentCategoriesRegex(models.Model):
regex = fields.Char('Regex', required=True) regex = fields.Char('Regex', required=True)
category_id = fields.Many2one(comodel_name="hms.payment.categories", string="Category") category_id = fields.Many2one(comodel_name="hms.payment.categories", string="Category")
def search_transactions_with_wallet_and_domestic(self, regex_patern): def search_transactions_with_wallet_and_domestic(self, regex_patern, transactions):
pattern = re.compile(regex_patern, re.IGNORECASE) pattern = re.compile(regex_patern, re.IGNORECASE)
transactions = self.env['brosse.bank.transactions'].search([('manually_assigned', '!=', True)])
matching_transactions = [] matching_transactions = []
for transaction in transactions: for transaction in transactions:
@ -28,7 +27,8 @@ class PaymentCategoriesRegex(models.Model):
def write(self, vals): def write(self, vals):
res = super(PaymentCategoriesRegex, self).write(vals) res = super(PaymentCategoriesRegex, self).write(vals)
matching_transactions = self.search_transactions_with_wallet_and_domestic(self.regex) transactions = self.env['brosse.bank.transactions'].search([('manually_assigned', '!=', True)])
matching_transactions = self.search_transactions_with_wallet_and_domestic(self.regex, transactions)
for transaction in matching_transactions: for transaction in matching_transactions:
transaction.write({'category_id': self.category_id.id}) transaction.write({'category_id': self.category_id.id})