Stephen Smith's Blog

Musings on Machine Learning…

Archive for June 2011

SageCRM 7.1 Released

with 3 comments

SageCRM version 7.1 is now available!  The latest version of SageCRM is now ready for Sage ERP Accpac v6.0 customers.  Version 7.1 builds upon the system’s core functionality by delivering customers the ability to communicate more effectively, collaborate better internally, and compete in today’s marketplace. New features include:

  • Sage e-Marketing—a powerful and fully integrated email marketing solution.
  • Total Campaign Management—enables easy execution of multichannel marketing campaigns.
  • Communications Management— Microsoft Exchange server integration.
  • Interactive Dashboard—link multiple gadgets on a single screen.
  • New Report Charts—better business management with enhanced at-a-glance reports

ERP Integration

Most importantly to Accpac users, now in addition to the standalone SageCRM 7.1, the integrated version for Sage ERP Accpac 6.0A has also been released. Below is SageCRM 7.1 showing its new default welcome dashboard.

The Sage ERP MAS 90/200 integrated version is still being QA’ed but should be released very shortly.

New Interactive Dashboard

Below is a sample dashboard with some sales analytics. Notice that the layout of the dashboard is much more freeform now, so you can arrange the various widgets anyway you like.

Additionally you can link together dashboard widgets, so you can have one widget showing a list of records linked to another widget that shows all the details for the selected record in the first widget.

Accpac Quote to Order

Of course the Sage ERP Accpac 6.0A Quotes to Orders functionality is all in the integration. The screenshot below is actually the work in progress Accpac 6.1 Quote to Orders where the screen has been “narrowed” to fit on lower resolution screens and work better in monitors portrait modes.

New URL Re-Writer

To make setup and configuration easier, SageCRM 7.1 now uses a URL re-writer to route web requests to its Tomcat server. SData requests are handled by the SageCRM Tomcat server and are an integral part of the new dashboards. In previous versions this was handled by the Jakarta redirector, but now and then there were installation problem with this caused by different versions of IIS, various group policy settings and other security settings. The goal of the new URL re-writer is to provide better flexibility in deployment and configuration as well as to provide a more reliable installation experience. Sage ERP Accpac is also considering adopting this to route Accpac SData requests for the same reasons.

Hint: for this to install properly you need to have the ASP.Net role installed into IIS.

Social Media

Social Media is a major focus of SageCRM. It is being integrated into the product more and more. Plus many Social Media add-ons are being developed such as the SageCRM for Twitter extra and the Social Media Manager from Ebnu Consulting. Generally Social Media is becoming a more integral part of customer relationship management, whether seeing what people are saying about you or connecting and interacting with customers. Many people get their primary information through Facebook, LinkedIn and other sites.

All aspects of CRM are becoming more entangled with various Social Media services whether for advertising, customer feedback, support or any other type of interaction. In many cases these are providing better results that direct mail, e-mail, or phone calls. I blogged a bit about Social Media and ERP last year here, but since then things have come quite a long way and adoption has become much more mainstream.

Going Forwards

Of course Accpac 6.1 will integrate to this version as well as future versions. As Accpac continues its journey to the web that it started with version 6.0A, it will continue to integrate more and more into SageCRM. With both being Web products this becomes much easier in the past. Our technology stacks are aligning and our ability to seamlessly integrate becomes easier and easier. This breaks down the walls between ERP and CRM, allowing users in both worlds to get all the information they need for better decision making, whether its CRM users knowing of collections problems for customers from the back end accounting package, or A/R clerks being aware of communications that are going on between sales and customers they are collecting for.

As we move forwards we will be releasing many new “extras” similar to the “SageCRM for Twitter” extra mentioned above. Look to see some of these improving the ERP to CRM integration. The goal here is to get these into user’s hands sooner rather than having to wait for major releases of either the ERP or CRM product. If you are attending Sage Summit in a few weeks, look to see some previews of these extras that will be available shortly.

