Thursday, September 30, 2010

Perplexing GP Questions

There are quirks and annoyances in Dynamics GP like all systems but some design decisions are more puzzling than others. One thing in purchasing that has always bugged me is that there are no user defined fields available on a purchase order. I know that I can now use Extender to add fields but most other transactions and cards have at least 2 user defined fields.

Then to make it more bizarre, receiving transactions are blessed with 35 user defined fields including 20 dates. Who needed 20 user defined dates on a receiving transaction? And how long does it take them to receive items?

Effective Inventory Item Ranking

Jon Schreibfeder is an inventory guru who has written several white papers for Microsoft and provides many of his articles for free on his website. If you are responsible for inventory in your organization, these articles can make you look like a genius.

His article on item ranking proposes a 3 way ranking system for items based on total cost of goods sold, number of hits, and profitability. Dynamics GP only stores one rank and provides 4 methods of calculating this rank using the Item ABC Analysis Routine:

The Usage Value option would rank item based on total cost of goods sold for a time period but to apply the other rankings requires some SQL work.

Hits: The number of times an item has been sold is calculated from the SOP30300 table using only non-voided invoices.

select items.itemnmbr, items.itemdesc, isnull(soplinesum.hits,0)
from iv00101 as items
left join (select COUNT(itemnmbr) as hits, itemnmbr from sop30300 as a
join sop30200 as b on a.soptype = b.soptype and a.sopnumbe = b.sopnumbe
where b.soptype = 3 and b.voidstts = 0
group by a.itemnmbr) as soplinesum
on items.itemnmbr = soplinesum.itemnmbr

Profitability: The query to calculate item profitability is similar but uses extended price and cost to return a sum of gross profit by item.

select items.itemnmbr, items.itemdesc, isnull(soplinesum.profit,0)
from iv00101 as items
left join (select sum(a.xtndprce-a.extdcost) as profit, itemnmbr from sop30300 as a
join sop30200 as b on a.soptype = b.soptype and a.sopnumbe = b.sopnumbe
where b.soptype = 3 and b.voidstts = 0
group by a.itemnmbr) as soplinesum
on items.itemnmbr = soplinesum.itemnmbr

Now the real fun begins. The results from these queries can be exported to Excel for analysis. Create a formula that returns the percentage of total hits or profit for each item and then sort by that percentage. This will give you a basis to begin assigning ABC ranks by hits and profitability.

If you want to store all 3 ranks in Dynamics GP consider using inventory categories or extender fields.

Thursday, September 23, 2010

GP and Management Reporter service packs

Dynamics GP 2010 service pack 1 was released today and Management Reporter 2.0 service pack 1 was released last week. Let the upgrading commence.

No company makes money on special orders

No company makes money on special orders. If a customer calls you and asks for a product that you don't stock, the best P&L decision you could make is to hang up the phone as quickly as possible.

Estimated costs of processing a purchase order vary between $50 and $300+ dollars. Lets use the low side of the range and assume a PO will cost your company $100. Even at 50% margin that means you should refuse all special orders under $200. But what if I combine it on another PO? Ok, what if the customer returns or refuses the item? Will you be able to return it to the vendor? Will it wander around your warehouse with no bin home until someone finally throws it away?

So I have come to the conclusion that the special order department should be a cost to the sales department. They are the only ones that have anything to gain from special orders through customer loyalty. If special orders are really important to your company, I am sure your salespeople will not mind the reduction in commission to fund the special order department.

While you are making changes in special orders, do some analysis on which customers use your special order service the most. Are they your best customers in sales and margin dollars or are they cherry picking you for your product research specialists?

In summary, I would like to stress the importance of tracking special order sales and costs separate from normal sales. Each sales order and PO related to a special order should be identifiable. In Dynamics GP, the sales orders should have a separate document ID and PO's should be committed to these orders. Use allocation accounts to apply shared expenses to the special order department to get a real picture of how much this service costs you.

Wednesday, September 22, 2010

Purchase Order Statuses

Dynamics GP has 6 statuses for purchase orders and purchase order line items:

New - The purchase order has been entered but not released to the vendor. Interestingly, new purchase orders do not update the on order quantity of an item but can be received against.

Released - The purchase order has been entered and released to the vendor. In a throwback to the 1970's, Dynamics GP considers a PO released to the vendor when printed. The printing process updates the on order quantity for the PO line items.

Received - Purchase order line items have been received but not fully invoiced.

Change Order - The purchase order was entered, released, and then changed but has not been re-released. Change order purchase orders can be received against but changes to quantities will not be reflected in the on order amounts until the PO is re-released (printed).

Cancelled - The purchase order has not been fully received or invoiced but no further activity is anticipated. For example, the purchase order was for 100 widgets and 99 have been received and invoiced. The PO would be cancelled if the receipt of the remaining 1 widget was not anticipated.

Closed - All line items on the PO have been received and invoiced or cancelled. These PO's can be removed from the system using the Remove Completed Purchase Orders window.

PO Commitments and Historical Sales Documents

A couple of my clients have experienced an interesting issue lately. Purchase order are tied to sales documents that are already moved to history. This puts the PO in a limbo state where it cannot be closed or cancelled. I don't know for sure the exact sequence of events that causes this but here is how it can be resolved:

1. Delete the records in the SOP60100 table related to the offending PO number. (Standard disclaimer about modifying SQL data applies here. If you are unfamiliar with SQL queries and/or Dynamics GP table structure, please call your partner for assistance.)

2. Reconcile the offending PO number.

3. Edit the PO and change the status to Cancelled.