[ADD]: Add event_items one2many fields into event form view.

bzr revid: atp@tinyerp.com-20120502070722-3twkfw14q89nznuo
This commit is contained in:
Atul Patel (OpenERP) 2012-05-02 12:37:22 +05:30
parent 4443f39f38
commit 2d6fba0621
5 changed files with 184 additions and 114 deletions

View File

@ -221,7 +221,6 @@ class event_event(osv.osv):
'company_id': fields.many2one('res.company', 'Company', required=False, change_default=True, readonly=False, states={'done': [('readonly', True)]}),
'is_subscribed' : fields.function(_subscribe_fnc, type="boolean", string='Subscribed'),
'location_id': fields.many2one('res.partner','Organization Address', readonly=False, states={'done': [('readonly', True)]}),
}
_defaults = {
@ -259,7 +258,6 @@ class event_event(osv.osv):
_constraints = [
(_check_closing_date, 'Error ! Closing Date cannot be set before Beginning Date.', ['date_end']),
]
def onchange_event_type(self, cr, uid, ids, type_event, context=None):
if type_event:
type_info = self.pool.get('event.type').browse(cr,uid,type_event,context)

View File

@ -45,42 +45,124 @@
<menuitem name="Configuration" id="base.menu_marketing_config_root" parent="event_main_menu" sequence="30"/>
<menuitem name="Types of Events" id="menu_event_type" action="action_event_type" parent="base.menu_marketing_config_root" groups="base.group_no_one"/>
<!-- Event Item Tree view-->
<record model="ir.ui.view" id="view_event_items_tree">
<field name="name">Event Items Tree</field>
<field name="model">event.items</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Event Items">
<field name="product_id" string="Ticket Type" />
<field name="uom_id"/>
<field name="sales_end_date"/>
<field name="price"/>
<field name="qty"/>
</tree>
</field>
</record>
<!-- Event Item Form View -->
<record model="ir.ui.view" id="view_event_items_form">
<field name="name">Event Items Form</field>
<field name="model">event.items</field>
<!-- Events Organisation/CONFIGURATION/EVENTS -->
<record model="ir.ui.view" id="view_event_form">
<field name="name">Events</field>
<field name="model">event.event</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Event Items">
<field name="product_id" on_change="onchange_product_id(product_id)"/>
<field name="price"/>
<field name="qty"/>
<field name="uom_id"/>
<field name="discount"/>
<field name="sales_end_date"/>
</form>
<form string="Events" layout="manual">
<div class="oe_form_topbar">
<button string="Cancel Event" name="button_cancel" states="draft,confirm" type="object" icon="gtk-cancel"/>
<button string="Confirm Event" name="button_confirm" states="draft" type="object" icon="gtk-apply"/>
<button string="Event Done" name="button_done" states="confirm" type="object" icon="gtk-jump-to"/>
<button string="Set To Draft" name="button_draft" states="cancel,done" type="object" icon="gtk-convert"/>
<div class="oe_right">
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
</div>
</div>
<sheet string="Event Form" layout="auto">
<group colspan="4">
<group colspan="2">
<field name="name"/>
<field name="type" on_change="onchange_event_type(type,context)"/>
<field name="user_id"/>
</group>
<group colspan="2">
<div class="oe_mapbox oe_right"> </div><newline/>
<table align="right">
<tr>
<td width="70px" class="oe_td_border">
Where
</td>
<td width="150px">
<field name="address_id" nolabel="1"/>
</td>
<td width="auto">
<table>
<tr>
<td class="oe_td_date_border">Start: </td><td><field name="date_begin" nolabel="1"/></td>
</tr>
<tr>
<td class="oe_td_date_border">End</td><td><field name="date_end" nolabel="1"/></td>
</tr>
</table>
</td>
</tr>
</table>
</group>
</group>
<notebook colspan="4">
<page string="Event">
<separator string="Description" colspan="4"/>
<field name="note" colspan="4" nolabel="1"/>
<field name="registration_ids" colspan="4" nolabel="1" groups="event.group_event_manager,event.group_event_user">
<tree string="Registration" editable="top">
<field name="name" />
<field name="email" />
<field name="phone"/>
<field name="nb_register" />
<field name="state"/>
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_close" string="Attented the Event" states="open" type="object" icon="gtk-jump-to"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
</tree>
<form string="Registration">
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)" />
<field name="name"/>
<group colspan="4" col="4">
<field name="email"/>
<field name="phone"/>
</group>
<group colspan="4" col="4">
<field name="nb_register"/>
</group>
<group colspan="4" col="4">
</group>
<group col="8" colspan="4">
<separator string="" colspan="4"/>
<newline/>
<field name="state" select="1" colspan="2"/>
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
</group>
</form>
</field>
<field name="state" select="1" widget="statusbar" statusbar_visible="draft,confirm,done"/>
</page>
<page string="Speakers">
<field name="main_speaker_id" domain="[('speaker','=',True)]"/>
<field name="speaker_confirmed"/>
<separator string="Other Speakers" colspan="4"/>
<field name="speaker_ids" domain="[('speaker','=',True)]" colspan="4" nolabel="1"/>
</page>
<page string="Extra Info">
<group col="2" colspan="2">
<separator string="Registrations" colspan="2"/>
<field name="register_min"/>
<field name="register_max"/>
<field name="register_prospect"/>
<field name="register_current"/>
<field name="register_attended"/>
</group>
<group col="2" colspan="2">
<separator string="Emails" colspan="2"/>
<field name="reply_to"/>
<field name="email_registration_id" domain="[('model_id.model','=','event.registration')]"/>
<field name="email_confirmation_id" domain="[('model_id.model','=','event.registration')]"/>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<!-- Events Organisation/CONFIGURATION/EVENTS -->
<record model="ir.ui.view" id="view_event_form">
<!-- Event Page view -->
<record model="ir.ui.view" id="view_event_page">
<field name="name">Events</field>
<field name="model">event.event</field>
<field name="type">form</field>
@ -126,7 +208,6 @@
<td class="oe_td_date_border">End</td><td><field name="date_end" nolabel="1"/></td>
</tr>
</table>
</td>
</tr>
</table>
@ -169,7 +250,6 @@
</group>
</form>
</field>
</page>
<page string="Speakers" groups="base.group_extended">
<field name="main_speaker_id" domain="[('speaker','=',True)]"/>
@ -198,8 +278,8 @@
</form>
</field>
</record>
<!-- Event tree view -->
<!-- Event tree view -->
<record model="ir.ui.view" id="view_event_tree">
<field name="name">event.event.tree</field>

