odoo_utility_scripts/check_auto_post.py

66 lines
2.1 KiB
Python

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()