Best practices on how to import data into OpenERP. Cyril Morisse, Audaxis

Post on 01-Nov-2014

5.042 views 1 download

Tags:

description

 

Transcript of Best practices on how to import data into OpenERP. Cyril Morisse, Audaxis

BEST PRACTICES ON HOW TO IMPORT DATA INTO OPENERP

Why  you  should  love  CSV  Import    

Cyril  MORISSE  (  @cmorisse  )    

 Introduc*on    ¨  With  Test  Driven  Development  and  Data  Migra*on,  we  need  to  gather  and  enter  real  data  owned  by  users  

¨  We  need  a  data  format  within  user’s  reach  (compared  to  XML)  

¨  As  of  version  7.0  OpenERP  has  redesigned  the  import  system  (“base_import”  module):  ¤  It  has  nearly  everything  right  out  of  the  box  ¤ Only  missing  feature  is  user  oriented  documenta*on  

¨  This  talk  is  an  overview  of  the  module  

Installa*on  

¨  Export  func*onality  is  available  right  out  of  the  box  ¨  BUT  import  func*onality  must  be  installed:  

¤  Import  is  covered  by  “base_import”  module  ¤  Import  must  be  installed  via  SeTngs  /  Configura*on  /  General  SeTngs  

¨  Then  “Import”  link  is  available  in  all  list/tree  views  

CSV  import  issues  

¨ When  impor*ng  data  using  CSV,  you  will  face  3  main  issues:  ¤ Iden*fy  the  fields  required  for  an  import  ¤ Understand  “OpenERP  External  IDs”    ¤ Understand  how  to  import  the  different  type  of  fields  n Simple  fields  (  date,  text,  numbers,  boolean,…)  n Rela*onal  fields:  

n Many2many  n Many2One  n One2many  

Iden*fy  fields  to  import  

¨  To  iden*fy  the  columns  required  to  import  an  object:  1.  Ac*vate  “Developer  Mode”  2.  Write  down  all  the  fields  you  must  enter  manually  3.  Export  a  file  with  all  these  fields    4.  Delete  values  in  the  id  column  then  re-­‐import  the  

file  to  check  everything  is  ok  5.  If  a  column  is  missing  ;  do  it  again  from  step  3  and  

add  the  column    

Understand  IDs  

¨  Example  Product  categories    

¨  CSV  Import  allows  User  Defined  External  IDs  ¤ External  IDs  are  symbolic  names  for  records  ¤ Format  is  module_name.id_name  

 

Understand  IDs  (con*nued)  

¨  User  defined  IDs  are  saved  in  the  database  and  can  be  retrieved  via:  ¤  SeTngs  /  Technical  /  Sequences  &  Iden*fiers  /  External  Iden*fiers    

Understand  IDs  (end)  

¨  User  defined  IDs  allow  to  manage  Import  /  Update  of  data  ¨  During  import:  

¤  If  a  record  exists  with  this  ID,  OpenERP  will  update  the  record  ¤  If  no  record  exists  with  this  ID,  OpenERP  will  create  a  new  record    

¨  Export  IDs  ¤  During  Export,  OpenERP  creates  an  export  ID  for  all  records  without  

IDs  (manually  created  records)  

 ¨  In  the  database  all  External  IDs  are  stored  in  table  ir_model_data  

Import  simple  Fields  

Field type Cell content Example

char, text Content surrounded by “ “This is a text ""value”"."

float Number with . as decimal separator

3.15

boolean True or False “0” or 0 or “False” or False or “1” or 1 or “True” or True

date YYYY-MM-DD 2013-06-10

datetime YYYY-MM-DD HH:MM:SS 2013-06-10 07:07

selection Value as given by “developer mode” inspector

reference Value in database is “object,id”

Import  rela*ons:  Many2One  

¨  Many2one    

¨  This  is  the  simplest  rela*on  to  import  in  CSV  ¤  Just  use  id  of  referenced  object  

id

parent_id

product_category

...

Import  rela*ons:  Many2Many  

¨  Eg.  Customer  Tags  

¨  Many2many  involves  3  tables        ¨  Really  simple  in  CSV  ;  enter  all  values  separated  by  comma  with  no  space  

 

...

id

res_partnerid

...

res_partner_categorycategory_idpartner_id

res_partner_res_partner_category_rel

Import  rela*ons:  One2Many  

¨  Eg.  Quota*ons/  Quota*ons  Lines  

   ¨  In  CSV:  Enter  lines  while  you  don’t  repeat  header  object  fields  

¤  Child  objects  column  format  is    “one2many_fieldname/child_object_field”  

         

...

id

sale_orderid

order_id

sale_order_line

...

Integrate  CSV  in  your  development  workflow  ¨  Create  a  set  of  shared  Google  Spreadsheet  that  your  users  will  complete  with  project  data    

¨  Organize  your  OpenERP  project  in  3  modules:  ¤  project_core  with  code  and  technical  parameters  ¤  project_data  :  will  contains  only  data  in  CSV  files  ¤  project_test  :  contains  your  test  code  and  test  specific  data  

¨  Use  a  tool  to  automate  export  and  download  of  the  Google  Spreadsheet  into  the  project_data  module  ¤  hkp://bitbucket.org/cmorisse/edgdd    

¨  Your  users  will  be  able  to  “coopera*vely”  enter  their  data  and  you  will  be  able  to  seamlessly  integrate  and  use  this  data  in  your  project    

More  informa*on?  

www.audaxis.com    

Contact  us  openerp@audaxis.com  

 

 

 

14

Visit our booth at OpenERP Community Days in Hall K