Page 1 of 212

Archive for the ‘Inventory’ Category

Price Level Defaulting in SOP Entry

Recently, I was handling a support case, where the user raised an issue in the way the Price Level was defaulting in the Sales Transaction Entry window line. The issue is explained below.

I have a client whose standard pricing doesn’t seem to be working as expected, or at least as I thought it should.  They have price levels setup for their items, and they also have price levels setup for their customers.  Some customers get a special discount, and those are the ones who have price levels setup on the customer card.

So, an example would be item #1234 has several price levels, but a default price level = LEVEL 59
In addition, customer #ABCD has a Price Level assigned to their customer card of LEVEL 63

We expect the invoices (which are manually entered as Orders, then transferred to Invoice) to pull a price level of LEVEL 63.  When we manually create the order for Customer ABCD, the blank item line does default to LEVEL 63, but as soon as we type the item code #1234 in, the price level changes to LEVEL 59.

I tested this with a couple of items in the sample company, and I was not able to replicate it. So I decided to have a remote session with the user to understand what the issue was. Once I logged into the environment, I tested and noticed it happened as the user had mentioned. I disabled any customizations and still noted it happening. I then logged into the sample company on their environment to see if I was able to replicate it. However, the issue did not occur in the sample company.

image

Realizing it was either a configuration issue (or) a data issue, I started analyzing this further. Then when I opened the Price List Maintenance for the specific item, I noticed that the Price Level which was defined for the Customer (LEVEL 63) does not exist for the specific item. And the item had a default price level defined as LEVEL 59.

So what was happening on the Sales Transaction Entry line is this:

When the sales transaction is entered, the system checks if there is a price level defined at the customer level. If there is one, it defaults the price level defined in the customer master at the line item level. If there is no price level defined for the customer, the system defaults the line item price level defined from the Receivables Setup. If there is no price level defined in the Receivable Setup, the system leaves the line item price level as blank. When the item number is entered, and if the price list has been defined for the defaulted price level, the unit price is picked up from the price list. If there is no price list defined for the item for the defaulted price list, the system changes the price level on the sales transaction line to the default price level define for the item in the Price List Maintenance.

Hope this helps the community…

Until next post!

November 20, 2011 · veeyeskay · 3 Comments
Tags: , , , , , , , , , , , ,  · Posted in: Dynamics, Great Plains, Inventory, Sales Order Processing Total Views: 2,136

Selling Options in Item Price List Maintenance

I was recently assisting a customer who was getting the following error when trying to enter a quantity in the Sales Transaction Entry window for a specific item.

image

This message is because of an Selling Option setup which is defined for the specific item and unit of measurement in the Item Price List Maintenance window.

This is yet another option in GP, which goes unnoticed by many people. When you are on the Price List Maintenance window, you can click on the Options button to open the Item Price List Options Maintenance window.

image

In the options window, we can define the selling option for the various price list records defined for the specific item.

image

There are 3 options available for this.

  • Not Available – This indicates that the specific combination of Item, Price Level, Currency and U Of M cannot be entered in the Sales Transaction Entry.
  • Whole – This indicates that the quantity for the specific combination of Item, Price Level, Currency and U Of M can ONLY be entered in whole numbers (without decimal values) in the Sales Transaction Entry.
  • Whole and Fractional – This indicates that the quantity for the specific combination of Item, Price Level, Currency and U Of M can ONLY be entered in whole numbers and fractions in the Sales Transaction Entry.

In this case, the client had an item number defined with 2 decimal places, but had the Selling option for the specific combination as Whole, because of which the system did not allow the fractional quantity entered in the sales transaction.

With this said, there are a few more options on this window, which I would prefer to explain, so that it might benefit the community.

As you can see there are 3 more fields which are listed below.

  • Round Policy – This is used to define the direction of the rounding – whether Up, Down, Nearest or None.
  • Round Option – This defines the option of how the rounding value – whether it Ends in a specific number (or) if it rounds to the nearest multiple of the round amount specified.
  • Round Amount – This defines the number that will be used to determine the last number in the price.

