Merge pull request #6195 from expsa/14.0-fix-odex_benefit-auto-20260113_170517
[FIX] odex_benefit: fix issues and bugs
This commit is contained in:
commit
7471027d5e
|
|
@ -3,6 +3,9 @@
|
|||
from odoo import api, fields, models, tools, _
|
||||
from odoo.exceptions import ValidationError, UserError
|
||||
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
|
||||
import logging
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class FamilyBankReportXlsx(models.AbstractModel):
|
||||
|
|
@ -12,6 +15,11 @@ class FamilyBankReportXlsx(models.AbstractModel):
|
|||
|
||||
@api.model
|
||||
def generate_xlsx_report(self, workbook, data, objs):
|
||||
try:
|
||||
lines = data.get('lines', [])
|
||||
_logger.info("=== FAMILY BANK REPORT START ===")
|
||||
_logger.info("Total lines to process: %s", len(lines))
|
||||
|
||||
sheet = workbook.add_worksheet(_('Family Bank Report'))
|
||||
|
||||
header_format = workbook.add_format({
|
||||
|
|
@ -62,7 +70,8 @@ class FamilyBankReportXlsx(models.AbstractModel):
|
|||
|
||||
row = 3
|
||||
total_amount = 0
|
||||
for line in data['lines']:
|
||||
for idx, line in enumerate(lines):
|
||||
try:
|
||||
sheet.write(row, 0, line['bank_name'], normal)
|
||||
sheet.write(row, 1, line['account_number'], normal)
|
||||
sheet.write(row, 2, line['beneficiary_name'], normal)
|
||||
|
|
@ -74,6 +83,10 @@ class FamilyBankReportXlsx(models.AbstractModel):
|
|||
sheet.write(row, 8, line.get('beneficiary_email', ''), normal)
|
||||
total_amount += line['transfer_amount']
|
||||
row += 1
|
||||
except Exception as line_error:
|
||||
_logger.error("ERROR processing line %s: %s", idx, line_error)
|
||||
_logger.error("Line data: %s", line)
|
||||
raise
|
||||
|
||||
sheet.set_column('A:A', 25)
|
||||
sheet.set_column('B:B', 25)
|
||||
|
|
@ -84,3 +97,15 @@ class FamilyBankReportXlsx(models.AbstractModel):
|
|||
sheet.set_column('G:G', 25)
|
||||
sheet.set_column('H:H', 20)
|
||||
sheet.set_column('I:I', 30)
|
||||
|
||||
_logger.info("=== FAMILY BANK REPORT SUCCESS: %s rows, total amount: %s ===", len(lines), total_amount)
|
||||
|
||||
except Exception as e:
|
||||
_logger.error("=== FAMILY BANK REPORT FAILED ===")
|
||||
_logger.error("Error type: %s", type(e).__name__)
|
||||
_logger.error("Error message: %s", str(e))
|
||||
_logger.error("Data keys: %s", data.keys() if data else 'No data')
|
||||
_logger.error("Lines count: %s", len(data.get('lines', [])) if data else 0)
|
||||
import traceback
|
||||
_logger.error("Full traceback:\n%s", traceback.format_exc())
|
||||
raise
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@
|
|||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.tools import date_utils
|
||||
import logging
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class FamilyBankReportWizard(models.TransientModel):
|
||||
|
|
@ -32,16 +35,25 @@ class FamilyBankReportWizard(models.TransientModel):
|
|||
record.total_amount = sum(record.payment_order_ids.mapped('total_amount'))
|
||||
|
||||
def action_print_bank_report(self):
|
||||
try:
|
||||
_logger.info("=== WIZARD: action_print_bank_report START ===")
|
||||
_logger.info("Payment orders selected: %s", len(self.payment_order_ids))
|
||||
_logger.info("Payment order IDs: %s", self.payment_order_ids.ids)
|
||||
|
||||
if not self.payment_order_ids:
|
||||
raise UserError(_("Please select at least one Payment Order."))
|
||||
|
||||
moves = self.payment_order_ids.mapped('move_id')
|
||||
_logger.info("Moves found: %s", len(moves))
|
||||
|
||||
if not moves:
|
||||
raise UserError(_("Selected Payment Orders do not reference any posted moves."))
|
||||
|
||||
grouped = {}
|
||||
total_lines_processed = 0
|
||||
for move in moves:
|
||||
for line in move.line_ids.filtered(lambda l: l.debit > 0 and l.benefit_family_id):
|
||||
total_lines_processed += 1
|
||||
family = line.benefit_family_id
|
||||
key = family.id
|
||||
if key not in grouped:
|
||||
|
|
@ -60,6 +72,9 @@ class FamilyBankReportWizard(models.TransientModel):
|
|||
grouped[key]['transfer_amount'] += float(line.debit or 0.0)
|
||||
|
||||
lines_data = list(grouped.values())
|
||||
_logger.info("Total move lines processed: %s", total_lines_processed)
|
||||
_logger.info("Unique families (lines_data): %s", len(lines_data))
|
||||
|
||||
if not lines_data:
|
||||
raise UserError(_("No debit lines with family information found."))
|
||||
|
||||
|
|
@ -68,4 +83,24 @@ class FamilyBankReportWizard(models.TransientModel):
|
|||
'end_date': self.end_date,
|
||||
'lines': lines_data,
|
||||
}
|
||||
return self.env.ref('odex_benefit.action_family_bank_report_xlsx').report_action(self, data=datas)
|
||||
|
||||
# Log data size for debugging
|
||||
import json
|
||||
try:
|
||||
data_json = json.dumps(datas, default=str)
|
||||
_logger.info("Data size (bytes): %s", len(data_json))
|
||||
except Exception as json_err:
|
||||
_logger.warning("Could not serialize data for size check: %s", json_err)
|
||||
|
||||
_logger.info("=== WIZARD: Calling report_action ===")
|
||||
result = self.env.ref('odex_benefit.action_family_bank_report_xlsx').report_action(self, data=datas)
|
||||
_logger.info("=== WIZARD: report_action returned successfully ===")
|
||||
return result
|
||||
|
||||
except Exception as e:
|
||||
_logger.error("=== WIZARD: action_print_bank_report FAILED ===")
|
||||
_logger.error("Error type: %s", type(e).__name__)
|
||||
_logger.error("Error message: %s", str(e))
|
||||
import traceback
|
||||
_logger.error("Full traceback:\n%s", traceback.format_exc())
|
||||
raise
|
||||
|
|
|
|||
Loading…
Reference in New Issue