view details in tree view from original model (Many2one) - Odoo 9 - foreign-keys

I have simple database which has 3 models as follows
1- camps (to store Camps master data)
2- players (to store players master data)
3- players_camps (to store camps each player has attended)
the code for all models as follows:
class Camps(Model):
_name = 'camps'
name = Char('Name')
organizer = Char()
date_from = Date('From date')
date_to = Date('To date')
place = Char()
supervisor = Char()
notes = Text()
class players(Model):
_name = 'player'
name = Char()
camps = One2many('player_camps', 'player')
class player_camps(Model):
_name = 'player_camps'
camps = Many2one('camps', on_delete='CASCADE', on_update='CASCADE')
organizer = Many2one('camps', on_delete='CASCADE', on_update='CASCADE')
place = Many2one('camps', on_delete='CASCADE', on_update='CASCADE')
date_from = Many2one('camps', on_delete='CASCADE', on_update='CASCADE')
date_to = Many2one('camps', on_delete='CASCADE', on_update='CASCADE')
result = Integer(default=0)
when I display players camps (using One2many widget in the view ) I can see only the camp name but the other data
like organizer or place (which are stored in master model of camps) not shown
how can I show this data in the tree view of the players camps view ?
Edit: here is view file for players
Note: I have removed some fields from players view and its model to make the code shorter
<openerp>
<data>
<!--Form view -->
<record id="Player_form_view" model="ir.ui.view">
<field name="model">player</field>
<field name="arch" type="xml">
<form>
<notebook>
<page name="basic_data" string="Basic Data">
<group>
<field name="name"/>
</group>
</page>
<page name="camps" string="Camps">
<field name="camps">
<tree>
<field name="camp"/>
<field name="instructor"/>
<field name="organizer"/>
<field name="place"/>
<field name="date_from"/>
<field name="date_to"/>
<field name="result"/>
<field name="notes"/>
</tree>
</field>
</page>
</notebook>
</form>
</field>
</record>
</data>
</openerp>

Please remove widget from one2many list and in <tree> tag declared field as many as you want to show.
Try with following code:
<openerp>
<data>
<!--Form view -->
<record id="player_form_view" model="ir.ui.view">
<field name="name">player.form.view</field>
<field name="model">spogaze.player</field>
<field name="arch" type="xml">
<form>
<notebook>
<page name="basic_data" string="Basic Data">
<group>
<field name="name"/>
</group>
</page>
<page name="exams" string="Exams">
<field name="exams">
<tree string="Exam" editable="bottom">
<field name="camp"/>
<field name="instructor"/>
<field name="organizer"/>
<field name="place"/>
<field name="date_from"/>
<field name="date_to"/>
<field name="result"/>
<field name="notes"/>
</tree>
</field>
</page>
</notebook>
</form>
</field>
</record>
</data>
</openerp>

Related

How to get field value from another Many2many field?