These options are not available for an Item which has the Price Method as Currency Amount in the Price List Maintenance. There are enabled only if the Price Method is any of the ones mentioned below.

  • % of List Price
  • % Markup – Current Cost
  • % Markup – Standard Cost
  • % Margin – Current Cost
  • % Margin – Standard Cost

The round options are used to determine the price for an item when creating the price list record for the item as explained above.

Hope this helps the community…

Until next post!

August 12, 2011 · veeyeskay · 2 Comments
Tags: , , , , , , , ,  · Posted in: Dynamics, Great Plains, Inventory, Sales Order Processing Total Views: 2,260

Support Debugging Tool Customization #4 – U Of M Long Description on SOP Invoice

A recent support request was to add the U Of M Long Description on the SOP Blank Invoice Report. The situation explained was that the U Of M was just an abbreviation and the client was using the U Of M long Description to capture a meaningful description in the Unit Of Measure Schedule Setup window as shown below.

image

I have decided to post a customization code using Support Debugging Tool to achieve the same so that it will benefit the community.

Version Information

Dynamics GP : 11.0.1752 (SP2)

Support Debugging Tool : 11.00.0015

Screenshots of the Configuration

Create a Runtime Execute script block with the code given below with the script ID as UOMLONGDESC.

image

local string MBS_TableLineString;
local string MBS_Number;
local integer MBS_Type;
local currency MBS_SequenceOne;
local currency MBS_SequenceTwo;
local integer MBS_Control;
local string MBS_String;
 
local 'Item Number' l_ItemNumber;
local 'U Of M Schedule' l_UoMSchedule;
local 'U Of M' l_UoM;
local 'QTY In Base U Of M' l_QtyInBaseUoM;

local integer l_VirtualKey;
 
{Turn off the warning for literal strings}
pragma(disable warning LiteralStringUsed);
 
call with name "MBS_Param_Get" in dictionary 5261, "Number", MBS_Number;
call with name "MBS_Param_Get" in dictionary 5261, "Type", MBS_String;
set MBS_Type to integer(value(MBS_String));
call with name "MBS_Param_Get" in dictionary 5261, "SequenceOne", MBS_String;
set MBS_SequenceOne to currency(value(MBS_String));
call with name "MBS_Param_Get" in dictionary 5261, "SequenceTwo", MBS_String;
set MBS_SequenceTwo to currency(value(MBS_String));
call with name "MBS_Param_Get" in dictionary 5261, "Control", MBS_String;
set MBS_Control to integer(value(MBS_String));
set MBS_TableLineString to "";
 
{ Add your code below here }
release table SOP_LINE_WORK;
clear table SOP_LINE_WORK;
set 'SOP Number' of table SOP_LINE_WORK to MBS_Number;
set 'SOP Type' of table SOP_LINE_WORK to MBS_Type;
set 'Component Sequence' of table SOP_LINE_WORK to MBS_SequenceTwo;
set 'Line Item Sequence' of table SOP_LINE_WORK to MBS_SequenceOne;
get table SOP_LINE_WORK by number 1;
if err() = OKAY then
	set l_ItemNumber to 'Item Number' of table SOP_LINE_WORK;
	set l_UoM to 'U Of M' of table SOP_LINE_WORK;
	set l_QtyInBaseUoM to 'QTY In Base U Of M' of table SOP_LINE_WORK;
	release table IV_Item_MSTR;
	clear table IV_Item_MSTR;
	set 'Item Number' of table IV_Item_MSTR to l_ItemNumber;
	get table IV_Item_MSTR by number 1;
	if err() = OKAY then
		set l_UoMSchedule to 'U Of M Schedule' of table IV_Item_MSTR;
		assign l_VirtualKey as key for table IV_UofM_SETP_DTL with KEY_OPTION_ALLOW_DUPLICATES using 'U Of M Schedule' of table IV_UofM_SETP_DTL,
			'U Of M' of table IV_UofM_SETP_DTL, 'QTY In Base U Of M' of table IV_UofM_SETP_DTL;
		release table IV_UofM_SETP_DTL;
		clear table IV_UofM_SETP_DTL;
		set 'U Of M Schedule' of table IV_UofM_SETP_DTL to l_UoMSchedule;
		set 'U Of M' of table IV_UofM_SETP_DTL to l_UoM;
		set 'QTY In Base U Of M' of table IV_UofM_SETP_DTL to l_QtyInBaseUoM;
		get table IV_UofM_SETP_DTL by number l_VirtualKey;
		if err() = OKAY then
			set MBS_TableLineString to 'U Of M Long Description' of table IV_UofM_SETP_DTL;
		end if;
	end if;
