Erply Inventory Registration – Automatically Scan Each Item

We wanted to just continue to scan each piece of inventory without having to interact with the computer from Erply.  On the Inventory Registration page, When you enter a barcode number a drop down box is displayed with one item. Erply, by default, will not select it automatically but waits for you to select.  Once the page refreshes (which I wish it didn’t), it puts the focus on the price box.  The way we want to work is just to continue scanning and come back later to fill in price.  This script is the solution for us in this use case.

Script Download: http://userscripts.org/scripts/show/151067

Script Description:

This helps in inventory registration for Erply. If you are scanning your items into Erply this script helps by automatically clicking on the one barcode dropdown that is selected and then once the page reloads it selects the next open text box ready for you to scan another barcode.  By default, Erply will wait for keyboard input for you once you scan an item.

Details

Below is a picture.  If the script is installed correctly then you will see a fish in the upper right corner of the screen.  This means that the script is installed and working on the inventory registration page.

Next thing to do is start scanning away!

You will notice one you start scanning that the drop-down will appear for a moment and then the script will select the only one listed.  The page will quickly refresh and then the script will select the bottom barcode/name box.

Let me know if you have questions!

Printing Labels from a Zebra LP2824 Printer in Erply

We are beginning to use Erply system for inventory. By the way, it is a fantastic system! Anyway… we were wanting to get the Zebra LP2824 Plus printer working here in Haiti.  Unfortunately, at this time of writing, there wasn’t an option to print a 2 1/4″ x 1/2″ label in Erply.  No problemo!

Erply recommends that you use Firefox (which is a great browser – I happen to switch between Google Chrome and Firefox).  So if you are using Firefox then you can head over and install Greasemonkey addon.

Then you can install the greasemonkey script for printing the barcode labels:

http://userscripts.org/scripts/show/138788

To use: You will need to pick “Barcode label (90mm x 14mm). The next page will automatically size the image and barcodes to fit the 2 1/4″ x 1/2”.

This script makes the label large enough so that the iPad Point of Sale application will be able to scan the barcode printed. Most barcode scanners will work but the label wasn’t large enough for the iPad to scan it.

Details:

– This script is made specifically for printing only EAN-8 labels. If you want to print EAN-13 you will need to adjust the script manually.

– Won’t work if you want to print the mass of the item on the label.

Login Switcher

This Greasemonkey plugin works in Chrome and Firefox. The purpose is specific to Windchill but could be programmed to work for any website that you need to continually login to with different users.

—-
Do you frequently switch between different users in Windchill, have you ever just wanted to log out. This script adds a
configurable list of links to the top of the page (specifically for 10.0) allowing you to switch users or logout with a single click.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
// ==UserScript==
// @name Windchill User Switcher/Logout
// @description Allow logging out and switching between users with a single click
// @namespace
// @include http://*.<HOST SITE>.com*/Windchill/app/*
// @author Ryan Alberts ralberts@ptc.com
// ==/UserScript==

//--------------------------------------------------------------------------
// Support for Chrome
//--------------------------------------------------------------------------

if (typeof GM_deleteValue == 'undefined') {
    GM_addStyle = function(css) {
        var style = document.createElement('style');
        style.textContent = css;
        document.getElementsByTagName('head')[0].appendChild(style);
    }

    GM_deleteValue = function(name) {
        localStorage.removeItem(name);
    }

    GM_getValue = function(name, defaultValue) {
        var value = localStorage.getItem(name);
        if (!value)
            return defaultValue;
        var type = value[0];
        value = value.substring(1);
        switch (type) {
            case 'b':
                return value == 'true';
            case 'n':
                return Number(value);
            default:
                return value;
        }
    }

    GM_log = function(message) {
        console.log(message);
    }

     GM_registerMenuCommand = function(name, funk) {
    //todo
    }

    GM_setValue = function(name, value) {
        value = (typeof value)[0] + value;
        localStorage.setItem(name, value);
    }
}


