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 (88364,59517,65566,41497,4359,98604,28972,47871,59519,14421,29219,1712,3836,767,75981,43640,79702,4386,97207,65595,52323,40271,69878,92037,94723,86959,94507,7801,52296,17370,67047,34162,58729,40732,98189,91539,829,40735,70303,52326,52324,89934,42738,2002,85066,30988,41238,2213,47870,87314,37466,40726,49898,92036,99272,72558,59573,87873,95863,77935,59558,70309,88427,10001,68616,35589,1882,72209,32114,91014,89109,87309,65710,67642,91734,87980,3933,96725,66334,70225,59576,56775,61628,95158,4141,84366,56420,12125,49953,43,87037,53169,59547,52301,17369,59538,88468,70187,76415,43755,32104,40759,52297,52358,29968,59530,92008,90670,90295,83934,32471,75644,64593,42955,74353,58669,95058,78003,83288,40280,59575,93002,25024,87282,81575,77924,65051,95059,52328,91348,51208,78535,57637,45666,72424,35,45702,42574,9991,65629,101217,80540,94398,88429,16014,60326,37015,82654,2376,119,45673,30387,147,70596,81476,98481,29967,89935,47417,22118,21979,72333,830,88428,95060,2023,100032,56447,94097,95690,45674,47613,100122,96407,87308,70189,52798,350,75227,5135,4893,55980,52325,80541,73689,5515,12488,61620,77169,5136,4469,96850,89799,87036,91103,72226,97628,69869) WHERE tbx1.linkactive='Y' and tbx1.productid in (88364,59517,65566,41497,4359,98604,28972,47871,59519,14421,29219,1712,3836,767,75981,43640,79702,4386,97207,65595,52323,40271,69878,92037,94723,86959,94507,7801,52296,17370,67047,34162,58729,40732,98189,91539,829,40735,70303,52326,52324,89934,42738,2002,85066,30988,41238,2213,47870,87314,37466,40726,49898,92036,99272,72558,59573,87873,95863,77935,59558,70309,88427,10001,68616,35589,1882,72209,32114,91014,89109,87309,65710,67642,91734,87980,3933,96725,66334,70225,59576,56775,61628,95158,4141,84366,56420,12125,49953,43,87037,53169,59547,52301,17369,59538,88468,70187,76415,43755,32104,40759,52297,52358,29968,59530,92008,90670,90295,83934,32471,75644,64593,42955,74353,58669,95058,78003,83288,40280,59575,93002,25024,87282,81575,77924,65051,95059,52328,91348,51208,78535,57637,45666,72424,35,45702,42574,9991,65629,101217,80540,94398,88429,16014,60326,37015,82654,2376,119,45673,30387,147,70596,81476,98481,29967,89935,47417,22118,21979,72333,830,88428,95060,2023,100032,56447,94097,95690,45674,47613,100122,96407,87308,70189,52798,350,75227,5135,4893,55980,52325,80541,73689,5515,12488,61620,77169,5136,4469,96850,89799,87036,91103,72226,97628,69869) 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 (88364,59517,65566,41497,4359,98604,28972,47871,59519,14421,29219,1712,3836,767,75981,43640,79702,4386,97207,65595,52323,40271,69878,92037,94723,86959,94507,7801,52296,17370,67047,34162,58729,40732,98189,91539,829,40735,70303,52326,52324,89934,42738,2002,85066,30988,41238,2213,47870,87314,37466,40726,49898,92036,99272,72558,59573,87873,95863,77935,59558,70309,88427,10001,68616,35589,1882,72209,32114,91014,89109,87309,65710,67642,91734,87980,3933,96725,66334,70225,59576,56775,61628,95158,4141,84366,56420,12125,49953,43,87037,53169,59547,52301,17369,59538,88468,70187,76415,43755,32104,40759,52297,52358,29968,59530,92008,90670,90295,83934,32471,75644,64593,42955,74353,58669,95058,78003,83288,40280,59575,93002,25024,87282,81575,77924,65051,95059,52328,91348,51208,78535,57637,45666,72424,35,45702,42574,9991,65629,101217,80540,94398,88429,16014,60326,37015,82654,2376,119,45673,30387,147,70596,81476,98481,29967,89935,47417,22118,21979,72333,830,88428,95060,2023,100032,56447,94097,95690,45674,47613,100122,96407,87308,70189,52798,350,75227,5135,4893,55980,52325,80541,73689,5515,12488,61620,77169,5136,4469,96850,89799,87036,91103,72226,97628,69869) 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