Неправильное количество отображается в бэкэнде из-за перезаписи

magento.stackexchange https://magento.stackexchange.com//questions/87785

  •  13-12-2019
  •  | 
  •  

Вопрос

у нас есть Торговая площадка с несколькими поставщиками/ сайт продавца, означает, что продавцы могут продавать товары через наш сайт.

мы используем расширение для реализации этого.

Перед использованием расширения мы можем увидеть правильное количество в разделе Каталог > Управление продуктами.

В расширении существует ошибка так что,

в разделе Каталог > Управление продуктами мы можем увидеть "Количество" для каждого продукта, это количество - это комбинация всех продавцов.

пример :У товара "А" есть 2 продавца.

продавец А является базовым продавцом с 10 количество и продавец В назначен тот же продукт с 5 Количество.

Таким образом, его отображение 15 под Управление продуктами > количество.

Расширение - это чрезмерная езда функция Количества по умолчанию.

Я хочу убрать это во время езды.

Я предполагаю, что это код для переопределения :

app/code/local/webkul/Mpassignproduct/Model/Mpassignproduct.php

<?php

class Webkul_Mpassignproduct_Model_Mpassignproduct extends Mage_Core_Model_Abstract
{
    public function _construct() {
        parent::_construct();
        $this->_init('mpassignproduct/mpassignproduct');
    }

    public function editproduct($data) {
        $sellerId=Mage::getSingleton('customer/session')->getCustomerId();
        $products=Mage::getModel('mpassignproduct/mpassignproduct')->getCollection()
                            ->addFieldToFilter('seller_id',array('eq'=>$sellerId))
                            ->addFieldToFilter('mpassignproduct_id',array('eq'=>$data['pro_id']));
        if(count($products)) {
            foreach($products as $product) {
                $isApproved=$product->getFlag();
                $preQty=$product->getQty();
                $product->setQty($data['qty']);
                $product->setPrice($data['price']);
                $product->setProductCondition($data['product_condition']);
                $product->setProductDescription($data['product_description']);
                $saved=$product->save();
                $lastId=$saved->getId();
            }
        }
        if($lastId)  {
            if($isApproved == 1) {
                $_product=Mage::getModel("catalog/product")->load($data['product_id']);
                $qtyStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty();
                $qtyStock = ($qtyStock - $preQty) + $data['qty'];
                $this->_saveStock($data['product_id'],$qtyStock,1); 
            }
            $this->uploadImages($lastId);
        }

        return $lastId;
    }

    public function assineproduct($data) {
        $data['seller_id'] = Mage::getSingleton('customer/session')->getCustomerId();
        $product = Mage::getModel('mpassignproduct/mpassignproduct');
        $product->setData($data);
        $status = Mage::getStoreConfig('marketplace/marketplace_options/product_approval') ? 2 : 1;

        $product->setFlag($status);
        $product->setCreatedAt(Mage::getModel('core/date')->date('Y-m-d H:i:s'));
        $saved=$product->save();
        $lastId=$saved->getId();

        if($lastId) {
            if($status == 1) {
                $_product=Mage::getModel("catalog/product")->load($data['product_id']);
                $qtyStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty();
                $qtyStock = $qtyStock + $data['qty'];
                $this->_saveStock($data['product_id'],$qtyStock,1); 
            }
            $this->uploadImages($lastId);
        }
        return $lastId;
    }

    public function uploadImages($lastId) {
        $target =Mage::getBaseDir().'/media/mpassignproduct/'.$lastId.'/';
        if(isset($_FILES) && count($_FILES) > 0) {
            if(!is_dir(Mage::getBaseDir().'/media/mpassignproduct/')) {
                mkdir(Mage::getBaseDir().'/media/mpassignproduct/', 0755);
            }
            if(!is_dir(Mage::getBaseDir().'/media/mpassignproduct/'.$lastId.'/')) {
                mkdir(Mage::getBaseDir().'/media/mpassignproduct/'.$lastId.'/', 0755);
            }
            foreach($_FILES as $image ) {
                if($image['tmp_name'] != '') {
                    $splitname = explode('.', $image['name']);
                    $splitname[0] = str_replace('-', '', $splitname[0]);
                    $image_name = preg_replace('/[^A-Za-z0-9\-]/', '', $splitname[0]);
                    $target1 = $target.$image_name.".".$splitname[1];
                    move_uploaded_file($image['tmp_name'],$target1);
                }
            }               
        }
    }

    public function _saveStock($lastId,$stock,$isstock) {
        $stockItem = Mage::getModel('cataloginventory/stock_item');
        $stockItem->loadByProduct($lastId);
        if(!$stockItem->getId()){$stockItem->setProductId($lastId)->setStockId(1);}
        $stockItem->setProductId($lastId)->setStockId(1);
        $savedStock = $stockItem->save();
        $stockItem->load($savedStock->getId())->setQty($stock)->save();
        if($stock) {
            $stockItem->setData('is_in_stock', $isstock); 
        }
        $savedStock = $stockItem->save();
    }