Advertisements

Written by smist08

June 25, 2011 at 5:45 pm

Posted in CRM, sage 300

Tagged with , ,

SaaSifying Accpac

with 4 comments

I talked in general terms about types of cloud solutions in my blog post “Accpac in the Cloud”. In this blog post I’m going to talk more specifically about how Accpac currently runs in our AccpacOnline.com environment and the changes we are making to support running the 6.x Web version as a true SaaS solution.

AccpacOnline.com

AccpacOnline.com is our current cloud offering for both Sage ERP Accpac and SageCRM. This site hosts Sage products as well as a number of associated ISV solutions. For the current Accpac we use Citrix to run separate sessions for each client logging in. Clients are load balanced across our servers, but any combination of clients can be running on any given server. There is then a separate cluster of SQL Servers to contain all the various customer databases. Below is a diagram of the AccpacOnline.com infrastructure.

When you access Citrix to run Accpac, you first login to Windows then you run the regular Accpac desktop and get the regular Accpac desktop displaying its sign on screen. In the sign on screen you only get the list of your companies (and no one else’s) plus you can only sign on with user ids that are issued to you. So how does AccpacOnline.com keep all the various users of Accpac straight given that several completely unrelated customers’ users can be running Accpac on the same server?

When you install Accpac you have to specify two directories the program files and the shared data directory. The program files are where all the program executables are stored, all the DLLs, OCXs and EXEs. These programs are the same for all customers of AccpacOnline and are shared. However the shared data directory is kept separate so that all the users for a particular customer get their own shared data directory and hence their own preferences, users and companies. But how do we do this? Since technically inclined users of Accpac will know that the location of the shared data directory is stored in the registry under HKEY_LOCAL_MACHINE which is global to all users. Basically we rely on Windows to do this, we install the program files to the regular location on c:, but then we install the shared data to a g: drive. This drive is a mapped drive that points to a different folder for each AccpacOnline customer. So when a user of that customer signs into Windows through Citrix, a login script then maps the G: drive to the appropriate folder for that customer.

This then gets the user up and running with the correct environment. This isn’t a security measure though; all the various folders are additionally protected by Windows security settings so users of a given customer don’t have any sort of access to data belonging to another customer. So even if they could figure out how to map drives to other peoples folders, it still wouldn’t work for their login id.

An alternative approach used by many vendors is to run a separate virtual server for each customer. Basically this model is managed hosting where rather than have a physical server on-premise; you have a virtual server in the cloud. However going this way is more expensive for a number of reasons. With the AccpacOnline model all the users are sharing the same installation, so for us, updating the program files is easy, we don’t need to login in to hundreds of virtual servers to apply hotfixes or product updates. Plus we are only running one copy of the operating system, so the operating system memory and resources are shared. With the managed hosting model each customer has their own copy of the operating system using memory and resources. This means that with the AccpacOnline model we can run many more users per physical server bring down the cost of the service.  The real game of cloud services is how you can architect it, to bring down the cost per user in order to run a competitive service.

Moving to Accpac 6

With Sage ERP Accpac 6 we are rolling out Accpac as a true Web based application. There are many reasons to do this that have considerable customer value. One of the primary reasons to move Accpac to the web is to improve the AccpacOnline.com experience and to reduce the costs to operate AccpacOnline.com to reduce the overall TCO. Basically we are looking to run a modern Internet SaaS business running Accpac. You will access it through the browser like most other Web based applications.

The key to AccpacOnline.com today is that you first login to Windows, this then establishes which customer you are a user for and sets up the environment for you. The key point is that this is a two-step sign on process, first you sign on to Windows to establish which customer (or tenant) you are and then you sign on to a given Accpac user for that customer. In the web world we will do the same thing. Sign on will be a two-step process where first you sign on using the same credentials you would use to sign on to Windows, this will then establish which customer (tenant) you are and connect then present you with the Accpac sign on screen where you select which company you are currently using (and you can only choose from one of your own companies) and your session date. What is happening behind the scenes will be transparent to the user, they will just see nice Web screens where first they type in their user and password then next choose their company and session date.