end if;
{ Add your code above here }
 
call with name "MBS_Param_Set" in dictionary 5261, "TableLineString", MBS_TableLineString;
 
{Turn off the warning for literal strings}
pragma(enable warning LiteralStringUsed);

Then modify the SOP Blank Invoice Report and create the following Calculated Fields.

Calculated Field Name : Component Sequence

2011-08-07_222021

Calculated Field Name : Line Item Sequence

2011-08-07_222035

And then finally create a calculated for the U Of M Long Description which calls the custom Report Writer function for which we have created the script block above.

Calculated Field Name : U Of M Long Description

2011-08-07_222111

The formula for this calculated field is as shown below.

FUNCTION_SCRIPT(  rw_TableLineString  5261  “UOMLONGDESC”  SOP_LINE_WORK.SOP Number  SOP_LINE_WORK.SOP Type  (C) Line Item Sequence  (C) Component Sequence  1  )

where (C) Line Item Sequence is the calculated field which we have created for the Line Item Sequence and (C) Component Sequence is the calculated field which we have created for the Component Sequence field.

Note: The reason why we create calculated for these two fields is because these two parameters of the custom rw_TableLineString function are of the type currency and the line item sequence fields are long integers, which is not accepted by the above function.

Once the calculated field is created, we can add it in the appropriate line item space in the SOP Blank Invoice report to get the desired results.

Reference

Take a look at the article below which summarizes the usage of Support Debugging Tool with some real life examples. Great compilation by David! http://blogs.msdn.com/b/developingfordynamicsgp/archive/2011/08/05/using-the-support-debugging-tool-with-real-life-examples.aspx

Hope this helps the community…

Until next post!

August 8, 2011 · veeyeskay · 4 Comments
Tags: , , , , , , , , ,  · Posted in: Customizations, Dynamics, Great Plains, Inventory, Sales Order Processing, Support Debugging Tool Total Views: 1,391

Calculating Quantity on Hand in Inventory

Recently, I was assisting a community member on the forum, who was trying to reconcile the Quantity on Hand in the Item Inquiry window. Ideally, the simplest check to validate the Quantity on Hand for a particular item would be to get the transaction details from the Inventory Transaction Amounts History (IV30300) table, manipulate the incoming stock and the outgoing stock and arrive at the Quantity on Hand for a particular Item – Site combination.

I have posted a simple query here to validate the same below.

/******************************************************************
Created August 03, 2011 by Sivakumar Venkataraman - Interdyn AKA
This view is for the reconcile the quantity on hand for a
specific item site combination from the transaction history tables.
 
Tables used:
 - IV30300 - Inventory Transaction Amounts History
 - IV00102 - Item Quantity Master
 ******************************************************************/
SELECT A.ITEMNUMBER ,
        A.LOCATION ,
        B.QTYONHND AS QUANTITYONHAND ,
        SUM(A.QUANTITY) AS QUANTITY
    FROM (
          SELECT ITEMNMBR AS ITEMNUMBER ,
                TRXLOCTN AS LOCATION ,
                TRXQTY AS QUANTITY
            FROM dbo.IV30300
            WHERE DOCTYPE <> 3
          UNION ALL
          SELECT ITEMNMBR AS ITEMNUMBER ,
                TRXLOCTN AS LOCATION ,
                (TRXQTY * -1) AS QUANTITY
            FROM dbo.IV30300
            WHERE DOCTYPE = 3
          UNION ALL
          SELECT ITEMNMBR AS ITEMNUMBER ,
                TRNSTLOC AS LOCATION ,
                (TRXQTY) AS QUANTITY
            FROM dbo.IV30300
            WHERE DOCTYPE = 3
         ) A
        INNER JOIN IV00102 B
        ON A.ITEMNUMBER = B.ITEMNMBR
           AND A.LOCATION = B.LOCNCODE
    GROUP BY A.ITEMNUMBER ,
        A.LOCATION ,
        B.QTYONHND
    ORDER BY A.ITEMNUMBER ,
        A.LOCATION ,
        B.QTYONHND

