When you first start a business, it can be overwhelming trying to learn all the things you need to know. For many new small business owners, it’s getting their heads around accounts that can feel the most difficult.

Track We have both separate tracking pages for India E-commerce sites and International shopping sites.You can track order status with your order number or shipping reference number.Enter tracking number & email address to get started. How to find the delivery AWB number? You can get the shipping details from the seller where from you have Track Order Number Parcels Logistics Shipment. This calculation has been done based on the numbers given in the below ordering fractions, decimals, and percentages calculator, just enter numbers of any type and calculate to find number of inputs, ascending and descending order. For example, a set of 4/5,4.3,10,2.9,23,0.1 will be ordered as 0.1,4/5,2.9,4.3,10,23 and 23,10,4.3,2.9,4/5,0.1.

For whatever reason, many are intimidated by anything related to numbers, and while it’s always possible to use an accountant, payroll firm, or bookkeeper to assist you, it’s just not affordable or realistic in the early days of a business.

For the best outcome, it’s important to gain new skills and learn terminology – one such term to make sure you understand is the PO number.

What is a Purchase Order Number?

There are plenty of small businesses out there they don’t bother with purchase order numbers. If your company that sells products, or must order materials or parts from suppliers, you need to be using them.

The purchase order outlines exactly what a purchaser needs from any particular supplier or vendor. It details the delivery date, billing address, shipping address, payment terms, and so on.

The buyer creates the purchase order, which can be done with cloud-based procurement software, to create electronic purchase orders. This approach helps with tracking and digitally submitting the orders to suppliers, which is far more productive and efficient than using a manual paper-based process.

Every purchase order should include a unique PO number to assist with referencing shipments to purchases. The PO number, along with order details, may be printed on packing slips.

Why are PO Numbers Important?

In a perfect world, everyone would pay on time, and all orders would be delivered as ordered without error. Because that’s unfortunately not the case, payments can be missed, and orders mismanaged.

The purchase order is a legal document between the buyer and purchaser. Essentially, if you don’t have a purchase order, you don’t have an order from the customer.

Accepting a verbal order, common when it comes to services and small businesses, isn’t the best choice. Many small businesses don’t realize the larger businesses they’re selling to not only have purchase order systems in place but insist they are used. If the business is done without a purchase order, reconciling the invoice will be delayed because when it is received, the accounts payable department will likely question it.

Using a PO number ensures your invoice gets processed in a timely manner. Not only this, but it also helps minimize the risk of incorrect payments, since deliveries and invoices have the corresponding reference number.

It also means you have proof that goods and services were ordered. You can compare your ordered inventory to your inventory shipped, and also track when payments have been made on specific orders.

“Getting paid on time is critical to the success of your small business and using purchase order numbers makes that much easier.”

PO Numbers and Cash Flow

Order

Most business owners will hate the idea of more administration and paperwork, but the PO and PO number are essential to maintain cash flow. Using a PO number system with good credit management policies can make a real impact on small business.

The policies should include assessing your customers before you begin to work with them, checking their payment history and credit score. If these don’t indicate you’ll be paid on time, you should discuss either partial or full payment up front.

If you’re satisfied, make sure you have a good collections process in place. This means invoicing on time, following up with customers when payment is late, and knowing the process to collect a bad debt – a process that requires a purchase order.

If any purchases will be taking place outside of the purchasing department, your company should require people requesting goods and services to first use a purchase requisition. The purchase requisition can become a purchase order once the department manager or someone else in charge approves the purchase.

Cloud-based software solutions allow users to create a purchase order request, also known as a purchase requisition and automatically route it to the appropriate person or team for approval, depending on dollar amount, budget, and so on. Larger purchases can be set up to require approval from multiple people. Numbers are assigned to the purchase requisition and linked to the purchase order number so there’s a nice paper trail in the event that it is needed to resolve a dispute.

Well-run, professional businesses take these actions. Purchase orders and purchase order numbers are important parts of that. As such, small businesses should aim to use these from the beginning of operations.

PLANERGY automatically assigns purchase order numbers and links them to the corresponding purchase requisition to make tracking easier.

Find Out How

