Microsoft Great Plains is one of three Microsoft Business Solutions mid-market ERP products: Great Plains, Solomon, Navision. Considering that Great Plains is now very good candidate for integration with POS application, such as Microsoft Retail Management System or RMS and Client Relation Systems, such as Microsoft CRM ? there is common need in Great Plains customizations and integrations, especially on the level of MS SQL Server transact SQL queries and stored procedures.
In this small article we'll show you how to create auto-apply utility, when you integrate huge number of sales transactions and payments. We will be working with RM20101 ? Receivables Open File and RM20201 ? Receivables Apply Open File.
Let's see SQL code:
declare @curpmtamt numeric(19,5)
declare @curinvamt numeric(19,5)
declare @curpmtnum varchar(20)
declare @curinvnum varchar(20)
declare @curinvtype int
declare @curpmttype int
declare @maxid int
declare @counter int
-- Create a temporary table
create table #temp
(
[ID] int identity(1,1) primary key,
CUSTNMBR varchar(15),
INVNUM varchar(20),
INVTYPE int,
PMTNUM varchar(20),
PMTTYPE int,
INVAMT numeric(19,5),
PMTAMT numeric(19,5),
AMTAPPLIED numeric(19,5)
)
create index IDX_INVNUM on #temp (INVNUM)
create index IDX_PMTNUM on #temp (PMTNUM)
-- Insert unapplied invoices and payments
insert into #temp
(
CUSTNMBR,
INVNUM,
INVTYPE,
PMTNUM,
PMTTYPE,
INVAMT ,
PMTAMT,
AMTAPPLIED
)
select
CUSTNMBR = a.CUSTNMBR,
INVNUM = b.DOCNUMBR,
INVTYPE = b.RMDTYPAL,
PMTNUM = a.DOCNUMBR,
PMTTYPE = a.RMDTYPAL,
INVAMT = b.CURTRXAM,
PMTAMT = a.CURTRXAM,
AMTAPPLIED = 0
from RM20101 a
join RM20101 b on (a.CUSTNMBR = b.CUSTNMBR)
join RM00101 c on (a.CUSTNMBR = c.CUSTNMBR)
where
a.RMDTYPAL in (7, 8, 9) and
b.RMDTYPAL in (1, 3) and
a.CURTRXAM 0 and
b.CURTRXAM 0
order by
a.custnmbr,
b.DOCDATE,
a.DOCDATE,
a.DOCNUMBR,
b.DOCNUMBR
-- Iterate through each record
select @maxid = max([ID])
from #temp
select @counter = 1
while @counter = @curpmtamt) and (@curpmtamt>0) and (@curinvamt>0)-- if the invoice amount is greater or the same as the payment amount
begin
select @curinvamt = @curinvamt - @curpmtamt -- invoice amount remaining
-- update with the amount that is applied to the current invoice from
-- the current payment
update #temp
set
AMTAPPLIED = @curpmtamt
where
[ID] = @counter
-- update with amount of invoice remaining
update #temp
set
INVAMT = @curinvamt
where
INVNUM = @curinvnum and
INVTYPE = @curinvtype
-- update with amount of payment remaining
update #temp
set
PMTAMT = 0
where
PMTNUM = @curpmtnum and
PMTTYPE = @curpmttype
end
else if (@curinvamt 0) and (@curinvamt>0)-- if the invoice amount is lesser to the payment amount
begin
select @curpmtamt = @curpmtamt - @curinvamt -- payment amount remaining
-- update with the amount that is applied to the current invoice from
-- the current payment
update #temp
set
AMTAPPLIED = @curinvamt
where
[ID] = @counter
-- update with amount of invoice remaining
update #temp
set
INVAMT = 0
where
INVNUM = @curinvnum and
INVTYPE = @curinvtype
-- update with amount of payment remaining
update #temp
set
PMTAMT = @curpmtamt
where
PMTNUM = @curpmtnum and
PMTTYPE = @curpmttype
end
-- go to the next record
select @counter = @counter + 1
end
-- update the RM Open table with the correct amounts
update
RM20101
set
CURTRXAM = b.INVAMT
from
RM20101 a
join #temp b on (a.DOCNUMBR = b.INVNUM and a.RMDTYPAL = b.INVTYPE)
update
RM20101
set
CURTRXAM = b.PMTAMT
from
RM20101 a
join #temp b on (a.DOCNUMBR = b.PMTNUM and a.RMDTYPAL = b.PMTTYPE)
-- create the RM Apply record or update if records already exist
update
RM20201
set
DATE1 = convert(varchar(10), getdate(), 101),
GLPOSTDT = convert(varchar(10), getdate(), 101),
APPTOAMT = APPTOAMT + a.AMTAPPLIED,
ORAPTOAM = ORAPTOAM + a.AMTAPPLIED,
APFRMAPLYAMT = APFRMAPLYAMT + a.AMTAPPLIED,
ActualApplyToAmount = APFRMAPLYAMT + a.AMTAPPLIED
from
#temp a
join RM20101 b on (b.DOCNUMBR = a.INVNUM and b.RMDTYPAL = a.INVTYPE)
join RM20101 c on (c.DOCNUMBR = a.PMTNUM and c.RMDTYPAL = a.PMTTYPE)
join RM20201 d on (d.APFRDCTY = a.PMTTYPE and
d.APFRDCNM = a.PMTNUM and
d.APTODCTY = a.INVTYPE and
d.APTODCNM = a.INVNUM)
where
a.AMTAPPLIED 0
insert into RM20201
(CUSTNMBR,
DATE1,
GLPOSTDT,
POSTED,
APTODCNM,
APTODCTY,< /p>
APTODCDT,
ApplyToGLPostDate,
CURNCYID,
CURRNIDX,
APPTOAMT,
ORAPT OAM,
APFRDCNM,
APFRDCTY,
APFRDCDT,
ApplyFromGLPostDate,
FROMCURR,
< p>APFRMAPLYAMT,ActualApplyToAmount)
select
CUSTNMBR = a.CUSTNMBR,
DATE1 = convert(varchar(10), getdate(), 101),
GLPOSTDT = convert(varchar(10), getdate(), 101),
POSTED = 1,
APTODCNM = a.INVNUM,
APTODCTY = a.INVTYPE,
APTODCDT = b.DOCDATE,
ApplyToGLPostDate = b.GLPOSTDT,
CURNCYID = b.CURNCYID,
CURRNIDX = '',
APPTOAMT = a.AMTAPPLIED,
ORAPTOAM = a.AMTAPPLIED,
APFRDCNM = a.PMTNUM,
APFRDCTY = a.PMTTYPE,
APFRDCDT = c.DOCDATE,
ApplyFromGLPostDate = c.GLPOSTDT,
FROMCURR = c.CURNCYID,
APFRMAPLYAMT = a.AMTAPPLIED,
ActualApplyToAmount = a.AMTAPPLIED
from
#temp a
join RM20101 b on (b.DOCNUMBR = a.INVNUM and b.RMDTYPAL = a.INVTYPE)
join RM20101 c on (c.DOCNUMBR = a.PMTNUM and c.RMDTYPAL = a.PMTTYPE)
where
a.AMTAPPLIED 0 and
not exists (select 1
from RM20201 d
where d.APFRDCTY = a.PMTTYPE and
d.APFRDCNM = a.PMTNUM and
d.APTODCTY = a.INVTYPE and
d.APTODCNM = a.INVNUM)
drop table #temp
About The Author
Andrew Karasev is Chief Technology Officer in Alba Spectrum Technologies ? USA nationwide Great Plains, Microsoft CRM customization company, with offices in Chicago, San Francisco, Los Angeles, San Diego, Phoenix, Houston, Miami, Atlanta, New York, Madrid, Brazil, Moscow ( http://www.albaspectrum.com), you can reach Andrew 1-866-528-0577, he is Dexterity, SQL, C#.Net, Crystal Reports and Microsoft CRM SDK developer; http://www.albaspectrum.com
weekly home cleaning Highland Park ..We will base our prognosis on our Microsoft Business Solutions... Read More
I love new technology. I am still ready to wait... Read More
Microsoft Business Solutions ? Navision is an integrated solution for... Read More
In the new era of internet marketing the problem of... Read More
Is your PC is slow and wimpy? Then you need... Read More
I have always had a tendency to focus on the... Read More
With the advent of 'Service Pack 2' for Windows XP... Read More
Are you ready? SQL Server 2005, the next-generation data management... Read More
Microsoft Business Solutions CRM data conversion deserves FAQ type of... Read More
We are in a transition phase in the Managerial Administration... Read More
C/SIDE (Client/Server Integrated Development Environment) - The core of... Read More
Remember nice and prosperous Clinton era? When you implemented innovative... Read More
Logistics automation is often considered as barcoding extension to Sales... Read More
Microsoft Great Plains has substantial mid-market share in the USA... Read More
What is installation in the language of technology? Installation... Read More
One day, you suddenly realize that your computer started to... Read More
This is intermediate level SQL scripting article for DB Administrator,... Read More
Microsoft bought Navision, Denmark based software development company, along with... Read More
This article is the fourth of a series of articles... Read More
Introduction To ISDN, Part III: Configuring PPP PAP AuthenticationNow we... Read More
We all take the computer for granted. I mean, all... Read More
Microsoft Business Solutions Great Plains has I'd say end user... Read More
Great Plains Inventory Management (IV) module gives your business a... Read More
Although statistics often is blamed for various deadly sins --... Read More
If you have Microsoft Great Plains and support it for... Read More
whole house cleaning Park Ridge ..In linux, one of great commands for finding out information... Read More
Looks like Microsoft Great Plains becomes more and more popular,... Read More
In order to meet regulatory and corporate compliance requirements reporting... Read More
As Mozilla Firefox nears 10% market share, with well over... Read More
Usually workflow & messaging is realized in CRM and then... Read More
With thousands of web pages added to the Net every... Read More
To all web designers out there, this article is for... Read More
Microsoft CRM is relatively new player on the now becoming... Read More
With this small article we are continuing Microsoft Business Solutions... Read More
"Pfishing", sometimes spelled "Phishing", is a word that's used to... Read More
When my daughter was getting into AOL instant messaging (AIM)... Read More
Upgrading. Downtime. Maintenance. Hardware obsolescence. Implementation issues. The litany of... Read More
Microsoft Great Plains and Microsoft Retail Management System (Microsoft RMS)... Read More
We would like first emphasize the change in the paradigm.... Read More
Shareware is software that you can try before you buy;... Read More
An integral part of any quality CRM system is lead... Read More
Ok... Where to start?Well, I guess I will start at... Read More
As seeing large number of implementations ? in our case... Read More
Microsoft Client Relation Management system (Microsoft CRM) and Microsoft RMS... Read More
GroupwareEfforts are continually made to manage the unavoidable ad hoc... Read More
Microsoft-Outlook is a pretty amazing program. So much more than... Read More
Looks like Microsoft Great Plains becomes more... Read More
In our small article we'll consider Microsoft Business Solutions Great... Read More
This tutorial covers OLAP solutions used by Data warehouses and... Read More
When you double-click a layer in the Layer Palette, you... Read More
Software |