上書きのためバックエンドに間違った数量が表示されています
-
13-12-2019 - |
質問
マーケットプレースマルチベンダー /売り手のサイトは、販売者が私たちのサイトを通して製品を販売することができるという意味です。
これを実装するための拡張を使用しています。
拡張子を使用する前に、 Catalog>製品の管理の下で正しい量を見ることができます。
拡張子は、バグがあるので、
カタログ>製品の管理各製品の「数量」を見ることができます、この数量はすべての売り手の組み合わせです。
例:製品「A」に2人の売り手があります。
売り手a は 10 数量と売り手B を 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ではこれは販売のための正しい量を示しています。
あなたの例を取ります。
売り手Aは 10 数量と売り手Bが 5 数量と同じ製品を割り当てられた verset seller です。
だから購入した量の総量の総数は、 15 数量です。
だから15
の管理下のProducts > quantity
を表示します。それは正しいです。
主な数量を売り手の 10
に変更した場合、あなたはあなたの 5量の売り手B をlose
にします。
他のヒント
これを試してみてください:
<?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;
}
}
. 所属していません magento.stackexchange