In this environment Accpac is running under a Web Server and all customers are sharing the same pool of Web Servers. So we don’t have fancy Windows drive mappings to keep things separate for us. Back when we developed Sage ERP Accpac 5.6A, we knew this was coming, so we changed the Accpac API so that all calls would reflect the given customer (tenant) and retrieve the correct data for them. So most ISVs that develop third party applications should have adapted to this environment as part of supporting the 5.6A View Template. In the on-premise version of Accpac any older APIs are still present for compatibility. However in the AccpacOnline.com version, these APIs will be removed (usually low level functions missing an hSIB or hPIB parameter).

The new Sage ERP Portal that was introduced in 6.0A is implemented as a common component and as a result keeps its data in separate files and databases from the main Accpac application. As a result it underwent a bit of refactoring to separate out this data by customer and to tie into the new multi-step sign on process.

When running our VB UIs under Citrix, multiple customers are sharing the same operating system running as Citrix users on the Windows Server, but each user is running their own copy of the various Acccpac EXEs and DLLs. Basically Citrix and Windows Terminal Services keeps each user quite isolated from each other and each gets their own running programs. This then becomes quite expensive on memory since each process has its own memory space. Although this is far better than virtualizing each customer, we can do quite a bit better. With the new AccpacOnline we will run far fewer processes. We will pool resources and requests will be processed by worker threads for the duration of the run. This then means each user uses far less memory and other server resources allowing more users per server and again reducing the TCO of the AccpacOnline service.

Of course we will have multiple application servers available to handle requests and then load balance these requests across the servers (as we do today with Citrix).

We won’t be combining client databases into one database like Salesforce.com does. Part of what they do is a result of using Oracle as their database where each database requires a database server process running. We will be using SQL Server where we can have multiple databases kept separately within one SQL Server process. Further this allows us to use Accpac’s inherent multi-version support to allow clients to upgrade to new versions when they wish. Most ERP customers want control over version upgrades. NetSuite accomplishes this with separate sets of servers per version, but we can do a bit better than this.

Even though clients can upgrade when they wish, we will be trying to make it as easy as possible to upgrade. We call this frictionless upgrade. We want to reach a state where we can regularly roll out new product updates or even versions where clients are upgraded silently in the night and it just works the next day. We still have a ways to go down this road, but that is the end goal.

Summary

We are really excited about clients running Accpac both as an on-premise installed Web application and as a true hosted Web application. I previously blogged about SaaSifying Sage and a lot of that ties in to how we deliver and operate AccpacOnline.com.

Written by smist08

June 18, 2011 at 5:11 pm

Welcome to the Post-PC World

with 2 comments

There were quite a few announcements this week about forthcoming operating systems from Apple and Microsoft. iOS 5 and Windows 8 have quite a few interesting aspects that show how the computing landscape is changing. This blog posting will talk about the various announcements and then provide a fair bit of personal speculation on what this means for ERP, CRM and business computing.

Apple

Steve Jobs

Apple had its WDDC 2011 conference this past week in San Francisco. At this conference they unveiled a new version of iOS, the operating system used by iPods, iPads and iPhones. They introduced a new version of Mac OS and they unveiled a new service called iCloud.

One of the key features of iOS 5/iCloud is that a PC/Mac is no longer required to operate an iPad or iPhone. You can now upgrade the operating system and sync files entirely from the cloud. You are no longer required to ever tether your device to a PC or Mac. This means you can buy and get the full functionality from these devices without owning either a PC or a Mac at all.