I use odoo 10 and I created a custom module to plan trips. I create a view for the plans in which I will select the list of my travels. My problem now is how I can get the Start and Destination fields of each trip insert in this view knowing that the field that displays the list of trips is travel_ids = fields.Many2many ('tms.travel', copy = False, string = 'Travels'). I try a lot but no result. Any idea for help please ??
tms_travel_planning.xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<record id="view_tms_travel_planning_form" model="ir.ui.view">
<field name="name">view.tms.travel.planning.form</field>
<field name="model">tms.planning</field>
<field name="arch" type="xml">
<form string="Plannification des voyage">
<header>
<field name="state" statusbar_visible="draft,approved,confirmed" widget="statusbar"/>
</header>
<sheet>
<div class="oe_title">
<h1>
<label class="oe_inline" style="font-size:30px;" string="Plannification - " attrs="{'invisible':[('name','=', False)]}"/>
<field name="name" readonly="1"/>
</h1>
</div>
<group>
<group>
<field name="datetime"/>
<field attrs="{'readonly':[('state','in',('confirmed', 'cancel'))]}" name="operating_unit_id"/>
</group>
<group>
<field name="num_vehicule_dispo"/>
<field name="num_chauffeur_dispo"/>
</group>
</group>
<notebook colspan="1">
<page string="Les voyages à planifier">
<separator coslpan="4" string="Voyages"/>
<!--<field attrs="{'readonly':[('state','in',('confirmed', 'cancel'))]}" name="operating_unit_id"/>-->
<field attrs="{'readonly':[('state','in',('confirmed', 'cancel'))]}" colspan="4"
domain="[('state','not in',('cancel','closed'))]" name="travel_ids" nolabel="1"/>
<separator coslpan="4" string="Véhicules"/>
<field colspan="4" name="fleet_ids" nolabel="1"/>
<separator coslpan="4" string="Conducteurs"/>
<field colspan="4" name="employee_ids" nolabel="1"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
</data>
</odoo>
tms_travel_planning.py
# -*- coding: utf-8 -*-
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class TmsTravelPlanning(models.Model):
_name = 'tms.planning'
name = fields.Char('Num du plannification')
operating_unit_id = fields.Many2one(
'operating.unit', string='Operating Unit', required=True)
id_planning=fields.Integer(string="Numéro du plannification")
datetime=fields.Date(string="Date")
num_vehicule_dispo=fields.Integer(string="Nombre de véhicule disponible")
num_chauffeur_dispo=fields.Integer(string="Nombre de chauffeur disponible")
tms
fleet_ids = fields.Many2many('fleet.vehicle', copy=False, string='Véhicules')
employee_ids = fields.Many2many('hr.employee', copy=False, string='Conducteurs')
state = fields.Selection([
('draft', 'Pending'),
('approved', 'Approved'),
('confirmed', 'Confirmed'),
('cancel', 'Cancelled')], readonly=True,
help="Gives the state of the Waybill.",
default='draft')
#api.model
def create(self, values):
planning = super(TmsTravelPlanning, self).create(values)
if not planning.operating_unit_id.planning_sequence_id:
raise ValidationError(_(
'You need to define the sequence for planning in base %s' %
planning.operating_unit_id.name
))
sequence = planning.operating_unit_id.planning_sequence_id
planning.name = sequence.next_by_id()
print(str(values['num_vehicule_dispo']))
print(str(values['num_chauffeur_dispo']))
return planning
tms_travel.xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_tms_travel_tree" model="ir.ui.view">
<field name="name">tms.travel.tree</field>
<field name="model">tms.travel</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="date"/>
<field name="departure_id"/>
<field name="arrival_id"/>
<field name="state"/>
<button groups="tms.group_traffic,tms.group_expenses" icon="fa-thumbs-up" name="action_progress" states="draft" string="Dispatch Travel" type="object"/>
<button groups="tms.group_traffic,tms.group_expenses" icon="fa-check-square" name="action_end" states="progress" string="End Travel" type="object"/>
</tree>
</field>
</record>
</odoo>
Ok, you are missing some information in your many2many relationship. here is what you need.
field_name = fields.Manmy2many('related.model', 'relational_table', 'current_model_id', 'related_model_id', string='other information')
and usually I put the inverse on the related model ex:
(On the hr.holidays model)
payslip_ids = fields.Many2many('hr.payslip', 'hr_payslip_holiday_rel', 'holiday_id', 'payslip_id', ...)
(On the hr.payslip model)
holiday_ids - fields.Many2many('hr.holidays', 'hr_payslip_holiday_rel', 'payslip_id', 'holiday_id', ...)
Then at some point you need to add one of the ids to the other model for ex:
holiday.payslip_ids |= current_payslip_id

How to get many2one for same calendar instance in odoo?

