Production Reference Public

Production Reports

Base Production Production Reports Pick a date range and instantly read three roll-up tables — order status, finished-goods output, and component consumption — all summarised from…

Guide version: r1 Module version: 1.0.0 Updated: 2026-07-22 Estimated time: 10 min 1 views
Base Production

Production Reports

Pick a date range and instantly read three roll-up tables — order status, finished-goods output, and component consumption — all summarised from your Manufacturing Orders on one read-only page.

ℹ️
Read-only reporting. The Production Reports page (production/Production_reports) never creates, edits, or deletes anything. It only summarises data that comes from the Manufacturing Orders workflow. For an at-a-glance, all-time snapshot of the whole module instead, see the Production Overview dashboard.

What this page gives you

The page renders one filter form and three report tables, each in its own section. When you open it, the reports load automatically; when you change the dates and click Generate Report, all three refresh together.

MO Status Summary

Order counts plus total planned vs. produced quantity for every status in the range, with a grand-total footer.

Output by Period

Finished goods actually produced by completed orders whose completion date falls inside the range.

Component Consumption

Raw materials / components actually consumed by those same completed orders.

????
Access to this page is gated by the separate production_report permission — distinct from the base production permission that controls the Overview and the dashboard widgets. A user can have one without the other. The Production module must also be enabled in Settings → Manage Modules.

The date-range filter

At the top of the page is a single inline filter form (production-report-filter) with two date inputs and one button. The range you choose is applied to all three reports at once.

FieldMeaningRequiredNotes
report_start_date — Planned Start Lower bound of the reporting date range. For the MO Status Summary it filters on the order's planned_start_date; for Output by Period and Component Consumption it filters on the completed order's actual_end_date. Required HTML date input. Defaults to the first day of the current month (date('Y-m-01')).
report_end_date — Planned End Upper bound of the reporting date range (same column per report as Planned Start above). Required HTML date input. Defaults to the last day of the current month (date('Y-m-t')).
Generate Report button Re-reads both date inputs and reloads all three report tables. Action Primary button (generate-report-btn) with a refresh icon.
⚠️
Both dates are needed for the range to apply. A date filter is applied only when both Planned Start and Planned End are provided (the query uses SQL BETWEEN). If either field is blank, the filter is skipped entirely and the report returns all-time data — not an empty result. Always set both ends of the range for a scoped report.

Reports auto-load when you open the page

You do not have to click anything to see numbers. On page load the page immediately runs its loadReports() routine, which fires all three POST requests once for the default current-month range. A global loading overlay (appLoader) is shown while the three requests run and hides once they all settle.

  1. Open Production Reports

    Navigate to Production → Production Reports (production/Production_reports). The date range is pre-filled to this calendar month (1st → last day).

  2. The three reports load automatically

    All three AJAX calls fire once immediately for the default range, so you see current-month figures before touching anything.

  3. Adjust the dates if needed

    Set Planned Start and Planned End to the window you want. Remember: leave both set — clearing one turns the range off and returns all-time data.

  4. Click Generate Report

    All three tables refresh together. The loader shows while they fetch and hides when done.

ℹ️
No export button. The reports are plain HTML tables — there is no built-in CSV, PDF, or print export on this page. Use your browser's print/save if you need a hard copy.

1. Manufacturing Order Status Summary

Rendered into #report-mo-summary from production/Production_reports/mo_summary. This table rolls up your Manufacturing Orders by status, filtered by planned_start_date falling between the two dates. It shows one row per status in a fixed order, followed by a grand-total footer.

ColumnMeaningRequiredNotes
status — Status The MO lifecycle state for the row. Display Rendered as a coloured status label; all five statuses are always shown.
total — Total Orders Number of MOs in that status within the date range. Display Plain integer count.
quantity_planned — Total Planned Qty Sum of quantity_planned across the MOs in that status. Display Decimal-formatted (convert_number_to_decimal).
quantity_produced — Total Produced Qty Sum of quantity_produced across the MOs in that status. Display Decimal-formatted (convert_number_to_decimal).

Fixed row order and the Total footer

The five status rows always appear in this order, seeded from the module's status list, so the layout is stable from month to month:

Draft
not yet confirmed
Confirmed
planned, not started
In Progress
being manufactured
Done
completed
Cancelled
cancelled

A Total footer row (tfoot) sums Total Orders, Total Planned Qty, and Total Produced Qty across all five statuses.

ℹ️
Zero rows still appear. A status with no activity in the range is not hidden — it simply shows 0. Because every status is seeded up front, this table never shows a “No record found” empty state (unlike the other two reports below).
????
Planned vs. actual at a glance. Compare Total Planned Qty against Total Produced Qty in the Done row to gauge how close your completed output came to what was planned for the period.

2. Output by Period

