Sell Service Item with mixed calculation

Hi all,

again an “actually simple thing” but I didn’t find anything matching in the docs or the forum for Service Items regarding the following situation:

Most of our Customers are just Buying Days or Hours from us.

Some of the sold hours/days, we’re forwarding a purchase order to one of our Suppliers.

In very rare Situations a Customer isn’t willing to pay an extra fee to get the contracted person onsite, but at the same time requires him/her to be present onsite (and the supplier isn’t willing to work for the same fee onsite).

In those situations we specify two different quantity amounts with the Supplier, with different rates, and make a mixed calculation, which fits to the customer (if possible, of course).

So for example:
Customer wants to get the a Supplier for 100 hours, but requires her/him to be 20 hours (out of 100) onsite.
And he’s only willing to pay 10$ each of the 100 hours.
Then we create a Service Item for this kind of labour and offer it to the Customer.
At the same time, we Purchase the Supplier with 2 separate rates:

  • 20 hours: 13$
  • 80 hours: 8$

So how do we handle that correctly in ERPNext?

I thought I’ll generate one Service Item with 3 variants:

  1. The Selling One
  2. The Purchasing One with Remote Rate
  3. The Purchasing One with Onsite Rate

So lets face it with item codes:

  • Template Item: demo
  • Item Variant Public: demo-public
  • Item Variant Onsite: demo-onsite
  • Item Variant Remote: demo-remote

In our Sales Quotation and Sales Order for the Customer we’ll offer 100x demo-public for 10$

But now, when it comes to the Purchase Order for the Supplier: The other two Variants needs to be purchased.

  • 20x demo-onsite
  • 80x demo-remote

I thought I might be lucky with “Alternative Items” but it seems, it’s only relevant for manifacturing/production process, or did I miss something?

Would be great if somebody has an idea to help me out!


how about use one service item code in both sales and purchase order, split purchase order item into two rows: same item code, manual change to different item name or item description, different price.

The problem I see is, that the prices won’t be correct in the price list then. So there might happen crucial mistakes, as not all users should have to read the most recent contract before they can create the correct PO.

Or is there another criteria to reliably fetch another price for the same Supplier in the same PO on the same Item? (perhaps the differenciation by Variant is just not good enough)