handle order actions
This commit is contained in:
@@ -19,3 +19,46 @@
|
||||
.wc-order-preview footer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.gravityflow-discussion-item{
|
||||
margin-bottom:10px;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
.gravityflow-dicussion-item-name {
|
||||
color:black;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.gravityflow-dicussion-item-date {
|
||||
color: #9b9b9b;
|
||||
margin-left:8px;
|
||||
font-size:90%;
|
||||
}
|
||||
|
||||
.rtl .gravityflow-dicussion-item-date {
|
||||
margin-right:8px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.gravityflow-dicussion-item-toggle-display {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.rtl .gravityflow-dicussion-item-toggle-display {
|
||||
float: left;
|
||||
}
|
||||
|
||||
@media print {
|
||||
.gravityflow-dicussion-item-hidden {
|
||||
display:block !important;
|
||||
}
|
||||
|
||||
.gravityflow-dicussion-item-toggle-display {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.gravityflow-dicussion-item-value {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
<?php
|
||||
|
||||
class Wiaas_Admin_Delivery_Process {
|
||||
|
||||
public static function init() {
|
||||
|
||||
add_action( 'gravityflow_entry_detail', array( __CLASS__, 'display_process_steps_details' ), 10, 3 );
|
||||
|
||||
add_action( 'gravityflow_title_entry_detail', array( __CLASS__, 'process_title' ), 10, 3 );
|
||||
}
|
||||
|
||||
|
||||
public static function display_process_steps_details($form, $entry, $current_step) {
|
||||
|
||||
$delivery_settings = rgar($form, 'wiaas_delivery_process');
|
||||
|
||||
if ($delivery_settings['delivery_form_type'] === 'action') {
|
||||
return;
|
||||
}
|
||||
|
||||
// get process order ID
|
||||
$order_id = absint($entry['wiaas_delivery_order_id']);
|
||||
|
||||
if (empty($order_id)) {
|
||||
|
||||
$order_field = GFCommon::get_fields_by_type($form, array( 'wiaas_order') )[0];
|
||||
|
||||
if ( ! empty($order_field)) {
|
||||
|
||||
$order_id = $entry[$order_field->id];
|
||||
}
|
||||
}
|
||||
|
||||
// display process steps
|
||||
|
||||
$workflow_api = new Gravity_Flow_API($form['id']);
|
||||
|
||||
$steps = $workflow_api->get_steps();
|
||||
|
||||
foreach ($steps as $index => $step) {
|
||||
|
||||
if (! $step->is_active()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$is_step_running = $step->get_status() === 'pending';
|
||||
$is_step_completed = $step->get_status() === 'complete';
|
||||
$is_current_step = $step->get_id() === $current_step->get_id();
|
||||
|
||||
//$disabled_style = $is_step_running ? '' : 'opacity: 0.5';
|
||||
$completed_style = $is_step_completed ? 'border-left: 4px solid #46b450;' : '';
|
||||
|
||||
?>
|
||||
|
||||
<div class="postbox" style="<?php esc_attr_e($completed_style, 'wiaas') ?>">
|
||||
|
||||
<h3>
|
||||
<span><?php esc_html_e($step->get_name(), 'wiaas') ?></span>
|
||||
</h3>
|
||||
|
||||
<?php
|
||||
if ($is_current_step) {
|
||||
Gravity_Flow_Entry_Detail::maybe_show_instructions(true, true, $current_step, $form, $entry);
|
||||
|
||||
$action_form = GFAPI::get_form( $step->target_form_id );
|
||||
|
||||
if (empty($action_form)) {
|
||||
|
||||
echo '</div>';
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$action_delivery_settings = rgar($action_form, 'wiaas_delivery_process');
|
||||
|
||||
?>
|
||||
|
||||
<div class="submitbox" style="padding: 10px;">
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<?php
|
||||
|
||||
if (! $action_delivery_settings['automatic_action_entries_enabled']) {
|
||||
|
||||
$form_url = admin_url( 'admin-ajax.php' ) .
|
||||
'?action=wiaas_delivery_get_form&order_id=' . $order_id .
|
||||
'&form_id=' . $action_form['id'] .
|
||||
'&wiaas_delivery_process_id=' . $entry['id'];
|
||||
$form_url .= '&is_admin=1';
|
||||
|
||||
$form_link = sprintf(
|
||||
'<a href="%s&TB_iframe=true&width=600&height=550" class="button button-primary thickbox">' .
|
||||
'<i class="fa fa-plus"></i> ' . $action_form['title'] . '</a>',
|
||||
$form_url );
|
||||
|
||||
echo $form_link;
|
||||
}
|
||||
|
||||
echo '<br><br><br>';
|
||||
|
||||
$page_size = 20;
|
||||
$search_criteria = array(
|
||||
'status' => 'active',
|
||||
'field_filters' => array(
|
||||
array( 'key' => 'wiaas_delivery_process_id',
|
||||
'value' => $entry['id']
|
||||
),
|
||||
),
|
||||
);
|
||||
$sorting = array( 'key' => 'date_created', 'direction' => 'DESC' );
|
||||
$paging = array( 'offset' => 0, 'page_size' => $page_size );
|
||||
|
||||
$entries = GFAPI::get_entries( $action_form, $search_criteria, $sorting, $paging );
|
||||
|
||||
foreach ($entries as $action_entry) {
|
||||
self::_display_step_action_entry($action_form, $action_entry);
|
||||
}
|
||||
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
add_thickbox();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static function _display_step_action_entry($action_form, $action_entry) {
|
||||
$workflow_api = new Gravity_Flow_API($action_entry['form_id']);
|
||||
|
||||
$current_action_step = $workflow_api->get_current_step($action_entry);
|
||||
|
||||
|
||||
?>
|
||||
<table>
|
||||
|
||||
<?php
|
||||
foreach ($action_form['fields'] as $field) {
|
||||
|
||||
if ($field->type === 'wiaas_order') {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($field->type === 'workflow_discussion') {
|
||||
|
||||
echo '<tr style="padding: 20px;"><td colspan="2">' . $field->format_discussion_value($action_entry[$field->id]) . '</td></tr>';
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$value = $field->get_value_entry_detail($action_entry[$field->id]);
|
||||
$label = $field->get_field_label(false, $action_entry[$field->id]);
|
||||
|
||||
echo '<tr>' .
|
||||
'<td><h5>' . $label . ' : </h5></td>' .
|
||||
'<td>' . $value . '</td>' .
|
||||
'</tr>';
|
||||
}
|
||||
|
||||
if (! empty($current_action_step)) {
|
||||
|
||||
?>
|
||||
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<a style="text-transform: uppercase; font-size: 11px; letter-spacing: 0.4px; margin:10px;" href="<?php echo $current_action_step->get_entry_url() ?>">
|
||||
<?php echo $current_action_step->get_name() . ' ' . $current_action_step->get_status_label($current_action_step->get_status()) ?>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
|
||||
<hr />
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
Wiaas_Admin_Delivery_Process::init();
|
||||
@@ -26,43 +26,45 @@ class Wiass_REST_Delivery_Process_API {
|
||||
*/
|
||||
private static $namespace = 'wiaas';
|
||||
|
||||
private static $rest_base = 'delivery';
|
||||
|
||||
|
||||
public static function register_routes() {
|
||||
register_rest_route( self::$namespace, 'next-delivery-steps', array(
|
||||
register_rest_route( self::$namespace, '/' . self::$rest_base . '/next-actions', array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array(__CLASS__, 'get_next_actions_for_user'),
|
||||
'permission_callback' => 'is_user_logged_in'
|
||||
) );
|
||||
|
||||
register_rest_route( self::$namespace, 'customer-acceptance/(?P<entry_id>\d+)', array(
|
||||
register_rest_route( self::$namespace, '/' . self::$rest_base . '/(?P<order_id>\d+)/customer-acceptance', array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array(__CLASS__, 'get_customer_acceptance'),
|
||||
'permission_callback' => 'is_user_logged_in'
|
||||
) );
|
||||
|
||||
register_rest_route( self::$namespace, 'customer-acceptance/(?P<entry_id>\d+)', array(
|
||||
register_rest_route( self::$namespace, '/' . self::$rest_base . '/(?P<order_id>\d+)/customer-acceptance', array(
|
||||
'methods' => 'POST',
|
||||
'callback' => array(__CLASS__, 'submit_customer_acceptance'),
|
||||
'permission_callback' => 'is_user_logged_in'
|
||||
) );
|
||||
|
||||
register_rest_route( self::$namespace, 'customer-acceptance/(?P<entry_id>\d+)/upload-file' , array(
|
||||
register_rest_route( self::$namespace, '/' . self::$rest_base . '/(?P<order_id>\d+)/customer-acceptance/upload' , array(
|
||||
'methods' => 'POST',
|
||||
'callback' => array(__CLASS__, 'upload_file'),
|
||||
'callback' => array(__CLASS__, 'upload_customer_acceptance'),
|
||||
'permission_callback' => 'is_user_logged_in'
|
||||
) );
|
||||
|
||||
|
||||
register_rest_route( self::$namespace, 'customer-questionnaires/(?P<order_id>\d+)', array(
|
||||
register_rest_route( self::$namespace, '/' . self::$rest_base . '/(?P<order_id>\d+)/customer-questionnaires', array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array(__CLASS__, 'get_customer_questionnaires'),
|
||||
//'permission_callback' => 'is_user_logged_in'
|
||||
'permission_callback' => 'is_user_logged_in'
|
||||
) );
|
||||
|
||||
register_rest_route( self::$namespace, 'customer-questionnaires/(?P<order_id>\d+)/upload/(?P<action_id>\d+)', array(
|
||||
register_rest_route( self::$namespace, '/' . self::$rest_base . '/(?P<order_id>\d+)/customer-questionnaires/upload/(?P<action_entry_id>\d+)', array(
|
||||
'methods' => 'POST',
|
||||
'callback' => array(__CLASS__, 'upload_customer_questionnaire'),
|
||||
//'permission_callback' => 'is_user_logged_in'
|
||||
'permission_callback' => 'is_user_logged_in'
|
||||
) );
|
||||
}
|
||||
|
||||
@@ -114,132 +116,53 @@ class Wiass_REST_Delivery_Process_API {
|
||||
|
||||
$order_id = absint($request['order_id']);
|
||||
|
||||
|
||||
$data = Wiaas_Delivery_Process::get_current_delivery_step_info($order_id);
|
||||
$data = Wiaas_Delivery_Process::get_customer_questionnaires_data($order_id);
|
||||
|
||||
return rest_ensure_response($data);
|
||||
}
|
||||
|
||||
public function upload_customer_questionnaire(WP_REST_Request $request) {
|
||||
|
||||
$action_id = absint($request['action_id']);
|
||||
$order_id = absint($request['order_id']);
|
||||
|
||||
try {
|
||||
$action_entry_id = absint($request['action_entry_id']);
|
||||
|
||||
$result = Wiaas_Document_Upload::upload_document_version();
|
||||
|
||||
$entry = GFAPI::get_entry($action_id);
|
||||
|
||||
$document_field = GFCommon::get_fields_by_type(GFAPI::get_form($entry['form_id']), 'wiaas_order_bundle_document')[0];
|
||||
|
||||
$entry[$document_field->id] = $result;
|
||||
|
||||
GFAPI::update_entry($entry);
|
||||
|
||||
Wiaas_Delivery_Process::complete_action_step($action_id);
|
||||
|
||||
return rest_ensure_response($result);
|
||||
|
||||
} catch( Exception $e) {
|
||||
}
|
||||
Wiaas_Delivery_Process::upload_customer_questionnaire($order_id, $action_entry_id);
|
||||
|
||||
return wiaas_api_notice('INSTALLATION_ACCEPTED', 'success');
|
||||
}
|
||||
|
||||
public static function get_customer_acceptance(WP_REST_Request $request){
|
||||
$entry = GFAPI::get_entry($request['entry_id']);
|
||||
if (is_wp_error($entry)){
|
||||
return wiaas_api_generate_error('Customer acceptance entry not found', 404);
|
||||
}
|
||||
|
||||
$acceptance_documents = array();
|
||||
$uploaded_files = json_decode($entry[self::UPLOADED_FILES_FIELD_ID]);
|
||||
$order_id = absint($request['order_id']);
|
||||
|
||||
foreach($uploaded_files as $file_url){
|
||||
//example of decoded url :
|
||||
//http://localhost/wp/index.php?gf-download=2018/08/rokovi-1535378841.docx&form-id=1&field-id=12&hash=1be6c30f0eeff93563b352d15fe459d5ded12ee06c2c8f36fed66b42dedf2534
|
||||
|
||||
$decoded_url = urldecode($file_url);
|
||||
$url_parts = explode('?', $decoded_url);
|
||||
$file_name_base_parts = explode('&', $url_parts[1]);
|
||||
$file_name_parts = explode('/', $file_name_base_parts[0]);
|
||||
$file_name_with_extension_parts = explode('.', $file_name_parts[2]);
|
||||
$data = Wiaas_Delivery_Process::get_customer_acceptance_data($order_id);
|
||||
|
||||
$acceptance_documents_entry = array(
|
||||
'name' => $file_name_with_extension_parts[0],
|
||||
'extension' => $file_name_with_extension_parts[1],
|
||||
'url' => $file_url
|
||||
);
|
||||
|
||||
array_push($acceptance_documents, $acceptance_documents_entry);
|
||||
}
|
||||
|
||||
$acceptance_status = 0;
|
||||
if ($entry[self::ACCEPTANCE_STATUS_FIELD_ID]){
|
||||
$acceptance_status = ($entry[self::ACCEPTANCE_STATUS_FIELD_ID] === 'accept') ? 1 : -1;
|
||||
}
|
||||
|
||||
return rest_ensure_response(array(
|
||||
'documents' => $acceptance_documents,
|
||||
'expiration' => $entry[self::EXPIRATION_DATE_FIELD_ID],
|
||||
'status' => $acceptance_status,
|
||||
'decline_reason' => $entry[self::DECLINE_REASON_FIELD_ID]
|
||||
));
|
||||
return rest_ensure_response($data);
|
||||
}
|
||||
|
||||
public static function submit_customer_acceptance(WP_REST_Request $request){
|
||||
$entry = GFAPI::get_entry($request['entry_id']);
|
||||
if (is_wp_error($entry)){
|
||||
return wiaas_api_generate_error('Customer acceptance entry not found', 404);
|
||||
}
|
||||
public static function submit_customer_acceptance(WP_REST_Request $request) {
|
||||
|
||||
$status = $request['actionType'];
|
||||
$reason = $request['declineReason'];
|
||||
$status = $request['action_type'];
|
||||
$reason = $request['decline_reason'];
|
||||
|
||||
if (!in_array($status, self::ACCEPTABLE_STATUS)){
|
||||
return wiaas_api_notice('ACCEPTANCE_STATUS_MISSING', 'error');
|
||||
}
|
||||
|
||||
$installation_declined = ($status === self::DECLINE_STATUS_LABEL);
|
||||
|
||||
$uploaded_files = json_decode($entry[self::UPLOADED_FILES_FIELD_ID]);
|
||||
|
||||
if ($installation_declined && $reason === ''){
|
||||
return wiaas_api_notice('DECLINE_REASON_EMPTY', 'error');
|
||||
}
|
||||
|
||||
if (!$installation_declined && (count($uploaded_files)===0)){
|
||||
|
||||
$order_id = $request['order_id'];
|
||||
|
||||
if (! $installation_declined && ! Wiaas_Delivery_Process::is_customer_acceptance_uploaded($order_id)) {
|
||||
return wiaas_api_notice('ACCEPTANCE_NOT_UPLOADED', 'error');
|
||||
}
|
||||
|
||||
$entry[self::DECLINE_REASON_FIELD_ID] = $reason;
|
||||
$entry[self::ACCEPTANCE_STATUS_FIELD_ID] = $status;
|
||||
|
||||
if (!GFAPI::update_entry( $entry )){
|
||||
return wiaas_api_notice('INTERNAL_SERVER_ERROR', 'error');
|
||||
}
|
||||
|
||||
//Check if step is already completed, to not submit again
|
||||
$gf_api = new Gravity_Flow_API($entry['form_id']);
|
||||
$current_step = $gf_api->get_current_step($entry);
|
||||
if ($current_step->get_name() !== self::USER_INPUT_STEP_NAME){
|
||||
return wiaas_api_notice('ACCEPTANCE_STATUS_UPDATED', 'success');
|
||||
}
|
||||
|
||||
if ( $current_step ) {
|
||||
$current_step->purge_assignees();
|
||||
$current_step->update_step_status( 'complete' );
|
||||
}
|
||||
$entry_id = $entry['id'];
|
||||
$new_step_id = $current_step->get_id() + 1;
|
||||
$new_step = $gf_api->get_step( $new_step_id, $entry );
|
||||
$feedback = sprintf( esc_html__( 'Sent to step: %s', 'gravityflow' ), $new_step->get_name() );
|
||||
$gf_api->add_timeline_note( $entry_id, $feedback );
|
||||
$gf_api->log_activity( 'workflow', 'sent_to_step', $gf_api->form_id, $entry_id, $step_id );
|
||||
gform_update_meta( $entry_id, 'workflow_final_status', 'pending' );
|
||||
$new_step->start();
|
||||
$gf_api->process_workflow( $entry_id );
|
||||
|
||||
Wiaas_Delivery_Process::update_customer_acceptance_status($order_id, $status, $reason);
|
||||
|
||||
if ($installation_declined){
|
||||
return wiaas_api_notice('INSTALLATION_DECLINED', 'success');
|
||||
@@ -247,75 +170,14 @@ class Wiass_REST_Delivery_Process_API {
|
||||
return wiaas_api_notice('INSTALLATION_ACCEPTED', 'success');
|
||||
}
|
||||
|
||||
public static function upload_file(WP_REST_Request $request){
|
||||
$files = $request->get_file_params();
|
||||
if (!$files[self::FILE_KEY_NAME]){
|
||||
return wiaas_api_notice('NO_FILES_UPLOADED', 'error');
|
||||
}
|
||||
public static function upload_customer_acceptance(WP_REST_Request $request){
|
||||
|
||||
$entry = GFAPI::get_entry($request['entry_id']);
|
||||
if (is_wp_error($entry)){
|
||||
return wiaas_api_generate_error('Customer acceptance entry not found', 404);
|
||||
}
|
||||
$order_id = $request['order_id'];
|
||||
|
||||
$form = GFAPI::get_form($entry['form_id']);
|
||||
$form_upload_path = GFFormsModel::get_upload_path( $form['id'] );
|
||||
$success = Wiaas_Delivery_Process::upload_customer_acceptance_document($order_id);
|
||||
|
||||
$target_path = $form_upload_path . '/' . date('Y') . '/' . date('m') . '/';
|
||||
wp_mkdir_p( $target_path );
|
||||
GFCommon::recursive_add_index_file( $target_path );
|
||||
|
||||
$upload_file_field = GFAPI::get_field($form['id'], self::UPLOADED_FILES_FIELD_ID);
|
||||
$file_name = sanitize_file_name($files[self::FILE_KEY_NAME]['name']);
|
||||
$file_path_details = pathinfo($file_name);
|
||||
|
||||
if ( GFCommon::file_name_has_disallowed_extension( $file_name ) ) {
|
||||
return wiaas_api_notice('INVALID_FILE_ACCEPTANCE', 'error');
|
||||
}
|
||||
$allowed_extensions = ! empty( $upload_file_field->allowedExtensions ) ? GFCommon::clean_extensions( explode( ',', strtolower( $upload_file_field->allowedExtensions ) ) ) : array();
|
||||
if ( ! empty( $allowed_extensions ) ) {
|
||||
if ( ! GFCommon::match_file_extension( $file_name, $allowed_extensions ) ) {
|
||||
return wiaas_api_notice('INVALID_FILE_ACCEPTANCE', 'error');
|
||||
}
|
||||
}
|
||||
|
||||
$new_file_name = $file_path_details['filename'] . '-' . time() . '.' . $file_path_details['extension'];
|
||||
|
||||
// Bypasses security checks when running unit tests.
|
||||
if ( defined( 'WP_TEST_IN_PROGRESS' ) && WP_TEST_IN_PROGRESS ) {
|
||||
return wiaas_api_notice('FILE_UPLOADED', 'success');
|
||||
}
|
||||
|
||||
if ( move_uploaded_file($files[self::FILE_KEY_NAME]['tmp_name'], $target_path . $new_file_name ) ) {
|
||||
GFFormsModel::set_permissions( $target_path . $new_file_name );
|
||||
} else {
|
||||
return wiaas_api_notice('INTERNAL_SERVER_ERROR', 'error');
|
||||
}
|
||||
|
||||
//Extract path relative to the root
|
||||
//Last 6 strings (excluding last empty) are path relative to the root
|
||||
$path_parts = explode('/', $target_path);
|
||||
|
||||
$relative_path = '';
|
||||
$i = count($path_parts) - self::PATH_PARTS_TO_EXTRACT;
|
||||
while($i < count($path_parts)-1){
|
||||
$relative_path = $relative_path . $path_parts[$i] . '/';
|
||||
$i++;
|
||||
}
|
||||
|
||||
$file_url = self::BASE_NAME . $relative_path . $new_file_name;
|
||||
$url_for_download = $upload_file_field->get_download_url($file_url);
|
||||
|
||||
$uploaded_files = json_decode($entry[self::UPLOADED_FILES_FIELD_ID]);
|
||||
|
||||
if ($uploaded_files === NULL){
|
||||
$uploaded_files = [];
|
||||
}
|
||||
array_push($uploaded_files, $url_for_download);
|
||||
|
||||
$entry[self::UPLOADED_FILES_FIELD_ID] = json_encode($uploaded_files);
|
||||
|
||||
if (GFAPI::update_entry( $entry )) {
|
||||
if ($success) {
|
||||
return wiaas_api_notice('FILE_UPLOADED','success');
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,9 @@ class Wiaas_Admin {
|
||||
|
||||
require_once dirname(__FILE__) . '/admin/class-wiaas-admin-product.php';
|
||||
|
||||
|
||||
require_once dirname(__FILE__) . '/admin/class-wiaas-admin-delivery-process.php';
|
||||
|
||||
add_action( 'admin_enqueue_scripts', array(__CLASS__, 'enqueue_scripts'), 100 );
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,6 @@ defined( 'ABSPATH' ) || exit;
|
||||
|
||||
class Wiaas_Delivery_Process {
|
||||
|
||||
private static $process_form_title_prefix = 'DELIVERY PROCESS:';
|
||||
|
||||
public static function init() {
|
||||
self::_register_delivery_process_step_type();
|
||||
|
||||
@@ -21,7 +19,7 @@ class Wiaas_Delivery_Process {
|
||||
private static function _init_hooks() {
|
||||
add_action('woocommerce_new_order', array( __CLASS__, 'create_delivery_process_for_order' ));
|
||||
|
||||
add_action( 'gravityflow_workflow_complete', array(__CLASS__, 'maybe_complete_parent_order'), 10, 3 );
|
||||
// add_action( 'gravityflow_workflow_complete', array(__CLASS__, 'maybe_complete_parent_order'), 10, 3 );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -31,6 +29,7 @@ class Wiaas_Delivery_Process {
|
||||
require_once( 'delivery-process/class-wiaas-delivery-process-step.php' );
|
||||
|
||||
require_once( 'delivery-process/class-wiaas-delivery-process-addon.php' );
|
||||
require_once( 'delivery-process/class-wiaas-delivery-process-action.php' );
|
||||
|
||||
// order fields
|
||||
require_once( 'delivery-process/class-wiaas-order-fields.php' );
|
||||
@@ -71,6 +70,174 @@ class Wiaas_Delivery_Process {
|
||||
}
|
||||
}
|
||||
|
||||
public static function get_available_process_list_for_country($country_code) {
|
||||
|
||||
$forms = GFAPI::get_forms();
|
||||
|
||||
$available_process_forms = array();
|
||||
|
||||
foreach ($forms as $form) {
|
||||
|
||||
$delivery_settings = rgar($form, 'wiaas_delivery_process');
|
||||
|
||||
if ($delivery_settings['delivery_form_type'] === 'process' &&
|
||||
$delivery_settings['delivery_country'] === $country_code) {
|
||||
|
||||
$available_process_forms[] = $form;
|
||||
}
|
||||
}
|
||||
|
||||
return $available_process_forms;
|
||||
}
|
||||
|
||||
|
||||
public static function get_customer_acceptance_data($order_id) {
|
||||
|
||||
$delivery_process_entry = self::get_order_delivery_process_entry($order_id);
|
||||
|
||||
$data = array();
|
||||
|
||||
if (! empty($delivery_process_entry)) {
|
||||
|
||||
$workflow = new Gravity_Flow_API($delivery_process_entry['form_id']);
|
||||
|
||||
$step = $workflow->get_current_step($delivery_process_entry);
|
||||
|
||||
if ($step && Wiaas_Delivery_Process_Action::process_step_has_customer_acceptance_action($step)) {
|
||||
|
||||
$action_entries = Wiaas_Delivery_Process_Action::get_process_step_action_entries($step);
|
||||
|
||||
$action_entry = $action_entries[0];
|
||||
|
||||
$data[] = Wiaas_Delivery_Process_Action::get_customer_acceptance_action_data($action_entry['id']);
|
||||
}
|
||||
}
|
||||
|
||||
return empty( $data ) ? $data : $data[0];
|
||||
}
|
||||
|
||||
public static function get_customer_questionnaires_data($order_id) {
|
||||
|
||||
$data = array();
|
||||
|
||||
$delivery_process_entry = self::get_order_delivery_process_entry($order_id);
|
||||
|
||||
if (! empty($delivery_process_entry)) {
|
||||
|
||||
$workflow = new Gravity_Flow_API($delivery_process_entry['form_id']);
|
||||
|
||||
$step = $workflow->get_current_step($delivery_process_entry);
|
||||
|
||||
if ($step && Wiaas_Delivery_Process_Action::process_step_has_customer_validate_questionnaires_action($step)) {
|
||||
|
||||
$action_entries = Wiaas_Delivery_Process_Action::get_process_step_action_entries($step);
|
||||
|
||||
foreach ($action_entries as $action_entry) {
|
||||
|
||||
$action_data = Wiaas_Delivery_Process_Action::get_customer_validate_questionnaires_action_data($action_entry['id']);
|
||||
|
||||
if (! empty($action_data)) {
|
||||
|
||||
$data[] = $action_data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public static function update_customer_acceptance_status($order_id,$status, $reason) {
|
||||
|
||||
$delivery_process_entry = self::get_order_delivery_process_entry($order_id);
|
||||
|
||||
if (! empty($delivery_process_entry) ) {
|
||||
|
||||
$workflow = new Gravity_Flow_API($delivery_process_entry['form_id']);
|
||||
|
||||
$step = $workflow->get_current_step($delivery_process_entry);
|
||||
|
||||
$action_entries = Wiaas_Delivery_Process_Action::get_process_step_action_entries($step);
|
||||
|
||||
$action_entry = $action_entries[0];
|
||||
|
||||
Wiaas_Delivery_Process_Action::update_customer_acceptance_status($action_entry['id'], $status, $reason);
|
||||
|
||||
if ($status === 'accept') {
|
||||
|
||||
Wiaas_Delivery_Process_Action::complete_action_step($action_entry['id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function is_customer_acceptance_uploaded($order_id) {
|
||||
|
||||
$delivery_process_entry = self::get_order_delivery_process_entry($order_id);
|
||||
|
||||
if (! empty($delivery_process_entry) ) {
|
||||
|
||||
$workflow = new Gravity_Flow_API($delivery_process_entry['form_id']);
|
||||
|
||||
$step = $workflow->get_current_step($delivery_process_entry);
|
||||
|
||||
$action_entries = Wiaas_Delivery_Process_Action::get_process_step_action_entries($step);
|
||||
|
||||
$action_entry = $action_entries[0];
|
||||
|
||||
return Wiaas_Delivery_Process_Action::is_customer_acceptance_uploaded($action_entry['id']);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function upload_customer_questionnaire($order_id, $action_entry_id) {
|
||||
|
||||
Wiaas_Delivery_Process_Action::upload_customer_questionnaire($action_entry_id);
|
||||
|
||||
Wiaas_Delivery_Process_Action::complete_action_step($action_entry_id);
|
||||
}
|
||||
|
||||
public static function upload_customer_acceptance_document($order_id) {
|
||||
|
||||
$delivery_process_entry = self::get_order_delivery_process_entry($order_id);
|
||||
|
||||
if (! empty($delivery_process_entry) ) {
|
||||
|
||||
$workflow = new Gravity_Flow_API($delivery_process_entry['form_id']);
|
||||
|
||||
$step = $workflow->get_current_step($delivery_process_entry);
|
||||
|
||||
$action_entries = Wiaas_Delivery_Process_Action::get_process_step_action_entries($step);
|
||||
|
||||
$action_entry = $action_entries[0];
|
||||
|
||||
$success = Wiaas_Delivery_Process_Action::upload_customer_acceptance_document($action_entry['id']);
|
||||
|
||||
if ($success) {
|
||||
|
||||
Wiaas_Delivery_Process_Action::complete_action_step($action_entry['id']);
|
||||
}
|
||||
|
||||
return $success;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public static function get_order_delivery_process_entry($order_id) {
|
||||
|
||||
$order = wc_get_order($order_id);
|
||||
$process_entry_id = $order->get_meta('wiaas_delivery_process_entry_id', true);
|
||||
|
||||
if (!isset($process_entry_id)) {
|
||||
return array();
|
||||
}
|
||||
|
||||
return GFAPI::get_entry($process_entry_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves delivery process instance for order
|
||||
*
|
||||
@@ -82,9 +249,7 @@ class Wiaas_Delivery_Process {
|
||||
|
||||
$process_entry_id = get_post_meta($order_id, 'wiaas_delivery_process_entry_id');
|
||||
|
||||
$process_entry_id = 159;
|
||||
|
||||
if (!isset($process_entry_id)) {
|
||||
if (empty($process_entry_id)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -107,6 +272,11 @@ class Wiaas_Delivery_Process {
|
||||
foreach ( $steps_info as $step_info ) {
|
||||
$step = $api->get_step( $step_info->get_id(), $process_instance );
|
||||
|
||||
if (! $step->is_visible_to_customer) {
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$action_code = 'manual';
|
||||
$action_form = GFAPI::get_form($step->target_form_id);
|
||||
$has_action_form = $action_form !== false;
|
||||
@@ -141,144 +311,6 @@ class Wiaas_Delivery_Process {
|
||||
return $delivery_process;
|
||||
}
|
||||
|
||||
public static function get_current_delivery_step_info($order_id) {
|
||||
|
||||
$process_entry_id = 159;
|
||||
|
||||
$process_instance = GFAPI::get_entry($process_entry_id);
|
||||
$api = new Gravity_Flow_API($process_instance['form_id']);
|
||||
|
||||
$current_step = $api->get_current_step($process_instance);
|
||||
|
||||
if (!$current_step) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$current_step_info = array(
|
||||
'step_id' => $current_step->get_id(),
|
||||
'process_id' => $process_entry_id,
|
||||
'short_desc' => $current_step->get_name(),
|
||||
'action_code' => 'manual',
|
||||
'status' => $current_step->get_status(),
|
||||
);
|
||||
|
||||
$action_form = GFAPI::get_form($current_step->target_form_id);
|
||||
$has_action_form = $action_form !== false;
|
||||
$delivery_settings = $action_form ? rgar($action_form, 'wiaas_delivery_process') : array();
|
||||
|
||||
$customer_allowed_actions = array( 'customer-acceptance', 'validate-questionnaire' );
|
||||
|
||||
if (! $has_action_form && ! in_array($delivery_settings['delivery_action_code'], $customer_allowed_actions)) {
|
||||
|
||||
return $current_step_info;
|
||||
}
|
||||
|
||||
$current_step_info['action_code'] = $delivery_settings['delivery_action_code'];
|
||||
|
||||
$current_step_info['actions'] = array();
|
||||
|
||||
$action_entry_ids = gform_get_meta(
|
||||
$current_step->get_entry_id(), 'wiaas_delivery_step_' . $current_step->get_id() . '_action_entry_ids'
|
||||
);
|
||||
|
||||
if (empty($action_entry_ids)) {
|
||||
return $current_step_info;
|
||||
}
|
||||
|
||||
$order = wc_get_order($order_id);
|
||||
|
||||
foreach ($action_entry_ids as $action_entry_id) {
|
||||
|
||||
$action_entry = GFAPI::get_entry($action_entry_id);
|
||||
|
||||
if (is_wp_error($action_entry)) {
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$action_workflow_api = new Gravity_Flow_API($action_form['id']);
|
||||
|
||||
$action_workflow_api->get_status($action_entry);
|
||||
|
||||
$action_data = self::_collect_validate_questionnaire_action_info($action_form, $action_entry, $order);
|
||||
|
||||
if (! empty($action_data)) {
|
||||
|
||||
$current_step_info['actions'][] = $action_data;
|
||||
}
|
||||
}
|
||||
|
||||
return $current_step_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* Complete action step
|
||||
*
|
||||
* @param int $action_id
|
||||
*/
|
||||
public static function complete_action_step($action_id) {
|
||||
|
||||
$action_entry = GFAPI::get_entry($action_id);
|
||||
|
||||
$action_form = GFAPI::get_form($action_entry['form_id']);
|
||||
|
||||
$workflow = new Gravity_Flow_API($action_form['id']);
|
||||
|
||||
$current_step = $workflow->get_current_step($action_entry);
|
||||
|
||||
if ( $current_step ) {
|
||||
|
||||
$assignees = $current_step->get_assignees();
|
||||
|
||||
foreach ($assignees as $assignee) {
|
||||
|
||||
$current_step->process_assignee_status($assignee, 'complete', $action_form);
|
||||
}
|
||||
}
|
||||
|
||||
gravity_flow()->process_workflow($action_form, $action_entry['id']);
|
||||
}
|
||||
|
||||
|
||||
private static function _collect_validate_questionnaire_action_info($action_form, $action_entry, $order) {
|
||||
|
||||
// we need to collect document, bundle id and current status
|
||||
$bundle_item_id = null; $document_info = array(); $status = null;
|
||||
|
||||
$bundle_field = GFCommon::get_fields_by_type($action_form, 'wiaas_order_bundle')[0];
|
||||
|
||||
$bundle_item_id = absint(explode('|', $action_entry[$bundle_field->id])[1]);
|
||||
|
||||
$bundle_item = $order->get_item($bundle_item_id);
|
||||
|
||||
$documents = wiaas_get_order_item_documents($bundle_item, 'order_questionaire');
|
||||
$document = $documents[0];
|
||||
|
||||
$action_workflow_api = new Gravity_Flow_API($action_form['id']);
|
||||
$action_step = $action_workflow_api->get_current_step($action_entry);
|
||||
$status = 'validated';
|
||||
|
||||
if (! empty($action_step)) {
|
||||
|
||||
if ($action_step->get_type() === 'approval') {
|
||||
|
||||
$status = 'not-validated';
|
||||
}
|
||||
|
||||
if ($action_step->get_type() === 'user_input') {
|
||||
|
||||
$status = 'invalid';
|
||||
}
|
||||
}
|
||||
|
||||
return array(
|
||||
'item_id' => $bundle_item_id,
|
||||
'order_id' =>$order->get_id(),
|
||||
'action_id' => $action_entry['id'],
|
||||
'document' => $document,
|
||||
'status' => $status
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically create delivery process instance when order is created
|
||||
@@ -319,24 +351,3 @@ class Wiaas_Delivery_Process {
|
||||
}
|
||||
|
||||
add_action( 'gravityflow_loaded', array('Wiaas_Delivery_Process', 'init') );
|
||||
|
||||
function wiaas_gform_upload_path() {
|
||||
|
||||
$pathdata = wp_upload_dir();
|
||||
|
||||
if ( empty( $pathdata['subdir'] ) ) {
|
||||
$pathdata['path'] = $pathdata['path'] . wiaas_documents_base_dir();
|
||||
$pathdata['url'] = $pathdata['url'] . wiaas_documents_base_dir();
|
||||
$pathdata['subdir'] = wiaas_documents_base_dir();
|
||||
} else {
|
||||
$new_subdir = wiaas_documents_base_dir() . $pathdata['subdir'];
|
||||
|
||||
$pathdata['path'] = str_replace( $pathdata['subdir'], $new_subdir, $pathdata['path'] );
|
||||
$pathdata['url'] = str_replace( $pathdata['subdir'], $new_subdir, $pathdata['url'] );
|
||||
$pathdata['subdir'] = str_replace( $pathdata['subdir'], $new_subdir, $pathdata['subdir'] );
|
||||
}
|
||||
|
||||
return $pathdata;
|
||||
}
|
||||
|
||||
add_filter( 'gform_upload_path', 'wiaas_gform_upload_path', 10, 2 );
|
||||
|
||||
@@ -2,15 +2,14 @@
|
||||
|
||||
class Wiaas_Delivery_Process_Action {
|
||||
|
||||
public static function init() {
|
||||
public static function is_action_form($form) {
|
||||
|
||||
$delivery_settings = rgar($form, 'wiaas_delivery_process');
|
||||
|
||||
return ! empty($delivery_settings) && $delivery_settings['delivery_form_type'] === 'action';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Wiaas_Delivery_Process_Step $step
|
||||
*/
|
||||
public static function get_step_action_form(Wiaas_Delivery_Process_Step $step) {
|
||||
public static function get_process_step_action_form($step) {
|
||||
|
||||
if (empty($step->target_form_id)) {
|
||||
|
||||
@@ -19,15 +18,36 @@ class Wiaas_Delivery_Process_Action {
|
||||
|
||||
$action_form = GFAPI::get_form($step->target_form_id);
|
||||
|
||||
if (! $action_form) {
|
||||
|
||||
return null;
|
||||
}
|
||||
return $action_form;
|
||||
}
|
||||
|
||||
public static function get_step_action_entries(Wiaas_Delivery_Process_Step $step) {
|
||||
public static function get_process_step_action_form_action_code($step) {
|
||||
|
||||
$action_form = self::get_step_action_form($step);
|
||||
$action_form = self::get_process_step_action_form($step);
|
||||
|
||||
if (empty($action_form)) {
|
||||
|
||||
return 'manual';
|
||||
}
|
||||
|
||||
$delivery_settings = rgar($action_form, 'wiaas_delivery_process');
|
||||
|
||||
return empty($delivery_settings) ? 'manual' : $delivery_settings['delivery_action_code'];
|
||||
}
|
||||
|
||||
public static function process_step_has_customer_acceptance_action($step) {
|
||||
|
||||
return self::get_process_step_action_form_action_code($step) === 'customer-acceptance';
|
||||
}
|
||||
|
||||
public static function process_step_has_customer_validate_questionnaires_action($step) {
|
||||
|
||||
return self::get_process_step_action_form_action_code($step) === 'validate-questionnaire';
|
||||
}
|
||||
|
||||
public static function get_process_step_action_entries(Wiaas_Delivery_Process_Step $step) {
|
||||
|
||||
$action_form = self::get_process_step_action_form($step);
|
||||
|
||||
if (!$action_form) {
|
||||
|
||||
@@ -35,7 +55,6 @@ class Wiaas_Delivery_Process_Action {
|
||||
}
|
||||
|
||||
$search_criteria = array(
|
||||
'status' => 'active',
|
||||
'field_filters' => array(
|
||||
array( 'key' => 'wiaas_delivery_process_id',
|
||||
'value' => $step->get_entry_id()
|
||||
@@ -67,18 +86,210 @@ class Wiaas_Delivery_Process_Action {
|
||||
return $action_forms;
|
||||
}
|
||||
|
||||
public static function is_action_form($form) {
|
||||
public static function complete_action_step($action_id) {
|
||||
|
||||
$delivery_settings = rgar($form, 'wiaas_delivery_process');
|
||||
$action_entry = GFAPI::get_entry($action_id);
|
||||
|
||||
return ! empty($delivery_settings) && $delivery_settings['delivery_form_type'] === 'action';
|
||||
$action_form = GFAPI::get_form($action_entry['form_id']);
|
||||
|
||||
$workflow = new Gravity_Flow_API($action_form['id']);
|
||||
|
||||
$current_step = $workflow->get_current_step($action_entry);
|
||||
|
||||
if ( $current_step ) {
|
||||
|
||||
$new_status = $current_step->get_type() === 'approval' ? 'approved' : 'complete';
|
||||
|
||||
$assignees = $current_step->get_assignees();
|
||||
|
||||
foreach ($assignees as $assignee) {
|
||||
|
||||
$current_step->process_assignee_status($assignee, $new_status, $action_form);
|
||||
}
|
||||
}
|
||||
|
||||
gravity_flow()->process_workflow($action_form, $action_entry['id']);
|
||||
}
|
||||
|
||||
public static function get_customer_step_actions(Wiaas_Delivery_Process_Step $step) {
|
||||
public static function upload_customer_questionnaire($action_entry_id) {
|
||||
|
||||
$action_entry = GFAPI::get_entry($action_entry_id);
|
||||
|
||||
$document_field = GFCommon::get_fields_by_type(GFAPI::get_form($action_entry['form_id']), 'wiaas_order_bundle_document')[0];
|
||||
|
||||
|
||||
$new_file = $document_field->get_single_file_value($action_entry['form_id'], 'file');
|
||||
|
||||
$action_entry[$document_field->id] = $new_file;
|
||||
|
||||
GFAPI::update_entry($action_entry);
|
||||
}
|
||||
|
||||
public static function get_customer_acceptance_action_data($action_id) {
|
||||
|
||||
$action_entry = GFAPI::get_entry($action_id);
|
||||
|
||||
$action_form = GFAPI::get_form($action_entry['form_id']);
|
||||
|
||||
|
||||
$acceptance_documents_field = GFCommon::get_fields_by_type($action_form, 'fileupload')[0];
|
||||
$acceptance_field = GFCommon::get_fields_by_type($action_form, 'radio')[0];
|
||||
$decline_reason_field = GFCommon::get_fields_by_type($action_form, 'textarea')[0];
|
||||
$expiration_date_field = GFCommon::get_fields_by_type($action_form, 'date')[0];
|
||||
|
||||
$file_paths = json_decode($action_entry[$acceptance_documents_field->id]);
|
||||
|
||||
$documents = array();
|
||||
|
||||
foreach ($file_paths as $file_path) {
|
||||
|
||||
$info = pathinfo( $file_path );
|
||||
|
||||
$documents[] = array(
|
||||
'name' => $info['basename'],
|
||||
'url' => $acceptance_documents_field->get_download_url( $file_path, true )
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
return array(
|
||||
'action_id' => $action_entry['id'],
|
||||
'documents' => $documents,
|
||||
'expiration' => $action_entry[$expiration_date_field->id],
|
||||
'decline_reason' => $action_entry[$decline_reason_field->id],
|
||||
'status' => ($action_entry[$acceptance_field->id] === 'accept') ? 1 : -1
|
||||
);
|
||||
}
|
||||
|
||||
public static function is_customer_acceptance_uploaded($action_id) {
|
||||
|
||||
$action_entry = GFAPI::get_entry($action_id);
|
||||
$action_form = GFAPI::get_form($action_entry['form_id']);
|
||||
|
||||
|
||||
$acceptance_documents_field = GFCommon::get_fields_by_type($action_form, 'fileupload')[0];
|
||||
|
||||
return ! empty( $action_entry[$acceptance_documents_field->id]);
|
||||
}
|
||||
|
||||
public static function update_customer_acceptance_status($action_id, $new_status, $reason) {
|
||||
|
||||
$action_entry = GFAPI::get_entry($action_id);
|
||||
$action_form = GFAPI::get_form($action_entry['form_id']);
|
||||
|
||||
$acceptance_field = GFCommon::get_fields_by_type($action_form, 'radio')[0];
|
||||
$decline_reason_field = GFCommon::get_fields_by_type($action_form, 'textarea')[0];
|
||||
|
||||
$action_entry[$acceptance_field->id] = $new_status;
|
||||
$action_entry[$decline_reason_field->id] = $reason;
|
||||
|
||||
GFAPI::update_entry($action_entry);
|
||||
}
|
||||
|
||||
public static function upload_customer_acceptance_document($action_id) {
|
||||
|
||||
$action_entry = GFAPI::get_entry($action_id);
|
||||
$action_form = GFAPI::get_form($action_entry['form_id']);
|
||||
|
||||
$acceptance_documents_field = GFCommon::get_fields_by_type($action_form, 'fileupload')[0];
|
||||
|
||||
$old_value = $action_entry[$acceptance_documents_field->id];
|
||||
|
||||
$value = $acceptance_documents_field->get_single_file_value($action_form['id'], 'file');
|
||||
|
||||
if ($acceptance_documents_field->multipleFiles ) {
|
||||
|
||||
$value = array( $value );
|
||||
|
||||
$old_value = json_decode( $old_value );
|
||||
|
||||
if (! empty($old_value)) {
|
||||
|
||||
$old_value = is_array( $old_value ) ? $old_value : array( $old_value );
|
||||
|
||||
$value = array_merge( $value, $old_value );
|
||||
}
|
||||
|
||||
$value = json_encode( $value );
|
||||
}
|
||||
|
||||
$action_entry[$acceptance_documents_field->id] = $value;
|
||||
|
||||
$result = GFAPI::update_entry($action_entry);
|
||||
|
||||
return ! is_wp_error($result);
|
||||
}
|
||||
|
||||
public static function get_customer_validate_questionnaires_action_data($action_id) {
|
||||
|
||||
$action_entry = GFAPI::get_entry($action_id);
|
||||
|
||||
$action_form = GFAPI::get_form($action_entry['form_id']);
|
||||
|
||||
$order_id = $action_entry['wiaas_delivery_order_id'];
|
||||
$order = wc_get_order($order_id);
|
||||
|
||||
|
||||
// we need to collect document, bundle id and current status
|
||||
$bundle_item_id = null; $status = null;
|
||||
|
||||
$bundle_field = GFCommon::get_fields_by_type($action_form, 'wiaas_order_bundle')[0];
|
||||
$bundle_item_id = absint(explode('|', $action_entry[$bundle_field->id])[1]);
|
||||
|
||||
if (empty($bundle_item_id)) {
|
||||
|
||||
return null;
|
||||
}
|
||||
$bundle_item = $order->get_item($bundle_item_id);
|
||||
|
||||
$document_field = GFCommon::get_fields_by_type(GFAPI::get_form($action_entry['form_id']), 'wiaas_order_bundle_document')[0];
|
||||
$file_path = $action_entry[$document_field->id];
|
||||
|
||||
$info = pathinfo( $action_entry[$document_field->id] );
|
||||
|
||||
$document = array(
|
||||
'name' => $info['basename'],
|
||||
'url' => $document_field->get_download_url( $file_path, true )
|
||||
);
|
||||
|
||||
$discussion_field = GFCommon::get_fields_by_type(GFAPI::get_form($action_entry['form_id']), 'workflow_discussion')[0];
|
||||
$discussion_items = json_decode($action_entry[$discussion_field->id], ARRAY_A);
|
||||
|
||||
$formated_comments = array();
|
||||
|
||||
if (is_array($discussion_items)) {
|
||||
foreach ($discussion_items as $item) {
|
||||
|
||||
$formated_comments[] = $discussion_field->format_discussion_item( $item, 'text', $action_id );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$action_workflow_api = new Gravity_Flow_API($action_form['id']);
|
||||
$action_step = $action_workflow_api->get_current_step($action_entry);
|
||||
$status = 'validated';
|
||||
|
||||
if (! empty($action_step)) {
|
||||
|
||||
if ($action_step->get_type() === 'approval') {
|
||||
|
||||
$status = 'not-validated';
|
||||
}
|
||||
|
||||
if ($action_step->get_type() === 'user_input') {
|
||||
|
||||
$status = 'invalid';
|
||||
}
|
||||
}
|
||||
|
||||
return array(
|
||||
'item_id' => $bundle_item_id,
|
||||
'order_id' =>$order->get_id(),
|
||||
'action_id' => $action_entry['id'],
|
||||
'document' => $document,
|
||||
'status' => $status,
|
||||
'comments' => $formated_comments
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Wiaas_Delivery_Process_Action::init();
|
||||
|
||||
@@ -27,39 +27,42 @@ class Wiaas_Delivery_Process_Addon extends Gravity_Flow_Extension {
|
||||
public function init() {
|
||||
|
||||
parent::init();
|
||||
|
||||
add_action( 'gravityflow_entry_detail', array( $this, 'display_process_steps_details' ), 10, 3 );
|
||||
|
||||
add_action('gravityflow_title_entry_detail', array( $this, 'process_title' ), 10, 3);
|
||||
|
||||
add_filter( 'gform_upload_path', array( $this, 'post_file_upload' ), 10, 2 );
|
||||
}
|
||||
|
||||
public function init_ajax() {
|
||||
parent::init_ajax();
|
||||
add_action( 'wp_ajax_wiaas_get_action_entry', array( $this, 'ajax_get_action_entry' ) );
|
||||
|
||||
// this AJAX action is here and not in /admin folder because of Gravity Forms extension logic
|
||||
add_action( 'wp_ajax_wiaas_delivery_get_form', array( $this, 'ajax_get_form' ) );
|
||||
}
|
||||
|
||||
public function ajax_get_form() {
|
||||
|
||||
public function post_file_upload($path_info, $form_id) {
|
||||
$form_id = isset( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : 0;
|
||||
|
||||
$wp_uploads = wp_upload_dir();
|
||||
$field_id = sanitize_text_field( rgget( 'field_id' ) );
|
||||
|
||||
if ( empty( $wp_uploads['subdir'] ) ) {
|
||||
$path_info['path'] = $wp_uploads['path'] . wiaas_documents_base_dir();
|
||||
$path_info['url'] = $wp_uploads['url'] . wiaas_documents_base_dir();
|
||||
$path_info['subdir'] = wiaas_documents_base_dir();
|
||||
} else {
|
||||
$new_subdir = wiaas_documents_base_dir() . $wp_uploads['subdir'];
|
||||
$entry_id = absint( rgget( 'entry_id' ) );
|
||||
|
||||
$path_info['path'] = str_replace( $wp_uploads['subdir'], $new_subdir, $wp_uploads['path'] );
|
||||
$path_info['url'] = str_replace( $wp_uploads['subdir'], $new_subdir, $wp_uploads['url'] );
|
||||
$path_info['subdir'] = str_replace( $wp_uploads['subdir'], $new_subdir, $wp_uploads['subdir'] );
|
||||
}
|
||||
$field_values = array( $field_id => $entry_id );
|
||||
|
||||
error_log($path_info);
|
||||
gravity_form_enqueue_scripts( $form_id, true );
|
||||
|
||||
return $path_info;
|
||||
$is_admin = isset( $_GET['is_admin'] );
|
||||
if ( $is_admin ) {
|
||||
wp_enqueue_style( 'common', site_url() . '/wp-admin/css/common.css', array(), $this->_version );
|
||||
} else {
|
||||
wp_enqueue_style( 'common', get_stylesheet_directory_uri() . '/style.css', array(), $this->_version );
|
||||
}
|
||||
|
||||
wp_print_styles();
|
||||
wp_print_scripts();
|
||||
// Render an AJAX-enabled form.
|
||||
// https://www.gravityhelp.com/documentation/article/embedding-a-form/#function-call
|
||||
$html = gravity_form( $form_id, true, false, false, $field_values, true, 1, false );
|
||||
printf( "<div id='wiaas-delivery-process-form' style='padding:10px;'>%s</div>", $html );
|
||||
die();
|
||||
}
|
||||
|
||||
|
||||
@@ -125,170 +128,6 @@ class Wiaas_Delivery_Process_Addon extends Gravity_Flow_Extension {
|
||||
return '';
|
||||
}
|
||||
|
||||
public function display_process_steps_details($form, $entry, $current_step) {
|
||||
|
||||
$delivery_settings = rgar($form, 'wiaas_delivery_process');
|
||||
|
||||
if ($delivery_settings['delivery_form_type'] === 'action') {
|
||||
return;
|
||||
}
|
||||
|
||||
$workflow_api = new Gravity_Flow_API($form['id']);
|
||||
|
||||
$steps = $workflow_api->get_steps();
|
||||
|
||||
foreach ($steps as $index => $step) {
|
||||
|
||||
if (! $step->is_active()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$is_step_running = $step->get_status() === 'pending';
|
||||
$is_current_step = $step->get_id() === $current_step->get_id();
|
||||
|
||||
$disabled_style = $is_step_running ? '' : 'opacity: 0.5';
|
||||
|
||||
?>
|
||||
|
||||
<div class="postbox" style="<?php esc_attr_e($disabled_style, 'wiaas') ?>">
|
||||
|
||||
<h3>
|
||||
<span><?php esc_html_e($step->get_name(), 'wiaas') ?></span>
|
||||
</h3>
|
||||
|
||||
<?php
|
||||
if ($is_current_step) {
|
||||
Gravity_Flow_Entry_Detail::maybe_show_instructions(true, true, $current_step, $form, $entry);
|
||||
|
||||
$action_form = GFAPI::get_form( $step->target_form_id );
|
||||
|
||||
if (empty($action_form)) {
|
||||
|
||||
echo '</div>';
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$action_delivery_settings = rgar($action_form, 'wiaas_delivery_process');
|
||||
|
||||
?>
|
||||
|
||||
<div class="submitbox" style="padding: 10px;">
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<?php
|
||||
|
||||
if (! $action_delivery_settings['automatic_action_entries_enabled']) {
|
||||
|
||||
$form_url = admin_url( 'admin-ajax.php' ) . '?action=gravityflowparentchild_get_form&order_id=65&form_id=' . $action_form['id'] . '&wiaas_delivery_process_id=' . $entry['id'];
|
||||
$form_url .= '&is_admin=1';
|
||||
|
||||
$form_link = sprintf(
|
||||
'<a href="%s&TB_iframe=true&width=600&height=550" class="button button-primary thickbox">' .
|
||||
'<i class="fa fa-plus"></i> ' . $action_form['title'] . '</a>',
|
||||
$form_url );
|
||||
|
||||
echo $form_link;
|
||||
}
|
||||
|
||||
echo '<br><br><br>';
|
||||
|
||||
$page_size = 20;
|
||||
$search_criteria = array(
|
||||
'status' => 'active',
|
||||
'field_filters' => array(
|
||||
array( 'key' => 'wiaas_delivery_process_id',
|
||||
'value' => $entry['id']
|
||||
),
|
||||
),
|
||||
);
|
||||
$sorting = array( 'key' => 'date_created', 'direction' => 'DESC' );
|
||||
$paging = array( 'offset' => 0, 'page_size' => $page_size );
|
||||
|
||||
$entries = GFAPI::get_entries( $action_form, $search_criteria, $sorting, $paging );
|
||||
|
||||
foreach ($entries as $action_entry) {
|
||||
$this->_display_step_action_entry($action_form, $action_entry);
|
||||
}
|
||||
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private function _display_step_action_entry($action_form, $action_entry) {
|
||||
$workflow_api = new Gravity_Flow_API($action_entry['form_id']);
|
||||
|
||||
$current_action_step = $workflow_api->get_current_step($action_entry);
|
||||
|
||||
|
||||
?>
|
||||
<table>
|
||||
|
||||
<?php
|
||||
foreach ($action_form['fields'] as $field) {
|
||||
|
||||
if ($field->type === 'wiaas_order') {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($field->type === 'workflow_discussion') {
|
||||
|
||||
echo '<tr><td colspan="2">' . $field->get_value_entry_detail($action_entry[$field->id]) . '</td></tr>';
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$value = $field->get_value_entry_detail($action_entry[$field->id]);
|
||||
$label = $field->get_field_label(false, $action_entry[$field->id]);
|
||||
|
||||
echo '<tr>' .
|
||||
'<td><strong>' . $label . ' : </strong></td>' .
|
||||
'<td>' . $value . '</td>' .
|
||||
'</tr>';
|
||||
}
|
||||
|
||||
if (! empty($current_action_step)) {
|
||||
|
||||
?>
|
||||
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<a class="button" href="<?php echo $current_action_step->get_entry_url() ?>">
|
||||
View
|
||||
<?php echo $current_action_step->get_status_label($current_action_step->get_status()) ?>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function scripts() {
|
||||
|
||||
@@ -346,75 +185,85 @@ class Wiaas_Delivery_Process_Addon extends Gravity_Flow_Extension {
|
||||
'title' => esc_html__( 'Delivery Process', 'wiaas' ),
|
||||
'fields' => array(
|
||||
array(
|
||||
'name' => 'delivery_form_type',
|
||||
'name' => 'delivery_process',
|
||||
'label' => esc_html__( 'Delivery Form Type', 'wiaas' ),
|
||||
'type' => 'delivery_form_type',
|
||||
),
|
||||
array(
|
||||
'name' => 'delivery_action_code',
|
||||
'label' => esc_html__( 'Action code', 'wiaas' ),
|
||||
'type' => 'delivery_action_code',
|
||||
),
|
||||
array(
|
||||
'name' => 'delivery_action_form_type',
|
||||
'label' => esc_html__( 'Automatic?', 'wiaas' ),
|
||||
'type' => 'delivery_action_form_automatic',
|
||||
'type' => 'delivery_process',
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function settings_delivery_form_type() {
|
||||
public function settings_delivery_process() {
|
||||
|
||||
$this->settings_select(array(
|
||||
'name' => 'delivery_form_type',
|
||||
'choices' => array(
|
||||
array( 'value' => 'process', 'label' => 'Process Form' ),
|
||||
array( 'value' => 'action', 'label' => 'Action Form' ),
|
||||
array( 'value' => 'process', 'label' => 'Process Form' )
|
||||
),
|
||||
'after_select' => '<p class="description"> Choose if this form will be used as process form or action form.</p>' .
|
||||
'<p class="description"> <strong>Process form</strong> defines order delivery process workflow.</p>' .
|
||||
'<p class="description"> <strong>Action form</strong> defines custom order data that is collected from delivery process participants.</p>'
|
||||
));
|
||||
}
|
||||
|
||||
public function settings_delivery_action_code() {
|
||||
$this->settings_select(array(
|
||||
'name' => 'delivery_action_code',
|
||||
'choices' => array(
|
||||
array( 'value' => '', 'label' => 'Select action code ...' ),
|
||||
array( 'value' => 'customer-acceptance', 'label' => 'Customer acceptance' ),
|
||||
array( 'value' => 'validate-questionnaire', 'label' => 'Validate Questionnaire' ),
|
||||
array( 'value' => 'schedule-meeting', 'label' => 'Schedule meeting' )
|
||||
),
|
||||
'after_select' => '<p class="description"> Choose action code for action form.</p>'
|
||||
));
|
||||
}
|
||||
|
||||
public function settings_delivery_action_form_automatic() {
|
||||
?>
|
||||
<br /> <br /> <br />
|
||||
<?php
|
||||
|
||||
$this->settings_checkbox_and_select(array(
|
||||
'checkbox' => array(
|
||||
'label' => esc_html__( 'Enable', 'wiaas' ),
|
||||
'name' => 'automatic_action_entries_enabled',
|
||||
'defeault_value' => '0',
|
||||
),
|
||||
'select' => array(
|
||||
'name' => 'automatic_action_entries_type',
|
||||
|
||||
$settings = $this->get_current_settings();
|
||||
|
||||
if ($settings['delivery_form_type'] !== 'process') {
|
||||
|
||||
$this->settings_select(array(
|
||||
'name' => 'delivery_action_code',
|
||||
'choices' => array(
|
||||
array(
|
||||
'value' => 'single',
|
||||
'label' => esc_html__( 'Single entry', 'wiaas' ),
|
||||
),
|
||||
array(
|
||||
'value' => 'bundle',
|
||||
'label' => esc_html__( 'Entry per bundle', 'wiaas' ),
|
||||
)
|
||||
array( 'value' => '', 'label' => 'Select action code ...' ),
|
||||
array( 'value' => 'customer-acceptance', 'label' => 'Customer acceptance' ),
|
||||
array( 'value' => 'validate-questionnaire', 'label' => 'Validate Questionnaire' ),
|
||||
array( 'value' => 'schedule-meeting', 'label' => 'Schedule meeting' )
|
||||
),
|
||||
'after_select' => '<p class="description">Automatic entries can be created once per order or per every bundle in order.</p>' .
|
||||
'<p class="description">Automatic entry will not be created if any required field cannot be populated.</p>',
|
||||
)
|
||||
'after_select' => '<p class="description"> Choose action code for action form.</p>'
|
||||
));
|
||||
|
||||
|
||||
$this->settings_checkbox_and_select(array(
|
||||
'checkbox' => array(
|
||||
'label' => esc_html__( 'Automatic', 'wiaas' ),
|
||||
'name' => 'automatic_action_entries_enabled',
|
||||
'default_value' => '0',
|
||||
),
|
||||
'select' => array(
|
||||
'name' => 'automatic_action_entries_type',
|
||||
'choices' => array(
|
||||
array(
|
||||
'value' => 'single',
|
||||
'label' => esc_html__( 'Single entry', 'wiaas' ),
|
||||
),
|
||||
array(
|
||||
'value' => 'bundle',
|
||||
'label' => esc_html__( 'Entry per bundle', 'wiaas' ),
|
||||
)
|
||||
),
|
||||
'after_select' => '<p class="description">Automatic entries can be created once per order or per every bundle in order.</p>' .
|
||||
'<p class="description">Automatic entry will not be created if any required field cannot be populated.</p>',
|
||||
)
|
||||
));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$this->settings_select(array(
|
||||
'name' => 'delivery_country',
|
||||
'choices' => array(
|
||||
array( 'value' => 'se', 'label' => 'Sweden' ),
|
||||
array( 'value' => 'dk', 'label' => 'Denmark' ),
|
||||
array( 'value' => 'fi', 'label' => 'Finland' )
|
||||
),
|
||||
'after_select' => '<p class="description"> Choose country for which this process is defined.</p>'
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -79,9 +79,16 @@ class Wiaas_Delivery_Process_Step extends Gravity_Flow_Step {
|
||||
|
||||
public function update_step_status($status = false) {
|
||||
|
||||
if ($status === 'cancelled') {
|
||||
if (isset( $_POST['_gravityflow_admin_action'] ) ) {
|
||||
|
||||
$status = 'complete';
|
||||
$admin_action = rgpost( 'gravityflow_admin_action' );
|
||||
|
||||
list( $base_admin_action, $action_id ) = rgexplode( '|', $admin_action, 2 );
|
||||
|
||||
if ($base_admin_action === 'send_to_step' && $this->get_status() === 'pending') {
|
||||
|
||||
$status = 'complete';
|
||||
}
|
||||
}
|
||||
|
||||
parent::update_step_status($status);
|
||||
@@ -262,12 +269,9 @@ class Wiaas_Delivery_Process_Step extends Gravity_Flow_Step {
|
||||
return $action_entries_ids;
|
||||
}
|
||||
|
||||
$new_entry = array_merge($new_entry,array(
|
||||
'form_id' => $this->target_form_id,
|
||||
'wiaas_delivery_process_id' => $this->get_entry_id(),
|
||||
'wiaas_delivery_order_id' => $order_id,
|
||||
'wiaas_delivery_step_name' => $this->get_name(),
|
||||
));
|
||||
$new_entry['form_id'] = $target_form['id'];
|
||||
$new_entry['wiaas_delivery_process_id'] = $this->get_entry_id();
|
||||
$new_entry['wiaas_delivery_order_id'] = $order_id;
|
||||
|
||||
$entry_id = GFAPI::add_entry( $new_entry );
|
||||
|
||||
|
||||
@@ -28,30 +28,33 @@ class Wiaas_Field_Order_Bundle_Select extends GF_Field_Select {
|
||||
return $this->get_selected_bundle_display_name($value);
|
||||
}
|
||||
|
||||
public function get_field_input( $form, $value = '', $entry = null ) {
|
||||
|
||||
$this->choices = array();
|
||||
|
||||
$order_id = null;
|
||||
|
||||
if (! empty($entry)) {
|
||||
|
||||
$order_field = GFCommon::get_fields_by_type($form, array( 'wiaas_order' ) )[0];
|
||||
|
||||
$order_id = ! empty($order_field) ? $entry[$order_field->id] : null;
|
||||
|
||||
} else if( ! empty($value)) {
|
||||
|
||||
list ($order_id, $item_id) = explode('|', $value);
|
||||
}
|
||||
|
||||
if (! empty($order_id)) {
|
||||
|
||||
$this->choices = $this->get_selected_bundle_display_name($order_id);
|
||||
}
|
||||
|
||||
return parent::get_field_input( $form, $value, $entry );
|
||||
}
|
||||
// public function get_field_input( $form, $value = '', $entry = null ) {
|
||||
//
|
||||
// $this->choices = array();
|
||||
//
|
||||
// $order_id = null;
|
||||
//
|
||||
// if (! empty($entry)) {
|
||||
//
|
||||
// $order_field = GFCommon::get_fields_by_type($form, array( 'wiaas_order' ) )[0];
|
||||
//
|
||||
// $order_id = ! empty($order_field) ? $entry[$order_field->id] : null;
|
||||
//
|
||||
// } else if( ! empty($value)) {
|
||||
//
|
||||
// list ($order_id, $item_id) = explode('|', $value);
|
||||
// } else {
|
||||
//
|
||||
// $order_id = absint(rgget('order_id'));
|
||||
// }
|
||||
//
|
||||
// if (! empty($order_id)) {
|
||||
//
|
||||
// $this->choices = $this->get_selected_bundle_display_name($order_id);
|
||||
// }
|
||||
//
|
||||
// return parent::get_field_input( $form, $value, $entry );
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -65,13 +65,14 @@ class Wiaas_Order_Fields {
|
||||
|
||||
public static function map_order_to_entry($order_id, $form, $bundle_item_id = null) {
|
||||
|
||||
|
||||
if (empty($form['fields']) ||
|
||||
empty(GFCommon::get_fields_by_type( $form, array('wiaas_order')) ) ) {
|
||||
// form does not have order field so cannot be mapped
|
||||
return false;
|
||||
}
|
||||
|
||||
error_log(json_encode('here'));
|
||||
|
||||
$order = wc_get_order($order_id);
|
||||
|
||||
$bundle_item = $order->get_item($bundle_item_id);
|
||||
|
||||
@@ -19,7 +19,7 @@ export const fetchNextActions = () => {
|
||||
return dispatch => {
|
||||
dispatch(requestNextActions());
|
||||
return client.fetch({
|
||||
url: `${API_SERVER}/wp-json/wiaas/next-delivery-steps`
|
||||
url: `${API_SERVER}/wp-json/wiaas/delivery/next-actions`
|
||||
})
|
||||
.then(response => dispatch(recieveNextActions(response.data)))
|
||||
.catch(error => {
|
||||
|
||||
@@ -23,11 +23,11 @@ const recieveCustomerAcceptance = (json) => ({
|
||||
customerAcceptance: json
|
||||
});
|
||||
|
||||
export const fetchCustomerAcceptance = (idEntry) => {
|
||||
export const fetchCustomerAcceptance = (idOrder) => {
|
||||
return dispatch => {
|
||||
dispatch(requestCustomerAcceptance());
|
||||
return htmlClient.fetch({
|
||||
url: `${API_SERVER}/wp-json/wiaas/customer-acceptance/${idEntry}`,
|
||||
url: `${API_SERVER}/wp-json/wiaas/delivery/${idOrder}/customer-acceptance`,
|
||||
method: 'get'
|
||||
})
|
||||
.then(response => {
|
||||
@@ -45,15 +45,15 @@ const uploadAcceptanceAction = () => ({
|
||||
type: UPLOAD_CUSTOMER_ACCEPTANCE
|
||||
});
|
||||
|
||||
export const uploadAcceptance = (idEntry, file) => {
|
||||
export const uploadAcceptance = (idOrder, file) => {
|
||||
return dispatch => {
|
||||
dispatch(uploadAcceptanceAction());
|
||||
return htmlClient.uploadFile(file, {
|
||||
url: `${API_SERVER}/wp-json/wiaas/customer-acceptance/${idEntry}/upload-file`
|
||||
url: `${API_SERVER}/wp-json/wiaas/delivery/${idOrder}/customer-acceptance/upload`
|
||||
}).then(response => {
|
||||
if (typeof response.data !== 'undefined') {
|
||||
dispatch(updateMessages(response.data.messages, orderMessages));
|
||||
dispatch(fetchCustomerAcceptance(idEntry));
|
||||
dispatch(fetchCustomerAcceptance(idOrder));
|
||||
}
|
||||
}).catch(error => {
|
||||
htmlClient.onError(error, dispatch);
|
||||
@@ -71,21 +71,21 @@ const sendCustomerAcceptance = () => ({
|
||||
type: SEND_CUSTOMER_ACCEPTANCE
|
||||
});
|
||||
|
||||
export const acceptDeclineInstallation = (idEntry, actionType, declineReason) => {
|
||||
export const acceptDeclineInstallation = (idOrder, actionType, declineReason) => {
|
||||
return dispatch => {
|
||||
dispatch(sendCustomerAcceptance());
|
||||
return htmlClient.fetch({
|
||||
url: `${API_SERVER}/wp-json/wiaas/customer-acceptance/${idEntry}`,
|
||||
url: `${API_SERVER}/wp-json/wiaas/delivery/${idOrder}/customer-acceptance`,
|
||||
method: 'post',
|
||||
data: {
|
||||
actionType,
|
||||
declineReason
|
||||
'action_type': actionType,
|
||||
'decline_reason': declineReason
|
||||
}
|
||||
})
|
||||
.then(response => {
|
||||
if (response.data) {
|
||||
dispatch(updateMessages(response.data.messages, orderMessages));
|
||||
dispatch(fetchCustomerAcceptance(idEntry));
|
||||
dispatch(fetchCustomerAcceptance(idOrder));
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
|
||||
@@ -36,7 +36,7 @@ export const fetchCustomerQuestionnaires = (idOrder) => {
|
||||
return dispatch => {
|
||||
dispatch(requestCustomerQuestionnaires());
|
||||
return htmlClient.fetch({
|
||||
url: `${API_SERVER}/wp-json/wiaas/customer-questionnaires/${idOrder}`,
|
||||
url: `${API_SERVER}/wp-json/wiaas/delivery/${idOrder}/customer-questionnaires`,
|
||||
method: 'get'
|
||||
})
|
||||
.then(response => {
|
||||
@@ -55,7 +55,7 @@ export const uploadCustomerQuestionnaire = (orderId, actionId, file) => {
|
||||
return dispatch => {
|
||||
dispatch(uploadCustomerQuestionnaireAction());
|
||||
return htmlClient.uploadFile(file, {
|
||||
url: `${API_SERVER}/wp-json/wiaas/customer-questionnaires/${orderId}/upload/${actionId}`,
|
||||
url: `${API_SERVER}/wp-json/wiaas/delivery/${orderId}/customer-questionnaires/upload/${actionId}`,
|
||||
}).then(response => {
|
||||
if (typeof response.data !== 'undefined') {
|
||||
dispatch(updateMessages(response.data.messages, orderMessages));
|
||||
|
||||
@@ -31,10 +31,10 @@ class CustomerAcceptance extends Component {
|
||||
fileHandler.download(fileUrl, fileName);
|
||||
}
|
||||
|
||||
uploadFile(idEntry, acceptedFiles, rejectedFiles) {
|
||||
uploadFile(idOrder, acceptedFiles, rejectedFiles) {
|
||||
if(acceptedFiles && acceptedFiles.length){
|
||||
const file = acceptedFiles[0];
|
||||
this.props.dispatch(uploadAcceptance(idEntry, file));
|
||||
this.props.dispatch(uploadAcceptance(idOrder, file));
|
||||
}
|
||||
|
||||
if(rejectedFiles && rejectedFiles.length) {
|
||||
@@ -59,9 +59,9 @@ class CustomerAcceptance extends Component {
|
||||
}
|
||||
|
||||
acceptDeclineInstallation() {
|
||||
const {idProcess} = this.props.step;
|
||||
const {idOrder} = this.props.step;
|
||||
const {actionType, reason} = this.state;
|
||||
this.props.dispatch(acceptDeclineInstallation(idProcess, actionType, reason));
|
||||
this.props.dispatch(acceptDeclineInstallation(idOrder, actionType, reason));
|
||||
this.setState({reason: ''});
|
||||
}
|
||||
|
||||
@@ -107,8 +107,8 @@ class CustomerAcceptance extends Component {
|
||||
}
|
||||
|
||||
componentDidMount(){
|
||||
const {idProcess} = this.props.step;
|
||||
this.props.dispatch(fetchCustomerAcceptance(idProcess));
|
||||
const {idOrder} = this.props.step;
|
||||
this.props.dispatch(fetchCustomerAcceptance(idOrder));
|
||||
}
|
||||
|
||||
render() {
|
||||
@@ -137,7 +137,7 @@ class CustomerAcceptance extends Component {
|
||||
multiple={false}
|
||||
accept=".pdf,.docx,.doc,.xlsx,.xls,.odt,.ods,.jpg,.png,.jpeg"
|
||||
activeClassName="upload-file-accept"
|
||||
onDrop={(acceptedFiles, rejectedFiles)=>{this.uploadFile(step.idProcess, acceptedFiles, rejectedFiles)}}>
|
||||
onDrop={(acceptedFiles, rejectedFiles)=>{this.uploadFile(step.idOrder, acceptedFiles, rejectedFiles)}}>
|
||||
<h5 className="drop-zone-text">{orderTexts.labels.UPLOAD_ACCEPTANCE_LABEL}</h5>
|
||||
</Dropzone>
|
||||
</Col>
|
||||
@@ -148,7 +148,7 @@ class CustomerAcceptance extends Component {
|
||||
{
|
||||
customerAcceptance.documents.map((document, index) => <div key={'acceptance-documnet-' + index}>
|
||||
<span className="document-link">
|
||||
<i className={'fa fa-file'}></i> <a target="_blank" href={document.url}> {document.name} ({document.extension}) </a>
|
||||
<i className={'fa fa-file'}></i> <a target="_blank" href={document.url}> {document.name} </a>
|
||||
</span>
|
||||
<span className="document-status">
|
||||
{document.validation} <div className={'status-icon ' + document.validation}></div>
|
||||
|
||||
@@ -23,8 +23,8 @@ class ValidateQuestionnaire extends Component {
|
||||
return (
|
||||
<div id="validate-questionnaire" className="validate-questionnaire">
|
||||
{
|
||||
customerQuestionnaires && customerQuestionnaires.actions &&
|
||||
customerQuestionnaires.actions.map((customerQuestionnaryAction) =>
|
||||
customerQuestionnaires &&
|
||||
customerQuestionnaires.map((customerQuestionnaryAction) =>
|
||||
<ValidateQuestionnaireItem
|
||||
action={customerQuestionnaryAction}
|
||||
key={'validate-questionnaire-' + customerQuestionnaryAction.action_id}
|
||||
|
||||
@@ -47,9 +47,8 @@ class ValidateQuestionnaireItem extends Component {
|
||||
<Col xl="7" lg="8">
|
||||
<div>
|
||||
|
||||
<span className="document-link"
|
||||
onClick={() => {this.downloadDocument(document)}}>
|
||||
<i className={'fa fa-file'}></i> {document.version}
|
||||
<span className="document-link">
|
||||
<i className={'fa fa-file'}></i> <a target="_blank" href={document.url}> {document.name} </a>
|
||||
</span>
|
||||
<br />
|
||||
<span className="document-status">
|
||||
@@ -60,8 +59,7 @@ class ValidateQuestionnaireItem extends Component {
|
||||
(action.comments && action.comments.length > 0) &&
|
||||
<div>
|
||||
{action.comments.map((comment, key) => <div key={'step-comment-' + document.idDocument + '-' + key} className="step-comment">
|
||||
<div>{comment.user} - {comment.addDate}</div>
|
||||
<div>{comment.comment}</div>
|
||||
<div>{comment}</div>
|
||||
</div>)}
|
||||
</div>
|
||||
}
|
||||
@@ -80,9 +78,8 @@ class ValidateQuestionnaireItem extends Component {
|
||||
: <div className="package-document">
|
||||
<Row>
|
||||
<Col>
|
||||
<span className="document-link"
|
||||
onClick={() => {this.downloadDocument(document)}}>
|
||||
<i className={'fa fa-file'}></i> {document.version}
|
||||
<span className="document-link">
|
||||
<i className={'fa fa-file'}></i> <a target="_blank" href={document.url}> {document.name} </a>
|
||||
</span>
|
||||
<br />
|
||||
<span className="document-status">
|
||||
|
||||
@@ -11,10 +11,15 @@ function formatAddress(addressObject) {
|
||||
}
|
||||
|
||||
export const fromWCOrder = (WCOrder) => {
|
||||
let processInfo = Object.assign({},WCOrder['delivery-process']);
|
||||
if (WCOrder['delivery-process']){
|
||||
let processInfo = undefined;
|
||||
|
||||
if (WCOrder['delivery-process']) {
|
||||
|
||||
processInfo = Object.assign({},WCOrder['delivery-process']);
|
||||
processInfo.steps = WCOrder['delivery-process'].steps.map(step=>fromWiaasProcessStep(step));
|
||||
|
||||
}
|
||||
|
||||
return {
|
||||
id: WCOrder.id,
|
||||
number: WCOrder.number,
|
||||
|
||||
Reference in New Issue
Block a user