SELECT tba.product_energy_class, tba.product_energy_plate, tba.product_energy_data, tba.productcode, tba.producttitle_en, tba.productispublic, tbi.productimageurl, tba.productunitid, tbu.productunittitle_en, tba.productbrandid, tba.productgroupid1, tba.productgroupid2, tba.productgroupid3, tba.relatedproductmode, tba.relatedproductarray, tbg1.fbformid_retail, tbg1.fbformid_dealer, tbb.productbrandtitle_en, tbb.productbrandimage, tbpsd.productstatusdata, tbssp.productsupplierid, tbssp.pricesale, tbssp.pricesaleold, tbssp.main_stock as in_stock, tbssp.arrive_stock as stock_arrive, tbssp.arrive_date as stock_arrive_date, coalesce(tbis.stockvalue,0)-coalesce(tbis.stockorder,0) as info_stock_value, tbg1.maxstockvalue_retail, tbg1.maxstockvalue_dealer, 0 as amount_ordered, 0 as amount_incart, 0 as amount_wishlist, tba.vatrate_allow_special as p_vatrate_allow_special, tbvd.vatrateid as v_vatrateid, tbvd.vatrate_code as v_vatrate_code, tbvd.vatrate_allow_special as v_vatrate_allow_special, tbvd.vatrate_private as v_vatrate_private, tbvd.vatrate_company as v_vatrate_company, tbvd.vatrate_special as v_vatrate_special, 'N' as c_vatrate_allow_special, tbvr.vatrate_title_en as vatrate_title, tbvr.vatrate_title_special_en as vatrate_title_special, 0 as cl_i_stock, tba.productseourl, tba.productid FROM tbproducts tba INNER JOIN (SELECT DISTINCT ON (s2.productid) s2.productid, s2.productsupplierid, coalesce(s2.price_sale_spec, coalesce(s2.price_sale_std,0)) pricesale, coalesce(s2.price_sale_std,0) pricesaleold, s2.main_stock, s2.arrive_stock, s2.arrive_date, s2.info_stock_name, s2.productsupplierpriority, s2.have_stock, (CASE WHEN coalesce(s2.price_sale_std,0)>0 THEN 1 ELSE 0 END) as have_price FROM ( SELECT s1.productid, s1.productsupplierid, (SELECT CASE WHEN coalesce(tbcsp.clientpriceid,0)>0 THEN tbcsp.salesprice else tbx1.pricesale END pricesale FROM tbproductprices tbx1 LEFT OUTER JOIN tbclientprices tbcsp on tbx1.productid=tbcsp.productid and tbx1.productsupplierid=tbcsp.productsupplierid and tbcsp.clientid=0 WHERE tbx1.productid=s1.productid and tbx1.productsupplierid=s1.productsupplierid and tbx1.pricelistid=coalesce(s1.pricelistid,1) and (tbx1.pricesale>0 and tbx1.pricesale is not null)) price_sale_std, (SELECT CASE WHEN coalesce(tbcsp.clientpriceid,0)>0 THEN tbcsp.salesprice else tbx2.pricesale END pricesale FROM tbproductprices tbx2 LEFT OUTER JOIN tbclientprices tbcsp on tbx2.productid=tbcsp.productid and tbx2.productsupplierid=tbcsp.productsupplierid and tbcsp.clientid=0 WHERE tbx2.productid=s1.productid and tbx2.productsupplierid=s1.productsupplierid and tbx2.pricelistid=coalesce(tb_pl.pricelistspecid,1) and tbx2.pricevalidfrom<=localtimestamp and tbx2.pricevalidto>=localtimestamp and (tbx2.pricesale>0 and tbx2.pricesale is not null)) price_sale_spec, s1.main_stock, s1.arrive_stock, s1.arrive_date, s1.info_stock_name, s1.productsupplierpriority, (CASE WHEN s1.arrive_stock>0 THEN 1 ELSE 0 END) as have_stock FROM ( SELECT tb_pro.productid, tb_psl.productsupplierid, (SELECT DISTINCT on (tb_pro.productid) tbx.pricelistid FROM tbclientpricelists tbx WHERE ( (tbx.supplierarray like '%['|| tb_psl.productsupplierid ||']%' or tbx.supplierarray='*') and (tbx.grouparray like '%['|| tb_pro.productgroupid1 ||']%' or tbx.grouparray='*' ) and (tbx.brandarray like '%['|| tb_pro.productbrandid ||']%' or tbx.brandarray='*' )) and tbx.clientid=0 ORDER BY tb_pro.productid, tbx.priority) pricelistid, tb_sd.main_stock, tb_sd.arrive_stock, tb_sd.arrive_date, tb_sd.info_stock_name,tb_ps.productsupplierpriority FROM tbproducts tb_pro INNER JOIN tbproductsupplierlinks tb_psl on tb_pro.productid=tb_psl.productid and tb_psl.linkactive='Y' and tb_pro.productisarchived='N' and tb_pro.productispublic='Y' INNER JOIN (SELECT tbx1.productid, tbx1.productsupplierid, sum(coalesce(tbx3.stockvalue,0) - coalesce(tbx3.stockorder,0)) as main_stock, sum(coalesce(tbx3.stockvalue,0) + coalesce(tbx3.stockarrive,0) - coalesce(tbx3.stockorder,0)) as arrive_stock, max(tbx3.stockarrivedate) as arrive_date, min(coalesce(tbx2.stockinfo,'')) as info_stock_name FROM tbproductsupplierlinks tbx1 INNER JOIN tbclientsuppliers tbx2 on tbx2.clientid=0 and tbx1.productsupplierid=tbx2.productsupplierid and tbx2.supplierallowed='Y' LEFT OUTER JOIN tbproductstocks tbx3 on tbx1.productid=tbx3.productid and tbx1.productsupplierid=tbx3.productsupplierid and ((tbx2.stockarray like '%['|| tbx3.stockname ||']%' and tbx3.stockmode in ('N','V')) or tbx3.stockmode=tbx2.stockmode_v) and tbx3.productid in (96662,82129,35,60326,108078,45674,100125,32470,79500,83958,78003,65574,52328,76240,45673,81694,2023,60845,38995,78557,100074,99272,89491,95060,106383,52325,98021,89109,89934,59558,5515,70187,45702,70285,95246,40271,66641,65629,22118,72244,72189,65595,95783,4855,75580,91063,80534,77243,47871,4469,103444,52798,68408,17369,60838,14421,74726,38643,52358,106382,96122,76112,92025,55980,52297,88429,767,69869,10001,29968,76810,88900,29967,89879,104063,40732,87367,42955,3933,98024,65737,101995,5135,101396,40737,59576,2376,95070,56420,97626,17370,80541,103341,69712,95690,74344,95863,80573,74169,83436,106381,47417,87036,80535,65710,61637,34162,97058,87308,96019,80540,101531,103342,70225,66334,106384,91025,61620,93821,1712,90669,32114,42738,119,72334,72933,48430,71207,67642,56933,91359,69878,75999,38538,96746,99638,107804,70188,78767,59575,95567,60841) WHERE tbx1.linkactive='Y' and tbx1.productid in (96662,82129,35,60326,108078,45674,100125,32470,79500,83958,78003,65574,52328,76240,45673,81694,2023,60845,38995,78557,100074,99272,89491,95060,106383,52325,98021,89109,89934,59558,5515,70187,45702,70285,95246,40271,66641,65629,22118,72244,72189,65595,95783,4855,75580,91063,80534,77243,47871,4469,103444,52798,68408,17369,60838,14421,74726,38643,52358,106382,96122,76112,92025,55980,52297,88429,767,69869,10001,29968,76810,88900,29967,89879,104063,40732,87367,42955,3933,98024,65737,101995,5135,101396,40737,59576,2376,95070,56420,97626,17370,80541,103341,69712,95690,74344,95863,80573,74169,83436,106381,47417,87036,80535,65710,61637,34162,97058,87308,96019,80540,101531,103342,70225,66334,106384,91025,61620,93821,1712,90669,32114,42738,119,72334,72933,48430,71207,67642,56933,91359,69878,75999,38538,96746,99638,107804,70188,78767,59575,95567,60841) GROUP BY tbx1.productid, tbx1.productsupplierid) tb_sd on tb_pro.productid=tb_sd.productid and tb_psl.productsupplierid=tb_sd.productsupplierid INNER JOIN tbproductsuppliers tb_ps on tb_psl.productsupplierid=tb_ps.productsupplierid and tb_ps.productsupplierispublic='Y' WHERE tb_pro.productisarchived='N' and tb_pro.productispublic='Y' ) s1 LEFT OUTER JOIN tbpricelists tb_pl on coalesce(s1.pricelistid,1)=tb_pl.pricelistid ) s2 ORDER BY s2.productid, have_price DESC, s2.have_stock DESC,s2.productsupplierpriority, coalesce(s2.price_sale_spec, coalesce(s2.price_sale_std,0))) tbssp on tba.productid=tbssp.productid and tbssp.pricesale>0 LEFT OUTER JOIN tbproductstocks tbis on tba.productid=tbis.productid and tbis.stockname=tbssp.info_stock_name INNER JOIN (SELECT tb_v.vatrateid, tb_v.countryid, tb_v.vatrate_code, tb_v.vatrate_private, tb_v.vatrate_company, tb_v.vatrate_special, tb_v.vatrate_allow_special FROM tbvatrates tb_v INNER JOIN (SELECT DISTINCT c1.countryid, c1.vatrate_code, (SELECT vatrateid FROM tbvatrates WHERE countryid=c1.countryid and vatrate_code=c1.vatrate_code and vatrate_validfrom<=localtimestamp ORDER BY vatrate_validfrom DESC LIMIT 1) as vatrateid FROM tbvatrates c1) tb_vd on tb_v.vatrateid=tb_vd.vatrateid WHERE tb_v.vatrateid>0) tbvd on tba.vatrate_code=tbvd.vatrate_code and tbvd.countryid=1 INNER JOIN tbvatrates tbvr on tbvd.vatrateid=tbvr.vatrateid INNER JOIN tbproductgroups tbg1 on tba.productgroupid1=tbg1.productgroupid LEFT OUTER JOIN tbproductgroups tbg2 on tba.productgroupid2=tbg2.productgroupid LEFT OUTER JOIN tbproductgroups tbg3 on tba.productgroupid3=tbg3.productgroupid INNER JOIN tbproductunits tbu on tba.productunitid=tbu.productunitid INNER JOIN tbproductbrands tbb on tba.productbrandid=tbb.productbrandid LEFT OUTER JOIN tbproductimages tbi on tba.productid=tbi.productid and tbi.productimageindex=1, get_product_status_data_array(tba.productid,'RETAIL') tbpsd WHERE tba.productisarchived='N' and tba.productispublic='Y' and ( (tba.productgroupid1>0 and tbg1.productgroupispublic='Y') or (tba.productgroupid2>0 and tbg2.productgroupispublic='Y') or (tba.productgroupid3>0 and tbg3.productgroupispublic='Y') ) and tba.productid in (96662,82129,35,60326,108078,45674,100125,32470,79500,83958,78003,65574,52328,76240,45673,81694,2023,60845,38995,78557,100074,99272,89491,95060,106383,52325,98021,89109,89934,59558,5515,70187,45702,70285,95246,40271,66641,65629,22118,72244,72189,65595,95783,4855,75580,91063,80534,77243,47871,4469,103444,52798,68408,17369,60838,14421,74726,38643,52358,106382,96122,76112,92025,55980,52297,88429,767,69869,10001,29968,76810,88900,29967,89879,104063,40732,87367,42955,3933,98024,65737,101995,5135,101396,40737,59576,2376,95070,56420,97626,17370,80541,103341,69712,95690,74344,95863,80573,74169,83436,106381,47417,87036,80535,65710,61637,34162,97058,87308,96019,80540,101531,103342,70225,66334,106384,91025,61620,93821,1712,90669,32114,42738,119,72334,72933,48430,71207,67642,56933,91359,69878,75999,38538,96746,99638,107804,70188,78767,59575,95567,60841) ORDER BY sign(greatest(coalesce(tbssp.main_stock,0),0)) DESC, sign(greatest(coalesce(tbssp.arrive_stock,0),0)) DESC, case when tba.productbrandid in (729, 736) then 1 else 2 end, tbssp.productsupplierid ASC, coalesce(tba.rating_retail_value,0) DESC, tba.productcode session:N xa:4