View File

@ -133,13 +133,14 @@ div.oe_fold_column{
border:1px solid black;
margin-left:auto;
margin-right:auto;
text-align: right;
}
.oe_td_border
{
width: 5em;
padding: 2px;
border-right: 1px solid black;
text-align: center;
}
.oe_td_date_border
{

View File

@ -35,6 +35,7 @@ class product(osv.osv):
product()
class sale_order_line(osv.osv):
_inherit = 'sale.order.line'
_columns = {
@ -98,75 +99,70 @@ class event_event(osv.osv):
_columns = {
'event_item_ids': fields.one2many('event.items','event_id', 'Event Items'),
}
def make_quotation(self, cr, uid, ids, context=None):
res = {}
event_pool = self.pool.get('event.event')
register_pool = self.pool.get('event.registration')
sale_order_line_pool = self.pool.get('sale.order.line')
sale_order = self.pool.get('sale.order')
partner_pool = self.pool.get("res.partner")
prod_pricelist_obj = self.pool.get('product.pricelist')
user = self.pool.get("res.users").browse(cr, uid, uid, context=context)
partner_ids = partner_pool.search(cr, uid, [('name', '=', user.name), ('email', '=', user.user_email)])
if not partner_ids:
new_partner_id = partner_pool.create(cr, uid, {'name': user.name, 'email': user.user_email})
partner_invoice_id = partner_pool.address_get(cr, uid, [new_partner_id], ['invoice'])['invoice']
partner_shipping_id = partner_pool.address_get(cr, uid, [new_partner_id], ['delivery'])['delivery']
else:
new_partner_id = partner_ids[0]
partner_invoice_id = partner_pool.address_get(cr, uid, [new_partner_id], ['invoice'])['invoice']
partner_shipping_id = partner_pool.address_get(cr, uid, [new_partner_id], ['delivery'])['delivery']
for event_id in self.browse(cr, uid, ids, context=context):
sale_order_lines = []
price_list = prod_pricelist_obj.search(cr,uid,[],context=context)[0]
sale_ids = sale_order.search(cr, uid, [('date_order', '=', event_id.date_begin), ('partner_id', '=', new_partner_id)])
if not sale_ids:
# raise osv.except_osv(_('Error !'),
# _('sale order is already Exists for this event:'))
# else:
new_sale_id = sale_order.create(cr, uid, {
'date_order': event_id.date_begin,
'pricelist_id': price_list,
'partner_id': new_partner_id,
'partner_invoice_id': partner_invoice_id,
'partner_shipping_id': partner_shipping_id
})
if event_id.event_item_ids:
for items in event_id.event_item_ids:
product = items.product_id.id
sale_order_line = sale_order_line_pool.create(cr, uid, {
'order_id': new_sale_id,
'name': items.product_id.name,
'product_uom_qty': items.qty,
'product_id': items.product_id.id,
'product_uom': items.uom_id.id,
'price_unit': items.price,
'date_planned': items.sales_end_date,
}, context=context)
view_id = data_obj._get_id(cr, uid, 'sale', 'view_order_form')
if view_id:
res_id = data_obj.browse(cr, uid, view_id, context=context).res_id
res = {
'name': _('Quotation'),
'view_type': 'form',
'view_mode': 'form',
'res_model': 'sale.order',
'res_id': new_sale_id,
'views':[(res_id,'form'), (False, 'tree')],
'type': 'ir.actions.act_window',
'nodestroy': True,
'target': 'current',
}
return res
# def subscribe_to_event(self, cr, uid, ids, context=None):
# res = {}
# event_pool = self.pool.get('event.event')
# register_pool = self.pool.get('event.registration')
# sale_order_line_pool = self.pool.get('sale.order.line')
# sale_order = self.pool.get('sale.order')
# partner_pool = self.pool.get("res.partner")
# data_obj = self.pool.get("ir.model.data")
# prod_pricelist_obj = self.pool.get('product.pricelist')
# user = self.pool.get("res.users").browse(cr, uid, uid, context=context)
# partner_ids = partner_pool.search(cr, uid, [('name', '=', user.name), ('email', '=', user.user_email)])
# if not partner_ids:
# new_partner_id = partner_pool.create(cr, uid, {'name': user.name, 'email': user.user_email})
# partner_invoice_id = partner_pool.address_get(cr, uid, [new_partner_id], ['invoice'])['invoice']
# partner_shipping_id = partner_pool.address_get(cr, uid, [new_partner_id], ['delivery'])['delivery']
# else:
# new_partner_id = partner_ids[0]
# partner_invoice_id = partner_pool.address_get(cr, uid, [new_partner_id], ['invoice'])['invoice']
# partner_shipping_id = partner_pool.address_get(cr, uid, [new_partner_id], ['delivery'])['delivery']
# for event_id in self.browse(cr, uid, ids, context=context):
# sale_order_lines = []
# price_list = prod_pricelist_obj.search(cr,uid,[],context=context)[0]
# new_sale_id = sale_order.create(cr, uid, {
# 'date_order': event_id.date_begin,
# 'pricelist_id': price_list,
# 'partner_id': new_partner_id,
# 'partner_invoice_id': partner_invoice_id,
# 'partner_shipping_id': partner_shipping_id
# })
# if event_id.event_item_ids:
# for items in event_id.event_item_ids:
# product = items.product_id.id
# sale_order_line = sale_order_line_pool.create(cr, uid, {
# 'order_id': new_sale_id,
# 'name': items.product_id.name,
# 'product_uom_qty': items.qty,
# 'product_id': items.product_id.id,
# 'price_unit': items.price,
# 'date_planned': items.sales_end_date,
# }, context=context)
# view_id = data_obj._get_id(cr, uid, 'sale', 'view_order_form')
# if view_id:
# res_id = data_obj.browse(cr, uid, view_id, context=context).res_id
# res = {
# 'name': _('Quotation'),
# 'view_type': 'form',
# 'view_mode': 'form',
# 'res_model': 'sale.order',
# 'res_id': new_sale_id,
# 'views':[(res_id,'form'), (False, 'tree')],
# 'type': 'ir.actions.act_window',
# 'nodestroy': True,
# 'target': 'current',
# }
# return res
class event_items(osv.osv):
_name = "event.items"
_columns = {
'product_id': fields.many2one('product.product', 'Product', required=True),
'qty': fields.integer('Quantity'),
'price': fields.integer('Price'),
'uom_id': fields.many2one('product.uom', 'Unit of Measure'),
'qty': fields.integer('QTY'),
# 'qty': fields.selection(_max_register, 'QTY'),
'uom_id': fields.many2one('product.uom', 'UoM'),
'discount': fields.integer('Discount'),
'event_id': fields.many2one('event.event', 'Event'),
'sales_end_date': fields.date('Sales End')

View File

@ -36,11 +36,10 @@
<field name="type">form</field>
<field name="inherit_id" ref="event.view_event_form"/>
<field name="arch" type="xml">
<xpath expr="//group[@name='venue']" position="after">
<field name="event_item_ids" nolabel="1"/><newline/>
<div class="oe_right">
<button string="Order Now" name="make_quotation" help="Order Event" type="object" icon="gtk-ok" attrs="{'invisible':[('state','=','confirm')]}"/>
</div>
<xpath expr="//notebook/page[@string='Extra Info']" position="after">
<page string="Event Items">
<field name="event_item_ids" nolabel="1"/>
</page>
</xpath>
</field>
</record>
@ -51,17 +50,16 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree editable="top" string="Event Items">
<field name="product_id"/>
<field name="product_id" domain="[('event_ok','=',True)]" on_change="onchange_product_id(product_id)"/>
<field name="price"/>
<field name="uom_id" invisible="1"/>
<field name="qty"/>
<field name="uom_id"/>
<field name="discount"/>
<field name="sales_end_date"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_event_items_form">
<field name="name">Event Items Form</field>
<field name="model">event.items</field>
@ -71,13 +69,10 @@
<field name="product_id" domain="[('event_ok','=',True)]" on_change="onchange_product_id(product_id)"/>
<field name="price"/>
<field name="qty"/>
<field name="uom_id"/>
<field name="discount"/>
<field name="sales_end_date"/>
</form>
</field>
</record>
</data>
</openerp>