Automating the process of Creating Purchase Order from Sales Order

Posted by Rajeev Gupta on Wednesday, 2 November, 2011

You create purchase order from your sales order. You do it every time if you are in certain in industry. But why doesn’t accounting systems let you automate it?

We saw this behavior in many accounting application from – QuickBooks to Intacct and Microsoft Dynamics GP (aka GreatPlains).

We ran into this requirement with quite a few times and ended up using our DBSync application to build out these automated processes.

Here are some of the use cases
1. CRM application creates an opportunity
2. Opportunity flows into accounting as a Sales Order
3. Invoices can be created from these Sales Orders
4. Purchase Orders can be created using the Sales Order

To create Purchase Orders, you will need to make sure that all items have associated item vendors in it and in certain accounting applications, it should also need to be “Purchased” and not in stock.

In most of accounting system, you will have to read Sales Orders (SO) and translate to Purchase Orders (PO). Fortunately Microsoft Dynamics GP (GreatPlains) makes it easy for it when using with eConnect API. Microsoft Dynamics provides a SOP Transaction for creating PO from Sales Order (nice !!!). There seems to be a misconception in GP community that taSopToPopLink only links the two documents which is not true. It actually does create the PO for you.

The following eConnect XML request creates PO from a Sales Order (SOPNUMBE)

<eConnect xmlns:dt=”urn:schemas-microsoft-com:datatypes”>

<SOPTransactionType>
<taSopToPopLink>
<SOPTYPE>2</SOPTYPE>
<SOPNUMBE>000002</SOPNUMBE>
</taSopToPopLink>
</SOPTransactionType>
</eConnect>

Once you run it, you get back true or false (with error). Error is quite self descriptive for you to trouble shoot it.

You can find the records in POP10100 (header) and POP10110 (line item).

Hope to post the video of it working in due course. Hope this article helps.

Enjoy integrating…


Quickfix: Issues with upgrading or installing Microsoft Dynamics GP 2010

Posted by Rajeev Gupta on Tuesday, 25 October, 2011

We ran into a problem with upgrading to Microsoft Dynamics GP 2010 and did not find much documentation to solve it.

We were consistently getting error at

The following SQL statement produced an error:
CREATE VIEW GL10000CurrencyTranslationView AS select [GL10000Final].[OPENYEAR], [GL10000Final].[ACTINDX], [GL10000Final].[CRDTAMNT], [GL10000Final].[DEBITAMT], [GL10000Final].[ORCRDAMT], [GL10000Final].[ORDBTAMT], [GL10000Final].[TRXDATE], [GL10000Final].[DSCRIPTN], ...

After looking under the hood we ran the following 2 scripts to get over it -
Script 1

GO

SET ANSI_NULLS OFF
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING OFF
GO