The following code is calendar.event inherited module so here I will store some inspection and all. Here relation is working fine.
from openerp.osv import fields, osv
from openerp import api
class calendar_event(osv.osv):
_inherit = "calendar.event"
STATE_SELECTION = [
('1', 'Corrective'),
('2', 'Preventive'),
('3', 'Predictive'),
]
SD_SELECTION = [
('Shut Down Required', 'Shut Down Required'),
('Shut Down Not Required', 'Shut Down Not Required'),
]
_columns = {
'number' : fields.char('Calendar Inspection ID',readonly=1),
'tags' : fields.selection(STATE_SELECTION, 'Tags',),
'user_id': fields.many2one('res.users','res_users_rel','Assigned', track_visibility='onchange',),
'sht_down': fields.boolean('Shut Down'),
'company_id11': fields.many2one('res.company', 'Substation', required=True),
#'place' : fields.many2one('asset.parentlocation','Substation Location',),
'assetmodelid_add' : fields.many2one('agile.portfolio1','Asset Model Code',),
'folio_num1' : fields.many2one('asset.asset','Folio Num',),
'inspection_name' : fields.many2many('asset1.inspection','asset1_inspection_rel','super_id','asset1_inspection_id','Inspection Type'),
'insp_rslt' : fields.one2many('feedback.tree','insp_rsltts','Inspection Result',),
'same_as':fields.boolean(),
}
_defaults = {
'number' : lambda self,cr,uid,context={}:self.pool.get('ir.sequence').get(cr,uid,'calendar.event'),
'sht_down': False,
}
def onchange_same_as(self,cr, uid, ids,same_as_above,inspec_type,context=None):
if same_as:
return {'value':{'shutdown':frequency,}}
return {'value':{}}
class feedback_tree(osv.Model):
_name = 'feedback.tree'
STATUS = [
('done', 'Completed'),
('notdone', 'Not-Completed'),
]
_columns = {
'folionum' : fields.many2one('calendar.event','Task Name',),
#'folio_number' : fields.many2one('asset.asset','Folio number',),
'inspec_type' : fields.char('Inspection Type',),
'insp_msr1' : fields.many2one('results.measure','Attributes',),
'valuess' : fields.char('Values'),
'status' : fields.selection(STATUS,'Status'),
'insp_rsltts': fields.many2one('feedback.form','Result Id'),
}
The follwoing code is .xml file for above inherited class
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Form & Tree View for Visitor Register -->
<record model="ir.ui.view" id="inherit_calaner_event">
<field name="name">calender.event.inherit</field>
<field name="model">calendar.event</field>
<field name="inherit_id" ref="calendar.view_calendar_event_form"/>
<field name="arch" type="xml">
<xpath expr="//form/sheet/div[#class='oe_title']" position="after">
<group>
<!-- <field name="number"/>-->
<field name="company_id11"/>
<!--<field name="asset_catg_id"/>
<field name="area_id" widget="selection"/>-->
<field name="assetmodelid_add" />
<field name="folio_num1" domain="[('assetmodelid_add', '=', assetmodelid_add)]"/>
<field name="inspection_name" domain="[('assetmodelid_add', '=', assetmodelid_add)]"/>
<field name="sht_down"/>
</group>
</xpath>
<xpath expr="//form/sheet/notebook/page/group/group/field[#name='location']" position="after">
<group>
</group>
</xpath>
<xpath expr="//form/sheet/notebook/page/group/group/field[#name='categ_ids']" position="replace">
<field name="tags"/></xpath>
<xpath expr="//form/sheet/div/label[#string='Attendees']" position="replace">
<label string="Attendees" class="oe_edit_only"/></xpath>
<xpath expr="//form/sheet/div/h2" position="replace">
<field name="user_id"/></xpath>
<xpath expr="//form/sheet/notebook/page[#string='Meeting Details']" position="after">
<page string="Feedback">
<field name="insp_rslt" >
<tree string="Feedback" editable="bottom" >
<field name="folionum" />
<field name="insp_msr1"/>
<field name="valuess"/>
<field name="status"/></tree></field>
</page>
</xpath>
</field>
</record>
<record id="calendar_view_calendar_event_search" model="ir.ui.view">
<field name="name">calender.event.view</field>
<field name="model">calendar.event</field>
<field name="inherit_id" ref="calendar.view_calendar_event_search"/>
<field name="arch" type="xml">
<xpath expr="//search/filter[#name='message_unread']" position="after">
<filter string="Shut Down" name="sht_down" domain="[('sht_down','=',True)]"/>
<filter string="No Shut Down" name="sht_down" domain="[('sht_down','=',False)]"/></xpath>
</field>
</record>
</data>
</openerp>
My Requirement is First I will select inspection_name field in calender.evnt class. In feedback.tree I have one column inspc_type this field has to give only same list as many2one of inspection_name which assigned for this instance.
Example: inspction_name has A,B,C
in feedback.tree for inspec_type should get only A,B,C not all inspection_name which stored before this record.
-----------------Edited------------------------------
I have calendar.event.py
'inspection_name' : fields.many2many('asset1.inspection','asset1_inspection_rel','super_id','asset1_inspection_id','Inspection Type'),
.xml file of calendar.event.py
<field name="assetmodelid_add" />
<field name="folio_num1" domain="[('assetmodelid_add', '=', assetmodelid_add)]"/>
<field name="inspection_name" domain="[('assetmodelid_add', '=', assetmodelid_add)]"/>
I want same filter in feedback.tree. When I do domain filter its showing assetmodelid_add doesn't exist. ya because in feedback.tree we don't have this field so how to crack this
'inspec_type': fields.char('Inspection Type',),
field has to be done domain filter for this class for 'inspec_type' field

Why Wizard view cannot find the model?