Is this the downfall of the PC? Is Apple sacrificing the Mac to eliminate Windows? I suspect PCs and Macs will be around for a long time to come. But if you only need to browse the Web and perform simple computing tasks, is a simple to use, inexpensive Tablet fine for you. Or can you do everything you need to do from your phone all by itself? Will many consumers and businesses just buy phones for everyone and no more PCs or Macs?

Another way to look at this is that the PC (and Mac) have been downgraded to just another device that connects to the cloud. They are now on an equal footing with tablets and phones. Now you can choose the device that is best for the tasks you want to perform. If you need a number of large screen monitors to do programming in many Windows, then a PC Workstation is best for you; but for most other uses a Tablet is better suited and much handier. Some of the advantages that Tablets have is extreme ease of use, very long battery life, light weight, and are actually useful in economy seats on airplanes.

Google

Larry Page and Eric Schmidt

Google has had a very similar plan to Apple all along. Android devices generally don’t require a PC or Mac to operate and Google’s business has always been offering cloud based services. From the beginning Google has been trying to move the world to Browser based clients. Google deserves much of the credit for developing JavaScript into a fully usable and performant platform for development. If it wasn’t for the Google Chrome browser starting a performance war among all Browser vendors, we wouldn’t be able to do what we do today.

There is a fundamental difference in how Google and Apple currently view the cloud. Apple sees it as a synchronization mechanism where the cloud is used to share your files across all the various devices you own. The main point being that the files primarily exist on the devices. Whereas Google sees your files as living in the cloud and being operated on from your devices and never really residing on your devices. I suspect over time these two approaches will become much more blended into a hybrid, since each approach has merits and not one size fits all. For instance the Apple model works even if your device is disconnected from the Internet; whereas, the Google model doesn’t have to worry about conflicts from multiple devices editing the same file locally.

Microsoft

Steve Ballmer

Microsoft has been showing off early previews of Windows 8. My key take away from these videos is that Microsoft is finally adopting open web standards like JavaScript, HTML5 and CSS. They are no longer so heavily promoting a Microsoft only proprietary Internet running Silverlight, XNA or XAML. .Net is just turning ten years old and is moving into the legacy category of MS offerings.

This is really recognition on Microsoft’s part that they are no longer a monopoly and can no longer dictate how developers write their programs. If you are a developer that is starting to write a program today, are you really going to start from scratch and write a program that won’t run on an iPad, iPhone or Android device?

For software developers, this is a huge win. Now there is one clear programming paradigm where you can develop programs that will run on any device whether PC, Mac, iPad, iPhone, Android phone, Blackberry, Touchpad or something that isn’t released yet. That standard is HTML5 combined with JavaScript and CSS. Now you can write once, very rich client applications that run well on all these diverse platforms. Since IE9, Microsoft Windows devices are finally part of the fold and with Windows 8 and IE 10, it looks like MS is now firmly part of this world.

Microsoft is following IBM’s lead and concentrating on selling to IT departments of large companies. Beefing up its IT consulting wing and concentrating on out-sourcing IT datacenters with its Azure platform. Microsoft realizes that huge investments in Windows and Office are no longer worthwhile and that it needs to diversify the devices their software run on, while concentrating on the server side of things. The main problem MS has now is promoting Azure against its main competitors Google, Amazon and Rackspace which are already established and have much simpler to use offerings.

Microsoft is a huge company so there will always be exceptions, for instance at the recent E3 show, MS showed off many quite innovate improvements to the Xbox platform. But many of these are around connecting  the Xbox as another device into the cloud as we’ve been talking about.

Other Vendors

Other vendors, such as RIM and HP are trying to keep pace. At least with the WebKit browser engine which is at the core of the Safari and Chrome Browsers being open source, means that RIM and HP can incorporate this into their Playbook and TouchPad devices and play in the same clouds as all the iPads and Androids. How much room there is there is yet to be seen, but with standards based software, the key to competing is going to be hardware innovation.

Sage

Guy Berruyer

