Looking in the boards, there used to be an order column for PONumber, which eventually got moved to CustomValuesXml (which even localizes and stores the prompt in the XML). We want to understand why, and maybe see if we can bring it back out (and add more functionality around it).

In our case, we'll probably have to do some customization, since it is a rather important column for us (and are still dumbfounded why it is so hidden). It is needed for business and sub-distributor customers. They don't care about the order number being generated by the nopC store, they have their own number for tracking and can have multiple active orders at a given time (placed and tracked by different individuals): they need to provide their PONum and be able to look for it to check status of an order.

So, we want to check with the community, understand why the P.O. Number has been relegated and hidden so much, and see what are the plans, to try and stay close so we can adjust our implementation over time. Maybe try and submit our code so it is included. The functionality seems too basic to be added through a plug-in (and hampers other possible plugin development).

For inbound PO Numbers (ie, customer provided identifiers), we need to at least:

* Allow optional entry (even require it on a per customer/role basis) regardless of the payment method - Customers with and w/o payment terms (credit) need to track their orders regardless of how they pay. Customers and/or store clerks should be able to modify it after the initial entry (since customer might have made a mistake)

* Need to be stored in a non-localized manner (can't have the "field name" change when a user changes a UI label or enables a language). Naming/labeling should be separate from the name used in storage. Also, using such labels to populate dynamically generated PDFs is also a bad idea (if you change the localized string resource, you expect that all new documents will be generated with the new labels, not with the values stored in a variable stored in an XML column that can't be changed by end users).

* Need to be able to search by PONum in the admin interface - which makes it a bit awkward, since storing it in an XML column is inefficient for searches.

* Need to display it on customer's order history and likely in notification emails (pretty much right next to the Order Id in must communications with the customer). There could be a plug-in to search a customer's order history (for sites that handle a large volume).

These should probably be part of nopC, and could be turn on/off using specific settings.

Having a base implementation, it would enable other plugins, like having a purchasing API that customers can use to submit their orders from their own systems, by providing your own API, or becoming part of a B2B network (see In the age of APIs why do 2 million companies interact via B2B networks?). There is even a Purchase Order example as part of Web Service Semantics - WSDL-S. It could be as end user friendly as being able to post an order from a spreadsheet.

A variation would be to be able to have multiple identifiers (and/or specify if each should be included in the packing list, shipping label, and/or invoice PDF). For example, there would be the Ids of the quote, the purchase order, the nopC order, and the "end" user (for drop ship orders) that might also have their own project id. Having a flexible identifier system is a good idea. Which I guess is what CustomValuesXml and CheckoutAttributesXml intend to do, but in the case of the PO number, it might be going too far (it can't be localized like this, and have to be available for indexing/searches).

Some posts on the boards also request features that have more to do with outbound PO Numbers, with being able to pack a group of orders (or items) and purchase them from a manufacturer (send a PO to the manufacturer straight from nopC with items that need to be procured). This is usually done through a back-end system (the accounting system), but in theory it could be implemented in nopC and provide advanced functionality (like having plug-ins to order needed items using one of the B2B networks).

Any suggestions?

Thanks