fix bug 3
This commit is contained in:
@@ -42,18 +42,16 @@ class ProductDisplayPriceService
|
|||||||
$zaarbox = app(ZaarboxPriceService::class);
|
$zaarbox = app(ZaarboxPriceService::class);
|
||||||
$zaarboxFeed = $zaarbox->getCachedPriceListOnly();
|
$zaarboxFeed = $zaarbox->getCachedPriceListOnly();
|
||||||
|
|
||||||
$baseAppPrice = 0;
|
|
||||||
if ($collection->contains(fn ($p) => $p instanceof Product && $this->usesAppPrice($p))) {
|
|
||||||
$baseAppPrice = $this->resolveAppBasePrice();
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($collection as $product) {
|
foreach ($collection as $product) {
|
||||||
if (!$product instanceof Product) {
|
if (!$product instanceof Product) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->usesAppPrice($product)) {
|
if ($this->usesAppPrice($product)) {
|
||||||
$this->applyAppPrice($product, $baseAppPrice);
|
$base = $this->productUsesLastPriceIfZero($product)
|
||||||
|
? $this->resolveAppBasePrice()
|
||||||
|
: $this->resolveStrictLiveAppBasePrice();
|
||||||
|
$this->applyAppPrice($product, $base);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,6 +154,28 @@ class ProductDisplayPriceService
|
|||||||
return (int) $last->price;
|
return (int) $last->price;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function zeroProductPrice(Product $product): void
|
||||||
|
{
|
||||||
|
$product->setAttribute('price', 0);
|
||||||
|
if (Schema::hasColumn($product->getTable(), 'price_profit')) {
|
||||||
|
$product->setAttribute('price_profit', 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* فقط قیمت زنده (کش /api/price/last) — بدون montzar_live_price قدیمی settings.
|
||||||
|
* وقتی use_last_price_if_zero خاموش است.
|
||||||
|
*/
|
||||||
|
public function resolveStrictLiveAppBasePrice(): int
|
||||||
|
{
|
||||||
|
$cached = Cache::get(self::LIVE_PRICE_CACHE_KEY);
|
||||||
|
if (!is_array($cached)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->extractBaseFromPayload($cached);
|
||||||
|
}
|
||||||
|
|
||||||
/** @param array<int, array<string, mixed>> $feed */
|
/** @param array<int, array<string, mixed>> $feed */
|
||||||
private function applyReferenceFeedPrice(Product $product, array $feed, ZaarboxPriceService $zaarbox): void
|
private function applyReferenceFeedPrice(Product $product, array $feed, ZaarboxPriceService $zaarbox): void
|
||||||
{
|
{
|
||||||
@@ -173,7 +193,11 @@ class ProductDisplayPriceService
|
|||||||
if (Schema::hasColumn($product->getTable(), 'price_profit')) {
|
if (Schema::hasColumn($product->getTable(), 'price_profit')) {
|
||||||
$product->setAttribute('price_profit', 0);
|
$product->setAttribute('price_profit', 0);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$this->zeroProductPrice($product);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$this->zeroProductPrice($product);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user