Open POS
Sunday, May 3, 2026
Thursday, April 2, 2026
How to make changeable price of product on POS ?
since version 2.2.4, we support feature changeable price of product on POS, it mean cashier can change price of product when add it to cart. You can see how it work follow image below
click item on cart, you see price , click on price
change price and click Save.
To active this feature on our plugin, pls copy this code to end of file yourtheme/function.php
if(!function_exists('pricechangeable_op_product_data'))
{
function pricechangeable_op_product_data($product_data,$product){
$product_data['allow_change_price'] = true;
return $product_data;
}
}
add_filter('op_product_data','pricechangeable_op_product_data',10,2);after done, goto pos , logout and login again and see effect.This no need sine version 3.9. it implement as default plugin function https://prnt.sc/qnwfx8
How to ignore send email with new order made by POS ?
Few my customer have request ignore send order receipt to customer via email with order made by POS. This is guide how to do it .
Add this code below to end of file : your_current_theme/function.php
if(!function_exists('custom_op_woocommerce_email_recipient_customer_invoice'))
{
function custom_op_woocommerce_email_recipient_customer_invoice($recipient,$_order)
{
$billing_email = $_order->get_billing_email();
$is_pos = get_post_meta($_order->get_id(),'_op_order_source',true);
if($is_pos == 'openpos')
{
$recipient = '';
}
return $recipient;
}
}
add_filter('woocommerce_email_recipient_customer_completed_order','custom_op_woocommerce_email_recipient_customer_invoice',10,2);
If you want disable all order email notification made from POS ( included customer + admin) , Add this code below to end of file : your_current_theme/function.phpif(!function_exists('custom_op_woocommerce_disable_email'))
{
function custom_op_woocommerce_disable_email($recipient,$_order)
{
global $op_session_data;
if($op_session_data)
{
$recipient = '';
}
return $recipient;
}
}
add_filter('woocommerce_email_recipient_customer_completed_order','custom_op_woocommerce_disable_email',10,2);
add_filter('woocommerce_email_recipient_customer_invoice','custom_op_woocommerce_disable_email',10,2);
add_filter('woocommerce_email_recipient_customer_on_hold_order','custom_op_woocommerce_disable_email',10,2);
add_filter('woocommerce_email_recipient_customer_processing_order','custom_op_woocommerce_disable_email',10,2);
add_filter('woocommerce_email_recipient_customer_refunded_order','custom_op_woocommerce_disable_email',10,2);
add_filter('woocommerce_email_recipient_new_order','custom_op_woocommerce_disable_email',10,2);
add_filter('woocommerce_email_recipient_cancelled_order','custom_op_woocommerce_disable_email',10,2);
add_filter('woocommerce_email_recipient_failed_order','custom_op_woocommerce_disable_email',10,2);
How to display Variation product on grid instead select variable option
Some use case, customer don't want select variation attribute, they want direct product on grid / search result. To do this , just simple add this filter code to your_active_theme/functions.php
if(!function_exists('custom_op_product_display_all'))
{
function custom_op_product_display_all($product_data,$product){
$product_data['display'] = true;
$_product = wc_get_product($product_data['id']);
if($_product)
{
if($_product->get_type() == 'variable')
{
$product_data['display'] = false; // option if you hide parent variable product
}
}
if($product->post_type == 'product_variation')
{
$parent_id = $product->post_parent;
if($parent_id)
{
$parent_product = wc_get_product($parent_id);
$category = $parent_product->get_category_ids();
$product_data['categories'] = $category;
}
}
return $product_data;
}
}
add_filter('op_product_data','custom_op_product_display_all',100,2);
And after done, just resync product list follow this way
And this is result:
How to disable InStore features
There are few my customer don't want update one by one for instore feature, they want all product on all outlet is same. you can do it by place this code to your_active_theme/functions.php
function custom_op_warehouse_is_instore($result){
return true;
}
add_filter('op_warehouse_is_instore','custom_op_warehouse_is_instore',10,1);
How to disable Cart Custom Discount / Cart Custom Item Discount on POS
You can do it by add this code to your_theme/functions.php
function custom_pos_discount_permission($session_response_data){
$session_response_data['setting']['pos_disable_item_discount'] = 'yes';
$session_response_data['setting']['pos_disable_cart_discount'] = 'yes';
return $session_response_data;
}
add_filter('op_get_login_cashdrawer_data','custom_pos_discount_permission',10,1);
How to connect Open POS with stripe terminal "Verifone P400"
on video https://www.youtube.com/watch?v=YrO7Gh7JHR8&list=PL5HioxGp7f8bbtcro2qdSm1EhPQnHPiQ9&index=31&t=82s
at video description. it already suggest to download and install free plugin:
https://wpos.app/openpos-addons/#ex-openpos-stripe-terminal
after install , goto admin/pos/setting/ payment setting , enable, save , and enter stripe information for connection
- goto admin/pos/register edit your register, choose terminal device you want for your register
- goto pos panel , clean browser cache, close and open again + test again ..
#note: make sure your terminal device should set currency + location in stripe terminal
-
I got some question about change product list from grid to List with Scrollable. So, this is guide to do it : Note : This not recommend wi...
-
If you want change logo or style in POS panel , you can goto admin / pos / setting / Pos layout setting and use CSS to update style This i...