Sage is a business application vendor and not a platform vendor. Sage wants to ensure that all our applications run where and when our customers need them. It isn’t in Sage’s interest to promote any given devices or platforms, it is in Sage’s interest to listen to the market and ensure all our applications can be used where they are needed by our customers.

Sage would like to play in all the platforms and cloud mentioned above. Ideally anyone should be able to access their business application from any computing device, whether to look up information or enter an order. When someone asks if they can run their CRM or ERP application in a certain context, perhaps on a Mac in their design studio, on an iPad at home or on a PC at the main office, we really hate to have to answer with no to what the customer wants to do.

People may not realize that you can run most Sage applications from an iPad already. Most Sage applications support running on Citrix and there is an iPad client for Citrix that lets you access any application on your Citrix desktop from the iPad. Solutions like this along with many new virtualization technologies are opening up standard desktop applications for use anywhere.

It’s in Sage’s interest to work for the best interests of our customers rather than the best interests of any given platform vendor. For the cloud, if say Amazon.com is the best and most cost effective platform today then we should use Amazon.com today, if it’s someone else next year then we need to ensure we have the ability to move and aren’t locked in to higher prices or lesser functionality.

Sage already has a number of cloud based applications like Sage One, SageCRM.com. AccpacOnline.com  or Sage Spark. Then Sage is moving many Windows desktop applications over to being Web based and optionally cloud hosted such as Sage ERP Accpac 6.1A. The key point being that Sage is already operating in these worlds and expanding our presence there aggressively.

With Sage it’s all about freedom of choice. Freedom to deploy locally or to access via the cloud. Freedom to access your applications from anywhere on any device. Freedom to choose the best infrastructure and platform. Freedom to select databases and middleware.

As Sage moves forward we are looking to make our applications far more Service Oriented. You can access our applications through their native Forms, or you can access them through Web Services based on SData. All our Business Logic is encapsulated as a service and can be access via our forms (which use SData) or via any application anywhere utilizing our REST based web services.

Sage will still support on-premise installations for most of our applications for a long time to come. But more and more customers want to move to the cloud for the cost savings and convenience. We want to offer the choice and make the transition (in either direction) as painless as possible.

Of course things are never black or white. Sage will be offering many “connected services” which are web/cloud services that provide the benefits of the cloud to customers running on-premise applications. This way customers can pick up many of the benefits of these new cloud services without having to abandon their investment in learning and customizing their on-premise application. For instance functions that make the most sense to run on phones or tablets could move to the cloud, but still be connected to the on-premise application, syncing data via SData web services.

Summary

Welcome to the Post-PC world. I hope many people are reading this blog from an iPad or other tablet. Perhaps many are reading this from their phone. The point being that you certainly don’t need a PC to perform most computing tasks anymore and in fact there are many tasks that phones can do that PCs can’t.

Written by smist08

June 11, 2011 at 5:18 pm

Posted in Business

Tagged with , , , , ,

Customizing Sage ERP Accpac Inquiry

with 6 comments

The Inquiry function is a new feature of Sage ERP Accpac 6.0A that adds easy to use Inquiry/Reporting functionality to the new Sage ERP Accpac Web Portal. The Inquiry tool, out of the box, comes with a number of predefined Inquiry templates for G/L, A/R and A/P. A common question is whether you can add to these templates to do Inquiries on additional tables or even additional applications. This blog posting is going to endeavor to show you how to do this. Just a note that this posting is really aimed at developers or partners with knowledge of XML and the database structure of Accpac.

When you work in Accpac Inquiry and customize the totals, the fields displayed or the sorting using the nice easy to use Web Screens, you are editing a template file. This is an XML file that stores all the information about what you are doing in the Accpac Inquiry UI. There are a number of starting templates that come with the system which you edit and then save as your own. You can see these templates under the folder: C:\Program Files (x86)\Common Files\Sage\Sage Accpac\Tomcat6\portal\sageERP\inquiry60a\template. Under template there are language directories since these hold translated strings. Then under each language directory are directories AP001, AR001, GL001 and GL002 for the four categories of templates (see the menu in the picture below).

