Index: branches/5.2.x/units/shipping/shipping_event_handler.php =================================================================== diff -u -N -r14677 -r14702 --- branches/5.2.x/units/shipping/shipping_event_handler.php (.../shipping_event_handler.php) (revision 14677) +++ branches/5.2.x/units/shipping/shipping_event_handler.php (.../shipping_event_handler.php) (revision 14702) @@ -1,6 +1,6 @@ CallSubEvent(''); - - $zones_object =& $this->Application->recallObject('z'); $cost_object =& $this->Application->recallObject('sc'); - $object = $event->getObject(); + /* @var $cost_object kDBItem */ + $object =& $event->getObject(); + /* @var $object kDBItem */ + $operation = $this->Application->GetVar('operation'); $formatter =& $this->Application->recallObject('kFormatter'); + /* @var $formatter kFormatter */ + $modify_by = $formatter->TypeCast($this->Application->GetVar('modify_by'), array('type'=>'float')); $cost_type = $object->GetDBField('CostType'); $brackets = $this->Application->GetVar('br'); $zones = $this->Application->GetVar('z'); $conditions = Array(); + if( is_array($zones) ) { $conditions['zones'] = 'ZoneID IN ('.implode( ',', array_keys($zones) ).')'; } + if( is_array($brackets) ) { $conditions['brackets'] = 'BracketId IN ('.implode( ',', array_keys($brackets) ).')'; } + $conditions = implode(' OR ', $conditions); - if(!$conditions) - { + if ( !$conditions ) { $this->finalizePopup($event); - return false; + return ; } $sql = 'SELECT ShippingCostId FROM '.$cost_object->TableName.' WHERE '.$conditions; $res = $this->Conn->GetCol($sql); - switch($cost_type) - { + switch ( $cost_type ) { case 1: - $affected_fields = Array(0 => 'Flat'); + $affected_fields = Array (0 => 'Flat'); break; + case 2: - $affected_fields = Array(0 => 'PerUnit'); + $affected_fields = Array (0 => 'PerUnit'); break; + default: - $affected_fields = Array(0 => 'PerUnit', 1 => 'Flat'); + $affected_fields = Array (0 => 'PerUnit', 1 => 'Flat'); } - foreach($affected_fields as $field) - { - if($operation == '/' && $modify_by == 0) break; - $sql = 'UPDATE '.$cost_object->TableName.' - SET '.$field.'='.$field.$operation.$modify_by.' - WHERE ShippingCostId IN ('.implode(',', $res).') - AND NOT('.$field.' IS NULL) - AND '.$field.$operation.$modify_by.'>=0'; + + foreach ($affected_fields as $field) { + if ( $operation == '/' && $modify_by == 0 ) { + break; + } + + $sql = 'UPDATE ' . $cost_object->TableName . ' + SET ' . $field . '=' . $field . $operation . $modify_by . ' + WHERE ShippingCostId IN (' . implode(',', $res) . ') + AND NOT(' . $field . ' IS NULL) + AND ' . $field . $operation . $modify_by . '>=0'; $this->Conn->Query($sql); }