Index: admin_templates/products/products_pricing.tpl =================================================================== --- admin_templates/products/products_pricing.tpl (revision 14094) +++ admin_templates/products/products_pricing.tpl (working copy) @@ -122,7 +122,16 @@ } a_toolbar.AddButton( new ToolBarButton('in-commerce:arrange', '', arrange_brackets) ); - + function delete_brackets() + { + if (confirm('')) { + set_hidden_field('group_id', get_hidden_field('current_group_id')); + set_hidden_field('item_prefix', $BracketManager.ActivePrefix); + $BracketManager.submit_event('pr.tang', 'OnDeleteBrackets', 'in-commerce/products/products_pricing_grid', true); + } + } + a_toolbar.AddButton( new ToolBarButton('delete', '::', delete_brackets) ); + function edit(){ } a_toolbar.Render(); @@ -140,6 +149,9 @@ a_toolbar.DisableButton('prev'); + + a_toolbar.DisableButton('delete'); + Index: admin_templates/products/products_pricing_grid.tpl =================================================================== --- admin_templates/products/products_pricing_grid.tpl (revision 14094) +++ admin_templates/products/products_pricing_grid.tpl (working copy) @@ -99,5 +99,13 @@ + + \ No newline at end of file Index: install/english.lang =================================================================== --- install/english.lang (revision 14094) +++ install/english.lang (working copy) @@ -532,6 +532,7 @@ bW9udGg= UGF0YWNh T3VndWl5YQ== + UGxlYXNlIGNvbmZpcm0geW91IHdhbnQgdG8gZGVsZXRlIHRoZSBQcmljaW5nIGZvciB0aGlzIFVzZXIgR3JvdXAuIENsaWNrIE9LIHRvIHByb2NlZWQgd2l0aCBkZWxldGlvbiwgb3IgY2xpY2sgQ2FuY2VsIHRvIGNhbmNlbCBpdC4= TWFsdGVzZSBMaXJh TWF1cml0aXVzIFJ1cGVl UnVmaXlhYQ== Index: units/pricing/pricing_event_handler.php =================================================================== --- units/pricing/pricing_event_handler.php (revision 14094) +++ units/pricing/pricing_event_handler.php (working copy) @@ -24,9 +24,10 @@ { parent::mapPermissions(); $permissions = Array( - 'OnMoreBrackets' => Array('subitem' => 'add|edit'), - 'OnInfinity' => Array('subitem' => 'add|edit'), - 'OnArrange' => Array('subitem' => 'add|edit'), + 'OnMoreBrackets' => Array('subitem' => 'add|edit'), + 'OnInfinity' => Array('subitem' => 'add|edit'), + 'OnArrange' => Array('subitem' => 'add|edit'), + 'OnDeleteBrackets' => Array('subitem' => 'add|edit'), ); $this->permMapping = array_merge($this->permMapping, $permissions); } @@ -34,9 +35,12 @@ function mapEvents() { parent::mapEvents(); // ensure auto-adding of approve/decine and so on events - $brackets_events = Array( 'OnMoreBrackets' => 'PricingBracketsAction', - 'OnArrange' => 'PricingBracketsAction', - 'OnInfinity' => 'PricingBracketsAction'); + $brackets_events = Array( + 'OnMoreBrackets' => 'PricingBracketsAction', + 'OnArrange' => 'PricingBracketsAction', + 'OnInfinity' => 'PricingBracketsAction', + 'OnDeleteBrackets' => 'PricingBracketsAction', + ); $this->eventMethods = array_merge($this->eventMethods, $brackets_events); } @@ -98,8 +102,6 @@ $temp[$i]['Negotiated'] = '0'; $temp[$i]['IsPrimary'] = '0'; $temp[$i]['GroupId'] = $group_id; - - } $this->Application->SetVar($event->getPrefixSpecial(true), $temp); @@ -150,50 +152,56 @@ $this->Application->SetVar($event->getPrefixSpecial(true), $temp); $event->CallSubEvent('OnPreSaveBrackets'); break; + + case 'OnDeleteBrackets': + if ($group_id) { + $temp = ''; // delete all pricings from "pr_tang" var + + $sql = 'DELETE FROM ' . $bracket->TableName . ' + WHERE ProductId = ' . $this->Application->GetVar('p_id') . ' AND GroupId = ' . $group_id; + $this->Conn->Query($sql); + } + break; default: } - $this->Application->SetVar($event->getPrefixSpecial(true), $temp); + $this->Application->SetVar($event->getPrefixSpecial(true), $temp); // store pr_tang var } function OnPreSaveBrackets(&$event) { - if( $this->Application->GetVar('pr_tang')) - { + if( $this->Application->GetVar('pr_tang') ) { + $object =& $event->GetObject(); + /* @var $object kDBItem */ + $product_id = $this->Application->GetVar('p_id'); $group_id = $this->Application->getVar('group_id'); - if($group_id>0){ - $where_group=' AND GroupId = '.$group_id.' '; - } - $stored_ids = $this->Conn->GetCol("SELECT PriceId FROM ".$object->TableName." WHERE ProductId=".$this->Application->GetVar("p_id").' '.$where_group); - - $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true)); - - + $sql = 'SELECT PriceId FROM ' . $object->TableName . ' + WHERE ProductId = ' . $product_id . ' ' . ($group_id? 'AND GroupId = ' . $group_id : ''); + $stored_ids = $this->Conn->GetCol($sql); + + $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); // get pr_tang var uasort($items_info, 'pr_bracket_comp'); + + foreach ($items_info as $item_id => $values) { - - foreach ($items_info as $item_id=>$values) - { - if (in_array($item_id, $stored_ids)) { //if it's already exist $object->SetDefaultValues(); $object->Load($item_id); $object->SetFieldsFromHash($values); + if (!$object->Validate()) { unset($stored_ids[array_search($item_id, $stored_ids)]); $event->redirect = false; continue; } - if( $object->Update($item_id) ) - { + if( $object->Update($item_id) ) { $event->status=erSUCCESS; } - else - { + else { $event->status=erFAIL; $event->redirect=false; break; @@ -203,18 +211,17 @@ else { $object->SetDefaultValues(); $object->SetFieldsFromHash($values); - $object->SetDBField('ProductId', $this->Application->GetVar("p_id")); + $object->SetDBField('ProductId', $product_id); - if( $object->Create() ) - { + if( $object->Create() ) { $event->status=erSUCCESS; } } } // delete - foreach ($stored_ids as $stored_id){ - $this->Conn->Query("DELETE FROM ".$object->TableName." WHERE PriceId=".$stored_id); + foreach ($stored_ids as $stored_id) { + $this->Conn->Query('DELETE FROM ' . $object->TableName . ' WHERE PriceId = ' . $stored_id); } }