I asked the various questions to see how the solution we use might apply to your situation. I think it could work very well for you although there are some commercial addons and services involved. My system is still a work in progress which I will explain shortly. I don't know what you may or may not have installed so I am just listing everything we use.
We have the same type of setup as you, almost identical with your description. We have many products with many attributes and many of the attributes affect prices. We drop ship certain products, other products we can drop ship if we do not have sufficient quantity on hand, and yet others need to be shipped to us before then ship it on to the customer.
We are using Quickbooks Enterprise instead of Xero. QBE can "almost" auto create purchase orders (you have to click a button in a report for the purchase order to be created) based on the stock settings per item. For drop shipped items our minimum stocking quantity is -1 and max is 0. So when a drop ship order is entered it makes the quantity on hand -1 (or however many units were ordered) and triggers the product to be put into a purchase order. Since the max level is set to 0 it will only order enough to cover the drop ship order.
QBE uses item numbers (model numbers) and has a field for MPN and custom fields such as UPC and SKU. It can also be set up with barcodes and connected to a scanner. You can either specify the barcode or it will automatically create them for you. You can create groups of products, so if you sell a kit you can specify individual items and quantities that make up the kit. You can also set up attributes although for my operation I have set up each attribute combination as an individual product with a unique model number since that is how we order them.
QBE also has a receive items page, which can be separate from receiving a bill from the vendor. You receive items against the purchase order or bill, receiving against the PO makes it easier to track backordered items. You can use your barcode scanner to speed up receiving. You can have the barcodes on packing lists, too. And you can create separate pick tickets with bin locations to help warehouse staff accurately and quickly pick the correct items.
You can also enter lot and/or serial numbers if you need them. We personally don't need either so I have not tried it. QBE also has a fixed asset section to help automatically figure out depreciation and amortization.
We use a service called T-Hub to import orders from ZC into QBE. T-Hub has many other features that we do not currently use: you can print shipping labels, change prices and stock levels, print packing slips and invoices, enter phone orders, push tracking numbers in any direction (to QBE, to ZC, from QBE to ZC) plus many other things. It can be used as the controller software for the business but I find the interface to be a bit clunky and mid-90s in appearance. T-Hub also integrates with Amazon, ebay, and many other sales platforms simultaneously and can be configured to differentiate where an order is coming from to make various reports easier to organize. It can push stock changes from QBE to the sales platforms, and it has an auto sync feature to do all of these various tasks in whatever time periods you set. So as you sell something in ZC, it imports it into QBE and then pushes to stock changes to your other platforms and vice versa. T-Hub also integrates with Quickbooks POS, and Quickbooks POS integrates with QBE. In fact, I believe that QB POS is supposed to have better inventory control especially for attribute heavy items. I have never tried it so I do not know.
One of the best features for us regarding T-Hub is the interface between it and ZC is in PHP and resides in the ZC admin directory. I wrote a custom function that maps custom fields I added to the attributes controller in ZC. The custom fields are for SKU and SKU quantity. Sometimes the SKU will be the base model number with something appended to the end, such as Widget1RD for red or Widget1BLK for black. Sometimes the attribute will actually be an additional line item such a gasket or different types of screws to mount the item. The function can do either thing very easily. It can also specify if there needs to be multiple amounts, so for instance something might need 2 screws and another thing needs 3. In the QBE or T-Hub packing list and invoice it will show whatever quantity specified and the new line item if it is one. Or if in ZC the SKU needs to be different from the model, it can do that, too.
The Ceon Advanced Shipper module is perfect for drop shipping and setting specific shipping rules by category, manufacturer, model or a combination of all 3. It is incredibly flexible and for us it is indispensable since we sell oversized items that can't qualify for free shipping and we sell internationally.
The drop ship purchase orders module in ZC can automatically email a PO to a vendor when an order is placed.
There are several attribute stocking modules for ZC, SBA in the downloads section and a couple commercial ones. I have been using the Numinix Variants module. They have changed their modules to SaaS with monthly fees so I probably would find a different one if I were just starting with it. But I have found that it is much more feature rich and can set some attributes as stockable while others have no bearing on stock levels. And it can show the stock amount on the product info page, and show a variant as out of stock. Stock levels can be set per variant combination. You can also enter a SKU per variant and import and export the list with CSV files which are incredibly handy for doing bulk work. I am sure there are other modules that can do the same or similar that don't have the monthly fee.
I believe there is a module for attribute image swapping in the downloads section.
Now, for the current limitations I am working on fixing. Currently, I cannot push stock changes to ZC for the items with attributes. I need to custom code a function for T-Hub that will map to the Numinix variant DB table. I also cannot bulk change attribute prices in ZC. I can do bulk price changes in QBE, so I need to also map the communication from QBE through T-Hub and to ZC so prices can be pushed from QBE to ZC. I am not using any one program as the master controller yet due to getting the communication between everything bi-directional. We print labels and update order status in ZC, we do customer emails through a ticket system (osTicket which is open source), payroll is done through an online payroll service instead of through QBE due to cost, phone orders are run through ZC instead of QBE or T-Hub. So, I have not yet gotten the system completely smooth to where one program is the master and everything else is a slave that has little to no direct interaction. But that is my ultimate goal. I would like to use QBE to run everything but processing cards through them is not as cheap as a different merchant provider. T-Hub would probably be the best option if it wasn't so dated and a bit clunky to work with all day long.
My overall point in this super long post is you can definitely get to a much better place than where you are. Even if you don't use anything I have outlined, I think you will find that you can put it all together in a way that works for you. If you are into using DEAR and are happy with Xero then ask them if they will provide a connector for you for ZC. If they won't, ask them for their PHP API so you can get someone to write it for you. I can still give you the custom function I wrote because it it pretty generic and ties in with ZC functions which would have to be used in the connector. The attribute controller changes are pretty easy, too.
These are the issues that occur when a business scales up to a certain high level. So I congratulate you on your success and toast your continued growth and even greater success!
PM me if you'd like to get in touch directly to carry on the conversation in greater detail.
Matt
Bookmarks