Index: branches/5.2.x/units/orders/orders_event_handler.php =================================================================== diff -u -N -r14808 -r14812 --- branches/5.2.x/units/orders/orders_event_handler.php (.../orders_event_handler.php) (revision 14808) +++ branches/5.2.x/units/orders/orders_event_handler.php (.../orders_event_handler.php) (revision 14812) @@ -1,6 +1,6 @@ ORDER_STATUS_TOSHIP, - 'OnOrderApprove' => ORDER_STATUS_TOSHIP, - 'OnMassOrderDeny' => ORDER_STATUS_DENIED, - 'OnOrderDeny' => ORDER_STATUS_DENIED, - 'OnMassOrderArchive' => ORDER_STATUS_ARCHIVED, - 'OnOrderArchive' => ORDER_STATUS_ARCHIVED, - 'OnMassOrderShip' => ORDER_STATUS_PROCESSED, - 'OnOrderShip' => ORDER_STATUS_PROCESSED, - 'OnMassOrderProcess' => ORDER_STATUS_TOSHIP, - 'OnOrderProcess' => ORDER_STATUS_TOSHIP, + 'OnMassOrderApprove' => ORDER_STATUS_TOSHIP, + 'OnOrderApprove' => ORDER_STATUS_TOSHIP, + 'OnMassOrderDeny' => ORDER_STATUS_DENIED, + 'OnOrderDeny' => ORDER_STATUS_DENIED, + 'OnMassOrderArchive' => ORDER_STATUS_ARCHIVED, + 'OnOrderArchive' => ORDER_STATUS_ARCHIVED, + 'OnMassOrderShip' => ORDER_STATUS_PROCESSED, + 'OnOrderShip' => ORDER_STATUS_PROCESSED, + 'OnMassOrderProcess' => ORDER_STATUS_TOSHIP, + 'OnOrderProcess' => ORDER_STATUS_TOSHIP, ); $order_items =& $this->Application->recallObject('orditems.-inv','orditems_List',Array('skip_counting'=>true,'per_page'=>-1) ); @@ -1897,6 +1897,9 @@ return ; } + // save original order status + $original_order_status = $object->GetDBField('Status'); + // preparing new status, but not setting it yet $object->SetDBField('Status', $event_status_map[$event->Name]); @@ -1982,16 +1985,19 @@ } $this->raiseProductEvent('Deny', $product_item['ProductId'], $product_item); } - $email_event_user =& $this->Application->EmailEventUser('ORDER.DENY', $object->GetDBField('PortalUserId'), $email_params); - if ($event->Name == 'OnMassOrderDeny' || $event->Name == 'OnOrderDeny') { + if ( ($original_order_status != ORDER_STATUS_INCOMPLETE ) && ($event->Name == 'OnMassOrderDeny' || $event->Name == 'OnOrderDeny') ) { + $this->Application->EmailEventUser('ORDER.DENY', $object->GetDBField('PortalUserId'), $email_params); + // inform payment gateway that order was declined $gw_data = $object->getGatewayData(); - $this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] ); - $gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] ); + if ( $gw_data ) { + $this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH . '/' . $gw_data['ClassFile'] ); + $gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] ); - $gateway_object->OrderDeclined($object->GetFieldValues(), $gw_data['gw_params']); + $gateway_object->OrderDeclined($object->GetFieldValues(), $gw_data['gw_params']); + } } // !!! LOOK HERE !!!