Wednesday 5 March 2014

Change report fonts in Odoo

Change reports fonts in Odoo/OpenERP


Let's change font in Odoo/openerp reports. I mean some time we need to change the report font in our company font. Simple answer go to every report(.rml) and change manually every where.

I have simple way to just replace the font.

Steps to do in simplest way

 - Download Community module from : l10n_cn_fonts
 - Just replace your fonts don't forget to put fonts in l10n_cn_fonts/fonts folder.
 - Replace the font name in the file __init__.py accordingly.
 - Install module

So, now at the time of rendering it will always consider your fonts.


..Enjoy.. 

Friday 21 February 2014

Odoo Example Flow

Complete Example:

Steps :

1. Create a new customer

2. Create a new product category and product

3. Add Minimum Stock Rules

4. Create a Bill of Material

5. Warehouse and locations

6. Create a sales quotation

7. Confirm the sales order

8. Run the scheduler

9. Change the purchase request and confirm it

10.Receive the products

11.Create the draft purchase invoice

12.Run the scheduler again

13.Start manufacturing

14.Deliver the goods to the customer and create draft sales invoice

15.Create the sales invoice

16.Confirm the purchase invoice

..Enjoy..

Thursday 20 February 2014

Know object/table size in Odoo database

Table Size in Odoo


Every time after backup we check how much space needed. Its necessary, but its normal if we have lots of space, but when database size continuously increase then we need to check which table/object increase your database size so fast.

So, in PostgreSQL if we want to see which table/object increase your database size then by following sql query, you can easily know which object consume how much.

[Query ]:
SELECT nspname || '.' || relname AS "relation",
pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
AND C.relkind <> 'i'
AND nspname !~ '^pg_toast'
ORDER BY pg_total_relation_size(C.oid) DESC
LIMIT 100;


..Enjoy..

Wednesday 18 December 2013

Hide field in tree view based on condition



Hide Field in Tree view

In tree view we know how to put domain or attrs to visible or invisible any field,

But, if we want to hide particular field in tree view based on type or state means based on any condition , then its hard to hide as we cannot use attrs to hide as attrs hide only value not a field.

So, its need to put some condition like below as its get value from context and check.

invisible="context.get('picking_type', False) in ['in']"

Version : V8
..Enjoy..

Monday 16 December 2013

Call xmlrpc when want to access functional field

Hello All,

In openerp sometimes we need to update database value on basis of some field value, we can direct do it but if we want to apply in old data then we use sql query and we update but if there is functional field which is not stored in database but you need to update data base on it. At that time we can do it by xmlrpc.

Here, i defined xmlrpc script in which if there is Purchase order which is 'received' and 'invoiced' but still not in 'done' state by this script purchase order gone in 'done' state.


Purchase Order Done :

import xmlrpclib
import time

username = 'admin' #the user
pwd = 'a'      #the password of the user
dbname = 'test'    #the database
model = 'purchase.order' # model name

# Get the uid
sock_common = xmlrpclib.ServerProxy ('http://localhost:8069/xmlrpc/common')
uid = sock_common.login(dbname, username, pwd)

#replace localhost with the address of the server
sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')

# argument passed to search
args = [('shipped', '=', True), ('state', 'not in', ['done']), ('invoice_method', 'in', ['manual','picking'])]
# search ids
ids = sock.execute(dbname, uid, pwd, model, 'search', args)

# READ functional field
ids_f = []
fields = ['invoiced']
po_ord = sock.execute(dbname, uid, pwd, model, 'read', ids, fields)
for re in po_ord :
    if re['invoiced'] :
        ids_f.append(re['id'])

# write state done
values = {'state':'done'}
results = sock.execute(dbname, uid, pwd, model, 'write', ids_f, values)

if ids_f :
    print "Successfully applied records ",ids_f
else:
    print "No records found to update"


 >

Thursday 28 November 2013

Add tag in advance search


Hello All,

In openerp there is functionality so we can see the field with combination of more than one field, means field one is display with field 1+ field 2
ex. field 1 value = 'My Account' field 2 = '007' now with the use of name_search method we can concete both fields and its look like 'oo7/My Account' . Now, in this case its became very hard to search so openerp provides one way as a put a tag on search. So, its became eady to you what you want to search. Tags look like , 'name:YOUR_VALUE' , 'code:YOUR_VALUE'..

To do, you need to add following code,

+            if name and str(name).startswith('name:'):
+                acc_name = name.split(':')[1]
+                args += [('name', operator, acc_name)]
+                name = False
+            if name and str(name).startswith('code:'):
+                code = name.split(':')[1]
+                args += [('code', operator, code)]
+                name = False

You  can use it like following way,




..Enjoy..

Tuesday 15 October 2013

Set reply to in OpenERP


How to set reply to in OpenERP ?

I think you all are searching about how to use reply-to in OpenERP 7.0 ?

If we are about to set mail configuration of any company than there is mail alias in picture we already talked about mail alias as how to set and configure mail alias and how it works.
Mail Alias in OpenERP

But, the problem when we send a mail to any customer and if customer reply to that mail at that time there may be chances to loose
mail so we need to configure reply to proper so whenever customer reply than it will take the reply to mail.

so, there are two ways either we hard code for reply to and another way little bit hacking like set defaults from web UI .

Here, i defined some steps so admin can easily configure default.

1. Just login with admin user.
2. Activate developer mode .



3. Now, go to mails and create a new mail and set reply to any mail you want to set in reply to.




4. open debug mode and select "Set Defaults" so it will open one dialog from that select reply to = XXXXX and set as per requirement for all users or only one.

Now, You can test there is reply to added in mail....


.. Enjoy ..