Friday, January 22, 2021

pdf report creator



Here we will explain how his module works

Module Menus :
After you giving the current user all permissions you can fine new root menu with
the name Reports Creator with has two submenus with name Create new report
and Templates , as in the image bellow
 

Templates Menu :
By going to reports Creator/Templates you will fine view with 20 templates in
many models and you can create your new templates as you want


Create Template :
From reports Creator/templates click on create and enter
name: with will be the name of your template
model : that is the model that you want to create the template for
Apply to models : which is allows you create the current template for more than
one template that you choose by duplicating the current template for each one of
them
Use as sample template : which is allows you to use the current template as
sample that you can choose it to create another template just by editing it
Sample image : the image that will descripting the template



Content : here we will design the report template body it self as we are writing
text file , and we can read a value for one field for the model that we had choose
just by writing S{object.field_name} , here you can check the20 examples


Paper format : this page gives you many options to define the page format such
as , margins and orientations


Available fields : in this page you can fine all fields from the model you choose ,
and you can get the value of any one of them as we say above



Samples : here you can choose one of the sample template , then it’s content will
be written in the current template content area , and the you can edit it as you
want


 
Create Report :
 
To create and print new report go to reports creator/ create new report and then
click on create button and add the fields

Date : the date of creating this report which is take the current date as default
model : the model that you want to print report from it
Template : select one template form all templates that’s designed for the model
you choose
Record field : this field depends on the models you choose , for eg if you choose
employee model this field will by employee so you have to choose one employee
to print the report for him



Print button : to print the report after filling all fields just click on the print button
on the top menu , you will get popup window , then revise the report and click on
the print button on the bottom of the window which will create the pdf file



 
 
Watch demo




Download module
👍












Friday, January 1, 2021

sequence in odoo 14

 

Add sequence to odoo object

 
we can add sequence in odoo 14 by following the example bellow 
 
now let us say that we have objects by the name "shilal.object" and we want to 
create sequence field for this objects as "S_O000001" , so to do that 

1/ add char field in this model as 
 
sequence  = fields.Char(string="Sequence")
 
 
2/add the function that will generate the value for this field as bellow
 
@api.model
    def create(self, vals):
       if vals.get('sequence', 'New') == 'New':
           vals['sequence'] = self.env['ir.sequence'].next_by_code(
               'shilal.object') or 'New'
       result = super(ShilalObject, self).create(vals)
       return result

3/ create the xml code for this sequence as bellow

<record id="shilal_object_sequence" model="ir.sequence"> // define sequence record
          <field name="name">Shilal Object Sequence</field> // define sequence name
          <field name="prefix">s_O </field>
          <field name="padding">6</field>
          <field name="code">input.fields</field>
</record>

Sunday, December 6, 2020

open specific view from many2one field

 ODOO 



In this case we have many2one field for model that has more than one view and we want to open specific view from this field for this model

let us give an example :

- we have model "object.a" and model "object.b", in which we have object_a_id field as bellow 

object_a_id = fields.Many2one('object.a', string="Object A")

 

- model "object.a" has two form view with ids "object_a_form_view_1" and "object_a_form_view_2" and "object_a_form_view_1" id the default view and we want to show the other view from object_a_id field , so we can do it by add the field in the xml file as bellow

 

<field name="object_a_id" context="{'form_view_ref':'module_name.object_a_form_view_2',}" />

Thursday, December 3, 2020

OperationalError: FATAL: the database system is starting up

ODOO



The error above happen when the postgres database service can not start , so to fix it we have to restart the postgres by opening the terminal and write the command bellow 

sudo service postgresql restart

Tuesday, December 1, 2020

The tag is deprecated, use a tag for

 ODOO 

odoo 14


 

"The <report> tag is deprecated, use a <record> tag for ...etc "

some time you can get the error above when you create new report tin odoo 14.0 because 90% created it as bellow ,

<report
            id="report_action_id"
            string="Report Name"
            model="model.name"
            report_type="qweb-html"
            name="module_name.report_temp_id"
            menu="True"
        />


But , You have to create it as bellow to fix this error 

 

<record id="report_action_id" model="ir.actions.report">
        <field name="name">Report Name</field>
        <field name="model">model.name</field>
        <field name="report_type">qweb-pdf</field>
        <field name="report_name">module_name.report_temp_id</field>
        <field name="report_file">module_name.report_temp_id</field>
        <field name="binding_model_id" ref="model.name"/>
        <field name="binding_type">report</field>

</record>

Friday, November 27, 2020

many2one field domain from function

 ODOO

 odoo 14


 

in this blog we will explain how we can define domain for Many2one field in odoo 14 , so let us start 

 

First we have "object.a" model which is contain Many2many in which we will add many users , as bellow

user_ids = fields.Many2many('res.users', string="Users")

Second we have "object.b" model , which we have user_id field that contain the current user , and object_a_id which is Many2one field from object "A" , as bellow

user_id = fields.Many2one('res.users', string='Created By', default=lambda self: self.env.user, readonly=True)

object_a_id = fields.Many2one('object.a', string="A")

and we need to make domain over object_a_id field to show only the records from object A that the current user is involved in the user_ids field 

....

To make the domain we have to add function as bellow  

    @api.onchange('some_field_in_B_object')
    def _get_object_b_ids(self):
        """
        function to get the A records for the current user
        """
        object_a_ids = self.env['object.a'].search([])
        ids_lis = []
        domain = [('id','=', -1)]

        for rec in object_a_ids:
            for line in rec.user_ids:
                if self.user_id == line:
                    ids_lis.append(rec.id)
        res = {}
        res['domain'] = {'object_a_id': [('id', 'in', ids_lis)]}
        return res



 

Wednesday, November 11, 2020

create new branch on github

GitHub

 

In the blog we will explain how we can create new branch on github from terminal , so follow the steps bellow 

 

1/ create new folder with name local_branch 

2/ open the terminal with it's path and write the comands bellow one by one

 

git init // to initialize local repo 

git add . // to add all folders in this folder to your local repo

git checkout -b local_branch // to make checkout 

git commit -m "any text message you want" // to commit your changes

git remote add origin remote_repo_path on github // to add your local branch to remote branch 

git push origin local_branch //  to push your files to the remote branch

Odoo Invoice Qr code issues

There are two main issues must of us facing with the QR code in Odoo invoice & these issues are 1/ QR code displayed as broken image w...