ARP1 / app.py
ZeeAI1's picture
Create app.py
aa6544c verified
raw
history blame
2.41 kB
import json
import xmlrpc.client
from transformers import pipeline
# --- CONFIGURATION ---
ODOO_URL = "https://your-odoo-instance.com"
ODOO_DB = "your-database"
ODOO_USERNAME = "your-username"
ODOO_PASSWORD = "your-password"
ACCOUNT_ID = 41 # Replace with correct expense account ID
# --- 1. LOAD NLP MODEL ---
print("Loading Hugging Face model...")
model = pipeline("text2text-generation", model="google/flan-t5-base")
# --- 2. GET USER PROMPT ---
user_prompt = input("Enter your accounting prompt:\n> ")
# --- 3. NLP PROCESSING ---
formatted_prompt = (
f"Extract as JSON with fields transaction_type, vendor_name, amount, date, description from: {user_prompt}"
)
result = model(formatted_prompt, max_length=256)[0]['generated_text']
print("\nRaw Model Output:\n", result)
# --- 4. PARSE JSON ---
try:
output_data = json.loads(result)
except json.JSONDecodeError:
print("\nERROR: Failed to parse output as JSON. Please adjust model or prompt.")
exit(1)
# Debug print
print("\nParsed Data:\n", output_data)
vendor_name = output_data['vendor_name']
amount = float(output_data['amount'])
invoice_date = output_data['date']
description = output_data['description']
# --- 5. CONNECT TO ODOO ---
print("\nConnecting to Odoo...")
common = xmlrpc.client.ServerProxy(f"{ODOO_URL}/xmlrpc/2/common")
uid = common.authenticate(ODOO_DB, ODOO_USERNAME, ODOO_PASSWORD, {})
models = xmlrpc.client.ServerProxy(f"{ODOO_URL}/xmlrpc/2/object")
# --- 6. FIND OR CREATE VENDOR ---
partner_id = models.execute_kw(ODOO_DB, uid, ODOO_PASSWORD, 'res.partner', 'search', [[['name', '=', vendor_name]]])
if not partner_id:
partner_id = models.execute_kw(ODOO_DB, uid, ODOO_PASSWORD, 'res.partner', 'create', [{
'name': vendor_name,
'supplier_rank': 1
}])
print(f"Vendor '{vendor_name}' created with ID {partner_id}")
else:
partner_id = partner_id[0]
print(f"Vendor '{vendor_name}' found with ID {partner_id}")
# --- 7. CREATE VENDOR BILL ---
invoice_id = models.execute_kw(ODOO_DB, uid, ODOO_PASSWORD, 'account.move', 'create', [{
'move_type': 'in_invoice',
'partner_id': partner_id,
'invoice_date': invoice_date,
'invoice_line_ids': [(0, 0, {
'name': description,
'quantity': 1,
'price_unit': amount,
'account_id': ACCOUNT_ID,
})],
}])
print(f"\nVendor Bill Created Successfully in Odoo! Invoice ID: {invoice_id}")