Giter VIP home page Giter VIP logo

ecommerce_integrations's Introduction

Ecommerce Integrations for ERPNext

CI

Currently supported integrations:

Installation

  • Frappe Cloud Users can install from Marketplace.
  • Self Hosted users can install using Bench:
# Production installation
$ bench get-app ecommerce_integrations --branch main

# OR development install
$ bench get-app ecommerce_integrations  --branch develop

# install on site
$ bench --site sitename install-app ecommerce_integrations

After installation follow user documentation for each integration to set it up.

Contributing

Development setup

  • Enable developer mode.
  • If you want to use a tunnel for local development. Set localtunnel_url parameter in your site_config file with ngrok / localtunnel URL. This will be used in most places to register webhooks. Likewise, use this parameter wherever you're sending current site URL to integrations in development mode.

License

GNU GPL v3.0

ecommerce_integrations's People

Contributors

aaronmenezes avatar adityahase avatar afshankhan avatar ankush avatar anupamvs avatar bhavesh95863 avatar blaggacao avatar chillaranand avatar daizymodi avatar frappe-bot avatar ljain112 avatar lucasvazq avatar penieldev avatar prices avatar rohitwaghchaure avatar rtdany10 avatar s-aga-r avatar saadsafda avatar shashankshirke avatar silenthunter124 avatar sonali8848 avatar vikas8600 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ecommerce_integrations's Issues

Shopify: Decouple Shopify Customer from ERPNext Customer

Currently the shopify customer database is a huge mess simply after 3 months of operations. A lot of duplicate accounts were created and it is heavily discussed here: https://community.shopify.com/c/Shopify-Discussion/Merge-Customers/td-p/912491/page/7

Current behaviour:

Shopify Sync Compares Shopify Customer ID of an ERPNext Customer with Shopify Customer ID of incoming new Order. This will lead in case no registration is default checkout behaviour to multiple duplicates in ERPNext.

Idea:

Introduce a shopify setting "Customer Anchors" with list values "Shopify Customer ID","E-Mail","Phone","E-Mail&Surname&Lastname" (last one has biggest safety) which will be used to search for existing ERPNext Customers and reuse it.
Don't forget to update billing and shipping address for the incoming order as it may differ only for this incoming order.

This is just an idea. And for discussion. What do you think about that?

Regards

Shopify has stopped support for API Version `2021-04`

Traceback

Traceback (most recent call last):
  File "env/lib/python3.8/site-packages/shopify/api_version.py", line 17, in coerce_to_version
    return cls.versions[version]
KeyError: '2021-04'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/order.py", line 46, in sync_sales_order
    create_items_if_not_exist(order)
    File "apps/ecommerce_integrations/ecommerce_integrations/shopify/connection.py", line 34, in wrapper
    with Session.temp(*auth_details):
  File "/usr/lib/python3.8/contextlib.py", line 113, in __enter__
    return next(self.gen)
  File "env/lib/python3.8/site-packages/shopify/session.py", line 37, in temp
    original_session = shopify.Session(original_domain, original_version, original_token)
  File "env/lib/python3.8/site-packages/shopify/session.py", line 47, in __init__
    self.version = ApiVersion.coerce_to_version(version)
  File "env/lib/python3.8/site-packages/shopify/api_version.py", line 19, in coerce_to_version
    raise VersionNotFoundError
shopify.api_version.VersionNotFoundError

Update

As per my research, Shopify still supports the version 2021-04 (It will be stopped soon as per release-schedule).

However, the current problem is with ShopifyAPI version. In version 8.2.0 it was checking version dynamically which was fixed in version 8.4.0.

If we update the version of ShopifyAPI to 8.4.0 or later, it should work as expected because as per latest version (10.0.0) of ShopifyAPI,2021-04 is still supported. But we can not bump the version from 8.2.0 to 8.4.0 or later because it has conflicts with frappe for PyJWT.

PyJWT conflict is already solved on develop but is there any plan to backport it to version-13?

General - Clean up old logs

