Skip to content

Commit 2858ffd

Browse files
authored
generate only future dates and only if is_on_sale is true (#173)
* generate only future dates and only if is_on_sale is true * update date_on_sale_from / date_on_sale_to be more dynamic
1 parent a314f05 commit 2858ffd

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

includes/Generator/Product.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)