Index: branches/5.2.x/units/orders/orders_event_handler.php
===================================================================
--- branches/5.2.x/units/orders/orders_event_handler.php
+++ branches/5.2.x/units/orders/orders_event_handler.php
@@ -1636,21 +1636,29 @@
 	{
 		parent::OnBeforeClone($event);
 
+		/** @var OrdersItem $object */
 		$object = $event->getObject();
-		/* @var $object OrdersItem */
 
 		if ( substr($event->Special, 0, 9) == 'recurring' ) {
 			$object->SetDBField('SubNumber', $object->getNextSubNumber());
-			$object->SetDBField('OriginalAmount', 0); // needed in this case ?
 		}
 		else {
 			$this->setNextOrderNumber($event);
-			$object->SetDBField('OriginalAmount', 0);
 		}
-		$object->SetDBField('OrderDate', adodb_mktime());
+
+		$reset_fields = array(
+			'OnHold', 'OrderDate', 'ShippingCost', 'ShippingTracking', 'ShippingDate', 'ReturnTotal',
+			'OriginalAmount', 'ShippingInfo', 'GWResult1', 'GWResult2', 'AffiliateCommission',
+			'ProcessingFee', 'InsuranceFee',
+		);
+
+		foreach ( $reset_fields as $reset_field ) {
+			$field_options = $object->GetFieldOptions($reset_field);
+			$object->SetDBField($reset_field, $field_options['default']);
+		}
+
+		$object->SetDBField('OrderIP', $this->Application->getClientIp());
 		$object->UpdateFormattersSubFields();
-		$object->SetDBField('GWResult1', '');
-		$object->SetDBField('GWResult2', '');
 	}
 
 	function OnReserveItems($event)