/** * Function returns Inventory Line Items * @param Vtiger_Request $request */ function showLineItemDetails(Vtiger_Request $request) { $record = $request->get('record'); $moduleName = $request->getModule(); $recordModel = Inventory_Record_Model::getInstanceById($record); $relatedProducts = $recordModel->getProducts(); //##Final details convertion started $finalDetails = $relatedProducts[1]['final_details']; //Final shipping tax details convertion ended $currencyFieldsList = array('grandTotal'); foreach ($currencyFieldsList as $fieldName) { $finalDetails[$fieldName] = Vtiger_Currency_UIType::transformDisplayValue($finalDetails[$fieldName], null, true); } $relatedProducts[1]['final_details'] = $finalDetails; //##Final details convertion ended //##Product details convertion started $productsCount = count($relatedProducts); for ($i = 1; $i <= $productsCount; $i++) { $product = $relatedProducts[$i]; $currencyFieldsList = array('listPrice', 'unitPrice', 'productTotal'); foreach ($currencyFieldsList as $fieldName) { $product[$fieldName . $i] = Vtiger_Currency_UIType::transformDisplayValue($product[$fieldName . $i], null, true); } $relatedProducts[$i] = $product; } //##Product details convertion ended $viewer = $this->getViewer($request); $viewer->assign('RELATED_PRODUCTS', $relatedProducts); $viewer->assign('RECORD', $recordModel); $viewer->assign('MODULE_NAME', $moduleName); $viewer->view('LineItemsDetail.tpl', $moduleName); }
/** * Function returns Inventory Line Items * @param Vtiger_Request $request */ function showLineItemDetails(Vtiger_Request $request) { $record = $request->get('record'); $moduleName = $request->getModule(); $recordModel = Inventory_Record_Model::getInstanceById($record); $relatedProducts = $recordModel->getProducts(); //##Final details convertion started $finalDetails = $relatedProducts[1]['final_details']; //Final tax details convertion started $taxtype = $finalDetails['taxtype']; if ($taxtype == 'group') { $taxDetails = $finalDetails['taxes']; $taxCount = count($taxDetails); for ($i = 0; $i < $taxCount; $i++) { $taxDetails[$i]['amount'] = Vtiger_Currency_UIType::transformDisplayValue($taxDetails[$i]['amount'], null, true); } $finalDetails['taxes'] = $taxDetails; } //Final tax details convertion ended //Final shipping tax details convertion started $shippingTaxDetails = $finalDetails['sh_taxes']; $taxCount = count($shippingTaxDetails); for ($i = 0; $i < $taxCount; $i++) { $shippingTaxDetails[$i]['amount'] = Vtiger_Currency_UIType::transformDisplayValue($shippingTaxDetails[$i]['amount'], null, true); } $finalDetails['sh_taxes'] = $shippingTaxDetails; //Final shipping tax details convertion ended $currencyFieldsList = array('adjustment', 'grandTotal', 'hdnSubTotal', 'preTaxTotal', 'tax_totalamount', 'shtax_totalamount', 'discountTotal_final', 'discount_amount_final', 'shipping_handling_charge', 'totalAfterDiscount'); foreach ($currencyFieldsList as $fieldName) { $finalDetails[$fieldName] = Vtiger_Currency_UIType::transformDisplayValue($finalDetails[$fieldName], null, true); } $relatedProducts[1]['final_details'] = $finalDetails; //##Final details convertion ended //##Product details convertion started $productsCount = count($relatedProducts); for ($i = 1; $i <= $productsCount; $i++) { $product = $relatedProducts[$i]; //Product tax details convertion started if ($taxtype == 'individual') { $taxDetails = $product['taxes']; $taxCount = count($taxDetails); for ($j = 0; $j < $taxCount; $j++) { $taxDetails[$j]['amount'] = Vtiger_Currency_UIType::transformDisplayValue($taxDetails[$j]['amount'], null, true); } $product['taxes'] = $taxDetails; } //Product tax details convertion ended $currencyFieldsList = array('taxTotal', 'netPrice', 'listPrice', 'unitPrice', 'productTotal', 'discountTotal', 'discount_amount', 'totalAfterDiscount'); foreach ($currencyFieldsList as $fieldName) { $product[$fieldName . $i] = Vtiger_Currency_UIType::transformDisplayValue($product[$fieldName . $i], null, true); } $relatedProducts[$i] = $product; } //##Product details convertion ended $viewer = $this->getViewer($request); $viewer->assign('RELATED_PRODUCTS', $relatedProducts); $viewer->assign('RECORD', $recordModel); $viewer->assign('MODULE_NAME', $moduleName); $viewer->view('LineItemsDetail.tpl', 'Inventory'); }
/** * This Function adds the specified product quantity to the Product Quantity in Stock * @param type $recordId */ function addStockToProducts($recordId) { $db = PearDatabase::getInstance(); $recordModel = Inventory_Record_Model::getInstanceById($recordId); $relatedProducts = $recordModel->getProducts(); foreach ($relatedProducts as $key => $relatedProduct) { if ($relatedProduct['qty' . $key]) { $productId = $relatedProduct['hdnProductId' . $key]; $result = $db->pquery("SELECT qtyinstock FROM vtiger_products WHERE productid=?", array($productId)); $qty = $db->query_result($result, 0, "qtyinstock"); $stock = $qty + $relatedProduct['qty' . $key]; $db->pquery("UPDATE vtiger_products SET qtyinstock=? WHERE productid=?", array($stock, $productId)); } } }
/** * @param $context \Workflow\VTEntity|\Workflow\VTInventoryEntity */ public function handleTask(&$context) { $referenceId = $context->getId(); Workflow2::$enableError = true; $parentRecordModel = Inventory_Record_Model::getInstanceById($referenceId); $currencyInfo = $parentRecordModel->getCurrencyInfo(); $taxes = $parentRecordModel->getProductTaxes(); $shippingTaxes = $parentRecordModel->getShippingTaxes(); $relatedProducts = $parentRecordModel->getProducts(); $recordModel = Vtiger_Record_Model::getCleanInstance('Invoice'); $recordModel->setRecordFieldValues($parentRecordModel); $recordModel->save(); $newId = $recordModel->getId(); $contextRecord = $context; /** * @var $newObj \Workflow\VTEntity|\Workflow\VTInventoryEntity */ $newObj = \Workflow\VTEntity::getForId($newId); $newObj->set('hdnTaxType', $parentRecordModel->get('hdnTaxType')); $newObj->importProductsFromRecord($relatedProducts, true); $setterMap = $this->get("setter"); $this->fieldSetter->apply($newObj, $setterMap, $contextRecord, $this); $newObj->save(); if ($this->get("redirectAfter") == "1") { $this->getWorkflow()->setSuccessRedirection("index.php?module=" . $newObj->getModuleName() . "&view=Detail&record=" . $newObj->getId()); } if ($this->get("exec_workflow") !== "" && $this->get("exec_workflow") != -1) { $newContext = VTEntity::getForId($newObj->getId(), $newObj->getModuleName()); $newContext->loadEnvironment($context->getEnvironment()); $objWorkflow = new \Workflow\Main($this->get("exec_workflow"), false, $context->getUser()); $objWorkflow->isSubWorkflow(true); $objWorkflow->setContext($newContext); $objWorkflow->start(); } Workflow2::$enableError = true; }
public function getModel() { if ($this->_isDummy) { return false; } $this->save(); return \Inventory_Record_Model::getInstanceById($this->_id, $this->_moduleName); }
function get_inventory_products($id, $module, $customerid, $sessionid) { require_once 'include/utils/UserInfoUtil.php'; require_once 'include/utils/utils.php'; global $adb, $site_URL, $log; $user = new Users(); $userid = getPortalUserid(); $current_user = $user->retrieveCurrentUserInfoFromFile($userid); $isPermitted = check_permission($customerid, $module, $id); if ($isPermitted == false) { return array("#NOT AUTHORIZED#"); } $recordModel = Inventory_Record_Model::getInstanceById($id); $relatedProducts = $recordModel->getProducts(); $output[0] = $relatedProducts; return $output; }
public function process(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $sourceRecord = $request->get('sourceRecord'); $sourceModule = $request->get('sourceModule'); if (!empty($record) && $request->get('isDuplicate') == true) { $recordModel = Inventory_Record_Model::getInstanceById($record, $moduleName); $currencyInfo = $recordModel->getCurrencyInfo(); $taxes = $recordModel->getProductTaxes(); $relatedProducts = $recordModel->getProducts(); $viewer->assign('MODE', ''); //While Duplicating record, If the related record is deleted then we are removing related record info in record model $mandatoryFieldModels = $recordModel->getModule()->getMandatoryFieldModels(); foreach ($mandatoryFieldModels as $fieldModel) { if ($fieldModel->isReferenceField()) { $fieldName = $fieldModel->get('name'); if (Vtiger_Util_Helper::checkRecordExistance($recordModel->get($fieldName))) { $recordModel->set($fieldName, ''); } } } } elseif (!empty($record)) { $recordModel = Inventory_Record_Model::getInstanceById($record, $moduleName); $currencyInfo = $recordModel->getCurrencyInfo(); $taxes = $recordModel->getProductTaxes(); $relatedProducts = $recordModel->getProducts(); $viewer->assign('RECORD_ID', $record); $viewer->assign('MODE', 'edit'); } elseif ($request->get('salesorder_id') || $request->get('quote_id')) { if ($request->get('salesorder_id')) { $referenceId = $request->get('salesorder_id'); } else { $referenceId = $request->get('quote_id'); } $parentRecordModel = Inventory_Record_Model::getInstanceById($referenceId); $currencyInfo = $parentRecordModel->getCurrencyInfo(); $taxes = $parentRecordModel->getProductTaxes(); $relatedProducts = $parentRecordModel->getProducts(); $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $recordModel->setRecordFieldValues($parentRecordModel); } else { $taxes = Inventory_Module_Model::getAllProductTaxes(); $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $viewer->assign('MODE', ''); //The creation of Inventory record from action and Related list of product/service detailview the product/service details will calculated by following code if ($request->get('product_id') || $sourceModule === 'Products') { if ($sourceRecord) { $productRecordModel = Products_Record_Model::getInstanceById($sourceRecord); } else { $productRecordModel = Products_Record_Model::getInstanceById($request->get('product_id')); } $relatedProducts = $productRecordModel->getDetailsForInventoryModule($recordModel); } elseif ($request->get('service_id') || $sourceModule === 'Services') { if ($sourceRecord) { $serviceRecordModel = Services_Record_Model::getInstanceById($sourceRecord); } else { $serviceRecordModel = Services_Record_Model::getInstanceById($request->get('service_id')); } $relatedProducts = $serviceRecordModel->getDetailsForInventoryModule($recordModel); } elseif ($sourceRecord && ($sourceModule === 'Accounts' || $sourceModule === 'Contacts' || $sourceModule === 'Potentials' || $sourceModule === 'Vendors' && $moduleName === 'PurchaseOrder')) { $parentRecordModel = Vtiger_Record_Model::getInstanceById($sourceRecord, $sourceModule); $recordModel->setParentRecordData($parentRecordModel); } } $moduleModel = $recordModel->getModule(); $fieldList = $moduleModel->getFields(); $requestFieldList = array_intersect_key($request->getAll(), $fieldList); //get the inventory terms and conditions $inventoryRecordModel = Inventory_Record_Model::getCleanInstance($moduleName); $termsAndConditions = $inventoryRecordModel->getInventoryTermsandConditions(); foreach ($requestFieldList as $fieldName => $fieldValue) { $fieldModel = $fieldList[$fieldName]; if ($fieldModel->isEditable()) { $recordModel->set($fieldName, $fieldModel->getDBInsertValue($fieldValue)); } } $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($recordModel, Vtiger_RecordStructure_Model::RECORD_STRUCTURE_MODE_EDIT); $viewer->assign('VIEW_MODE', "fullForm"); $isRelationOperation = $request->get('relationOperation'); //if it is relation edit $viewer->assign('IS_RELATION_OPERATION', $isRelationOperation); if ($isRelationOperation) { $viewer->assign('SOURCE_MODULE', $sourceModule); $viewer->assign('SOURCE_RECORD', $sourceRecord); } if (!empty($record) && $request->get('isDuplicate') == true) { $viewer->assign('IS_DUPLICATE', true); } else { $viewer->assign('IS_DUPLICATE', false); } $currencies = Inventory_Module_Model::getAllCurrencies(); $picklistDependencyDatasource = Vtiger_DependencyPicklist::getPicklistDependencyDatasource($moduleName); $viewer->assign('PICKIST_DEPENDENCY_DATASOURCE', Zend_Json::encode($picklistDependencyDatasource)); $mappingRelatedField = $moduleModel->getMappingRelatedField($moduleName); $viewer->assign('MAPPING_RELATED_FIELD', Zend_Json::encode($mappingRelatedField)); $viewer->assign('RECORD', $recordModel); $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance); $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure()); $viewer->assign('MODULE', $moduleName); $viewer->assign('BLOCK_LIST', $moduleModel->getBlocks()); $viewer->assign('CURRENTDATE', date('Y-n-j')); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); $viewer->assign('RELATED_PRODUCTS', $relatedProducts); $viewer->assign('TAXES', $taxes); $viewer->assign('CURRENCINFO', $currencyInfo); $viewer->assign('CURRENCIES', $currencies); $viewer->assign('TERMSANDCONDITIONS', $termsAndConditions); $productModuleModel = Vtiger_Module_Model::getInstance('Products'); $viewer->assign('PRODUCT_ACTIVE', $productModuleModel->isActive()); $serviceModuleModel = Vtiger_Module_Model::getInstance('Services'); $viewer->assign('SERVICE_ACTIVE', $serviceModuleModel->isActive()); $viewer->assign('APIADDRESS', Settings_ApiAddress_Module_Model::getInstance('Settings:ApiAddress')->getConfig(false)); $viewer->view('EditView.tpl', 'Inventory'); }
public function process(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $sourceRecord = $request->get('sourceRecord'); $sourceModule = $request->get('sourceModule'); if (!empty($record) && $request->get('isDuplicate') == true) { $recordModel = Inventory_Record_Model::getInstanceById($record, $moduleName); $currencyInfo = $recordModel->getCurrencyInfo(); $taxes = $recordModel->getProductTaxes(); $shippingTaxes = $recordModel->getShippingTaxes(); $relatedProducts = $recordModel->getProducts(); $viewer->assign('MODE', ''); //While Duplicating record, If the related record is deleted then we are removing related record info in record model $mandatoryFieldModels = $recordModel->getModule()->getMandatoryFieldModels(); foreach ($mandatoryFieldModels as $fieldModel) { if ($fieldModel->isReferenceField()) { $fieldName = $fieldModel->get('name'); if (Vtiger_Util_Helper::checkRecordExistance($recordModel->get($fieldName))) { $recordModel->set($fieldName, ''); } } } } elseif (!empty($record)) { $recordModel = Inventory_Record_Model::getInstanceById($record, $moduleName); $currencyInfo = $recordModel->getCurrencyInfo(); $taxes = $recordModel->getProductTaxes(); $shippingTaxes = $recordModel->getShippingTaxes(); $relatedProducts = $recordModel->getProducts(); $viewer->assign('RECORD_ID', $record); $viewer->assign('MODE', 'edit'); // SalesPlatform.ru begin Relation between Invoice & Consignment } elseif ($request->get('salesorder_id') || $request->get('quote_id') || $request->get('invoice_id')) { //} elseif ($request->get('salesorder_id') || $request->get('quote_id') || $request->get('invoice_id')) { // SalesPlatform.ru end if ($request->get('salesorder_id')) { $referenceId = $request->get('salesorder_id'); // SalesPlatform.ru begin Relation between Invoice & Consignment } elseif ($request->get('invoice_id')) { $referenceId = $request->get('invoice_id'); // SalesPlatform.ru end } else { $referenceId = $request->get('quote_id'); } $parentRecordModel = Inventory_Record_Model::getInstanceById($referenceId); $currencyInfo = $parentRecordModel->getCurrencyInfo(); $taxes = $parentRecordModel->getProductTaxes(); $shippingTaxes = $parentRecordModel->getShippingTaxes(); $relatedProducts = $parentRecordModel->getProducts(); $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $recordModel->setRecordFieldValues($parentRecordModel); /** EventHandler START */ $recordModel = EventHandler_Module_Model::do_filter('vtiger.filter.' . strtolower($moduleName) . '.convert', $recordModel, $parentRecordModel); /** EventHandler ENDE */ } else { $taxes = Inventory_Module_Model::getAllProductTaxes(); $shippingTaxes = Inventory_Module_Model::getAllShippingTaxes(); $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $viewer->assign('MODE', ''); //The creation of Inventory record from action and Related list of product/service detailview the product/service details will calculated by following code if ($request->get('product_id') || $sourceModule === 'Products') { if ($sourceRecord) { $productRecordModel = Products_Record_Model::getInstanceById($sourceRecord); } else { $productRecordModel = Products_Record_Model::getInstanceById($request->get('product_id')); } $relatedProducts = $productRecordModel->getDetailsForInventoryModule($recordModel); } elseif ($request->get('service_id') || $sourceModule === 'Services') { if ($sourceRecord) { $serviceRecordModel = Services_Record_Model::getInstanceById($sourceRecord); } else { $serviceRecordModel = Services_Record_Model::getInstanceById($request->get('service_id')); } $relatedProducts = $serviceRecordModel->getDetailsForInventoryModule($recordModel); } elseif ($sourceRecord && ($sourceModule === 'Accounts' || $sourceModule === 'Contacts' || $sourceModule === 'Potentials' || $sourceModule === 'Vendors' && $moduleName === 'PurchaseOrder')) { $parentRecordModel = Vtiger_Record_Model::getInstanceById($sourceRecord, $sourceModule); $recordModel->setParentRecordData($parentRecordModel); } } $moduleModel = $recordModel->getModule(); $fieldList = $moduleModel->getFields(); $requestFieldList = array_intersect_key($request->getAll(), $fieldList); //get the inventory terms and conditions $inventoryRecordModel = Inventory_Record_Model::getCleanInstance($moduleName); $termsAndConditions = $inventoryRecordModel->getInventoryTermsandConditions(); foreach ($requestFieldList as $fieldName => $fieldValue) { $fieldModel = $fieldList[$fieldName]; if ($fieldModel->isEditable()) { $recordModel->set($fieldName, $fieldModel->getDBInsertValue($fieldValue)); } } // SalesPlatform.ru begin Set default invoice status for SalesOrder if ($moduleName == "SalesOrder") { if (empty($record)) { $recordModel->set("invoicestatus", "AutoCreated"); } else { $checkbox = $recordModel->get("enable_recurring"); if ($checkbox != 1) { $recordModel->set("invoicestatus", "AutoCreated"); } } } // SalesPlatform.ru end // SalesPlatform.ru begin Unifying method for EditView preparing $recordModel = prepareEditView($recordModel, $_REQUEST, $viewer); // SalesPlatform.ru end $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($recordModel, Vtiger_RecordStructure_Model::RECORD_STRUCTURE_MODE_EDIT); // SalesPlatform.ru begin Field Validation Information $tabid = getTabid($moduleName); $validationData = getDBValidationData($recordModel->get('tab_name'), $tabid); $validationArray = split_validationdataArray($validationData); $viewer->assign("VALIDATION_DATA_FIELDNAME", $validationArray['fieldname']); $viewer->assign("VALIDATION_DATA_FIELDDATATYPE", $validationArray['datatype']); $viewer->assign("VALIDATION_DATA_FIELDLABEL", $validationArray['fieldlabel']); $viewer->assign('ID', $record); // SalesPlatform.ru end $viewer->assign('VIEW_MODE', "fullForm"); $isRelationOperation = $request->get('relationOperation'); //if it is relation edit //SalesPlatform.ru begin add relation create for Act from Invoice $isFromInvoiceCreate = $request->get('convertFromInvoice'); $viewer->assign('IS_FROM_INVOICE_CREATE', $isFromInvoiceCreate); //SalesPlatform.ru end $viewer->assign('IS_RELATION_OPERATION', $isRelationOperation); //SalesPlatform.ru begin add relation create for Act from Invoice if ($isRelationOperation || $isFromInvoiceCreate) { //if($isRelationOperation) //SalesPlatform.ru end $viewer->assign('SOURCE_MODULE', $sourceModule); $viewer->assign('SOURCE_RECORD', $sourceRecord); } if (!empty($record) && $request->get('isDuplicate') == true) { $viewer->assign('IS_DUPLICATE', true); } else { $viewer->assign('IS_DUPLICATE', false); } $currencies = Inventory_Module_Model::getAllCurrencies(); $picklistDependencyDatasource = Vtiger_DependencyPicklist::getPicklistDependencyDatasource($moduleName); $viewer->assign('PICKIST_DEPENDENCY_DATASOURCE', Zend_Json::encode($picklistDependencyDatasource)); $viewer->assign('RECORD', $recordModel); $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance); $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure()); $viewer->assign('MODULE', $moduleName); $viewer->assign('CURRENTDATE', date('Y-n-j')); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); $viewer->assign('RELATED_PRODUCTS', $relatedProducts); $viewer->assign('SHIPPING_TAXES', $shippingTaxes); $viewer->assign('TAXES', $taxes); $viewer->assign('CURRENCINFO', $currencyInfo); $viewer->assign('CURRENCIES', $currencies); $viewer->assign('TERMSANDCONDITIONS', $termsAndConditions); $productModuleModel = Vtiger_Module_Model::getInstance('Products'); $viewer->assign('PRODUCT_ACTIVE', $productModuleModel->isActive()); $serviceModuleModel = Vtiger_Module_Model::getInstance('Services'); $viewer->assign('SERVICE_ACTIVE', $serviceModuleModel->isActive()); $viewer->view('EditView.tpl', 'Inventory'); }