For one of my projects, I needed to generate a random order number that will be sent to customers in an email after they order. Lots of companies do that, it usually looks like this:

In the good old days, turning audio into text was sheer grunt work, but not anymore. OTranscribe is a free and open-source app that runs in your browser. Got your audio file ready? Here's how to start the transcribing session: Click the blue Start Transcribing button on the homepage. Transcribe audio to text free software. Get up to 300 minutes of automated transcriptions for free! We use the best online audio-to-text conversion engine in the market to generate free transcriptions for your every need. Sign-up now so you can start uploading your audio recordings and get your automated transcripts for FREE. Transcribing audio to text involves taking an audio file and converting it to a text document verbatim and in the same language that the original speaker used. The best audio to text conversion can take an audio file in Spanish and convert it into a Spanish text file. Do you want to transcribe the speech from your MP3 into a text file? Well, now you can, with VEED! VEED’s online auto transcription tool is fast, free, and easy to use. Compatible not just with MP3s, but with WAVs, AACs, OGGs, M4As, and even video files - you can convert to text with the click of a button.

Requirements

  1. Has to be all digits.
  2. Needs to be unique. We don’t want two orders to have the same order number.
  3. Has to be random - i.e. not enumerable. We don’t want the orders to be consecutive for example (5001, 5002, 5003, …) so that people can’t guess other orders numbers.

Format

Order number is not the same as order id that you use internally to uniquely identify your orders. For order ids, it’s best to use a known format like UUID or something similar.

There’s no standard format for order numbers. They should be long enough to be able to hold enough orders but at the same time not too long as people have to use them to identify an order and sometimes read them out loud to a customer support representative.It’s also good practice to divide them into couple of sections for better readability.

I chose a 4-6-4 format (x is a digit):

There wasn’t really any particular reason for this choice other than nicely symmetric. This gives us 14 characters to identify an order which should be plenty enough for most cases.

Solution #1 - Generate and validate

The first approach for this problem is:

  1. Generate a random 14 digits number.
  2. Search for this number in database to see if we had it before (unique).
  3. If we found it, try another one. If it’s unique, use it.

This is an obvious approach and makes sure that we don’t have collisions.Problem is that we make a round-trip to the database and if the db is hosted somewhere else the call would involve the network and it can be slow. If we’re making the call to the db anyway chances are that in most cases we won’t have to make an extra call due to collision but we still have to add code path to handle the case of collision.

Can we remove the need to make a call to validate ?

Solution #2 - Generate a universally unique number

We can try use time 🕒 to generate a number that’s’ unique.

System time is easily accessible in every programming language and time is progressive which means that if we read it in one moment and then read it again a moment later, we are promised to get a different value.

A good approach would be to use the Unix epoch time format which returns a 13 digits integer (at least until year 2286 when it’ll become 14 digits).To get to 14, we can just add one random digit as padding.The number is guaranteed to be unique down to the resolution of a millisecond and also the padding digit adds a little extra safety for two orders that happen at the same time.

So, in Javascript we can do:

Problem with this approach is that this number is not really random (excluding the padding digit) and we don’t want to expose our sophisticated order numbering scheme :-)

Solution #3 - Generate a universally unique and obfuscated number

The trick here is to use encryption to encrypt the epoch time:

  1. Get current time and add extra digit.
  2. Encrypt the result to obfuscate the original number and make it look random.

If we use a symmetric-key encryption (encrypt and decrypt with same key) we preserve the uniqueness property of the number after encrypting since it’s always possible to decrypt it back to the original number.

We need to use an encryption algorithm that yields a numbers-only ciphertext. I have read about format-preserving encryption:> In cryptography, format-preserving encryption (FPE) refers to encrypting in such a way that the output (the ciphertext) is in the same format as the input (the plaintext).

Meaning that if we encrypt a 14 digits number the result will also be a 14 digits number.

I have opted to use a simple FPE technique from a “prefix cipher”.It’s a pretty straightforward method and consists of:

  1. Take all digits [0.9] and encrypt each one of them however you want. I use aes-256-cbc with the password michael in this example:
