@@ -328,17 +328,20 @@ protected static function generate_variable_product() {
328328 $ possible_attributes = array_reverse ( wc_array_cartesian ( $ variation_attributes ) );
329329 foreach ( $ possible_attributes as $ possible_attribute ) {
330330 $ price = self ::$ faker ->randomFloat ( 2 , 1 , 1000 );
331- $ is_on_sale = self ::$ faker ->boolean ( 30 );
331+ $ is_on_sale = self ::$ faker ->boolean ( 35 );
332+ $ has_sale_schedule = $ is_on_sale && self ::$ faker ->boolean ( 40 ); // ~40% of on-sale variations have a schedule.
332333 $ sale_price = $ is_on_sale ? self ::$ faker ->randomFloat ( 2 , 0 , $ price ) : '' ;
334+ $ date_on_sale_from = $ has_sale_schedule ? self ::$ faker ->dateTimeBetween ( '-3 days ' , '+3 days ' )->format ( DATE_ATOM ) : '' ;
335+ $ date_on_sale_to = $ has_sale_schedule ? self ::$ faker ->dateTimeBetween ( '+4 days ' , '+4 months ' )->format ( DATE_ATOM ) : '' ;
333336 $ is_virtual = self ::$ faker ->boolean ( 20 );
334337 $ variation = new \WC_Product_Variation ();
335338 $ variation ->set_props ( array (
336339 'parent_id ' => $ product ->get_id (),
337340 'attributes ' => $ possible_attribute ,
338341 'regular_price ' => $ price ,
339342 'sale_price ' => $ sale_price ,
340- 'date_on_sale_from ' => '' ,
341- 'date_on_sale_to ' => self :: $ faker -> iso8601 ( date ( ' c ' , strtotime ( ' +1 month ' ) ) ) ,
343+ 'date_on_sale_from ' => $ date_on_sale_from ,
344+ 'date_on_sale_to ' => $ date_on_sale_to ,
342345 'tax_status ' => self ::$ faker ->randomElement ( [ 'taxable ' , 'shipping ' , 'none ' ] ),
343346 'tax_class ' => '' ,
344347 'manage_stock ' => $ will_manage_stock ,
@@ -376,8 +379,11 @@ protected static function generate_simple_product() {
376379 $ will_manage_stock = self ::$ faker ->boolean ();
377380 $ is_virtual = self ::$ faker ->boolean ();
378381 $ price = self ::$ faker ->randomFloat ( 2 , 1 , 1000 );
379- $ is_on_sale = self ::$ faker ->boolean ( 30 );
382+ $ is_on_sale = self ::$ faker ->boolean ( 35 );
383+ $ has_sale_schedule = $ is_on_sale && self ::$ faker ->boolean ( 40 ); // ~40% scheduled, rest indefinite.
380384 $ sale_price = $ is_on_sale ? self ::$ faker ->randomFloat ( 2 , 0 , $ price ) : '' ;
385+ $ date_on_sale_from = $ has_sale_schedule ? self ::$ faker ->dateTimeBetween ( '-3 days ' , '+3 days ' )->format ( DATE_ATOM ) : '' ;
386+ $ date_on_sale_to = $ has_sale_schedule ? self ::$ faker ->dateTimeBetween ( '+4 days ' , '+4 months ' )->format ( DATE_ATOM ) : '' ;
381387 $ product = new \WC_Product ();
382388
383389 $ image_id = self ::get_image ();
@@ -393,8 +399,8 @@ protected static function generate_simple_product() {
393399 'global_unique_id ' => self ::$ faker ->randomElement ( [ self ::$ faker ->ean13 , self ::$ faker ->isbn10 ] ),
394400 'regular_price ' => $ price ,
395401 'sale_price ' => $ sale_price ,
396- 'date_on_sale_from ' => '' ,
397- 'date_on_sale_to ' => self :: $ faker -> iso8601 ( date ( ' c ' , strtotime ( ' +1 month ' ) ) ) ,
402+ 'date_on_sale_from ' => $ date_on_sale_from ,
403+ 'date_on_sale_to ' => $ date_on_sale_to ,
398404 'total_sales ' => self ::$ faker ->numberBetween ( 0 , 10000 ),
399405 'tax_status ' => self ::$ faker ->randomElement ( [ 'taxable ' , 'shipping ' , 'none ' ] ),
400406 'tax_class ' => '' ,
0 commit comments