OpenERP النمذجة/وجهات النظر: ذات الصلة كائن مضمنة

لقد قمت بتركيب وحدة المعالجة المركزية في OpenERP 6.1 وحدة نمطية كرم.

As a result, I now have res.lead active and visible at "Sales->Opportunities".

أريد تعديل هذا الكائن/الملف الشخصي لإظهار عنوان إرسال الفواتير الخاص بالشريك.

وبما أنني أريد القيام بذلك على شكل "أشكال المعارضة" ، فهناك بالفعل شريك.

نسخ وحدة أخرى ، قمت بتعريف وحدتي الجديدة مثل:

class crm_lead(osv.osv):
    _name = _inherit = 'crm.lead'
    _columns = {
    'billing_address_id': fields.many2one('res.partner.address', 'Partner Billing Address', domain="[('partner_id','=',partner_id),('type','in',['invoice', 'default'])]"),
    }

وقمت بتغيير update_xml الخاص بي إلى:

    
        Opportunity form (inherit)
        crm.lead
        
        
            
                
                
                    
                        
                        
                    
                    
                        
                        
                    
                
            
        
    

المشكلة هي أن الكائن المرتبط يظهر جميع الحقول ذات الصلة (كما أتوقع أن يكون متوقعًا). على وجه الخصوص ، تُظهر حقول partner_id و company ، التي أريد إخفاءها لأنها يجب أن تتوارث/ترث من هذه الفرصة (أو الشريك المرتبط).

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

شكرا للمساعدة!


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

0

4 إجابة

هناك طريقتان لتحديد عرض للحقول ذات الصلة مثل هذا. يمكنك استخدام السياق مثل هذا:


يمكنك أيضًا تحديد العرض بالكامل للسجل الفرعي باعتباره subview داخل العرض الرئيسي مثل:

    <!-- <=== order_line is a one2many field -->
    
        <form>
            
            ...
        </form>
        <tree>
            
            ...
        
    