In the picture the “From Templates” are the templates that come with the system and then Saved are the ones that you have modified.

If you open a template file in a text editor, you will see the query definition:

<QueryDefinition desc=”xxFind customer documents”
textID=”txtARTemplateQryCustomer”
domain-definition-file=”arddf.xml”>

The domain-definition-file (in this case arddf.xml), is the file that defines the data domain definition. This file serves a couple of purposes. It defines all the fields with good descriptions to the Inquiry UI, so users can choose what to select based on good descriptions. It also defines the database structure to the query engine so the data can be returned properly.  Some documentation for this file is provided below. Again these are XML files and are stored in the folder: C:\Program Files (x86)\Common Files\Sage\Sage Accpac\Tomcat6\portal\sageERP\inquiry60a\ddf. Since these are XML files, you can open these in a text editor to have a look at them.

If you want to add some fields or tables to an existing data domain, you just need to edit the existing files to get what you are looking for. If you do this, beware that they may be overwritten on the next product update or version, so make sure you have a backup in a safe location (preferably a version control system).

If you want to create a new data domain, then take a copy an existing ddf file and modify it to what you need. Next you need to take a copy of one of the template files and modify it to point to your ddf file. Plus you need to modify anything else in the template file to match what is in the DDF.

One limitation of this process is that you can’t customize the categories in the Inquiry Menu from the Portal. Even if you create a data domain for say Inventory Control, you will still need to place your template in one of the existing categories like “A/R Customers and Transactions”. Hopefully we’ll move this into an XML file in a future version, so it can be customized.

Format of Domain Definition File (DDF)

The Data Domain Definitions files are XML files that define the data universe to Accpac Inquiry.

To facilitate the translation of a DDF file contents and support mixing multiple languages, a DDF file will use the UTF-8 encoding as this format fully supports Unicode. Therefore, the first line of a DDF file should be always defined as follows:

<?xml  version=”1.0″ encoding=”UTF-8″?>

XML Document Type Definitions of DDF File

<!DOCTYPE domain[
<!ELEMENT domain (tables, relationships?)>
<!ELEMENT tables (table+)>
<!ELEMENT table (field+)>
<!ELEMENT field (presentation*)>
<!ELEMENT presentation (item+)>
<!ELEMENT item EMPTY>
<!ELEMENT relationships (relationship+)>
<!ELEMENT relationship (join+)>
<!ELEMENT join EMPTY>

 <!ATTLIST domain name CDATA #REQUIRED>
<!ATTLIST domain accpac-database-version  CDATA #REQUIRED>

 <!ATTLIST table name CDATA #REQUIRED>
<!ATTLIST table desc CDATA #REQUIRED>

 <!ATTLIST field name CDATA #REQUIRED>
<!ATTLIST field desc CDATA #IMPLIED>
<!ATTLIST field mask CDATA #IMPLIED>

 <!ATTLIST item value CDATA #REQUIRED>
<!ATTLIST item string CDATA #REQUIRED>

 <!ATTLIST relationship join-type (equal-join|left-outer-join) #REQUIRED>
<!ATTLIST relationship from-table CDATA #REQUIRED>
<!ATTLIST relationship to-table CDATA #REQUIRED>

 <!ATTLIST join from-field CDATA #REQUIRED>
<!ATTLIST join to-field CDATA #REQUIRED>
]>

Root Element: <domain>

A DDF’s root element is <domain>. This element has the following attributes and child elements. Every attribute or element is mandatory unless otherwise specified.

Attributes

Name: defines a descriptive name of the domain. This could be displayed to an end user.

accpac-database-version: defines the ERP database version where this DDF is based upon.

For example:

<domain name=”A/R Customer Transactions” accpac-database-version=”6.0″></domain>

Child Elements

