Order Receipt Note

Hi !

I’m running a repair store (repairing Vacuum, Espresso machine, etc) I would like my tech to be able to write what was repaired and what customer told them when they reach out to them to tell how much will it cost, the delay, etc.

But Im having issue with native Order note. When input as note, its unformatted which make it hard to read ! Also tried to input it as “free” product but it show a cost and create confusion.

Is there an app to manage this or a work around ?

** First image show note as product, which is create confusion because of price even if set to 0$. The second image show note as it appear on receoipt (unformatted/unstructured)

Where do they do that?
Admin / POS / storefront?

There are ways to add structured information to orders, like order attributes or metafields. The order printer template would need to be amended to output those.

Order printer can also skip printing price if it’s zero – would need a small template edit.

Im not that familliar with Order Printer, we do use it but rarely (mostly to print receipt on 8.5 x 11 paper, for B2B) But for normal customer we use a receipt printer (coupon printer) like StarMicronics. Can order printer use Ipad PoS App and the Star Micronics printer linked to the PoS App ?

Yes, order printer is rather for “bigger paper”.

But you should still be able to edit your POS sale receipts here – https://admin.shopify.com/apps/point-of-sale-channel/settings/receipts
this link should redirect you to your admin interface

As explained in https://help.shopify.com/en/manual/sell-in-person/shopify-pos/customize-pos/printed-receipts

At least, hiding zero prices is definitely possible. Plus you can add other mods to the way these line items are printed.

Hi @Cyressvirus

This is Vineet from Identixweb, a Shopify development agency.

I would look for a small custom solution built using order metafields. Metafields are better for structured fields like repair status, estimate, technician note, and customer update. Shopify also supports order metafields for storing extra order information.

I think someone also recommended apps like Shopify’s order printer, which can also solve this issue.

I’ve been able to remove price for free product but it remove price for every product that are free. Do you know if Liquid variable for PoS receipt work with product type, so i can remove price on receipt only for that product type ?

Unfortunately, I do not have POS available, so can only answer based on the document I’ve linked above and actual receipt printer template code.

However, there are some discrepancies :frowning:
Say, line-items.liquid refers to line_item.variant_descriptions which is not mentioned in the document…

Possible workarounds:

  1. Use part of the product title to denote service products. Say, include “Service:” in the product title and have a check like below.
    Can also add code to remove the “Service:” when printing product title so save space if needed.
    <div class='price'>
     {% if line_item.price == 0 and line_item.name includes "Service:" %}
       {% # service comment, output no price %}
     {% else %}
       {{ line_item.total_price | money | escape }}
     {% endif %}
    </div>
  1. Document has access to product metafields, so can have similar code with different condition. However, this needs testing as documentation does not mention exact way of accessing metafield values.

    Assuming that service product has “Yes or No” metafield at custom.service_product
    <div class='price'>
     {% if line_item.price == 0 and line_item.product_metafields.custom.service_product %}
       {% # service comment, output no price %}
     {% else %}
       {{ line_item.total_price | money | escape }}
     {% endif %}
    </div>

It is possible to bulk assign metafield to products which has a special product type.

Will take a look at this workaround !! Update as soon as possible.

Still trying to make this work ! I think your solution may work but information on coding receipt are bit vague ! So, I will need more time goofing around with liquid code as i’m not an expert.

Will keep updating the thread until I found a work around !