Skip to main content

Magento integration

Project description

Linets Magento

Starting

These instructions will allow you to install the library in your django project.

Current features

  1. List orders by filters.
  2. Get order detail.
  3. Get order products.
  4. Create shipment.
  5. Create invoice.
  6. Update order.
  7. Cancel order.

Pre-requisitos

  1. Python >= 3.7
  2. requests >= 2
  3. Django >= 3,

Installation

To get the latest stable release from PyPi:

pip install django-magento

or From a build

git clone https://gitlab.com/linets/ecommerce/oms/integrations/oms-magento
cd {{project}} && git checkout develop
python setup.py sdist

and, install in your project Django.

pip install {{path}}/oms-magento/dist/{{tar.gz file}}

Settings in django project

DJANGO_MAGENTO = {
    'MAGENTO': {
        'BASE_URL': '<MAGENTO_API_URL>',
        'API_KEY': '<MAGENTO_API_KEY>',
    },
}

Usage

from magento.handler import MagentoHandler
handler = MagentoHandler()

List orders in Magento:

Basic list orders.

default_data = handler.get_orders()

You can send filter parameters.

params = {
    'searchCriteria[filterGroups][1][filters][0][field]': 'created_at',
    'searchCriteria[filterGroups][1][filters][0][value]': '2021-05-10 12:12:50',
    'searchCriteria[filterGroups][1][filters][0][conditionType]': 'gt',
    'fields': 'items[entity_id,status,state,increment_id],search_criteria'
}

# if params is empty, filter by status will be equal to 'complete'.
default_data = handler.get_orders(params)
# Output:
{
    'items': [....],
    'search_criteria': {
        'filter_groups': [
            {
                'filters': [
                    {
                        'field': 'status',
                        'value': 'pending',
                        'condition_type': 'eq'
                    }
                  ]
            },
            {
                'filters': [
                    {
                        'field': 'created_at',
                        'value': '2021-05-14 15:00:37',
                        'condition_type': 'lt'
                    }
                ]
            }
        ]
    },
    'total_count': 0
}

Get order detail in Magento:

default_data = handler.get_order_detail(identifier)

# Output:
{
    'base_currency_code': 'CLP',
    'base_discount_amount': 0,
    'base_discount_invoiced': 0,
    'base_grand_total': 31990,
    'base_discount_tax_compensation_amount': 0,
    'base_discount_tax_compensation_invoiced': 0,
    'base_shipping_amount': 0,
    'base_shipping_discount_amount': 0,
    'base_shipping_discount_tax_compensation_amnt': 0,
    'base_shipping_incl_tax': 0,
    'base_shipping_invoiced': 0,
    'base_shipping_tax_amount': 0,
    'base_subtotal': 31990,
    'items': [...],
    'billing_address': {...},
    'payment': {...},
    'status_histories': {...},
    'extension_attributes': {...},
    'payment_additional_info': {...},
    'gift_cards': [...],
    'base_gift_cards_amount': 0,
    'gift_cards_amount': 0,
    'applied_taxes': [...],
    'item_applied_taxes': [...],
    'gw_base_price': '0.0000',
    'gw_price': '0.0000',
    'gw_items_base_price': '0.0000',
    'gw_items_price': '0.0000',
    'gw_card_base_price': '0.0000',
    'gw_card_price': '0.0000',
    'checkout_request_invoice': 'No',
    'rut': '17.716.251-5
}

Get products for order:

response = handler.get_order_products(identifier)

# Output:
{
    "items": [
        {
            "item_id": 140,
            "qty_ordered": 1,
            "sku": "ALCNHDA01B57Z"
        }
    ]
}

Create shipment:

items = [{'order_item_id': 9999, 'qty': 1}]
response = handler.create_shipment(identifier, items)

Output:
9999

Get invoice

from magento.handler import MagentoHandler

handler = MagentoHandler()

response = handler.get_invoice(747118)

