Simple request, simple solution

I work for an international company that has organizations all over the place, and some users can’t figure out the currency for some organizations easily, which can be a problem when analyzing item costs.

So, we got a fairly simple request. The request was to create a way for users to look up the currency code when looking at the Item Costs screen in Oracle.

One member of our team suggested two ways to solve the problem. The first was to create a descriptive flexfield to populate the currency code. The second one was to customize the item cost form, and add the currency code to the form.

Both seemed too complex for my tastes. A simple request deserves a simple solution.

I had an idea. A simple idea. “What about a really simple personalization?”

Ten minutes later, the problem was solved. The team member with the complex solutions admitted my idea worked, but he didn’t like that it wasn’t scalable. I’m not even sure what that means in this context.

The Boss liked the solution. The group requesting the change liked the solution. Everyone is happy (well, other than it-won’t-scale boy).

Here is the simple solution:

Navigate to the Item Costs Summary (CSTFITCT) form. Go to Help > Diagnostics > Custom Code > Personalize

Create the forms personalization by first creating a custom menu item under the Tools menu

Seq: 10
Description: Create the Currency Code menu
Level: Form
Condition Tab
Processing Context: Not in Enter-Query Mode
Context: (if you wanted you could turn this on for certain users or responsibilities)
Actions Tab
Seq: 10
Type: Menu
Description: Activate Tools Menu
Menu Entry: MENU1
(Oracle left MENU1 – MENU15 to us developers to use at our whim, but don’t use the SPECIALs)
Menu Label: &Currency Code

Then we activate that menu item and have it display a simple message with the currency code

Seq: 20
Description: Display the currency code
Level: Function
Condition Tab
Trigger Event: MENU1
Processing Mode: Both
Actions Tab
Seq: 10
Type: Message
Description: Display a message
Language: All
Message Type: Show
Message Text:
=SELECT ‘The currency code is ‘||gsob.currency_code FROM
gl_sets_of_books gsob
INNER JOIN org_organization_definitions morg on morg.set_of_books_id = GSOB.SET_OF_BOOKS_ID
WHERE morg.organization_id = fnd_profile.value(‘MFG_ORGANIZATION_ID’)

And you’re done. The message text must start with the =SELECT and you can’t concatenate it with regular text, so any additional text has to be done in the SQL statement.

When the user has selected an organization and navigated to the Item Costs Summary screen, he or she can easily select Currency Code from the Tools menu.

A simple message box will pop up with the currency code for that inventory organization. Easy.

Let me know if you have any better ways to solve this problem in the comments below. Especially if it is scalable.

Inexpensive Home Theater: Projectors

Inexpensive Home Theater: ProjectorsThe projector is the heart of the home theater system. Nothing can save your home theater system if your picture looks like garbage; but a nice picture can cover a multitude of other sins.

The projector also represents a large percentage of the overall budget. And, since the objective of the inexpensive home theater is to get a great bang-for-the-buck home theater system, I looked at the price/performance ratio and tried to get the projector that provided the best value. Continue reading

Inexpensive Home Theater: Planning

Inexpensive Home Theater: PlanningThe key component to any successful home theater installation is spending enough time during the planning phase. A good plan will save much time and heartache when it comes time to install components, and will also yield a much better home theater experience when you finally are able to sit down and enjoy your first movie.

The best time to plan is while you still have an unfinished room to work with. That way, you can plan your finished room already having the home theater plans in mind. Retrofitting a room to work as a home theater is hard work — it’s much easier to plan the home theater, plan the finished room, finish the room according to those plans, and then install the home theater components.

While planning your home theater, it’s crucial to be flexible. The plans for finishing the room may force changes or compromises in your home theater plan. You’ll need to be flexible. Continue reading