Work Order Gross Profit

NexWave can calculate Gross Profit (GP) on Work Orders by comparing the sale value from the linked Sales Order against actual manufacturing costs (materials and labour). This gives you visibility into manufacturing margins as production progresses, without waiting for final accounting.

How It Works

When a Work Order linked to a Sales Order is submitted, NexWave calculates:

Gross Profit = Sale Amount - Material Cost - Labour Cost

The GP starts with planned costs from the BOM and updates progressively as manufacturing transactions are completed:

  1. Work Order submitted - GP calculated using planned material costs (from BOM) and planned labour costs (from operations)

  2. Stock Entries submitted - Material cost updates to actual values from stock movements

  3. Job Cards submitted - Labour cost updates to actual values based on time logged and workstation rates

The GP also flows up to the linked Sales Order, giving you a consolidated manufacturing margin view across all Work Orders for that order.

Enabling the Feature

The feature is off by default. To enable it:

  1. Go to Manufacturing Settings

  2. Expand the Work Order Gross Profit section

  3. Tick Enable Work Order Gross Profit Calculation

  4. Save


Once enabled, GP will be calculated automatically on all new Work Order submissions. Existing submitted Work Orders are not affected until they are recalculated manually.

Work Order GP Fields

When a Work Order is submitted with GP enabled, a Gross Profit section appears showing:

Field

Description

Sale Amount

Total sale value from the linked Sales Order item, in company currency

Raw Material Cost

Cost of materials consumed (or planned if no stock movements yet)

Labour Cost

Blended labour cost from operations (actual where Job Cards exist, planned where they don't)

Gross Profit

Sale Amount minus total costs

Gross Profit %

GP as a percentage of Sale Amount

Cost Basis

Indicates the source of cost data (see below)



Cost Basis

The Cost Basis field tells you how reliable the GP figure is:

  • Planned - All costs come from the BOM and planned operation costs. No actual manufacturing data yet.

  • Partial - Some costs are actual (e.g., materials have been transferred to WIP but not yet consumed, or some Job Cards are complete but not all).

  • Actual - All material and labour costs come from actual stock movements and completed Job Cards.

How Material Costs Progress

Material costs use a tiered approach based on available Stock Entry data:

  1. Actual (highest priority) - From "Manufacture" or "Material Consumption for Manufacture" Stock Entries. These represent materials actually consumed in production.

  2. Partial - From "Material Transfer for Manufacture" Stock Entries. Materials have been moved to WIP but not yet consumed.

  3. Planned - No Stock Entry data available. Uses the BOM required items and their rates.

How Labour Costs are Calculated

Labour cost is calculated per operation on the Work Order:

  • Operations with Job Cards (actual time logged): Cost = Workstation hourly rate x actual time. The system uses the workstation's current hourly rate, not the rate frozen on the Work Order, so rate updates are reflected immediately.

  • Operations without Job Cards: Uses the planned operating cost from the BOM.

  • Additional and corrective operation costs are always included.

Sales Order GP Fields

When Work Orders linked to a Sales Order have GP calculated, the Sales Order shows a Manufacturing Gross Profit section with aggregated figures:

Field

Description

Material Cost

Total material costs across all linked Work Orders

Labour Cost

Total labour costs across all linked Work Orders

Gross Profit

Total manufacturing GP

GP %

Overall GP percentage



Each Sales Order Item also shows per-line manufacturing GP fields (Manufacturing Material Cost, Manufacturing Labour Cost, Manufacturing GP, Manufacturing GP%).

The Sales Order GP updates automatically whenever a linked Work Order's GP changes (on WO submit, cancel, or when Stock Entries/Job Cards trigger a recalculation).

Recalculating GP Manually

For submitted Work Orders, a Recalculate GP button is available on the form. Use this when:

  • Workstation hourly rates have been updated after the Work Order was created

  • You want to refresh the GP after manual adjustments

  • Stock Entry or Job Card events were processed while the feature was temporarily disabled


Cancellation Behaviour

When a Work Order is cancelled, all GP fields are cleared to zero and the linked Sales Order GP is recalculated. This cleanup runs regardless of whether the feature toggle is currently enabled, preventing stale data from remaining on documents.

Prerequisites

For GP to be calculated on a Work Order, the following must be true:

  • The feature toggle is enabled in Manufacturing Settings

  • The Work Order is linked to a Sales Order (has a sales_order and sales_order_item)

  • The linked Sales Order Item has a non-zero stock_qty (needed for UOM-safe rate calculation)

Work Orders without a linked Sales Order (e.g., make-to-stock production) will not have GP calculated.

Limitations

  • No retrospective calculation: Enabling the feature does not calculate GP on Work Orders that were already submitted. Use the Recalculate GP button on individual Work Orders, or resubmit them.

  • Sub-assembly Work Orders are excluded: Work Orders created for sub-assemblies (via Production Plan) are not included in the Sales Order GP aggregation to avoid double-counting material costs.

  • Single Sales Order link: GP calculation uses the Work Order's sales_order_item field. If a Work Order is not linked to a specific SO item (e.g., created manually without the link), GP cannot be determined.

  • Company currency only: All GP amounts are calculated and displayed in the company's default currency using base_amount from the Sales Order.

  • No partial Stock Entry attribution: The material cost tier is determined by the type of Stock Entry that exists, not by the quantity transferred. If only half the materials have been transferred, the system uses the actual cost of what was transferred (not a blend of actual and planned).

  • Workstation rate changes are not versioned: The labour cost calculation always uses the workstation's current hourly rate. If rates change, recalculating GP will produce different results from the original calculation. Historical rates are not preserved.

  • Sales Order GP does not account for non-manufacturing costs: The Manufacturing Gross Profit on the Sales Order only considers costs from Work Orders (materials and labour). It does not include delivery, overhead, or other costs.