Rev 6 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<!DOCTYPE html>
<html lang="en">
<head>
<title>Order Reports</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="icon" href="favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<link rel="stylesheet" href="css/style.css">
<script src="js/XMLWriter.js"></script>
<script src="js/vkbeautify.js"></script>
<script src="js/lodash.min.js"></script>
<script src="js/XMLparse.js"></script>
<script src="js/datetimepicker_css.js"></script>
<script src="js/moment.js"></script>
<script src="js/moment-timezone.js"></script>
<script src="js/muna-tools.js"></script>
</head>
<body onload="return initConfig();">
<div class="w3-main">
<div class="w3-container w3-padding w3-margin w3-card-4">
<div class="w3-container w3-gray" style="height:100px">
<img class="w3-image" src="images/MUNA%20-%20Logo%20100x100.png" alt="MUNA Trading Logo" style="height:100px">
<p id="connected" class="w3-xxlarge w3-right">Order Reports
<input id="login" type="button" class="w3-btn w3-large w3-green w3-margin w3-round-large w3-ripple w3-right w3-hide" onclick="eBayLogin();" value="Login" />
</p>
</div>
<div class="w3-row">
<div>
<form id="searchForm" class="w3-container w3-light-grey w3-padding w3-small" onsubmit="return getOrders();">
<div class="w3-container w3-card-2 w3-cell w3-padding">
<h4>Report Range</h4>
<div class="w3-row">
<div class="w3-half w3-padding">
<label for="startDate" class="w3-small">On or After <img src="images2/cal.gif" alt="Calendar Picker" onclick="javascript:NewCssCal('startDate','yyyyMMdd','arrow',false,'24',false,'past')" style="cursor:pointer" /></label>
<input id="startDate" name="startDate" class="w3-input w3-border-0" style="height:3em" type="text" required>
</div>
<div class="w3-half w3-padding">
<label for="endDate" class="w3-small">On or Before <img src="images2/cal.gif" alt="Calendar Picker" onclick="javascript:NewCssCal('endDate','yyyyMMdd','arrow',false,'24',false,'past')" style="cursor:pointer" /></label>
<input id="endDate" name="endDate" class="w3-input w3-border-0" style="height:3em" type="text" required>
</div>
</div>
</div>
<div class="w3-container w3-card-2 w3-cell w3-padding">
<p>
<input id="shippingList" class="w3-radio" type="radio" style="height:1em" name="rptType" value="shippingList" checked>
<label for="shippingList">Awaiting Shipment</label></p>
<p>
<input id="orderList" class="w3-radio" type="radio" style="height:1em" name="rptType" value="orderList">
<label for="orderList">Orders</label></p>
<p>
<input id="feeList" class="w3-radio" type="radio" style="height:1em" name="rptType" value="feeList">
<label for="feeList">eBay Fees and Credits</label></p>
<p>
<input id="trackingList" class="w3-radio" type="radio" style="height:1em" name="rptType" value="trackingList">
<label for="trackingList">Tracking Status</label></p>
<p>
<input id="customerList" class="w3-radio" type="radio" style="height:1em" name="rptType" value="customerList">
<label for="customerList">eBay Customer Export</label></p>
<input id="printButton" type="button" class="w3-btn w3-large w3-black w3-margin w3-round-large w3-ripple w3-right w3-hide" onclick="printData();" value="Print" />
<input id="dlOrderListButton" type="button" class="w3-btn w3-large w3-black w3-margin w3-round-large w3-ripple w3-right w3-hide" onclick="exportTableToCSV('orderTable', 'orders.csv');" value="CSV" />
<input id="dlFeeListButton" type="button" class="w3-btn w3-large w3-black w3-margin w3-round-large w3-ripple w3-right w3-hide" onclick="exportTableToCSV('feeTable', 'fees.csv');" value="CSV" />
<input id="dlCustomerListButton" type="button" class="w3-btn w3-large w3-black w3-margin w3-round-large w3-ripple w3-right w3-hide" onclick="exportTableToCSV('customerTable', 'customers.csv');" value="CSV" />
<input id="startButton" type="button" class="w3-btn w3-large w3-red w3-margin w3-round-large w3-ripple w3-right" onclick="getOrders();" value="Start" />
</div>
<div id="summary" class="w3-container w3-card-2 w3-cell w3-padding">
</div>
</form>
</div>
<div id="results" class="w3-container w3-padding w3-card-4 w3-hide"></div>
<div id="printTable">
<div id="logging" class="w3-container w3-padding"></div>
</div>
<div id="modals">
</div>
</div>
</div>
<footer class="w3-container w3-center w3-border-top w3-margin">
Copyright © 2018 MUNA Trading. All rights reserved.
</footer>
</div>
<script>
// Globals
var pagesToProcess = 0;
var shippingsToProcess = 0;
var thumbnailsToProcess = 0;
var trackingNumbersToProcess = 0;
var html = [];
var url;
var trackingList = [];
var trackingListDedupe = [];
var itemsSold;
var grossSales;
var shippingRcvd;
var returnCost;
var shippingCost;
var eBayFees;
var PayPalFees;
var VATaxGross;
var VATaxExempt;
var VATaxAmount;
var totalAmount;
// Initialize Configuration Variables
function initConfig() {
eBayAuthToken = readCookie();
if (eBayAuthToken.length > 0) {
connected();
}
if (eBayAuthTokenFlag === false) {
var x = document.getElementById("login");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
}
var currentDate = moment();
var yesterday = moment().subtract(1, "days");
if (document.getElementById("startDate").value.length < 1) {
document.getElementById("startDate").value = yesterday.format('YYYY-MM-DD');
}
if (document.getElementById("endDate").value.length < 1) {
document.getElementById("endDate").value = currentDate.format('YYYY-MM-DD');
}
}
function requireNewLogin() {
// dummy
}
function getOrders() {
var x;
itemsSold = 0;
grossSales = 0.0;
shippingRcvd = 0.0;
returnCost = 0.0;
shippingCost = 0.0;
eBayFees = 0.0;
PayPalFees = 0.0;
VATaxGross = 0.0;
VATaxExempt = 0.0;
VATaxAmount = 0.0;
document.getElementById("summary").innerHTML = '';
document.getElementById("results").innerHTML = '';
document.getElementById("logging").innerHTML = '';
var sDate = moment(document.getElementById("startDate").value, 'YYYY-MM-DD', true);
var eDate = moment(document.getElementById("endDate").value, 'YYYY-MM-DD', true);
if (!sDate.isValid()) {
document.getElementById("startDate").value = '';
return;
}
if (!eDate.isValid()) {
document.getElementById("endDate").value = '';
return;
}
if (moment(document.getElementById("startDate").value).isAfter(document.getElementById("endDate").value, 'day')) {
document.getElementById("endDate").value = '';
return;
}
x = document.getElementById("printButton");
x.className = x.className.replace(" w3-show", "");
x = document.getElementById("dlOrderListButton");
x.className = x.className.replace(" w3-show", "");
x = document.getElementById("dlFeeListButton");
x.className = x.className.replace(" w3-show", "");
x = document.getElementById("dlCustomerListButton");
x.className = x.className.replace(" w3-show", "");
x = document.getElementById("results");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
pagesToProcess = 1;
if (getRadioValue('rptType') == 'feeList') {
document.getElementById("results").innerHTML = '<p><strong>Retrieving Fees and Credits...</strong></p>';
retrieveFees(1);
} else {
document.getElementById("results").innerHTML = '<p><strong>Retrieving Orders...</strong></p>';
document.getElementById("modals").innerHTML = '';
retrieveeBayOrders(1);
function checkpagesToProcess() {
if (pagesToProcess > 0) {
window.setTimeout(checkpagesToProcess, 100); // wait 100 milliseconds
} else {
if (getRadioValue('rptType') == 'shippingList') {
retrieveShopifyShippings(1);
} else if (getRadioValue('rptType') == 'trackingList') {
retrieveShopifyTrackings(1);
} else if (getRadioValue('rptType') == 'customerList') {
sortTable("customerTable", 1);
x = document.getElementById("results");
x.innerHTML = '<p><strong>Report Finished!</strong></p>';
setTimeout(function() {
x.className = x.className.replace(" w3-show", "");
}, 3000);
} else {
retrieveShopifyOrders(1);
}
}
}
checkpagesToProcess();
if (getRadioValue('rptType') == 'shippingList') {
x = document.getElementById("printButton");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
} else if (getRadioValue('rptType') == 'orderList') {
x = document.getElementById("dlOrderListButton");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
} else if (getRadioValue('rptType') == 'customerList') {
x = document.getElementById("dlCustomerListButton");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
}
}
}
function retrieveeBayOrders(pageNumber) {
var i;
var xml;
var authErrorFlag = false;
if (eBayAuthTokenFlag === false) {
return;
}
var valueStartDate = moment(document.getElementById('startDate').value + " 00:00:00", "YYYY-MM-DD HH:mm:ss").tz("UTC").toISOString();
var valueEndDate = moment(document.getElementById('endDate').value + " 23:59:59", "YYYY-MM-DD HH:mm:ss").tz("UTC").toISOString();
var xw = new XMLWriter('UTF-8', '1.0');
var xhr = new XMLHttpRequest();
xw.writeStartDocument();
xw.writeStartElement("GetOrdersRequest");
xw.writeAttributeString('xmlns', 'urn:ebay:apis:eBLBaseComponents');
xw.writeStartElement('RequesterCredentials');
xw.writeElementString('eBayAuthToken', eBayAuthToken);
xw.writeEndElement(); /* RequesterCredentials */
xw.writeElementString('CreateTimeFrom', valueStartDate);
xw.writeElementString('CreateTimeTo', valueEndDate);
xw.writeElementString('IncludeFinalValueFee', 'true');
xw.writeElementString('OrderRole', 'Seller');
xw.writeElementString('OrderStatus', 'All');
xw.writeStartElement('Pagination');
xw.writeElementString('EntriesPerPage', configXmlRequestEntriesPerPage);
xw.writeElementString('PageNumber', pageNumber.toString());
xw.writeEndElement(); /* Pagination */
xw.writeElementString('DetailLevel', 'ReturnAll');
xw.writeElementString('ErrorLanguage', 'en_US');
xw.writeElementString('Version', configeBayTradingVersion);
xw.writeElementString('WarningLevel', configWarningLevel);
xw.writeEndElement(); /* GetOrdersRequest */
xw.writeEndDocument();
xhr.open('POST', configProxyUrl, true);
xhr.setRequestHeader('Content-Type', 'text/xml');
xhr.setRequestHeader('X-EBAY-API-APP-NAME', configAppid);
xhr.setRequestHeader('X-EBAY-API-COMPATIBILITY-LEVEL', configeBayTradingVersion);
xhr.setRequestHeader('X-EBAY-API-CALL-NAME', 'GetOrders');
xhr.setRequestHeader('X-EBAY-API-SITEID', '0');
xhr.setRequestHeader('X-EBAY-API-DEV-NAME', '');
xhr.setRequestHeader('X-EBAY-API-CERT-NAME', '');
xhr.setRequestHeader('X-Proxy-URL', configServiceEndpoint);
xml = xw.flush();
xw.close();
//window.alert(vkbeautify.xml(xml));
xhr.onload = () => {
var obj = XMLparse(xhr.responseXML);
//document.getElementById("logging").innerHTML = JSON.stringify(obj);
//window.alert(JSON.stringify(obj));
//window.alert(vkbeautify.xml(xhr.responseText));
var returnCode = obj.Ack;
var x = document.getElementById("results");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
if (obj.Message) {
x.innerHTML += obj.Message;
}
if (returnCode == 'Success' || (returnCode == 'Warning' && obj.Errors.ErrorCode == '21917182')) {
if (getRadioValue('rptType') == 'shippingList') {
createShipmentTable(obj, pageNumber);
} else if (getRadioValue('rptType') == 'trackingList') {
createTrackingTable(obj, pageNumber);
} else if (getRadioValue('rptType') == 'customerList') {
createCustomerTable(obj, pageNumber);
} else {
createOrderTable(obj, pageNumber);
}
x.innerHTML = '<p><strong>' + returnCode + ' (Orders ' + pageNumber + ' / ' + obj.PaginationResult.TotalNumberOfPages + ')</strong></p>';
if (getRadioValue('rptType') == 'orderList') {
printSummary();
}
if (obj.HasMoreOrders == 'true') {
++pagesToProcess;
shippingsToProcess = 0;
retrieveeBayOrders(pageNumber + 1);
}
document.getElementById("logging").innerHTML = html.join('');
--pagesToProcess;
} else {
x.innerHTML = "<p><strong>" + returnCode + ":</strong></p>";
var errors = obj.Errors;
x.innerHTML += "<p>";
if (errors.length > 0) {
for (i = 0; i < errors.length; i++) {
x.innerHTML += errors[i].SeverityCode + " (" + errors[i].ErrorCode + "): " + escapeHtml(errors[i].LongMessage) + "<br/>";
if (errors[i].LongMessage.includes('Auth')) {
authErrorFlag = true;
}
}
} else {
x.innerHTML += obj.Errors.SeverityCode + " (" + obj.Errors.ErrorCode + "): " + escapeHtml(obj.Errors.LongMessage) + "<br/>";
if (errors.LongMessage.includes('Auth')) {
authErrorFlag = true;
}
}
x.innerHTML += "</p>";
if (authErrorFlag === true) {
eBayAuthTokenFlag = false;
x = document.getElementById("login");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
}
}
};
xhr.send(xml);
}
function retrieveShopifyOrders(page) {
var sDate = moment(document.getElementById("startDate").value + " 00:00:00").format("YYYY-MM-DDTHH:mm:ssZ");
var eDate = moment(document.getElementById("endDate").value + " 23:59:59").format("YYYY-MM-DDTHH:mm:ssZ");
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//window.alert(this.responseText);
var json = JSON.parse(this.responseText);
if (json.orders[0] !== undefined) {
retrieveShopifyOrder(json);
}
}
};
xhttp.open("GET", configProxyUrl, true);
xhttp.setRequestHeader("X-Proxy-Url", encodeURI(configShopifyUrl + configShopifyOrdersUrl + '?page=' + ((page - 1) * configShopifyOrderLimit) + '&limit=' + configShopifyOrderLimit + '&status=any&created_at_min=' + sDate + '&created_at_max=' + eDate));
xhttp.send();
}
function retrieveShopifyOrder(json) {
var i, j;
var title;
var quantity;
var itemId;
var trackingNumber;
var trackingStatus;
var shipmentState;
var shipmentDate;
for (i = 0; i < json.orders.length; i++) {
html.push('<tr>');
html.push(tableCell(json.orders[i].created_at.substr(0, 10)));
if (json.orders[i].fulfillment_status !== null) {
html.push(tableCell(json.orders[i].fulfillment_status));
} else {
html.push(tableCell('created'));
}
html.push(tableCell(json.orders[i].id + ' (' + json.orders[i].name + ')'));
title = '';
quantity = '';
itemId = '';
for (j = 0; j < json.orders[i].line_items.length; j++) {
itemsSold++;
if (j > 0) {
title += '<br/>';
quantity += '<br/>';
itemId += '<br/>';
}
title += json.orders[i].line_items[j].title;
quantity += json.orders[i].line_items[j].quantity;
itemId += json.orders[i].line_items[j].product_id === null ? '' : json.orders[i].line_items[j].product_id;
}
html.push(tableCell(title));
html.push(tableCell(itemId));
html.push(tableCell('Shopify'));
html.push(tableCell(quantity));
html.push(tableCell('$' + json.orders[i].total_price_usd));
html.push(tableCell('$0.00'));
html.push(tableCell('N/A'));
html.push(tableCell('$0.00'));
html.push(tableCellLabel('Fee' + json.orders[i].id));
html.push(tableCell(json.orders[i].total_tax));
if (json.orders[i].shipping_address !== undefined) {
shipmentState = json.orders[i].shipping_address.province_code;
} else {
shipmentState = configTaxStateId;
}
html.push(tableCell(shipmentState));
html.push(tableCellLabel('PaidDate' + json.orders[i].id));
html.push(tableCell(json.orders[i].payment_gateway_names !== undefined ? json.orders[i].payment_gateway_names.join(', ') : ''));
html.push(tableCellLabel('TransactionId' + json.orders[i].id));
shipmentDate = '';
trackingNumber = '';
trackingStatus = '';
for (j = 0; j < json.orders[i].fulfillments.length; j++) {
if (j > 0) {
trackingNumber += '<br/>';
trackingStatus += '<br/>';
shipmentDate += '<br/>';
}
if (json.orders[i].fulfillments[j].tracking_number !== null) {
trackingNumber = json.orders[i].fulfillments[j].tracking_company + ' ' + json.orders[i].fulfillments[j].tracking_number;
trackingStatus = json.orders[i].fulfillments[j].shipment_status;
shipmentDate += json.orders[i].fulfillments[j].created_at.substr(0, 10);
}
}
html.push(tableCell(shipmentDate));
html.push(tableCell(trackingNumber));
html.push(tableCell(trackingStatus));
html.push('</tr>');
grossSales += Number(json.orders[i].total_price_usd);
VATaxAmount += Number(json.orders[i].total_tax);
}
// xxxxx last steps in the chain
printOrderTotals();
document.getElementById("logging").innerHTML = html.join('');
sortTable("orderTable", 1);
document.getElementById("results").innerHTML = '<p><strong>Retrieving Shipping Costs...</strong></p>';
findShippingCosts();
}
function retrieveShopifyShippings(page) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//window.alert(this.responseText);
var json = JSON.parse(this.responseText);
if (json.orders[0] !== undefined) {
retrieveShopifyShipping(json);
}
// xxxxx last steps in the chain
printShipmentTotals();
document.getElementById("logging").innerHTML = html.join('');
sortTable("shippingTable", 1);
findThumbNails();
}
};
xhttp.open("GET", configProxyUrl, true);
xhttp.setRequestHeader("X-Proxy-Url", encodeURI(configShopifyUrl + configShopifyOrdersUrl + '?page=' + ((page - 1) * configShopifyOrderLimit) + '&limit=' + configShopifyOrderLimit + '&fulfillment_status=unshipped'));
xhttp.send();
}
function retrieveShopifyShipping(json) {
var i;
for (i = 0; i < json.orders.length; i++) {
totalAmount += parseFloat(json.orders[i].total_price);
for (j = 0; j < json.orders[i].line_items.length; j++) {
html.push('<tr>');
html.push(tableCellSKU(json.orders[i].line_items[j].sku, json.orders[i].line_items[j].title));
html.push(tableCell(json.orders[i].line_items[j].quantity));
if (json.orders[i].line_items[j].product_id !== null) {
html.push(tableCellAndLabel(json.orders[i].line_items[j].product_id, 'PictureURL' + json.orders[i].line_items[j].product_id));
} else {
html.push(tableCell(''));
}
html.push(tableCell(json.orders[i].line_items[j].title));
html.push(tableCell(json.orders[i].name));
html.push(tableCellDate(json.orders[i].created_at.substr(0, 10)));
html.push(tableCell('$' + parseFloat(json.orders[i].line_items[j].price).toFixed(2)));
html.push(tableCellHidden('Shopify'));
itemsSold += Number(json.orders[i].line_items[j].quantity);
html.push('</tr>');
}
}
}
function retrieveShopifyTrackings(page) {
var sDate = moment(document.getElementById("startDate").value + " 00:00:00").format("YYYY-MM-DDTHH:mm:ssZ");
var eDate = moment(document.getElementById("endDate").value + " 23:59:59").format("YYYY-MM-DDTHH:mm:ssZ");
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//window.alert(this.responseText);
var json = JSON.parse(this.responseText);
if (json.orders[0] !== undefined) {
retrieveShopifyTracking(json);
}
// xxxxx last in the chain
printTrackingTotals();
document.getElementById("logging").innerHTML = html.join('');
sortTable("trackingTable", 1);
document.getElementById("results").innerHTML = '<p><strong>Retrieving Shipping Costs...</strong></p>';
findShippingCosts();
}
};
xhttp.open("GET", configProxyUrl, true);
xhttp.setRequestHeader("X-Proxy-Url", encodeURI(configShopifyUrl + configShopifyOrdersUrl + '?page=' + ((page - 1) * configShopifyOrderLimit) + '&limit=' + configShopifyOrderLimit + '&fulfillment_status=shipped&status=closed&created_at_min=' + sDate + '&created_at_max=' + eDate));
xhttp.send();
}
function retrieveShopifyTracking(json) {
var i, j;
var title;
for (i = 0; i < json.orders.length; i++) {
if (json.orders[i].shipping_lines[0] === undefined) {
continue;
}
html.push('<tr>');
html.push(tableCell(json.orders[i].created_at.substr(0, 10)));
title = '';
for (j = 0; j < json.orders[i].line_items.length; j++) {
if (j > 0) {
title += '<br/>';
}
title += json.orders[i].line_items[j].title;
}
html.push(tableCell(title));
html.push(tableCell('N/A'));
html.push(tableCellAndLabel(json.orders[i].shipping_address.city + ', ' + json.orders[i].shipping_address.province_code + ' ' + json.orders[i].shipping_address.zip, 'DeliveryAddress' + json.orders[i].fulfillments[0].tracking_number));
html.push(tableCell(json.orders[i].fulfillments[0].created_at.substr(0, 10))); // best guess
html.push(tableCell(json.orders[i].fulfillments[0].created_at.substr(0, 10)));
html.push(tableCellAndLabel(json.orders[i].fulfillments[0].tracking_company + ' ' + json.orders[i].fulfillments[0].tracking_number, json.orders[i].fulfillments[0].tracking_number));
html.push(tableCell(getCarrierService(json.orders[i].fulfillments[0].tracking_company, json.orders[i].fulfillments[0].tracking_number, true)));
html.push(tableCellLabel('DeliveryDate' + json.orders[i].fulfillments[0].tracking_number));
html.push(tableCellLabel('DeliveryDays' + json.orders[i].fulfillments[0].tracking_number));
html.push(tableCellLabel('DeliveryStatus' + json.orders[i].fulfillments[0].tracking_number));
html.push('</tr>');
}
}
function createOrderTable(obj, pageNumber) {
var i;
var title;
var trackingNumber;
var quantity;
var finalValueFee;
var finalValueFeeAmount;
var itemId;
var taxAmount;
var payAmount;
if (pageNumber == 1) {
document.getElementById("logging").innerHTML = '';
html = [];
html.push('<h3>Order List from ' + document.getElementById("startDate").value + ' to ' + document.getElementById("endDate").value + '</h3>');
html.push('<div class="w3-responsive">');
html.push('<table id="orderTable" class="w3-table-all w3-tiny w3-hoverable">');
html.push('<thead>');
html.push('<tr>');
html.push(tableHeader('Order Date'));
html.push(tableHeader('Order Status'));
html.push(tableHeader('Order Id'));
html.push(tableHeader('Ttitle'));
html.push(tableHeader('Item Id'));
html.push(tableHeader('Sales Channel'));
html.push(tableHeader('Quantity Purchased'));
html.push(tableHeader('Payment Amount'));
html.push(tableHeader('Shipping Received'));
html.push(tableHeader('Shipping Cost'));
html.push(tableHeader('eBay Final Value Fee'));
html.push(tableHeader('Payment Processor Fee'));
html.push(tableHeader('Sales Tax Amount'));
html.push(tableHeader('Ship To State'));
html.push(tableHeader('Paid Date'));
html.push(tableHeader('Payment Methods'));
html.push(tableHeader('Payment Transaction ID'));
html.push(tableHeader('Shipped Date'));
html.push(tableHeader('Shipping Tracking Number'));
html.push(tableHeader('Delivery Status'));
html.push('</tr>');
html.push('</thead>');
html.push('<tbody>');
}
for (var entry = 0; entry < obj.OrderArray.length; entry++) {
html.push('<tr>');
html.push(tableCellDate(obj.OrderArray[entry].CreatedTime));
html.push(tableCell(obj.OrderArray[entry].OrderStatus));
html.push(tableCell(obj.OrderArray[entry].OrderID));
title = '';
trackingNumber = '';
quantity = '';
finalValueFee = '';
finalValueFeeAmount = 0.0;
itemId = '';
if (obj.OrderArray[entry].TransactionArray.length > 0) {
for (title = '', i = 0; i < obj.OrderArray[entry].TransactionArray.length; i++) {
itemsSold++;
if (i > 0) {
title += '<br/>';
quantity += '<br/>';
itemId += '<br/>';
}
title += obj.OrderArray[entry].TransactionArray[i].Item.Title;
quantity += obj.OrderArray[entry].TransactionArray[i].QuantityPurchased;
finalValueFeeAmount += parseFloat(obj.OrderArray[entry].TransactionArray[i].FinalValueFee.text);
eBayFees += parseFloat(obj.OrderArray[entry].TransactionArray[i].FinalValueFee.text);
itemId += obj.OrderArray[entry].TransactionArray[i].Item.ItemID;
}
html.push(tableCell(title));
html.push(tableCell(itemId));
finalValueFee = '$' + finalValueFeeAmount.toFixed(2);
if (obj.OrderArray[entry].TransactionArray[0].ShippingDetails === undefined || obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails === undefined) {} else {
if (obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails[0] !== undefined) {
for (i = 0; i < obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails.length; i++) {
trackingNumber += (i > 0 ? '<br/>' : '') + obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails[i].ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails[i].ShipmentTrackingNumber;
}
} else {
trackingNumber = obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails.ShipmentTrackingNumber;
}
}
} else {
itemsSold++;
html.push(tableCell(obj.OrderArray[entry].TransactionArray.Item.Title));
html.push(tableCell(obj.OrderArray[entry].TransactionArray.Item.ItemID));
if (obj.OrderArray[entry].TransactionArray.ShippingDetails === undefined || obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails === undefined) {} else {
if (obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[0] !== undefined) {
for (i = 0; i < obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.length; i++) {
trackingNumber += (i > 0 ? '<br/>' : '') + obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[i].ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[i].ShipmentTrackingNumber;
}
} else {
trackingNumber = obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.ShipmentTrackingNumber;
}
}
// if (obj.OrderArray[entry].TransactionArray.ShippingDetails === undefined || obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails === undefined) {
// trackingNumber = '';
// } else {
// trackingNumber = obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.ShipmentTrackingNumber;
// }
quantity = obj.OrderArray[entry].TransactionArray.QuantityPurchased;
finalValueFee = '$' + parseFloat(obj.OrderArray[entry].TransactionArray.FinalValueFee.text).toFixed(2);
eBayFees += parseFloat(obj.OrderArray[entry].TransactionArray.FinalValueFee.text);
}
html.push(tableCell('eBay'));
html.push(tableCell(quantity));
html.push(tableCell('$' + parseFloat(obj.OrderArray[entry].AmountPaid.text).toFixed(2)));
grossSales += parseFloat(obj.OrderArray[entry].AmountPaid.text);
html.push(tableCell('$' + parseFloat(obj.OrderArray[entry].ShippingServiceSelected.ShippingServiceCost.text).toFixed(2)));
shippingRcvd += parseFloat(obj.OrderArray[entry].ShippingServiceSelected.ShippingServiceCost.text);
html.push(tableCellLabel('ShippingCost' + obj.OrderArray[entry].OrderID));
html.push(tableCell(finalValueFee));
if (obj.OrderArray[entry].ExternalTransaction !== undefined && obj.OrderArray[entry].ExternalTransaction.FeeOrCreditAmount !== undefined) {
html.push(tableCell('$' + parseFloat(obj.OrderArray[entry].ExternalTransaction.FeeOrCreditAmount.text).toFixed(2)));
PayPalFees += parseFloat(obj.OrderArray[entry].ExternalTransaction.FeeOrCreditAmount.text);
} else {
html.push(tableCell(''));
}
if (obj.OrderArray[entry].ShippingAddress.StateOrProvince == configTaxStateId && obj.OrderArray[entry].ShippingDetails.SalesTax.SalesTaxAmount.text == "0.0") {
payAmount = parseFloat(obj.OrderArray[entry].AmountPaid.text);
taxAmount = payAmount - (payAmount / (1.00 + (configTaxRate / 100)));
html.push(tableCell('$' + taxAmount.toFixed(2)));
VATaxAmount += taxAmount;
} else {
html.push(tableCell('$' + parseFloat(obj.OrderArray[entry].ShippingDetails.SalesTax.SalesTaxAmount.text).toFixed(2)));
VATaxAmount += parseFloat(obj.OrderArray[entry].ShippingDetails.SalesTax.SalesTaxAmount.text);
}
html.push(tableCell(obj.OrderArray[entry].ShippingAddress.StateOrProvince));
VATaxGross += (parseFloat(obj.OrderArray[entry].AmountPaid.text) - parseFloat(obj.OrderArray[entry].ShippingDetails.SalesTax.SalesTaxAmount.text));
if (obj.OrderArray[entry].ShippingAddress.StateOrProvince != configTaxStateId) {
VATaxExempt += parseFloat(obj.OrderArray[entry].AmountPaid.text);
}
if (obj.OrderArray[entry].PaidTime !== undefined) {
html.push(tableCellDate(obj.OrderArray[entry].PaidTime));
} else {
html.push(tableCell(''));
}
html.push(tableCell(obj.OrderArray[entry].PaymentMethods));
if (obj.OrderArray[entry].ExternalTransaction !== undefined && obj.OrderArray[entry].ExternalTransaction.ExternalTransactionID !== undefined) {
html.push(tableCell(obj.OrderArray[entry].ExternalTransaction.ExternalTransactionID));
} else {
html.push(tableCell(''));
}
if (obj.OrderArray[entry].ShippedTime === undefined) {
html.push(tableCell(''));
} else {
html.push(tableCellDate(obj.OrderArray[entry].ShippedTime));
}
html.push(tableCell(trackingNumber));
html.push(tableCellLabel('Delivery' + obj.OrderArray[entry].OrderID));
html.push('</tr>');
}
}
function printOrderTotals() {
html.push('</tbody>');
html.push('<tfoot>');
html.push('<tr>');
html.push(tableCell('<strong>Totals</strong>'));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell('<strong>' + itemsSold + '</strong>'));
html.push(tableCell('<strong>$' + grossSales.toFixed(2) + '</strong>'));
html.push(tableCell('<strong>$' + shippingRcvd.toFixed(2) + '</strong>'));
html.push(tableCellLabel('ShippingTotal'));
html.push(tableCell('<strong>$' + eBayFees.toFixed(2) + '</strong>'));
html.push(tableCell('<strong>$' + PayPalFees.toFixed(2) + '</strong>'));
html.push(tableCell('<strong>$' + VATaxAmount.toFixed(2) + '</strong>'));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push('</tr>');
html.push('</tfoot>');
html.push('</table>');
html.push('</div>');
}
function createCustomerTable(obj, pageNumber) {
var i;
var firstName;
var lastName;
var emailAddress;
if (pageNumber == 1) {
document.getElementById("logging").innerHTML = '';
html = [];
html.push('<h3>Customer List from ' + document.getElementById("startDate").value + ' to ' + document.getElementById("endDate").value + '</h3>');
html.push('<div class="w3-responsive">');
html.push('<table id="customerTable" class="w3-table-all w3-tiny w3-hoverable">');
html.push('<thead>');
html.push('<tr>');
html.push(tableHeader('First Name'));
html.push(tableHeader('Last Name'));
html.push(tableHeader('Email'));
html.push(tableHeader('Company'));
html.push(tableHeader('Address1'));
html.push(tableHeader('Address2'));
html.push(tableHeader('City'));
html.push(tableHeader('Province'));
html.push(tableHeader('Province Code'));
html.push(tableHeader('Country'));
html.push(tableHeader('Country Code'));
html.push(tableHeader('Zip'));
html.push(tableHeader('Phone'));
html.push(tableHeader('Accepts Marketing'));
html.push(tableHeader('Total Spent'));
html.push(tableHeader('Total Orders'));
html.push(tableHeader('Tags'));
html.push(tableHeader('Note'));
html.push(tableHeader('Tax Exempt'));
html.push('</tr>');
html.push('</thead>');
html.push('<tbody>');
}
for (var entry = 0; entry < obj.OrderArray.length; entry++) {
html.push('<tr>');
firstName = '';
lastName = '';
emailAddress = '';
if (obj.OrderArray[entry].TransactionArray.length > 0) {
for (title = '', i = 0; i < obj.OrderArray[entry].TransactionArray.length; i++) {
firstName = obj.OrderArray[entry].TransactionArray[i].Buyer.UserFirstName;
lastName = obj.OrderArray[entry].TransactionArray[i].Buyer.UserLastName;
emailAddress = obj.OrderArray[entry].TransactionArray[i].Buyer.Email;
}
if (obj.OrderArray[entry].TransactionArray[0].ShippingDetails === undefined || obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails === undefined) {} else {
if (obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails[0] !== undefined) {
for (i = 0; i < obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails.length; i++) {
}
} else {
}
}
} else {
if (obj.OrderArray[entry].TransactionArray.ShippingDetails === undefined || obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails === undefined) {} else {
if (obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[0] !== undefined) {
for (i = 0; i < obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.length; i++) {
trackingNumber += (i > 0 ? '<br/>' : '') + obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[i].ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[i].ShipmentTrackingNumber;
}
} else {
trackingNumber = obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.ShipmentTrackingNumber;
}
}
firstName = obj.OrderArray[entry].TransactionArray.Buyer.UserFirstName;
lastName = obj.OrderArray[entry].TransactionArray.Buyer.UserLastName;
emailAddress = obj.OrderArray[entry].TransactionArray.Buyer.Email;
}
html.push(tableCell(firstName.toProperCase()));
html.push(tableCell(lastName.toProperCase()));
html.push(tableCell(emailAddress != 'Invalid Request' ? emailAddress : ""));
html.push(tableCell(''));
html.push(tableCell(obj.OrderArray[entry].ShippingAddress.Street1.toProperCase()));
html.push(tableCell(obj.OrderArray[entry].ShippingAddress.Street2.toProperCase()));
html.push(tableCell(obj.OrderArray[entry].ShippingAddress.CityName.toProperCase()));
html.push(tableCell(''));
html.push(tableCell(obj.OrderArray[entry].ShippingAddress.StateOrProvince));
html.push(tableCell(obj.OrderArray[entry].ShippingAddress.CountryName.toProperCase()));
html.push(tableCell(obj.OrderArray[entry].ShippingAddress.Country));
html.push(tableCell(obj.OrderArray[entry].ShippingAddress.PostalCode));
html.push(tableCell(obj.OrderArray[entry].ShippingAddress.Phone));
html.push(tableCell('no'));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell('ebay'));
html.push(tableCell(obj.OrderArray[entry].BuyerUserID));
html.push(tableCell('no'));
html.push('</tr>');
}
if (obj.HasMoreOrders != 'true') {
html.push('</tbody>');
html.push('<tfoot>');
html.push('<tr>');
html.push(tableCell(''));
html.push('</tr>');
html.push('</tfoot>');
html.push('</table>');
html.push('</div>');
}
}
function createShipmentTable(obj, pageNumber) {
var i;
if (pageNumber == 1) {
totalAmount = 0.00;
itemsSold = 0;
document.getElementById("logging").innerHTML = '';
html = [];
html.push('<h3>Awaiting Shipment List</h3>');
html.push('<table id="shippingTable" class="w3-table-all w3-small">');
html.push('<thead>');
html.push('<tr>');
html.push(tableHeader('SKU'));
html.push(tableHeader('Quantity'));
html.push(tableHeader('Thumbnail'));
html.push(tableHeader('Ttitle'));
html.push(tableHeader('Item Id'));
html.push(tableHeader('Date'));
html.push(tableHeader('Payment Amount'));
html.push(tableHeaderHidden('Sales Channel'));
html.push('</tr>');
html.push('</thead>');
html.push('<tbody>');
}
for (var entry = 0; entry < obj.OrderArray.length; entry++) {
if (obj.OrderArray[entry].OrderStatus == 'Completed' && obj.OrderArray[entry].ShippedTime === undefined && obj.OrderArray[entry].PaidTime !== undefined) {
if (obj.OrderArray[entry].TransactionArray.length > 0) {
for (i = 0; i < obj.OrderArray[entry].TransactionArray.length; i++) {
itemsSold++;
html.push('<tr>');
html.push(tableCellSKU(obj.OrderArray[entry].TransactionArray[i].Item.SKU, obj.OrderArray[entry].TransactionArray[i].Item.Title));
html.push(tableCell(obj.OrderArray[entry].TransactionArray[i].QuantityPurchased));
html.push(tableCellLabel('PictureURL' + obj.OrderArray[entry].TransactionArray[i].Item.ItemID));
html.push(tableCell(obj.OrderArray[entry].TransactionArray[i].Item.Title));
html.push(tableCell(obj.OrderArray[entry].TransactionArray[i].Item.ItemID));
html.push(tableCellDate(obj.OrderArray[entry].CreatedTime));
html.push(tableCell('$' + parseFloat(obj.OrderArray[entry].AmountPaid.text).toFixed(2) + '*'));
if (i === 0) {
totalAmount += parseFloat(obj.OrderArray[entry].AmountPaid.text);
}
html.push(tableCellHidden('eBay'));
html.push('</tr>');
}
} else {
html.push('<tr>');
html.push(tableCellSKU(obj.OrderArray[entry].TransactionArray.Item.SKU, obj.OrderArray[entry].TransactionArray.Item.Title));
html.push(tableCell(obj.OrderArray[entry].TransactionArray.QuantityPurchased));
html.push(tableCellLabel('PictureURL' + obj.OrderArray[entry].TransactionArray.Item.ItemID));
html.push(tableCell(obj.OrderArray[entry].TransactionArray.Item.Title));
html.push(tableCell(obj.OrderArray[entry].TransactionArray.Item.ItemID));
html.push(tableCellDate(obj.OrderArray[entry].CreatedTime));
html.push(tableCell('$' + parseFloat(obj.OrderArray[entry].AmountPaid.text).toFixed(2)));
html.push(tableCellHidden('eBay'));
itemsSold += Number(obj.OrderArray[entry].TransactionArray.QuantityPurchased);
totalAmount += parseFloat(obj.OrderArray[entry].AmountPaid.text);
html.push('</tr>');
}
}
}
}
function printShipmentTotals() {
html.push('</tbody>');
html.push('<tfoot>');
html.push('<tr>');
html.push(tableCell('<strong>Totals</strong>'));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell('<strong>' + itemsSold + '</strong>'));
html.push(tableCell('<strong>$' + totalAmount.toFixed(2) + '</strong>'));
html.push(tableCellHidden(''));
html.push('</tr>');
html.push('</tfoot>');
html.push('</table>');
}
function createTrackingTable(obj, pageNumber) {
var i;
var title;
var trackingNumber;
var service;
var quantity;
var html_temp;
var finalValueFee;
var finalValueFeeAmount;
var itemId;
if (pageNumber == 1) {
document.getElementById("logging").innerHTML = '';
html = [];
trackingList = [];
trackingListDedupe = [];
html.push('<h3>Tracking Number Status from ' + document.getElementById("startDate").value + ' to ' + document.getElementById("endDate").value + '</h3>');
html.push('<div class="w3-responsive">');
html.push('<table id="trackingTable" class="w3-table-all w3-tiny w3-hoverable">');
html.push('<thead>');
html.push('<tr>');
html.push(tableHeader('Order Date'));
html.push(tableHeader('Ttitle'));
html.push(tableHeaderHidden('Order Id'));
html.push(tableHeader('Shipping Cost'));
html.push(tableHeader('Shipping Address'));
html.push(tableHeader('Paid Date'));
html.push(tableHeader('Shipped Date'));
html.push(tableHeader('Shipping Tracking Number'));
html.push(tableHeader('Service'));
html.push(tableHeader('Delivery Date'));
html.push(tableHeader('Duration (Days)'));
html.push(tableHeader('Delivery Status'));
html.push('</tr>');
html.push('</thead>');
html.push('<tbody>');
}
for (var entry = 0; entry < obj.OrderArray.length; entry++) {
html_temp = [];
html_temp.push('<tr>');
html_temp.push(tableCellDate(obj.OrderArray[entry].CreatedTime));
title = '';
trackingNumber = '';
service = '';
quantity = '';
finalValueFee = '';
finalValueFeeAmount = 0.0;
itemId = '';
if (obj.OrderArray[entry].TransactionArray.length > 0) {
for (title = '', i = 0; i < obj.OrderArray[entry].TransactionArray.length; i++) {
if (i > 0) {
title += '<br/>';
quantity += '<br/>';
itemId += '<br/>';
}
title += obj.OrderArray[entry].TransactionArray[i].Item.Title;
}
html_temp.push(tableCell(title));
if (obj.OrderArray[entry].TransactionArray[0].ShippingDetails === undefined || obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails === undefined) {} else {
if (obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails[0] !== undefined) {
// only last 1
for (i = 0; i < obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails.length; i++) {
trackingNumber = obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails[i].ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails[i].ShipmentTrackingNumber;
service = getCarrierService(obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails[i].ShippingCarrierUsed, obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails[i].ShipmentTrackingNumber, true);
}
} else {
trackingNumber = obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails.ShipmentTrackingNumber;
service = getCarrierService(obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed, obj.OrderArray[entry].TransactionArray[0].ShippingDetails.ShipmentTrackingDetails.ShipmentTrackingNumber, true);
}
}
} else {
html_temp.push(tableCell(obj.OrderArray[entry].TransactionArray.Item.Title));
if (obj.OrderArray[entry].TransactionArray.ShippingDetails === undefined || obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails === undefined) {} else {
if (obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[0] !== undefined) {
// only last 1
for (i = 0; i < obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.length; i++) {
trackingNumber = obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[i].ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[i].ShipmentTrackingNumber;
service = getCarrierService(obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[i].ShippingCarrierUsed, obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails[i].ShipmentTrackingNumber, true);
}
} else {
trackingNumber = obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed + ' ' + obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.ShipmentTrackingNumber;
service = getCarrierService(obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed, obj.OrderArray[entry].TransactionArray.ShippingDetails.ShipmentTrackingDetails.ShipmentTrackingNumber, true);
}
}
}
html_temp.push(tableCellHidden(obj.OrderArray[entry].OrderID));
html_temp.push(tableCellLabel('ShippingCost' + obj.OrderArray[entry].OrderID));
html_temp.push(tableCellAndLabel(obj.OrderArray[entry].ShippingAddress.CityName + ', ' + obj.OrderArray[entry].ShippingAddress.StateOrProvince + ' ' + obj.OrderArray[entry].ShippingAddress.PostalCode, 'DeliveryAddress' + trackingNumber.substr(trackingNumber.indexOf(' ')+1)));
if (obj.OrderArray[entry].PaidTime !== undefined) {
html_temp.push(tableCellDate(obj.OrderArray[entry].PaidTime));
} else {
html_temp.push(tableCell(''));
}
if (obj.OrderArray[entry].ShippedTime === undefined) {
html_temp.push(tableCellLabel('ShippedDate' + trackingNumber.substr(trackingNumber.indexOf(' ')+1)));
} else {
html_temp.push(tableCellDate(obj.OrderArray[entry].ShippedTime));
}
html_temp.push(tableCellAndLabel(trackingNumber, trackingNumber.substr(trackingNumber.indexOf(' ')+1)));
html_temp.push(tableCell(service));
html_temp.push(tableCellLabel('DeliveryDate' + trackingNumber.substr(trackingNumber.indexOf(' ')+1)));
html_temp.push(tableCellLabel('DeliveryDays' + trackingNumber.substr(trackingNumber.indexOf(' ')+1)));
html_temp.push(tableCellLabel('DeliveryStatus' + trackingNumber.substr(trackingNumber.indexOf(' ')+1)));
html_temp.push('</tr>');
if (trackingListDedupe.indexOf(trackingNumber.substr(trackingNumber.indexOf(' ')+1)) == -1) {
html.push(html_temp.join(''));
trackingListDedupe.push(trackingNumber.substr(trackingNumber.indexOf(' ')+1));
}
}
}
function printTrackingTotals() {
html.push('</tbody>');
html.push('<tfoot class="w3-hide">');
html.push('<tr>');
html.push(tableCell(''));
html.push('</tr>');
html.push('</tfoot>');
html.push('</table>');
html.push('</div>');
}
function getCarrierService(carrier, trackingNumber, flag) {
if (flag && trackingList.indexOf(trackingNumber) == -1) {
trackingList.push(trackingNumber);
}
if (carrier == "USPS") {
if (trackingNumber.startsWith("9449")) {
return ("Media Mail");
} else if (trackingNumber.startsWith("9450")) {
return ("Media Mail, Insured");
} else if (trackingNumber.startsWith("94001")) {
return ("First Class");
} else if (trackingNumber.startsWith("9416")) {
return ("First Class, Insured");
} else if (trackingNumber.startsWith("92055")) {
return ("Priority Mail");
} else if (trackingNumber.startsWith("94073")) {
return ("Certified Mail");
} else if (trackingNumber.startsWith("93033")) {
return ("Collect on Delivery");
} else if (trackingNumber.startsWith("82")) {
return ("Global Express");
} else if (trackingNumber.startsWith("EC")) {
return ("Priority Mail Express International");
} else if (trackingNumber.startsWith("92701") || trackingNumber.startsWith("EA")) {
return ("Priority Mail Express");
} else if (trackingNumber.startsWith("CP")) {
return ("Priority Mail International");
} else if (trackingNumber.startsWith("92088")) {
return ("Registered Mail");
} else if (trackingNumber.startsWith("92021")) {
return ("Signature Confirmation");
} else if (trackingNumber.startsWith("9461") || trackingNumber.startsWith("9462")) {
return ("Parcel Select Ground");
} else if (trackingNumber.startsWith("92021")) {
return ("Signature Confirmation");
}
} else if (carrier == "UPS") {
if (trackingNumber.startsWith("1Z")) {
var service = trackingNumber.substr(8, 2);
if (service == '01') {
return ('Next Day Air ("Red")');
} else if (service == '02') {
return ('UPS United States Second Day Air ("Blue")');
} else if (service == '03') {
return ('Ground');
} else if (service == '12') {
return ('Third Day Select');
} else if (service == '13') {
return ('Next Day Air Saver ("Red Saver")');
} else if (service == '15') {
return ('Next Day Air Early A.M.');
} else if (service == '22') {
return ('Ground - Returns Plus - Three Pickup Attempts');
} else if (service == '32') {
return ('Next Day Air Early A.M. - COD');
} else if (service == '33') {
return ('Next Day Air Early A.M. - Saturday Delivery, COD');
} else if (service == '41') {
return ('Next Day Air Early A.M. - Saturday Delivery');
} else if (service == '42') {
return ('Ground - Signature Required');
} else if (service == '44') {
return ('Next Day Air - Saturday Delivery');
} else if (service == '66') {
return ('Worldwide Express');
} else if (service == '72') {
return ('Ground - Collect on Delivery');
} else if (service == '78') {
return ('Ground - Returns Plus - One Pickup Attempt');
} else if (service == '90') {
return ('Ground - Returns - UPS Prints and Mails Label');
} else if (service == 'A0') {
return ('Next Day Air Early A.M. - Adult Signature Required');
} else if (service == 'A1') {
return ('Next Day Air Early A.M. - Saturday Delivery, Adult Signature Required');
} else if (service == 'A2') {
return ('Next Day Air - Adult Signature Required');
} else if (service == 'A8') {
return ('Ground - Adult Signature Required');
} else if (service == 'A9') {
return ('Next Day Air Early A.M. - Adult Signature Required, COD');
} else if (service == 'AA') {
return ('Next Day Air Early A.M. - Saturday Delivery, Adult Signature Required, COD');
}
}
}
return ("");
}
function retrieveFees(pageNumber) {
var i;
var xml;
var authErrorFlag = false;
if (eBayAuthTokenFlag === false) {
return;
}
var valueStartDate = document.getElementById('startDate').value + "T00:00:00.000Z";
var valueEndDate = document.getElementById('endDate').value + "T23:59:59.999Z";
var xw = new XMLWriter('UTF-8', '1.0');
var xhr = new XMLHttpRequest();
xw.writeStartDocument();
xw.writeStartElement("GetAccountRequest");
xw.writeAttributeString('xmlns', 'urn:ebay:apis:eBLBaseComponents');
xw.writeStartElement('RequesterCredentials');
xw.writeElementString('eBayAuthToken', eBayAuthToken);
xw.writeEndElement(); /* RequesterCredentials */
xw.writeElementString('AccountEntrySortType', 'AccountEntryCreatedTimeAscending');
xw.writeElementString('AccountHistorySelection', 'BetweenSpecifiedDates');
xw.writeElementString('BeginDate', valueStartDate);
xw.writeElementString('EndDate', valueEndDate);
xw.writeElementString('ExcludeBalance', 'true');
xw.writeElementString('ExcludeSummary', 'true');
xw.writeStartElement('Pagination');
xw.writeElementString('EntriesPerPage', configXmlRequestEntriesPerPage);
xw.writeElementString('PageNumber', pageNumber.toString());
xw.writeEndElement(); /* Pagination */
xw.writeElementString('ErrorLanguage', 'en_US');
xw.writeElementString('Version', configeBayTradingVersion);
xw.writeElementString('WarningLevel', configWarningLevel);
xw.writeEndElement(); /* GetAccountRequest */
xw.writeEndDocument();
xhr.open('POST', configProxyUrl, true);
xhr.setRequestHeader('Content-Type', 'text/xml');
xhr.setRequestHeader('X-EBAY-API-APP-NAME', configAppid);
xhr.setRequestHeader('X-EBAY-API-COMPATIBILITY-LEVEL', configeBayTradingVersion);
xhr.setRequestHeader('X-EBAY-API-CALL-NAME', 'GetAccount');
xhr.setRequestHeader('X-EBAY-API-SITEID', '0');
xhr.setRequestHeader('X-EBAY-API-DEV-NAME', '');
xhr.setRequestHeader('X-EBAY-API-CERT-NAME', '');
xhr.setRequestHeader('X-Proxy-URL', configServiceEndpoint);
xml = xw.flush();
xw.close();
//window.alert(vkbeautify.xml(xml));
xhr.onload = () => {
var obj = XMLparse(xhr.responseXML);
//document.getElementById("logging").innerHTML = JSON.stringify(obj);
//window.alert(JSON.stringify(obj));
//window.alert(vkbeautify.xml(xhr.responseText));
var returnCode = obj.Ack;
var x = document.getElementById("results");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
if (obj.Message) {
x.innerHTML += obj.Message;
}
if (returnCode == 'Success' || (returnCode == 'Warning' && obj.Errors.ErrorCode == '21917182')) {
createFeeTable(obj, pageNumber);
x.innerHTML = '<p><strong>' + returnCode + ' (Fees/Credits ' + pageNumber + ' / ' + obj.PaginationResult + ')</strong></p>';
if (obj.HasMoreEntries == 'true') {
++pagesToProcess;
retrieveFees(pageNumber + 1);
}
document.getElementById("logging").innerHTML = html.join('');
--pagesToProcess;
function checkpagesToProcess() {
if (pagesToProcess > 0) {
window.setTimeout(checkpagesToProcess, 100); // wait 100 milliseconds
} else {
sortTable("feeTable", 1);
x.innerHTML = '<p><strong>Report Finished!</strong></p>';
var y = document.getElementById("dlFeeListButton");
if (y.className.indexOf("w3-show") == -1) {
y.className += " w3-show";
}
setTimeout(function() {
x.className = x.className.replace(" w3-show", "");
}, 3000);
}
}
checkpagesToProcess();
} else {
x.innerHTML = "<p><strong>" + returnCode + ":</strong></p>";
var errors = obj.Errors;
x.innerHTML += "<p>";
if (errors.length > 0) {
for (i = 0; i < errors.length; i++) {
x.innerHTML += errors[i].SeverityCode + " (" + errors[i].ErrorCode + "): " + escapeHtml(errors[i].LongMessage) + "<br/>";
if (errors[i].LongMessage.includes('Auth')) {
authErrorFlag = true;
}
}
} else {
x.innerHTML += obj.Errors.SeverityCode + " (" + obj.Errors.ErrorCode + "): " + escapeHtml(obj.Errors.LongMessage) + "<br/>";
if (errors.LongMessage.includes('Auth')) {
authErrorFlag = true;
}
}
x.innerHTML += "</p>";
if (authErrorFlag === true) {
eBayAuthTokenFlag = false;
x = document.getElementById("login");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
}
}
};
xhr.send(xml);
}
function createFeeTable(obj, pageNumber) {
var i;
if (pageNumber == 1) {
totalAmount = 0;
document.getElementById("logging").innerHTML = '';
html = [];
html.push('<h3>Fees and Credits List from ' + document.getElementById("startDate").value + ' to ' + document.getElementById("endDate").value + '</h3>');
html.push('<table id="feeTable" class="w3-table-all w3-small">');
html.push('<thead>');
html.push('<tr>');
html.push(tableHeader('Item ID'));
html.push(tableHeader('Title'));
html.push(tableHeader('Date'));
html.push(tableHeader('Fee Type'));
html.push(tableHeader('Amount'));
html.push('</tr>');
html.push('</thead>');
html.push('<tbody>');
}
for (i = 0; i < obj.AccountEntries.length; i++) {
if ((!obj.AccountEntries[i].Description.includes('Payment') && !obj.AccountEntries[i].Description.includes('Final Value Fee') && obj.AccountEntries[i].GrossDetailAmount.text != '0.0' && obj.AccountEntries[i].NetDetailAmount.text != '0.0') ||
(obj.AccountEntries[i].Description.includes('Final Value Fee') && obj.AccountEntries[i].NetDetailAmount.text.substr(0, 1) == '-')) {
html.push('<tr>');
html.push(tableCell(obj.AccountEntries[i].ItemID));
html.push(tableCell(obj.AccountEntries[i].Title));
html.push(tableCellDate(obj.AccountEntries[i].Date));
html.push(tableCell(obj.AccountEntries[i].Description));
html.push(tableCell('$' + parseFloat(obj.AccountEntries[i].GrossDetailAmount.text).toFixed(2)));
totalAmount += parseFloat(obj.AccountEntries[i].GrossDetailAmount.text);
html.push('</tr>');
}
}
if (obj.HasMoreEntries != 'true') {
html.push('</tbody>');
html.push('<tfoot>');
html.push('<tr>');
html.push(tableCell('<strong>Totals</strong>'));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell(''));
html.push(tableCell('<strong>$' + totalAmount.toFixed(2) + '</strong>'));
html.push('</tr>');
html.push('</tfoot>');
html.push('</table>');
}
}
function tableCellDate(utcDate) {
var localDate = new Date(utcDate);
return ('<td>' + localDate.yyyymmdd() + '</td>');
}
function tableCellSKU(str, title) {
if (str === undefined) {
str = '';
}
if (str.indexOf(" - ") > 0) {
str = str.substr(0, str.indexOf(" - "));
}
if (str.startsWith("Batch")) {
var batchNo = Number(str.substr(6));
str = "Batch " + pad(batchNo, 2);
}
if (title.includes('(DVD') || title.includes('(HD') || title.includes('(Blu')) {
str = 'DVD ' + str;
} else if (title.includes('(CD')) {
str = 'CD ' + str;
} else if (title.includes('Hardcover') || title.includes('Paperback')) {
str = 'Book ' + str;
}
return ('<td>' + str + '</td>');
}
function sortTable(tableName, column) {
var table, rows, switching, i, x, y, shouldSwitch;
--column; // column parameter starts with 1
table = document.getElementById(tableName);
switching = true;
/*Make a loop that will continue until
no switching has been done:*/
while (switching) {
//start by saying: no switching is done:
switching = false;
rows = table.getElementsByTagName("TR");
/*Loop through all table rows (except the
first, which contains table headers, and the last
which contains the table footers):*/
for (i = 1; i < (rows.length - 2); i++) {
//start by saying there should be no switching:
shouldSwitch = false;
/*Get the two elements you want to compare,
one from current row and one from the next:*/
x = rows[i].getElementsByTagName("TD")[column];
y = rows[i + 1].getElementsByTagName("TD")[column];
//check if the two rows should switch place:
if (x !== undefined && x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
//if so, mark as a switch and break the loop:
shouldSwitch = true;
break;
}
}
if (shouldSwitch) {
/*If a switch has been marked, make the switch
and mark that a switch has been done:*/
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
}
}
}
function printData() {
var printContent = document.getElementById("printTable");
var num;
var cssReference = [];
var uniqueName = new Date();
var windowName = 'Print' + uniqueName.getTime();
var printWindow = window.open(num, windowName, 'left=50000,top=50000,width=0,height=0');
cssReference[0] = printWindow.document.createElement("link");
cssReference[0].href = "https://www.w3schools.com/w3css/4/w3.css";
cssReference[0].rel = "stylesheet";
cssReference[0].type = "text/css";
cssReference[1] = printWindow.document.createElement("link");
cssReference[1].href = "css/style.css";
cssReference[1].rel = "stylesheet";
cssReference[1].type = "text/css";
printWindow.document.write(printContent.outerHTML);
printWindow.document.getElementsByTagName('head')[0].appendChild(cssReference[0]);
printWindow.document.getElementsByTagName('head')[0].appendChild(cssReference[1]);
printWindow.document.close();
printWindow.focus();
printWindow.print();
printWindow.close();
}
function printSummary() {
var profit = grossSales + shippingRcvd - shippingCost - eBayFees - PayPalFees - VATaxAmount;
document.getElementById("summary").innerHTML = '<h2>Profit: ' + profit.toFixed(2) + '</h3>';
}
function findThumbNails() {
var i;
var x = document.getElementById("shippingTable");
thumbnailsToProcess = 0;
for (i = 1; i < (x.rows.length - 1); i++) {
if (x.rows[i].cells[7].innerHTML == 'eBay' && x.rows[i].cells[2] !== undefined && x.rows[i].cells[2].innerHTML.length < 1) {
++thumbnailsToProcess;
getThumbNail(x.rows[i].cells[4].innerHTML);
} else if (x.rows[i].cells[7].innerHTML == 'Shopify' && x.rows[i].cells[2] !== undefined && x.rows[i].cells[2].innerHTML.length > 0) {
++thumbnailsToProcess;
getShopifyThumbNail(x.rows[i].cells[2].innerHTML);
}
}
function checkthumbnailsToProcess() {
if (thumbnailsToProcess > 0) {
window.setTimeout(checkthumbnailsToProcess, 100); // wait 100 milliseconds
} else {
x = document.getElementById("results");
x.innerHTML = '<p><strong>Report Finished!</strong></p>';
setTimeout(function() {
x.className = x.className.replace(" w3-show", "");
}, 3000);
}
}
checkthumbnailsToProcess();
}
function getThumbNail(itemId) {
// Construct the getSingleItem request
url = configeBayShopping + "?";
url += "callname=GetSingleItem";
url += "&responseencoding=JSON";
url += "&appid=" + configAppid;
url += "&version=" + configeBayShoppingVersion;
url += "&ItemID=";
url += itemId;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4) {
_cb_getThumbNail(JSON.parse(this.responseText));
}
};
xhttp.open("GET", configProxyUrl, true);
xhttp.setRequestHeader("X-Proxy-Url", encodeURI(url));
xhttp.send();
}
function _cb_getThumbNail(root) {
var ack = root.Ack;
if (ack == 'Failure' || ack == 'PartialFailure') {
return;
}
var JsonObj = typeof root.Item != 'object' ? JSON.parse(root.Item) : root.Item;
var ItemID = JsonObj.ItemID;
var PictureURL;
if (Array.isArray(JsonObj.PictureURL)) {
PictureURL = JsonObj.PictureURL[0];
} else {
PictureURL = JsonObj.PictureURL;
}
document.getElementById('PictureURL' + ItemID).innerHTML = '<img src="' + PictureURL + '" style="max-height:100px">';
--thumbnailsToProcess;
}
function getShopifyThumbNail(productId) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//window.alert(this.responseText);
var json = JSON.parse(this.responseText);
if (json.product !== undefined) {
document.getElementById('PictureURL' + productId).innerHTML = '<img src="' + json.product.image.src + '" style="max-height:100px">';
}
--thumbnailsToProcess;
}
};
xhttp.open("GET", configProxyUrl, true);
xhttp.setRequestHeader("X-Proxy-Url", encodeURI(configShopifyUrl + 'products/' + productId + '.json?fields=image'));
xhttp.send();
}
function findShippingCosts() {
var i;
var x;
if (getRadioValue('rptType') == 'trackingList') {
x = document.getElementById("trackingTable");
} else {
x = document.getElementById("orderTable");
}
for (i = (x.rows.length - 1); i > 0; i--) {
if (getRadioValue('rptType') == 'trackingList') {
if (x.rows[i].cells[3] !== undefined && x.rows[i].cells[3].innerHTML.length < 1) {
if (x.rows[i].cells[7] !== undefined && x.rows[i].cells[7].innerHTML.length < 1) {
document.getElementById("trackingTable").deleteRow(i);
} else {
++shippingsToProcess;
getShippingCost(x.rows[i].cells[2].innerHTML);
}
}
} else {
if (x.rows[i].cells[5].innerHTML == 'eBay' && x.rows[i].cells[9] !== undefined && x.rows[i].cells[9].innerHTML.length < 1) {
++shippingsToProcess;
getShippingCost(x.rows[i].cells[2].innerHTML);
} else if (x.rows[i].cells[5].innerHTML == 'Shopify') {
++shippingsToProcess;
getPaymentTransaction(x.rows[i].cells[2].innerHTML);
}
}
}
function checkshippingsToProcess() {
if (shippingsToProcess > 0) {
window.setTimeout(checkshippingsToProcess, 100); // wait 100 milliseconds
} else {
if (getRadioValue('rptType') != 'trackingList') {
document.getElementById("ShippingTotal").innerHTML = '<strong>$' + shippingCost.toFixed(2) + '</strong>';
x = document.getElementById("results");
x.innerHTML = '<p><strong>Report Finished!</strong></p>';
setTimeout(function() {
x.className = x.className.replace(" w3-show", "");
}, 3000);
} else {
x = document.getElementById("results");
x.innerHTML = '<p><strong>Retrieving Carrier Tracking...</strong></p>';
getTrackingDetails();
}
}
}
checkshippingsToProcess();
}
function getShippingCost(OrderId) {
var i;
var xml;
var correlationId;
var shippingCostStr;
var deliveryStatus;
var authErrorFlag = false;
var xw = new XMLWriter('UTF-8', '1.0');
var xhr = new XMLHttpRequest();
xw.writeStartDocument();
xw.writeStartElement("GetSellingManagerSaleRecordRequest");
xw.writeAttributeString('xmlns', 'urn:ebay:apis:eBLBaseComponents');
xw.writeStartElement('RequesterCredentials');
xw.writeElementString('eBayAuthToken', eBayAuthToken);
xw.writeEndElement(); /* RequesterCredentials */
xw.writeElementString('OrderID', OrderId);
xw.writeElementString('MessageID', OrderId);
xw.writeElementString('ErrorLanguage', 'en_US');
xw.writeElementString('Version', configeBayTradingVersion);
xw.writeElementString('WarningLevel', configWarningLevel);
xw.writeEndElement(); /* GetSellingManagerSaleRecordRequest */
xw.writeEndDocument();
xhr.open('POST', configProxyUrl, true);
xhr.setRequestHeader('Content-Type', 'text/xml');
xhr.setRequestHeader('X-EBAY-API-APP-NAME', configAppid);
xhr.setRequestHeader('X-EBAY-API-COMPATIBILITY-LEVEL', configeBayTradingVersion);
xhr.setRequestHeader('X-EBAY-API-CALL-NAME', 'GetSellingManagerSaleRecord');
xhr.setRequestHeader('X-EBAY-API-SITEID', '0');
xhr.setRequestHeader('X-EBAY-API-DEV-NAME', '');
xhr.setRequestHeader('X-EBAY-API-CERT-NAME', '');
xhr.setRequestHeader('X-Proxy-URL', configServiceEndpoint);
xml = xw.flush();
xw.close();
//window.alert(vkbeautify.xml(xml));
xhr.onload = () => {
var obj = XMLparse(xhr.responseXML);
//document.getElementById("logging").innerHTML += JSON.stringify(obj);
//window.alert(JSON.stringify(obj));
//window.alert(vkbeautify.xml(xhr.responseText));
var returnCode = obj.Ack;
var x = document.getElementById("results");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
if (obj.Message) {
x.innerHTML += obj.Message;
}
if (returnCode == 'Success' || (returnCode == 'Warning' && obj.Errors.ErrorCode == '21917182')) {
correlationId = obj.CorrelationID;
deliveryStatus = '';
shippingCostStr = '';
if (obj.SellingManagerSoldOrder.ActualShippingCost !== undefined &&
obj.SellingManagerSoldOrder.ActualShippingCost.text != '0.0' &&
document.getElementById('ShippingCost' + correlationId).innerHTML.length < 1) {
shippingCostStr = '$' + parseFloat(obj.SellingManagerSoldOrder.ActualShippingCost.text).toFixed(2);
shippingCost += parseFloat(obj.SellingManagerSoldOrder.ActualShippingCost.text);
document.getElementById('ShippingCost' + correlationId).innerHTML = shippingCostStr;
if (getRadioValue('rptType') == 'orderList') {
printSummary();
}
}
if (getRadioValue('rptType') != 'trackingList') {
if (Array.isArray(obj.SellingManagerSoldOrder.SellingManagerSoldTransaction)) {
for (i = 0; i < obj.SellingManagerSoldOrder.SellingManagerSoldTransaction.length; i++) {
if (obj.SellingManagerSoldOrder.SellingManagerSoldTransaction[i].Shipment.DeliveryStatus !== undefined) {
deliveryStatus += (i > 0 ? '<br/>' : '') + obj.SellingManagerSoldOrder.SellingManagerSoldTransaction[i].Shipment.DeliveryStatus;
}
}
} else {
if (obj.SellingManagerSoldOrder.SellingManagerSoldTransaction.Shipment.DeliveryStatus !== undefined) {
deliveryStatus = obj.SellingManagerSoldOrder.SellingManagerSoldTransaction.Shipment.DeliveryStatus;
}
}
document.getElementById('Delivery' + correlationId).innerHTML = deliveryStatus;
}
} else {
x.innerHTML = "<p><strong>" + returnCode + ":</strong></p>";
var errors = obj.Errors;
x.innerHTML += "<p>";
if (errors.length > 0) {
for (i = 0; i < errors.length; i++) {
x.innerHTML += errors[i].SeverityCode + " (" + errors[i].ErrorCode + "): " + escapeHtml(errors[i].LongMessage) + "<br/>";
if (errors[i].LongMessage.includes('Auth')) {
authErrorFlag = true;
}
}
} else {
x.innerHTML += obj.Errors.SeverityCode + " (" + obj.Errors.ErrorCode + "): " + escapeHtml(obj.Errors.LongMessage) + "<br/>";
if (errors.LongMessage.includes('Auth')) {
authErrorFlag = true;
}
}
x.innerHTML += "</p>";
if (authErrorFlag === true) {
eBayAuthTokenFlag = false;
x = document.getElementById("login");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
}
}
}
--shippingsToProcess;
};
xhr.send(xml);
}
function getPaymentTransaction(fullId) {
var id = fullId.substr(0, fullId.indexOf(' '));
var i;
var transFee = 0.00;
var transFeeStr = '';
var transDate = '';
var transId = '';
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//window.alert(this.responseText);
var json = JSON.parse(this.responseText);
if (json.transactions[0] !== undefined) {
for (i = 0; i < json.transactions.length; i++) {
transDate = json.transactions[i].created_at.substr(0, 10);
document.getElementById('PaidDate' + id).innerHTML = transDate;
if (json.transactions[i].gateway == 'shopify_payments') {
transId = json.transactions[i].id;
transFee = Number(json.transactions[0].receipt.balance_transaction.fee) / 100;
} else if (json.transactions[i].gateway == 'paypal') {
transId = json.transactions[i].authorization;
transFee = Number(json.transactions[0].receipt.balance_transaction.fee);
} else if (json.transactions[i].gateway == 'manual') {
transId = json.transactions[i].id;
}
document.getElementById('TransactionId' + id).innerHTML = transId;
transFeeStr = '$' + parseFloat(transFee).toFixed(2);
PayPalFees += transFee;
document.getElementById('Fee' + id).innerHTML = transFeeStr;
}
}
--shippingsToProcess;
}
};
xhttp.open("GET", configProxyUrl, true);
xhttp.setRequestHeader("X-Proxy-Url", encodeURI(configShopifyUrl + configShopifyTransactionsUrl1 + id + configShopifyTransactionsUrl2));
xhttp.send();
}
function getTrackingDetails() {
var i;
var x;
trackingNumbersToProcess = 0;
for (i = 0; i < trackingList.length; i++) {
++trackingNumbersToProcess;
if (trackingList[i].substr(0,2) == '1Z') {
getUPSTracking(trackingList[i]);
} else {
getUSPSTracking(trackingList[i]);
}
}
function checkTrackingsToProcess() {
if (trackingNumbersToProcess > 0) {
window.setTimeout(checkTrackingsToProcess, 100); // wait 100 milliseconds
} else {
x = document.getElementById("results");
x.innerHTML = '<p><strong>Report Finished!</strong></p>';
setTimeout(function() {
x.className = x.className.replace(" w3-show", "");
}, 3000);
}
}
checkTrackingsToProcess();
}
function getUSPSTracking(searchNumber) {
var j;
var str;
var url;
var trackingNumber;
var summary;
var detail;
var deliveryDate;
var createDate;
var duration;
var lastUpdate;
var lastEvent;
var footer;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var obj = XMLparse(this.responseXML);
if (obj.TrackSummary === undefined) {
--trackingNumbersToProcess;
return;
}
trackingNumber = obj.ID;
summary = formatUSPSTrackingLine(obj.TrackSummary);
detail = '';
footer = '';
deliveryDate = '';
duration = '';
lastUpdate = summary.substr(8, 10);
lastEvent = obj.TrackSummary.Event;
if (document.getElementById('DeliveryStatus' + trackingNumber) === null) {
--trackingNumbersToProcess;
return;
}
if (obj.TrackDetail !== undefined && obj.TrackDetail.length > 0) {
for (j = 0; j < obj.TrackDetail.length; j++) {
detail += formatUSPSTrackingLine(obj.TrackDetail[j]);
}
createDate = moment(obj.TrackDetail[(obj.TrackDetail.length - 1)].EventDate, "MMMM DD, YYYY").format('YYYY-MM-DD');
footer = 'Enroute since ' + createDate + ' (' + moment().diff(createDate, 'days') + ' days)';
if (summary.includes("Delivered")) {
deliveryDate = summary.substr(8, 10);
duration = moment(deliveryDate).diff(createDate, 'days');
document.getElementById('DeliveryStatus' + trackingNumber).style.color = "green";
footer = 'Delivered in ' + moment(deliveryDate).to(createDate, 'days');
} else if (moment().diff(lastUpdate, 'days') > 3) {
document.getElementById('DeliveryStatus' + trackingNumber).style.color = "red";
}
}
document.getElementById('DeliveryStatus' + trackingNumber).innerHTML = lastEvent;
document.getElementById('DeliveryDays' + trackingNumber).innerHTML = duration;
document.getElementById('DeliveryDate' + trackingNumber).innerHTML = deliveryDate;
str = document.getElementById(trackingNumber).innerHTML;
if (!str.startsWith('<button')) {
document.getElementById(trackingNumber).innerHTML = '<button onclick="document.getElementById(\'mod' + trackingNumber + '\').style.display=\'block\'" class="w3-button w3-black">' + str + '</button>';
str = ' <div id="mod' + trackingNumber + '" class="w3-modal">';
str += ' <div class="w3-modal-content w3-card-4">';
str += ' <header class="w3-container w3-black"> ';
str += ' <span onclick="document.getElementById(\'mod' + trackingNumber + '\').style.display=\'none\'"';
str += ' class="w3-button w3-display-topright">×</span>';
str += ' <h3>' + trackingNumber + ' (USPS ' + getCarrierService("USPS", trackingNumber, false) + ')</h3>';
str += ' </header>';
str += ' <div class="w3-container">';
str += ' <table class="w3-table-all w3-small">';
str += ' <tr>';
str += ' <th>DATE</th>';
str += ' <th>TIME</th>';
str += ' <th>STATUS</th>';
str += ' <th>LOCATION</th>';
str += ' </tr>';
str += summary;
str += detail;
str += ' </table>';
str += ' </div>';
str += ' <footer class="w3-container w3-black">';
str += ' <p>' + document.getElementById('DeliveryAddress' + trackingNumber).innerHTML + ' - ' + footer + '</p>';
str += ' </footer>';
str += ' </div>';
str += ' </div>';
document.getElementById("modals").innerHTML += str;
}
--trackingNumbersToProcess;
}
};
url = configUSPSUrl + '?API=TrackV2&XML=';
url += '<TrackFieldRequest USERID="';
url += configUSPSUserId;
url += '">';
url += '<TrackID ID="' + searchNumber + '"></TrackID>';
url += '</TrackFieldRequest>';
url = url.replace(/ /g, '%20');
xhttp.open("GET", configProxyUrl, true);
xhttp.setRequestHeader("X-Proxy-Url", encodeURI(url));
xhttp.send();
}
function formatUSPSTrackingLine(t) {
var str = '';
if (t !== undefined) {
str = '<tr>';
str += '<td>' + moment(t.EventDate, "MMMM DD, YYYY").format('YYYY-MM-DD') + '</td>';
str += '<td>';
if (t.EventTime.length > 0) {
str += ' ' + moment(t.EventTime, "hh:mm a").format('HH:mm');
}
str += '</td>';
str += '<td>' + t.Event + '</td>';
str += '<td>';
if (t.EventCity.length > 0) {
str += t.EventCity;
if (t.EventState.length > 0) {
str += ", " + t.EventState + ' ' + t.EventZIPCode;
}
}
str += '</td>';
str += '</tr>';
}
return (str);
}
function getUPSTracking(trackingNumber) {
var xhr = new XMLHttpRequest();
var xml = '<?xml version="1.0"?>';
xml += '<AccessRequest xml:lang="en-US">';
xml += '<AccessLicenseNumber>' + configUPSAccessKey + '</AccessLicenseNumber>';
xml += '<UserId>' + configUPSUsername + '</UserId>';
xml += '<Password>' + configUPSPassword + '</Password>';
xml += '</AccessRequest>';
xml += '<?xml version="1.0"?>';
xml += '<TrackRequest xml:lang="en-US">';
xml += '<Request>';
xml += '<TransactionReference>';
xml += '<CustomerContext>' + 'MUNA Trading' + '</CustomerContext>';
xml += '</TransactionReference>';
xml += '<RequestAction>Track</RequestAction>';
xml += '<RequestOption>1</RequestOption>';
xml += '</Request>';
xml += '<TrackingNumber>' + trackingNumber + '</TrackingNumber>';
xml += '</TrackRequest>';
xhr.onload = () => {
var obj = XMLparse(xhr.responseXML);
//document.getElementById("logging").innerHTML = JSON.stringify(obj);
//window.alert(JSON.stringify(obj));
//window.alert(vkbeautify.xml(xhr.responseText));
if (obj.Response.ResponseStatusDescription != 'Success') {
--trackingNumbersToProcess;
return;
}
trackingNumber = obj.Shipment.ShipmentIdentificationNumber;
summary = formatUPSTrackingLine(obj.Shipment.Package.Activity[0]);
detail = '';
footer = '';
deliveryDate = '';
duration = '';
lastUpdate = moment(obj.Shipment.Package.Activity[0].Status.Date, "YYYYMMDD").format('YYYY-MM-DD');
lastEvent = obj.Shipment.Package.Activity[0].Status.StatusType.Description;
if (document.getElementById('DeliveryStatus' + trackingNumber) === null) {
--trackingNumbersToProcess;
return;
}
if (obj.Shipment.Package.Activity !== undefined && obj.Shipment.Package.Activity.length > 0) {
for (j = 0; j < obj.Shipment.Package.Activity.length; j++) {
detail += formatUPSTrackingLine(obj.Shipment.Package.Activity[j]);
}
createDate = moment(obj.Shipment.PickupDate, "YYYYMMDD").format('YYYY-MM-DD');
footer = 'Enroute since ' + createDate + ' (' + moment().diff(createDate, 'days') + ' days)';
if (obj.Shipment.Package.DeliveryIndicator == 'Y') {
deliveryDate = moment(obj.Shipment.Package.DeliveryDate, "YYYYMMDD").format('YYYY-MM-DD');
duration = moment(deliveryDate).diff(createDate, 'days');
document.getElementById('DeliveryStatus' + trackingNumber).style.color = "green";
footer = 'Delivered in ' + moment(deliveryDate).to(createDate, 'days');
} else if (moment().diff(lastUpdate, 'days') > 3) {
document.getElementById('DeliveryStatus' + trackingNumber).style.color = "red";
}
}
document.getElementById('ShippedDate' + trackingNumber).innerHTML = createDate;
document.getElementById('DeliveryStatus' + trackingNumber).innerHTML = lastEvent;
document.getElementById('DeliveryDays' + trackingNumber).innerHTML = duration;
document.getElementById('DeliveryDate' + trackingNumber).innerHTML = deliveryDate;
str = document.getElementById(trackingNumber).innerHTML;
if (!str.startsWith('<button')) {
document.getElementById(trackingNumber).innerHTML = '<button onclick="document.getElementById(\'mod' + trackingNumber + '\').style.display=\'block\'" class="w3-button w3-black">' + str + '</button>';
str = ' <div id="mod' + trackingNumber + '" class="w3-modal">';
str += ' <div class="w3-modal-content w3-card-4">';
str += ' <header class="w3-container w3-black"> ';
str += ' <span onclick="document.getElementById(\'mod' + trackingNumber + '\').style.display=\'none\'"';
str += ' class="w3-button w3-display-topright">×</span>';
str += ' <h3>' + trackingNumber + ' (UPS ' + getCarrierService("UPS", trackingNumber, false) + ')</h3>';
str += ' </header>';
str += ' <div class="w3-container">';
str += ' <table class="w3-table-all w3-small">';
str += ' <tr>';
str += ' <th>DATE</th>';
str += ' <th>TIME</th>';
str += ' <th>STATUS</th>';
str += ' <th>LOCATION</th>';
str += ' </tr>';
str += summary;
str += detail;
str += ' </table>';
str += ' </div>';
str += ' <footer class="w3-container w3-black">';
str += ' <p>' + document.getElementById('DeliveryAddress' + trackingNumber).innerHTML + ' - ' + footer + '</p>';
str += ' </footer>';
str += ' </div>';
str += ' </div>';
document.getElementById("modals").innerHTML += str;
}
--trackingNumbersToProcess;
};
xhr.open('POST', configProxyUrl, true);
xhr.setRequestHeader('Content-Type', 'text/xml');
xhr.setRequestHeader('X-Proxy-URL', configUPSUrl);
xhr.send(xml);
}
function formatUPSTrackingLine(t) {
var str = '';
if (t !== undefined) {
str = '<tr>';
str += '<td>' + moment(t.Date, "YYYYMMDD").format('YYYY-MM-DD') + '</td>';
str += '<td>';
if (t.Time.length > 0) {
str += ' ' + moment(t.Time, "HHmmss").format('HH:mm');
}
str += '</td>';
str += '<td>' + t.Status.StatusType.Description + '</td>';
str += '<td>';
if (t.ActivityLocation.Address.City !== undefined) {
str += t.ActivityLocation.Address.City;
if (t.ActivityLocation.Address.StateProvinceCode !== undefined) {
str += ", " + t.ActivityLocation.Address.StateProvinceCode;
}
}
str += '</td>';
str += '</tr>';
}
return (str);
}
function connected() {
var x;
eBayAuthTokenFlag = true;
document.getElementById("connected").innerHTML += " (Connected)";
x = document.getElementById("startButton");
x.className = x.className.replace(" w3-red", " w3-black");
x = document.getElementById("login");
x.className = x.className.replace(" w3-show", "");
x = document.getElementById("results");
x.innerHTML = "";
x.className = x.className.replace(" w3-show", "");
}
</script>
</body>
</html>