diff --git a/content/applications/inventory_and_mrp/purchase/advanced/analyze.rst b/content/applications/inventory_and_mrp/purchase/advanced/analyze.rst index caa4f42ee..1545eded2 100644 --- a/content/applications/inventory_and_mrp/purchase/advanced/analyze.rst +++ b/content/applications/inventory_and_mrp/purchase/advanced/analyze.rst @@ -1,122 +1,146 @@ -========================================= -Analyze the performance of your purchases -========================================= +======================== +Purchase Analysis report +======================== -If your company regularly purchases products, you have several reasons to track and analyze your -performance. The insights gathered can help you to better forecast and plan your future orders. For -example, you can assess if your business is dependent on particular vendors, and the data can help -you negotiate discounts on prices. +.. |PO| replace:: :abbr:`PO (purchase order)` +.. |POs| replace:: :abbr:`POs (purchase orders)` -Generate customized reports -=========================== +The *Purchase Analysis* report provides statistics about products purchased using Odoo's +**Purchase** app. This data is useful for gaining a deeper understanding of key metrics related to +purchase orders (POs), including the quantity of products ordered and received, the amount of time +it takes to receive purchased products, and more. -Go to *Reporting* to access the purchase analysis. Simply by accessing the reporting dashboard, you -can get a quick overview of your actual performance. By default, the reporting dashboard displays a -line chart presenting the untaxed amount of your purchase orders per day, and below it, key metrics -and a pivot table. +To open the Purchase Analysis report, navigate to :menuselection:`Purchase app --> Reporting --> +Purchase`. -.. image:: analyze/analyze-reporting-dashboard.png - :align: center - :alt: Reporting dashboard in Odoo Purchase +.. important:: + The :guilabel:`Purchase Analysis` report is one of many reports available across the Odoo app + suite. This documentation only covers the measures specific to the :guilabel:`Purchase Analysis` + report, along with a few use case examples. -While the data initially presented is useful, there are several tools and features you can use to -get even more insights on your purchases. + For a full overview of the basic features available in most Odoo reports, see the documentation + on :doc:`reporting essentials <../../../essentials/reporting>`. -Use filters to select the data you need ---------------------------------------- +Measures +======== -Odoo offers several default filters you can use and combine by clicking on *Filters*. When you -select one or several filters, Odoo looks for all the orders that match at least one of the filters -you have chosen and populates the chart, key metrics, and pivot table with the data. The -pre-configured filters are: +*Measures* refer to the various datasets that can be displayed on the :guilabel:`Purchase Analysis` +report, with each dataset representing a key statistic about |POs| or products. To choose a measure, +click the :guilabel:`Measures` :icon:`fa-caret-down` button, and select one of the options from the +drop-down menu: -#. All *Requests for Quotation* - -#. All *Purchase Orders*, except cancelled ones - -#. *Confirmation Date Last Year* includes all orders that were confirmed the previous year, - cancelled purchase orders included - -#. *Order Date* includes all orders - request for quotations and purchases orders (cancelled ones - included) - depending on their date of creation - -#. *Confirmation Date* includes all confirmed orders, cancelled ones included, depending on their - date of confirmation - -.. note:: - When you have to select a period, you can use multiple years, and, with at least one year - selected, multiple quarters and the three most recent months. +- :guilabel:`# of Lines`: The number of |PO| order lines, across all |POs|. +- :guilabel:`Average Cost`: The average cost of |POs|. +- :guilabel:`Days to Confirm`: The number of days it takes to confirm a |PO|. +- :guilabel:`Days to Receive`: The number of days it takes to receive the products in a |PO|. +- :guilabel:`Gross Weight`: The total weight of purchased products. +- :guilabel:`Qty Billed`: The quantity of a product (or products) for which the vendor has already + been billed. +- :guilabel:`Qty Ordered`: The quantity of a product (or products) ordered. +- :guilabel:`Qty Received`: The quantity of an ordered product (or products) received. +- :guilabel:`Qty to be Billed`: The quantity of an ordered product (or products) for which the + vendor has yet to be billed. +- :guilabel:`Total`: The total amount spent, including tax. +- :guilabel:`Untaxed Total`: The total amount spent, excluding tax. This measure is selected by + default. +- :guilabel:`Volume`: The total volume of ordered products, for products which are measured by + volume. +- :guilabel:`Count`: The total count of |POs|. .. tip:: - If you use the *Order Date* or *Confirmation Date* filters, the *Comparison* feature appears next - to *Filters*. It enables you to compare the period you filtered with the previous one. + Only one measure can be selected at a time when one of the :icon:`fa-area-chart` + :guilabel:`(graph view)` options is enabled. However, multiple measures, and varying group-by + criteria (on the x and y axes), can be selected when using the :icon:`oi-view-pivot` + :guilabel:`(pivot table)`. -.. image:: analyze/analyze-filters.png - :align: center - :alt: Reporting filters in Odoo Purchase +.. _purchase/purchase-analysis-example: -Add custom filters -~~~~~~~~~~~~~~~~~~ +Use case: determine days to receive products from each vendor +============================================================= -Thanks to the 31 filtering options to choose from, the possibilities of your customizing your -dataset are almost limitless. Go to :menuselection:`Filters --> Add Custom Filter`, specify the -condition the filtering option should meet (e.g. *is equal to*, *contains*, etc.), and click on -*Apply*. If you want to select orders matching several conditions simultaneously (*and* operator), -repeat the process to add another custom filter. If you want to use the *or* operator, don't -click on *Apply*, and click on *Add a condition* instead. Once you have added all the desired -filtering options, click on *Apply*. +One possible use case for the :guilabel:`Purchase Analysis` report is determining how long each +vendor takes to deliver purchased items. This allows companies to make better informed decisions +about which vendors they want to purchase from. -.. image:: analyze/analyze-custom-filter.png - :align: center - :alt: Custom reporting filter in Odoo Purchase +.. example:: + A local bike shop, *Bike Haus*, sells high-quality unicycles, bicycles, tricycles, and all the + accessories needed to ride and maintain them. They purchase their inventory from a few different + vendors, and then sell those products on to customers through their storefront. -.. tip:: - To avoid having to recreate custom filters every time, save them by clicking on - :menuselection:`Favorites --> Save current search --> Save`. The customized search filter can - then be accessed by clicking on *Favorites* or can even be set as the default filter when you - open the reporting dashboard. + Recently, Bike Haus has decided to have their purchasing manager, David, look into how long it + has taken each of their vendors to deliver the items they've purchased during the current year, + 2024. -Measure exactly what you need ------------------------------ + David starts by navigating to :menuselection:`Purchase app --> Reporting --> Purchase`, and + selecting the :icon:`fa-bar-chart` (bar chart) graph type at the top of the report. -Before selecting what you want to measure, you need to decide whether you prefer using the graph -view or the pivot view. By default, the dashboard presents both views. However, the measures you -select won't be applied to both views. You can access each view separately by clicking on the icons -at the top right of the dashboard. + Next, he clicks the :icon:`fa-caret-down` :guilabel:`(toggle)` button on the right of the search + bar to open its drop-down menu. In the :guilabel:`Confirmation Date` filter section, he makes + sure that **only** the :guilabel:`2024` filter is enabled. Then, he selects the + :guilabel:`Vendor` option in the :guilabel:`Group By` section, before clicking away from the + drop-down menu to close it. -.. image:: analyze/analyze-switch-view.png - :align: center - :alt: Switch reporting view in Odoo Purchase + Finally, David clicks on the :guilabel:`Measures` :icon:`fa-caret-down` drop-down menu, and + selects the :guilabel:`Days to Receive` option. -Visualize your data -~~~~~~~~~~~~~~~~~~~ + With all of these options enabled, the :guilabel:`Purchase Analysis` report shows a bar chart, + with one bar for each vendor, representing the average number of days it takes to receive + products purchased from the vendor. -You can transform the main graph in just a click by selecting one of the three charts: bar, line or -pie. Fourteen different measures are available, but you can only use one at a time. However, you can -group the measure using one or several of the 19 *Groups*. + Using this data, David can see that it takes Bike Friends over 4.5 days, on average, to deliver + purchased products. This is more than four times the amount of time it takes any other vendor. -.. image:: analyze/analyze-graph-view.png - :align: center - :alt: Reporting graph view in Odoo Purchase + Based on these findings, David makes the decision to reduce the quantity of products purchased + from Bike Friends. -For bar and line charts, the selected measure is your y-axis, and the first group you select is used -to create the x-axis. Adding more group adds additional lines (line chart) or transforms your bar -chart into a stacked bar chart. For pie charts, the more groups you select, the more slices are -displayed. + .. image:: analyze/dtr.png + :align: center + :alt: The Purchase report, showing the average days to receive products from vendors. -Explore your data -~~~~~~~~~~~~~~~~~ +Use case: compare vendor POs for two time periods +================================================= -The pivot table view enables you to explore your data in great detail. Unlike the graph view, the -pivot table enables you to add several measures at the same time. By clicking on *Measures* or on -the **+** sign in the *Total* column, you can add as many as you want, each assigned to a new -column. By clicking on the **+** sign in the *Total* row, you can add *Groups*. If you click on a -group's **+** sign, you can add a sub-group, and so on. +Another use for the :guilabel:`Purchase Analysis` report is to compare key statistics about |POs| +for two different time periods, for a specific vendor. By doing so, it is easy to understand how +purchases from the vendor have increased or decreased. -.. image:: analyze/analyze-pivot-view.png - :align: center - :alt: Pivot table view in Odoo Purchase +.. example:: + Following the :ref:`previous example `, it has been one month + since Bike Haus decided to reduce the quantity of products purchased from Bike Friends, one of + their retailers. Bike Haus' purchasing manager, David, wants to understand the impact this + decision has had on the amount of money they have spent on Bike Friends products. -.. tip:: - You can insert your pivot table's data directly in the Spreadsheet app or export it as an Excel - file. + David starts by navigating to :menuselection:`Purchase app --> Reporting --> Purchase`. Then, he + selects the :icon:`oi-view-pivot` :guilabel:`(pivot table)` option at the top of the screen. + + In the search bar, he types `Bike Friends`, and clicks :guilabel:`Enter`, so the report only + shows data for purchases from Bike Friends. + + Then, David clicks the :icon:`fa-caret-down` :guilabel:`(toggle)` button on the right of the + search bar to open its drop-down menu. In the :guilabel:`Confirmation Date` field, he leaves the + :guilabel:`June` and :guilabel:`2024` filters enabled. He also selects :guilabel:`Confirmation + Date: Previous Period` in the :guilabel:`Comparison` section, before clicking away from the + drop-down menu to close it. + + Next, David clicks on the :guilabel:`Measures` :icon:`fa-caret-down` drop-down menu. He leaves + the :guilabel:`Total` and :guilabel:`Untaxed Total` datasets enabled, and disables the + :guilabel:`Order` and :guilabel:`Count` datasets. + + Finally, David clicks the :icon:`fa-minus-square-o` :guilabel:`Total` button above the rows on + the pivot table, and selects the :guilabel:`Product` option. + + With all of these options configured, the :guilabel:`Purchase Analysis` report shows a pivot + table comparing purchase data for the current month, June, with the previous month, May. + + The pivot table is broken down into two main columns: one for the untaxed total spent, and one + for the taxed total spent. These columns are further broken down into three smaller columns: the + amount spent in May, the amount spent in June, and the variation between the two months, + represented as a percentage. + + On the left side of the pivot table, one row is shown for each product purchased from Bike + Friends during June. Using this report, David is able to see that Bike Haus has spent much less + money on products purchased from Bike Friends, compared to the previous month. + + .. image:: analyze/comparison.png + :align: center + :alt: The Purchase report, comparing the amount spent at a vendor. diff --git a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-custom-filter.png b/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-custom-filter.png deleted file mode 100644 index 565f7552b..000000000 Binary files a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-custom-filter.png and /dev/null differ diff --git a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-filters.png b/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-filters.png deleted file mode 100644 index 1c832b156..000000000 Binary files a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-filters.png and /dev/null differ diff --git a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-graph-view.png b/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-graph-view.png deleted file mode 100644 index 35f625690..000000000 Binary files a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-graph-view.png and /dev/null differ diff --git a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-pivot-view.png b/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-pivot-view.png deleted file mode 100644 index 5a9441d6f..000000000 Binary files a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-pivot-view.png and /dev/null differ diff --git a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-reporting-dashboard.png b/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-reporting-dashboard.png deleted file mode 100644 index f30b9b5cf..000000000 Binary files a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-reporting-dashboard.png and /dev/null differ diff --git a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-switch-view.png b/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-switch-view.png deleted file mode 100644 index 5a7b4342f..000000000 Binary files a/content/applications/inventory_and_mrp/purchase/advanced/analyze/analyze-switch-view.png and /dev/null differ diff --git a/content/applications/inventory_and_mrp/purchase/advanced/analyze/comparison.png b/content/applications/inventory_and_mrp/purchase/advanced/analyze/comparison.png new file mode 100644 index 000000000..b7e59fe8c Binary files /dev/null and b/content/applications/inventory_and_mrp/purchase/advanced/analyze/comparison.png differ diff --git a/content/applications/inventory_and_mrp/purchase/advanced/analyze/dtr.png b/content/applications/inventory_and_mrp/purchase/advanced/analyze/dtr.png new file mode 100644 index 000000000..5f1ee247e Binary files /dev/null and b/content/applications/inventory_and_mrp/purchase/advanced/analyze/dtr.png differ