Friday, April 15, 2011

Epicor Customizations and Menu Management

After you create a form customization for Epicor, you may want to set that customization as the default for all your users.

To do this, you use System Management > Utilities > Menu Maintanence to assign your customization to a menu item.

However, many menu items open the same form, and if you want the users to always use your customization, no matter which menu item they select, you manually find and change each menu item.

It is very easy to miss a menu item, and the users will not understand why the customizations does not appear.

I wrote a custom application, called Epicor Menu Manager, which uses Epicor's Web Services (using WCF) to make it easier to manage customizations.

It lets you:

  • search for menu items by name, program, or arguments
  • find all menu items which are eligible, but not currently linked to a customization
  • suggest and update customizations for a menu item


Here's what it looks like:


Above, I have asked to see all menu items eligible for my Sales Region customization. In the tree navigation, it hightlights the path to the found menu items.

I think this application might be userful for others. If you would like to buy a copy, please contact Summa-Tech.

Monday, April 11, 2011

Epicor 9 and User Defined Codes

When customizing Epicor 9, you might find you require additional fields for a given table.

For example, we have a client who organizes sales regions into sales districts. So, on the Sales Region Maintenance screen, we want the user to be able to select a district.

BEFORE


AFTER



You can customize the form, by adding a TextBox for SalesRegion.Character01 field, but it is better to have the user select from a range of choices.

Previously to accomplish this, you would have to add the sales districts into a user-defined table, and then add a combo box which populates from that table.

The easier way is to use something called User Defined Codes Maintenance.

Step 1 - Define User Codes

Located under System Management -> Utilities -> User Codes, open the "User Defined Codes Maintenance screen".

Create a Code Type, and then assign values (Code, and Code Description). In my case, I created a Code Type called "District", and added 4 codes, with descriptions "Northern District", "Southern District", etc. Each code also has a shorter Code ID.

Step 2 - Associate Field with User Code
Located under System Management -> Utilities -> Extended Properties, open the Extended Properties Maintenance screen.

In my case, I want to associate the district codes with the sales region:

  1. Selected "Region" DataSet Table ID
  2. Selected Fields tab, and selected the Character01 field from the tree view
  3. for the UD Code Type: field, chose "District" from combo box.


Now the system knows that Region.Character01 is associated with User Defined Codes "District".

Step 3 - Form Customization
Now I need to add to the Sales Region form a combo box for the Character01 field.


  1. Turn on Developer Mode (Main Menu -> Options -> Developer MOde)
  2. Open Sales Region
  3. Start Customization (Tools -> Customization)
  4. From Toolbox, add a EpiCombo control to the form
  5. Change the EpiBinding property to Region.Character01


As soon as I select Region.Character01 for the EpiBinding property, the system automatically filled in for me the EpiCombo properties.




And that's it. Now your users can choose from a pre-defined list of values for a user defined field.

Tuesday, March 29, 2011

What is DMT?



DMT stands for Data Management Tool.

Basically, it is a tool which allows the import of information into Epicor in the form of a text file.

We really only use DMT when first setting up a new Epicor implementation. The thing about DMT is, it is limited.

For some tables, you still must populate the data manually, or write custom code to populate it for you.

Here are some of the tables we populate using C# and .dll files in the Epicor Software/Client folder:
SalesRep, SalesTerritory, RefCategory, AnalysisCode

In you project, add references to:


  • Epicor.Mfg.Common.BOExceptions
  • Epicor.Mfg.Core.BLConnectionPool
  • Epicor.MFG.Core.CallContext
  • Epicor.Mfg.UI.EpiClientLib
  • Epicor.Mfg.Lib.ISessionMod
  • Epicor.Mfg.Lib.SessionMod


And then, for the business objects you want to use, add two references like this:

  • Epicor.Mfg.BO.(business object name)
  • Epcior.Mfg.IF.I(business object name)


Here is some sample code on how you can connect directly to Epicor:

