How to add custom field on any object in OpenERP - Odoo



How to add custom field on any object in OpenERP (Odoo) without doing any hardcode!!

Say for example we need a field “Weight” on Vehicle.

Step 1: Activate Developers Mode.

a) To do that click on user name at the right upper corner of your screen and select About OpenERP (Odoo) option.

Add custom field in OpenERP

Activate Developer Mode

 
b) You will get window as shown in image below. Click on the link Activate the developer mode.

Add custom field in OpenERP


Activate Developer Mode

c) We will get a debug view From where we can edit all views of selected object.

Add custom field in OpenERP

Debug View


Step 2: Identify your object

To do that just hover your mouse on any of the field. It will show you some information like field name, object, field type etc.

Add custom field in OpenERP

Field information

As we know now that our object name is 'fleet.vehicle' and we have to add a new field to this object say for example 'weight', type of this field is integer. Let's edit our object. Here one thing is to notice that these changes are for the existing database only, it will not reflect in other database.

a) Go to the menu Settings → Techniacl → Database Structure → Models and search for fleet.vehicle

Add custom field in OpenERP

Object Search

b) Open that object and click on edit, drag the mouse to reach bottom of the page and click on Add an item link.

Add custom field in OpenERP

Object View


c) Add all detail like field name, label, type then click on 'Save & Close' button and finally click on Save button which is in Red color.

Add custom field in OpenERP

Add new field

As a field x_weight is added to our object fleet.vehicle we will now edit different views of vehicle to see the changes.

Step 3: Edit View(Form, tree)

a) Before editing excising views lets observe our current view.
Open Vehicle form view and see there is not any field with label “Weight” on it.

Add custom field in OpenERP

Vehicle's form view without any Change


b) Select the option Edit Form View from Debug View window.

Add custom field in OpenERP


Edit Form View

c) You will get a window as below. Insert the new field to appropriate position, and click on save button.

Add custom field in OpenERP

Insert new field

d) Close the window and reload the page. Here we can notice that a new field is on vehicle form view. Same way we can edit search, tree view.

Add custom field in OpenERP


Vehicle's form view with a new weight field 



Cheers ENJOY OpenERP / ODOO  !! 

Hope that was helpful.

If I just made your day a little better then thank me with a coffee or maybe a pizza


Thanks,

Mayur Maheshwari( Odoo Developer)

What's app : +91 99245 42042
Mail : mayurmaheshwari07@gmail.com