CREATE TABLE [dbo].[MC40600](
[CURNCYID] [char](15) NOT NULL,
[CurrentExchangeTableID] [char](15) NOT NULL,
[HistoricalExchgTableID] [char](15) NOT NULL,
[AverageExchangeTableID] [char](15) NOT NULL,
[BudgetExchangeTableID] [char](15) NOT NULL,
[DEX_ROW_ID] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PKMC40600] PRIMARY KEY NONCLUSTERED
(
[CURNCYID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

Script 2

GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER OFF
GO

CREATE VIEW [dbo].[GL10000CurrencyTranslationView] AS select [GL10000Final].[OPENYEAR], [GL10000Final].[ACTINDX], [GL10000Final].[CRDTAMNT], [GL10000Final].[DEBITAMT], [GL10000Final].[ORCRDAMT], [GL10000Final].[ORDBTAMT], [GL10000Final].[TRXDATE], [GL10000Final].[DSCRIPTN], [GL10000Final].[REFRENCE], [GL10000Final].[CURNCYID], [GL10000Final].[Original_Exchange_Rate], [GL10000Final].[JRNENTRY], [GL10000Final].[TRXSORCE], [GL10000Final].[SOURCDOC], [GL10000Final].[ORDOCNUM], [GL10000Final].[ORTRXSRC], [GL10000Final].[ORMSTRID], [GL10000Final].[ORMSTRNM], [GL10000Final].[ORTRXTYP], [GL10000Final].[SERIES], [GL10000Final].[VOIDED], [GL10000Final].[Ledger_ID], [GL10000Final].[TranslationCurrencyID], [GL10000Final].[CurrencyTranslationType], [GL10000Final].[PERDENDT], [GL10000Final].[TranslationExchangeRate], case GL10000Final.CRDTAMNT when 0.0 then 0.0 else dbo.mcFuncCalculateAmountExtended([GL10000Final].[RTCLCMTD], 3, [GL10000Final].[TranslationExchangeRate], [GL10000Final].[DENXRATE], [GL10000Final].[MCTRXSTT], [GL10000Final].[DECPLCUR], [GL10000Final].[CRDTAMNT]) end as TranslationCreditAmount, case GL10000Final.DEBITAMT when 0.0 then 0.0 else dbo.mcFuncCalculateAmountExtended([GL10000Final].[RTCLCMTD], 3, [GL10000Final].[TranslationExchangeRate], [GL10000Final].[DENXRATE], [GL10000Final].[MCTRXSTT], [GL10000Final].[DECPLCUR], [GL10000Final].[DEBITAMT]) end as TranslationDebitAmount, [GL10000Final].[SequenceNumber], [GL10000Final].[PERIODID], [GL10000Final].[CURRNIDX], [GL10000Final].[DECPLCUR], [GL10000Final].[RATETPID], [GL10000Final].[EXGTBLID], [GL10000Final].[EXCHDATE], [GL10000Final].[TIME1], [GL10000Final].[RTCLCMTD], [GL10000Final].[DENXRATE], [GL10000Final].[MCTRXSTT], [GL10000Final].[Adjustment_Transaction] from (select distinct [GL_TRX_WORK].[OPENYEAR], [GL_TRX_WORK].[ACTINDX], [GL_TRX_WORK].[CRDTAMNT], [GL_TRX_WORK].[DEBITAMT], [GL_TRX_WORK].[ORCRDAMT], [GL_TRX_WORK].[ORDBTAMT], [GL_TRX_WORK].[TRXDATE], [GL_TRX_WORK].[DSCRIPTN], [GL_TRX_WORK].[REFRENCE], [GL_TRX_WORK].[CURNCYID], [GL_TRX_WORK].[XCHGRATE] as Original_Exchange_Rate, [GL_TRX_WORK].[JRNENTRY], [GL_TRX_WORK].[TRXSORCE], [GL_TRX_WORK].[SOURCDOC], [GL_TRX_WORK].[ORDOCNUM], [GL_TRX_WORK].[ORTRXSRC], [GL_TRX_WORK].[ORMSTRID], [GL_TRX_WORK].[ORMSTRNM], [GL_TRX_WORK].[ORTRXTYP], [GL_TRX_WORK].[SERIES], [GL_TRX_WORK].[VOIDED], [GL_TRX_WORK].[Ledger_ID], [GL_TRX_WORK].[TranslationCurrencyID], [GL_TRX_WORK].[CurrencyTranslationType], [GL_TRX_WORK].[PERDENDT], F.XCHGRATE as TranslationExchangeRate, [GL_TRX_WORK].[SQNCLINE] as SequenceNumber, [GL_TRX_WORK].[PERIODID], E.[CURRNIDX], (E.[DECPLCUR]-1) as DECPLCUR, [GL_TRX_WORK].[RATETPID], [GL_TRX_WORK].[EXGTBLID], F.[EXCHDATE], F.[TIME1], D.[RTCLCMTD], dbo.mcFuncGetDenExchRate(GL_TRX_WORK.TranslationCurrencyID,D.RTCLCMTD) as DENXRATE, [GL_TRX_WORK].[MCTRXSTT], [GL_TRX_WORK].[Adjustment_Transaction] from DYNAMICS..MC40200 E, DYNAMICS..MC40300 D cross apply (select e.YEAR1 as OPENYEAR,a.JRNENTRY,a.SOURCDOC,a.REFRENCE,f.DSCRIPTN,a.TRXDATE, a.TRXSORCE,f.ACTINDX,a.SERIES,f.ORTRXTYP,f.ORMSTRID,f.ORMSTRNM, f.ORDOCNUM,a.ORTRXSRC,a.SQNCLINE,a.CURNCYID,b.CURNCYID as TranslationCurrencyID, a.CURRNIDX,a.RATETPID,b.ExchangeTableID as EXGTBLID,a.XCHGRATE, a.EXCHDATE,a.TIME1,a.RTCLCMTD,dbo.glFuncGetPeriodID(a.TRXDATE,a.OPENYEAR,2) as PERIODID,f.CRDTAMNT,f.DEBITAMT,f.ORCRDAMT,f.ORDBTAMT, e.PERDENDT, dbo.mcFuncGetMCTrxState(b.CURNCYID) as MCTRXSTT,b.CurrencyTranslationType, a.VOIDED,a.Ledger_ID, a.Adjustment_Transaction, case b.CurrencyTranslationType when 1 then e.PERDENDT when 3 then a.TRXDATE end as ExchangeRateDate from GL10000 a, GL10001 f, (select c.ACTINDX,b.CURNCYID, ExchangeTableID= case CurrencyTranslationType when 1 then b.AverageExchangeTableID when 3 then b.HistoricalExchgTableID end, c.CurrencyTranslationType from MC00200 c,MC40600 b where c.CURNCYID='' and c.CurrencyTranslationType<>2) b, (select distinct b.PERIODID, a.YEAR1,a.FSTFSCDY,a.LSTFSCDY, b.PERIODDT,b.PERDENDT from SY40101 a, SY40100 b where a.YEAR1=b.YEAR1 and b.SERIES=2) e where a.JRNENTRY=f.JRNENTRY and f.ACTINDX=b.ACTINDX and a.PERIODID=e.PERIODID and e.YEAR1=e.YEAR1 and a.TRXDATE >=e.FSTFSCDY and a.TRXDATE <=e.LSTFSCDY) GL_TRX_WORK cross apply dbo.mcFuncGetExchangeRateTable(GL_TRX_WORK.ExchangeRateDate, GL_TRX_WORK.EXGTBLID, D.TRXDTDEF, D.DATELMTS,D.PRVDSLMT,D.Base_Exchange_Rate_On,GL_TRX_WORK.MCTRXSTT) F where GL_TRX_WORK.EXGTBLID = D.EXGTBLID and D.CURNCYID=E.CURNCYID) GL10000Final
GO

This got us past this hurdle.

Hope this helps you get started with Microsoft Dyanamics GP 2010.


Integrate eCommerce with Accounting Apps like Intacct

Posted by Rajeev Gupta on Tuesday, 20 September, 2011
Is your eCommerce application disconnected with your accounting application like Intacct or others? You are not alone in going through this pain !!!

As you grow into your business, you add applications. You start off with Quickbooks, then add eCommerce applications and more as you start to organize your business and life. Then you realize “Geez” I have all these data all across and I am sitting down copying data from one application to the other, reconciling payments and more. Every business we have spoken to have its own story…

While we are trying to address most of these issues, lately we have received a lot of interest in our Intacct Integration Connector. Intacct themselves provide Salesforce.com integration with a pre-built setup, works for most case and does not in others. But a bigger problem is integrating with existing in-house application like Shopping carts and others. If you look at the Intacct ecosystem, there are not many, actually none which are cost effective.

We had a similar experience with one of our prospects and we recorded our session to show you all how we can easily use DBSync to integrate with in-house databases. We have also used the same mechanism to integrate with other CRM’s like SugarCRM and vTiger. We hope you find this informative.

This is a two part YouTube video.

Part 1:

Part 2:

Please feel free to contact us if you have any questions. You can also register at www.mydbsync.com to get access to our Wiki for more examples.


Integrating – when to use Sales Order or Invoice?

Posted by Rajeev Gupta on Friday, 1 July, 2011

Many of our customers are not use on how best to streamline business process between CRM like Salesforce.com or Microsoft CRM or eCommerce or shopping carts with accounting systems like Quickbooks, Intacct or Microsoft Dynamcs GP.

A “typical” business flow is like


Opportunity -> Estimate/Quotes  ->Sales Order -> Invoice ->Credit

Here is how they should think about it -

Do you carry inventory?

If Yes (manufacturing, retail etc)

Holding inventory has a all sort of new ounces to worry about like managing adequate Inventory levels, supply chain – remember – holding inventory is not a good idea as it locks up working capital. From a standpoint of online orders or CRM Opportunity integration, they should always use “Sales Order”. Here are some are benefits -

  • Sales Order does not hit GL and usually is a “notification” for fulfillment to deliver
  • As you ship or deliver goods, you can generate multiple Invoices against a Sales Order
  • Sales Order will deduct from inventory but not necessarily commit shipped on Inventory. This gives you a better count of inventory on hand vs commited.

So the recommendation is

Opportunity -> Quotes -> Sales Order -> Invoice (on or more) -> Credits or RMA (Return Merchandise)

If No (Services companies, Professional Services, Consulting etc)

You deal with people most of the time and billing is usually a function of scope of work or time spent.  Normally you would have many contract terms on billing as mile stone based, retainers and others. So in your case you can have multiple setups of invoicing and would trigger at different times.

  • If you receive retainers, you can apply towards an Asset account and as you invoice it, move it from the asset account to the income account
  • You can use Estimate to hold the hours allocated
  • Invoices (and PO or Bills on AP if you are sub contracting) can be generated from Time & Expense modules
  • The same can be done if you invoice based on milestones. You can deduct hours or Unit of work against your Estimate towards invoicing

So the recommendation is

Opportunity -> Estimate (hold hours) -> Invoice (invoice on spent time on milestone and track against Estimate) -> Credits

These are some simple rule of thumb when designing your business process flow. Hope this helps our audience.


QuickBooks Online benefits for nonprofit organizations

Posted by Manjunatha G on Tuesday, 8 March, 2011

Have you ever imagined few years back that our world would see faster changes in technology front with newer and better products and features? Yes, let’s accept the fact that we are in world with fast changes in technology right from accounting software to various payment modes by customers and organizations.

All nonprofit organization are run by donations made by its members and non members in various modes of payments like cheques, credit card, debit card, mobile banking, online banking, PayPal & other modes.  Currently QuickBooks online edition accepts payments only through credit card payment by its donors, members & non members.

Reasons why QuickBooks should incorporate these features in QuickBooks online edition

  • Higher ROI (Return on Investment) – All nonprofit organization either small or large look for return on investment as they rely only on donations. If these latest payments modes are automated rather than manually entering them it would reduce a substantial amount of time and money for the organization
  • Lower TCO (Total cost of ownership) – Most accounting software vendors like QuickBooks and others would always reply on lower TCO for their customer to be more competitive in the market. By these features automated payments modes the cost of ownership would reduce drastically for customers

We would soon see a world without any cheque payments either by organizations or customers. To be in tandem with the changes in payment modes by customers and organizations QuickBooks need to incorporate these features as quickly as possible in QuickBooks online edition to be ahead of its competition and being a next generation company for its customers.


QuickBooks Sales & Inventory forecasting made easy…

Posted by Rajeev Gupta on Monday, 4 October, 2010

Sales and Inventory forecasting is a limitation for QuickBooks … Lokad to the rescue…

DBSync for Lokad - Sales forcasting made easy

DBSync for Lokad - Sales forcasting made easy

DBSync has partnered with Lokad to provide an amazing sales forecasting solution. In about 20 miniutes, you can extract years of sales data from your QuickBooks directly into Lokad’s Salescast applicaiton and get your forecast.

  • Manage inventory by understanding your safety stock levels and trends
  • Identify trends in sales, inventory and more
  • Reduce cost by reducing capital stuck up in your inventory

Our solution now can un-lock valuable QuickBooks data and provide actionable business intelligence.

To learn more, check out our Lokad and QuickBooks integration offerings. Call us to see all the amazing things we can get out of your accounting data.

Read more at Lokad Blog to see how to setup and get started.


Salesforce Product Schedules & Recurring Invoicing

Posted by Rajeev Gupta on Monday, 12 July, 2010

Integration with Salesforce.com Product Schedules is now available !!!

Lot of customers have been asking us for supporting Product Schedule for recurring invoicing and billing, and now we have the support for it.

Who would benefit from it

  • Firms providing Software Subscriptions based products and services.
  • Publication firms – magazine, online content, elearning etc
  • Services companies providing utilities like waste management, telecom, insurance, day care and others
  • Healthcare firms providing on-going services like weight management, home-health and others

How does it work

  • Setup your product schedule as you would normally setup in Salesforce. Setup your dates and occurrences
  • Setup up scheduler to run every day, week or month. The scheduler provided calculates the next invoice date and updates the next invoice date (custom) field in Opportunity. Use a workflow to update the Generate flag for next invoice.
  • You are done!!! DBSync will pickup all invoices as the dates come due and will generate Invoice, Sales Order, Sales Receipt as per Generate Field in opportunity.
  • This setup can easily be extended to address most of the business processes around recurring invoice payments.

Installation:

  • Login to DBSync
  • Click on Library
  • Add the process library for Recurring template and use the installation document to install the application.
  • Once you install the application, setup the scheduler provided in the installation to match your billing cycle
  • As the scheduler runs in the interval assigned, it will mark the corresponding opportunity to generate one of the accounting documents like Invoice, Sales Receipt etc.
  • The next time DBSync runs the invoicing process, it will pickup all the Opportunities and process it for invoicing as per setup for Invoice or Sales Receipts.

Please feel free to contact us at support@avankia.com or call 1-877-739-2818 to get more information.


Cloud integration- EDI and API ?

Posted by Rajeev Gupta on Friday, 5 March, 2010

There are an ever growing number of companies offering EDI + API that stirred up some thought:

Having worked with GXS, one of the leading EDI VAN services, I felt I should provide my readers with some background – EDI or Electronic Data Interchange is a B2B protocol used by major business to automate their supply chain. These standards pre-date the WebServices days and were designed to be compact messages designed to save bandwidth and are governed by standard committees (ANSI, EDIFACT or TRADACOM).  These  B2B documents represented an invoice, acceptance notification and many other pre-defined forms.

EDI offers major savings over large corporations like Walmart or JC Penney who wanted to streamline their businesses and normally have large partner networks.  Standardizing and integrating businesses between Hub (the Company) and Spokes (all the partner suppliers) is a win-win for everyone and ends up being a cost to Spokes to choose to do business with the main Hub.

The Spokes are smaller firms. They choose EDI because the Hub asked to do so. Will they internally adopt EDI?  Maybe / maybe not.  As most firms, internal applications are integrated or can be connected by building bridges between applications.  In today’s world, they will very likely invest in integration tools which connect directly to each other.  To integrate with the Hub, they would go with an EDI VAN service like GXS, buy a tool to map and transform their internal representation of Invoice or other documents and send it through to them as EDI, using a prebuilt transfer protocol like FTP/S, EDI*Express or others.

Now let’s look at an Integration provider building an offering in API+EDI. It would make sense to me if the Integration Provider -

  • Had a trading partner hub so that it made sense for Spokes to join in – or if they don’t have an offering of a hub,
  • Offered an integration platform for Spokes to transform their documents in EDI and push to the network – seamlessly.
  • Sold to the Hub an offering to replace EDI VAN services, and move to become a front-end to them for receiving EDI.  In this case, the Integration Provider should have a good strategy to upgrade the connector software for all Spokes.

So what I am getting to is that a firm will have difficulty making headway by only providing a way to transport EDI over an API without providing a value proposition to either the Hub or the spoke.  In this case, perhaps I am missing something.

I feel a better strategy we be to provide a built-in integration with Accounting or ERP packages to EDI.  This will certainly address the major concerns for the Spokes and increase traffic to the EDI Trading Grid / Network or connect with the Hub directly.  This is why a solution like DBSync makes the solution complete, as it connects to the accounting systems, provides mapping capability, and transfers to Hub in the form they need.

Please do jump in with your views…


Analytics Best Practice: Order-to-Cash Performance Measure List

Posted by Rajeev Gupta on Wednesday, 3 March, 2010

order-to-cash performance metricsI am often asked as to what are the relevant reports or metrics we need to track while integrating between Order-to-Cash process. Here is a list of reports that you will find useful while thinking through your business integration needs – mainly between CRM or eCommerce applications like Salesforce.com and Accounting systems like QuickBooks, Intacct or others.

Performance measures for assessment the overall order-to-cash process, order entry-billing, accounts receivable, credit and collections, and inventory accounting.

Order-to-cash

  • Total order-to-cash process cost as a percentage of revenue
  • Total order-to-cash process cost per order-to-cash FTE
  • Days sales outstanding (DSO)
  • Operating cycle
  • Percentage of order-to-cash key controls that are automated

Order entry – billing

  • Total order entry – billing cost as a percentage of revenue
  • Total order entry – billing cost per order entry – billing FTE
  • Total order entry – billing cost per customer invoice
  • Order processing cycle time
  • Order-to-fulfillment cycle time
  • Order-to-bill cycle time
  • Number of days between shipment or service and billing
  • Order-to-cash cycle time
  • Number of customer invoices per order entry – billing FTE
  • Order entry – billing span of control
  • Percentage of order entry – billing FTEs in shared services
  • Number of separate order entry locations
  • Number of separate billing locations
  • Number of separate instances of order entry systems
  • Number of separate instances of billing systems
  • Number of separate customer master files
  • Percentage of customers on standard terms

Accounts receivable

  • Total accounts receivable subprocess cost as a percentage of revenue
  • Total accounts receivable subprocess cost per accounts receivable FTE
  • Total accounts receivable subprocess cost per receipt processed
  • Total accounts receivable subprocess cost per customer invoice processed
  • Average days unapplied cash
  • Percentage of customer receipts received electronically
  • Methods used for collecting receipts
  • Number of receipts per accounts receivable FTE
  • Number of customer invoices per receipt
  • Percentage of errors in posting receipts
  • Average number of days from customer-initiated deduction to resolution
  • Accounts receivable span of control
  • Percentage of accounts receivable FTEs in shared services
  • Number of separate accounts receivable locations
  • Number of separate instances of accounts receivable applications

Credit and collections

  • Total credit and collections subprocess cost as a percentage of revenue
  • Total credit and collections subprocess cost per credit and collections FTE
  • Total credit and collections subprocess cost per past-due account
  • Total credit and collections subprocess cost per account placed for third-party collection
  • Bad-debt expense as a percentage of revenue
  • Average days of past-due accounts
  • Percentage of invoices paid within bill period- value
  • Percentage of invoices paid within bill period- volume
  • Average number of days until an invoice would be considered past due
  • Average number of days until an invoice would be placed for third-party collection
  • Average number of days until an invoice would be written off
  • Credit and collections span of control
  • Percentage of credit and collections FTEs in shared services
  • Number of separate credit and collections locations
  • Number of separate instances of credit and collections applications

Inventory accounting

  • Total inventory accounting cost as a percentage of revenue
  • Obsolescence write-offs as a percentage of revenue
  • Annual inventory turnover
  • Days inventory on hand (DIO)
  • Days to compile year-end inventory
  • Number of separate inventory accounting locations

11 Reasons why Customers want to integrate or outgrow QuickBooks

Posted by Rajeev Gupta on Wednesday, 3 March, 2010

QuickBooksWhile Quickbooks is a boon to small and medium businesses, you hit a wall as you grow to what all you can do with it. This is a list of few points that companies face and require either integration, data extracts or even a reason to upgrade to a more sophisticated accounting package.

1. Requirement for segregation of duties and stronger financial controls
2. Need for improved visibility, actionable data, robust reporting and analysis
3. Limited Chart of Accounts hinders necessary reporting formats
4. Seeking stronger scalability, availability, security and auditability
5. Need to improve business efficiency via automation
6. Need to systematize business processes
7. Requirement to manage multiple currencies and/or multiple business units, consolidated financials
8. Requirement to integrate with other key systems
9. Concurrent / distributed use by more users
10. Concern for performance, extensibility, scalability and reliability
11. Extensive reliance on Excel spreadsheets to prepare financial statements & overcome other shortcomings of QuickBooks