'customer-acceptance', 'DELIVERY ACTION TYPE: Validate Questionnaire' => 'validate-questionnaire', 'DELIVERY ACTION TYPE: Manual' => 'manual', 'DELIVERY ACTION TYPE: Schedule meeting' => 'schedule-meeting' ); public static function get_delivery_action_types() { return array_keys(self::$delivery_action_types); } public static function get_delivery_action_type_prefix() { return self::$delivery_action_form_title_prefix; } /** * Returns label for Wiass Delivery Process Step * @return string */ public function get_label() { return esc_html__( 'Delivery Step', 'wiaas' ); } /** * Returns settings for wiaas delivery process step * @return array */ public function get_settings() { $settings_api = $this->get_common_settings_api(); $forms = $this->get_action_forms_choices(); $form_choices[] = array( 'label' => esc_html__( 'Select a Form', 'wiaas' ), 'value' => '' ); foreach ( $forms as $form ) { $form_choices[] = array( 'label' => $form['title'], 'value' => $form['id'] ); } $settings = array( 'title' => esc_html__( 'Wiaas Delivery Step', 'wiaas' ), 'fields' => array( $settings_api->get_setting_instructions(), array ( 'name' => 'is_visible_to_customer', 'label' => __( 'Visible to customer', 'wiaas' ), 'type' => 'checkbox', 'choices' => array( array( 'label' => __( 'Show to customer', 'wiaas' ), 'name' => 'is_visible_to_customer', 'default_value' => true, ), ), 'tooltip' => __( 'Determines if this step will be shown to customer.', 'wiaas' ), ), array( 'name' => 'target_form_id', 'label' => esc_html__( 'Action', 'wiaas' ), 'type' => 'select', 'onchange' => "jQuery(this).closest('form').submit();", 'choices' => $form_choices, ) ), ); return $settings; } public function update_step_status($status = false) { if ($status === 'cancelled') { $status = 'complete'; } parent::update_step_status($status); } /** * Process Wiass Delivery Process Step * * * @return bool */ function process() { $form = $this->get_form(); $entry = $this->get_entry(); $target_form = GFAPI::get_form( $this->target_form_id ); # if target form is not set we are done if (!$target_form) { // return false since we wait for admin to process the step return false; } $delivery_settings = rgar($target_form, 'wiaas_delivery_process'); if (! $delivery_settings['automatic_action_entries_enabled']) { return false; } $action_entries_ids = gform_get_meta($this->get_entry_id(), 'wiaas_delivery_step_' . $this->get_id() . '_action_entry_ids'); // if action entries present this step is reprocessing and we should not be creating new action entries if (! empty($action_entries_ids)) { // return false since we wait for admin to process the step return false; } // create new entries for step action forms $order_field = GFCommon::get_fields_by_type($form, 'wiaas_order')[0]; $order_id = empty($order_field) ? null : absint($entry[$order_field->id]); // if process has not order we cannot create actions if (empty($order_id)) { // return false since we wait for admin to process the step return false; } $delivery_settings = rgar($target_form, 'wiaas_delivery_process'); switch ($delivery_settings['automatic_action_entries_type']) { case 'single': $action_entries_ids = $this->_create_single_action_entry($target_form, $order_id); break; case 'bundle': $action_entries_ids = $this->_create_per_bundle_action_entries($target_form, $order_id); } gform_update_meta($this->get_entry_id(), 'wiaas_delivery_step_' . $this->get_id() . '_action_entry_ids', $action_entries_ids); $note = $this->get_name() . ': ' . esc_html__( 'started.', 'wiaas' ); $this->add_note( $note ); // return false since we wait for admin to process the step return false; } /** * Evaluates current step status based on target form entry status * * If target form entry has associated workflow current step will complete its status * only when target form entry workflow is completed * @return string */ public function status_evaluation() { // return 'pending'; } public function workflow_detail_box($form, $args) { parent::workflow_detail_box($form, $args); $target_form = GFAPI::get_form( $this->target_form_id ); if (empty( $target_form)) { return; } ?>