we only want to show product with on hand quantity
edit /odoo/addons/point_of_sale/static/src/js/models.js
start at line 413, edit line 419 var domain
model: 'product.product',
fields: ['display_name', 'lst_price', 'standard_price', 'categ_id', 'pos_categ_id', 'taxes_id',
'barcode', 'default_code', 'to_weight', 'uom_id', 'description_sale', 'description',
'product_tmpl_id','tracking', 'write_date', 'available_in_pos', 'attribute_line_ids'],
order: _.map(['sequence','default_code','name'], function (name) { return {name: name}; }),
domain: function(self){
var domain = ['&', '&', '&',
['sale_ok','=',true],['available_in_pos','=',true],'|',['company_id','=',self.config.company_id[0]],['company_id','=',false],
['qty_available', '>', 0]]; // edit here
add '&' and ['qty_available', '>', 0] like above
reference:
https://www.odoo.com/forum/help-1/question/automatically-remove-products-from-pos-when-products-are-out-of-stock-in-v8-0-123229