Old logs ("Ecommerce Integration Log") should be cleared up periodically (monthly background job?)

  • This should be configurable from a new generic setting page for this app. Something like "Ecommerce Integrations Setting".

Settings should have a child table:

  • Select module (shopify/unicommerce etc...)
  • select "status" of logs that should be cleared up.

E.g. module="shopify", status="success", retention period=1 (unit = months)

Amazon MWS integration, sync orders character limit for Title

In error log it is showing

Error Log ffa12ac821: 'Title' (<bound method Orders.list_orders of <erpnext.erpnext_integrations.doctype.amazon_mws_settings.amazon_mws_api.Orders object at 0x7f488fdc0860>>) will get truncated, as max characters allowed is 140

Variant Item Name Sync Issue from Shopify

When I create an item in Shopify with a variant and sync that in ERP that time it is creating item and variant properly but problem is variant item name is only attributed name.
For Example below Screenshot, I have created one item(Item Created In Shopify) that name is Test B and has 2 variants but the name of that variant name is red and black which is the attribute value. So if i will have 10 items that have the same attribute value then very hard to identify which item for which template item.
image

Module ecommerce_integrations not found after installation

Syncing items to Shopify works fine.
Also orders will be received from Shopify.
After receiving they are in queue. An error is from in background process.
Sync Stock is also not working.

Error in background process:
<function _migrate_items_to_ecommerce_item at 0x7f851691f3a0>Traceback (most recent call last): File "/opt/bitnami/erpnext/frappe-bench/env/lib/python3.8/site-packages/rq/worker.py", line 1008, in perform_job self.prepare_job_execution(job) File "/opt/bitnami/erpnext/frappe-bench/env/lib/python3.8/site-packages/rq/worker.py", line 905, in prepare_job_execution self.procline(msg.format(job.func_name, job.origin, time.time())) File "/opt/bitnami/erpnext/frappe-bench/env/lib/python3.8/site-packages/rq/job.py", line 256, in func_name self._deserialize_data() File "/opt/bitnami/erpnext/frappe-bench/env/lib/python3.8/site-packages/rq/job.py", line 224, in _deserialize_data self._func_name, self._instance, self._args, self._kwargs = self.serializer.loads(self.data) ModuleNotFoundError: No module named 'ecommerce_integrations'
But the modules exist also on site?
image

Hope anyone can fix this issue. I upgraded from erpnext_shopify app. Maybe this could make a difference?

UTF8 encoding error in Amazon MWS Sync Products

Description of the issue

Getting a server error when using "Sync Products" in Amazon MWS Settings

Context information (for bug reports)

ERPNext: v11.1.72 (version-11)
Frappe Framework: v11.1.64 (version-11)
Output of bench version

4.1.0

Steps to reproduce the issue

1.Navigate to integrations -> Amazon MWS Settings
2.Click "Sync Products" button
3.

Observed result

Server Error

Expected result

Item List updated

Stacktrace / full error message

Traceback (most recent call last):
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/app.py", line 61, in application
    response = frappe.handler.handle()
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/handler.py", line 21, in handle
    data = execute_cmd(cmd)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/handler.py", line 56, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/__init__.py", line 1036, in call
    return fn(*args, **newargs)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/handler.py", line 84, in runserverobj
    frappe.desk.form.run_method.runserverobj(method, docs=docs, dt=dt, dn=dn, arg=arg, args=args)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/desk/form/run_method.py", line 36, in runserverobj
    r = doc.run_method(method)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/document.py", line 772, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/document.py", line 1048, in composer
    return composed(self, method, *args, **kwargs)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/document.py", line 1031, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/document.py", line 766, in <lambda>
    fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
  File "/home/shmadmin/frappe-bench/apps/am_mws/am_mws/am_mws/doctype/mws_integration_settings/mws_integration_settings.py", line 13, in get_products_details
    products = get_products_details()
  File "/home/shmadmin/frappe-bench/apps/am_mws/am_mws/am_mws/doctype/mws_integration_settings/amazon_methods.py", line 43, in get_products_details
    create_item_code(product, sku)
  File "/home/shmadmin/frappe-bench/apps/am_mws/am_mws/am_mws/doctype/mws_integration_settings/amazon_methods.py", line 163, in create_item_code
    item.insert(ignore_permissions=True)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/document.py", line 217, in insert
    self.set_new_name()
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/document.py", line 378, in set_new_name
    set_new_name(self)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/naming.py", line 39, in set_new_name
    doc.run_method("autoname")
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/document.py", line 772, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/document.py", line 1048, in composer
    return composed(self, method, *args, **kwargs)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/document.py", line 1031, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/model/document.py", line 766, in <lambda>
    fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
  File "/home/shmadmin/frappe-bench/apps/erpnext/erpnext/stock/doctype/item/item.py", line 71, in autoname
    self.item_code = strip(self.item_code)
  File "/home/shmadmin/frappe-bench/apps/frappe/frappe/utils/data.py", line 973, in strip
    return (val or "").replace("\ufeff", "").replace("\u200b", "").strip(chars)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xc2 in position 16: invalid continuation byte