i make a simple wizard in odoo and i want to show the wizard but, my model can't found of my view . what wrong with my simple code?
This my wizard
class RequestReceiveWizard(models.TransientModel):
_name ='estate.nursery.requestreceivewizard'
# def _default_session(self):
# return self.env['estate.nursery.requestline'].browse(self._context.get('request_id'))
name=fields.Char("Wizard name")
request_id=fields.Many2one('estate.nursery.request')
requestline_ids = fields.Many2many("estate.nursery.requestline")
And this my view :
<!--request Wizard -->
<record model="ir.ui.view" id="request_view_wizard">
<field name="name">Request receive wizard</field>
<field name="model">estate.nursery.requestreceivewizard</field>
<field name="arch" type="xml">
<form string="Wizard For Request Received">
<group collspan="2" col="2">
<field name="name"/>
<field name="requestline_ids"/>
</group>
<footer>
<button name="Apply" type="Action" string="Apply" >Apply</button>
<button special="cancel" string="Cancel">Cancel</button>
</footer>
</form>
</field>
</record>
<act_window id="received_request_wizard" name="Request Wizard"
src_model="estate.nursery.request"
res_model="estate.nursery.requestreceivewizard"
view_mode="form"
target="new"
multi="True" key2="client_action_multi"/>
What wrong with my simple code? And this my error
Model not found: estate.nursery.requestreceivewizard
act_window replace to this record and try this code:
<record id="received_request_wizard" model="ir.actions.act_window">
<field name="name">estate.nursery.request</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">estate.nursery.request</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="request_view_wizard"/>
<field name="target">new</field>
</record>
May be It's work for you...

except_orm: ('ValidateError', u'Error occurred while validating the field(s) arch: Invalid XML for View Architecture!')

i created a wizard and now its giving me the above error , it took me ages but couldn't sorted it , between am doing wizard for the first time in Openerp . please help thanks in advance . here is my code
class test_wizard(osv.osv_memory):
_name="test.wizard"
_description="will generate dynamic views, that's all"
_columns={
'age_text': fields.text('text age'),
}
def next(self,cr,uid,ids,contet=None):
test_obj=self.pool.get('test.chbc')
for wiz in self.browse(cr,uid,ids):
if wiz.age_text <=5:
raise osv.except_osv('user error, please slect something , know what')
limit= datetime.date.today()-datetime.timedelta(days=wiz.age_text)
ids_to_del=test_obj.search(cr,uid,[('create_date','<',
limit.striftime('%y-%m-%d 00:00:00'))],context=context)
test_obj.unlink(cr,uid,ids_to_del)
return{}
test_wizard()
here is my xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="test_wizard" model="ir.ui.view">
<field name="name">test.wizard.form</field>
<field name="model">test.wizard</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Test wizard ">
<label colspan="4" string="select age please , am in a hurry "/>
<field name="age_text" string="Age(days)"/>
<group col="4" colspan="4">
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
<button icon="gtk-ok" name="next" string="Next" type="object"/>
</group>
</form>
</field>
</record>
<record id="action_test_wizard" model="ir.actions.act_window">
<field name="name">Next</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">test.wizard</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>
Change you model name mean give the name of the class where you want to put it
<field name="model">test.wizard</field>

Need to disable more that 10 Fields in Openerp

