Friday, July 31, 2015

Invoices and Vouchers - disambiguation and some advice on how to Get Invoices into PeopleSoft

When integrating Invoices with PeopleSoft a number of terms are bandied about, and there is much confusion about the words Voucher and Invoice.  In this write up I want to clarify some things about how PeopleSoft treats Invoices.

An excellent description of Vouchers versus Invoices  is here: http://www.accountingcoach.com/blog/difference-invoice-and-voucher

In summary:

Invoices are received by Purchasers, and are issued by Vendors.  Vouchers are internal documents created by Purchasers to track and record Invoices.

So these two items are different sides of the same coin.  Now enough with the general items, let's talk PeopleSoft.
In PSFT the actual item is called a Voucher.  The Voucher system is basically a PeopleSoft module for making payments to vendors.  

There really are no AP Invoices in PeopleSoft.  Instead, there are Vouchers.  Which makes sense, since PeopleSoft is our system and we are Purchasers. (The Royal we, meaning all of our clients who are users of PeopleSoft, and for whom we do this integration work.)

There are a few fields that are always required on a Voucher.
  • VENDOR_ID
  • VOUCHER_ID
  • INVOICE_ID
  • INVOICE_DT

VENDOR_ID - Of course if you are going to pay someone you must know who that person is!  Vendors in PeopleSoft are entities that you can send money to. Such entities can include city governments, subcontractors, prime contractors, and suppliers.

VOUCHER_ID - This field is unique to each record in PeopleSoft .  When you enter a new Voucher, PeopleSoft will generate a VOUCHER_ID for you if you like.  It will simply take the next available number in the system.  You may also send PeopleSoft your own number if you wish.  We often do this in integrations when the integrated Vouchers need to clearly stand out from standard ones.  Generally we add a prefix onto these, so a Voucher_ID would look something like "DIM00001" rather than something like "00000001".  Since this number must be unique within PeopleSoft, it can be a bad idea to force this to match a number from another system unless you can guarantee that the number is unique.
But if, for example, you have set up Primavera Unifier to make sure that Invoices are unique across the whole system, you could use those as your Voucher number.  However, this is not standard practice.

When you ask someone in AP to look up a voucher, the best pieces of information you can give them are Vendor ID and Voucher ID.   This lets them quickly and unambiguously find a specific Voucher.

INVOICE_ID - This field is 30 characters long and can contain any standard characters.  PeopleSoft does NOT populate this field.  Instead, the user must provide a value.  It is required and cannot be blank.  A specific INVOICE_ID value also cannot already be used for a given vendor.  This means that VENDOR_ID and INVOICE_ID must be unique.   This field is often used to replicate the number provided on a vendor's invoice.  That numbering system is usually unique to a vendor. For example, the invoice number on a Home Depot receipt will have nothing to do with the invoice number from an Amazon order.
An integration can generate an INVOICE_ID, but this is sometimes not desirable, mainly because INVOICE_ID is usually prominently displayed on a printed Invoice.

INVOICE_DT is  the date of the invoice.  Like INVOICE_ID, this is generally supplied  by the vendor on their written Invoice.  PeopleSoft does not generate this  value.

All this is to drive home three points:

  • The INVOICE_ID and INVOICE_DT cannot come from PeopleSoft.  They either must come from an external source such as Unifier, or we must establish some algorithm for generating these values.
  • The  VOUCHER_ID is created in PeopleSoft (when letting it generate the number automatically), and should be written back to the external system.  Even if we decide to create it from the external system, writing it back will explicitly show us that the Invoice exists as a Voucher in PeopleSoft and gives us a clear number to give to AP people if we have questions about a specific Voucher.
  • We must know which vendor an Invoice is written to, and that ID must come from the external system.

I hope this helps to clarify how Invoices are used in PeopleSoft with regards to integration with external systems such as Primavera.

Boulder, CO
July 2015





Saturday, July 18, 2015

Weblogic NodeManager port 5556 conflicts with VideoStream for Chromecast


I was installing the latest version of Primavera Gateway on my home machine last weekend and ran into an issue where WebLogic would not start.  The problem is that NodeManager is set to run on port 5556, and  I kept getting messages that another program was using that port.
Here is the message:

<Jul 18, 2015 6:13:29 PM MDT> <SEVERE> <Fatal error in NodeManager server: The server is unable to create a server socket for listening. The address localhost might be incorrect or another process is using port 5,556: java.net.BindException: Address already in use: JVM_Bind>

I ran the following command line to see which process had the port:

> netstat -abnp TCP 

The result:

  TCP    192.168.1.6:5556       0.0.0.0:0              LISTENING
 [chrome.exe]


Why would Chrome be using a port?  It turns out that this was not Chrome directly, but an extension I use which allows me to stream movies from my desktop to my Chromecast (Surprisingly, even if a movie can play fine on your PC, Chromecast will not always recognize it. But Videostream can play almost any format).


I went to Chrome->More Tools->Extensions and  found the culprit:
Now I just happend to get lucky searching on 5556 and Chrome and found articles mentioning port 5556.  If I had not found that, then I would have had to try disabling every extension until it worked.  One work around was to just turn Chrome off completely.  But it's hard for me to get anything done without Chrome :)