Output:
{'items': [{'base_currency_code': 'CLP',
   'base_discount_amount': 0,
   'base_grand_total': 29990,
   'base_discount_tax_compensation_amount': 0,
   'base_shipping_amount': 0,
   'base_shipping_discount_tax_compensation_amnt': 0,
   'base_shipping_incl_tax': 0,
   'base_shipping_tax_amount': 0,
   'base_subtotal': 29990,
   'base_subtotal_incl_tax': 29990,
   'base_tax_amount': 0,
   'base_total_refunded': 29990,
   'base_to_global_rate': 1,
   'base_to_order_rate': 1,
   'billing_address_id': 194,
   'created_at': '2020-10-29 19:06:51',
   'discount_amount': 0,
   'entity_id': 12,
   'global_currency_code': 'CLP',
   'grand_total': 29990,
   'discount_tax_compensation_amount': 0,
   'increment_id': '2000000012',
   'is_used_for_refund': 1,
   'order_currency_code': 'CLP',
   'order_id': 97,
   'shipping_address_id': 193,
   'shipping_amount': 0,
   'shipping_discount_tax_compensation_amount': 0,
   'shipping_incl_tax': 0,
   'shipping_tax_amount': 0,
   'state': 2,
   'store_currency_code': 'CLP',
   'store_id': 2,
   'store_to_base_rate': 0,
   'store_to_order_rate': 0,
   'subtotal': 29990,
   'subtotal_incl_tax': 29990,
   'tax_amount': 0,
   'total_qty': 2,
   'transaction_id': '191101',
   'updated_at': '2021-06-15 15:15:36',
   'items': [{'base_discount_tax_compensation_amount': 0,
     'base_price': 29990,
     'base_price_incl_tax': 29990,
     'base_row_total': 29990,
     'base_row_total_incl_tax': 29990,
     'base_tax_amount': 0,
     'entity_id': 15,
     'discount_tax_compensation_amount': 0,
     'name': 'PANTALÓN LISO',
     'parent_id': 7,
     'price': 29990,
     'price_incl_tax': 29990,
     'product_id': 2411,
     'row_total': 29990,
     'row_total_incl_tax': 29990,
     'sku': '11020205210250',
     'tax_amount': 0,
     'order_item_id': 199,
     'qty': 1},
    {'base_price': 0,
     'entity_id': 16,
     'name': 'PANTALÓN LISO',
     'parent_id': 7,
     'price': 29990,
     'product_id': 2311,
     'sku': '11020205210250',
     'order_item_id': 200,
     'qty': 1}],
   'comments': [],
   'extension_attributes': {'am_giftcard_invoice': {'entity_id': 0,
     'invoice_id': 7,
     'gift_amount': 0,
     'base_gift_amount': 0}}}],
 'search_criteria': {'filter_groups': [{'filters': [{'field': 'order_id',
      'value': '97',
      'condition_type': 'eq'}]}]},
 'total_count': 1}

Create invoice:

items = [{'order_item_id': 9999, 'qty': 1}]
response = handler.create_invoice(identifier, items)

# Output:
9999

Update order:

response = handler.update_order(identifier, comment, status, notify_customer)

# Output:
True

Cancel order in Magento:

response = handler.cancel_order(identifier)

# Output:
True

Get item credit memo payload:

from magento.handler import MagentoHandler

handler = MagentoHandler()
items = handler.get_item_creditmemo_payload(5, 2)

Output:

{
'order_item_id': 5,
'qty': 2
}

Get credit memo default payload:

from magento.handler import MagentoHandler

handler = MagentoHandler()
items = [handler.get_item_creditmemo_payload(5, 2)]
data = {
    'items': [
        {
        'order_item_id': 5,
        'qty': 2
        }
    ],
    'notify': True,
    'arguments': {
        'shipping_amount': 1500,
        'adjustment_positive': 2000,
        'adjustment_negative': 0,
        'extension_attributes': {
            'return_to_stock_items': [5, 3]
        },
    },
}
data_instance = json.loads(
            json.dumps(payload), object_hook=lambda attr: SimpleNamespace(**attr)
        )
data = self.magento_handler.get_creditmemo_default_payload(data_instance)

Output:
{
    'items': [
        {
        'order_item_id': 5,
        'qty': 2
        }
    ],
    'notify': True,
    'arguments': {
        'shipping_amount': 1500,
        'adjustment_positive': 2000,
        'adjustment_negative': 0,
        'extension_attributes': {
            'return_to_stock_items': [5, 3]
        },
    },
}

Create a credit memo:

from magento.handler import MagentoHandler

handler = MagentoHandler()
invoice = Invoice.objects.get(order=order)

