I have a supplier's product file which I've read into memory via CSV. My next step is to make updates and additions to an existing BigCommerce product list (9k products). This is the first time I'll be dealing with an API.
My supplier file doesn't have the BC product ID in it, only its own product ID which is a piece of data on the product in BC.
In terms of requests, I think I'd need to:
GET a chunk of BC products (I think it's 200 per request)
iterate over the BC products, using bc id and where it matches the supplier file, then do PUT's to deal with updates
keep getting chunks until done
any remaining products are then added via PUT's
I think HTTParty is an applicable gem (along with the big commerce Ruby one).
My question is does the above fit the 'normal' process of how you would attack a problem like this? Or is there a better/standard way of how this would be approached?
The main thing I'm concerned about is how to iterate given there are 9000 records and I don't know the id ahead of requesting all?
The above is pretty much how I ended up doing the updates.
Main issue was order of getting/putting data so that nested objects worked correctly.
Eg need to do brands and categories updates before you can add products using them. Products need to be added before you can do images or Options/Option Sets
My first version I've stuck with HTTParty, but the next refactor will use Typhoeus to get through the data quicker; but need to be mindful of BC's API limits which for this sort of process you'll run into pretty quick (eg 4k product updates).
Related
The product uploading feature will be automated, so all you need to do is enter a product link through the back-end itself and that then add the product photo and description during the night preferably
Please let us know its possible in Magento
IMHO, the best way to achieve that is to create a csv uploader in the backend like you can find in Mage_ImportExport_Adminhtml_ImportController (the whole module can be source of inspiration). The csv feeds a special table that you create with during your module initialization. At the end, with a cron, at the desired time you check this table for the url and then retrieve the photo and description using curl or something similar.
Side considerations :
If you have a large amount of products to inject, you will prefer direct sql queries than the slow Magento ORM
Do not forget to deactivate the indexation during import process
If you need to update and references are different between your source and your Magento, create a special attribute to be sure to have a link between both
If you feel more confortable with other framework or language and you need to create a large amount of data, the importation process can be done with any language able to interact with mysql.
I have an e-commerce site that provides made-to-order clothing. I've created a configurable product and just one associated product.
Is it possible to display all of the possible attribute combinations within just one associated product rather than manually add every combination?
I've tried allowing out of stock products to be displayed, but this didn't show all of the possible combinations.
I'm not hugely experienced with Magento, but I've used many CMS systems and inventory management products. I've never once seen a matrix / configurable / multi-variation / whatever you want to call it setup where you didn't have to create each combination as a distinct SKU. I'm not saying it's 100% impossible, but I'd view it as extremely unlikely and probably a waste of time to pursue.
Why not just create your configurable products and their sub SKUs via CSV import? It will be far easier and faster than creating them one at a time. Creating every combination will also be extremely easy. If you're not comfortable with Excel, you need to correct that yesterday if you want to be good at product management.
See this article:
https://www.siteground.com/tutorials/magento/import-products.htm
I've started working on a new Magento webshop which has roughly 250000 different products. Each product can have different conditions (new, used, damaged, etc., each with their own price.). Magento doesn't seem to have a method to implement this at the moment. Of those 250000 products, there are about 150000 different conditions in stock and another 150000 conditions which aren't in stock but do have a price (which can be put on the wishlist).
Some numbers: 1500 categories, drop down attributes (country) with > 300 options, integer attributes (year). Starting with two websites 6 languages each.
I've thought out two solutions to solve this problem:
Grouped / Simple product structure
We create a grouped product which is the container product, each condition will be a different simple product. We'll relate these products to the grouped product.
The nice thing about this solution is that is pretty easy to implement, we'll have to import the data in the correct way and all the information is exactly presented in the way we want.
New Product type
We create a new product type which can have multiple conditions, each with their own inventory. On checkout the inventory is substracted. The problem with this is that implementing the CatalogInventory model in this way probably is difficult and building a whole product type is time consuming and bugprone in general.
The advantage of this solution is this that there will be about 2-2.5x times less products in the system.
Others
Are there any other options to solve this? Maybe there is a module that does all this?
In conclusion: Of course I prefer the first solution but can Magento handle that? Does anyone have experience with this much Grouped Products? The system will have about 550000 products (grouped + simple) products in the system, what will be the performance implications of this? What happens when the site grows and we'll have twice the amount of products?
Without knowing more details I'd lean towards using a new product type or just adding the feature independently of product types if you have a use for configurable products (I definitely wouldn't try to duplicate the configurable product type). I'd disable inventory management and use some additional tables which hold individual item inventory with the per-item conditions and maintain a separate inventory that way. Use events and overrides to control the CatalogInventory stock status as needed. Creating new products constantly which are largely duplicates seems like a hassle worth avoiding if this is a long-term endeavor that needs to scale.
However, the Grouped/Simple method might be a viable short-term solution and appropriate if the project is in it's early stages and can't afford a huge initial expenditure. If well-planned, a script should be able to convert all of the old grouped/simple products into your new product type when ready to launch.
How do I get all the details of multiple products in a single xml-rpc call.I have the SKU ids of 10 products. I am using the catalog_product.info to retrieve the details of a single product. But I am not able to pass multiple SKU ids or maybe I am doing it the wrong way. Making the same call 10 times takes a long time so that is definitely ruled out.
You can use multiCall rather than 10 seperate XMLRPC calls. This is explained in the Magento wiki.
You could also use catalog_product.items and specify a filter of multiple ID's. But that option will only give you basic product information (no things like prices, descriptions, etc).
If even multiCall is too slow, you will probably need to write a module that exposes a product collection through your own API method.
I have a customer who retails third party batteries, and some batteries can replace several OEM models.
For instance, 3rd party SKU 12345 may replace Toshiba N23 and HP 53214, thus my customer would like to create two products with the same SKU in front end (they are essentially the same product). However, Magento by default does not allow duplicated SKU.
My current solution is to set SKU to not required from the backend, and add another attribute called Model that allows duplicated values, and display the Model in front end.
Is there a better way to do this? Or is it possible to allow duplicated SKU?
Tian Bo
Noble Technologies
It sounds to me like you've found a good solution. I'm not so sure you should try to have duplicate values for SKU for two reasons.
First the whole point of SKU is that it is a unique identifier. That's its only reason for existing. If you're going to have duplicate values, then it's not a unique identifier; it's just another attribute. But of course Magento still needs a unique identifier to work, which means that this is an extra field, which takes us exactly where you are now.
That said we come to my second point which is this... I'm not exactly a Magento guru, but I've built my share of e-commerce sites and one thing I've learned is that they depend on certain unbreakable rules to work properly. One of them is that unique identifiers are unique, both on the database and application level. As such, a large part of the website depends on this to function correctly. Which I'm pretty sure goes for Magento too.
So trying to change such a basic premise in something so complicated will only lead to horrors and a slow descent into madness.
This sounds like a good solution that I extended a bit further, however what I did with multiple store was to create a visible attribute ITEM_SKU (Item SKU) - make it visible and searchable and then concatenate the store_id to Magneto SKU to make it unique.
So SKU becomes (Store_id "-" SKU).
It surprises me how often people are willing to break who-knows-what parts of Magento, just to get a specific piece working how they expect.
The proper way to allow for duplicate skus is NOT to (unless you'd like to re-write large parts of the framework). You CAN, however, add a custom attribute to products that shares all the same settings as "sku" minus the setting that requires values to be unique.
Changing product pages, emails, etc to show this value instead will require a little extra work but will save you headaches later.
Why don't you create 1 product (SKU 12345) and list this product in multiple categories. So your multiple categories will be Toshiba and HP. The same product (SKU 12345) will be listed in Toshiba and HP.