2

I'm using REST API with token authentication to export data from a M1 to a fresh installation of M2.2.0 installation.

Everything works fine with customers and products, but I cannot manage to understand how to create an order without creating a cart.

I mean, I already have all needed data from the order, there should be no need to create a cart before, as suggested in all the solutions I found (also in the official magento guide).

I'm following same steps in the above mentioned guide, but trying to post data about the order, I keep getting the error:

"Fatal Error: 'Uncaught Error: Call to a member function getMethodInstance() on null in \/var\/www\/html\/app\/code\/Magento\/Payment\/Observer\/SalesOrderBeforeSaveObserver.php:24\nStack trace:\n#0 \/var\/www\/html\/lib\/internal\/Magento\/Framework\/Event\/Invoker\/InvokerDefault.php(72): Magento\\Payment\\Observer\\SalesOrderBeforeSaveObserver->execute(Object(Magento\\Framework\\Event\\Observer))\n#1 \/var\/www\/html\/lib\/internal\/Magento\/Framework\/Event\/Invoker\/InvokerDefault.php(60): Magento\\Framework\\Event\\Invoker\\InvokerDefault->_callObserverMethod(Object(Magento\\Payment\\Observer\\SalesOrderBeforeSaveObserver), Object(Magento\\Framework\\Event\\Observer))\n#2 \/var\/www\/html\/lib\/internal\/Magento\/Framework\/Event\/Manager.php(66): Magento\\Framework\\Event\\Invoker\\InvokerDefault->dispatch(Array, Object(Magento\\Framework\\Event\\Observer))\n#3 \/var\/www\/html\/generated\/code\/Magento\/Framework\/Event\/Manager\/Proxy.php(95): Magento\\Framework\\Event\\Manager->dispatch('sales_order_sav...', Array)\n#4 \/var\/www\/html\/lib\/internal\/Magento\/Framework\/Model\/AbstractModel.php(694):' in '\/var\/www\/html\/app\/code\/Magento\/Payment\/Observer\/SalesOrderBeforeSaveObserver.php' on line 24"

and this is a sample JSON I'm using to make my tries:

       {
"entity": {
    "customer_email": "[email protected]",
    "customer_firstname": "mario",
    "customer_lastname": "rossi",
    "base_grand_total": 120,
    "discount_amount": 0,
    "grand_total": 120,
    "increment_id": "200001414155",
    "shipping_amount": 7,
    "status": "processing",
    "store_id": 1,
    "subtotal": 100,
    "tax_amount": 20,
    "items": {
        "description": "prodotto mio",
        "item_id": 3,
        "price": 10,
        "product_id": 3,
        "product_type": "simple",
        "qty_ordered": 2,
        "sku": "002",
        "tax_amount": 2,
        "weight": 1
    }
},
"billing_address": {
    "firstname": "giuseppa",
    "lastname": "rossi",
    "company": "mycompany",
    "city": "rome",
    "region": "california",
    "region_id": 12,
    "postcode": "12312",
    "telephone": "1234556677",
    "country_id": "US",
    "street": [
        "via prima",
        "via seconda"
    ]
},
"payment": {
    "amount_paid": 120,
    "method": "checkmo"
},
"status_histories": [
    {
        "comment": "new order",
        "status": "processing"
    }
],
"extension_attributes": {
    "shipping_assignments": [
        {
            "shipping": {
                "address": [
                    {
                        "firstname": "franca",
                        "lastname": "vardididi",
                        "company": "mycompany",
                        "city": "rome",
                        "region": "california",
                        "region_id": 12,
                        "postcode": "12312",
                        "telephone": "1234556677",
                        "country_id": "US",
                        "street": [
                            "via prima",
                            "via seconda"
                        ]
                    }
                ],
                "method": "checkmo",
                "total": {
                    "base_shipping_amount": 7
                }
            },
            "items": [
                {
                    "description": "prodotto mio",
                    "item_id": 3,
                    "price": 10,
                    "product_id": 3,
                    "product_type": "simple",
                    "qty_ordered": 2,
                    "sku": "002",
                    "tax_amount": 2,
                    "weight": 1
                }
            ]
        }
    ]
}

}

EDIT

Using the json in this question I managed to create the order.

1

1 Answer 1

1

I found a solution in the question mentioned in the edit of my question. I will post it here, in case the link could get broken.

