Purchase Orders
Product receivables will require building a purchase order and then paying it off with order payables. A purchase order (PO) is a commercial document and the first official offer issued by a buyer to a seller, indicating types, quantities, and agreed prices for products or services. Acceptance of a purchase order by a seller forms a contract between the buyer and seller, so no contract exists until the purchase order is accepted. It is used to control the purchasing of products and services from external suppliers.
General user actions of Purchase Order are:
- Create a new or replicate an old PO
- Automatically build and submit a PO
- Receive item(s) specified in PO
- Pay the partial or full amount of the PO
- Cancel the item in a PO, or a PO
- Submit PO
- Return item(s) in PO
- Close PO
Purchase Order List
The purchase order list has the following data
- Expected Date
- PO ID
- Supplier type and info
- Received vs. ordered
- PO Cost with Taxes
- Payment made
- Status of the PO – Draft, submitted, overdue, Partially Received
- Location for which the order was placed
Purchase Order List – Filters
PO List is filtered through
- Business location – Multi-select
- Supplier Name
- PO Status – Multi-select
- Payment Status – Multi-select
- PO Age – Range From and To
- PO Cost – Range From and To
- Expected Date – Range From and To
- Payment Balance – Range From and To
Purchase Order List – Search
Supplier List is filtered through
- Supplier Information
- Supplier ID
- Supplier Name
- Supplier Business Name
- Supplier Phone Number
- Supplier Email Address
- Supplier Website
- Purchase Order Information
- PO Description
- Product Name
- Product Description
- SKU ID
- Notes
- Document Names
Creating a Purchase Order
Purchase orders can be built against a single business location only. All orderable items within a single PO have to be mapped to the supplier with the correct business location. Users can modify or delete purchase orders by Edit Order or Delete Order button on the order details page any time prior to closing PO.
PO – Order Information
Key attributes included for purchase order are:
- Purchase Name – Just the name of the PO as desired by the User. The purchase name is integrated with the Reason list and presented as a suggestive value as set up in the Reason List. If there are no values in the Reason List, then no suggestions will be provided, and users can simply write what they want.
- Purchase Order: PO# – this is a unique number generated by the system after PO per business. The unique number always starts with PO. Users can also type manual PO which has to be unique and not previously used. When setting the system-generated PO#, the uniqueness of the number is validated. PO ID once saved can not be changed again.
- Product Type: Only one type of order is allowed per PO. This drives what items can be attached to the PO for purchase.
- Order Type
- Direct Purchase – this is the only supported method for release 1.
- Reverse Financials – this is used for Pay-as-you-go and is part of the future development
- Expected Delivery Date – This is when the business PO is to be fulfilled.
- Recommended Lead Time – A recommended lead time is generated by taking the average of all the items attached to the PO. This lead time adapts as the items are added or removed.
- Minimum lead time: The lowest lead time of any item
- Maximum lead time: The maximum lead time of any item
- Average time: The average lead time for all items.
- Special Instructions – These are descriptions written in the PO.
- Shipping Terms – This is not required for 1st release.
- Ordering Location: This is the business location that is making a purchase. Only one location is allowed per PO. Location can not be changed if items of the location are attached. Location can change if there are no items attached to the PO.
- Ship to Business Location: If the business wants the order to ship to another location. Usually, this is a business address. In the case of dropship orders, this will become the shipping address of the customer.
- Bill To: A resource member is assigned who will pay the bill for the purchase order. Usually, this is a purchase order manager.
- Ship To: A resource member is assigned who will receive the shipment.
- Actual Lead Time: This is defined as the number of days between opening a PO for the Contact and receiving the Items. This is when the user receives the item from the supplier.
PO – Attaching Items
In order for a PO to be submitted, at least 1 item needs to be part of the PO without issues. Users can attach multiple items in the PO – there is no limit for this. The following additional fields are required in order to fill the order for purchase
- Unit Cost – The unit cost of the product. The UI pulls unit cost from the Supplier item details. Users will be able to change the unit cost till the PO is fully paid and the order is completed. Changing the unit cost in PO for an item does not change the unit cost in the Supplier’s item details.
- Quantity – Quantity per unit for which value is pulled from “default reorder quantity”. This value is modifiable in the PO.
- Taxes – Manual percentage entered to place taxes paid per item. “Apply all”, can apply taxes to all items.
- Items Total – This is the sum of the PO for all collective items total.
PO – Payment Options
Purchase orders have payments against items receivables. Businesses can pre-handedly decide the structure of this payment setup in business settings. They can distribute payment as they prefer. For example:
- Example 1
- Initial Payment – 20%
- Orders Received – 80%
- PO Completed – 20%
- Example 2
- PO Completed – 100%
- Example 3
- Orders Received – 80%
- PO Completed – 20%
Additional Charges
PO can have additional charges. These charge types are grabbed from the “Reason List” listed in the Business Structure. Users can continue to add more if they want, and that particular item will be also included in the Reason List for global availability to other Purchase Orders. Additional PO Charges with cost and tax (percentage) could be for the following:
- Insurance
- Import Duty
- Export Duty
- Shipping
- Storage
- Delivery
- Transport
- Sales Tax (Tax Class)
- Other Charges
Purchase Order Files
File Attachment Types
The following file types are pre-set as part of the seeding meta-data. Businesses can add additional types or change these file types from their ‘Reason List’ in Business Settings.
RFP |
RFI |
RFQ |
Solicitations |
Offers |
Contracts |
Amendments |
MOU (Memorandum of Understanding) |
Vendor Quote with T&Cs |
Bill of Lading |
Business Validation on Upload
Uploading files for a particular business. To maintain a level of separation, a double verification of the import into the right business is done by checking:
- Business ID mapping
- User to business ID mapping
If the business validation fails, then the system will give the user proper notification, and also generate system errors deposited to Operations Systems.
Supported File Format
The following cases are managed by the system matching file format.
- Multiple file uploads will be supported.
- Multiple file types upload will be supported.
- Import utility will only allow jpeg, jpg, and png to get imported.
- Format errors could be
- The file format is not correct.
- There is no file at this location
- The file size is too big (if the file is larger than 2 MB).
Checking For Virus
Each file is uploaded with a check for viruses.
- The file will be stored on the server in the business storage folder.
- If the utility requires a file uploaded, then the system will write on the server as read-only with only a specific cron job to have permission to execute on the file.
File Restrictions for Upload
Files will restrictions be managed to be uploaded through three major classes of restriction. Each of these classes may vary in their restriction policies. File upload will support Media import and Document Import Restrictions.
- Media Import – Class used to import media like avatars, photos, etc.
- Video Media Import – Class used to import media-related videos.
- Document Import – Imports multiple documents
- Data Import – Class used to import data sets contacts, inventory, suppliers, tags, etc.
Restrict uploading of malicious files that can make the website vulnerable to client-side attacks.
- Restrict files with metadata, like the path and filename. Or validate the metadata extremely carefully before using it.
- Validate permitted file extensions. Check for double extensions in this case. (Whitelist filter)
- Validate the ‘Content-Type’ header, to make sure the file is valid or not.
- Restrict the file name size to 96 characters.
- Restrict special or invalid characters in the file name. it is highly recommended to only accept Alpha-Numeric characters and only 1 dot as an input for the file name and the
- extension; in which the file name and also the extension should not be empty at all (regular expression: [a-zA-Z0-9] {1,200}
\.[a-zA-Z0-9]
{1,10}). - Restrict files with reserved (forbidden) names such as CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9, .ADE, .ADP, .BAT, .CHM, .CMD, .COM, .CPL, .EXE, .HTA, .INS, .ISP, .JAR, .JS (NEW), .JSE, .LIB, .LNK, .MDE, .MSC, .MSI, .MSP, .MST, .NSH .PIF, .SCR, .SCT, .SHB, .SYS, .VB, .VBE, .VBS, .VXD, .WSC, .WSF, .WSH
- Restrict Flash, or Silverlight contents in the files
- Limit the maximum and minimum file size. The minimum file size should be 50kb, and the maximum size should be 2 MB. The code should be able to handle large files. So, continuous transfer without break in the session. We are limiting initially to 2mbs, but should allow to increase this anytime without issues of major testing and configuration change.