get('regionid'); } public function getName() { return $this->get('name'); } public function getEditRegionUrl() { return '?module=Vtiger&parent=Settings&view=TaxAjax&mode=editTaxRegion&taxRegionId='.$this->getId(); } public function getDeleteRegionUrl() { return '?module=Vtiger&parent=Settings&action=TaxAjax&mode=deleteTaxRegion&taxRegionId='.$this->getId(); } /** * Function to save the region info * @return */ public function save() { $db = PearDatabase::getInstance(); $taxRegionId = $this->getId(); $taxRagionName = $this->getName(); if(!empty($taxRegionId)) { $db->pquery('UPDATE '.self::REGIONS_TABLE_NAME.' SET name=? WHERE regionid=?', array($taxRagionName, $taxRegionId)); } else { $db->pquery('INSERT INTO '.self::REGIONS_TABLE_NAME.'(name) VALUES(?)', array($taxRagionName)); $result = $db->pquery('SELECT regionid FROM '.self::REGIONS_TABLE_NAME.' WHERE name=?', array($taxRagionName)); $this->set('regionid', $db->query_result($result, 0, 'regionid')); } Vtiger_Cache::flushPicklistCache('regionid'); return $this->getId(); } /** * Function to get all tax regions * @return list of Inventory_TaxRegion_Model */ public static function getAllTaxRegions() { $db = PearDatabase::getInstance(); $taxRegions = array(); $result = $db->pquery('SELECT * FROM '.self::REGIONS_TABLE_NAME, array()); while($rowData = $db->fetch_array($result)) { $taxRegions[$rowData['regionid']] = new self($rowData); } return $taxRegions; } /** * Function to check duplicate name * @param $taxRegionName * @param $taxRegionId * @return true/false */ public static function checkDuplicateTaxRegion($taxRegionName, $taxRegionId = false) { $db = PearDatabase::getInstance(); $query = 'SELECT 1 FROM '.self::REGIONS_TABLE_NAME.' WHERE name=?'; $params = array($taxRegionName); if ($taxRegionId) { $query .= ' AND regionid != ?'; $params[] = $taxRegionId; } $result = $db->pquery($query, $params); return ($db->num_rows($result) > 0) ? true : false; } /** * Function to get region model * @param $taxRegionId * @return */ public static function getRegionModel($taxRegionId = false) { if ($taxRegionId) { $db = PearDatabase::getInstance(); $result = $db->pquery('SELECT * FROM '.self::REGIONS_TABLE_NAME.' WHERE regionid=?', array($taxRegionId)); while($rowData = $db->fetch_array($result)) { $regionModel = new self($rowData); } } else { $regionModel = new self(); } return $regionModel; } /** * Function to delete selected regions * @param $taxRegionIdsList * @return True/False */ public static function deleteRegions($taxRegionIdsList = array()) { if ($taxRegionIdsList) { if (!is_array($taxRegionIdsList)) { $taxRegionIdsList = array($taxRegionIdsList); } $db = PearDatabase::getInstance(); $db->pquery('DELETE FROM '.self::REGIONS_TABLE_NAME.' WHERE regionid IN ('.generateQuestionMarks($taxRegionIdsList).')', $taxRegionIdsList); $taxRecordModelsList = array(); foreach ($taxRegionIdsList as $regionId) { $taxRecordModelsList = array_merge($taxRecordModelsList, Inventory_TaxRecord_Model::getInstancesByRegionId($regionId)); } foreach ($taxRegionIdsList as $regionId) { $taxRecordModelsList = array_merge($taxRecordModelsList, Inventory_TaxRecord_Model::getInstancesByRegionId($regionId, Inventory_TaxRecord_Model::SHIPPING_AND_HANDLING_TAX)); } foreach ($taxRecordModelsList as $taxRecordModel) { $taxRecordModel->set('isChargeModel', false); $taxRecordModel->set('compoundon', $taxRecordModel->getTaxesOnCompound()); } $chargeModelsList = array(); foreach ($taxRegionIdsList as $regionId) { $chargeModelsList = array_merge($chargeModelsList, Inventory_Charges_Model::getInstancesByRegionId($regionId)); } foreach ($chargeModelsList as $chargeModel) { $chargeModel->set('isChargeModel', true); $chargeModel->set('taxes', Zend_Json::decode(html_entity_decode($chargeModel->get('taxes')))); } $recordModelsList = array_merge($taxRecordModelsList, $chargeModelsList); foreach ($recordModelsList as $recordModel) { $isChargeModel = $recordModel->get('isChargeModel'); if ($isChargeModel) { $recordRegions = $recordModel->getSelectedRegions(); } else { $recordRegions = $recordModel->getRegionTaxes(); } for ($i=0; $i $id) { if ($regionId == $id) { unset($regionsList[$key]); } if ($regionsList) { $recordRegions[$i]['list'] = $regionsList; } else { unset($recordRegions[$i]); } } } } if (!$recordRegions) { $recordRegions = array(); } $recordModel->set('regions', array_values($recordRegions)); try { $recordModel->save(); } catch (Exception $e) { return $e->getMessage(); } } } return true; } }