'{
  "entity": {
    "base_currency_code": "EUR",
    "base_discount_amount": 0,
    "base_grand_total": 38,
    "base_shipping_amount": 5,
    "base_shipping_incl_tax": 5,
    "base_shipping_tax_amount": 0,
    "base_shipping_discount_amount": 0,
    "base_subtotal": 33,
    "base_subtotal_incl_tax": 33,
    "base_total_due": 0,
    "base_total_paid" : 38,
    "base_to_global_rate": 1,
    "base_to_order_rate": 1,
    "discount_tax_compensation_amount": 0,
    "base_discount_tax_compensation_amount": 0,
    "shipping_discount_tax_compensation_amount": 0,
    "customer_is_guest": 0,
    "customer_email": "[email protected]",
    "customer_firstname": "Nicola",
    "customer_group_id": 1,
    "customer_id": 4,
    "customer_lastname": "Neri",
    "customer_note_notify": 1,
    "discount_amount": 0,
    "email_sent": 1,
    "global_currency_code": "EUR",
    "grand_total": 38,
    "order_currency_code": "EUR",
    "shipping_amount": 5,
    "shipping_tax_amount": 0,
    "shipping_description": "Flat Rate - Fixed",
    "shipping_discount_amount": 0,
    "shipping_incl_tax": 5,
    "state": "pending",
    "status": "processing",
    "store_currency_code": "EUR",
    "store_to_base_rate": 0,
    "store_to_order_rate": 0,
    "store_id": 1,
    "subtotal": 33,
    "subtotal_incl_tax": 33,
    "total_due": 0,
    "total_paid" : 38,
    "total_item_count": 1,
    "total_qty_ordered": 1,
    "tax_amount": 0,
    "weight": 1,
    "items": [{
      "base_original_price": 33,
      "base_price": 33,
      "base_price_incl_tax": 33,
      "base_row_total": 33,
      "base_row_total_incl_tax": 33,
      "name": "il prodotto",
      "original_price": 33,
      "price": 33,
      "price_incl_tax": 33,
      "product_id": 11,
      "product_type": "simple",
      "qty_ordered": 1,
      "row_total": 33,
      "row_total_incl_tax": 33,
      "sku": "002",
      "store_id": 1,
      "weight": 1
    }],
    "billing_address": {
      "address_type": "billing",
      "city": "Urbino",
      "company": "",
      "country_id": "IT",
      "customer_address_id": 4,
      "email": "[email protected]",
      "firstname": "franco",
      "lastname": "Ciani",
      "postcode": "61029",
      "region": "ca",
      "street": ["via milano 21"],
      "telephone": "071982939"
    },
    "payment": {
      "amount_ordered": 38,
      "amount_paid":38,
      "base_amount_ordered": 38,
      "base_amount_paid" : 38,
      "base_shipping_amount": 5,
      "method": "checkmo",
      "shipping_amount": 5
    },
    "status_histories": [{
      "comment" : "new order",
      "status": "processing"
    }],
    "extension_attributes": {
      "shipping_assignments": [{
        "shipping": {
          "address": {
            "address_type": "shipping",
            "city": "Urbino",
            "company": "mycompany",
            "country_id": "IT",
            "customer_address_id": 4,
            "email": "[email protected]",
            "firstname": "mario",
            "lastname": "Rossi",
            "postcode": "12345",
            "region": "CA",
            "street": ["via roma 823"],
            "telephone": "3469730878"
          },
          "method": "flatrate_flatrate",
          "total": {
            "base_shipping_amount": 5,
            "base_shipping_incl_tax": 5,
            "shipping_amount": 5,
            "shipping_incl_tax": 5
          },
          "extension_attributes": []
        },
        "items": [{
          "base_original_price": 33,
          "base_price": 33,
          "base_price_incl_tax": 33,
          "base_row_total": 33,
          "name": "un belllissimo prodotto",
          "original_price": 33,
          "price": 33,
          "price_incl_tax": 33,
          "product_id": 11,
          "product_type": "simple",
          "qty_ordered": 1,
          "row_total": 33,
          "row_total_incl_tax": 33,
          "sku": "002",
          "store_id": 1,
          "weight": 1
        }],
        "extension_attributes": []
      }],
      "applied_taxes": [],
      "item_applied_taxes": [],
      "converting_from_quote": false
    }
  }
}'
4
  • how can I display my API values as a table format. my post : magento.stackexchange.com/q/209734/57334
    – zus
    Jan 18, 2018 at 5:48
  • an html table? Please add some details in your question as of which is the expected result and the result you have right now. Otherwise it is impossible to help you...
    – sissy
    Jan 18, 2018 at 8:03
  • yes mam, as you know api details like different right, so how can i display all my API detail as tables like datatables.net.
    – zus
    Jan 18, 2018 at 13:36
  • Please, edit your question and put some of the code you're using, so maybe I can better understand. As the best of my guess right now, I can tell you that once you get the result you just have to decode the json string tha Magento returns you and create the proper html structure... Put some code in your original question so we can keep talking about it.
    – sissy
    Jan 18, 2018 at 14:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.