• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Register
  • Login
Bagisto Forum

Bagisto

  • Register
  • Login
  • Search
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups

Class Webkul\Product\Helpers\Price does not exist

Bug Report
5
5
496
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E
    ehdava last edited by 10 Dec 2019, 08:15

    Just pull the latest from master in bagisto,

    P.S. i pull from the master because i need the locale category to work

    and then i got this message after i add a product 8c1d940a-094e-412f-a929-dad791003a65-image.png

    what should i do with this?

    1 Reply Last reply Reply Quote 0
    • R
      rahul last edited by 11 Dec 2019, 04:39

      Hi @ehdava

      Did you using marketplace with this one ?

      Thanks

      1 Reply Last reply Reply Quote 0
      • 3 months later
      • K
        karim last edited by 5 Mar 2020, 13:07

        here is the required file
        copy it to file named Price.php

        <?php

        namespace Webkul\Product\Helpers;

        use Carbon\Carbon;
        use Webkul\Product\Models\Product;
        use Webkul\Product\Models\ProductFlat;
        use Webkul\Customer\Repositories\CustomerGroupRepository;
        use Webkul\CatalogRule\Repositories\CatalogRuleProductPriceRepository;
        use Webkul\CatalogRule\Helpers\CatalogRuleProductPrice;

        class Price extends AbstractProduct
        {
        /**
        * CustomerGroupRepository object
        */
        protected $customerGroupRepository;

        /**
         * CatalogRuleProductPrice object
         */
        protected $catalogRuleProductPriceHelper;
        
        /**
         * Create a new helper instance.
         *
         * @param  Webkul\Customer\Repositories\CustomerGroupRepository              $customerGroupRepository
         * @param  Webkul\CatalogRule\Repositories\CatalogRuleProductPriceRepository $catalogRuleProductPriceRepository
         * @param  Webkul\CatalogRule\Repositories\CatalogRuleProductPrice           $catalogRuleProductPriceHelper
         * @return void
         */
        public function __construct(
            CustomerGroupRepository $customerGroupRepository,
            CatalogRuleProductPriceRepository $catalogRuleProductPriceRepository,
            CatalogRuleProductPrice $catalogRuleProductPriceHelper
        )
        {
            $this->customerGroupRepository = $customerGroupRepository;
        
            $this->catalogRuleProductPriceRepository = $catalogRuleProductPriceRepository;
        
            $this->catalogRuleProductPriceHelper = $catalogRuleProductPriceHelper;
        }
        
        /**
         * Returns the product's minimal price
         *
         * @param Product $product
         * @return float
         */
        public function getMinimalPrice($product)
        {
            static $price = [];
        
            if(array_key_exists($product->id, $price))
                return $price[$product->id];
        
            if ($product->type == 'configurable') {
                return $price[$product->id] = $this->getVariantMinPrice($product);
            } else {
                if ($this->haveSpecialPrice($product))
                    return $price[$product->id] = $product->special_price;
        
                return $price[$product->id] = $product->price;
            }
        }
        
        /**
         * Returns the product's minimal price
         *
         * @param Product $product
         * @return float
         */
        public function getVariantMinPrice($product)
        {
            static $price = [];
        
            $finalPrice = [];
        
            if (array_key_exists($product->id, $price))
                return $price[$product->id];
        
            if ($product instanceof ProductFlat) {
                $productId = $product->product_id;
            } else {
                $productId = $product->id;
            }
        
            $qb = ProductFlat::join('products', 'product_flat.product_id', '=', 'products.id')
                    ->where('products.parent_id', $productId);
        
            $result = $qb
                    ->distinct()
                    ->selectRaw('IF( product_flat.special_price_from IS NOT NULL
                    AND product_flat.special_price_to IS NOT NULL , IF( NOW( ) >= product_flat.special_price_from
                    AND NOW( ) <= product_flat.special_price_to, IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , product_flat.price ) , IF( product_flat.special_price_from IS NULL , IF( product_flat.special_price_to IS NULL , IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , IF( NOW( ) <= product_flat.special_price_to, IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , product_flat.price ) ) , IF( product_flat.special_price_to IS NULL , IF( NOW( ) >= product_flat.special_price_from, IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , product_flat.price ) , product_flat.price ) ) ) AS final_price')
                    ->where('product_flat.channel', core()->getCurrentChannelCode())
                    ->where('product_flat.locale', app()->getLocale())
                    ->get();
        
            foreach ($result as $price) {
                $finalPrice[] = $price->final_price;
            }
        
            $rulePrice =  null;
        
            if (request()->route()->getPrefix() != 'admin/catalog') {
                $rulePrice = $this->catalogRuleProductPriceRepository->scopeQuery(function($query) use($product) {
                    return $query->selectRaw('min(price) as price')
                                ->whereIn('product_id', $product->variants()->pluck('product_id')->toArray())
                                ->where('channel_id', core()->getCurrentChannel()->id)
                                ->where('customer_group_id', $this->getCurrentCustomerGroupId())
                                ->where('rule_date', Carbon::now()->format('Y-m-d'));
                })->first();
            }
        
            if (empty($finalPrice) && ! $rulePrice)
                return $price[$productId] = 0;
        
            if ($rulePrice && $rulePrice->price && min($finalPrice) > $rulePrice->price)
                return $price[$productId] = $rulePrice->price;
        
            return $price[$productId] = min($finalPrice);
        }
        
        /**
         * Returns the product's minimal price
         *
         * @param Product $product
         * @return float
         */
        public function getSpecialPrice($product)
        {
            static $price = [];
        
            if(array_key_exists($product->id, $price))
                return $price[$product->id];
        
            if ($this->haveSpecialPrice($product)) {
                return $price[$product->id] = $product->special_price;
            } else {
                return $price[$product->id] = $product->price;
            }
        }
        
        /**
         * @param Product $product
         * @return boolean
         */
        public function haveSpecialPrice($product)
        {
            if ($product instanceof ProductFlat) {
                $rulePrice = $this->catalogRuleProductPriceHelper->getRulePrice($product->product);
            } else {
                $rulePrice = $this->catalogRuleProductPriceHelper->getRulePrice($product);
            }
        
            if ((is_null($product->special_price) || ! (float) $product->special_price) && ! $rulePrice)
                return false;
        
            if (! (float) $product->special_price) {
                if ($rulePrice) {
                    $product->special_price = $rulePrice->price;
        
                    return true;
                }
            } else {
                if ($rulePrice && $rulePrice->price <= $product->special_price) {
                    $product->special_price = $rulePrice->price;
        
                    return true;
                } else {
                    if (core()->isChannelDateInInterval($product->special_price_from, $product->special_price_to))
                        return true;
                }
            }
        
            return false;
        }
        
        /**
         * Returns current customer group id
         *
         * @return integer|null
         */
        public function getCurrentCustomerGroupId()
        {
            $guard = request()->has('token') ? 'api' : 'customer';
        
            if (auth()->guard($guard)->check()) {
                $customerGroupId = auth()->guard($guard)->user()->customer_group_id;
            } else {
                $customerGroupId = $this->customerGroupRepository->findOneByField('code', 'guest')->id;
            }
        
            return $customerGroupId;
        }
        

        }

        1 Reply Last reply Reply Quote 0
        • 3 months later
        • MHD Yasser
          MHD Yasser last edited by 8 Jun 2020, 13:48

          @karim
          I added the price file just like you said earlier put I kept getting this error.
          1213wwe.JPG

          Note that these errors started showing only after I installed the PWA package.
          Thanks in advance

          1 Reply Last reply Reply Quote 0
          • V
            Vaishali Agarwal last edited by 8 Jun 2020, 15:22

            Hi @MHD-Yasser
            if you have this issue after installing the PWA package then you may raise your support ticket here; https://bagisto.uvdesk.com/en/customer/create-ticket/

            Thanks

            1 Reply Last reply Reply Quote 0
            4 out of 5
            • First post
              4/5
              Last post