I have created a new module and added 10 fields to it.Now i should be able to enter only 5 fields first and on payment i should be able to enter next 5 fields.Can anyone please help me.
I want my sales person to enter only Basic Details first(like Name and Address and Phone number) and later after payment i want to update Full details of Parents and their Contact info.
thank's in advance
My code is
lead_view.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- ===================== This is tree layout =============================-->
<record id="lead_tree" model="ir.ui.view">
<field name="name">Lead</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<tree string="lead">
<field name = "name"/>
</tree>
</field>
</record>
<!-- ========================This is Form layout===============================-->
<record id="view_res_partner_inherited" model="ir.ui.view">
<field name="name">view.res.partner.inherited</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<data>
<field name="website" position="replace"/>
<field name="title" position="replace"/>
<field name="function" position="replace"/>
<field name="category_id" position="replace"/>
<page string="Internal Notes" position="before">
<page string="Contract">
<group>
<group>
<h3>Contract Details</h3><br/>
<field name="storagedetails"/>
<field name="insurancecompany"/>
<field name="insurancenumber"/>
<field name="healthfund_name"/>
<field name="healthfund_number"/>
<field name="service"/>
<field name="annualfee"/>
<field name="paymentplan"/>
<field name="transport_insurance"/>
<field name="sarm"/>
<field name="cost_free_donation"/>
<field name="hla_test"/>
<field name="twins"/>
<field name="repeated_customer"/>
</group>
<group>
<h3>Relevant Dates</h3><br/>
<field name="contactadded_date"/>
<field name="clientadded_date"/>
<field name="expectedbirth_date"/>
<field name="bloodrecieved_date"/>
<field name="bloodstorage_date"/>
<field name="cordrecieved_date"/>
<field name="cordstored_date"/>
<br/><br/>
<h3>End Contract</h3><br/>
<field name="termination_contract_date"/>
<field name="termination_reason"/>
<field name="allocation_cordblood"/>
<field name="endstorage_cordblood"/>
<field name="allocation_cord"/>
<field name="endstorage_cord"/>
</group>
</group>
</page>
</page>
<page string="Internal Notes" position="after">
<page string="Parent Details">
<group>
<group>
<h3><label string="Mother Details"/></h3>
<br/>
<field name="mother_lastname"/>
<field name="mother_firstname"/>
<field name="mother_dob"/>
</group>
<group>
<h3><label string="Father Details"/></h3>
<br/>
<field name="father_lastname"/>
<field name="father_firstname"/>
<field name="father_dob"/>
</group>
<group>
<h3><label string="Child Deatils"/></h3>
<br/>
<field name="child_lastname"/>
<field name="child_firstname"/>
<field name="child_dob"/>
</group>
</group>
</page>
<page string="Contact Info">
<notebook>
<page string="Parent Details">
<group>
<group>
<h3>Mother</h3><br/>
<field name="mother_telephone"/>
<field name="mother_mobile"/>
<field name="mother_email"/>
<field name="mother_fax"/>
<field name="mother_fiscalcode"/>
<field name="mother_iban"/>
<field name="mother_bankaccountspain"/>
<field name="mother_decaseddate"/>
</group>
<group>
<h3>Father</h3><br/>
<field name="father_telephone"/>
<field name="father_mobile"/>
<field name="father_email"/>
<field name="father_fax"/>
<field name="father_fiscalcode"/>
<field name="father_iban"/>
<field name="father_bankaccountspain"/>
<field name="father_decaseddate"/>
</group>
</group>
</page>
<page string="Child Details">
<group>
<field name="child_telephone"/>
<field name="child_mobile"/>
<field name="child_email"/>
<field name="child_fax"/>
<field name="child_fiscalcode"/>
<field name="child_iban"/>
<field name="child_bankaccountspain"/>
<field name="child_decaseddate"/>
</group>
</page>
</notebook>
</page>
</page>
</page>
</data>
</field>
</record>
<!-- ========================= Action Layout ============================= -->
<record id="action_lead" model="ir.actions.act_window">
<field name="name">Lead</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="lead_tree"/>
</record>
<record id="create_customer" model="ir.actions.act_window">
<field name="name">Lead</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_res_partner_inherited"/>
</record>
<!-- ===========================Menu Settings=========================== -->
<menuitem name = "Lead" id = "menu_lis_lab" action="action_lead"/>
<menuitem name="Lead Info" id="sublead_menu" parent="menu_lis_lab"/>
<menuitem name="Generate Lead" id="generate_leads" parent="sublead_menu" action="create_customer"/>
</data>
</openerp>
lead.py
from osv import osv
from osv import fields
class res_partner(osv.osv):
_inherit = "res.partner"
_description = "adding fields to res.partner"
_columns = {
'mothername': fields.char('Mother Name',size=64,required=True),
'fathername': fields.char('Father Name',size=64,required=True),
'mother_lastname': fields.char('Last name',size=64),
'mother_firstname': fields.char('First Name',size=64),
'mother_dob': fields.date('Date of Birth'),
'father_lastname': fields.char('Last name',size=64),
'father_firstname': fields.char('First Name',size=64),
'father_dob': fields.date('Date of Birth'),
'child_lastname': fields.char('Last name',size=64),
'child_firstname': fields.char('First name',size=64),
'child_dob': fields.date('Date of Birth'),
'storagedetails': fields.selection([('A','21 years')],'Storage Details',help="Storage for no.of years"),
'insurancecompany': fields.char('Insurance Company',size=64),
'insurancenumber': fields.char('Insurance No:',size=20),
'healthfund_name': fields.char('Health Fund Name',size=64),
'healthfund_number': fields.char('Healt Fund No:',size=20),
'service': fields.char('Service',size=20,help="Service for no.of years"),
'annualfee': fields.char('Annual Fee',size=20,help="Annual fee for the service"),
'paymentplan':fields.char('Payment Plan',size=20,help="Payment plans"),
'transport_insurance': fields.boolean('Transport Insurance',help="Transport Insurance is taken"),
'sarm': fields.boolean('Sarm',help="Sarm"),
'cost_free_donation': fields.boolean('Cost Free Donation',help="Cost Free Donation"),
'hla_test': fields.boolean('HLA Test',help="HLA Test"),
'twins': fields.boolean('Twins',help="Are they twins"),
'repeated_customer': fields.boolean('Repeated Customer',help="Is he repeated customer"),
'contactadded_date': fields.date('Contact added Date',help="On which date contact has been added"),
'clientadded_date': fields.date('Client added Date',help="On which day the client is added"),
'expectedbirth_date': fields.date('Expected Birth Date',help="Expected Date of Delivery for the baby"),
'bloodrecieved_date': fields.date('Blood Recieved on:',help="When the blood sample is recieved"),
'bloodstorage_date': fields.date('Blood Stored on:',help="When the blood is stored in Dewar"),
'cordrecieved_date': fields.date('Cord Recieved on:',help="When the Cord is recieved"),
'cordstored_date': fields.date('Cord Stored on:',help="When the Cord is stored in Dewar"),
'termination_contract_date': fields.date('termination_contract_date',help="Your contract will be terminated on "),
'termination_reason': fields.char('Termination Reason',size=64,help="Reason for contract Termination"),
'allocation_cordblood': fields.date('Allocation CordBlood',help="CordBlood is allocated on"),
'endstorage_cordblood': fields.date('End Storage CordBlood',help="End date of storing of CordBlood is"),
'allocation_cord': fields.date('Allocation Cord',help="Cord is allocated on"),
'endstorage_cord': fields.date('End Storage Cord',help="End date of storing of Cord is"),
'mother_telephone':fields.char('Telephone',size=20),
'mother_mobile':fields.char('Mobile',size=20),
'mother_email': fields.char('Email',size=64),
'mother_fax': fields.char('Fax',size=20),
'mother_fiscalcode': fields.char('Fiscal Code',size=64),
'mother_iban': fields.char('IBAN',size=64),
'mother_bankaccountspain': fields.char('Bank accounts pain',size=64),
'mother_decaseddate': fields.date('Decased Date'),
'father_telephone':fields.char('Telephone',size=20),
'father_mobile':fields.char('Mobile',size=20),
'father_email': fields.char('Email',size=64),
'father_fax': fields.char('Fax',size=20),
'father_fiscalcode': fields.char('Fiscal Code',size=64),
'father_iban': fields.char('IBAN',size=64),
'father_bankaccountspain': fields.char('Bank accounts pain',size=64),
'father_decaseddate': fields.date('Decased Date'),
'child_telephone':fields.char('Telephone',size=20),
'child_mobile':fields.char('Mobile',size=20),
'child_email': fields.char('Email',size=64),
'child_fax': fields.char('Fax',size=20),
'child_fiscalcode': fields.char('Fiscal Code',size=64),
'child_iban': fields.char('IBAN',size=64),
'child_bankaccountspain': fields.char('Bank accounts pain',size=64),
'child_decaseddate': fields.date('Decased Date'),
}
After doing What you have planned. Answer to your question is, to disable fields, put atrrs on that. I will show you an exaple i.e as you have said a boolean field which will show sattus of payment - suppose field that field name is "paid" then, for all those fields which you want disable when payment is not yet done
attrs="{'invisible': [('paid', '=', False)]}"
to use this on field which you want to invisible, you can use like this
<field name="paid"/> <!--here, paid is the boolean field which shows status of payment -->
<field name="service" attrs="{'invisible': [('paid', '=', False)]}"/>
Not only on field, you can also give attrs to entire page like this, (so the page containing all the fields in that will be invisible)
<page string="Parent Details" attrs="{'invisible': [('paid', '=', False)]}">
If there are different Forms for First Process and Transaction Process, then Create different form for each process and add appropriate fields.
If Single Form with different operations (like state change on button click), then you can show / hide group view.
[EDIT]
e.g:
Assign group for Payment fields. and show the group if Payment form is opened. You have to take extra boolean field call "payment_active", which must be invisible in view. and assign 'True' value for Payment form and 'False' for other form.
In Xml:
<group string="Payment" attrs="{'invisible':[('payment_active','!=',True)]}">