149 lines
4.8 KiB
Markdown
149 lines
4.8 KiB
Markdown
|
# TrackingBarcode class
|
||
|
|
||
|
For your reference, here is the source code of the TrackingBarcode class, used to represent a prepaid drop-off.
|
||
|
This class is provided to plugins as `global.apis.barcode.TrackingBarcode`.
|
||
|
|
||
|
```javascript
|
||
|
export class TrackingBarcode {
|
||
|
/**
|
||
|
* Create a tracking barcode object.
|
||
|
* @param {string} code Tracking number.
|
||
|
* @returns {TrackingBarcode}
|
||
|
*/
|
||
|
constructor(code) {
|
||
|
// All data are optional except for the tracking number. Missing data is gracefully handled by the PostalPoint UI.
|
||
|
this.cleanCode = code;
|
||
|
// Destination ZIP Code, for domestic shipments. The city and state are automatically added. If toAddress is specified, toZip is ignored in favor of it.
|
||
|
this.toZip = "";
|
||
|
// Two-letter destination country code. If not "US", toZip is ignored, and the full country name is appended to the displayed address information.
|
||
|
this.toCountry = "US";
|
||
|
// If toAddress is set, it will be used instead of the toZip when displaying the destination.
|
||
|
// If both toZip and toAddress are empty strings, no destination will be displayed.
|
||
|
this.toAddress = "";
|
||
|
// If message is not empty, the barcode will NOT be added and the message will be displayed to the user.
|
||
|
this.message = "";
|
||
|
// If warning is not empty, the barcode WILL be added and a message will be displayed to the user.
|
||
|
this.warning = "";
|
||
|
// Shipping carrier name.
|
||
|
this.carrier = "";
|
||
|
// Shipping service/mail class full name and description. Example: "Priority Mail Adult Signature Required".
|
||
|
this.serviceName = "";
|
||
|
// Shipping service/mail class name, without extra info such as "signature required".
|
||
|
// Example: "Priority Mail"
|
||
|
this.serviceShort = "";
|
||
|
// If set to false, the barcode will be rejected with a suitable message when PostalPoint is running in self-serve kiosk mode.
|
||
|
this.dropoff = true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Set the tracking number
|
||
|
* @param {string} str
|
||
|
* @returns {undefined}
|
||
|
*/
|
||
|
set tracking(str) {
|
||
|
this.cleanCode = str;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Set the service/mail class description string.
|
||
|
* @param {string} str
|
||
|
* @returns {undefined}
|
||
|
*/
|
||
|
set service(str) {
|
||
|
this.serviceShort = str;
|
||
|
this.serviceName = str;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the tracking number.
|
||
|
* @returns {String}
|
||
|
*/
|
||
|
get tracking() {
|
||
|
return this.cleanCode;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the destination ZIP code.
|
||
|
* @returns {String}
|
||
|
*/
|
||
|
get zip() {
|
||
|
return this.toZip;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the service/mail class description.
|
||
|
* @returns {String}
|
||
|
*/
|
||
|
get service() {
|
||
|
if (this.serviceShort != "") {
|
||
|
return this.serviceShort;
|
||
|
} else if (this.serviceName != "") {
|
||
|
return this.serviceName;
|
||
|
}
|
||
|
return "";
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the carrier and service info.
|
||
|
* @returns {String}
|
||
|
*/
|
||
|
get serviceString() {
|
||
|
var str = [];
|
||
|
if (this.carrier != "") {
|
||
|
str.push(this.carrier);
|
||
|
}
|
||
|
if (this.serviceShort != "") {
|
||
|
str.push(this.serviceShort);
|
||
|
} else if (this.serviceName != "") {
|
||
|
str.push(this.serviceName);
|
||
|
}
|
||
|
return str.join(" ");
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the destination information as a human-presentable multiline string.
|
||
|
* @returns {String}
|
||
|
*/
|
||
|
get destString() {
|
||
|
var addressLines = [];
|
||
|
if (this.toAddress != "") {
|
||
|
addressLines.push(...this.toAddress.split("\n"));
|
||
|
}
|
||
|
if (this.toCountry.toUpperCase() == "US" && this.toZip != "" && this.toAddress == "") {
|
||
|
var zipdata = getZIP(this.toZip);
|
||
|
if (zipdata != false) {
|
||
|
addressLines.push(`${zipdata.city} ${zipdata.state} ${this.toZip}`);
|
||
|
} else {
|
||
|
addressLines.push(`${this.toZip}`);
|
||
|
}
|
||
|
} else if (this.toCountry.toUpperCase() != "US") {
|
||
|
addressLines.push(getCountryNameForISO(this.toCountry));
|
||
|
}
|
||
|
return addressLines.join("\n");
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the package information in a format suitable for display on a receipt.
|
||
|
* @param {boolean} includeTrackingNumber If false, the tracking number will be suppressed.
|
||
|
* @returns {String}
|
||
|
*/
|
||
|
toString(includeTrackingNumber = true) {
|
||
|
var lines = [];
|
||
|
if (includeTrackingNumber && this.cleanCode) {
|
||
|
lines.push(this.cleanCode);
|
||
|
}
|
||
|
var serv = this.serviceString;
|
||
|
if (serv != "") {
|
||
|
lines.push(serv);
|
||
|
}
|
||
|
var dest = this.destString;
|
||
|
if (dest != "") {
|
||
|
var destlines = dest.split("\n");
|
||
|
destlines[0] = "To " + destlines[0];
|
||
|
lines.push(...destlines);
|
||
|
}
|
||
|
|
||
|
return lines.join("\n");
|
||
|
}
|
||
|
}
|
||
|
```
|