تخطي للذهاب إلى المحتوى
أودو القائمة
  • تسجيل الدخول
  • جرب مجاناً
  • التطبيقات
    المالية
    • المحاسبة
    • فوترة
    • النفقات
    • جدول البيانات (BI)
    • المستندات
    • توقيع إلكتروني
    المبيعات
    • إدارة علاقات العملاء
    • المبيعات
    • نقطة البيع للمتاجر
    • نقطة البيع للمطاعم
    • الاشتراكات
    • تأجير
    المواقع الإلكترونية
    • أداة بناء المواقع الإلكترونية
    • متاجر إلكترونية
    • مدونة
    • المنتدى
    • دردشة مباشرة
    • التعليم الإلكتروني
    سلسلة التوريد
    • المستودعات
    • التصنيع
    • إدارة دورة حياة المنتج
    • المشتريات
    • الصيانة
    • الجودة
    الموارد البشرية
    • موظفون
    • التوظيف
    • إجازة عمل
    • التقييمات
    • الإحالات
    • تطبيق الأسطول
    التسويق
    • التسويق الإجتماعي
    • التسويق عبر البريد الإلكتروني
    • التسويق عبر الرسائل النصية
    • فعاليات
    • أتمتة التسويق
    • الاستطلاعات
    الخدمات
    • المشاريع
    • الجداول الزمنية
    • الخدمة الميدانية
    • مكتب المساعدة
    • التخطيط
    • مواعيد
    اﻹنتاجية
    • مناقشة
    • الموافقات
    • إنترنت الأشياء "IoT"
    • بروتوكول ربط المحادثات الصوتية عبر الإنترنت
    • المعرفة
    • WhatsApp
    التطبيقات الخارجية ستوديو أودو منصة أودو السحابية
  • قطاعات الأعمال
    البيع بالتجزئة
    • متجر كتب
    • متجر ملابس
    • متجر أثاث
    • متجر بقالة
    • متجر معدات
    • متجر ألعاب
    الطعام والضيافة
    • بار وحانة
    • المطعم
    • مطعم للوجبات السريعة
    • نزل للضيوف
    • موزّع مشروبات
    • فندق
    العقارات
    • وكالة عقارات
    • شركة هندسة معمارية
    • البناء
    • إدارة العقارات
    • العناية بالحدائق
    • اتحاد مُلاّك العقارات
    استشارة
    • مؤسسة محاسبية
    • شريك أودو
    • وكالة تسويقية
    • منشأة قانونية
    • استقطاب المواهب
    • التدقيق والتوثيق
    التصنيع
    • الأقمشة
    • معدني
    • الأثاث
    • الطعام
    • مصنع خمور
    • هدايا الشركات
    الصحة واللياقة البدنية
    • نادي رياضي
    • متجر نظارات
    • مركز لياقة بدنية
    • الممارسون الصحيون
    • صيدلية
    • صالون تصفيف الشعر
    التجارة
    • عامل صيانة
    • الأجهزة والمعدات التقنية ودعمها
    • أنظمة الطاقة الشمسية
    • صانع أحذية
    • خدمات التنظيف
    • خدمات التكييف (HVAC)
    غير ذلك
    • منظمة غير ربحية
    • وكالة بيئية
    • تأجير لوحات إعلانية
    • تصوير
    • تأجير دراجات
    • بائع وسيط للبرمجيات
    تصفح كافة قطاعات الأعمال
  • مجتمع أودو
    تعلم
    • دروس
    • التوثيق
    • شهادات
    • التدريب
    • مدونة
    • بودكاست
    قم بتعزيز التعليم
    • برنامج تعليم
    • Scale UP! لعبة الأعمال
    • قم بزيارة أودو
    احصل على البرنامج
    • تحميل
    • قارنْ الإصدارات
    • إطلاق
    تعاون
    • جيت هاب "Github"
    • المنتدى
    • فعاليات
    • الترجمات
    • كنْ شريكاً
    • خدمات الشركاء
    • سجل مكتب المحاسبة الخاص بك
    احصل على الخدمات
    • اعثر على شريك
    • اعثر على محاسب
    • قابل أحد مرشدي الأعمال
    • خدمات التنفيذ
    • مراجع العملاء
    • الدعم
    • الترقيات
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    الحصول على عرض توضيحي
  • الأسعار
  • المساعدة

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • إدارة علاقات العملاء
  • e-Commerce
  • المحاسبة
  • المخزون
  • PoS
  • المشروع
  • MRP
All apps
يجب أن تكون مسجلاً حتى تتفاعل مع المجتمع.
كافة المنشورات الأفراد الشارات
علامات التصنيف (عرض الكل)
odoo accounting v14 pos v15
حول هذا المنتدى
يجب أن تكون مسجلاً حتى تتفاعل مع المجتمع.
كافة المنشورات الأفراد الشارات
علامات التصنيف (عرض الكل)
odoo accounting v14 pos v15
حول هذا المنتدى
المساعدة

Add more fields to POS 'Order Analysis' report?

اشتراك

تسلم الإشعارات عندما يكون هناك نشاط في هذا المنشور

