| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/10.0/framework_agreement |
| VERSION | |
| VERSION | 2.0.0 |
| CATEGORY | |
| CATEGORY | Purchase Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Camptocamp |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Stéphane Bidoul (ACSONE) |
| WEBSITE | |
| WEBSITE | http://www.camptocamp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:20:01 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - decimal_precision - base_setup - web_kanban - web - bus - web_tour - report - procurement - barcodes - web_planner - purchase - stock_account - account - analytic |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
add agreement setting on company |
add agreement setting on company | res.company | Inherits base.view_company_form | |
add_onchange_on_pruchase_order_form |
purchase_order_form | purchase.order | Inherits purchase.purchase_order_form | |
add_onchange_on_pruchase_order_line_form_standalone |
purchase_order_line_form | purchase.order.line | Inherits purchase.purchase_order_line_form | |
agreement in product view |
agreement in product view | product.product | Inherits product.product_normal_form_view | |
agreement_in_portfolio_form_view |
agreement_in_portfolio_form_view | framework.agreement | form | New |
framework_agreement_form_view |
framework agreement form | framework.agreement | form | New |
framework_agreement_list_view |
framework agreement list view | framework.agreement | tree | New |
framework_agreement_search_view |
framework_agreement_search_view | framework.agreement | search | New |
portfolio_form_view |
portfolio_form_view | framework.agreement.portfolio | form | New |
portfolio_search_view |
portfolio_search_view | framework.agreement.portfolio | search | New |
portfolio_tree_view |
portfolio_tree_view | framework.agreement.portfolio | tree | New |
No HTTP endpoints found for this module.
available_quantity
Integer
compute='_get_available_qty'
default=0
readonly=True
store=True
string='Available quantity'
clauses
Html
company_id
Many2one → res.company
readonly=True
related='portfolio_id.company_id'
args: 'res.company', 'Company'
delay
Integer
delivery_remark
Text
draft
Boolean
end_date
Date
framework_agreement_pricelist_ids
One2many → framework.agreement.pricelist
incoterm_address
Char
incoterm_id
Many2one → stock.incoterms
help='International Commercial Terms are a series of predefined commercial terms used in international transactions.'
args: 'stock.incoterms', 'Incoterm'
name
Char
readonly=True
args: 'Number'
origin
Char
payment_term_id
Many2one → account.payment.term
portfolio_id
Many2one → framework.agreement.portfolio
required=True
args: 'framework.agreement.portfolio', 'Portfolio'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
purchase_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='framework_agreement_id'
quantity
Integer
required=True
args: 'Negociated quantity'
shipment_origin_id
Many2one → res.partner
start_date
Date
state
Selection
compute='_get_state'
search='_search_state'
selection=[('draft', 'Draft'), ('future', 'Future'), ('running', 'Running'), ('consumed', 'Consumed'), ('closed', 'Closed')]
string='State'
supplier_id
Many2one → res.partner
readonly=True
related='portfolio_id.supplier_id'
args: 'res.partner', 'Supplier'
check_overlap(self)
create(self, vals)
get_agreement_domain(self, product_id, qty, portfolio_id=None, date_planned=None, incoterm_id=None, incoterm_address=None)
get_all_product_agreements(self, product_id, lookup_dt, qty=None)
get_cheapest_agreement_for_qty(self, product_id, date, qty, currency=None)
get_price(self, qty=0, currency=None)
get_product_agreement(self, product_id, supplier_id, lookup_dt, qty=None)
has_currency(self, currency)
open_agreement(self, strict=True)
framework_agreement_pricelist_id
Many2one → framework.agreement.pricelist
required=True
args: 'framework.agreement.pricelist', 'Price list'
price
Float
digits=dp.get_precision('Product Price')
required=True
string='Negociated price'
quantity
Integer
required=True
args: 'Quantity'
No public methods.
agreement_ids
One2many → framework.agreement
company_id
Many2one → res.company
default=_company_get
args: 'res.company', 'Company'
name
Char
required=True
args: 'Name'
supplier_id
Many2one → res.partner
required=True
args: 'res.partner', 'Supplier'
get_from_supplier(self, supplier)
currency_id
Many2one → res.currency
required=True
args: 'res.currency', 'Currency'
framework_agreement_id
Many2one → framework.agreement
required=True
args: 'framework.agreement', 'Agreement'
framework_agreement_line_ids
One2many → framework.agreement.line
required=True
args: 'framework.agreement.line', 'framework_agreement_pricelist_id', 'Price lines'
No public methods.
No new fields.
Public methods (1)price_get(self, cr, uid, ids, prod_id, qty, partner=None, context=None)
framework_agreement_ids
One2many → framework.agreement
comodel_name='framework.agreement'
copy=False
inverse_name='product_id'
string='Framework Agreements (LTA)'
No public methods.
portfolio_id
Many2one → framework.agreement.portfolio
domain="[('supplier_id', '=', partner_id)]"
args: 'framework.agreement.portfolio', 'Portfolio'
onchange_partner_id(self, partner_id)
update_agreements_in_lines(self)
update_currency_from_pricelist(self)
framework_agreement_id
Many2one → framework.agreement
domain=[('portfolio_id', '=', 'order_id.portfolio_id')]
args: 'framework.agreement', 'Agreement'
portfolio_id
Many2one → framework.agreement.portfolio
readonly=True
related='order_id.portfolio_id'
args: 'framework.agreement.portfolio', 'Portfolio'
onchange_agreement(self)
onchange_price_unit(self)
onchange_product_id(self, pricelist_id, product_id, qty, uom_id, partner_id, date_order=False, fiscal_position_id=False, date_planned=False, name=False, price_unit=False, state='draft')
one_agreement_per_product
Boolean
help='If checked you can have only one framework agreement per product at the same time.'
args: 'One agreement per product'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/9.0/framework_agreement |
| VERSION | |
| VERSION | 2.0.0 |
| CATEGORY | |
| CATEGORY | Purchase Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Camptocamp |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Stéphane Bidoul (ACSONE) |
| WEBSITE | |
| WEBSITE | http://www.camptocamp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:23 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/server-tools: - web_context_tunnel odoo/odoo: - stock - product - base - decimal_precision - base_setup - web_kanban - web - bus - report - procurement - barcodes - web_planner - purchase - stock_account - account - analytic - web_tip |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
add agreement setting on company |
add agreement setting on company | res.company | Inherits base.view_company_form | |
add_onchange_on_pruchase_order_form |
purchase_order_form | purchase.order | Inherits purchase.purchase_order_form | |
add_onchange_on_pruchase_order_line_form_standalone |
purchase_order_line_form | purchase.order.line | Inherits purchase.purchase_order_line_form | |
agreement in product view |
agreement in product view | product.product | Inherits product.product_normal_form_view | |
agreement_in_portfolio_form_view |
agreement_in_portfolio_form_view | framework.agreement | form | New |
framework_agreement_form_view |
framework agreement form | framework.agreement | form | New |
framework_agreement_list_view |
framework agreement list view | framework.agreement | tree | New |
framework_agreement_search_view |
framework_agreement_search_view | framework.agreement | search | New |
portfolio_form_view |
portfolio_form_view | framework.agreement.portfolio | form | New |
portfolio_search_view |
portfolio_search_view | framework.agreement.portfolio | search | New |
portfolio_tree_view |
portfolio_tree_view | framework.agreement.portfolio | tree | New |
No HTTP endpoints found for this module.
available_quantity
Integer
compute='_get_available_qty'
default=0
readonly=True
store=True
string='Available quantity'
clauses
Html
company_id
Many2one → res.company
readonly=True
related='portfolio_id.company_id'
args: 'res.company', 'Company'
delay
Integer
delivery_remark
Text
draft
Boolean
end_date
Date
framework_agreement_pricelist_ids
One2many → framework.agreement.pricelist
incoterm_address
Char
incoterm_id
Many2one → stock.incoterms
help='International Commercial Terms are a series of predefined commercial terms used in international transactions.'
args: 'stock.incoterms', 'Incoterm'
name
Char
readonly=True
args: 'Number'
origin
Char
payment_term_id
Many2one → account.payment.term
portfolio_id
Many2one → framework.agreement.portfolio
required=True
args: 'framework.agreement.portfolio', 'Portfolio'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
purchase_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='framework_agreement_id'
quantity
Integer
required=True
args: 'Negociated quantity'
shipment_origin_id
Many2one → res.partner
start_date
Date
state
Selection
compute='_get_state'
search='_search_state'
selection=[('draft', 'Draft'), ('future', 'Future'), ('running', 'Running'), ('consumed', 'Consumed'), ('closed', 'Closed')]
string='State'
supplier_id
Many2one → res.partner
readonly=True
related='portfolio_id.supplier_id'
args: 'res.partner', 'Supplier'
check_overlap(self)
create(self, vals)
get_agreement_domain(self, product_id, qty, portfolio_id=None, date_planned=None, incoterm_id=None, incoterm_address=None)
get_all_product_agreements(self, product_id, lookup_dt, qty=None)
get_cheapest_agreement_for_qty(self, product_id, date, qty, currency=None)
get_price(self, qty=0, currency=None)
get_product_agreement(self, product_id, supplier_id, lookup_dt, qty=None)
has_currency(self, currency)
open_agreement(self, strict=True)
framework_agreement_pricelist_id
Many2one → framework.agreement.pricelist
required=True
args: 'framework.agreement.pricelist', 'Price list'
price
Float
digits=dp.get_precision('Product Price')
required=True
string='Negociated price'
quantity
Integer
required=True
args: 'Quantity'
No public methods.
agreement_ids
One2many → framework.agreement
company_id
Many2one → res.company
default=_company_get
args: 'res.company', 'Company'
name
Char
required=True
args: 'Name'
supplier_id
Many2one → res.partner
required=True
args: 'res.partner', 'Supplier'
get_from_supplier(self, supplier)
currency_id
Many2one → res.currency
required=True
args: 'res.currency', 'Currency'
framework_agreement_id
Many2one → framework.agreement
required=True
args: 'framework.agreement', 'Agreement'
framework_agreement_line_ids
One2many → framework.agreement.line
required=True
args: 'framework.agreement.line', 'framework_agreement_pricelist_id', 'Price lines'
No public methods.
No new fields.
Public methods (1)price_get(self, cr, uid, ids, prod_id, qty, partner=None, context=None)
framework_agreement_ids
One2many → framework.agreement
comodel_name='framework.agreement'
copy=False
inverse_name='product_id'
string='Framework Agreements (LTA)'
No public methods.
portfolio_id
Many2one → framework.agreement.portfolio
domain="[('supplier_id', '=', partner_id)]"
args: 'framework.agreement.portfolio', 'Portfolio'
onchange_partner_id(self, partner_id)
update_agreements_in_lines(self)
update_currency_from_pricelist(self)
framework_agreement_id
Many2one → framework.agreement
domain=[('portfolio_id', '=', 'order_id.portfolio_id')]
args: 'framework.agreement', 'Agreement'
portfolio_id
Many2one → framework.agreement.portfolio
readonly=True
related='order_id.portfolio_id'
args: 'framework.agreement.portfolio', 'Portfolio'
onchange_agreement(self)
onchange_price_unit(self)
onchange_product_id(self, pricelist_id, product_id, qty, uom_id, partner_id, date_order=False, fiscal_position_id=False, date_planned=False, name=False, price_unit=False, state='draft')
one_agreement_per_product
Boolean
help='If checked you can have only one framework agreement per product at the same time.'
args: 'One agreement per product'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/8.0/framework_agreement |
| VERSION | |
| VERSION | 2.0.0 |
| CATEGORY | |
| CATEGORY | Purchase Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Camptocamp |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Yannick Vaucher, Alexandre Fayolle, Leonardo Pistone, Pedro M. Baeza, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate |
| WEBSITE | |
| WEBSITE | http://www.camptocamp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:11:26 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/server-tools: - web_context_tunnel odoo/odoo: - stock - product - base - decimal_precision - base_setup - web_kanban - web - report - procurement - board - web_kanban_gauge - web_kanban_sparkline - purchase - stock_account - account - analytic - edi - email_template |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
add agreement setting on company |
add agreement setting on company | res.company | Inherits base.view_company_form | |
add_onchange_on_pruchase_order_form |
purchase_order_form | purchase.order | Inherits purchase.purchase_order_form | |
add_onchange_on_pruchase_order_line_form_standalone |
purchase_order_line_form | purchase.order.line | Inherits purchase.purchase_order_line_form | |
agreement in product view |
agreement in product view | product.product | Inherits product.product_normal_form_view | |
agreement_in_portfolio_form_view |
agreement_in_portfolio_form_view | framework.agreement | form | New |
framework_agreement_form_view |
framework agreement form | framework.agreement | form | New |
framework_agreement_list_view |
framework agreement list view | framework.agreement | tree | New |
framework_agreement_search_view |
framework_agreement_search_view | framework.agreement | search | New |
portfolio_form_view |
portfolio_form_view | framework.agreement.portfolio | form | New |
portfolio_search_view |
portfolio_search_view | framework.agreement.portfolio | search | New |
portfolio_tree_view |
portfolio_tree_view | framework.agreement.portfolio | tree | New |
No HTTP endpoints found for this module.
available_quantity
Integer
compute='_get_available_qty'
default=0
readonly=True
store=True
string='Available quantity'
clauses
Html
company_id
Many2one → res.company
readonly=True
related='portfolio_id.company_id'
args: 'res.company', 'Company'
delay
Integer
delivery_remark
Text
draft
Boolean
end_date
Date
framework_agreement_pricelist_ids
One2many → framework.agreement.pricelist
incoterm_address
Char
incoterm_id
Many2one → stock.incoterms
help='International Commercial Terms are a series of predefined commercial terms used in international transactions.'
args: 'stock.incoterms', 'Incoterm'
name
Char
readonly=True
args: 'Number'
origin
Char
payment_term_id
Many2one → account.payment.term
portfolio_id
Many2one → framework.agreement.portfolio
required=True
args: 'framework.agreement.portfolio', 'Portfolio'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
purchase_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='framework_agreement_id'
quantity
Integer
required=True
args: 'Negociated quantity'
shipment_origin_id
Many2one → res.partner
start_date
Date
state
Selection
compute='_get_state'
search='_search_state'
selection=[('draft', 'Draft'), ('future', 'Future'), ('running', 'Running'), ('consumed', 'Consumed'), ('closed', 'Closed')]
string='State'
supplier_id
Many2one → res.partner
readonly=True
related='portfolio_id.supplier_id'
args: 'res.partner', 'Supplier'
check_overlap(self)
create(self, vals)
get_agreement_domain(self, product_id, qty, portfolio_id=None, date_planned=None, incoterm_id=None, incoterm_address=None)
get_all_product_agreements(self, product_id, lookup_dt, qty=None)
get_cheapest_agreement_for_qty(self, product_id, date, qty, currency=None)
get_price(self, qty=0, currency=None)
get_product_agreement(self, product_id, supplier_id, lookup_dt, qty=None)
has_currency(self, currency)
open_agreement(self, strict=True)
framework_agreement_pricelist_id
Many2one → framework.agreement.pricelist
required=True
args: 'framework.agreement.pricelist', 'Price list'
price
Float
digits=dp.get_precision('Product Price')
required=True
string='Negociated price'
quantity
Integer
required=True
args: 'Quantity'
No public methods.
agreement_ids
One2many → framework.agreement
company_id
Many2one → res.company
default=_company_get
args: 'res.company', 'Company'
name
Char
required=True
args: 'Name'
supplier_id
Many2one → res.partner
required=True
args: 'res.partner', 'Supplier'
get_from_supplier(self, supplier)
currency_id
Many2one → res.currency
required=True
args: 'res.currency', 'Currency'
framework_agreement_id
Many2one → framework.agreement
required=True
args: 'framework.agreement', 'Agreement'
framework_agreement_line_ids
One2many → framework.agreement.line
required=True
args: 'framework.agreement.line', 'framework_agreement_pricelist_id', 'Price lines'
No public methods.
No new fields.
Public methods (1)price_get(self, cr, uid, ids, prod_id, qty, partner=None, context=None)
framework_agreement_ids
One2many → framework.agreement
comodel_name='framework.agreement'
copy=False
inverse_name='product_id'
string='Framework Agreements (LTA)'
No public methods.
portfolio_id
Many2one → framework.agreement.portfolio
domain="[('supplier_id', '=', partner_id)]"
args: 'framework.agreement.portfolio', 'Portfolio'
onchange_partner_id(self, partner_id)
update_agreements_in_lines(self)
update_currency_from_pricelist(self)
framework_agreement_id
Many2one → framework.agreement
domain=[('portfolio_id', '=', 'order_id.portfolio_id')]
args: 'framework.agreement', 'Agreement'
portfolio_id
Many2one → framework.agreement.portfolio
readonly=True
related='order_id.portfolio_id'
args: 'framework.agreement.portfolio', 'Portfolio'
onchange_agreement(self)
onchange_price_unit(self)
onchange_product_id(self, pricelist_id, product_id, qty, uom_id, partner_id, date_order=False, fiscal_position_id=False, date_planned=False, name=False, price_unit=False, state='draft')
one_agreement_per_product
Boolean
help='If checked you can have only one framework agreement per product at the same time.'
args: 'One agreement per product'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/7.0/framework_agreement |
| VERSION | |
| VERSION | 0.1.1 |
| CATEGORY | |
| CATEGORY | Purchase Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Camptocamp |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Yannick Vaucher, Romain Deheele, Alexandre Fayolle, Leonardo Pistone, Nicolas Bessi, unknown, OCA Transbot |
| WEBSITE | |
| WEBSITE | http://www.camptocamp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:07:15 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - process - web - decimal_precision - base_setup - web_kanban - account - analytic - board - edi - email_template - procurement - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | Long Term Agreement (or Framework Agreement) on price. ====================================================== Agreements are defined by a product, a date range , a supplier, a price, a lead time and agreed quantity. Agreements are set on a product view or using a menu in the product configuration. There can be only one agreement for the same supplier and product at the same time, even if we may have different prices depending on lead time/qty. There is an option on company to restrict one agreement per product at same time. If an agreement is running its price will be automatically used in PO. A warning will be raised in case of exhaustion of override of agreement price. **Technical aspect** The module provide an observalbe mixin to enable generic on_change management on various model related to agreements. The framework agreement is by default related to purchase order but the addon provides a library to integrate it with any other model easily |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
add agreement setting on company |
add agreement setting on company | res.company | Inherits base.view_company_form | |
add_onchange_on_pruchase_order_form |
add onchange on pruchase form | purchase.order | Inherits purchase.purchase_order_form | |
add_onchange_on_pruchase_order_line_form_standalone |
add onchange on pruchase order line form standalone | purchase.order.line | Inherits purchase.purchase_order_line_form | |
agreement in product view |
agreement in product view | product.product | group | Inherits product.product_normal_form_view |
framework_agreement_form_view |
framework agreement form | framework.agreement | form | New |
framework_agreement_list_view |
framework agreement list view | framework.agreement | tree | New |
No HTTP endpoints found for this module.
No new fields.
Public methods (9)check_overlap(self, cr, uid, ids, context=None)
create(self, cr, uid, vals, context=None)
date_valid(self, cr, uid, agreement_id, date, context=None)
get_all_product_agreements(self, cr, uid, product_id, lookup_dt, qty=None, context=None)
get_cheapest_agreement_for_qty(self, cr, uid, product_id, date, qty, currency=None, context=None)
get_price(self, cr, uid, agreement_id, qty=0, currency=None, context=None)
get_product_agreement(self, cr, uid, product_id, supplier_id, lookup_dt, qty=None, context=None)
has_currency(self, cr, uid, agr_id, currency, context=None)
open_agreement(self, cr, uid, ids, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)price_get(self, cr, uid, ids, prod_id, qty, partner=None, context=None)
No new fields.
Public methods (1)copy(self, cr, uid, id, default=None, context=None)
No new fields.
Public methods (4)onchange_agreement(self, cr, uid, ids, agreement_id, partner_id, date, context=None)
onchange_date(self, cr, uid, ids, agreement_id, date, context=None)
onchange_partner_id(self, cr, uid, ids, partner_id, agreement_id)
onchange_pricelist(self, cr, uid, ids, pricelist_id, line_ids, context=None)
No new fields.
Public methods (2)onchange_price(self, cr, uid, ids, price, agreement_id, qty, pricelist_id, product_id, context=None)
onchange_product_id(self, cr, uid, ids, pricelist_id, product_id, qty, uom_id, partner_id, date_order=False, fiscal_position_id=False, date_planned=False, name=False, price_unit=False, context=None, agreement_id=False, **kwargs)
No new fields.
Public methods (0)No public methods.