Selaa lähdekoodia

fix import protocol

Dalibor Votruba 1 vuosi sitten
vanhempi
commit
e13d5d8009
1 muutettua tiedostoa jossa 60 lisäystä ja 2 poistoa
  1. 60 2
      studiou-wc-ord-print-statuses/includes/class-import-manager.php

+ 60 - 2
studiou-wc-ord-print-statuses/includes/class-import-manager.php

@@ -25,7 +25,14 @@ class Import_Manager {
         <div class="wrap">
             <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
             
-            
+            <h2><?php _e('Import InPrint Protocol', 'studiou-wc-ord-print-statuses'); ?></h2>
+            <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" enctype="multipart/form-data">
+                <input type="hidden" name="action" value="import_inprint_protocol">
+                <?php wp_nonce_field('import_inprint_protocol', 'import_inprint_protocol_nonce'); ?>
+                <input type="file" name="inprint_csv" accept=".csv" required>
+                <?php submit_button(__('Import InPrint Protocol', 'studiou-wc-ord-print-statuses')); ?>
+            </form>
+
             <h2><?php _e('Import Delivered Protocol', 'studiou-wc-ord-print-statuses'); ?></h2>
             <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" enctype="multipart/form-data">
                 <input type="hidden" name="action" value="import_delivered_protocol">
@@ -37,6 +44,56 @@ class Import_Manager {
         <?php
     }
 
+    public function handle_import_inprint_protocol() {
+        if (!current_user_can('manage_woocommerce')) {
+            wp_die(__('You do not have sufficient permissions to access this page.', 'studiou-wc-ord-print-statuses'));
+        }
+
+        check_admin_referer('import_inprint_protocol', 'import_inprint_protocol_nonce');
+
+        if (!isset($_FILES['inprint_csv'])) {
+            wp_die(__('No file uploaded.', 'studiou-wc-ord-print-statuses'));
+        }
+
+        $file = $_FILES['inprint_csv'];
+        $csv_data = $this->parse_csv($file['tmp_name']);
+
+        if (!$csv_data) {
+            wp_die(__('Error parsing CSV file.', 'studiou-wc-ord-print-statuses'));
+        }
+
+        $updated_count = 0;
+        $errors = array();
+
+        foreach ($csv_data as $row) {
+            if (!isset($row['order_no']) || !isset($row['ExternalOrder']) || !isset($row['ExternalOrderDate'])) {
+                $errors[] = __('Invalid row format in CSV.', 'studiou-wc-ord-print-statuses');
+                continue;
+            }
+
+            $order = wc_get_order($row['order_no']);
+            if (!$order) {
+                $errors[] = sprintf(__('Order %s not found.', 'studiou-wc-ord-print-statuses'), $row['order_no']);
+                continue;
+            }
+            $order->update_status('wc-in-print');
+            $order->update_meta_data('in_print_date', current_time('mysql'));
+            $order->update_meta_data('external_ref_ord_no', $row['ExternalOrder']);
+            $order->update_meta_data('external_ref_ord_date', $row['ExternalOrderDate']);
+            $order->save();
+
+            $updated_count++;
+        }
+
+        $message = sprintf(__('%d orders updated successfully.', 'studiou-wc-ord-print-statuses'), $updated_count);
+        if (!empty($errors)) {
+            $message .= ' ' . sprintf(__('%d errors occurred: %s', 'studiou-wc-ord-print-statuses'), count($errors), implode(', ', $errors));
+        }
+
+        wp_redirect(add_query_arg('message', urlencode($message), admin_url('admin.php?page=studiou-import-protocols')));
+        exit;
+    }
+
     public function handle_import_delivered_protocol() {
         if (!current_user_can('manage_woocommerce')) {
             wp_die(__('You do not have sufficient permissions to access this page.', 'studiou-wc-ord-print-statuses'));
@@ -63,12 +120,13 @@ class Import_Manager {
                 $errors[] = __('Invalid row format in CSV.', 'studiou-wc-ord-print-statuses');
                 continue;
             }
-
+           
             $order = wc_get_order($row['order_no']);
             if (!$order) {
                 $errors[] = sprintf(__('Order %s not found.', 'studiou-wc-ord-print-statuses'), $row['order_no']);
                 continue;
             }
+
             $order->update_status('wc-completed');
             $order->update_meta_data('external_ref_ord_delivered', current_time('mysql'));
             $order->save();