0
وأضاف
هذا غريب ،CB. أنا عادة ما أستخدم عميل GTK ، لذلك لم أكن أعرف مشكلة عميل الويب مع المقدمات الفرعية. هل يستخدم عميل الويب العرض الفرعي الذي شاهدته محددًا على res_partner؟
وأضاف المؤلف Don Kirkby, مصدر
ليس crm_lead.billing_address_id حقل one2many ،CB. ؟ ظننت أنك ستقوم بتحديد عرض فرعي في هذا المجال. أين تعرّفها؟ هل تستخدم طريقة العرض res_partner عنصر واجهة المستخدم one2many_list؟
وأضاف المؤلف Don Kirkby, مصدر
جربت الطريقة الثانية (المقابلات الشخصية) بعد كتابة السؤال ، حيث يبدو بالضبط ما أريد. في الواقع ، تستخدم طريقة العرض res_partner مشاهد فرعية لهذا الغرض. ومع ذلك ، فإن نسخها إلى update_xml الخاص بي فشل في العمل - ما زلت أحصل على نفس عنصر القائمة المنسدلة. سأختبر الطريقة الأولى قريباً هل أنت متأكد من OpenERP يدعم العروض الفرعية في أبنية الرؤية الموروثة؟
وأضاف المؤلف EB., مصدر
لقد قمت بتعيين بعض نقاط التوقف في field_views_get ولاحظت أنه في حين يتم تقييم محتويات عرضتي الفرعية في __view_look_dom_arch ، لا يتم إرجاعها في النموذج النهائي (فقط قبل حساب شريط الأدوات). أيه أفكار؟
وأضاف المؤلف EB., مصدر
تشير المزيد من الاختبارات إلى أن الحقول الفرعية المحددة (بشكل صحيح؟) تظهر كـ xfields ['billing_address_id'] ['views'] ['form'] و xfields ['billing_address_id'] ['views'] ['tree'] ، ولكن العميل على شبكة الإنترنت يرفض أن تظهر لهم.
وأضاف المؤلف EB., مصدر
يبدو أن المزيد من الاختبارات يلوم عميل الويب ، الذي يبدو أنه لا يدعم المقدمات الفرعية لحقول many2one. لا تزال تبحث في ذلك.
وأضاف المؤلف EB., مصدر
نعم ، يبدو أن هذا صحيح. هل تعتبر هذا خطأ؟ لا يطالبك JS بـ self.set_embedded_view. شكرا للنصيحة حول المقدمات الفرعية. قبلت علامة منذ أن كنت صحيح ، ولكن OpenERP غير صحيح.
وأضاف المؤلف EB., مصدر
نعم انها ، لأن هذا هو one2many.
وأضاف المؤلف EB., مصدر
لقد قمت بنسخ تعريف crm_lead.billing_address_id من crm_lead.partner_address_id ، والذي يتم تعريفه على أنه 'partner_address_id': fields.many2one ('res.partner.address') ، السبب في ذلك هو m2o الحقول لأنهم يطلبون من المستخدم "اختيار واحد" - وبعبارة أخرى ، لجعل مفتاح خارجي على crm_lead نموذج. res_partner.addresses هي one2many (حيث يمكن أن يكون لدى الشريك العديد من العناوين) ، وهذا هو سبب عمل العرض الفرعي. billing_address_id (mine) و partner_address_id (مضمنة في crm) هي many2one (اختر عن
وأضاف المؤلف EB., مصدر
بقدر ما أستطيع أن أرى ، فإن سمة عنصر واجهة المستخدم غير مهمة بمجرد أن يكون العرض المدمج (subview) في مكانه. بالإضافة إلى ذلك ، لا يحدد res_partner أي سمة عنصر واجهة مستخدم لحقل العنوان الخاص به.
وأضاف المؤلف EB., مصدر
علاوة على ذلك ، لا يمكنني وضع هذه الحقول على بعد 1 ميلاني لأن المفتاح الخارجي المطلوب لن يكون موجودًا في نموذج res.partner.address . بافتراض أني أضفت ذلك إلى res.partner.address ، فإن هذا الحقل سيسمح لي بتغيير نوع الحقل إلى واحد إلى 2 مليون ، مما يسمح بالعرض الفرعي ، ولكن لا يسمح للمستخدم النهائي بإجراء "اختيار". أساسا أعتقد أنني سوف تحتاج إلى جعل القطعة OpenERP جديدة للسماح لي بسلوك "تحرير مضمن ، واختيار واحد" المطلوب.
وأضاف المؤلف EB., مصدر

حسنًا ، لقد كنت مرتبكًا بعض الشيء لأنك وضعت عنصرًا مصغّرًا واحدًا على حقل many2one.

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

إذا كنت تريد التحكم في كيفية عرض حقل many2one ، فقد تتمكن من استخدام الحقول ذات الصلة التي تسحب الحقول من السجل الذي حددته ، ولكن أشك في ذلك. قد تعمل القراءة فقط ، ولكن لا أعتقد أنه من المنطقي تحرير العديد من الحقول ذات الصلة وتكون قادرًا على تغيير السجل المحدد. قد تتمكن من تجميع بعض حقول الوظائف مع وظيفة مخزن تتيح لك الكتابة مرة أخرى إلى السجل ذي الصلة ، ولكن يبدو أنه سيؤدي إلى إرباك المستخدمين.

0
وأضاف
نعم ، أستطيع أن أرى لماذا قد يكون سؤالي الأول مربكًا إلى حدٍ ما. أعتقد في النهاية أن طريقة "أنظف" للقيام بذلك ستكون إنشاء عنصر واجهة مستخدم جديد ومشاهدة نموذج (يشبه إلى حد كبير القطعة الحالية one2many عندما يكون في صيغة النموذج) التي من شأنها حفظ الكائن الأجنبي المرئي حاليًا إلى الحقل manykone localkone المحلي في DB ، مع حفظ الكائن المرتبط عن بعد. ولكن ، هذا لا يبدو يستحق كل هذا الجهد الآن :) شكرا مرة أخرى لمساعدتكم.
وأضاف المؤلف EB., مصدر
نعم CB الطريقة الأنظف لإضافة القطعة الجديدة التي سيكون أفضل طريقة يمكنك القيام بها في طريقك. :)
وأضاف المؤلف Jedi Shadow, مصدر

في أي حقل علاقة OE يمكنك تعريف عرض Intenal مثل:

  
        <!--Internal tree view for your Relation field model-->
        <tree>
        

        <!--Internal Form view for your Relation field model-->
        <form>
        </form>
  

Example Under Addons 1 Click to Example 2 Click to See Example

ارجوا ان يساعدك هذا،.

0
وأضاف
شكراً ، لقد ذكر دون كيركبي مشاهد فرعية بالفعل ، وهذه الأمثلة موجودة أيضًا على مجال واحد أو أكثر من الحقول ، وليس حقل many2one ، لذلك لا يحل مشكلتي الجديدة.
وأضاف المؤلف EB., مصدر
موافق CB حصل على نقطة ، في الحقل m2o تريد إظهار بعض القيم حسب chouce الخاص بك
وأضاف المؤلف Jedi Shadow, مصدر

الآن ، إذا كنت تبحث عن تفاصيل محددة في ملف m2o ، فيجب أن نحصل على بعض الطرق الاختيارية أيضًا حيث يجب عليك استخدام def name_get لنموذج العلائقية الخاص بك.

name_get(cr, user, ids, context=None)
   Returns the preferred display value (text representation) for the records with 
   the given ids. By default this will be the value of the name column, unless the
   model implements a custom behavior. Can sometimes be seen as the inverse function
   of name_search(), but it is not guaranteed to be.

   Rtype :  list(tuple)
   Return : list of pairs (id,text_repr) for all records with the given ids.

إذن هنا في هذه الطريقة ، يمكنك تحديد السلسلة التي تريد إظهار حقل الارتباط الخاص بك. مثال

هذا سوف يحل مشكلتك جزئيا اعتقد.

0
وأضاف