<table>

The <table> element has two attributes: name and desc. The name attribute is mandatory, and the desc attribute is optional. If no desc attribute is defined, the physical table name will be displayed to an end user. The only child element of the <table> element is <field>, which defines the fields to be exposed to end user. the <field> element also has two attributes: name, and desc. name and desc define the physical field name in the database and the descriptive name respectively. The desc attribute is also optional.

If a field has a presentation list, it can be defined using the presentation element to map a field’s internal value normally encoded in an integer to a more descriptive string.

For example:

<tables>
<table name=”ARCUS” desc=”Customers”>
<field name=”IDCUST” desc=”Customer Number”/>
<field name=”SWACTV” desc=”Status” >
<presentation>
<item value=”0″ string=”inactive” />
<item value=”1″ string=”active” />
</presentation>
</field>
</table>
</tables>

<releationship>

This element defines the relationship between the tables defined in the <table> section, and it should only be defined if there are more than one table in a domain.

Also, there should be only one tree formed when joining all the tables together in a left-to-right fashion. In other words, there should be only one root table.

We currently support two types of join: equal join and left outer join.

The <releationship> element has three attributes: join-type, from-table, and to-table. It has at least one empty child element <join> which defines the matching fields in the from-table and the to-table. The <join> has two attributes: from-field and to-field.

Below is an example of defining the left outer join between ARCUS and AROBL table:

<releationship  join-type=”left outer join” from-table=”ARCUS” to-table=”AROBL”>
<join from-field=”IDCUST” to-field=”IDCUST” />
</releationship>

A Complete Example

Here is an example of A/R Customer Transaction domain. There are 4 tables involved in this domain: ARCUS (customers), AROBL (documents), AROBS (scheduled payments), and AROBP (payments). For simplicity and clarity, not every field in those tables are listed here.

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE domain[
<!ELEMENT domain (tables, relationships?)>
<!ELEMENT tables (table*)>
<!ELEMENT table (field*)>
<!ELEMENT field (presentation*)>
<!ELEMENT presentation (item+)>
<!ELEMENT item EMPTY>
<!ELEMENT relationships (relationship+)>
<!ELEMENT relationship (join+)>
<!ELEMENT join EMPTY>

<!ATTLIST domain name CDATA #REQUIRED>
<!ATTLIST domain accpac-database-version  CDATA #REQUIRED>

<!ATTLIST table name CDATA #REQUIRED>
<!ATTLIST table desc CDATA #REQUIRED>

<!ATTLIST field name CDATA #REQUIRED>
<!ATTLIST field desc CDATA #IMPLIED>

<!ATTLIST item value CDATA #REQUIRED>
<!ATTLIST item string CDATA #REQUIRED>

<!ATTLIST relationship join-type (equal-join|left-outer-join) #REQUIRED>
<!ATTLIST relationship from-table CDATA #REQUIRED>
<!ATTLIST relationship to-table CDATA #REQUIRED>

<!ATTLIST join from-field CDATA #REQUIRED>
<!ATTLIST join to-field CDATA #REQUIRED>
]>