Rendered into #report-output from production/Production_reports/output_report. This report answers “what did we actually make?” — it lists finished goods produced by orders that are complete (status = 'done') and whose actual_end_date falls inside the date range, aggregated by finished-good item.

ColumnMeaningRequiredNotes
item_title — Finished Good The finished-good item produced by completed orders. Display Resolved from the item's default variant title; shows - when null.
order_count — Total Orders Number of completed (done) MOs that produced this item in the range. Display Integer count.
total_produced — Total Produced Qty Sum of quantity_produced for this item across completed orders. Display Decimal-formatted; rows are ordered by this value, descending.
unit_title — Unit Unit of measure of the finished good. Display Shows - when null.
⚠️
Only DONE orders count here. Output figures come exclusively from orders with status = 'done'. Orders that are draft, confirmed, or in progress never contribute to this report — even if some quantity has already been produced against them.
ℹ️
Empty state. When no completed orders fall in the range, the table shows a single centred row “No record found” spanning all four columns.

3. Component Consumption

Rendered into #report-consumption from production/Production_reports/component_consumption. This report answers “what did we actually use?” — it lists the components / raw materials consumed by the same set of completed orders (status = 'done', actual_end_date in range), aggregated by component item and drawn from the order's consumed-component lines.

ColumnMeaningRequiredNotes
item_title — Component The component / raw-material item consumed by completed orders. Display Resolved from the item's default variant title; shows - when null.
order_count — Total Orders Distinct count of completed (done) MOs that consumed this component in the range. Display Counts distinct manufacturing orders (COUNT(DISTINCT mo.id)).
total_consumed — Consumed Quantity Sum of quantity_consumed for this component across completed orders. Display Decimal-formatted; rows are ordered by this value, descending.
unit_title — Unit Unit of measure of the component. Display Shows - when null.
ℹ️
Empty state. As with Output by Period, when no completed orders fall in the range this table shows a single centred “No record found” row spanning all four columns.

Why the three tables can disagree

The single most important thing to understand about this page is that the three reports do not all filter on the same date column. The same date range can therefore produce numbers that look inconsistent — and that is by design.

ReportWhich ordersDate column filtered
MO Status Summary All statuses (Draft → Cancelled) planned_start_date BETWEEN start and end
Output by Period Only Done orders actual_end_date BETWEEN start and end
Component Consumption Only Done orders actual_end_date BETWEEN start and end
Don't reconcile the tables 1:1. A single Done order can be planned to start in one month but completed in another. It will appear in the Status Summary for the month of its planned_start_date, yet in Output / Consumption for the month of its actual_end_date. Expect the totals across the three tables to differ for the same range.

Manufacturing Order status legend

Every status in the reports (and in the recent-orders table on the Overview) is rendered as a coloured label. Here is the full lifecycle and what each colour means.

Draft
created, not confirmed
Confirmed
planned, not started
In Progress
being manufactured
Done
completed
Cancelled
cancelled
DraftMO created but not yet confirmed. Counted in the Open figure; never contributes output/consumption.
ConfirmedMO confirmed / planned but not yet started. Counted in the Open figure.
In ProgressMO currently being manufactured. Counted in the Open figure and the “Manufacturing In Progress” widget.
DoneMO completed. The only status that feeds Output by Period and Component Consumption.
CancelledMO cancelled. Excluded from the Open figure and from output/consumption.
ℹ️
Two colour scales exist. The coloured status labels used inside these report tables come from the module's status-label helper. The coloured numbers on the Overview stat cards use a separate inline colour scale, so the exact shades between a status badge and its matching Overview card can differ.
????
“Open” is a fixed set. Everywhere in the module, Open = Draft + Confirmed + In Progress. Done and Cancelled are never counted as open. See the Overview for the Open Manufacturing Orders figure and the live dashboard widgets.

SOP — running the monthly production report

????
Goal. Produce a clean month-end read of order status, output, and consumption for a plant or operations manager.
  1. Check your access

    You need the production_report permission and the Production module must be enabled in Settings → Manage Modules.

  2. Open the page

    Go to Production → Production Reports. The date range defaults to the current calendar month (1st → last day) and the three tables load automatically.

  3. Set your window

    Adjust Planned Start and Planned End if you need a different period. Keep both filled so the range actually applies.

  4. Generate

    Click Generate Report. All three tables refresh together while the loader is shown.

  5. Read the big picture first

    Start with Manufacturing Order Status Summary — counts and planned-vs-produced quantities per status, plus the grand-total row.

  6. Read actual output

    Move to Output by Period for the finished goods actually produced by completed orders in the range (top rows = highest volume).

  7. Read actual consumption

    Finish with Component Consumption for the materials actually consumed by those completed orders.

  8. Mind the date columns

    Remember the Status Summary filters on planned_start_date, while Output and Consumption filter on the actual_end_date of DONE orders — so a done order can appear in one report and not another depending on its dates.


Related pages

Was this guide helpful?

Report a content problem