لقد تم الإبلاغ عن هذا السؤال
treeviewposmodelsreporting
2 الردود
22136 أدوات العرض
الصورة الرمزية
Kevin Shenk

The POS Order Analysis report is very helpful to us, but I'd like to add a few more details.

The report is found under 'Reporting' -> 'Point of Sale' -> 'Order Analysis'. It is a tree view that operates on the report.pos.order model. It has the 'Average Price' of each product, but I'd like the add the 'Average Cost' and 'Average Profit' (Price - Cost) as well.

Since this pulls data from report.pos.order, I'd like to know how that model gets it's data, and how to add these additional fields and calculations. If possible, I'd love to do this without editing module code, so I can continue to update my installation.

I'm still new to the technical side of OpenERP so any help and suggestions will be greatly appreciated!

3
الصورة الرمزية
إهمال
الصورة الرمزية
Gopakumar N G
أفضل إجابة

The data is taken from a database view created in the file addons/point_of_sale/report/pos_order_report.py. Also the xml view for the model is given in the file pos_order_report_view.xml.

The model report.pos.order gets its value from the database view defined in the init function of the model. It is shown below:

class pos_order_report(osv.osv):
_name = "report.pos.order"
_description = "Point of Sale Orders Statistics"
_auto = False
_columns = {
    'date': fields.date('Date Order', readonly=True),
    'year': fields.char('Year', size=4, readonly=True),
    'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
        ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
        ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
    'day': fields.char('Day', size=128, readonly=True),
    'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
    'product_id':fields.many2one('product.product', 'Product', readonly=True),
    'state': fields.selection([('draft', 'New'), ('paid', 'Closed'), ('done', 'Synchronized'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')],
                              'Status'),
    'user_id':fields.many2one('res.users', 'Salesperson', readonly=True),
    'price_total':fields.float('Total Price', readonly=True),
    'total_discount':fields.float('Total Discount', readonly=True),
    'average_price': fields.float('Average Price', readonly=True,group_operator="avg"),
    'shop_id':fields.many2one('sale.shop', 'Shop', readonly=True),
    'company_id':fields.many2one('res.company', 'Company', readonly=True),
    'nbr':fields.integer('# of Lines', readonly=True),
    'product_qty':fields.integer('# of Qty', readonly=True),
    'journal_id': fields.many2one('account.journal', 'Journal'),
    'delay_validation': fields.integer('Delay Validation'),
}
_order = 'date desc'

def init(self, cr):
    tools.drop_view_if_exists(cr, 'report_pos_order')
    cr.execute("""
        create or replace view report_pos_order as (
            select
                min(l.id) as id,
                count(*) as nbr,
                to_date(to_char(s.date_order, 'dd-MM-YYYY'),'dd-MM-YYYY') as date,
                sum(l.qty * u.factor) as product_qty,
                sum(l.qty * l.price_unit) as price_total,
                sum((l.qty * l.price_unit) * (l.discount / 100)) as total_discount,
                (sum(l.qty*l.price_unit)/sum(l.qty * u.factor))::decimal(16,2) as average_price,
                sum(cast(to_char(date_trunc('day',s.date_order) - date_trunc('day',s.create_date),'DD') as int)) as delay_validation,
                to_char(s.date_order, 'YYYY') as year,
                to_char(s.date_order, 'MM') as month,
                to_char(s.date_order, 'YYYY-MM-DD') as day,
                s.partner_id as partner_id,
                s.state as state,
                s.user_id as user_id,
                s.shop_id as shop_id,
                s.company_id as company_id,
                s.sale_journal as journal_id,
                l.product_id as product_id
            from pos_order_line as l
                left join pos_order s on (s.id=l.order_id)
                left join product_template pt on (pt.id=l.product_id)
                left join product_uom u on (u.id=pt.uom_id)
            group by
                to_char(s.date_order, 'dd-MM-YYYY'),to_char(s.date_order, 'YYYY'),to_char(s.date_order, 'MM'),
                to_char(s.date_order, 'YYYY-MM-DD'), s.partner_id,s.state,
                s.user_id,s.shop_id,s.company_id,s.sale_journal,l.product_id,s.create_date
            having
                sum(l.qty * u.factor) != 0)""")

pos_order_report()

and the xml view for the same is

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
    <record id="view_report_pos_order_tree" model="ir.ui.view">
        <field name="name">report.pos.order.tree</field>
        <field name="model">report.pos.order</field>
        <field name="arch" type="xml">
            <tree string="Point of Sale Analysis" create="false">
                <field name="date" invisible="1"/>
                <field name="user_id" invisible="1"/>
                <field name="year" invisible="1"/>
                <field name="day" invisible="1"/>
                <field name="month" invisible="1"/>
                <field name="partner_id" invisible="1"/>
                <field name="product_id" invisible="1"/>
                <field name="shop_id" invisible="1"/>
                <!--<field name="journal_id" invisible="1"/>-->
                <field name="company_id" invisible="1" groups="base.group_multi_company"/>
                <field name="nbr" sum="# of Lines"/>
                <field name="product_qty" sum="# of Qty"/>
                <field name="average_price" sum="Average Price"/>
                <field name="total_discount" sum="Total Discount"/>
                <field name="price_total" sum="Total Price"/>
                <field name="delay_validation"/>
                <!--<field name="state" invisible="1"/>-->
            </tree>
        </field>
    </record>

    <record id="view_report_pos_order_search" model="ir.ui.view">
        <field name="name">report.pos.order.search</field>
        <field name="model">report.pos.order</field>
        <field name="arch" type="xml">
            <search string="Point of Sale Analysis">
                <field name="date"/>
                <filter icon="terp-dolar" string="Invoiced" domain="[('state','=',('invoiced'))]"/>
                <filter icon="terp-dolar" string="Not Invoiced" domain="[('state','=',('paid'))]"/>
                <separator/>
                <filter icon="terp-go-year" string="Year" name="year" domain="[('year','=',time.strftime('%%Y'))]" help="POS ordered created during current year"/>
                <separator/>
                <filter icon="terp-go-today" string="Today" name="today" domain="[('date','=', time.strftime('%%Y-%%m-%%d'))]"
                     help="POS ordered created by today"/>
                <separator/>
                <filter icon="terp-personal" string="My Sales" help="My Sales" domain="[('user_id','=',uid)]"/>
                <field name="partner_id"/>
                <field name="user_id"/>
                <field name="partner_id"/>
                <field name="user_id"/>
                <group expand="1" string="Group By...">
                    <filter string="Salesperson" icon="terp-personal" name="User" context="{'group_by':'user_id'}"/>
                    <filter string="Customer" icon="terp-personal" context="{'group_by':'partner_id'}"/>
                    <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
                    <filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Day of order date"/>
                    <filter string="Month" icon="terp-go-month" context="{'group_by':'month'}" help="Month of order date"/>
                    <filter string="Year" icon="terp-go-year" context="{'group_by':'year'}" help="Year of order date"/>
                </group>
            </search>
        </field>
    </record>

    <record id="action_report_pos_order_all" model="ir.actions.act_window">
        <field name="name">Orders Analysis</field>
        <field name="res_model">report.pos.order</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree</field>
        <field name="search_view_id" ref="view_report_pos_order_search"/>
        <field name="context">{'search_default_year':1,'search_default_today':1,'group_by_no_leaf':1,'group_by':['product_id']}</field>
    </record>

    <menuitem action="action_report_pos_order_all" id="menu_report_pos_order_all" parent="menu_point_rep" sequence="3"/>
</data>
</openerp>

In the tree view you can find the fields for which sum is calculated as

           <field name="nbr" sum="# of Lines"/>
            <field name="product_qty" sum="# of Qty"/>
            <field name="average_price" sum="Average Price"/>
            <field name="total_discount" sum="Total Discount"/>
            <field name="price_total" sum="Total Price"/>

So if you have to add extra fields to the report, first you have to get the values for that field in the database view defined in init method and then you have to add the fields in xml view.

4
الصورة الرمزية
إهمال
الصورة الرمزية
keeran
أفضل إجابة

How to add new fields under init for example, if one need to add cost price & tax amount field - how these needs to be initialized?

0
الصورة الرمزية
إهمال
هل أعجبك النقاش؟ لا تكن مستمعاً فقط. شاركنا!

أنشئ حساباً اليوم لتستمتع بالخصائص الحصرية، وتفاعل مع مجتمعنا الرائع!

تسجيل
المنشورات ذات الصلة الردود أدوات العرض النشاط
Default_code instead of Name in pdf report doesn't work تم الحل
models reporting
الصورة الرمزية
الصورة الرمزية
1
أغسطس 21
3090
Sales & POS Payment Report
sales pos reporting
الصورة الرمزية
الصورة الرمزية
الصورة الرمزية
3
أكتوبر 25
1014
Used Coupon code Report
pos reporting coupons
الصورة الرمزية
0
يوليو 24
1825
How to show children elements in parent form view?
treeview inheritance models
الصورة الرمزية
0
أبريل 23
3762
remove Cashier name from order analysis report
pos reporting pivotreport
الصورة الرمزية
الصورة الرمزية
1
سبتمبر 22
2632
المجتمع
  • دروس
  • التوثيق
  • المنتدى
مصدر مفتوح
  • تحميل
  • جيت هاب "Github"
  • المشغل الآلي رنبوت
  • الترجمات
خدماتنا
  • استضافة أودو إس إتش
  • الدعم
  • الترقية
  • التطويرات المخصصة
  • التعليم
  • اعثر على محاسب
  • اعثر على شريك
  • كنْ شريكاً
معلومات عنا
  • شركتنا
  • أصول العلامة التجارية
  • اتصلْ بنا
  • الوظائف
  • فعاليات
  • بودكاست
  • مدونة
  • عملاء
  • قانوني • الخصوصية
  • الحماية
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

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

ما يجعل من أودو مميزاً هو هدفه بأن يكون سهل الاستخدام للغاية ومتكاملاً تمامًا في الوقت ذاته.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now