Plugin Directory

Changeset 2858515


Ignore:
Timestamp:
02/01/2023 05:46:19 PM (3 years ago)
Author:
ascendedcrow
Message:

Version = 1.0.20 =

Location:
shop-2-api/trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • shop-2-api/trunk/assets/shop2api_order.js

    r2825412 r2858515  
    77        });
    88
    9         populate_data();
    109        retrieve_from_shop2api();
    1110
    12         //Save Koopblok data
     11        // Save Order data
    1312        $(document).on('click', '#save-order-data', function (event) {
    1413            event.preventDefault();
     
    4039            });
    4140        });
     41
     42        // Select change
     43        $(document).on( 'change', '#orders-ean', handle_cat_change);
    4244    })
     45
     46    function handle_cat_change(e, ) {
     47        $('#orders-ean-value').children().remove()
     48        if ($(this).val() === 'Product') {
     49            populate_product_dropdown();
     50        }
     51        if ($(this).val() === 'MetaData') {
     52            populate_metadata_dropdown();
     53        }
     54    }
    4355
    4456    function serialize(data) {
     
    5769    }
    5870
    59     function populate_data() {
     71    function populate_product_dropdown() {
    6072        let woocommerce_option_properties = settings.wc_field_options.success.schema.properties;
    6173        let _select = $('#wc-price-field');
    62         let _select_ean = $('#wc-ean-field');
     74        let _select_ean = $('#orders-ean-value');
    6375
    6476        for (const item in woocommerce_option_properties) {
     
    7587            } else {
    7688                let dropdown_values = {"value": item, "text": item}
    77                 if (item==='sku') {
    78                     dropdown_values['selected'] = 'selected';
    79                 }
    8089                $('<option />', dropdown_values).appendTo(_select);
    8190                $('<option />', dropdown_values).appendTo(_select_ean);
    8291            }
    8392        }
     93
    8494    }
    8595
     
    8797        let json_data = settings.orders_data;
    8898        if (json_data.length !== 0) {
    89             $('#orders-active').prop('checked', json_data[0].active);
    90             $('#orders-status').val(json_data[0].status);
    91             $('#orders-paid').prop('checked', json_data[0].paid);
     99            let order_data = json_data[0];
     100
     101            $('#orders-active').prop('checked', order_data.active);
     102            $('#orders-status').val(order_data.status);
     103            $('#orders-paid').prop('checked', order_data.paid);
     104
     105            document.getElementById("orders-ean").value = order_data.woocommerce_ean_category;
     106            if (order_data.woocommerce_ean_category === 'Product') {
     107                populate_product_dropdown();
     108                document.getElementById("orders-ean-value").value = order_data.woocommerce_ean_field;
     109            }
     110
     111            if (order_data.woocommerce_ean_category === 'MetaData') {
     112                populate_metadata_dropdown();
     113                document.getElementById("orders-ean-value").value = order_data.woocommerce_ean_field;
     114            }
     115
     116            return
     117        }
     118        document.getElementById("orders-ean-value").value = 'sku';
     119        populate_product_dropdown();
     120    }
     121
     122    // function populate_attribute_dropdown() {
     123    //     for (let i in settings.wc_metadata_dropdown_values.success) {
     124    //         let wc_metadata_val = settings.wc_metadata_dropdown_values.success[i];
     125    //         let _select_ean_dropdown = $('#orders-ean-value');
     126    //
     127    //         let dropdown_values = {
     128    //             'value': wc_metadata_val['bol_category'],
     129    //             'text': wc_metadata_val['woocommerce_field']
     130    //         }
     131    //
     132    //         $('<option />', dropdown_values).appendTo(_select_ean_dropdown);
     133    //     }
     134    // }
     135
     136    function populate_metadata_dropdown() {
     137        for (i in settings.wc_metadata_dropdown_values.success) {
     138            let wc_metadata_val = settings.wc_metadata_dropdown_values.success[i];
     139            let _select_ean_dropdown = $('#orders-ean-value');
     140
     141            let dropdown_values = {
     142                'value': wc_metadata_val['bol_category'],
     143                'text': wc_metadata_val['woocommerce_field']
     144            }
     145
     146            $('<option />', dropdown_values).appendTo(_select_ean_dropdown);
    92147        }
    93148    }
  • shop-2-api/trunk/includes/Api/Shop2ApiConnect.php

    r2825412 r2858515  
    2222        $this->header = ['Authorization' => 'Token ' . $token];
    2323        if (get_site_url() == 'http://localhost:8000' || get_site_url() == 'http://127.0.0.1:8000') {
    24             $this->header = array_merge($this->header, ['authurl' => "https://pepperwall.nl/bol"]);
     24            $this->header = array_merge($this->header, ['authurl' => "https://testshop.shop2api.com"]);
    2525        } else {
    2626            $this->header = array_merge($this->header, ['authurl' => get_site_url()]);
     
    456456
    457457    // Set Order data
    458     public function set_order_data($active, $status, $paid)
     458    public function set_order_data($active, $status, $paid, $woocommerce_ean_field, $woocommerce_ean_category)
    459459    {
    460460        $order = $this->get_order();
     
    474474            'paid' => ($paid != ''),
    475475            'status' => $status,
    476             "product" => $order["id"]
     476            "product" => $order["id"],
     477            "woocommerce_ean_field" => $woocommerce_ean_field,
     478            "woocommerce_ean_category" => $woocommerce_ean_category
    477479        ];
    478480
  • shop-2-api/trunk/includes/Base/AjaxButtonActions.php

    r2825412 r2858515  
    310310        $this->check_nonce();
    311311        $shop_2_api_response = $this->shop_2_api_connections->set_order_data(
    312             $_POST['orders-active'], $_POST['orders-status'], $_POST['orders-paid']
     312            $_POST['orders-active'], $_POST['orders-status'], $_POST['orders-paid'], $_POST['orders-ean-value'],
     313            $_POST['orders-ean']
    313314        );
    314315
  • shop-2-api/trunk/includes/Base/Enqueue.php

    r2825412 r2858515  
    237237        $offer_data = $this->handle_api_response($shop_2_api_connection->get_bol_offer_info());
    238238        $orders_data = $this->handle_api_response($shop_2_api_connection->get_order_data());
     239        // Get Dropdown Values
     240        $wc_metadata_dropdown_values = $this->handle_api_response($shop_2_api_connection->get_wc_product_values('meta_data'));
     241        $wc_attributes_dropdown_values = $this->handle_api_response($shop_2_api_connection->get_wc_product_values('attributes'));
    239242
    240243        wp_localize_script('bol2api_scripts_common', 'settings', array(
     
    243246            'wc_field_options' => $wc_field_options,
    244247            'offer_data' => $offer_data,
    245             'orders_data' => $orders_data
     248            'orders_data' => $orders_data,
     249            'wc_metadata_dropdown_values' => $wc_metadata_dropdown_values,
     250            'wc_attributes_dropdown_values' => $wc_attributes_dropdown_values
    246251        ));
    247252    }
  • shop-2-api/trunk/includes/Base/EnqueueWC.php

    r2846945 r2858515  
    4141        add_filter('manage_edit-product_columns', array($this, 'add_columns_into_product_list_filter'));
    4242        add_filter('manage_edit-product_sortable_columns', array($this, "sortable_columns"));
     43
     44        // Custom API Endpoint for getting Metadata
     45        add_action( 'rest_api_init', array($this, 'register_meta_field_search_endpoint' ));
    4346    }
    4447
     
    309312        }
    310313    }
     314
     315    //Add Custom API End-Point
     316
     317
     318    function register_meta_field_search_endpoint(): void
     319    {
     320        register_rest_route( 'shop-2-api/v1', '/search-meta', array(
     321            'methods'  => 'GET',
     322            'callback' => array($this, 'meta_field_search_callback'),
     323        ) );
     324    }
     325
     326    function meta_field_search_callback( $request ) {
     327        $meta_key   = $request->get_param( 'meta_key' );
     328        $meta_value = $request->get_param( 'meta_value' );
     329        $args = array(
     330            'post_type' => 'product',
     331            'meta_query' => array(
     332                array(
     333                    'key' => $meta_key,
     334                    'value' => $meta_value,
     335                    'compare' => '='
     336                )
     337            )
     338        );
     339        $query = new WP_Query( $args );
     340        if ( $query->have_posts() ) {
     341            $products = array();
     342            while ( $query->have_posts() ) {
     343                $query->the_post();
     344                $product = new WC_Product(get_the_ID());
     345                $products[] = array(
     346                    'id' => get_the_ID(),
     347                    'name' => get_the_title(),
     348                    'price' => $product->get_price(),
     349                    'meta_key' => $meta_key,
     350                    'meta_value' => $meta_value,
     351                );
     352            }
     353            return rest_ensure_response( $products );
     354        } else {
     355            return new WP_Error( 'no_products_found', 'No products found.', array( 'status' => 402 ) );
     356        }
     357    }
    311358}
  • shop-2-api/trunk/includes/Init.php

    r2825412 r2858515  
    1818        require_once plugin_dir_path( __FILE__ ). 'Base/Enqueue.php';
    1919        require_once plugin_dir_path( __FILE__ ). 'Base/EnqueueWC.php';
     20        require_once plugin_dir_path( __FILE__ ). 'Base/EnqueueWCAPI.php';
    2021        require_once plugin_dir_path( __FILE__ ). 'Base/SettingsLinks.php';
    2122        require_once plugin_dir_path( __FILE__ ). 'Base/AjaxButtonActions.php';
     
    3334        $cls->register();
    3435
     36        //Add WooCommerce API Custom Calls
     37        $cls = new Shop2Api_EnqueueWCAPI();
     38        $cls->register();
     39
    3540        // Settings Links
    3641        $cls = new Shop2Api_SettingsLinks();
  • shop-2-api/trunk/readme.txt

    r2846945 r2858515  
    1211213) EAN Numbers can now be split up with a comma, so multiple EAN's can be sent over to Bol.com
    122122
     123= 1.0.20 =
     1241) Added an EAN Number to the order sync page
     1252) Small WooCommerce API Changes
     126
    123127== Instructions ==
    1241281) After installing Shop2Api, a new menu item will be available in your WordPress installation, you can continue and click on it and enter you token which was mailed to you.
  • shop-2-api/trunk/shop-2-api.php

    r2846945 r2858515  
    55Plugin URI: https://wordpress.org/plugins/shop-2-api/
    66Description: The plugin Shop2Api will sync products between e-Commerce platforms. The current supported e-Commerce platforms are WooCommerce to Bol.com, and we are working on Amazon, Shopify and others.  We added a koopblok service so that you can check if you lower your price can you get koopblok.
    7 Version: 1.0.19
     7Version: 1.0.20
    88Requires at least: 5.0
    99Requires PHP:      7.2
     
    3434define('SHOP2API_PLUGIN_URL', plugin_dir_url( __FILE__ ));
    3535define('SHOP2API_PLUGIN', plugin_basename( __FILE__ ));
    36 define ('VERSION', '1.0.19');
     36define ('VERSION', '1.0.20');
    3737
    3838// Register items in the project.
  • shop-2-api/trunk/templates/bol-order-sync.php

    r2825412 r2858515  
    33    <?php require_once("common-header.php"); ?>
    44
    5     <div id='bol-connection-error' class='error-message'></div>
    6         <h2>Sync Bol Orders</h2>
    7         <form method="post" action="#" id="orders-form">
    8             <table>
    9                 <tbody id="offer-data-body">
    10                     <tr>
    11                         <td title="Order Service Active" style="padding: 15px 0px 0px 0px;">
    12                             <span class="dashicons dashicons-info-outline"></span>
    13                         </td>
    14                         <td>
    15                             <label for="orders-active">Active</label>
    16                         </td>
    17                         <td>
    18                             <input type="checkbox" name="orders-active" id="orders-active"/>
    19                             <span id="active" class="error-message"></span>
    20                         </td>
    21                     </tr>
    22                     <tr>
    23                         <td title="Set Incoming Orders as Paid, this will set the status in processing and update stock items."
    24                             style="padding: 15px 0px 0px 0px;">
    25                             <span class="dashicons dashicons-info-outline"></span>
    26                         </td>
    27                         <td>
    28                             <label for="orders-paid">Incoming Orders Is Paid (Reduce Stock Items)</label>
    29                         </td>
    30                         <td>
    31                             <input type="checkbox" name="orders-paid" id="orders-paid"/>
    32                             <span id="paid" class="error-message"></span>
    33                         </td>
    34                     </tr>
    35                     <tr>
    36                         <td title="Set the status of the incoming order to a pre-defined WC status."
    37                             style="padding: 15px 0px 0px 0px;">
    38                             <span class="dashicons dashicons-info-outline"></span>
    39                         </td>
    40                         <td>
    41                             <label for="orders-status">Incoming Orders Status</label>
    42                         </td>
    43                         <td>
    44                             <select name="orders-status" id="orders-status">
    45                                 <option value="pending">Pending</option>
    46                                 <option value="processing">Processing</option>
    47                                 <option value="on-hold">On-Hold</option>
    48                                 <option value="completed">Completed</option>
    49                             </select>
    50                             <span id="status" class="error-message"></span>
    51                         </td>
    52                     </tr>
    53                 </tbody>
    54             </table>
    55             <br/>
    56             <button type='submit' class='btn primary'
    57                     title="Save the data to Shop-2-API" id="save-order-data">
    58                     Save
    59             </button>
    60         </form>
    61 
    62 
     5    <div id='bol-connection-error' class='error-message'></div>
     6    <h2>Sync Bol Orders</h2>
     7    <form method="post" action="#" id="orders-form">
     8        <table>
     9            <tbody id="offer-data-body">
     10            <tr>
     11                <td title="Order Service Active" style="padding: 15px 0px 0px 0px;">
     12                    <span class="dashicons dashicons-info-outline"></span>
     13                </td>
     14                <td>
     15                    <label for="orders-active">Active</label>
     16                </td>
     17                <td>
     18                    <input type="checkbox" name="orders-active" id="orders-active"/>
     19                    <span id="active" class="error-message"></span>
     20                </td>
     21                <td></td>
     22            </tr>
     23            <tr>
     24                <td title="EAN Number Field in WC" style="padding: 15px 0px 0px 0px;">
     25                    <span class="dashicons dashicons-info-outline"></span>
     26                </td>
     27                <td>
     28                    <label for="orders-ean">EAN Field</label>
     29                </td>
     30                <td>
     31                    <select name="orders-ean" id="orders-ean" >
     32                        <option value="Product" selected>WooCommerce Product Field</option>
     33                        <option value="MetaData">WooCommerce Metadata Field</option>
     34                    </select>
     35                    <span id="sku" class="error-message"></span>
     36                </td>
     37                <td><select name="orders-ean-value" id="orders-ean-value" ></select></td>
     38            </tr>
     39            <tr>
     40                <td title="Set Incoming Orders as Paid, this will set the status in processing and update stock items."
     41                    style="padding: 15px 0px 0px 0px;">
     42                    <span class="dashicons dashicons-info-outline"></span>
     43                </td>
     44                <td>
     45                    <label for="orders-paid">Incoming Orders Is Paid (Reduce Stock Items)</label>
     46                </td>
     47                <td>
     48                    <input type="checkbox" name="orders-paid" id="orders-paid"/>
     49                    <span id="paid" class="error-message"></span>
     50                </td>
     51            </tr>
     52            <tr>
     53                <td title="Set the status of the incoming order to a pre-defined WC status."
     54                    style="padding: 15px 0px 0px 0px;">
     55                    <span class="dashicons dashicons-info-outline"></span>
     56                </td>
     57                <td>
     58                    <label for="orders-status">Incoming Orders Status</label>
     59                </td>
     60                <td>
     61                    <select name="orders-status" id="orders-status">
     62                        <option value="pending">Pending</option>
     63                        <option value="processing">Processing</option>
     64                        <option value="on-hold">On-Hold</option>
     65                        <option value="completed">Completed</option>
     66                    </select>
     67                    <span id="status" class="error-message"></span>
     68                </td>
     69            </tr>
     70            <tr>
     71                <td title="I Have Combi Deals" style="padding: 15px 0px 0px 0px;">
     72                    <span class="dashicons dashicons-info-outline"></span>
     73                </td>
     74                <td>
     75                    <label for="orders-enable_combi">Enable Combi-Deals</label>
     76                </td>
     77                <td>
     78                    <input type="checkbox" name="orders-enable_combi" id="orders-enable_combi"/>
     79                    <span id="enable_combi" class="error-message"></span>
     80                </td>
     81            </tr>
     82            <tr>
     83                <td title="The EAN Number field which combines all the Combi Deals." style="padding: 15px 0px 0px 0px;">
     84                    <span class="dashicons dashicons-info-outline"></span>
     85                </td>
     86                <td>
     87                    <label for="orders-active">Combi EAN Number</label>
     88                </td>
     89                <td>
     90                    <input type="checkbox" name="orders-combideals" id="orders-active"/>
     91                    <span id="combideals" class="error-message"></span>
     92                </td>
     93            </tr>
     94            </tbody>
     95        </table>
     96        <br/>
     97        <button type='submit' class='btn primary'  title="Save the data to Shop-2-API" id="save-order-data">
     98            Save
     99        </button>
     100    </form>
    63101</div>
Note: See TracChangeset for help on using the changeset viewer.