Sunday, September 13, 2020

overwrite unlink function in odoo

ODOO


 

unlink() function

To explain how we can overwrite the unlink() function in odoo we must understand some points

  • any object in odoo has it's own unlink() function which is enable the user to delete any record from this object with out any condition
  • we overwrite the unlink() function when we want to put some conditions on to delete records from the object , or if we want to make the any record unable to be deleted when it created 
Now let us give an example and let us say that we have an object by name "sas.admission" with class name "sas_admission", and in this object we have state field as 

state = fields.Selection([('draft','Draft'),('request','Request'),('done','Done')], string="State", default='draft')

and we want to make any record on this object can to deleted only if it's state is "draft" so we can overwrite the unlink() function as bellow 

@api.multi
    def unlink(self):
        """
        overwrite the unlink function to make user can delete the record if it's state is draft only
        """
        if self.state != 'draft':
            raise ValidationError(_('You cannot delete this record because it state is not draft'))
        return super(sas_admission, self).unlink()

the validation error message will look like 



* don't forget to import ValidationError on your class as bellow 
 
    from odoo.exceptions import ValidationError

Saturday, September 12, 2020

create constrains function in odoo

ODOO

 

constrains

to explain this let us say that we have four-digit name as we explain how we can create it in this topic how to Add a four-digit name in odoo 

now let us say that we have to create validation function that make the user can not save any name that contain any letter or mark than English letters , and to do this we must create constraint function that looping in the name of the employee and show validation error message if the name contain some non English letters or numbers , so the function can be as bellow 

@api.constrains('first_name','second_name','third_name','fourth_name')
    def _arabic_name_validity(self):
        """
        verifies if  name for the employee .
        """
        arabic_letters_list = [
                                'a','s','d','f',
                                'k','j','h','g',
                                'l','z','x','c',
                                'm','n','b','v',
                                'q','w','e','r',
                                't','y','u','i',
                                'p','o',' ',
                            ]
        if self.first_name and self.second_name and self.third_name and self.fourth_name:
            for index in range(0,len(self.first_name)):
                if self.first_name[index] not in arabic_letters_list:
                    raise ValidationError(_('the first name of the employee name must contain english letters only'))
            for index in range(0,len(self.second_name)):
                if self.second_name[index] not in arabic_letters_list:
                    raise ValidationError(_('the first name of the employee name must contain english letters only'))
            for index in range(0,len(self.third_name)):
                if self.third_name[index] not in arabic_letters_list:
                    raise ValidationError(_('the first name of the employee name must contain english letters only'))
            for index in range(0,len(self.fourth_name)):
                if self.fourth_name[index] not in arabic_letters_list:
                    raise ValidationError(_('the first name of the employee name must contain english letters only'))


the validation message will look like the image bellow 

Add a four-digit name in odoo

four-digit name

Some organizations ask to create four-digit name for it's employees when we enter the data for them , and to do that we have to create the four-digit name as bellow as in the image bellow 


  • create five char fields in the employee model which are 
first_name , second_name , third_name , fourth_name and the complete name which is contain all the other names and  defined theme as bellow 

    name = fields.Char("Name", required=True, compute='get_full_name')
    first_name = fields.Char("First Name", required=True)
    second_name = fields.Char("Second Name", required=True)
    third_name = fields.Char("Third Name", required=True)
    fourth_name = fields.Char("Fourth Name", required=True)

the get_full_name() function use to concatenate the complete name for the employee and it must be as bellow 

@api.one
    @api.depends('first_name','second_name','third_name','fourth_name')
    def get_full_name(self):
        """
        the method compute the full name for the employee
        """

        if self.first_name and self.second_name and self.third_name and self.fourth_name:
            self.name = self.first_name+" "+self.second_name+" "+self.third_name+" "+self.fourth_name


  • create the view as bellow 
<group colspan="2" col="2">
                            <field name="name" style="font-size:30px;color:#7c7bad;"/>
                        </group>
                        <group colspan="12" col="12">
                            <field name="first_name" nolabel="1" placeholder="First Name" attrs="{'readonly':[('state','!=','draft')]}"/>
                            <field name="second_name" nolabel="1" placeholder="Second Name" attrs="{'readonly':[('state','!=','draft')]}"/>
                            <field name="third_name" nolabel="1" placeholder="Third Name" attrs="{'readonly':[('state','!=','draft')]}"/>
                            <field name="fourth_name" nolabel="1" placeholder="Fourth Name" attrs="{'readonly':[('state','!=','draft')]}"/>
                        </group>

Friday, September 11, 2020

أفضل طرق الربح من الإنترنت

 سنقوم في هذا المقال بذكر بعض طرق الربح من الإنترنت 

 

مواقع للربح من الانترنت

الربح من إستعلامات الرأي 

تقوم بعض المواقع بطرح إستعلامات عن الأراء عبر الأنترنت ، كما تقوم بدفع مبالغ من المال للمشاركبن في هذه الإستعلامات ، ومن أهم هذه المواقع 

موقع يورجوف 

وهو موقع يقوم بالإستعلامات والأبحاث عن الأسواق

موقع موبروج

