Private static bool _ValidateFedE圎xpressCheckDigit( string trackingNumber)Ĭhar trackingNumberArray = new char Return _ValidateFedExGroundCheckDigit(trackingNumber) Return _ValidateUPSCheckDigit(trackingNumber) Įlse if (courierName = CourierName.FedExGround) Return _ValidateFedE圎xpressCheckDigit(trackingNumber) Įlse if (courierName = CourierName.UPS) // UPS method If (courierName = CourierName.FedE圎xpress) // fedex express method TrackingNumber = Regex.Replace(trackingNumber, ", " ").ToUpper() Public static bool IsValid( string trackingNumber, CourierName courierName) Return IsValid(trackingNumber, GetCourier(trackingNumber)) Public static bool IsValid( string trackingNumber) Public static CourierName GetCourier( string trackingNumber) If( Int32.TryParse(ch.ToString(), out testodd) = true) Int asciivalue = 32(ch) Įlse // Indicates character in odd position If( Int32.TryParse(ch.ToString(), out testeven) = true) If((charindex % 2) = 0) // Indicates character in even position // UPS Check Digit Calculation Method // private int CalculateCheckDigit( String trk) Calculate x to be (running total modulo 10).Calculate n to be (ASCII value of character - 48).Calculate n to be (2 * the numeric value of the character).If the character is in an even position (e.g., 2 nd, 4 th, 6 th.), then:.Calculate x to be ((2 * n) - (9 * INT( n/5))) where INT( n/5) returns n/5 rounded down to the next integer (e.g., 34.3 would be 34, but 34.8 would also be 34).If the character is numeric, then add the numeric value to the running total.If the character is in an odd position (e.g., 1 st, 3 rd, 5 th.), then:.Examine each character in the sequence:.Then, you'll see the method below the outline: Next, let me take a moment to outline the algorithm used to generate the check digit. To do this, we drop the "1Z" portion, and only use the last 15 characters in the method. The last and final character is the check digit.įirst of all, you will notice that the described sequence above gives us 17 characters, where as we only need 15 to calculate the check digit.The next 2 digits is the package number, zero filled.The next 5 characters is our invoice number (our invoices are 6 digits we drop the first digit, e.g., the 123456 invoice would yield 23456 characters).The next 2 characters denote the service type:.The next 6 characters we fill with our UPS account number "XXXXXX".This is up to you, as only two portions are required by UPS, the rest you can make up on your own. For information sake, I will describe how the company I work for generates tracking numbers. It takes a 15 character sequence, in this case a string, and calculates the check digit using this sequence. This method leaves the rest of the tracking number up to you. The input for the method is a string, but you could rework it to use a raw char if wish. The following code is a generic method that can be used to calculate a check digit for a UPS Tracking Number. I thought I would make it a bit easier for others by describing it here. It took me a while to figure this out, researching mostly. This article serves to describe the algorithm used to calculate a UPS Tracking Number.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |