import sys import os import argparse from datetime import date def main(): parser = argparse.ArgumentParser(description="Check Auto Post Status of Draft Depreciation Entries") parser.add_argument("odoo_bin_path", help="Path to odoo-bin executable") parser.add_argument("conf_path", help="Path to odoo.conf") parser.add_argument("db_name", help="Database name") args = parser.parse_args() odoo_bin_path = os.path.abspath(args.odoo_bin_path) conf_path = os.path.abspath(args.conf_path) db_name = args.db_name odoo_dir = os.path.dirname(odoo_bin_path) if odoo_dir not in sys.path: sys.path.insert(0, odoo_dir) os.chdir(os.path.dirname(conf_path)) try: import odoo from odoo import api, SUPERUSER_ID except ImportError: print(f"Error: Could not import 'odoo' module.") sys.exit(1) print(f"Initializing Odoo Environment for database: {db_name}...") try: odoo.tools.config.parse_config(['-c', conf_path]) registry = odoo.registry(db_name) except Exception as e: print(f"Error initializing Odoo: {e}") return with registry.cursor() as cr: env = api.Environment(cr, SUPERUSER_ID, {}) print("Connected to Odoo.") check_assets(env) def check_assets(env): assets = env['account.asset'].search([('state', '=', 'open')], limit=5) print(f"Checking first {len(assets)} running assets...") for asset in assets: print(f"\nAsset: {asset.name}") draft_moves = asset.depreciation_move_ids.filtered(lambda m: m.state == 'draft') if not draft_moves: print(" No draft moves found.") continue print(f" Found {len(draft_moves)} draft moves.") # Check distinct auto_post values auto_post_values = set(draft_moves.mapped('auto_post')) print(f" 'auto_post' values in draft moves: {auto_post_values}") for move in draft_moves[:3]: print(f" - Date: {move.date}, auto_post: {move.auto_post}") if __name__ == "__main__": main()