Additional information

Debian Stretch Production instance on Google Cloud VM

Feature Request: Ebay Integration

Many online retailers use Ebay as a primary or secondary sales platform and all the sales need to be imported into erpnext in some way. Integration possibly using the frappe api and ebaysdk-python would make that process much easier and more attractive to potential users.

The ebaysdk-python mentioned above can be found here:

https://github.com/timotheus/ebaysdk-python

If there is any demand this feature then it may be something for which a bounty could work. I would certainly consider contributing to this if it was developed by yourselves in house as I know that it will be maintained release to release however that would only be after this evaluation is finished and a decision taken to move to this platform.

If the Shopify total for an order is $0 the order won't sync

We get the error "Paid Amount is mandatory".

We sometimes give away products or training as a thank you. If these are alone on a shopify order the order won't sync. The paid amount is $0 but that is also the amount due on the order.

Can logic be put in to check to see if paid amount and due amount match, and if so the order is valid, even if that amount is $0?

Unable to fetch new sales order

Hi, I'm working with latest version of frappe with ecommerce_integrations but it is not syncing latest orders created in shopify.
Please help us out.
Thanks

Woocommerce integration requires to modify "item_code"

In order to be able to integrate wocommerce with erpnext, the item code should have the following format: "wocommerce - " + "wocommerce_id".

This is highly inconvenient, specially when trying to integrate woocommerce to an existing erpnext company, since it requires either o of the following scenarios:
1- Modify an existing item code: theres plenty of room for operational disaster when trying to change item codes "on the fly". Completely unacceptable for a running business,
2- Create special items just to interact with wocommerce: much of the point of doing the integration is lost since it would require to manage special stock o to rework the generated sales order to match the actual item codes.

