اذهب إلى المحتوى

السؤال

نشر

لدي مودل خاص حسب الموضح في الأسفل

اريد عمل نموذج في portal في الواجهة الأمامية website  

بحيث عند تعبئة النموذج يتم التسجيل على maintenance.receipt 

لأن النموذج الحالي لا يقوم بالتسجيل إلا على module CRM للعملاء المحتملين 

class maintenance_receipt(models.Model):
    _name = 'maintenance.receipt'
    name = fields.Char(string='عنوان الطلب',required=True)
    partner_id = fields.Many2one('res.partner','اسم العميل',required=True)
    partner_mobile = fields.Char(string='رقم الجوال')
    partner_main = fields.Char(string='البريد الالكتروني')
    building_name = fields.Char(string='اسم المشروع',required=True)
    unit_name = fields.Char(string='رقم الوحدة',required=True)

 

Recommended Posts

  • 0
نشر

أولاً عليك إنشاء قالب HTML لعرض النموذج على الواجهة الأمامية للموقع (website باستخدام قالب النموذج المدمج في Odoo أو تخصيص قالب خاص بك،  وتصميم النموذج وتضمين الحقول اللازمة مثل name و partner_id و partner_mobile وما إلى ذلك، وتأكد من تعيين الأسماء الصحيحة للحقول وإضافة البيانات اللازمة للتحقق من صحة المدخلات.

ثم بناء وحدة (module) مخصصة لإدارة عملية التسجيل على النموذج في الواجهة الأمامية، عن طريق إنشاء ملف Python جديد بالاسم الذي ترغب فيه، مثلاً controllers.py.

وفي الملف controllers.py، قم بتعريف وحدة التحكم الخاصة بك واستيراد الوحدات اللازمة كالتالي:

from odoo import http
from odoo.http import request

ولا تنسى تعريف المسار (route) الذي سيتم استخدامه لعرض النموذج ومعالجة بياناته، بواسطة الديكوريتور http.route لتحديد المسار وطريقة الوصول (GET أو POST) والوظائف المرتبطة به كالتالي:

class MaintenanceReceiptController(http.Controller):

    @http.route('/maintenance/receipt', type='http', auth='public', website=True, methods=['GET', 'POST'])
    def maintenance_receipt_form(self, **kw):
        # عرض النموذج ومعالجة بياناته
        return http.request.render('your_module.template_name', {})

والآن تعريف دالة لمعالجة بيانات النموذج عند الإرسال واستخدامها لاستلام البيانات المرسلة من النموذج وإنشاء سجل جديد في نموذج maintenance.receipt:

class MaintenanceReceiptController(http.Controller):

    @http.route('/maintenance/receipt', type='http', auth='public', website=True, methods=['GET', 'POST'])
    def maintenance_receipt_form(self, **kw):
        if request.httprequest.method == 'POST':
            # استلام البيانات من النموذج
            name = kw.get('name')
            partner_id = kw.get('partner_id')
            partner_mobile = kw.get('partner_mobile')
            partner_main = kw.get('partner_main')
            building_name = kw.get('building_name')
            unit_name = kw.get('unit_name')

            # إنشاء سجل جديد في maintenance.receipt
            receipt = request.env['maintenance.receipt'].sudo().create({
                'name': name,
                'partner_id': partner_id,
                'partner_mobile': partner_mobile,
                'partner_main': partner_main,
                'building_name': building_name,
                'unit_name': unit_name,
            })

            # يمكنك تنفيذ أي إجراءات إضافية هنا

        return http.request.render('your_module.template_name', {})

والآن نأتي لخطوة تعريف قالب (template) لعرض النموذج ورسالة تأكيد بعد تسجيل البيانات بنجاح، بالإعتماد على قالب HTML لإظهار رسالة تأكيد أو إعادة توجيه المستخدم إلى صفحة أخرى، وتستطيع استخدام الديكوريتور http.route لتحديد القالب المستخدم كما يلي:

class MaintenanceReceiptController(http.Controller):

    @http.route('/maintenance/receipt', type='http', auth='public', website=True, methods=['GET', 'POST'])
    def maintenance_receipt_form(self, **kw):
        if request.httprequest.method == 'POST':
            # استلام البيانات من النموذج
            name = kw.get('name')
            partner_id = kw.get('partner_id')
            partner_mobile = kw.get('partner_mobile')
            partner_main = kw.get('partner_main')
            building_name = kw.get('building_name')
            unit_name = kw.get('unit_name')

            # إنشاء سجل جديد في maintenance.receipt
            receipt = request.env['maintenance.receipt'].sudo().create({
                'name': name,
                'partner_id': partner_id,
                'partner_mobile': partner_mobile,
                'partner_main': partner_main,
                'building_name': building_name,
                'unit_name': unit_name,
            })

            # رسالة تأكيد أو إعادة توجيه المستخدم إلى صفحة أخرى
            return http.request.render('your_module.template_success', {})

        return http.request.render('your_module.template_name', {})

واستبدل 'your_module.template_name' باسم قالب النموذج لديك و'your_module.template_success' باسم قالب الرسالة التأكيدية.

وأخيرًا تسجيل وحدة التحكم الخاصة في ملف __manifest__.py لتمكينها في Odoo بإضافة اسم الملف واسم الوحدة ومسار الملفات وأي تبعيات أخرى.

  • 0
نشر

بخصوص odoo ستجد ما تريده في المحتوى الأجنبي أرشح لك قناتي odoo mates  و Odoo Discussions وأيضًا يوجد قائمة مفيدة باسم Odoo Website & E-Commerce في قناة Concept Solutions.

أيضًا قناة odoo الرسمية بها شروحات مفيدة، ابحث مثلاً عن Build an ecommerce website with Odoo.

أيضًا يوجد المستند الرسمي:

وتستطيع البحث في جوجل عن المزيد.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...