يعتبر من المواقع الإستعلامية المميزة جدا ، حيث يقدم الإشتراك المجاني للمشتركين ، ويقدم إستعلامات الرأي عبر البريد الإلكتروني 

cash crate

يعتبر من المواقع الربحية المميزة جدا حيث أنه يحتوي على عدد كبير ومختلف من الإستبيانات في مجالات مختلفة ، كما أنه يوفر العديد من طرق الدفع للمشتركين 

 opinionoutpost

يمكن للمشتركين بهذا الموقع الحصول على الإرباح من الإستعلامات ، ولكن من أهم ما يميز هذا الموقع هو المسابقات الدورية التي يقوم بها والتي قد تصل قيمتها إلى 10000 دولار 

 

الربح من التسويق بالعمولة

الأفلييت

بهذه الطريقة يمكنك كسب المال عن طريق تسويق منتجات بعض الشركات التي تتيح لك هذه الفرصة عن طريق مواقعها الإكترونية حيث يمكنك كسب نسبة من أرباح الشركة عن المنتجات التي تقوم أنت بتسويقها لهم  ، ومن أهم هذه الشركات 

 Clickbank

هي شركة عالمية تقدم خدمات في مجالات مختلفة مثل تربية الكلاب وتربية الأطفال والعناية بالبشرة ، وبما أن معظم منتجات هذه الشركة رقمية فيمكن أن تصل أرباحك إلى نسبة 75%

أمازون أفلييت

لايوجد شخص يقوم بالدخول على الإنترنت بصورة دورية لم يسمع عن أمازون والخدمات التي تقدمها ، ومن خذخ الخدمات إتارحة الربح من التسويق منتجاتها بنسبة تترواح بين 4 إلى 15 % 

عرب كليكس

تقوم هذه الشركة كوسيط بين المشاركين الذين يودون تحقيق الأرباح من التسويق للشركات العربية التي لا توفر خدمة أفلييت مثل سوق ، كنون وغيرهما ، ولكن شركة عرب كليكس قامت جمع معظم الشركات العربية وأعددت لها أفلييت موحد ، ومن أهم ما يميز هذه الشركة هو أنها تمكنك من الترويج عن طريق كوبون خاص بك

منصات العمل الحر

 منصات العملي الحر تقوم كوسيط بين الجهات التي تطلب إشخاص أو جهات مستقلة لتنفذ لها بعض الأعمال ، وبين هذه الجهات ، وببساطة الجميع يربح من هذه المنصات ، وطالب العمل يجد الشخص المناسب لتنفيذ المطلوب ، والمنصة تأخذ نسبة من تكلفة المشاريع ، ومن يبحث عن عمل يجد لنفسة مصد دخل أخر ، ومن أهم هذه المنصات 

موقع مستقل

وهو منصة عربية تتيح للجهات والأشخاص المستقلين القيام بأعمال حرة للربح من خلالها وفي مجالات مختلفة من الهندسة والبرمجيات وأعمال التصميم والعمارة وغيرها الكثير ، والعملية الأساسية به أن صاحب العمل يقوم بطرح المطلوب تنفيذه في مجال معين وبميزانية معينة ، ويقوم من يستطيع تنفيذ المطلوب بإنشاء عرض بقيمة معينة ، وأخيرا يقوم صاحب العمل بإختيار عرض واحد من العروص المقدمة له (مثل المناقصات التي تقدمها الشركات والمؤسسات) 

موقع خمسات

منصة عربية للعمل الحر يقوم كل من يريد الربح من تقديم الخدمات ، بعرض الخدمة التي يمكن أن يقدمها وبقيمة مالية محددة ، يقوم من يطلب خدمة (مثل ترجمة كتاب مثلا) بتصفح خدمات الترجمة المعروضة بالموقع وشراء الخدمة التي تناسبه

upwork

بإختصار عبارة عن منصة عالمية للأعمال الحرة في كافة المجالات وتوفر العديد من طرق الربح المختلفة ، لذلك إذا كنت تبحث عن الربح من الإنترنت ، في أولى المنصات التي ننصح بها 

99designs

منصة عالمية أخرى لربح المال من الإنترنت عن تريق التصاميم وإنشاء اللوحات وأعمال الفوتوشوب والمونتاج للفيديوهات وغيرها الكثير 

الربح من مشاهدة الاعلانات

 إذا كنت من أصاحب المواقع الإلكترونية أو المدونات أو قنوات اليوتيوب ، فيمكنك الربح من هذه المواقع عن طريق عرض الإعلانات لجهات مختلفة  ، ولكن لتحقيق ذلك عليك التأكد من الأتي 

 إذا كنت من أصاب المواقع أو المدونات عليك التأكد من صلاحية موقعك لإحتواء الإعلانات حسب شروط قوقل أد سينس

إذا كنت من أصاحب قنوات اليوتيوب عليك مراجعة شروط الإشتراك في قوقل أد سينس ومن أهمها أن تحقق قناتك 1000 مشترك و4000 ساعة مشاهدة علنية في 12 شهر 
وأخيرا الأشتراك في قوقل أد سينس

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...