Project
Function
Sample CLI
gway odoo create-quote
References
['error']
Full Code
def create_quote(*, customer, template_id, validity=None, notes=None):
"""
Create a new quotation using a specified template and customer name.
Parameters:
customer (str): The name (or partial name) of the customer to link to the quote.
template_id (int): The ID of the quotation template to use.
validity (str, optional): The expiration date for the quote in 'YYYY-MM-DD' format.
notes (str, optional): Internal notes or message to include in the quote.
Returns:
dict: The created quotation details.
"""
# Step 1: Lookup the customer ID
customer_result = fetch_customers(name=customer)
if not customer_result:
return {'error': f"No customer found matching name: {customer}"}
customer_id = customer_result[0]['id']
# Step 2: Create the quote using the template
model = 'sale.order'
method = 'create'
values = {
'partner_id': customer_id,
'sale_order_template_id': template_id,
}
if validity:
values['validity_date'] = validity
if notes:
values['note'] = notes
try:
quote_id = execute_kw(
[values], {},
model=model, method=method
)
except Exception as e:
gw.error(f"Error creating quote: {e}")
raise
# Step 3: Return full quote details
return fetch_order(quote_id)