public BOFactory(string company)
{
this.company = company;
string user = "manager";
string password = "manager";

m_cnVantage = new BLConnectionPool(user, password, "AppServerDC://"
+ ConfigurationSettings.AppSettings[m_strKeyVantageServer] + ":"
+ ConfigurationSettings.AppSettings[m_strKeyVantagePort]);
}

public Epicor.Mfg.BO.SalesTer GetSalesTerBO()
{
Epicor.Mfg.BO.SalesTer saleTer = new Epicor.Mfg.BO.SalesTer(m_cnVantage);
return saleTer;
}


And then, once you have your business object:

dataSet = new SalesTerDataSet();
salesTer.GetNewSalesTer(dataSet);
...
salesTer.Update(dataSet);


Also note that you can change the company you working with using this code:

public void SetCompany(string company)
{
this.company = company;
Epicor.Mfg.Lib.SessionMod sessionMod = new Epicor.Mfg.Lib.SessionMod(m_cnVantage);

sessionMod.SetCompany(company,
out companyName, out plantID, out plantName, out workstationID, out workstationDescription,
out employeeID, out countryGroupCode, out countryCode);
}

Thursday, March 17, 2011

Epicor Multi-Company Madness

Now, while I don't consider myself a genius, I feel reasonably intelligent enough to be able to accurately follow a setup installation guide.

However, when installation guide requires that you perform an action on page 75 to successfully get something on page 42 to work, something is seriously wrong.

Specifically, in Epicor's TechRefGuide_MultSite_905602.pdf, it asks you to "Test the Communication" by creating a new customer, marking them Global, save, and then:

"The Multi-Company Process transmits Customer and ShipTo records from that company and sends it to the other companies."

No, it doesn't. Skip to page 75, section "Link Global Records".

What the previous section should have said was:
1. Create the customer, mark as global, save.
2. Goto External Company Maintenance, and choose the child company, and choose Action -> Initialize Multi-Company...
3. Switch to child company, open Customer Maintenance, and choose Action, Link Customer...
4. Search for the customer you created in step once, and click Link.

Hopefully I have saved you the 2 days I wasted troubleshooting this issue.

Friday, June 25, 2010

Business Activity Query Designer

Business Activity Query Designer is availabe in Epicor under:
System Management > Utilities

It is used to create queries in Progress ADL, which can be used is dashboards, or to export data using Business Activity Query Export Process (located in same path). Business Activity Query Export Process can export a file in .csv or .xml, either as a one time process, or on a schedule.

Unfortunately, as a data export tool, ADL lacks many functions in SQL. For instance, I wanted to return only distinct rows from a table, but there is no equivalent of "SELECT DISTINCT".

Monday, April 5, 2010

Epicor 9 Printing and Print Preview

Why is my report not printing?

When you attempt to print or preview a report, Epicor 9 submits the request back to the server. The server handles the creation of the report, and asynchronoously sends it back to the client.

If the server can not generate the report, the most common reason being no matching records, it generates and error, and does not inform the client why.

If it seems like your print, or print preview is taking too long, you have to use the Epicor System Monitor taskbar application to find out why. In the bottom right of your Windows Star Bar, click in the Epicor icon. You'll find you report request under eith Active Tasks (if in progress), or History Tasks is it has already failed.

Once you've selected the task for the List tab, click the Details tab to see the error reason:


Type:3
Program:om/sopicklistreport.p
Method:Main-Block
Table:
Field:
Rowid:
Message:No Records Selected.

Epicor 9 Fulfillment Workbench

The Epicor 9 Fulfillment Workbench option is only available if you have licensed the Advanced Materials management module. It allows a finer grain of control when fulfilling orders (whether sales, build-to-order, plant transfer, etc).

One of the most confusing things is the difference beween allocating and reserving. Both options associate a part and quanity with a given order, and make that quantity unavailable to other orders. Both can be undone, making the quantity available again.

The difference between reserving and allocating is the granularity of control. When you reserver a part for an order, you can reserve that part across all warehouses, or just the primary warehouse. When you allocate a part, you can allocate a part from a specific bin or lot, or even by serial number.