Hope this helps the community…

Until next post!

August 4, 2011 · veeyeskay · One Comment
Tags: , ,  · Posted in: Dynamics, Great Plains, Inventory Total Views: 2,960

Mass Update Purchase Order Generator Options for Items

As a follow-up to my previous article on Unit Cost of an Item using PO Generator, which I had posted yesterday, this article explains an option to mass update the PO Generator options for many items at once.

This can be achieved using the Purchase Order Item Mass Update window which opens from Microsoft Dynamics GP menu >> Utilities >> Inventory >> Purchase Order Item Mass Update and Cards >> Inventory >> Item Resource Planning >> Enter or Select an Item >> PO Gen Item Button >> Mass Update Button.

image

Using this window, the user can update the following PO Generator options for a range of items which can be filtered based on the ranges specified on Item Number, Site ID, Class ID and Generic Description.

  • Order Method
  • Replenishment Level
  • Vendor Selection
  • Cost Selection
  • Allocation Options
  • Back Order Options
  • Requisition Options

Hope this helps the community folks…

Until next post!

August 3, 2011 · veeyeskay · One Comment
Tags: , , , , , , , , , ,  · Posted in: Dynamics, Great Plains, Inventory, Purchase Order Processing Total Views: 1,727

Unit Cost of an Item using PO Generator

Yesterday, I was responding to a support ticket where the unit cost was coming as $0 for an item-site combination when using PO Generator.

Ideally there are quite a few options available for cost selection for an item-site combination when using the Purchase Order Generator module. It can be found from the Purchase Order Generator Item Maintenance window which can be opened from Cards >> Inventory >> Item Resource Planning >> Enter or Select an Item >> PO Gen Item button.

image

Note: The options on tis window is enabled ONLY if we have selected the Order Policy on the Item Resource Planning window for the specific item and site combination as “Use PO Gen”.

image  

The various options for cost selection for the item-site combination are

  • Vendor Last Originating Invoice Cost – The cost on the suggested purchase order should be the cost from the most recent invoice from the vendor for the item.
  • Item Current Cost – The cost on suggested purchase orders should come from the Current Cost from the Item Maintenance window.
  • Item Standard Cost – The cost on suggested purchase orders should come from the Standard Cost from the Item Maintenance window.
  • Specified Cost – The cost on suggested purchase orders should be an amount you enter. If you choose Specified Cost, enter the cost in functional currency. (If this cost is left as $0, the unit cost when the PO is generated will default to $0 for this item.

image

We can also verify the other options for the item (for the purchase order generation) on this window and make changes as necessary.

Hope this helps the community…

Until next post!

August 2, 2011 · veeyeskay · 2 Comments
Tags: , , ,  · Posted in: Dynamics, Great Plains, Inventory, Purchase Order Processing Total Views: 1,449

Editing Lot Number Attributes After Posting

Recently, I had seen a request from one of our clients who had asked us if the lot number attributes can be edited after the receiving transactions have been posted. This could be needed when there was an issue with the expiry date (or) the manufacturing date (or) any of the other attributes which are tracked for the specific lot.

There is an out of the box functionality for this purpose. We can use the Edit Lot Number Attributes window which opens from Microsoft Dynamics GP menu >> Utilities >> Inventory >> Edit Lot Number Attributes.

2011-08-01_123132

The user can enter the Item Number and the Lot Number and edit any of the attributes that have been defined for the specific lot, even after the document has been posted.

Hope this is helpful to the community…

Until next post!

August 1, 2011 · veeyeskay · 6 Comments
Tags: , , , ,  · Posted in: Dynamics, Great Plains, Inventory, Purchase Order Processing Total Views: 2,428