120 comments:

  1. Incredibly helpful. So simple once you know where to look!

    ReplyDelete
    Replies
    1. I would like to know which 'Modele' I have to select / create / edit, to create my own field in the Odoo.
      In Sales -> Products I need add my own column.

      Delete
    2. thanks really helpfull

      Delete
    3. Mayur Maheshwari - Techno-Functional Consultant Odoo (Openerp): How To Add Custom Field On Any Object In Openerp - Odoo >>>>> Download Now

      >>>>> Download Full

      Mayur Maheshwari - Techno-Functional Consultant Odoo (Openerp): How To Add Custom Field On Any Object In Openerp - Odoo >>>>> Download LINK

      >>>>> Download Now

      Mayur Maheshwari - Techno-Functional Consultant Odoo (Openerp): How To Add Custom Field On Any Object In Openerp - Odoo >>>>> Download Full

      >>>>> Download LINK 38

      Delete
  2. How to add selection option in the selection field .
    ?

    ReplyDelete
  3. Hello my Open ERP is giving me this error when I try to save the view -

    ValidateError

    Error occurred while validating the field(s) arch: Invalid XML code in Arch fields of View!

    I only try to put in the code for the custom field, fogive me as I'm not well versed in OpenERP or XML.

    ReplyDelete
    Replies
    1. First Make sure about you have added custom field in your object , After then add that field in that object xml file as I have mentioned above in my blog in Step 3: Edit View(Form, tree) , section C again follow it. may be you missed something

      Delete
    2. Google search: openerp add custom field form
      This blog listed 2nd.

      Exactly what I'm looking for. Incredibly helpful and make me feel like a pro simply by following your instruction.

      BTW, when all done,
      1. where are all changes made stored?
      2. possible to make the changes available to other OpenERP database?

      Thanks.

      Delete
    3. Thanks For your comment

      Yes, Whatever changes you have made it will be stored in respective object table.
      If You want to change in other database then you need to follow again this steps in that database.

      Delete
  4. What if I update the source code (bzr pull), the custom field will affected or not?

    ReplyDelete
    Replies
    1. In database it will not affected but in xml If you set your custom field in same view then it's may be affected or may be create conflicts.it's batter you add custom field in xml with use of view inheritance.

      Delete
    2. you can create a tutorial "add custom field in xml with use of view inheritance"

      Delete
    3. Yes sure i will update it soon !!!

      Delete
  5. thanks Mayur .
    From Mauritius

    ReplyDelete
  6. what is context...and the correct format of context ? if i want do access data into a field based on other field whats the procedure... ?

    ReplyDelete
    Replies
    1. A context is a python dictionary and is used to pass certain data to a method. Since nearly all methods have a context parameter you can use the context to pass data through several levels of python methods.

      IF You use the context in xml view then it's syntax is like this way

      [ field name="your_id" context="{'other_id': other}"/ ]

      In above case you can use a current view of fields in other_id and in other and that value you can use in your python code
      In short now your context is updated with the new key which name is 'other_id'

      If you want do access data into a field based on other field then you must use on_change method.

      Delete
  7. You rock! Can you point me in the right direction? I'm looking to change a form view in purchase orders. I've removed items we don't want displayed. But where can I modify the size of the fields? For instance. the Quantity box vs, the description box. I'd like to make the Quantity smaller and descriptions area larger. Figured I'd ask, you've already pointed me in the right direction once :-) Either way, thanks!

    ReplyDelete
  8. Hello Mayur,

    I have the same problem like Matthew Caddis9. I get a validateError when I add a field in the sales delivery form. If I add a field in the product form everything is fine.

    Have you an idea?

    Best regards
    Cetin

    ReplyDelete
  9. Dear Mayur,

    Afraid you aren't going to read/answer this, but I'll try anyway.
    I followed your guide and thanks to you I managed to add some fields that I needed.
    The problem I'm having right now is that I need to link 2 fields (have user fill field in form 1 and then having that data loaded into another form, for example filling field in quotation and then getting that data into the purchase order).
    Because of some strange rules here, I'm not able to get onto the database to actually make a custom module. So I only have the debug/admin rights.

    Do you know of any way to do this?

    Kind regards.

    ReplyDelete
  10. Nice Post.
    I like the way you written the post.
    Post is very Informative and easy to understand.
    Eresource provides single level bills of materials & mutli level bills of material. For each manufactured line item on a WO, the system provides a bill of materials (BOM) and routing. Eresource's erp bills of materials are completely integrated into the system.
    Thanks for sharing such a nice blog openerp bill of material.

    ReplyDelete
  11. I can find "Add an Item" as per step 2 (b). I scrolled to the bottom of the page.

    ReplyDelete
    Replies
    1. Sorry Mayur, I meant I CANT find "Add an Item"

      Delete
    2. Open that relevant form and press edit so it will in editable mode then after you will find the "Add an Item" in below of form
      if fill more difficulty then you can contact me gmail
      Gmail : mayurmaheshwari07@gmail.com

      Delete
  12. These instructions are very helpful. I added a custom field to the form for adding new Leads under sales. I can see the new field listed when I choose "View Fields" and look at the Model crm.lead fields. However, my problem is the next step. In your instructions Step 3b says to select "Edit Form" from the debug view menu. I don't have that option. In the debug view menu I only have these options: Debug View#347, View Log (perm read), Toggle Form Layout Outline, Set Defaults, JS Tests, View Fields, Fields View Get, and Manage Filters. Do you have any ideas of how I can get the additional options to appear in the debug view menu, such as the one I need now - Edit Form? Thank you!

    ReplyDelete
    Replies
    1. Go to settings, then users then click on your admin user, select the access rights tab and check the Technical Features option and Save. This should give you access to the technical features.

      Delete
  13. I have been developing modules in OpenERP-7 using Python on Ubuntu-12.04. I want to give my users a feature by which they will have the ability to create what ever fields they want to . Like they will set the name, data_type etc for the field and then on click , this field will be created. I dont have any idea how this will be implemented. I have set up mind to create a button that will call a function and it will create a new field according to the details entered by the user . Is this approach of mine is right or not? And will this work . ? Please guide me so that I can work smartly.

    ReplyDelete
    Replies
    1. Well In OpenERP You can add field to any object model
      To add a field in particular object [model] you can navigate to settings/technical/database structure / fields
      Open Any object then edit from and add the fields to relevant model

      Delete
  14. This comment has been removed by the author.

    ReplyDelete
  15. Thank you for these instructions. They have instructions saved me hours and are indeed clear and helpful.

    I have one problem. In my installation I have Association module installed which also adds a Membership page in the sales->customer form. However when I EditFormView the customer form, the only pages I have in the code are for internal Notes and Sales & Purchases. I do not have the membership page. For that matter, I also have Profiling page missing.

    Am I looking in the wrong place?

    ReplyDelete
    Replies
    1. Hello Silva said,
      Thanks for appreciation for my blog

      See membership and Profiling page are coming from the another module we can say it's comes from inheritance
      so that code of xml you can not see from the debug mode .

      Delete
  16. This is close to what I am looking for. What if, I would like to add the field product_code from the table product.supplierinfo in the product.product tree view so, I can make a search on the supplier code for my product instead of internal reference ?

    ReplyDelete
  17. Hi Can u please help me to create a new module with name VEHICLE step by step as u does on above adding field....if s so please send me the liunk which u created ..u r narrating in a good understandable manner..Please mail even if u carry any doccument on Technical aspect also..ID: seeramt@sify.com

    ReplyDelete
  18. What you should do is to have a community code snippet example page. Learning resource are spread all over the web and you need to google whatever you are looking for. There is no central point for it all. No where that, if someone need an example to change something, we can tell him "Go see OpenERP teaching snippet site" so they can learn thru example.

    Like for me, I am actually looking to modify the community module product_manufacturer_extension, this module works on v8 and adds the ability to add manufacturers, attributes etc... but, the manufacturer field is a many2one so, a product can only have 1 manufacturer. In reality, I have products that have more then 1 manufacturer, with their own manufacturer product name and code (pref).

    I am skimming the websites to find a way to make that field many2many, with how to modify the view to have an add button to add another manufacturer/manufacturer product name/manufacturer product code.

    Having a central point for example of such things would be great as most of people are most of the time just looking for something similar to what they want to do and can then tailor it to their needs.

    OpenERP developer team has the bad habit to use browse instead of search, this slows down the execution time drastically and could be one of the thing that could be in the best practice section !

    Even tho I have a running openerp server since 6.0.0, I have never had the need to change anything to it. Now, the needs of the cie I help with it (volunteer job as it is my father in law cie), I need to dig into the code to tailor it to their needs. I already new Java, JS, XML, HTML and CSS so, I went on and learned python on my own. Now, I need to try and decipher OpenERP scripts has the comments in code are elusive !!!

    Your blog has helped me a lot in understanding things so far, just look at your blog about product_product, how to set them and why to put them that way. You have a good a great ability to explain things in an easy to understand way thus why I thought of you to host a resources page

    ReplyDelete
  19. Great Tutorial.
    What if I want to ad a custom field under "leads" and want the value of this field to move over to both Prospect and Clients ? Also I would like to have these field available for use in the customer portal.....Any hints there on how to go about ?

    ReplyDelete
  20. Great tutorial. thanks

    ReplyDelete
  21. Great tutorial.

    I have a question: Let's say I add custom fields to an invoice... Where do I go to edit the logic on how to handle that code?

    Thanks.

    ReplyDelete
    Replies
    1. Hi

      If you need a more help then you can contact me on my mail : mayurmaheshwari07@gmail.com

      Delete
  22. Whenever I click Edit Form View, it show me the images below instead of letting me edit the tag.

    http://s29.postimg.org/76n6mdqqr/8_13_2014_1_59_13_PM.jpg

    Any idea?

    ReplyDelete
  23. hello,
    I have created a custom module and i can see it in installed apps ...but where can i see the the fields such as name,last name etc...plz help me

    Thanks

    ReplyDelete
    Replies
    1. Hi

      If you need a more help then you can contact me on my mail : mayurmaheshwari07@gmail.com

      Delete
  24. Try to follow your train of thought, to change some of the new products to increase the displayed list field, can not use the sort. If you can guide us, how to operate?

    ReplyDelete
    Replies
    1. Hi

      If you need a more help then you can contact me on my mail : mayurmaheshwari07@gmail.com

      Delete
  25. Thank you It's so clear.

    ReplyDelete
  26. This comment has been removed by the author.

    ReplyDelete
  27. Hi,
    Thank you very much for your tutorial, very helpful.
    I would like to ask:
    1. I made a custom field in res.partner. After this: I couldn't install the base_vat module (addon), I got an error message.
    When I removed the custom field, addon installed perfectly. Is this possible (conflict with another addon)?
    2. What happen when I'll update odoo? I'll lost custom fields (and data) or not?

    ReplyDelete
    Replies
    1. welcome
      @1. If you adding a custom fields then it will not conflict with another addons because when you adding a custom fields then the name of custom field is is like X_custom_fields and from module the fields name is without x_
      @2 . Yes If you update your odoo or update any module in odoo then definitely you will lost your custom fields fields view setting but you can't lost your custom fields.

      As E.X : you have added X_bas_vat fields in res.partner model and res.partner form view as well so when you upgrade base module then all view related changes will be lost so batter when you want to add any custom fields in your views then please make new view and inherit parent view which is best way and you can't lost your view changes as well

      If you need a more help this you can contact me on my mail : mayurmaheshwari07@gmail.com

      Delete
  28. This comment has been removed by the author.

    ReplyDelete
  29. Hi,
    Please help on the next question...
    how do i do the same trick like you explained but using data from a different field
    for example:
    add email field to model sales order, then link it to the data on email field in payment model.
    is this possible?
    Thanks

    ReplyDelete
  30. Hi, I cannot follow step 2a :menu Settings → Technical → Database Structure → Models as I cannot find "technical" in OpenErp 7 . help please

    ReplyDelete
    Replies
    1. Hi!, you need to activate the Technical features for the specific user in the Settings/user menu.

      Delete
    2. Cheers ! That was really helpful :)

      Delete
  31. Hi, I added a custom field as you describe in this post. However, my custom x_descrption_id field is of type many2one and links to a custom model, that has the 5 standard attributes (create_date, ...) and and additional x_description_text field.

    Now in my form view, I get a selection-widget, that allows my to select or create a description. However, it does not display the x_description_text of my model. Instead it displays something like this: x_sale.order.contract_description,1. Usually this widget would display the 'name' attribute. However, I can't have in custom models a name attribute, odoo does not allow it. Somehow I need to teach that widget what other attribute to display. I would appreciate some hint!

    ReplyDelete
  32. Brilliant. I was able to create a custom field in my Customers view. Brilliant and well written. I wish to add a tab ( already done) called Vehicles to the Customer View and in it, enable the user to add vehicles from the fleet module. The information that can be added will be model ( select from existing drop down list), license plat number , driver ( select from existing partner list) and last odometer. This would be really of assistance. Thanks Mayur.

    ReplyDelete
    Replies
    1. Thanks for appreciation for my blog (maheshwarimayur.blogspot.com)

      Delete
  33. Hello, I added a field in my app, Searchable "yes", but when I try to find the object in the search section doesn't appears. It seams is not working. I need to add a new field and the user must have the possibility to find a product using that field. Can anyone help me. Thanks!

    ReplyDelete
    Replies
    1. HI

      You can use a advance search option of OpenERP while you are searching. use advance search then select your fields and search your needs. Enjoy OpenERP :)

      Delete
  34. hi everyone,

    i am new to openerp. i have a dropdown and there are 2 options in that. if i select 1st option from the drop down,i need to get another new dropdown. if i select the 2nd option, i need to get 2 drop downs.

    thanks in adv..

    ReplyDelete
    Replies
    1. Hello ,

      You need to create a another 3 drop down like 1st option drop down, 2ed option drop down one and 2ed option drop down two, then just add this fields into the XML but now you need to give a attrs attribute on field to visible your options fields based on your need : for 1st option . --> attrs="{'invisible':[('main_dropdown','=','option1')]}" . i will write a article for you how to set a attrs in OpenERP/Odoo. Hope this will helps

      Delete
  35. Hi, I have some problems adding the new field. It is at the C step, I'd like to adding 'university' field on (Recruitment) Apllicants form. I would like to set it with integer data type.. can't I set the size of data type too? because i can't set the size, and it shows "0" number only. I tried to keep going but after all the process till Edit View done, it didn't shows any difference, i can't see my custom field.
    I need a help.. thank you.

    ReplyDelete
  36. Thanks a lot.. very useful.

    ReplyDelete
  37. Very helpful, thanks for this article. I have a question however: How can I add more attributes to the same field? In example: I would like the telephone number to be mandatory if is_a_company is selected, but would also would like it to be invisible if is_a_company is not selected.

    ReplyDelete
    Replies
    1. Thanks for appreciation for my blog (maheshwarimayur.blogspot.com), If You want visible , invisible your field on certain filed action then you can use a attrs attribute while you adding filed in view lavel. by adding attrs attribute on phone filed then it will work fine for you.

      Delete
  38. Great article. i have a question . how can i add a upload file field in any module like if i want to add that field in sign-in sign-out by project module? where to put the code. thanx in advance

    ReplyDelete
  39. Actually u did great thing to share for idea, its really help full for us those who are beginners and i am also the same. Is it possible to share our doubt or share the ideas ??
    if it possible, please give me the direction :- am working on HR module in that have a sub menu Applications and also have Resumes and letters . my aim is that Resumes and letters can modify From Application itself. When i am working on that i got an integrity error*** Integrity Error

    The operation cannot be completed, probably due to the following:
    - deletion: you may be trying to delete a record while other records still reference it
    - creation/update: a mandatory field is not correctly set

    [object with reference: Directory - document.directory]

    how can i solve this problem?? please give me a right direction if it is possible, i really need your answer

    ReplyDelete
  40. Thank you very much for this artical. It is really helpful.
    Since I am new to the Openerp can you help me for a problem? I have created drop down menu using this without hardcoding method. Then I want to open a form when I select each option in the drop down menu. Any help please.

    ReplyDelete
  41. Wondering if you can help. I am definitely in Developer Mode (I can see all the drop downs debug information on hover) however I do not see the Settings --> Technical area.

    I am running Odoo 8.0-20150423 using a Bitnami Virtual Machine running Ubuntu

    ReplyDelete
    Replies
    1. HI, Open user Form -> In Access right Tab --> mark Technical Feature flag

      Delete
  42. Thanks for sharing the knowledge!! I want to modify the check printing report and bring some additional information into that report such as invoice number of supplier, Withholding Tax on the payment, our Purchase Order # to the supplier,etc.

    can you give an idea for me to working on it further.

    ReplyDelete
  43. Thanks For Your valuable posting,this is for wonderful sharing,i would like to see more information from your side.i am working in Erp Company In Dubai

    ReplyDelete
  44. Hi Mayur,

    I try used odoo 8,
    I just need modify product view (form, tree and kanban).
    1. Product View Form = move the "default_code" field (Internal Reference) to BEFORE "name" field, HOW to do that.
    2. Product view tree and kanban = Add "default_code" to that

    Please help me

    Thanks

    ReplyDelete
  45. Sage Software Solutions has come up with highly intuitive and effective suites of enterprise resource planning. Sage Software providers ERP solution for manufacturing, services, pharma, chemical and for other more industry. Sage ERP Software is a powerful ERP suite that includes an intelligent accounting software, business intelligence reporting, inventory/sales management and HR tools to help boost productivity and success.

    ReplyDelete
  46. Hi. Thank you for the tutorial. I want to add a new field(NIF) to the customer module. I tried it as per your tutorial, but i am getting the following error(below). Can you help please.
    ValidateError

    Field(s) `arch` failed against a constraint: Invalid view definition

    Error details:
    Field `nif` does not exist

    Error context:
    View `res.partner.form`
    [view_id: 126, xml_id: base.view_partner_form, model: res.partner, parent_id: n/a]

    ReplyDelete
    Replies
    1. HI, First check the 'nif' field into 'res.partner' model. some where it's missing in your views. if 'nif' comes from custom module then add module as dependency in your module.one more thing one you inheriting in view give a uniq id every time in your xml view.Hope this helps you .Thanks

      Delete
    2. Hi,

      Thank-you Mayur for your help. It worked:-)Now i need the the NIF details to appear on the sales order form. I added this, "x_nif",It doesn't show any error, but the data doesnt appear on the form :-(
      plz help.

      Delete
    3. HI, First put 'x_nif' field into sale order form view and make sure it will be one time on form view no duplication same fields will be there. hope this works for you.Thanks

      Delete
  47. Finding the time and actual effort to create a superb article like this is great thing. I’ll learn many new stuff right here! Good luck for the next post buddy.

    I will bookmark your site and check again here often. I’m quite sure :)

    Thanks
    ERP Software Dubai

    ReplyDelete
  48. facing this issue.
    addons\base\ir\ir_ui_view.py", line 454, in raise_view_error
    ValueError: Field `pan_number` does not exist

    Error context:
    View `Jobs - Recruitment Form`
    [view_id: 329, xml_id: hr_recruitment.crm_case_form_view_job, model: hr.applicant, parent_id: n/a]

    ReplyDelete
  49. issue is solved after upgrading the module.

    ReplyDelete
  50. Hello Mayur Maheshwari,
    I am novice in development odoo and I wish to add a button in the header view tree of my model. The click on this button will use a python function.


    I tried to add the tag header but it not accepted in the view tree


    Can you help me please

    ReplyDelete
  51. I wish to add product code on product at sales function , but still no luck add the field, can u help me??

    ReplyDelete
  52. Hello Mayur Maheshwari,
    I would like to ask you if you could help me figure out how to change the invoice lines in order to add the manugacturing order name for a specific product, and based on the mfg name to automatically insert the qty for the product. Thank you, Silviu.

    ReplyDelete
    Replies
    1. hi Silviu you can create a new py flied how inherite from manufacture and call it in a new xml view witch inherite from invoice view .. if u still need help plz give me a print ecran to help u

      Delete
  53. Hi Mayur, With the custom field, I successfully added a new field with name "Tracking". I want to give its default value so that it show with all orders. currently only label is showing, how can I display custom field default value for all orders?

    ReplyDelete
  54. Actually I don't want to add a new database field. I want to add a custom html outside link.. like field name "Tracking" and value should be "Track Order"

    ReplyDelete
  55. Thank you very much .Very clear explanation . I follow the same steps but only the label of the field is shown however the drop down itself does not be shown :( any idea why?

    ReplyDelete
  56. Hi! tried this in Odoo 12. Why is that when I turn off the developer option, the additional fields that I added isn't showing up? Any idea why?

    ReplyDelete
  57. Thanks for sharing with us, This article gives more useful information to me.
    Odoo ERP Software
    erp development company in india

    ReplyDelete
  58. Does your site have a contact page? I'm having trouble locating it but, I'd like to shoot you an e-mail. I've got some suggestions for your blog you might be interested in hearing. Either way, great blog and I look forward to seeing it improve over time.
    function rooms liverpool nsw

    ReplyDelete
  59. Thanks for providing an article on how we can add custom fields on any object, I liked this guideline and I hope you will post similar information in future.
    Best Odoo ERP Software Development Company

    ReplyDelete
  60. you are the best ..thank you so much !!

    ReplyDelete
  61. Hello Thank you for sharing this information I myself works in a odoo development company.

    ReplyDelete
  62. This comment has been removed by the author.

    ReplyDelete
  63. This comment has been removed by the author.

    ReplyDelete
  64. Great Work. Kindly explain to newcomers like myself how to print the same custom field on pdf print.

    ReplyDelete
  65. Great Article!!!!!

    Thank you so much for sharing such an great piece of content with us. It is very unique and informational. Keep sharing. Odoo Training

    ReplyDelete
  66. Mayur Maheshwari - Techno-Functional Consultant Odoo (Openerp): How To Add Custom Field On Any Object In Openerp - Odoo >>>>> Download Now

    >>>>> Download Full

    Mayur Maheshwari - Techno-Functional Consultant Odoo (Openerp): How To Add Custom Field On Any Object In Openerp - Odoo >>>>> Download LINK

    >>>>> Download Now

    Mayur Maheshwari - Techno-Functional Consultant Odoo (Openerp): How To Add Custom Field On Any Object In Openerp - Odoo >>>>> Download Full

    >>>>> Download LINK 4z

    ReplyDelete
  67. Really good work there. Informative and helpful. Appreciate it. But might be looking for Odoo ERP Development Services in Pennsylvania

    ReplyDelete
  68. Wow..You can upload your pre-made design for custom sales and service on our website using our easy to use Uploader Tool. Once you submit your design, we provide free proofing services to ensure everything is in place. Apart from ensuring the design fits perfectly in the printing lines, we also check for grammatical errors and typos. Once checked, the design is sent back to you for final confirmation and only then sent for printing.

    ReplyDelete