<domain name=”A/R Customer Transactions” accpac-database-version=”6.0″>
<tables>
<table name=”ARCUS” desc=”Customers”>
<field name=”IDCUST” desc=”Customer Number” mask=”%12C”/>
<field name=”TEXTSNAM” desc=”Short Name” />
<field name=”SWACTV” desc=”Status”  >
<presentation>
<item value=”0″ string=”inactive” />
<item value=”1″ string=”active” />
</presentation>
</field>
<field name=”NAMECUST” desc=”Customer Name” />
<field name=”TEXTSTRE1″ desc=”Address Line 1″ />
<field name=”NAMECITY” desc=”City” />
<field name=”CODESTTE” desc=”State/Prov.” />
<field name=”CODEPSTL” desc=”Zip/Postal Code” />
<field name=”CODECTRY” desc=”Country” />
<field name=”NAMECTAC” desc=”Contact Name” />
<field name=”TEXTPHON1″ desc=”Phone Number” />
<field name=”TEXTPHON2″ desc=”Fax Number” />
</table>
<table name=”AROBL” desc=”documents”>
<field name=”IDCUST” desc=”Customer Number”/>
<field name=”IDINVC” desc=”Document Number”/>
<field name=”DATEDUE” desc=”Due Date”/>
<field name=”DATEINVC” desc=”Document Date”/>
<field name=”TRXTYPETXT” desc=”Document Type” >
<presentation>
<item value=”1″ string=”Invoice” />
<item value=”2″ string=”Debit” />
<item value=”3″ string=”Credit” />
<item value=”4″ string=”Interest” />
<item value=”5″ string=”Unapplied Cash” />
<item value=”10″ string=”Prepayment” />
<item value=”11″ string=”Receipt” />
<item value=”11″ string=”Refund” />
</presentation>
</field>
<field name=”DATEDISC” desc=”Discount Date” />
<field name=”AMTINVCTC” desc=”Customer Currency Invoice Amount” />
<field name=”AMTDUETC” desc=”Customer Currency Amount Due” />
<field name=”AMTDISCTC” desc=”Customer Currency Discount Amount” />
<field name=”SWPAID” desc=”Fully Paid Switch” >
<presentation>
<item value=”0″ string=”Yes” />
<item value=”1″ string=”No” />
</presentation>
</field>
</table>
<table name=”AROBS” desc=”Scheduled Payments”>
<field name=”IDCUST” desc=”Customer Number” />
<field name=”IDINVC” desc=”Document Number” />
<field name=”CNTPAYM” desc=”Payment Number” />
<field name=”DATEDUE” desc=”Due Date” />
<field name=”DATEDISC” desc=”Discount Date” />
<field name=”SWPAID” desc=”Fully Paid Switch” >
<presentation>
<item value=”0″ string=”Yes” />
<item value=”1″ string=”No” />
</presentation>
</field>
<field name=”AMTDUETC” desc=”Original Amount” />
<field name=”AMTDISCTC” desc=”Original Discount” />
<field name=”AMTDSCRMTC” desc=”Remaining Discount” />
</table>
<table name=”AROBP” desc=”Document Payments”>
<field name=”IDCUST” desc=”Customer Number” />
<field name=”IDINVC” desc=”Document Number” />
<field name=”CNTPAYMNBR” desc=”Payment Number” />
<field name=”IDRMIT” desc=”Check/Receipt No.” />
<field name=”DATEBUS” desc=”Posting Date” />
<field name=”AMTPAYMTC” desc=”Cust. Receipt Amount” />
<field name=”IDBANK” desc=”Bank Code” />
<field name=”TRXTYPE” desc=”Transaction Type” />
<field name=”IDCUSTRMIT” desc=”Remitting Customer No.” />
<field name=”DATERMIT” desc=”Receipt Date” />
</table>
</tables>
<relationships>
<relationship  join-type=”left-outer-join” from-table=”ARCUS” to-table=”AROBL”>
<join from-field=”IDCUST” to-field=”IDCUST” />
</relationship>
<relationship join-type=”left-outer-join” from-table=”AROBL” to-table=”AROBS”>
<join from-field=”IDCUST” to-field=”IDCUST” />
<join from-field=”IDINVC” to-field=”IDINVC” />
</relationship>
<relationship join-type=”left-outer-join” from-table=”AROBS” to-table=”AROBP” >
<join from-field=”IDCUST” to-field=”IDCUST” />
<join from-field=”IDINVC” to-field=”IDINVC” />
<join from-field=”CNTPAYM” to-field=”CNTPAYMNBR” />
</relationship>
</relationships>
</domain>

Written by smist08

June 4, 2011 at 9:33 pm

Posted in sage 300

Tagged with , , ,