This question has been flagged

I tied to install a module which I developed including the warranty details of a customer.It was working fine until I added a grid structure under the form,so that the respective dates for the preventive maintenance can be scheduled.When I altered the code for this purpose the below error appears when I try to install the module.

Validate Error Error occurred while validating the field(s) arch: Invalid XML for View Architecture!.

I couldn't trace out the error in .xml file(perhaps in .py file also).Both the files are attached .Can anyone please help me in sorting out the error and complete my requirement of placing a grid under the form view.

warranty_info_view.xml

    <?xml version="1.0" encoding="utf-8"?>
     <openerp>
      <data>


  <!--Warranty search view-->
  <record model="ir.ui.view" id="warranty_search">
    <field name="name">warranty.search</field>
    <field name="model">warranty.warranty</field>
    <field name="type">search</field>
    <field name="arch" type="xml">
      <search string = "warranty information search">
        <field name="name" string = "Name"/>
        <field name="contract" string = "Contract"/> 
       </search>
    </field>
  </record>



 <!--Warranty tree View-->
  <record id="warranty_warranty_tree" model="ir.ui.view">
    <field name="name">warranty.result.tree</field>
    <field name="model">warranty.warranty</field>
    <field name="type">tree</field>
    <field name="arch" type="xml">
      <tree string="warranty_result">  
        <field name="name"/>  
        <field name="contract"/>
    <field name="batch_no"/> 
        <field name="status"/>  
        <field name="serial_no"/>
        </tree>
    </field>
</record>




  <!--Warranty Form View-->
<record id="warranty_warranty_form" model="ir.ui.view">
    <field name="name">warranty.result.form</field>
    <field name="model">warranty.warranty</field>
  <!--<field name="type">form</field>-->
    <field name="arch" type="xml">
      <form string="Warranty_result" version="7.0">  
      <sheet>
       <group>
        <group>
         <field name="name"/>  
         <field name="contract"/>
     <field name="batch_no"/> 
         <field name="status"/>  
         <field name="serial_no"/>
         <field name="notes" /> 
        </group>
        </group>
      <notebook>
     <page string="Preventive Maintenance">
                        <field name="line_ids">
                            <tree string="Pm">
                                <field name="date"/>
                                <field name="pm_status"/>
                            </tree>
                        </field>
                    </page>
     </notebook>
    </sheet>
    </form>
    </field>
 </record>

  <!--Warranty Action-->
<record id="action_warranty_warranty" model="ir.actions.act_window">
    <field name='name'>Warranty Details</field>
    <field name='res_model'>warranty.warranty</field>
    <field name='view_type'>form</field>
    <field name='view_mode'>tree,form</field>
</record>


   <!--Warranty Menu-->
 <menuitem id="warranty_parent" name="Warranty"/>
 <menuitem id="menu_warranty_parent" name="Warranty Management" parent="warranty_parent"></menuitem>
 <menuitem action="action_warranty_warranty" id="menu_warranty_warranty" parent="menu_warranty_parent"   string="Result"/>
     </data>
 </openerp>

warranty_info.py

 from openerp.osv import osv, fields

  class warranty_warranty(osv.osv):

_name = 'warranty.warranty'

_columns = {
    'name':fields.many2one('res.partner','Customer Name'),
'contract':fields.many2one('account.analytic.account','Contract'),
'batch_no':fields.char('Batch No.'),
'status':fields.selection([('open','Open'),('close','Close')],'Warranty Status'),
'serial_no':fields.char('Serial No.'),
'notes':fields.text('Details'),

  }

  warranty_warranty()

   class order(osv.osv): 

_description = "Orders" 

_name = "order.order"

_columns = {
    'line_ids': fields.one2many('order.line','ordr_id',"Order Lines"),
    'date': fields.date('Date'),
    'pm_status': fields.selection([('pending','Pending'),('complete','Complete')],'Preventive Maintenance Status'),
} 

order()

 class order_line(osv.osv):

_description = "Order Line" 

_name = "order.line"

_columns = {
'ordr_id': fields.many2one('order.order', 'Order ID'),
}

order_line()
Avatar
Discard
Best Answer

The Problem with these lines of code <page string="Preventive Maintenance"> <field name="line_ids"> <tree string="Pm"> <field name="date"/> <field name="pm_status"/> </tree> </field> </page>

here the field name 'line_ids' does not exist in warranty.warranty object so you are getting the error

I you want to fix the error you should remove the complete page tag i.e <page string="Preventive Maintenance"> and upgrade your module

or If you want that line_id in your form then create a one2many field line_ids in warranty.warranty object and upgrade the module the error will be rectified

Avatar
Discard
Author

So Maniganda,What should be done to rectify the error?

Author

Can u please suggest the changes to be made in the code?

Author

I tried as per your instructions but still the error occurs when I try to install the module

Have you removed the <notebook> tag from your xml

Author

I tried and still the same error is being shown

Best Answer

Hi;

Look closely in your log before the line (some lines before) "Validate Error Error occurred while validating the field(s) arch: Invalid XML for View Architecture!.", you will find more info about the error (and then post your log).

look also at the end of your .py file: _columns is ordr_id or order_id

for Maniganda: line_ids is there !!!

Avatar
Discard
Author

There is nothing in the error log other than the line " Validate Error Error occurred while validating the field(s) arch: Invalid XML for View Architecture! ".The error is shown inside a box which appears when I click Install.It some error in the .py and .xml files.As I am not that well aware of python coding,if somebody suggest me the changes to be made in the code files please,it would be a great favour.

Look in your openerp-server.log file. Under Linux you can find it at /var/log/openerp/openerp-server.log. under Windows it's at ..Drive letter:\Program Fi...)\openerp ....\server\server\openerp-server.log

Author

so are my .py and .xml files correct?

There are maybe a parsing error in your xml (malformed xml). But before any conclusion look first for the error in openerp-server.log

Author

I tried for a long to debugg the issue but in vain.So I removed the complete module and is reworking on the code now.My requirement is I want to add a grid structire under the form with two columns date and status.What are the code changes that are to be made in my present .py and .xml files?

what about openerp-server.log ?

Author

where can I find it?I am using ubuntu server.Modules are installed in opt/openerp/server/openerp/addons

Here: /var/log/openerp/openerp-server.log