    public function getAssignProDetails($productid) {
        $collection=Mage::getModel('mpassignproduct/mpassignproduct')->getCollection()
                            ->addFieldToFilter('product_id',array('eq'=>$productid))
                            ->addFieldToFilter('qty',array('gt'=>0))
                            ->addFieldToFilter('flag',array('eq'=>'1'))
                            ->setOrder("price","ASC");
        $data=array();                          
        $totalAssignQty=0;
        $priceFrom=0;               
        foreach($collection as $item) {
            $price=$item->getPrice();
            break;
        }           
        foreach($collection as $item) {
            $totalAssignQty = $totalAssignQty + $item->getQty();
        }   
        $productModel = Mage::getModel("catalog/product")->load($productid);
        if($productModel->getPrice() < $price)
            $priceFrom=$productModel->getPrice();
        else
            $priceFrom=$price;
        $totalProductQty = $productModel->getStockItem()->getQty();
        $data['sellerqty'] = $totalProductQty - $totalAssignQty;
        $data['assignqty'] = $totalAssignQty;
        $data['pricefrom'] = $priceFrom;
        $data['assignCount'] = count($collection);
        return $data;
    }   

    public function getSellerList($productid) {
        $customerId=Mage::getSingleton('customer/session')->getCustomerId();
        $collection=Mage::getModel('mpassignproduct/mpassignproduct')->getCollection();
        $collection->addFieldToFilter('product_id',array('eq'=>$productid));
        $i=0;
        foreach($collection as $item) {
            $sql2=Mage::getModel('marketplace/userprofile')->getPartnerProfileById($item['seller_id']);
            $item['logo']=$sql2['logopic'];
            $item['sellername']=$sql2['firstname']." ".$sql2['lastname'];
            $sql[$i]=$item;
            $i++;
        }
        return $sql;
    }

     public function detailsale($mageproid, $userid) {
        $data = array();
        $sum=0;
        $arr=array();
        $quantity = Mage::getModel('marketplace/saleslist')->getCollection()
                            ->addFieldToFilter('mageproid',array('eq'=>$mageproid))
                            ->addFieldToFilter('mageproownerid',array('eq'=>$userid));
        $data['quantitysoldconfirmed']=0;
        $data['quantitysoldpending']=0;
        foreach($quantity as $rec) {
            $status=$rec->getCpprostatus();
            $qty=$rec->getMagequantity();
            if($status==1) {
                    $data['quantitysoldconfirmed']=$data['quantitysoldconfirmed']+$qty;
            } else if($status==0) {
                    $data['quantitysoldpending']=$data['quantitysoldpending']+$qty;
            }
        }
        $amountearned = Mage::getModel('marketplace/saleslist')->getCollection()
                    ->addFieldToFilter('mageproid',array('eq'=>$mageproid))
                    ->addFieldToFilter('mageproownerid',array('eq'=>$userid));
        foreach($amountearned as $rec) {
            $sum=$sum+$rec->getactualparterprocost();
            $arr[]=$rec->getClearedAt();
        }
        $data['amountearned']=$sum;
        $data['clearedat']=$arr;
        $quantitysold = Mage::getModel('marketplace/saleslist')->getCollection()
                    ->addFieldToFilter('mageproid',$mageproid)
                    ->addFieldToFilter('mageproownerid',$userid);
        $data['quantitysold']=0;
        $data['quantitysold']=0;
        foreach($quantitysold as $rec) {
            $qty = $rec->getMagequantity(); 
            $data['quantitysold']=$data['quantitysold']+$qty;

        }
        return $data;
    }

    public function detsalebyid($productId, $userid) {
        $data = array();
        if($productId > 0) {
           $collection = Mage::getModel('marketplace/saleslist')->getCollection();
           $collection->addFieldToFilter('mageproid',array('eq'=>$productId));
            $collection->addFieldToFilter('mageproownerid',array('eq'=>$userid));
            $i=0;
            foreach ($collection as $record) {
                $data[$i]=array(
                            'magequantity'=>$record->getmagequantity(),
                            'actualparterprocost'=>$record->getactualparterprocost()
                        );
                $i++;
            }
            return $data;
        }
    }
}
Это было полезно?

Решение

я думаю, что это не ошибка в этом расширении.это расширение работает как количество от общего количества товара всеми продавцами этого товара.итак, в admin это показывает правильное количество для продажи.

позвольте мне привести ваш пример.

продавец А - это базовый продавец с 10 количество и продавец B, присвоивший одному и тому же товару 5 Количество.

таким образом, общее количество купленного товара равно 15 Количество.

Таким образом, его отображение 15 под Управлением Products > quantity. это правильно.

если вы измените основное количество на 10 продавца а ты будешь lose ваш 5 количество продавцов b.

Другие советы

Попробуй это:

<?php
  class Webkul_Mpassignproduct_Model_Mpassignproduct extends Mage_Core_Model_Abstract
{
    public function _construct() {
        parent::_construct();
        $this->_init('mpassignproduct/mpassignproduct');
    }

    public function editproduct($data)
    {
        $sellerId = Mage::getSingleton('customer/session')->getCustomerId();

        $products = Mage::getModel('mpassignproduct/mpassignproduct')->getCollection()
                            ->addFieldToFilter('seller_id',array('eq'=>$sellerId))
                            ->addFieldToFilter('mpassignproduct_id',array('eq'=>$data['pro_id']));
        if(count($products)) {
            foreach($products as $product) {
                $isApproved = $product->getFlag();
                $preQty = $product->getQty();
                $product->setQty($data['qty']+$product->getQty());
                $product->setPrice($data['price']);
                $product->setProductCondition($data['product_condition']);
                $product->setProductDescription($data['product_description']);
                $saved=$product->save();
                $lastId=$saved->getId();
            }
        }
        if($lastId)  {
            if($isApproved == 1) {
                $_product = Mage::getModel("catalog/product")->load($data['product_id']);
                $qtyStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty();
                $qtyStock = ($qtyStock - $preQty) + $data['qty'];
                $this->_saveStock($data['product_id'],$qtyStock,1); 
            }
            $this->uploadImages($lastId);
        }

        return $lastId;
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top