diff --git a/includes/Generator/Order.php b/includes/Generator/Order.php index b8fbb64..206b66b 100644 --- a/includes/Generator/Order.php +++ b/includes/Generator/Order.php @@ -100,20 +100,22 @@ public static function generate( $save = true, $assoc_args = array() ) { OrderAttribution::add_order_attribution_meta( $order, $assoc_args ); } - // Set paid and completed dates based on order status. - if ( 'completed' === $status || 'processing' === $status ) { - // Add random 0 to 36 hours to creation date. - $date_paid = date( 'Y-m-d H:i:s', strtotime( $date ) + ( wp_rand( 0, 36 ) * HOUR_IN_SECONDS ) ); - $order->set_date_paid( $date_paid ); - if ( 'completed' === $status ) { - // Add random 0 to 36 hours to paid date. - $date_completed = date( 'Y-m-d H:i:s', strtotime( $date_paid ) + ( wp_rand( 0, 36 ) * HOUR_IN_SECONDS ) ); - $order->set_date_completed( $date_completed ); - } - } - if ( $save ) { $order->save(); + + // Set paid and completed dates AFTER initial save to prevent WooCommerce from overriding them. + // This must be done after save so the status transition doesn't reset the dates to current time. + if ( 'completed' === $status || 'processing' === $status ) { + // Add random 0 to 36 hours to creation date. + $date_paid = date( 'Y-m-d H:i:s', strtotime( $date ) + ( wp_rand( 0, 36 ) * HOUR_IN_SECONDS ) ); + $order->set_date_paid( $date_paid ); + if ( 'completed' === $status ) { + // Add random 0 to 36 hours to paid date. + $date_completed = date( 'Y-m-d H:i:s', strtotime( $date_paid ) + ( wp_rand( 0, 36 ) * HOUR_IN_SECONDS ) ); + $order->set_date_completed( $date_completed ); + } + $order->save(); + } } /**