How do I get workflow Id in odoo9 manufacturing module? - python-2.7

Here is my code..
<record id="test_workflow" model="workflow">
<field name="name">test.workflow</field>
<field name="osv">test.workflow.model</field>
<field name="on_create">True</field>
</record>
<record id="activity_a" model="workflow.activity">
<field name="wkf_id" ref="mrp.production.basic"/>
<field name="flow_start">True</field>
<field name="name">Quality Check</field>
<field name="kind">function</field>
<field name="action">print_Quality Check()</field>
</record>
while I am running the server then getting error:
ParseError: "External ID not found in the system:
mrp.production.basic" while parsing
/home/naveen/odoo-9.0/custom_assetwh/mrp_customisation/view.xml:57,
near

You need to give the workflow xmlid inside the ref attribute and you have given its name instead of the xmlid or externalid.
Please change your xml as like below. You will get the xmlid of workflow "mrp.production.basic" inside the addons=>mrp=>mrp_workflow.xml file and that xmlid is "wkf_prod". You should write your xml file as below.
<record id="activity_a" model="workflow.activity">
<field name="wkf_id" ref="wkf_prod"/>
<field name="flow_start">True</field>
<field name="name">Quality Check</field>
<field name="kind">function</field>
<field name="action">print_Quality_Check()</field>
</record>
Note: xmlid of workflow https://github.com/odoo/odoo/blob/9.0/addons/mrp/mrp_workflow.xml#L6

Related

Why are my Access right modules not working

I have some trouble when I tried to add access right to my project..
here's my loaded data in manifest.py
'data': [
'security/ir.model.access.csv',
'security/security.xml',
'views/views.xml',
'views/templates.xml',
'views/partner.xml',
],
and then here's my ir.model.access.csv code
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
kursus_user,kursus.user,model_training_kursus,group_training_user,1,1,1,1
sesi_user,sesi.user,model_training_sesi,group_training_user,1,1,1,1
kursus_create,kursus.create,model_training_kursus,group_training_create,1,0,1,0
kursus_read,kursus.read,model_training_kursus,group_training_read,1,0,0,0
kursus_update,kursus.update,model_training_kursus,group_training_update,1,1,0,0
kursus_delete,kursus.delete,model_training_kursus,group_training_delete,1,0,0,1
sesi_create,sesi.create,model_training_sesi,group_training_create,1,0,1,0
sesi_read,sesi.read,model_training_sesi,group_training_read,1,0,0,0
sesi_update,sesi.update,model_training_sesi,group_training_update,1,1,0,0
sesi_delete,sesi.delete,model_training_sesi,group_training_delete,1,0,0,1
and then here's my security.xml file
<odoo>
<record id='group_training_create' model='res.groups'>
<field name='name'>Training / Akses Create</field>
</record>
<record id='group_training_read' model='res.groups'>
<field name='name'>Training / Akses Read</field>
</record>
<record id='group_training_update' model='res.groups'>
<field name='name'>Training / Akses Update</field>
</record>
<record id='group_training_delete' model='res.groups'>
<field name='name'>Training / Akses Delete</field>
</record>
<record id='group_training_user' model='res.groups'>
<field name='name'>Training / User</field>
</record>
<record id='group_training_manager' model='res.groups'>
<field name='name'>Training / Manager</field>
<field name='implied_ids' eval="[(4,ref('training_odoo.group_training_user'))]"/>
<field name='users' eval='[(4, ref("base.user_root")'/>
</record>
when I run the code, I have error message like this
Exception: Module loading training_odoo failed: file training_odoo/security/ir.model.access.csv could not be processed:
No matching record found for external id 'group_training_user' in field 'Group'
Can someone help me find the solution? maybe I have a typo there, but I don't know where it is
Add module_name before group_name.
EX:
sesi_user,sesi.user,model_training_sesi,module_name.group_training_user,1,1,1,1
Hope it will help you.

add another options in action button in tree view odoo 10

I want to add another options in action button on tree view. Moreover in export and delete, i want to add "Confirm" options. I don't know how, please help me. Thanks
<record id="action_id" model="ir.actions.server">
<field name="name">name</field>
<field name="model_id" ref="module_name.model_object_name" />
<field name="code">
action = model.function_name()
</field>
</record>
You can do by this way:
<record id="id" model="ir.actions.act_window">
<field name="name">Confirm Order</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">custom.model.name</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
If you want to add custom group for this option then you can add one attribute here also like:
<field name="groups_id" eval="[(4,ref('model.group_name'))]"/>
I was able to make a popup wizard appear in a different model with this:
<act_window id="module_name.your_custom_action_name"
name="your_custom_name"
src_model="model.in.wich.you.want.to.add.the.action"
res_model="model.in.wich.the.action.resides"
view_mode="form"
target="new"
multi="True"/>

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)]}">