// ==UserScript==
// @name Tokopedia Cetak Sekaligus Non Gold Merchant
// @author Rendi Wahyudi Muliawan
// @namespace http://www.tokopedia.com/celleven
// @source https://github.com/rendy1287/tokopedia-cetak-sekaligus
// @version 0.04
// @description Untuk mencetak label alamat pada Tokopedia bagi pengguna Non / Bukan Gold Merchant.
// @license MIT License.
// @icon https://ecs7.tokopedia.net/img/favicon.ico
// @match https://www.tokopedia.com/myshop_order_process.pl*
// @match https://tokopedia.com/myshop_order_process.pl*
// @include https://www.tokopedia.com/myshop_order_process.pl*
// @include https://tokopedia.com/myshop_order_process.pl*
// @run-at document-end
// ==/UserScript==
//
//***************** PENGATURAN *************************************//
//
// @logotoko URL logo toko jika kamu ingin cantumkan logo
// isikan url image kamu, bisa upload ke image hosting
// logo recommended size: 115x25 pixel
//
// @ekspedisi menampilkan logo ekspedisi, isikan true jika
// ingin menampilkan atau false jika tidak
//
// @invoice menampilkan nomor invoice, isikan true jika
// ingin menampilkan atau false jika tidak
//
// @fontsize ukuran font untuk label
//
//******************************************************************//
const logotoko = 'https://ecs7.tokopedia.net/img/logo-tokopedia-32.png';
const ekspedisi = false;
const invoice = false;
const fontsize = '12px';
// Template Label bisa kamu ganti pada @require di atas
// Template Label saat ini hanya tersedia 1 sampai 3
// Ubah 1.js menjadi 2.js atau 3.js dan seterusnya
// Untuk mengubah template label
// Untuk melihat semua template yang tersedia silakan buka
// https://github.com/rendy1287/tokopedia-cetak-sekaligus/template/
//*****************************************************************//
//
// SCRIPT DI BAWAH INI JANGAN DIUBAH JIKA TIDAK MENGERTI
//
//*****************************************************************//
let label = `
<div class="label_alamat">
<div class="label">
<div class="logo">
<img src="{{logotoko}}" width="115" height="25">
</div>
<div class="barcode"></div>
<div class="job" style="display: none;">{{kode_booking}}</div>
<div class="ekspedisi">
<div class="logokurir">
<img src="{{logokurir}}" width="80%">
</div>
<div class="kurir">{{ekspedisi}}</div>
<div class="invoice">Nomor Invoice<br>{{invoice}}</div>
</div>
<div class="adminongkir">
<div class="admin">Administrasi<br><span class="harga_admin">{{administrasi}}</span></div>
<div class="asuransi">Asuransi<br><span class="harga_asuransi">{{asuransi}}</span></div>
<div class="ongkir">Ongkir<br><span class="harga_ongkir">{{ongkir}}</span></div>
<div class="berat">Berat<br><span class="total_berat">{{berat}}</span><br></div>
</div>
<div class="penerima">
<div class="kepada">Kepada</div>
<div class="penerima2">
<div class="nama_penerima"><b>{{nama_penerima}}</b> - {{telepon_penerima}}</div>
<div class="alamat_penerima">{{alamat_penerima}}</div>
</div>
</div>
<div class="pengirim">
<div class="dari">Dari</div>
<div class="pengirim2">
<div class="nama_pengirim"><b>{{nama_pengirim}}</b> - {{telepon_pengirim}}</div>
<div class="alamat_pengirim">{{alamat_pengirim}}</div>
</div>
</div>
<div class="gunting">
<div class="icon_gunting">
<img src="https://ecs7.tokopedia.net/img/kurir/icon-cut.png" width="14">
</div>
</div>
{{foreach_item}}
<div class="clear"></div>
</div>
</div>
`;
// foreach_item menggunakan template ini
let item = `
<div class="item">
<div class="jumlah">{{jumlah_produk}}</div>
<div class="produk">
<div class="nama_produk">{{nama_produk}}</div>
<div class="keterangan">Keterangan: {{keterangan_produk}}</div>
</div>
</div>
`;
let css = `
<style type="text/css">
body
{
width: 935px;
font-size: 12px;
font-family: sans-serif;
}
.print_area
{
width: 100%;
}
.kiri
{
float: left;
width: 50%;
}
.kanan
{
float: left;
margin-left: 5px;
width: 49%;
}
.label_alamat
{
border: 1px solid black;
margin-top: 5px;
width: 100%;
}
.label
{
padding: 10px;
}
.logo
{
width: 100%;
border-bottom: 1px dashed #bdbcbc;
padding-bottom: 5px;
}
.print
{
margin-bottom: 3px;
font-weight: bold;
font-family: sans-serif;
font-size: 15px;
}
.print a
{
color: green;
text-decoration: none;
}
@media print
{
.print
{
display: none;
}
.label_alamat
{
page-break-inside: avoid;
}
}
div.barcode, div.job, div.ekspedisi, div.barcode, div.adminongkir, div.penerima, div.pengirim, div.item
{
padding-bottom: 5px;
padding-top: 5px;
padding-left: 5px;
padding-right: 5px;
}
div.logokurir, div.kurir, div.kepada, div.dari, div.jumlah
{
width: 25%;
float: left;
}
div.invoice
{
width: 50%;
float: left;
}
div.produk
{
width: 75%;
float: left;
}
div.penerima2, div.pengirim2
{
width: 75%;
float: left;
line-height: 1.5;
}
div.kiri, div.adminongkir, div.penerima, div.pengirim, div.clear, div.item
{
clear: both;
}
div.admin, div.asuransi, div.ongkir, div.berat
{
width: 25%;
float: left;
line-height: 1.5;
}
span.harga_ongkir, span.total_berat
{
font-weight: bold;
font-size: 16px;
}
div.gunting
{
border-bottom: 1px dashed #bdbcbc;
padding-top: 5px;
padding-bottom: 5px;
margin-top: 40px;
}
div.icon_gunting
{
position: relative;
float: right;
top: 0px;
}
div.item
{
padding-top: 0px;
}
div.keterangan
{
font-size: 10px;
padding-bottom: 10px;
}
</style>
`;
(function() {
'use strict';
var btncetak = '<style>button.t-c-s{background-color: #3a87ad; border: 1px solid #3a87ad; color: white;}' +
'button.t-c-s:hover{background-color: #3a679d; border: 1px solid #3a679d; color: white;}</style>' +
'<button class="btn btn-small mr-5 t-c-s">' +
'<i class="icon-fax-alt"></i> ' + ($('html').attr('lang') == 'id' ? 'Cetak Sekaligus' : 'Print Multiple') + '</button>';
$(btncetak).insertAfter('button.confirm-multiple');
$('button.t-c-s').click(function()
{
var html = '';
var id = '';
var labelid = [];
$('input.order_checkbox').each(function ()
{
var checked = (this.checked ? $(this).val() : '');
id += checked;
if (checked != '')
{
labelid.push($(this).parent().parent().prop('id').replace('order-', ''));
}
});
if (id == '')
{
var message_error = tokopedia.render_message('error', tokopedia.loc('ERROR_CHOOSE_ORDER'));
tokopedia.alert($(this).text(), message_error);
return false;
}
html += '<title>Cetak Slip Alamat</title>';
html += css;
html += '<div class="print"><a href="javascript:window.print();"><img src="https://ecs7.tokopedia.net/img/print.png"> Cetak</a></div><div class="print_area">';
var kanan = false;
var x = 0;
labelid.forEach(function (a, i)
{
if (x == 0)
{
html += '<div class="kiri">';
}
else if (x == 3 && kanan == false)
{
html += '<div class="kanan">';
kanan = true;
x = 0;
}
else if (x == 3 && kanan == true)
{
html += '<div class="kiri">';
kanan = false;
x = 0;
}
html += set_print_label(a);
x++;
if (x == 3)
{
html += '</div>';
}
});
html += '</div></div>';
$('<div class="cetak_sekaligus"></div>').insertBefore('footer.footer-wrapper');
$(html).append('div.cetak_sekaligus');
var blank = window.open('about:blank', '_blank');
blank.document.write(html);
});
})();
function set_print_label(id)
{
var text = '';
var logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_jne.png';
var nama_toko = $('a.break-word').html();
var nama_penerima = $('tr#order-' + id + ' td input.dest_receiver_name').val();
var alamat_penerima = $('tr#order-' + id + ' td input.dest_address').val();
var telepon_penerima = /[0-9]{10,}/.exec(alamat_penerima);
alamat_penerima = alamat_penerima.replace(/Telp.*/, '');
var ekspedisi = $('tr#order-' + id + ' td input.ship_shipping_name').val();
var kode_ekspedisi = ekspedisi.substr(0, ekspedisi.indexOf(' '));
ekspedisi = '<b>' + ekspedisi.substr(0, ekspedisi.indexOf(' ')) + '</b><br>' + ekspedisi.substr(ekspedisi.indexOf(' ')+1);
ekspedisi = ekspedisi.replace('(', '').replace(')', '');
var ongkir = $('tr#order-' + id + ' td input.ship_shipping_price').val();
var nama_pengirim = ($('tr#order-' + id + ' td input.dropship_name').val() ? '-' : nama_toko);
var telepon_pengirim = ($('tr#order-' + id + ' td input.dropship_telp').val() ? '' : $('tr#order-' + id + ' td input.shop_phone').val());
var alamat_pengirim = $('tr#order-' + id + ' td input.shop_district').val() + ', ' +
$('tr#order-' + id + ' td input.shop_province').val() + ', ' + $('tr#order-' + id + ' td input.shop_postal').val();
var invoice = $('tr#order-' + id + ' td input.order_invoice').val();
var administrasi = '';
var asuransi = $('tr#order-' + id + ' td input.order_add_price').val();
var logo_asuransi = '';
var berat = /\(.*\)/.exec($('tr#order-' + id + ' td input.order_product_qty').val());
berat = berat.toString().replace('(', '').replace(')', '');
var total_harga = $('tr#order-' + id + ' td input.order_open_amt').val();
var tipe_pembayaran = $('tr#order-' + id + ' td input.pay_payment_method').val();
var kode_booking = '';
if (kode_ekspedisi == 'JNE')
{
logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_jne.png';
}
else if (kode_ekspedisi == 'SiCepat')
{
logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_sicepat.png';
}
else if (kode_ekspedisi == 'J&T')
{
logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_jnt.png';
}
else if (kode_ekspedisi == 'Grab')
{
logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_grab.png';
}
else if (kode_ekspedisi == 'Go-Send')
{
logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_gosend.png';
}
else if (kode_ekspedisi == 'Ninja')
{
logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_ninja.png';
}
else if (kode_ekspedisi == 'Wahana')
{
logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_wahana.png';
}
else if (kode_ekspedisi == 'Tiki')
{
logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_tiki.png';
}
else if (kode_ekspedisi == 'Pos')
{
logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_pos.png';
}
else if (kode_ekspedisi == 'First')
{
logokurir = 'https://ecs7.tokopedia.net/img/kurir/logo_first.png';
}
text += label;
text = text.replace('{{logotoko}}', logotoko);
text = text.replace('{{kode_booking}}', kode_booking);
text = text.replace('{{logokurir}}', logokurir);
text = text.replace('{{ekspedisi}}', ekspedisi);
text = text.replace('{{invoice}}', invoice);
text = text.replace('{{administrasi}}', administrasi);
text = text.replace('{{asuransi}}', asuransi);
text = text.replace('{{ongkir}}', ongkir);
text = text.replace('{{berat}}', berat);
text = text.replace('{{nama_penerima}}', nama_penerima);
text = text.replace('{{telepon_penerima}}', telepon_penerima);
text = text.replace('{{alamat_penerima}}', alamat_penerima);
text = text.replace('{{nama_pengirim}}', nama_pengirim);
text = text.replace('{{telepon_pengirim}}', telepon_pengirim);
text = text.replace('{{alamat_pengirim}}', alamat_pengirim);
var print_item = '';
$('tr#order-' + id + ' td div.products').each(function ()
{
var label_item = '';
var gambar_produk = $(this).find('input.product_pic').val();
var nama_produk = $(this).find('input.product_name').val();
var jumlah_produk = $(this).find('input.product_qty').val();
jumlah_produk = jumlah_produk.substr(0, jumlah_produk.indexOf(' ')) + ' buah';
var keterangan_produk = $(this).find('input.product_notes').val();
var total_harga_barang = $(this).find('input.product_subtotal').val();
label_item = item;
label_item = label_item.replace('{{jumlah_produk}}', jumlah_produk);
label_item = label_item.replace('{{nama_produk}}', nama_produk);
label_item = label_item.replace('{{keterangan_produk}}', keterangan_produk);
print_item += label_item;
});
text = text.replace('{{foreach_item}}', print_item);
return text;
}