This repository was archived by the owner on Sep 13, 2024. It is now read-only.
Products of storage
#14163
Replies: 4 comments 15 replies
-
There is no mechanisms available in system. There is some ways how to implement this but you need programmer. |
Beta Was this translation helpful? Give feedback.
2 replies
-
handler pre save or limit the list of products to choose from |
Beta Was this translation helpful? Give feedback.
12 replies
-
@vovpff @mariuszkrzaczkowski /**
* IGDN_Handler class.
*/
class IGDN_IGDNHandler_Handler
{
public function getModule()
{
if (!$this->module) {
$this->module = \Vtiger_Module_Model::getInstance($this->moduleName);
}
return $this->module;
}
public function getModuleName(): string
{
return $this->getModule()->get('name');
}
public function editViewPreSave(App\EventHandler $eventHandler)
{
//GET INVENTORY VALUE
$recordModel = $eventHandler->getRecordModel();
$inventoryData = $recordModel->getInventoryData();
//NEW DISPLAY VALUE
$valueNew = array_column($inventoryData, 'qty', 'name' );
//EDITED MODE
$idrecord = $recordModel->getId();
// sprawadzenie czy istnieją dane
/*maths oeprations
valueExists,
valueNew,
valueDiff(valueExists-valueNew),
valueQtySotrage,
valueOper=if(valueDiff>valueQtySotrage){valueQtySotrage-valueDiff}
*/
if (!empty($idrecord)){
$storageId = $recordModel->get('storageid');
$inventoryDataExists = \Vtiger_Inventory_Model::getInventoryDataById($idrecord, $recordModel->getModuleName());
$valueExists = array_column($inventoryDataExists, 'qty', 'name');
//print_r($valueExists);
$valueDiff = array();
foreach($valueExists as $key => $value){
$valueDiff[$key] = $valueNew[$key] - $valueExists[$key];
}
$queryQtyStorage = array_keys($valueNew);
$queryQtyStorage = implode(",",$queryQtyStorage);
$queryQtyExecute = 'SELECT u_yf_istorages_products.relcrmid,
u_yf_istorages_products.qtyinstock
FROM u_yf_istorages_products
WHERE u_yf_istorages_products.relcrmid IN ('.$queryQtyStorage.') and u_yf_istorages_products.crmid = '.$storageId;
$queryQtyResult = \App\Db::getInstance()->createCommand($queryQtyExecute)->queryAll();
// values from storage minus values differental
foreach($valueDiff as $key => $value){
$valueMinus[$key] = $queryQtyResult[$key] - $valueDiff[$key];
}
if (min($valueMinus)<0){
$valueMinus= (array_filter($valueMinus, function($value){
return $value < 0;
}));
$valueMinusVal = array_values($valueMinus);
$valueMinusVal = implode(",",$valueMinusVal);
$valueMinusKey = array_keys($valueMinus);
$valueMinusKey = implode(",",$valueMinusKey);
$queryOfProductName = 'SELECT vtiger_products.productid,
vtiger_products.productname
FROM vtiger_products
WHERE vtiger_products.productid IN ('.$valueMinusKey.')';
$queryOfProductNameResult = \App\Db::getInstance()->createCommand($queryOfProductName)->queryAll();
$queryOfProductNameResult = array_column($queryOfProductNameResult, 'productname', 'productid' );
foreach($queryOfProductNameResult as $key => $value){
if(isset($valueMinus[$key]))
$mergedArray[$value] = $valueMinus[$key];
}
$resultEdited= json_encode($mergedArray);
$outputText = 'Probujesz wydać więcej torawu niż jest na magazynie, stan po aktualizacji wyniusł by: '.$resultEdited;
return $response = ['result' => false, 'message' => App\Language::translate($outputText, $recordModel->getModuleName())];
}
} else {
/*maths oeprations
valueNew,
valueDiff(valueExists-valueNew),
valueQtySotrage,
valueOper=if(valueDiff>valueQtySotrage){valueQtySotrage-valueDiff}
*/
$queryQtyStorage = array_keys($valueNew);
$queryQtyStorage = implode(",",$queryQtyStorage);
$queryProductsQty = 'SELECT vtiger_products.productid,
vtiger_products.qtyinstock
FROM vtiger_products
WHERE vtiger_products.productid IN ('.$queryQtyStorage.' )';
$resultProductQty = \App\Db::getInstance()->createCommand($queryProductsQty)->queryAll();
$resultProductQty = array_column($resultProductQty, 'qtyinstock', 'productid' );
foreach($valueNew as $key => $value){
$valueMinus[$key] = $resultProductQty[$key] - $valueNew[$key];
}
if (min($valueMinus)<0){
$valueMinus= (array_filter($valueMinus, function($value){
return $value < 0;
}));
$valueMinusVal = array_values($valueMinus);
$valueMinusVal = implode(",",$valueMinusVal);
$valueMinusKey = array_keys($valueMinus);
$valueMinusKey = implode(",",$valueMinusKey);
$queryOfProductName = 'SELECT vtiger_products.productid,
vtiger_products.productname
FROM vtiger_products
WHERE vtiger_products.productid IN ('.$valueMinusKey.')';
$queryOfProductNameResult = \App\Db::getInstance()->createCommand($queryOfProductName)->queryAll();
$queryOfProductNameResult = array_column($queryOfProductNameResult, 'productname', 'productid' );
foreach($queryOfProductNameResult as $key => $value){
if(isset($valueMinus[$key]))
$mergedArray[$value] = $valueMinus[$key];
}
$resultEdited= json_encode($mergedArray);
$outputText = 'Probujesz wydać więcej torawu niż jest na magazynie, stan po aktualizacji wyniusł by: '.$resultEdited;
return $response = ['result' => false, 'message' => App\Language::translate($outputText, $recordModel->getModuleName())];
}
}
}
} |
Beta Was this translation helpful? Give feedback.
1 reply
-
Hi, will this be add to the system? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi,
How to block the sale of a product only to the qty on the stock?
Beta Was this translation helpful? Give feedback.
All reactions