data = {
    'items': [
        {
        'order_item_id': 5,
        'qty': 2
        },
        {
        'order_item_id': 3,
        'qty': 4
        },
    ],
    'notify': True,
    'arguments': {
        'shipping_amount': 1500,
        'adjustment_positive': 2000,
        'adjustment_negative': 0,
        'extension_attributes': {
            'return_to_stock_items': [5,3]
        },
    },
}
response = handler.online_refund(invoice.magento_id, data)

Output:
0

Get a credit memo info by id:

from magento.handler import MagentoHandler

handler = MagentoHandler()
response = handler.get_creditmemo(11)

Output:
{
  "adjustment": -2500,
  "adjustment_negative": 2500,
  "adjustment_positive": 0,
  "base_adjustment": -2500,
  "base_adjustment_negative": 2500,
  "base_adjustment_positive": 0,
  "base_currency_code": "CLP",
  "base_discount_amount": 0,
  "base_grand_total": 34490,
  "base_discount_tax_compensation_amount": 0,
  "base_shipping_amount": 0,
  "base_shipping_incl_tax": 0,
  "base_shipping_tax_amount": 0,
  "base_subtotal": 36990,
  "base_subtotal_incl_tax": 36990,
  "base_tax_amount": 0,
  "base_to_global_rate": 1,
  "base_to_order_rate": 1,
  "billing_address_id": 344,
  "created_at": "2021-06-18 18:03:59",
  "discount_amount": 0,
  "entity_id": 11,
  "global_currency_code": "CLP",
  "grand_total": 34490,
  "discount_tax_compensation_amount": 0,
  "increment_id": "4000000003",
  "invoice_id": 54,
  "order_currency_code": "CLP",
  "order_id": 172,
  "shipping_address_id": 343,
  "shipping_amount": 0,
  "shipping_incl_tax": 0,
  "shipping_tax_amount": 0,
  "state": 2,
  "store_currency_code": "CLP",
  "store_id": 4,
  "store_to_base_rate": 0,
  "store_to_order_rate": 0,
  "subtotal": 36990,
  "subtotal_incl_tax": 36990,
  "tax_amount": 0,
  "updated_at": "2021-06-18 18:04:01",
  "items": [
    {
      "base_cost": null,
      "base_discount_tax_compensation_amount": 0,
      "base_price": 36990,
      "base_price_incl_tax": 36990,
      "base_row_total": 36990,
      "base_row_total_incl_tax": 36990,
      "base_tax_amount": 0,
      "base_weee_tax_row_disposition": 0,
      "entity_id": 19,
      "discount_tax_compensation_amount": 0,
      "name": "CALZA CON CIERREY PESPUNTES DECORATIVOS.",
      "order_item_id": 365,
      "parent_id": 11,
      "price": 36990,
      "price_incl_tax": 36990,
      "product_id": 144,
      "qty": 1,
      "row_total": 36990,
      "row_total_incl_tax": 36990,
      "sku": "16107107916338",
      "tax_amount": 0,
      "weee_tax_applied": "[]",
      "weee_tax_applied_row_amount": 0,
      "weee_tax_row_disposition": 0
    },
    {
      "base_cost": null,
      "base_price": 0,
      "entity_id": 20,
      "name": "CALZA CON CIERREY PESPUNTES DECORATIVOS.",
      "order_item_id": 366,
      "parent_id": 11,
      "price": 36990,
      "product_id": 146,
      "qty": 1,
      "sku": "16107107916338"
    }
  ],
  "comments": [],
  "extension_attributes": {
    "am_giftcard_creditmemo": {
      "entity_id": 0,
      "creditmemo_id": 11,
      "gift_amount": 0,
      "base_gift_amount": 0
    }
  }
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-magento-1.3.0.tar.gz (8.9 kB view details)

Uploaded Source

File details

Details for the file django-magento-1.3.0.tar.gz.

File metadata

  • Download URL: django-magento-1.3.0.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.8.10

File hashes

Hashes for django-magento-1.3.0.tar.gz
Algorithm Hash digest
SHA256 0a8226f6108bb2a0aed65e668cdf61a095137d1caf19e4f24d7481423a7ed14c
MD5 517579d9789fd6582664157b1210de9d
BLAKE2b-256 41351abd795e48a679e41ae9c17dd6de893be04eac9d45b1b256db27c785f3d6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page