PostalPoint_Plugins/docs/TrackingBarcode.md

149 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

2025-03-06 15:02:55 -07:00
# 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");
}
}
```