Oracle R12.1 Cash Application Work Queue Quick Setup

I’m emptying out the trove of documents I have from my Oracle consulting days.  The Cash Application Work Queue that came out with Oracle Receivables in the 12.1 upgrade was a great feature that is really very basic.  In fact, before it came out my friend and I had been brainstorming how to create this function for our client so it was one less thing we had to worry about.  Here is a quick setup.

Menu / Request Option Setup

Concurrent Request
When you upgrade to R12.1 the new concurrent request to run the rules engine has not been attached to the “Receivables All” request group. Add “Assign Cash Application Work Items” to your request set. It should probably be scheduled to run on intervals.

Standard Forms

Setup > Receipts > Cash Application Owner AssignmentCash Application Owner Assignment

1.  Assign a default user.  This the fallback if none of the rules you create pick up a receipt

2. This form in the screen shot has an extra tab (Cash Application Owners) that errors when you click on it.  (Note 880923.1)  I opened SR 3-1184593321 at the time of implementation and they said that there is only a data script fix for this at the moment.

Rules Engine

Setup a default user name.  Then create rules and sequence them.

2. Create a rule name and conditions.  Under “Result” enter who that particular rule gets routed to.

Application Workbench

Receipts > Cash Application Work Queue

Here it defaults to your user id and you hit search to see what you have that is unapplied in your queue.  Click the “Apply Receipt” button to open up the receipt window to apply the receipt.  Remember, you need to run the concurrent request to sort the receipts to the appropriate owners based on the rules you created.

Select update to make notes about the receipt.  These notes are not added to the receipt.  You can also change the status of the work item in this window.

The work item status are found via this query.

Select *
From AR_LOOKUPS ARL
WHERE 1=1
AND ARL.LOOKUP_TYPE='WORK_ITEM_STATUS'

Decoding Oracle Service Request Bug Status Codes

My good friend and fellow consultant and I for the longest time had no idea what the oracle service request bug stats codes meant at Oracle support. (https://support.oracle.com) We never really had a good idea if our bugs were being worked.

But we did some research and here is the list we have compiled. Perhaps it will be helpful to you. Enjoy!

10 – Description Phase:
Development is requesting more information.

11 – Code Bug (Response/Resolution):
Bug is being worked by Development.

16 – Support bug screening:
Bug is being reviewed by our Bug Diagnostics group.

30 – Additional Information Requested:
Bug is being worked by Support and/or more information was requested by Development.

37 – To Filer for Review/Merge Required:
Bug has been fixed but the patch will be merged into the next patchset.

40 – Waiting for the base bug fix

80 – Development to Q/A:
Bug is being regression tested for future release.

81 – Q/A to Dev/Patch or Workaround Available:
Patch released via Metalink.

90 – Closed, Verified by Filer:
Bug has been fixed and is closed.

91 – Closed, Could Not Reproduce:
Bug is closed as not reproducible.

92 – Closed, Not a Bug:
Bug is closed as not a bug (not reproducible or setup issue).

93 – Closed, Not Verified by Filer:
Bug has been fixed and is closed.

95 – Closed, Vendor OS Problem:
Bug is closed as an OS problem.

96 – Closed, Duplicate Bug:
Bug is closed as a duplicate bug.

where 1=1

Where 1=1

Back when I first started writing SQL I was taught a valuable trick that I always get questioned about anytime I give a query to someone. The statement? “where 1=1”

Let’s think about. Most queries start with one table and expand outwards. Take this example.

Select *
From order_header

Simple enough. Now let’s add another table.

Select *
From order_header oh
,order_line ol
Where oh.oh_id = ol.oh_id

Still that’s not so bad. It gets interesting though when you get to three tables.

Select *
From order_header oh
,order_line ol
,order_detail od
Where oh.oh_id = ol.oh_id
and ol.ol_id = od.ol_id

Now we are cooking. So you working along and say you only want to see orders from a certain date range. Your query turns into this:

Select *
From order_header oh
,order_line ol
,order_detail od
Where oh.oh_id = ol.oh_id
and ol.ol_id = od.ol_id
and oh.creation_date > ‘1-JAN-10’

Still everything is straight forward. But what if you all of a sudden want to see just the order line and order detail table. Using comments you need to do the following.

Select *
From order_line ol
,order_detail od
–Where oh.oh_id = ol.oh_id
where ol.ol_id = od.ol_id
and oh.creation_date > ‘1-JAN-10’

So you had to comment the original where clause, add a new where clause and remove the order_header table. That’s three steps. Now if you are like me you are always changing the parameters of a query and when you are humming along you don’t want to have to take time to do unnecessary work. So what if you wrote your original query like this.
Select *
From order_header oh
,order_line ol
,order_detail od
Where 1=1
and oh.oh_id = ol.oh_id
and ol.ol_id = od.ol_id
and oh.creation_date > ‘1-JAN-10’

If you wanted to make some more changes now all you have to do is comment a line within the “and” clauses. You don’t have to re-write “where”. You can just use comments.

Select *
From order_line ol
,order_detail od
Where 1=1
–and oh.oh_id = ol.oh_id
and ol.ol_id = od.ol_id
and oh.creation_date > ‘1-JAN-10’

Now this is a pretty basic example but anytime I write a query I always start with where 1=1. When I get to more complicated queries it just saves time. As you comment and uncomment code don’t you think it would be easier just to comment that first clause and not re-write “where”?

My final query is a great example of how when searching for data it’s helpful to have 1=1. Sometimes I want to search by table names and sometimes I want to search by owner. It’s simple to comment the “and” clauses and move on to your next task. Everything in the name of efficiency!

SELECT DISTINCT OWNER, TABLE_NAME
FROM ALL_TABLES
WHERE 1=1
–AND TABLE_NAME LIKE ‘%USE%’
AND OWNER LIKE ‘ %QAM%’
ORDER BY OWNER ASC