protected function validateCombinationProduct()
    {
        $combinations = $this->getSubmitted('combination');

        if (empty($combinations)) {
            return null;
        }

        $index = 1;

        foreach ($combinations as &$combination) {

            $combination['status'] = !empty($combination['status']);

            $this->validateCombinationOptionsProduct($index, $combination);

            if ($this->isError("combination.$index")) {
                continue;
            }

            if (empty($combination['fields'])) {
                unset($combinations[$index]);
                continue;
            }

            $combination_id = $this->sku->getCombinationId($combination['fields']);

            if (isset($this->processed_combinations[$combination_id])) {
                $error = $this->translation->text('Combination already exists');
                $this->setError("combination.$index.exists", $error);
            }

            $this->validateCombinationSkuProduct($index, $combination);
            $this->validateCombinationPriceProduct($index, $combination);
            $this->validateCombinationStockProduct($index, $combination);

            foreach ($combination['fields'] as $field_value_id) {
                if (!isset($this->stock_amount[$field_value_id])) {
                    $this->stock_amount[$field_value_id] = (int) $combination['stock'];
                }
            }

            $this->processed_combinations[$combination_id] = true;
            $index++;
        }

        if ($this->isError()) {
            return false;
        }

        $this->setSubmitted('combination', $combinations);
        $this->setSubmitted('stock', array_sum($this->stock_amount));
        return true;
    }
protected function validateCombinationProduct()
    {
        $combinations = $this->getSubmitted('combination');

        if (empty($combinations)) {
            return null;
        }

        $index = 1;

        foreach ($combinations as &$combination) {

            $combination['status'] = !empty($combination['status']);

            $this->validateCombinationOptionsProduct($index, $combination);

            if ($this->isError("combination.$index")) {
                continue;
            }

            if (empty($combination['fields'])) {
                unset($combinations[$index]);
                continue;
            }

            $combination_id = $this->sku->getCombinationId($combination['fields']);

            if (isset($this->processed_combinations[$combination_id])) {
                $error = $this->translation->text('Combination already exists');
                $this->setError("combination.$index.exists", $error);
            }

            $this->validateCombinationSkuProduct($index, $combination);
            $this->validateCombinationPriceProduct($index, $combination);
            $this->validateCombinationStockProduct($index, $combination);

            foreach ($combination['fields'] as $field_value_id) {
                if (!isset($this->stock_amount[$field_value_id])) {
                    $this->stock_amount[$field_value_id] = (int) $combination['stock'];
                }
            }

            $this->processed_combinations[$combination_id] = true;
            $index++;
        }

        if ($this->isError()) {
            return false;
        }

        $this->setSubmitted('combination', $combinations);
        $this->setSubmitted('stock', array_sum($this->stock_amount));
        return true;
    }
protected function validateCombinationProduct ( ) { $ combinations = $ this -> getSubmitted ( 'combination' ) ; if ( empty ( $ combinations ) ) { return null ; } $ index = 1 ; foreach ( $ combinations as & $ combination ) { $ combination [ 'status' ] = ! empty ( $ combination [ 'status' ] ) ; $ this -> validateCombinationOptionsProduct ( $ index , $ combination ) ; if ( $ this -> isError ( "combination.$index" ) ) { continue ; } if ( empty ( $ combination [ 'fields' ] ) ) { unset ( $ combinations [ $ index ] ) ; continue ; } $ combination_id = $ this -> sku -> getCombinationId ( $ combination [ 'fields' ] ) ; if ( isset ( $ this -> processed_combinations [ $ combination_id ] ) ) { $ error = $ this -> translation -> text ( 'Combination already exists' ) ; $ this -> setError ( "combination.$index.exists" , $ error ) ; } $ this -> validateCombinationSkuProduct ( $ index , $ combination ) ; $ this -> validateCombinationPriceProduct ( $ index , $ combination ) ; $ this -> validateCombinationStockProduct ( $ index , $ combination ) ; foreach ( $ combination [ 'fields' ] as $ field_value_id ) { if ( ! isset ( $ this -> stock_amount [ $ field_value_id ] ) ) { $ this -> stock_amount [ $ field_value_id ] = ( int ) $ combination [ 'stock' ] ; } } $ this -> processed_combinations [ $ combination_id ] = true ; $ index ++ ; } if ( $ this -> isError ( ) ) { return false ; } $ this -> setSubmitted ( 'combination' , $ combinations ) ; $ this -> setSubmitted ( 'stock' , array_sum ( $ this -> stock_amount ) ) ; return true ; }
Validates an array of product combinations
@return boolean|null
Validates an array of product combinations