cancel
Showing results for 
Search instead for 
Did you mean: 

Mageworx Customizable Options Not Importing

Mageworx Customizable Options Not Importing

Hi, 

I have a complicated issue. My work uses Magento 2, PackageBee, and Veracore OMS for our ordering and inventory systems. We do personalized products on our website using Mageworx Advanced Product Options for the customization. Basically, our ordering works this way:

  • A customer places an order > all of the info including the personalization is sent to Magento > the order info is sent to Packagebee > then it is sent to Veracore where our packing slips are printed from for our production team. 

Currently, we are trying to implement a configurable product that uses multiple product IDs on one listing (for different sizes). During my tests, I am unable to get the personalization entered into the Mageworx options to get to Veracore, which makes the packing slips appear as if the product is blank because there are no personalization notes. This happens when I select a different size (aka different product ID) on the parent SKU. Everything else from the product IDs and inventory to the customer information comes through correctly, it's just the personalization in the Mageworx options that is not coming through.

 

We contacted Packagebee support to see if they could find the disconnect and one of their developers told us the option_id in the code for the parent product and the child product were not matching up and that "The option_id between #2 and #3 need to match to create a "Key/Value" pair. If they do not match, then no customization is imported.

Here is the problem. When we pull the line item details we receive a set of product custom options. 

    "product_option": {
        "extension_attributes": {
            "custom_options": [
                {
                    "option_id": "104479",
                    "option_value": "95480"
                },
                {
                    "option_id": "104382",
                    "option_value": "TEST ORDER"
                },
                {
                    "option_id": "104383",
                    "option_value": "DO NOT PULL OR ENGRAVE"
                },
                {
                    "option_id": "104384",
                    "option_value": "TOSS ORDER FORM"
                },
                {
                    "option_id": "104385",
                    "option_value": "95309"
                }
            ]
        }
    },


If you notice here, we have a set of option values, which come from user input. "TEST ORDER", "DO NOT PULL OR ENGRAVE", etc. But there are also "option_id" values along with them. This is an internal reference id from Magento. It should point to the details on the product which give us the label of the option selected. For example, Line 1, Line 2, etc.

However this is not what is happening. Instead we get an empty option list on the Product.

    "options": [],

Instead it should look something like this: 

    "options": [
        {
            "image_size_x": 0,
            "image_size_y": 0,
            "is_require": false,
            "max_characters": 0,
            "option_id": 1,
            "price": 0,
            "price_type": "fixed",
            "product_sku": "test",
            "sort_order": 1,
            "title": "Line 1",
            "type": "field"
        },
        {
            "image_size_x": 0,
            "image_size_y": 0,
            "is_require": false,
            "max_characters": 0,
            "option_id": 3,
            "product_sku": "test",
            "sort_order": 2,
            "title": "Rush Personalization",
            "type": "checkbox",
            "values": [
                {
                    "option_type_id": 1,
                    "price": 3.95,
                    "price_type": "fixed",
                    "sort_order": 1,
                    "title": "Yes"
                }
            ]
        },
        {
            "image_size_x": 0,
            "image_size_y": 0,
            "is_require": false,
            "max_characters": 0,
            "option_id": 2,
            "price": 0,
            "price_type": "fixed",
            "product_sku": "test",
            "sort_order": 3,
            "title": "Line 2",
            "type": "field"
        }
    ],


In the correct example, the option_id would match the value in the data from the order item product_options. Our integration matches these up and the extracts the title."

 

We are not sure how to fix this. We've tried a dozen different set ups using Simple Products, Configurable Products, Attributes, the SKU Replacement Policy, Grouped Products, and Bundle Products trying to get this to work. I've tried having all of the same customization options on the parent product and the child products. 

 

Basically, we want to be able to offer a simpler set up of a personalized product where a customer can order a different size of the same product in the same listing instead of having to create multiple listings for different sizes. The personalization is getting lost somewhere between Packagebee and Veracore due to the code coming from Magento not connecting. Is this a bug or is this simply not possible?