Created
June 25, 2018 12:22
-
-
Save vneri/a8dc7ac842bca53a08f8ec2b957140f5 to your computer and use it in GitHub Desktop.
JavaScript snippet for generating the checkdigit of an USPS tracking number
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// using USPS Barcode Construct N04 | |
// padding function, if not available | |
Object.prototype.pad = function(size) { | |
var targetHelper = String(this); | |
if (targetHelper.length<size){ | |
targetHelper = Array((size - targetHelper.length)+1).join("0") + targetHelper; | |
} | |
return targetHelper; | |
} | |
// modulo10 function | |
function USPSMod10(trackingNumberRaw){ | |
// take all numbers on even positions | |
var evenNumbers = 0; | |
var oddNumbers = 0; | |
for (var i=0; i<=20; i++){ | |
if (i % 2 == 0){ | |
evenNumbers += parseInt(trackingNumberRaw[i]); | |
} | |
if (i % 2 == 1){ | |
oddNumbers += parseInt(trackingNumberRaw[i]); | |
} | |
} | |
evenNumbers *= 3; | |
var addedNumbers = evenNumbers + oddNumbers; | |
// subtract from 10 to get the number that needs to be added | |
var checkDigit = (10 - (addedNumbers % 10)) % 10; | |
return String(checkDigit); | |
} | |
var trackingNumber=""; | |
// this fields have to be populated accordingly | |
var servicetypecode = ""; | |
var mailerid = ""; | |
var packageid =""; | |
// channelAppID | |
trackingNumber += "94"; | |
// ServiceTypeCode | |
trackingNumber += servicetypecode.pad(3); | |
// Source Identifier | |
trackingNumber += "20"; | |
// MailerId | |
trackingNumber += mailerid.pad(9); | |
// Package Id | |
trackingNumber += packageid.pad(5); | |
// CheckDigit | |
trackingNumber += USPSMod10(trackingNumber); | |
// this generates a clickable link | |
var trackingLinkFormula = 'https://tools.usps.com/go/TrackConfirmAction_input?qtc_tLabels1=' + trackingNumber; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment