Skip to content

Instantly share code, notes, and snippets.

@priyankahdp
Created March 25, 2013 06:49

Revisions

  1. priyankahdp created this gist Mar 25, 2013.
    336 changes: 336 additions & 0 deletions bpl.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,336 @@
    from openerp.osv import fields, osv
    import random

    class bpl_officer_registration(osv.osv):
    _name = "bpl.officer"
    _description = "Officer registration details"
    _columns = {
    'bpl_company_id':fields.many2one('bpl.company.n.registration', 'Company', help='Company'),
    'bpl_estate_id':fields.many2one('bpl.estate.n.registration', 'Estate', help='Estate'),
    'nic_no': fields.char('NIC No', size=32, help='NIC No'),
    'name': fields.char('Name with Initials', size=256, help='Name it to easily find a record'),
    'address_home_id': fields.many2one('res.partner', 'Home Address'),
    }

    bpl_officer_registration()

    class bpl_worker_registration(osv.osv):

    def on_change_indic_cost(self, cr, uid, ids, cost_ids, context=None):
    totalsum = 0.0
    for element in cost_ids:
    totalsum += element[1]
    return {
    'value': {
    'sum_cost': totalsum,
    }
    }

    def on_change_company(self, cr, uid, ids, company_id, context=None):
    if not company_id:
    return {'value': {
    'bpl_estate_id': False
    }}
    company = self.pool.get('bpl.company.n.registration').browse(cr, uid, company_id, context=context)
    estatelist = company.estates
    if estatelist:
    return {
    'value': {
    'bpl_estate_id': estatelist[0].id
    }
    }

    else:
    return {
    'value': {
    'bpl_estate_id': False
    }
    }

    def on_change_estate(self, cr, uid, ids, estate_id, context=None):
    if not estate_id:
    return {'value': {
    'bpl_estate_id': False
    }}
    estate = self.pool.get('bpl.estate.n.registration').browse(cr, uid, estate_id, context=context)
    divisionslist = estate.divisions
    if divisionslist:
    return {
    'value': {
    'bpl_division_id': divisionslist[0].id
    }
    }
    else:
    return {
    'value': {
    'bpl_division_id': False
    }
    }

    def create(self, cr, uid, values, context=None):
    values['register_no'] = self.pool.get('ir.sequence').get(cr, uid, 'bpl.worker')
    return super(bpl_worker_registration, self).create(cr, uid, values, context=context)

    def _get_result(self, cr, uid, ids, prop, unknow_none, context=None):
    res = {}
    for record in self.browse(cr, uid, ids, context=context):
    res[record.id] = 'BPL001/' + record.register_no
    return res

    _name = "bpl.worker"
    _description = "Worker registration details"
    _columns = {
    'bpl_company_id':fields.many2one('bpl.company.n.registration', 'Company', help='Company'),
    'bpl_estate_id':fields.many2one('bpl.estate.n.registration', 'Estate', help='Estate'),
    'bpl_division_id':fields.many2one('bpl.division.n.registration', 'Division', help='Division'),
    'register_no': fields.char('Register No', size=32, help='Register No'),
    # 'epf_no': fields.char('EPF No', size=32, help='EPF No'),
    'epf_no': fields.function(_get_result, string='EPF No', type='char'),
    'epf': fields.boolean('EPF', help="EPF eligible or not"),
    'nic_no': fields.char('NIC No', size=32, help='NIC No'),
    'name': fields.char('Name with Initials', size=256, help='Name it to easily find a record'),
    'name_in_full': fields.char('Name in Full', size=256, help='Name it to easily find a record'),
    'date_of_birth': fields.date('Date of Birth'),
    'gender': fields.selection([('male', 'Male'), ('female', 'Female')], 'Gender'),
    'civil_status': fields.selection([('single', 'Single'), ('married', 'Married')], 'Civil Status'),
    'is_married': fields.boolean('Married', help="Is Married or not"),
    'father_name': fields.char('Father Name', size=256, help='Father Name'),
    'mother_name': fields.char('Mother Name', size=256, help='Mother Name'),
    'spouse_name': fields.char('Spouse Name', size=256, help='Spouse Name'),
    'date_appointed': fields.date('Date Appointed'),
    'religion_id': fields.many2one('bpl.religion', 'Religions', help='Religion'),
    'festival_id': fields.many2one('bpl.festival', 'Festival', help='Festival'),
    'status': fields.selection([('permanent', 'Permanent'), ('casual', 'Casual')], 'Category'),
    'date_of_approval': fields.date('Date of Approval'),
    'default_work': fields.selection([('tea', 'Tea'), ('rubber', 'Rubber'), ('sundry', 'Sundry')], 'Default Work'),
    'union_id': fields.many2one('bpl.union', 'Union', help='Union'),
    'estate_resident': fields.boolean('Estate Resident', help="Estate resident or not"),
    'address_home_id': fields.many2one('res.partner', 'Home Address'),
    'occupation_code': fields.char('Occupation Code', size=32, help='Occupation Code'),
    'is_active': fields.boolean('Inactive', help="Is active or not"),
    'current_status': fields.selection([('active', 'Active'), ('inactive', 'Inactive'), ('suspend', 'Suspend'), ('terminate', 'Terminate'), ('dismiss', 'Dismiss')], 'Current Status'),
    }

    bpl_worker_registration()

    class relegion_registration(osv.osv):
    _name = "bpl.religion"
    _description = "Religions"
    _columns = {
    'name': fields.char('Religion Name', size=256, required=True, help='Religion Name'),
    }

    relegion_registration()

    class festival_registration(osv.osv):
    _name = "bpl.festival"
    _description = "Festivals"
    _columns = {
    'name': fields.char('Festival Name', size=256, required=True, help='Festival Name'),
    }

    festival_registration()

    class union_registration(osv.osv):
    _name = "bpl.union"
    _description = "Unions"
    _columns = {
    'name': fields.char('Union Name', size=256, required=True, help='Union Name'),
    }

    union_registration()

    class company_define(osv.osv):

    def onchange_is_company(self, cr, uid, ids, is_company, context=None):
    print('this works my on change')
    return {'value': {'min': is_company}}

    _name = "bpl.company.define"
    _description = "Company Definition"
    _columns = {
    'department_id':fields.many2one('hr.department', 'Division', required=True, help='Division'),
    'is_company': fields.boolean('Numbering Unit', help="Is company or not"),
    'min_no': fields.integer('Min'),
    'max_no': fields.integer('Max'),
    'current_no': fields.integer('Current No'),
    }

    company_define()


    class employer_epf(osv.osv):
    _name = "bpl.employer.epf"
    _description = "Employer's EPF no"
    _columns = {
    'department_id': fields.many2one('hr.department', 'Organization Unit', required=True),
    'epf_no': fields.char('EPF No', size=32, required=True, help='EPF No'),
    }

    employer_epf()

    class bpl_work_offer(osv.osv):
    _name = "bpl.work.offer"
    _description = "BPL Work Offer"
    _columns = {
    'user_id': fields.many2one('res.users', 'User Name'),
    'date_of_offer': fields.date('Date'),
    'bpl_estate_id':fields.many2one('bpl.estate.n.registration', 'Estate', help='Estate'),
    'bpl_division_id':fields.many2one('bpl.division.n.registration', 'Division', help='Division'),
    'payment_type': fields.selection([('normal_work', 'Normal Work'), ('cash_work', 'Cash Work')], 'Payment Type'),
    'select_by': fields.selection([('by_name', 'By Names'), ('by_count', 'By Count')], 'Select By'),
    'no_of_workers': fields.integer('No of Workers'),
    'work_type': fields.selection([('tea', 'Tea'), ('rubber', 'Rubber'), ('sundry', 'Sundry')], 'Work Type'),
    'total_workers': fields.integer('Total Workers'),
    'selected_tea_workers_line_ids': fields.one2many('bpl.selected.tea.workers.line', 'worker_id', 'Tea Workers', ondelete="cascade"),
    'selected_rubber_workers_line_ids': fields.one2many('bpl.selected.rubber.workers.line', 'worker_id', 'Rubber Workers', ondelete="cascade"),
    'selected_sundry_workers_line_ids': fields.one2many('bpl.selected.sundry.workers.line', 'worker_id', 'Sundry Workers', ondelete="cascade"),
    }

    bpl_work_offer()

    class selected_tea_workers_line_ids(osv.osv):
    _name = 'bpl.selected.tea.workers.line'
    _description = 'BPL Selected Tea Workers line'
    _columns = {
    'worker_id':fields.many2one('bpl.worker', 'Tea Worker', ondelete='cascade', help='Worker'),
    'is_selected': fields.boolean('Select', help="Selected or not"),
    }

    selected_tea_workers_line_ids()

    class selected_rubber_workers_line_ids(osv.osv):
    _name = 'bpl.selected.rubber.workers.line'
    _description = 'BPL Selected Rubber Workers line'
    _columns = {
    'worker_id':fields.many2one('bpl.worker', 'Rubber Worker', ondelete='cascade', help='Worker'),
    'is_selected': fields.boolean('Select', help="Selected or not"),
    }

    selected_rubber_workers_line_ids()

    class selected_sundry_workers_line_ids(osv.osv):
    _name = 'bpl.selected.sundry.workers.line'
    _description = 'BPL Selected Sundry Workers line'
    _columns = {
    'worker_id':fields.many2one('bpl.worker', 'Sundry Worker', ondelete='cascade', help='Worker'),
    'is_selected': fields.boolean('Select', help="Selected or not"),
    }

    selected_sundry_workers_line_ids()

    class company_estate_division(osv.osv):
    _name = 'bpl.company.estate.division'
    _description = 'bpl company estate division mapping'
    _columns = {
    'bpl_company_id':fields.many2one('bpl.company.n.registration', 'Company', help='Company'),
    'bpl_estate_id':fields.many2one('bpl.estate.n.registration', 'Estate', help='Estate'),
    'bpl_division_id':fields.many2one('bpl.division.n.registration', 'Division', help='Division'),
    }

    company_estate_division()
    #######################################################################################################
    class company_new_registration(osv.osv):
    _name = "bpl.company.n.registration"
    _description = "Company"
    _columns = {
    'name': fields.char('Company Name', size=128, required=True),
    'estates': fields.one2many('bpl.estate.n.registration', 'company_id', 'Estate')
    }
    # Bill of Material
    company_new_registration()

    class estate_new_registration(osv.osv):
    _name = "bpl.estate.n.registration"
    _description = "Estates"
    _columns = {
    'name': fields.char('Estate Name', size=128, required=True),
    'company_id': fields.many2one('bpl.company.n.registration', 'Company Name', select=True),
    'divisions': fields.one2many('bpl.division.n.registration', 'estate_id', 'Division')
    }

    estate_new_registration()

    class division_new_registration(osv.osv):
    _name = "bpl.division.n.registration"
    _description = "Divisions"
    _columns = {
    'name': fields.char('Division Name', size=128, required=True),
    'estate_id': fields.many2one('bpl.estate.n.registration', 'Estate Name', select=True),
    }

    division_new_registration()


    # //////////////////////////////////////////////Work update//////////////////////////////////////////////////////////////////////

    class sundry_work_registration(osv.osv):
    _name = "bpl.sundry.work.registration"
    _description = "Sundry Works"
    _columns = {
    'name': fields.char('Work Name', size=256, required=True, help='Work Name'),
    }

    sundry_work_registration()

    class bpl_work_update(osv.osv):
    _name = "bpl.work.update"
    _description = "BPL Work Update"
    _columns = {
    'user_id': fields.many2one('res.users', 'User Name'),
    'bpl_division_id':fields.many2one('bpl.division.n.registration', 'Division', help='Division'),
    'date_of_offer': fields.date('Date'),
    'ref_no': fields.char('Reference No', size=10, required=True),
    'check_roll_no': fields.char('Check Roll No', size=10, required=True),
    'gang_no': fields.char('Gang No', size=10, required=True),
    'work_type': fields.selection([('tea', 'Tea'), ('rubber', 'Rubber'), ('sundry', 'Sundry')], 'Work Type'),
    'payment_type': fields.selection([('normal_work', 'Normal Work'), ('cash_work', 'Cash Work')], 'Payment Type'),
    'total_workers': fields.integer('Total Workers'),
    'selected_tea_workers_update_line_ids': fields.one2many('bpl.selected.tea.workers.update.line', 'work_id', 'Tea Work Offers', ondelete="cascade"),
    'selected_rubber_workers_update_line_ids': fields.one2many('bpl.selected.rubber.workers.update.line', 'work_id', 'Rubber Offers', ondelete="cascade"),
    'selected_sundry_workers_update_line_ids': fields.one2many('bpl.selected.sundry.workers.update.line', 'work_id', 'Sundry Offers', ondelete="cascade"),
    }

    bpl_work_update()
    # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    class selected_tea_workers_update_line_ids(osv.osv):
    _name = 'bpl.selected.tea.workers.update.line'
    _description = 'BPL Selected Tea update Workers line'
    _columns = {
    'work_id':fields.many2one('bpl.work.offer', 'Tea Work Offers', ondelete='cascade', help='Work Offers'),

    'tea_norm':fields.integer('Norm - Tea'),
    'tea_hrs_worked':fields.integer('Hours worked'),
    'tea_total_kgs':fields.integer('Total Kgs'),
    'tea_over_kgs':fields.integer('Over Kgs'),
    }

    selected_tea_workers_update_line_ids()

    class selected_rubber_workers_update_line_ids(osv.osv):
    _name = 'bpl.selected.rubber.workers.update.line'
    _description = 'BPL Selected Rubber Workers line'
    _columns = {
    'work_id':fields.many2one('bpl.work.offer', 'Rubber Work Offers', ondelete='cascade', help='Work Offers'),

    'rubber_norm':fields.integer('Norm - Rubber'),
    'rubber_hrs_worked':fields.integer('Hours worked'),
    'rubber_total_kgs':fields.integer('Total Kgs'),
    'rubber_over_kgs':fields.integer('Over Kgs'),
    'rubber_scrap_kgs':fields.integer('Scrap Kgs'),
    }

    selected_rubber_workers_update_line_ids()

    class selected_sundry_workers_update_line_ids(osv.osv):
    _name = 'bpl.selected.sundry.workers.update.line'
    _description = 'BPL Selected Sundry Workers line'
    _columns = {
    'work_id':fields.many2one('bpl.work.offer', 'Sundry Work Offers', ondelete='cascade', help='Work Offers'),

    'sundry_hrs_worked':fields.integer('Hours worked'),
    'sundry_work_id':fields.many2one('bpl.sundry.work.registration', 'Sundry Work', help='Sundry Work'),
    }

    selected_sundry_workers_update_line_ids()
    460 changes: 460 additions & 0 deletions view.xml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,460 @@
    <?xml version="1.0"?>
    <openerp>
    <data>
    <record model="ir.ui.view" id="bpl_worker_registration_form">
    <field name="name">bpl.worker.form</field>
    <field name="model">bpl.worker</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
    <form string="bpl_worker_registration">
    <group>
    <group>
    <field name="bpl_company_id" on_change="on_change_company(bpl_company_id)" />
    <field name="bpl_estate_id" on_change="on_change_estate(bpl_estate_id)" />
    <field name="bpl_division_id" />
    <field name="register_no" readonly="True" />
    <field name="epf_no" />
    <field name="epf" />
    <field name="nic_no" />
    </group>
    <group>

    <field name="name" />
    <field name="date_of_birth" />
    <field name="gender" />
    <field name="is_married" />
    <field name="spouse_name" attrs="{'invisible':[('is_married','=',False)]}" />
    </group>
    <group>
    <field name="father_name" />
    <field name="mother_name" />
    <field name="date_appointed" />
    <field name="status" />
    <field name="religion_id" />
    <field name="festival_id" invisible="True" />
    <field name="date_of_approval" invisible="True" />
    </group>
    <group>
    <field name="default_work" />
    <field name="union_id" />
    <field name="address_home_id" />
    <field name="estate_resident" />
    <field name="occupation_code" attrs="{'invisible':[('estate_resident','=',False)]}" />
    <field name="is_active" />
    <field name="current_status" attrs="{'invisible':[('is_active','=',False)]}" />
    </group>
    </group>
    </form>
    </field>
    </record>

    <record id="bpl_worker_registration_tree" model="ir.ui.view">
    <field name="name">bpl.worker.tree</field>
    <field name="model">bpl.worker</field>
    <field name="arch" type="xml">
    <tree string="bpl_worker_registration">
    <field name="name" />
    <field name="register_no" />
    <field name="nic_no" />
    <field name="bpl_division_id" />
    <field name="default_work" />
    </tree>
    </field>
    </record>


    <record model="ir.ui.view" id="bpl_officer_registration_form">
    <field name="name">bpl.officer.form</field>
    <field name="model">bpl.officer</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
    <form string="bpl_officer_registration">
    <group>
    <group>
    <field name="bpl_company_id" />
    <field name="bpl_estate_id" />
    <field name="nic_no" />
    <field name="name" />
    <field name="address_home_id" />
    </group>
    </group>
    </form>
    </field>
    </record>

    <record id="bpl_officer_registration_tree" model="ir.ui.view">
    <field name="name">bpl.officer.tree</field>
    <field name="model">bpl.officer</field>
    <field name="arch" type="xml">
    <tree string="bpl_officer_registration">
    <field name="bpl_company_id" />
    <field name="bpl_estate_id" />
    <field name="name" />
    <field name="nic_no" />
    </tree>
    </field>
    </record>



    <record model="ir.actions.act_window" id="bpl_officer_registration_action">
    <field name="name">bpl.officer.action</field>
    <field name="res_model">bpl.officer</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
    </record>

    <record model="ir.actions.act_window" id="bpl_worker_registration_action">
    <field name="name">bpl.worker.action</field>
    <field name="res_model">bpl.worker</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
    </record>

    <record model="ir.ui.view" id="bpl_religion_registration_form">
    <field name="name">bpl.religion.form</field>
    <field name="model">bpl.religion</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
    <form string="bpl_religion_registration">
    <field name="name" />
    </form>
    </field>
    </record>

    <record model="ir.actions.act_window" id="bpl_religion_registration_action">
    <field name="name">bpl.religion.action</field>
    <field name="res_model">bpl.religion</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
    </record>

    <record model="ir.ui.view" id="bpl_festival_registration_form">
    <field name="name">bpl.festival.form</field>
    <field name="model">bpl.festival</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
    <form string="bpl_festival_registration">
    <field name="name" />
    </form>
    </field>
    </record>

    <record model="ir.actions.act_window" id="bpl_festival_registration_action">
    <field name="name">bpl.festival.action</field>
    <field name="res_model">bpl.festival</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
    </record>

    <record model="ir.ui.view" id="bpl_union_registration_form">
    <field name="name">bpl.union.form</field>
    <field name="model">bpl.union</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
    <form string="bpl_union_registration">
    <field name="name" />
    </form>
    </field>
    </record>

    <record model="ir.ui.view" id="bpl_company_define_form">
    <field name="name">bpl.company.define.form</field>
    <field name="model">bpl.company.define</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
    <form string="bpl_company_define">
    <field name="department_id" />
    <field name="is_company" />
    <field name="min_no" attrs="{'invisible':[('is_company','=',False)]}" />
    <field name="max_no" attrs="{'invisible':[('is_company','=',False)]}" />
    <field name="current_no" attrs="{'readonly':[('is_company','=',False)]}" />
    </form>
    </field>
    </record>

    <record model="ir.ui.view" id="bpl_company_define_tree">
    <field name="name">bpl.company.define.tree</field>
    <field name="model">bpl.company.define</field>
    <field name="type">tree</field>
    <field name="arch" type="xml">
    <form string="bpl_company_define">
    <field name="department_id" />
    <field name="is_company" />
    <field name="min_no" attrs="{'invisible':[('is_company','=',False)]}" />
    <field name="max_no" attrs="{'invisible':[('is_company','=',False)]}" />
    <field name="current_no" readonly="1" />
    </form>
    </field>
    </record>

    <record model="ir.actions.act_window" id="bpl_company_define_action">
    <field name="name">bpl.company.define.action</field>
    <field name="res_model">bpl.company.define</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
    </record>


    <record model="ir.actions.act_window" id="bpl_union_registration_action">
    <field name="name">bpl.union.action</field>
    <field name="res_model">bpl.union</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
    </record>

    <record model="ir.ui.view" id="bpl_employer_epf_form">
    <field name="name">bpl.employer.epf.form</field>
    <field name="model">bpl.employer.epf</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
    <form string="bpl_employer_epf">
    <field name="department_id" />
    <field name="epf_no" />
    </form>
    </field>
    </record>

    <record id="bpl_employer_epf_tree" model="ir.ui.view">
    <field name="name">bpl.employer.epf.tree</field>
    <field name="model">bpl.employer.epf</field>
    <field name="arch" type="xml">
    <tree string="bpl_employer_epf">
    <field name="department_id" />
    <field name="epf_no" />
    </tree>
    </field>
    </record>

    <record model="ir.actions.act_window" id="bpl_employer_empno_action">
    <field name="name">bpl.employer.epf.action</field>
    <field name="res_model">bpl.employer.epf</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
    </record>


    <!-- ####################################################Work Offer#################################################### -->
    <record model="ir.ui.view" id="bpl_work_offer_form">
    <field name="name">bpl.work.offer.form</field>
    <field name="model">bpl.work.offer</field>
    <field name="arch" type="xml">
    <form string='bpl_work_offer' version='7.0'>
    <sheet>

    <group>
    <group>
    <field name='bpl_estate_id' />
    <field name='bpl_division_id' />
    <field name='user_id' />
    </group>
    <group>
    <field name='date_of_offer' />
    <field name='payment_type' />
    <field name='select_by' />
    <field name='no_of_workers' attrs="{'invisible':[('select_by','=','by_name')]}" />
    <field name='work_type' />

    </group>
    </group>
    <div name="Worker Selection"></div>
    <separator string='Select workers' />
    <notebook attrs="{'invisible':[('select_by','=','by_count')]}">
    <page string="Tea Workers" attrs="{'readonly':[('work_type','!=','tea')]}">
    <field name='selected_tea_workers_line_ids' nolabel='1'>
    <tree string='List' editable='bottom'>
    <field name='worker_id' />
    <field name='is_selected' />
    </tree>
    </field>
    <group class='oe_subtotal_footer oe_right'>
    <field name='total_workers' />
    </group>
    <br />
    <br />
    </page>
    <page string="Rubber Workers" attrs="{'readonly':[('work_type','!=','rubber')]}">
    <field name='selected_rubber_workers_line_ids' nolabel='1'>
    <tree string='List' editable='bottom'>
    <field name='worker_id' />
    <field name='is_selected' />
    </tree>
    </field>
    <group class='oe_subtotal_footer oe_right'>
    <field name='total_workers' />
    </group>
    <br />
    <br />
    </page>
    <page string="Sundry Workers" attrs="{'readonly':[('work_type','!=','sundry')]}">
    <field name='selected_sundry_workers_line_ids' nolabel='1'>
    <tree string='List' editable='bottom'>
    <field name='worker_id' />
    <field name='is_selected' />
    </tree>
    </field>
    <group class='oe_subtotal_footer oe_right'>
    <field name='total_workers' />
    </group>
    <br />
    <br />
    </page>
    </notebook>
    </sheet>
    </form>
    </field>
    </record>

    <record model="ir.actions.act_window" id="bpl_work_offer_action">
    <field name="name">bpl.work.offer.action</field>
    <field name="res_model">bpl.work.offer</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
    </record>

    <!-- ################################################################################################## -->
    <record model="ir.actions.act_window" id="bpl_company_n_registration_action">
    <field name="name">bpl_company_n_registration</field>
    <field name="res_model">bpl.company.n.registration</field>
    </record>

    <record model="ir.actions.act_window" id="bpl_estate_n_registration_action">
    <field name="name">bpl_estate_n_registration</field>
    <field name="res_model">bpl.estate.n.registration</field>
    </record>

    <record model="ir.actions.act_window" id="bpl_sundry_work_registration_action">
    <field name="name">bpl_sundry_work_registration</field>
    <field name="res_model">bpl.sundry.work.registration</field>
    </record>

    <record model="ir.actions.act_window" id="bpl_division_n_registration_action">
    <field name="name">bpl_division_n_registration</field>
    <field name="res_model">bpl.division.n.registration</field>
    </record>


    <!-- #################################################### Work Update #################################################### -->
    <record model="ir.ui.view" id="bpl_work_update_form">
    <field name="name">bpl.work.update.form</field>
    <field name="model">bpl.work.update</field>
    <field name="arch" type="xml">
    <form string='bpl_work_update' version='7.0'>
    <sheet>

    <group>
    <group>
    <field name='user_id' />
    <field name='bpl_division_id' />
    <field name='date_of_offer' />
    </group>
    <group>
    <field name='ref_no' />
    <field name='check_roll_no' />
    <field name='gang_no' />
    <field name='work_type' />
    <field name='payment_type' />
    <field name='total_workers' />
    </group>
    </group>
    <div name="Worker Selection"></div>
    <separator string='Select Work Offers' />
    <notebook >
    <page string="Tea Workers" >
    <field name='selected_tea_workers_update_line_ids'
    nolabel='1'>
    <tree string='List' editable='bottom'>
    <field name='tea_norm' />
    <field name='tea_hrs_worked' />
    <field name='tea_total_kgs' />
    <field name='tea_over_kgs' />
    </tree>
    </field>
    <group class='oe_subtotal_footer oe_right'>

    </group>
    <br />
    <br />
    </page>
    <page string="Rubber Workers" >
    <field name='selected_rubber_workers_update_line_ids'
    nolabel='1'>
    <tree string='List' editable='bottom'>
    <field name='rubber_norm' />
    <field name='rubber_hrs_worked' />
    <field name='rubber_total_kgs' />
    <field name='rubber_over_kgs' />
    <field name='rubber_scrap_kgs' />
    </tree>
    </field>
    <group class='oe_subtotal_footer oe_right'>

    </group>
    <br />
    <br />
    </page>
    <page string="Sundry Workers" >
    <field name='selected_sundry_workers_update_line_ids'
    nolabel='1'>
    <tree string='List' editable='bottom'>
    <field name='sundry_hrs_worked' />
    <field name='sundry_work_id' />
    </tree>
    </field>
    <group class='oe_subtotal_footer oe_right'>

    </group>
    <br />
    <br />
    </page>
    </notebook>
    </sheet>
    </form>
    </field>
    </record>

    <record model="ir.actions.act_window" id="bpl_work_update_action">
    <field name="name">bpl.work.update.action</field>
    <field name="res_model">bpl.work.update</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
    </record>



    <!-- ################################ Work Update################################################################## -->

    <menuitem id="menu_bpl" name="BPL/Registration" />
    <menuitem id="menu_bpl_ref" name="Reference" parent="menu_bpl" />

    <menuitem id="menu_bpl_worker_registration" name="Worker Registration"
    parent="menu_bpl" action="bpl_worker_registration_action" sequence="1" />
    <menuitem id="menu_bpl_officer_registration" name="Officer Registration"
    parent="menu_bpl" action="bpl_officer_registration_action" sequence="2" />
    <menuitem id="menu_bpl_work_offer" name="Work Offer" parent="menu_bpl"
    action="bpl_work_offer_action" sequence="3" />
    <menuitem id="menu_bpl_work_update" name="Work Update"
    parent="menu_bpl" action="bpl_work_update_action" sequence="4" />

    <menuitem id="menu_bpl_religion_registration" name="Religion Registration"
    parent="menu_bpl_ref" action="bpl_religion_registration_action" />
    <menuitem id="menu_bpl_festival_registration" name="Festival Registration"
    parent="menu_bpl_ref" action="bpl_festival_registration_action" />
    <menuitem id="menu_bpl_union_registration" name="Union Registration"
    parent="menu_bpl_ref" action="bpl_union_registration_action" />

    <menuitem id="menu_bpl_sundry_work_registration" name="Sundry Work Registration"
    parent="menu_bpl_ref" action="bpl_sundry_work_registration_action" />

    <menuitem id="menu_bpl_company_define" name="Numbering Unit"
    parent="menu_bpl_ref" action="bpl_company_define_action" />
    <menuitem id="menu_bpl_employer_empno" name="Employer No Define"
    parent="menu_bpl_ref" action="bpl_employer_empno_action" />
    <menuitem name="Company New" parent="menu_bpl_ref"
    id="bpl_company_n_registration" action="bpl_company_n_registration_action" />
    <menuitem name="Estate New" parent="menu_bpl_ref"
    id="bpl_estate_n_registration" action="bpl_estate_n_registration_action" />
    <menuitem name="Division New" parent="menu_bpl_ref"
    id="bpl_division_n_registration" action="bpl_division_n_registration_action" />
    </data>
    </openerp>