New wizard design

This commit is contained in:
Cédric Krier committed 2012-01-02 18:09:31 +01:00
1 parent b6913934f2
commit f38ce361e6
2 files changed
+87 -113

No files matched your search

+80 -106
View File
@@ -5,7 +5,8 @@ import operator
from itertools import groupby
from functools import partial
from trytond.model import ModelView, ModelSQL, fields
from trytond.wizard import Wizard
from trytond.wizard import Wizard, StateView, StateAction, StateTransition, \
Button
from trytond.pyson import If, In, Eval, Get
from trytond.transaction import Transaction
from trytond.pool import Pool
@@ -427,51 +428,32 @@ class PurchaseRequest(ModelSQL, ModelView):
PurchaseRequest()
class CreatePurchaseRequestInit(ModelView):
'Create Purchase Request Init'
_name = 'purchase.request.create_purchase_request.init'
class CreatePurchaseRequestStart(ModelView):
'Create Purchase Request'
_name = 'purchase.request.create.start'
_description = __doc__
CreatePurchaseRequestInit()
CreatePurchaseRequestStart()
class CreatePurchaseRequest(Wizard):
'Create Purchase Request'
_name = 'purchase.request.create_purchase_request'
_name = 'purchase.request.create'
states = {
'init': {
'result': {
'type': 'form',
'object': 'purchase.request.create_purchase_request.init',
'state': [
('end', 'Cancel', 'tryton-cancel'),
('create', 'Create', 'tryton-ok', True),
],
},
},
'create': {
'actions': ['_create_purchase_request'],
'result': {
'type': 'action',
'action': '_open',
'state': 'end',
},
},
}
start = StateView('purchase.request.create.start',
'stock_supply.purchase_request_create_start_view_form', [
Button('Cancel', 'end', 'tryton-cancel'),
Button('Create', 'create_', 'tryton-ok', default=True),
])
create_ = StateAction('stock_supply.act_purchase_request_form_draft')
def _create_purchase_request(self, data):
def do_create_(self, sesion, action):
purchase_request_obj = Pool().get('purchase.request')
purchase_request_obj.generate_requests()
return {}
return action, {}
def _open(self, data):
pool = Pool()
model_data_obj = pool.get('ir.model.data')
act_window_obj = pool.get('ir.action.act_window')
act_window_id = model_data_obj.get_id('stock_supply',
'act_purchase_request_form_draft')
return act_window_obj.read(act_window_id)
def transition_create_(self, session):
return 'end'
CreatePurchaseRequest()
@@ -501,41 +483,17 @@ class CreatePurchase(Wizard):
'Create Purchase'
_name = 'purchase.request.create_purchase'
states = {
'init': {
'result': {
'type': 'choice',
'next_state': '_create_purchase',
},
},
'ask_user_party': {
'actions': ['_set_default_party'],
'result': {
'type': 'form',
'object': 'purchase.request.create_purchase.ask_party',
'state': [
('end', 'Cancel', 'tryton-cancel'),
('init', 'Continue', 'tryton-go-next', True),
],
},
},
'ask_user_term': {
'actions': ['_set_default_term'],
'result': {
'type': 'form',
'object': 'purchase.request.create_purchase.ask_term',
'state': [
('end', 'Cancel', 'tryton-cancel'),
('init', 'Continue', 'tryton-go-next', True),
],
},
},
}
start = StateTransition()
ask_party = StateView('purchase.request.create_purchase.ask_party',
'stock_supply.purchase_request_create_purchase_ask_party', [
Button('Cancel', 'end', 'tryton-cancel'),
Button('Continue', 'start', 'tryton-go-next', default=True),
])
ask_term = StateView('purchase.request.create_purchase.ask_term',
'stock_supply.purchase_request_create_purchase_ask_term_view_form', [
Button('Cancel', 'end', 'tryton-cancel'),
Button('Continue', 'start', 'tryton-go-next', default=True),
])
def __init__(self):
super(CreatePurchase, self).__init__()
@@ -544,29 +502,37 @@ class CreatePurchase(Wizard):
'please_update': 'This price is necessary for creating purchase.'
})
def _set_default_party(self, data):
def default_ask_party(self, session, fields):
request_obj = Pool().get('purchase.request')
requests = request_obj.browse(data['ids'])
requests = request_obj.browse(Transaction().context['active_ids'])
for request in requests:
if request.purchase_line:
continue
if not request.party:
return {'product': request.product.id,'company': request.company.id}
return {'product': request.product.id,'company': request.company.id}
def _set_default_term(self, data):
return {
'product': request.product.id,
'company': request.company.id,
}
return {
'product': request.product.id,
'company': request.company.id,
}
def default_ask_term(self, session, fields):
request_obj = Pool().get('purchase.request')
requests = request_obj.browse(data['ids'])
requests = request_obj.browse(Transaction().context['active_ids'])
for request in requests:
if (not request.party) or request.purchase_line:
continue
if not request.party.supplier_payment_term:
return {'party': request.party.id,'company': request.company.id}
return {'party': request.party.id,'company': request.company.id}
return {
'party': request.party.id,
'company': request.company.id,
}
return {
'party': request.party.id,
'company': request.company.id,
}
def _group_purchase_key(self, requests, request):
'''
@@ -589,7 +555,7 @@ class CreatePurchase(Wizard):
type='invoice')),
)
def _create_purchase(self, data):
def transition_start(self, session):
pool = Pool()
request_obj = pool.get('purchase.request')
party_obj = pool.get('party.party')
@@ -597,38 +563,46 @@ class CreatePurchase(Wizard):
line_obj = pool.get('purchase.line')
date_obj = pool.get('ir.date')
form = data['form']
if form.get('product') and form.get('party') and \
form.get('company'):
req_ids = request_obj.search([
('id', 'in', data['ids']),
('party', '=', False),
])
if req_ids:
request_obj.write(req_ids, {'party': form['party']})
request_ids = Transaction().context['active_ids']
elif form.get('payment_term') and form.get('party') and \
form.get('company'):
with Transaction().set_context(company=form['company']):
party_obj.write(form['party'],{
'supplier_payment_term': form['payment_term']
})
if (session.ask_party.product
and session.ask_party.party
and session.ask_party.company):
req_ids = request_obj.search([
('id', 'in', request_ids),
('party', '=', False),
])
if req_ids:
request_obj.write(req_ids, {'party': session.ask_party.id})
session.ask_party.product = False
session.ask_party.party = False
session.ask_party.company = False
elif (session.ask_term.payment_term
and session.ask_term.party
and session.ask_term.company):
with Transaction().set_context(company=session.ask_term.company.id):
party_obj.write(session.ask_term.party.id, {
'supplier_payment_term': \
session.ask_term.payment_term.id,
})
session.ask_term.payment_term = False
session.ask_term.party = False
session.ask_term.company = False
req_ids = request_obj.search([
('id', 'in', data['ids']),
('purchase_line', '=', False),
('party', '=', False),
])
('id', 'in', request_ids),
('purchase_line', '=', False),
('party', '=', False),
])
if req_ids:
return 'ask_user_party'
return 'ask_party'
today = date_obj.today()
requests = request_obj.browse(data['ids'])
purchases = {}
requests = request_obj.browse(request_ids)
requests = [r for r in requests if not r.purchase_line]
if any(r for r in requests if not r.party.supplier_payment_term):
return 'ask_user_term'
return 'ask_term'
keyfunc = partial(self._group_purchase_key, requests)
requests = sorted(requests, key=keyfunc)
+7 -7
View File
@@ -112,13 +112,13 @@ this repository contains the full copyright notices and license terms. -->
<menuitem parent="menu_purchase_request_form" sequence="20"
action="act_purchase_request_form_draft" id="menu_purchase_request_form_draft"/>
<record model="ir.action.wizard" id="act_purchase_request_create_purchase_request">
<record model="ir.action.wizard" id="act_purchase_request_create">
<field name="name">Create Purchase Requests</field>
<field name="wiz_name">purchase.request.create_purchase_request</field>
<field name="wiz_name">purchase.request.create</field>
</record>
<record model="ir.ui.view" id="create_purchase_request_init_view_form">
<field name="model">purchase.request.create_purchase_request.init</field>
<record model="ir.ui.view" id="purchase_request_create_start_view_form">
<field name="model">purchase.request.create.start</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
@@ -133,10 +133,10 @@ this repository contains the full copyright notices and license terms. -->
</record>
<menuitem parent="menu_purchase_request_form" sequence="10"
action="act_purchase_request_create_purchase_request"
id="menu_create_purchase_request"/>
action="act_purchase_request_create"
id="menu_purchase_request_create"/>
<record model="ir.ui.view" id="purchase_request_create_purchase_ask_view_form">
<record model="ir.ui.view" id="purchase_request_create_purchase_ask_term_view_form">
<field name="model">purchase.request.create_purchase.ask_term</field>
<field name="type">form</field>
<field name="arch" type="xml">