//--------------------------------------------------------------------------
// End Support for Chrome
//--------------------------------------------------------------------------


var cachedLogins = null;

function getLogins() {
  var logins;
  if (cachedLogins == null) {
    cachedLogins = new Array();
    if (!GM_getValue('logins')) {
      logins = ["logout:null", "demo:demo", "wcadmin:wcadmin"];
      GM_setValue('logins',logins.join(','));
    }
    logins = GM_getValue('logins','[]').split(',');
    for (var i in logins) {
                        var loginName = logins[i].substring(0,logins[i].indexOf(':'));
      cachedLogins[loginName] = logins[i];
    }
  }

  return cachedLogins;
}

function fillLoginsIn() {
  logins = GM_getValue('logins', '[]').split(',');
    console.log("Decoded logins", logins);
  var str = "";
  for (x in logins) {
    str += logins[x] + "\n";
  }

  document.getElementById('loginEditorTextArea').value = str;
}

function saveLogins() {
  var logins = document.getElementById('loginEditorTextArea').value.split('\n');;
  GM_setValue('logins', logins.join(','));
  cachedLogins = null;
  resetLogins(document.getElementById('loginsList'));
}

function resetLogins(div) {
   div.innerHTML="";
   var logins = getLogins();
   var loc = window.location;
   for (var user in logins) {
      var link = document.createElement('a');
      link.href = loc.protocol + "//" + logins[user] + "@"+ loc.host + ":" + loc.port + loc.pathname + loc.search;
      link.style.marginLeft = "3px";
      link.style.marginRight = "3px";
      link.appendChild(document.createTextNode(user));
      div.appendChild(link);
   }
}

function addLogger () {
   console.log("addLogger()");
   var logger = document.createElement('div');
   logger.style.position = "absolute";
   logger.style.left = "250px";
   logger.style.background = "#FFFFFF";
   logger.style.zIndex = "99999";
   logger.style.fontSize = "10px";
   logger.style.border = "1px solid black";

   var loginsList = document.createElement('span');
   loginsList.id = 'loginsList';
   resetLogins(loginsList);
   logger.appendChild(loginsList);

   var editLink = document.createElement('a');
   editLink.id = "loginEditorLink";
   editLink.href = "#";
   editLink.appendChild(document.createTextNode("Edit Logins"));
   logger.appendChild(editLink);

   document.body.appendChild(logger);

   var loginEditor = document.createElement('div');
   loginEditor.id = 'loginEditor';
   loginEditor.style.position = "absolute";
   loginEditor.style.left = "250px";
   loginEditor.style.top = "20px";
   loginEditor.style.visibility = 'hidden';
   loginEditor.style.background = "#FFFFFF";
   loginEditor.style.zIndex = "99999";
   loginEditor.style.fontSize = "10px";
   loginEditor.style.border = "1px solid black";
   loginEditor.style.width = "200px";
   loginEditor.style.height = "200px";
   loginEditor.style.textAlign = "center";
   var textArea = document.createElement('textarea');
   textArea.id = 'loginEditorTextArea';
   textArea.style.width = "95%";
   textArea.style.height = "170px";
   loginEditor.appendChild(textArea);
   var saveBtn = document.createElement('input');
   saveBtn.type = 'button';
   saveBtn.id = 'loginEditorSaveButton';
   saveBtn.value = 'Save the Logins';
   loginEditor.appendChild(saveBtn);

   document.body.appendChild(loginEditor);

   unsafeWindow.document.getElementById('loginEditorLink').onclick = function () {
  fillLoginsIn();
  document.getElementById('loginEditor').style.visibility = 'visible';
   };
   unsafeWindow.document.getElementById('loginEditorSaveButton').onclick = function () {
  document.getElementById('loginEditor').style.visibility = 'hidden';
  saveLogins();
   };

}

window.addEventListener('load', addLogger, true);
addLogger();