getObject( Array('skip_autoload' => true) ); $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); $tax_object =& $this->Application->recallObject('tax'); $std_dest_id=$this->Application->GetVar('StatesCountry'); if($items_info) { $taxdest =& $this->Application->recallObject($event->getPrefixSpecial(true), null); $parent_info=&$object->GetLinkedInfo(); $queryDel="DELETE FROM ".$object->TableName." WHERE TaxZoneId=".$parent_info['ParentId']; $this->Conn->Query($queryDel); foreach($items_info as $id => $field_values) { if($tax_object->GetDBField('Type') == 3 && (!$field_values['DestValue'] || $field_values['DestValue']=='')){ continue; } if (!$field_values['StdDestId']){ $field_values['StdDestId']=$std_dest_id; } $field_values['TaxZoneId']=$parent_info['ParentId']; if ($taxdest->Load($field_values['TaxZoneDestId'], "TaxZoneDestId")){ $taxdest->SetFieldsFromHash($field_values); $taxdest->Update($field_values['TaxZoneDestId']); }else{ $taxdest->SetFieldsFromHash($field_values); $taxdest->Create($field_values['TaxZoneDestId']); } } } } /** * Creates item from submit data * * @param kEvent $event */ function OnCreate(&$event) { $object =& $event->getObject( Array('skip_autoload' => true) ); $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); if($items_info) { foreach($items_info as $id => $field_values) { $object->SetFieldsFromHash($field_values); $this->customProcessing($event,'before'); if ( $object->Create() ) { $this->customProcessing($event,'after'); } else { $event->status = kEvent::erFAIL; $event->redirect = false; $this->Application->SetVar($event->getPrefixSpecial().'_SaveEvent','OnCreate'); $object->setID(0); } } } } /** * Apply custom processing to item * * @param kEvent $event * @param string $type * @return void * @access protected */ protected function customProcessing(&$event, $type) { switch($type) { case 'before': $object =& $event->getObject(); $events = $this->Application->GetVar('events'); if($events['tax'] == 'OnUpdate') { $object->SetDBField('TaxZoneId', $this->Application->GetVar('tax_id')); } $tax_object =& $this->Application->recallObject('tax'); if($tax_object->GetDBField('Type') == 3) { $tax_object->SetDBField('StdDestId', $this->Application->GetVar('StatesCountry')); } break; default: } } /** * * * @param kEvent $event */ function OnZoneUpdate(&$event) { $object = &$event->getObject(); $zone_object = &$this->Application->recallObject('tax'); $zone_id = (int)$this->Application->GetVar('tax_id'); $zone_type = $zone_object->GetDBField('Type'); $delete_zones_sql = 'DELETE FROM '.$object->TableName.' WHERE TaxZoneId = '.$zone_id; $this->Conn->Query($delete_zones_sql); $selected_destinations = $this->Application->GetVar('selected_destinations'); $selected_destinations_array = explode(',', $selected_destinations); $selected_destinations_array = array_unique($selected_destinations_array); foreach ($selected_destinations_array as $key => $dest_id) { if ($zone_object->GetDBField('Type') == 3){ list ($tax_dest_id, $dest_value) = explode('|', $dest_id); $dest_id = $this->Application->GetVar('CountrySelector'); } else { $dest_value = ''; } if ($dest_id > 0){ $object->SetDBField('TaxZoneId', $zone_id); $object->SetDBField('StdDestId', $dest_id); $object->SetDBField('DestValue', $dest_value); $object->Create(); } } } }