Page MenuHomeIn-Portal Phabricator

taxes_dst_event_handler.php
No OneTemporary

File Metadata

Created
Thu, Oct 29, 9:11 AM

taxes_dst_event_handler.php

<?php
class TaxDstEventHandler extends kDBEventHandler {
/**
* Saves items
*
* @param kEvent $event
*/
function OnSaveDestinations(&$event){
$object =& $event->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() )
{
if( $object->IsTempTable() ) $object->setTempID();
$this->customProcessing($event,'after');
$event->status=erSUCCESS;
}
else
{
$event->status=erFAIL;
$event->redirect=false;
$this->Application->SetVar($event->Prefix_Special.'_SaveEvent','OnCreate');
$object->setID(0);
}
}
}
}
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();
$object->setTempID();
}
}
}
}
?>

Event Timeline