¿is it possible to fix this such that woocommerce interacts with ERPNext via the woocommerce_id (in a similar way as the shopify integration worked (by the way, Shopify worked beautifully)?

Module import failed for Test Runner

Hi people,

I'm having a very hard time setting up ecommerce_integrations in order to connect shopify to my erpnext.

First of all, I've got this issue when installing the app :

erp@vps-8377dec2:~/erp_bench$ bench --site erp.singe-savant.com install-app ecommerce_integrations
WARN: bench is installed in editable mode!

This is not the recommended mode of installation for production. Instead, install the package from PyPI with: `pip install frappe-bench`


Installing ecommerce_integrations...
Updating DocTypes for ecommerce_integrations: [========================================] 100%
An error occurred while installing ecommerce_integrations:
Module import failed for Test Runner (frappe.core.doctype.test_runner.test_runner Error: No module named 'frappe.core.doctype.test_runner.test_runner')

Do you have any idea ?

Ecommerce Integrations: v1.5.0 (main)
ERPNext: v13.18.0 (version-13)
Frappe Framework: v13.18.0 (version-13)

Thanks

Shopify webhook is not processed

Orders and other webhook events are failing to process from Shopify into ERPNext through the ecommerce_integration plugin.

To investigate I recorded the webhook request that was being sent to the ERPNext server and am recreating with Postman. Issuing the post request is giving a: 500 INTERNAL SERVER ERROR with the payload quoted below.

Please let me know if there are more details I can provide to assist this getting a timely resolution.

{
    "exception": "TypeError: Object of type bytes is not JSON serializable",
    "exc": "[\"Traceback (most recent call last):\\n  File \\\"apps/frappe/frappe/app.py\\\", line 68, in application\\n    response = frappe.api.handle()\\n  File \\\"apps/frappe/frappe/api.py\\\", line 55, in handle\\n    return frappe.handler.handle()\\n  File \\\"apps/frappe/frappe/handler.py\\\", line 31, in handle\\n    data = execute_cmd(cmd)\\n  File \\\"apps/frappe/frappe/handler.py\\\", line 68, in execute_cmd\\n    return frappe.call(method, **frappe.form_dict)\\n  File \\\"apps/frappe/frappe/__init__.py\\\", line 1208, in call\\n    return fn(*args, **newargs)\\n  File \\\"apps/ecommerce_integrations/ecommerce_integrations/shopify/connection.py\\\", line 98, in store_request_data\\n    hmac_header = frappe.get_request_header(\\\"X-Shopify-Hmac-Sha256\\\")\\n  File \\\"apps/ecommerce_integrations/ecommerce_integrations/shopify/connection.py\\\", line 128, in _validate_request\\n    frappe.logger(\\\"pauls-log\\\").info(\\\"2-3\\\")\\n  File \\\"apps/ecommerce_integrations/ecommerce_integrations/shopify/utils.py\\\", line 19, in create_shopify_log\\n    return create_log(module_def=MODULE_NAME, **kwargs)\\n  File \\\"apps/ecommerce_integrations/ecommerce_integrations/ecommerce_integrations/doctype/ecommerce_integration_log/ecommerce_integration_log.py\\\", line 57, in create_log\\n  File \\\"/usr/lib/python3.8/json/__init__.py\\\", line 234, in dumps\\n    return cls(\\n  File \\\"/usr/lib/python3.8/json/encoder.py\\\", line 201, in encode\\n    chunks = list(chunks)\\n  File \\\"/usr/lib/python3.8/json/encoder.py\\\", line 438, in _iterencode\\n    o = _default(o)\\n  File \\\"/usr/lib/python3.8/json/encoder.py\\\", line 179, in default\\n    raise TypeError(f'Object of type {o.__class__.__name__} '\\nTypeError: Object of type bytes is not JSON serializable\\n\"]"
}

Woocommerce Integration: Discount not reflected in total

Description of the issue

We are experiencing an issue with our WooCommerce integration in ERPNext where the grand total of our WooCommerce orders is not reflected in ERPNext after applying a discount in WooCommerce. We are using a plugin called Conditional Discount from Pi Web Solutions that creates a discount based on shipping zip code. The Order Total in WooCommerce is correct but when the information is passed to ERPNext, the order total does not include the discount.

Context information (for bug reports)

In the example below, there are two 20% discounts applied to the order. One is -$19.20 using a coupon code and is visible in the Discounts line on WooCommerce. This method is tried and true and works in ERPNext. The Order Total also reflects an additional -$19.20 discount using the conditional discount. This additional discount does NOT reflect in ERPNext and the order total is incorrect in ERPNext because of that.

7108-woo
7108-woo-2
7108-erp

Steps to reproduce the issue

  1. Install Conditional Discount plugin and create a discount on WordPress website
  2. Create and submit a WooCommerce order through WordPress website using the conditional discount
  3. Check total on WooCommerce order vs. ERPNext order created through webhook/integration

Additional information

ERPNext online, no instance/server on premises, running v13.
We have tried to do this discount by creating a negative shipping amount, but this method of creating a shipping discount based on zip code is not accepted by our payment processor, PayPal. It errors out and says shipping amount invalid if the shipping amount is less than $0. That is why we are using a plugin. If there is a plugin that is tested with ERPNext we are open to changing.

Capture given discount in some field

Shopify gives allocated discounts for each item. AFAIK there's no sane way to separate out line-level vs order level discount.

Possible solution:

  • Capture total discount per item in a new custom field on SO item table.

Phone Number Extension Error

I’ve successfully turned on the Shopify connector in ERPnext but I’m having an issue with orders that come in from Amazon through our Shopify store. As you may know, Amazon doesn’t release actual phone numbers on customer orders and instead gives an “anonymized” phone number with an extension number. This extension number is causing an error during the sync.

Error in Ecommerce Integration Log:
frappe.exceptions.InvalidPhoneNumberError: +X XXX-XXX-XXXX ext. XXXXX is not a valid Phone Number

Note: Phone number removed for privacy

Does anyone have suggestions on how to correct this issue?

Upload stock transfer as GRN on Unicommerce

Only way to add stock with batch no. details is GRN API right now.

Changes required:

  • A new stock entry type "Unicommerce GRN" with the purpose of transfer.
  • On submitting the entry, create and upload a CSV file for auto import on Unicommerce.
  • Don't allow cancelling GRN Stock entry.
  • Setting page should have basic configs required for this feature (like supplier code)

ERPNext does discounts on Grand Total while Shopify does them on Net Total

Any discounts on an order will sync totally wrong because all of the taxes will be calculated wrong. Then ERPNext uses this wrong total in all of the other documents, including the payments sync’d.

Example:
Order Net Total: $100
Discount: $20
Tax 10%

Shopify:
$100 - $20 = $80 (Discount on Net Total)
$80 * 1.10 = $88 (Tax Calculation)
Order total: $88

ERPNext:
$100 * 1.10 = $110 (Tax Calculation)
$110 - $20 = $90 (Discount on Grand Total)

So everything in ERPNext is off. ERPNext even logs a payment of $90 instead of $88 which is what the customer actually paid.

So I have to then go in and cancel and amend any orders that have a discount on them, including changing all the payment information and sales invoices.

I have tried changing the default of the "Apply Additional Discount On" field to "Net Total" instead of "Grand Total". I changed it in Delivery Note, Sales Order, and Sales Invoice.

I am using the latest ERPNext v13.17.1 with the latest ecommerce_integrations.

Unicommerce bulk import API

  • need API end point for creating import jobs using unicommerce API

Format:

curl --location --request POST 'https://tenent.unicommerce.com/services/rest/v1/data/import/job/create?name=<IMPORT JOB NAME>&importOption=CREATE_NEW' \
--header 'authorization: bearer <TOKEN>' \
--header 'cache-control: no-cache' \
--header 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
--header 'facility: <FACILITYCODE>' \
--form 'file=@"/Users/unicommerce/import-2999713723036792_log.csv"'

Shopify: Sales Order Aggregate same tax rate in Sales Order

In our country we have very difficult VAT and Tax Settings and it was hard to set it up in shopify. Let's take the following example:

  • An order contains 1 item of coffee with 32,10 € which is setup as net total.
  • Onto this value a VAT of 7 % is applied.
  • Shipping costs are also added as net total by 4,99€
  • Onto shipping costs, the same tax rate as the item has to be applied. In this case 7%.

Current Behaviour:

When such a SalesOrder is synced from shopify. It will end up having these lines:
image

Idea:

Aggregate all 7% VAT at the end with a single line Type Actual with 2,60 (regarding example above).

Just a request for comments.

Regards

Shopify: Enable a description text for the final invoice on each tax line setting

Currently it is only possible to map shopify tax title to account. But on the invoice, the name of the account head is displayed, as it uses the default description from there.

I think it makes sense to enter a description per each of these lines, that is displayed and used in the invoice templates (should actually be already existing field description):

image

What do you think?

Feature Request: MedusaJS integration

MedusaJS is an open source & fully customizable alternative to Shopify.
It comes with a headless cms backend, admin dashboard, and a storefront in NextJS or Gatsby.
ERPNext integration with MedusaJS would be awesome

Shopify says variant PLU-0000014 exists with same attributes error when trying to sync an order with PLU-0000014 on it

What I get:

Traceback (most recent call last):
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/order.py", line 46, in sync_sales_order
    create_items_if_not_exist(order)
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/product.py", line 307, in create_items_if_not_exist
    product.sync_product()
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/connection.py", line 35, in wrapper
    return func(*args, **kwargs)
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/product.py", line 57, in sync_product
    self._make_item(product_dict)
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/product.py", line 68, in _make_item
    self._create_item_variants(product_dict, warehouse, attributes)
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/product.py", line 179, in _create_item_variants
    self._create_item(shopify_item_variant, warehouse, 0, attributes, template_item.name)
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/product.py", line 144, in _create_item
    ecommerce_item.create_ecommerce_item(
  File "apps/ecommerce_integrations/ecommerce_integrations/ecommerce_integrations/doctype/ecommerce_item/ecommerce_item.py", line 159, in create_ecommerce_item
    new_item.insert(ignore_permissions=True, ignore_mandatory=True)
  File "apps/frappe/frappe/model/document.py", line 240, in insert
    self.run_before_save_methods()
  File "apps/frappe/frappe/model/document.py", line 971, in run_before_save_methods
    self.run_method("validate")
  File "apps/frappe/frappe/model/document.py", line 869, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1161, in composer
    return composed(self, method, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1144, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "apps/frappe/frappe/model/document.py", line 863, in <lambda>
    fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
  File "apps/erpnext/erpnext/stock/doctype/item/item.py", line 116, in validate
    self.validate_variant_attributes()
  File "apps/erpnext/erpnext/stock/doctype/item/item.py", line 726, in validate_variant_attributes
    frappe.throw(_("Item variant {0} exists with same attributes")
  File "apps/frappe/frappe/__init__.py", line 445, in throw
    msgprint(msg, raise_exception=exc, title=title, indicator='red', is_minimizable=is_minimizable, wide=wide, as_list=as_list)
  File "apps/frappe/frappe/__init__.py", line 424, in msgprint
    _raise_exception()
  File "apps/frappe/frappe/__init__.py", line 378, in _raise_exception
    raise raise_exception(msg)
erpnext.controllers.item_variant.ItemVariantExistsError: Item variant PLU-0000014 exists with same attributes

What I expect:

I expect it to sync the order, since the part it is complaining about already exists (PLU-0000014). The shopify connector even originally created this item.

Even if I rename the original item it gives me the same error. I can't delete the original item because it has stock transactions against it.

What I would like to see:

  1. I would like to see a way to say "use X item as PLU-0000014"
  2. or have it just use the item it says is in the way.

UX / improvements for unicommerce

  • configurable sync times (for new orders)
  • Ensure draft invoice is posted with error in case of missing stock (?)
  • Grouped item view if item list is huge?
  • raw data on doc objects for server scripting.
  • Show "display order id"

Shopify: Sales Order with Customer is missing contact information

Currently when using erpnext_shipping app, it requires a contact to be present in the sales order and corresponding delivery note. This contact is currently not linked. When I tried to link it, I noticed additionally that surname and lastname needs to be explicitly set even if fullname is already present. So for erpnext_shipping integration a contact with the required field: Surname, Lastname, Fullname, Mail is required to work. This is currently not the case.

DocType action to unregister all stale webhooks

  • When integration is disabled show the button "Unregister all webhooks"
  • This should unregister all webhooks that match the current URL

(this is already done on unregistering, but that's not good UX)

Newbie Help

So I have been using Frappe for a few months, and I would like to use the integration with Shopify. I am a little unsure (based on the readme) how to get started with running this locally and then how this will deploy. Are each of these integrations integrated into Frappe? Do you install them as Frappe apps? I am a little confused how to make this work with an existing Frappe instance. Thanks!

Allow option to only sync finished order

Some users don't want to be bothered by SO at the creation level and just want the final invoice/inventory impact in their ERP.

Option to sync completed orders only serves this use case.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.