digitencrypted
0cc542e3575b66e7e18da4efea5bd5dd0
105dc4db56eecf0bbe86ecd5b32b0bd8a
2bb6aa9a0e4459e44dd1161f8151bf5b8
3a4113f6a28d807ec67864284c4c8fa7f
4136dbce2a64017352c433586441b961f
5cf3fc8ac69a41f1ac43d7ba37e7fb68c
67c154f41a8bbf39a844ffb8cce82e08f
7736197baa4f81c7ec5de42f099e84902
85068ecec92f52719c904361c9b91b929
9393d6b7d2eddcf2021600a744406fa2c
  1. Sort the encrypted results:
indexdigitencrypted
0105dc4db56eecf0bbe86ecd5b32b0bd8a
14136dbce2a64017352c433586441b961f
29393d6b7d2eddcf2021600a744406fa2c
385068ecec92f52719c904361c9b91b929
47736197baa4f81c7ec5de42f099e84902
567c154f41a8bbf39a844ffb8cce82e08f
63a4113f6a28d807ec67864284c4c8fa7f
72bb6aa9a0e4459e44dd1161f8151bf5b8
80cc542e3575b66e7e18da4efea5bd5dd0
95cf3fc8ac69a41f1ac43d7ba37e7fb68c
  1. We now have a cipher method to encrypt every digit:

I have created a small node library that uses this method to encrypt digits or other things. Check out the complete code if you want: node-fpe.

Summary

To wrap things up, here are the steps to generate an almost unique randomly looking order number:

  1. Get current Unix time (ms).
  2. Add another random digit to complete 14 digits.
  3. Encrypt with FPE
  4. Format (4-6-4)

Code is available at my Github repo: https://github.com/mderazon/order-id

Collision probability

The order number is not guaranteed to be unique. Two orders will have the same order number if they both happened at the same millisecond and also both have the same padding digit.

It’s important to understand the probability for a collision to see if this can work reasonable in a real system.

Let’s divide this event into two separate probabilities and then multiply them to get the final probability:

Track A Order Number

  1. P(two orders at the same ms)
  2. P(two orders with the same padding digit)

Probability of two orders at the same millisecond

We are assuming orders are independent of each other and can come at any time during the day. This means they are controlled by a Poisson process with a parameter λ that gives the expected number of events per unit time.

Assuming we have 1,000 orders per day, λ = 1e3/8.64e7 (events per ms) = (events/day)*(days/ms).

In a Poisson process, the time between successive events (let’s call it the inter-event interval) has an exponential distribution with mean 1/λ. In our example, this gives an average of 86.4s between orders.

Given that an event has just occurred at time t0, we want to calculate the probability that the next event occurs at time t1 ≤ t0+1 ms. That is, the inter-event interval will be between 0 and 1ms. To do that, we can integrate the probability density function (PDF) of the inter-event interval from 0 to 1ms. This is the same as evaluating its cumulative distribution function (CDF) at 1ms. The CDF of the exponential distribution is:

Evaluating this at λ=1e3/8.64e7 and t=1ms gives a probability of ~0.0000115

Order Numbers In Ascending Order

Probability of two orders with the same padding digit

This one is easy, probability of choosing the same number twice is just 110.

Overall probability

Assuming 1,000 orders per day and a random padding number, the probability comes down to a simple multiplication:

This is very low and reasonable.

But what about big scale ? According to some estimations, Amazon has 35 orders per second, which means ~3M orders per day.Plugging this number into our probability equation yields 0.003 or 0.3% chance that two orders will have the same order number. This is too high to ignore and thus makes our solution not that great.Also, our calculation assumed the distribution is homogeneous and we know that real life models don’t behave like that. People order more at certain times and less at other times. This makes the probability for collision even higher.

Conclusion

This was a nice try for me to think of a way to create random numbers without needing to check for collisions. Building on system time could have been a good approach but the granularity (ms) is not enough in a system with large volume of orders.

Order Number Tracking

Therefor I think that the preferred solution is still to generate a random number and validate it’s unique.

You can see the code mentioned in this post here:

Dhl Tracking Order Number

  1. node-fpe - Format preserving encryption for Node.js.
  2. order-id - Time based library for generating random looking order numbers.