Amazon Export Inventory

Exports your Amazon inventory to text.

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

You will need to install an extension such as Tampermonkey to install this script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name        Amazon Export Inventory
// @namespace   riceball
// @locale      en-us
// @description Exports your Amazon inventory to text.
// @include     https://sellercentral.amazon.com/inventory/*
// @version     1
// @grant       none
// @run-at      document-end
// ==/UserScript==

/* Script assumes that Amazon has $ === jQuery, which is generally true.
 * 
 * The idea behind this script is to export your inventory and use
 * it to post Craigslist or other ads to other marketplaces.
 * It applies a fixed price increase on every item, and then 
 * calculates a shipping price based on the type of product:
 * CD, paperback, or hardcover.
 *
 * The shipping is a guess based on the product type, but it 
 * is a fixed price, so you will need to adjust for heavy books.
 *
 * To use it, set your inventory list to display all your inventory
 * if possible, and then click the button.  Copy-paste the data out.
 */

price_increase = 1.00
audio_cd_shipping = 2.75;
paperback_shipping = 2.80;
hardcover_shipping = 3.50;

function getRows() {
    var ids = [];
    var myrows = [];
    $rows = $('.mt-row');
    $rows.each(function (idx) {
        ids.push($(this).attr('id'));
    });
    ids.forEach(function(id) {
        var selector = '#'+id;
        var quantity = $(selector+'-quantity-quantity').find('.a-input-text').attr('value');
        if (parseInt(quantity)==0) return; // skip if we don't have it
        
        var title = $(selector+'-title-title').find('.mt-link').attr('title');
        var price = $(selector+'-price-price').find('.a-input-text').attr('value');
        var newPrice = round_price(price_increase + parseFloat(price));

        var withshipping = 0;
        if (title.match(/\[Audio CD\]/)) {
            withshipping = round_price(audio_cd_shipping + newPrice);
        } else if (title.match(/\[Hardcover\]/)) {
            withshipping = round_price(hardcover_shipping + newPrice);
        } else if (title.match(/\[Paperback\]/)) {
            withshipping = round_price(paperback_shipping + newPrice);
        }
        
        if (quantity > 1 && withshipping != 0 ) {
            myrows.push( title + " (qyt: " + quantity + ") :: $" + newPrice.toFixed(2) + " :: (w/shipping $" + withshipping.toFixed(2) + ")"  );
        } else if (withshipping != 0) {
            myrows.push( title + " :: $" + newPrice + " :: (w/shipping $" + withshipping.toFixed(2) + ")" );
        } else {
            myrows.push( title + " :: $" + newPrice + " :: (w/shipping tbd)" );
        }
    });
    showDialog(myrows.join("\n"));
}

function round_price(price) {
    return Math.round(price*100)/100;
}

// shows a textarea with your string
function showDialog(text) {
    var $ta = $('<textarea style="position:absolute; top:50px; left:0; width: 80%; height: 500px">');
    $ta.val(text);
    $('#sc-masthead').append($ta);
}

function button_attacher() {
	console.log("button_attacher trying to attach");
	if ($('#sc-mkt-switcher-form').length > 0) {
		$mybutton = $('<button id="myamazonbutton" style="margin-right: 9px;">Export Inventory</button>');
		$mybutton.click(getRows);
		$('#sc-mkt-switcher-form').prepend($mybutton);
		window.clearInterval(amazonExportInventoryAttacher);
		amazonExportInventoryAttacher = undefined;
	} else {
		console.log("found no dialog - skipping");
	}
}

console.log('export inventory executed');
console.log('adding the button attacher');
amazonExportInventoryAttacher = window.setInterval(button_attacher, 10000); // every 10 seconds, try to attach the button to the dialog.