Project
Function
Sample CLI
gway odoo fetch-quotes
References
['error']
Full Code
def fetch_quotes(
*,
state='draft',
older_than=None,
salesperson=None,
customer=None,
**kwargs
):
"""
Fetch quotes/quotations from Odoo with optional filters.
Parameters:
state (str): Filter quotations by their state. Default is 'draft'.
older_than (int, optional): Filter quotations older than a specific number of days.
salesperson (str, optional): Filter quotations by the salesperson's name or part of it.
customer (str, optional): Filter quotations by the customer's name or part of it.
kwargs (list, optional): Additional domain filters for the query.
Returns:
dict: The fetched quotations.
"""
model = 'sale.order'
method = 'search_read'
domain_filter = [('state', '=', state)]
if older_than:
cutoff_date = (datetime.now() - timedelta(days=older_than)).strftime('%Y-%m-%d')
domain_filter.append(('create_date', '<=', cutoff_date))
if salesperson:
domain_filter.append(('user_id.name', 'ilike', salesperson))
if customer:
domain_filter.append(('partner_id.name', 'ilike', customer))
if kwargs:
domain_filter.extend(kwargs)
fields_to_fetch = ['name', 'amount_total', 'create_date', 'user_id', 'partner_id']
try:
result = execute_kw(
[domain_filter], {'fields': fields_to_fetch},
model=model, method=method
)
return result
except Exception as e:
gw.error(f"Error fetching quotations: {e}")
raise