<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.neotechnology.com.au" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
 <title></title>
 <link>http://www.neotechnology.com.au/blog_feed</link>
 <description></description>
 <language>en</language>
<item>
 <title>Point of sale system mobile devices - Amicus PDA</title>
 <link>http://www.neotechnology.com.au/blogs/Steve/AmicusPDA</link>
 <description>&lt;p&gt;This week started by learning the ropes of Amicus PDA, basically a portable version of our Amicus point of sale software. The developer who built this system has left the company so we had to figure out how he got past several hurdles. &lt;/p&gt;
&lt;p&gt;The PDA emulator was relatively easy to setup. As long as you had Windows Mobile Device Centre version 6.1, it was quite easy. All that had to be done was start the Device Emulator Manager, make sure itâ€™s setup for DMA, and the following options are turned on:&lt;/p&gt;
&lt;p&gt;â€¢	allowing automatic device authentication&lt;br /&gt;
â€¢	allow data connections on device when connected to PC&lt;/p&gt;
&lt;p&gt;Cradling the PDA would then allow us to interact with it. &lt;/p&gt;
&lt;p&gt;The next fun part was attempting to get merge replication working. There are many steps required in order to get this to function correctly. Most of them are in a doc that we use. However, the basic way it works is to do the following:&lt;/p&gt;
&lt;p&gt;â€¢	Make sure that every record in the database has a GUID.&lt;br /&gt;
For us, this was a problem as the system was created a while ago, and therefore doesnâ€™t use GUIDs for primary keys. We solved this by creating a DTSX package to transform the data into a useable state within a separate database.&lt;/p&gt;
&lt;p&gt;â€¢	Create a local publication so that a snapshot of the secondary database is created.&lt;br /&gt;
This allows subscribers to connect to the publication. This is how merge replication works.&lt;/p&gt;
&lt;p&gt;â€¢	Within the PDA, use the SqlCeReplication class that comes with .NET. After setting it up to point to the snapshot, the replication method happily did what it was supposed to.&lt;/p&gt;
&lt;p&gt;It sounds simple when summarised like this, but there are so many options etc that need to be used that it feels like we need to get out the magic luck crystals every time we set it up.&lt;/p&gt;
</description>
 <comments>http://www.neotechnology.com.au/blogs/Steve/AmicusPDA#comments</comments>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/mobile-device">Mobile Device</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/mobile-pos">Mobile POS</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/pda">PDA</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/pos-pda">POS PDA</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/stocktakes">Stocktakes</category>
 <pubDate>Fri, 24 Jul 2009 17:24:51 +1000</pubDate>
 <dc:creator>sburman</dc:creator>
 <guid isPermaLink="false">105 at http://www.neotechnology.com.au</guid>
</item>
<item>
 <title>Cisco 800 series Wireless routers: Wireless and Ethernet on the same IP subnet</title>
 <link>http://www.neotechnology.com.au/blogs/cisco-800-series-wireless-routers-wireless-and-ethernet-same-ip-subnet</link>
 <description>&lt;p&gt;For a recent customer install of our point of sale products Amicus Retail (POS) and Amicus PDA. The customer requested that the wireless and Ethernet interfaces sit on the same IP subnet. &lt;/p&gt;
&lt;p&gt;Normally the 800 series routers are configured with NAT between the WAN and VLAN interfaces, for this setup NAT will be performed between the WAN and a bridging interface.  This then allows the VLAN and wireless interfaces to be bridged via this bridging group, thus both interfaces can be placed on the same IP subnet.&lt;br /&gt;
The Cisco router used in this example is an 877W router, which has an ADSL interface for itâ€™s WAN Connection. The configuration for other routers in the wireless 800 series range will follow a similar process for the VLAN, Wireless and bridging interfaces, but the WAN interfaces will be model specific.&lt;/p&gt;
&lt;p&gt;Configuration of the ADSL dialer interface:&lt;br /&gt;
This interface is configured as the external interface for NAT via the â€œIP Nat outsideâ€ command.&lt;/p&gt;
&lt;p&gt;Interface Dialer0&lt;br /&gt;
 Ip address negotiated&lt;br /&gt;
 Ip mtu 1452&lt;br /&gt;
 Ip nat outside&lt;br /&gt;
 Ip virtual-reassembly&lt;br /&gt;
 Encapsulation ppp&lt;br /&gt;
 No ip route-cache cef&lt;br /&gt;
 No ip route-cache&lt;br /&gt;
 Dialer pool 1&lt;br /&gt;
 Dialer-group 1&lt;br /&gt;
 No cdp enable&lt;br /&gt;
 Ppp authentication chap pap callin&lt;br /&gt;
 â€¦	&lt;/p&gt;
&lt;p&gt;Configuration of Bridging&lt;br /&gt;
The Bridging interface has been configured as the internal NAT interface via the command â€œip nat insideâ€.&lt;br /&gt;
It also has been configured with an IP address via the â€œ IP address A.B.C.D â€œ; this IP address will be the default gateway for all devices attached to the router.&lt;br /&gt;
Other relevant commands are listed below:&lt;br /&gt;
	â€œBridge irbâ€: enables IRB on router.&lt;br /&gt;
	â€œBridge 1 protocol ieeeâ€: enables bridging on the router.&lt;br /&gt;
	â€œBridge 1 route IPâ€: enables routing of all IP protocol packets&lt;/p&gt;
&lt;p&gt;Bridge irb&lt;br /&gt;
â€¦&lt;br /&gt;
Bridge 1 protocol ieee&lt;br /&gt;
Bridge 1 route ip&lt;br /&gt;
!&lt;br /&gt;
Interface BVI1&lt;br /&gt;
 Ip address 192.168.1.1 255.255.255.0&lt;br /&gt;
 Ip nat inside&lt;br /&gt;
 Ip virtual-reassembly&lt;br /&gt;
!&lt;/p&gt;
&lt;p&gt;Configuration of VLAN interface&lt;br /&gt;
This interface has been configured with no IP address and as a member of the bridging group via the commands â€œno ip addressâ€ and â€œbridge-group 1â€.&lt;/p&gt;
&lt;p&gt;!&lt;br /&gt;
Interface Vlan1&lt;br /&gt;
 No ip address&lt;br /&gt;
 Ip virtual-reassembly&lt;br /&gt;
 Bridge-group 1&lt;br /&gt;
 Bridge-group 1 spanning-disabled&lt;br /&gt;
!&lt;/p&gt;
&lt;p&gt;Configuration of the Wireless Interface&lt;br /&gt;
 This interface has been configured as a member of the bridging group via the bridge-group commands listed in the configuration below.&lt;/p&gt;
&lt;p&gt;!&lt;br /&gt;
Interface Dot11Radio0.1&lt;br /&gt;
 Encapsulation dot1Q 1 native&lt;br /&gt;
 No snmp trap link-status&lt;br /&gt;
 No cdp enable&lt;br /&gt;
 Bridge-group 1&lt;br /&gt;
 Bridge-group 1 subscriber-loop-control&lt;br /&gt;
 Bridge-group 1 spanning-disabled&lt;br /&gt;
 Bridge-group 1 block-unknown-source&lt;br /&gt;
 No bridge-group 1 source-learning&lt;br /&gt;
 No bridge-group 1 unicast-flooding&lt;br /&gt;
!&lt;/p&gt;
</description>
 <comments>http://www.neotechnology.com.au/blogs/cisco-800-series-wireless-routers-wireless-and-ethernet-same-ip-subnet#comments</comments>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/cisco-800-series-wireless-routers">Cisco 800 series Wireless routers</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/configuration">configuration</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/ethernet">ethernet</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/wireless">wireless</category>
 <pubDate>Tue, 21 Jul 2009 17:23:50 +1000</pubDate>
 <dc:creator>twade</dc:creator>
 <guid isPermaLink="false">104 at http://www.neotechnology.com.au</guid>
</item>
<item>
 <title>Customer issue</title>
 <link>http://www.neotechnology.com.au/blogs/customer-issue</link>
 <description>&lt;p&gt;A customer reported an issue with their Amicus PDA environment.&lt;/p&gt;
&lt;p&gt;Amicus PDA is basically a mobile version of our Amicus point of sale software. There was Windows Server 2003, IIS and SQL Server 2005 running merge Replication. Client was receiving 503 Service Unviable Error, upon further investigation this error was logged in the event log. &#039;Test Pool&#039; is invalid. If it remains invalid when the first request for the application pool is processed, the application pool will be disabled. The data field contains the error number.&lt;/p&gt;
&lt;p&gt;I found in IIS that the application pool was disabled, so I enabled the pool but the application still wouldnâ€™t launch. As a temporary solution, I created a new application pool and gave it administration privileges.&lt;/p&gt;
&lt;p&gt;As the clientâ€™s were now operating I could look further into the problem. Firstly, the server had run out of space. Secondly, what I found most interesting the user account that the application pool was running as was disabled, why this was disabled I wasnâ€™t sure. I re-enabled the account and changed the web site to use the correct application pool, issue resolved.&lt;/p&gt;
</description>
 <comments>http://www.neotechnology.com.au/blogs/customer-issue#comments</comments>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/amicus-pda">Amicus PDA</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/portable-devices">portable devices</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/pos-pda">POS PDA</category>
 <pubDate>Tue, 21 Jul 2009 17:22:27 +1000</pubDate>
 <dc:creator>fdipalma</dc:creator>
 <guid isPermaLink="false">103 at http://www.neotechnology.com.au</guid>
</item>
<item>
 <title>Visual Studio Crash Fail</title>
 <link>http://www.neotechnology.com.au/blogs/visual-studio-crash-fail</link>
 <description>&lt;p&gt;I fixed a rather interesting crash this week. Our main program maintains a dialog list. From this list, we can perform actions on our dialogs such as â€˜close allâ€™. When a user logs off from the program, it closes all the dialogs. However, one of our very old dialogs was causing a crash when this happened.&lt;/p&gt;
&lt;p&gt;The problem with this crash is that we could successfully reproduce it in release mode on a testing machine, but if we tried it on a development machine (in either release or debug), it would not fail. As a result, we decided to try some message box debugging. We could have tried remote debugging, but this hopefully would have been a small issue to find.&lt;/p&gt;
&lt;p&gt;What had happened was that the crash was due to a simple null pointer. Because it was an old dialog, it didnâ€™t do what a lot of our new dialogs do, and ended up trying to access the dialog object after the dialog was destroyed and reset to null.&lt;/p&gt;
&lt;p&gt;The strange part about it was that Visual Studio did not complain when this happened. Even when I found the cause, and debugged to the point where it should have crashed, Visual Studio continued to work, and the program went on as if nothing happened. Strange (and annoying).&lt;/p&gt;
</description>
 <comments>http://www.neotechnology.com.au/blogs/visual-studio-crash-fail#comments</comments>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/visual-studio-crash-fail">Visual Studio Crash Fail</category>
 <pubDate>Mon, 21 Dec 2009 11:20:29 +1100</pubDate>
 <dc:creator>sburman</dc:creator>
 <guid isPermaLink="false">198 at http://www.neotechnology.com.au</guid>
</item>
<item>
 <title>Dual ADSL Connections in one Cisco router</title>
 <link>http://www.neotechnology.com.au/blogs/dual-adsl-connections-one-cisco-router</link>
 <description>&lt;p&gt;Recently a POS customer wanted to install another ADSL connection at one of their main sites. They wanted this second connection in order to segment some internet connected services off their old connection and onto the new ADSL connection, as these services where saturating the old connection on uploads.  Quality of service (QOS) was discussed, but was rejected on the basis that these services really needed the majority of the upload speed available in order to function correctly.  Given the requirements listed by the Customer we drafted some solutions with various levels of redundancy and price tags. As our they wanted to keep the solution cost low and were not concerned by redundancy they chose the cheapest option, which was to purchase another  ADSL Card and utilise it in their current Router.&lt;/p&gt;
&lt;p&gt;The Configuration to allow this single router, two ADSL cards was based on Ciscoâ€™s implementation of â€œpolicy based routingâ€.&lt;/p&gt;
&lt;p&gt;The ADSL cards where configured as normal, the first was configured as â€œdialer interface 0â€ and the second was configured as â€œdialer interface 1â€. For this example Dialer 0 has the subnet 192.168.10.0/24 routed to it by the ISP and dialer 1 has subnet 192.168.11.0/24 routed.&lt;/p&gt;
&lt;p&gt;The route-maps for policy based routing were configured as follows:&lt;/p&gt;
&lt;p&gt;Route-map PBR permit 10&lt;br /&gt;
Match ip address 110&lt;br /&gt;
Set interface Dialer0&lt;br /&gt;
Route-map PBR permit 20&lt;br /&gt;
 Match ip address 111&lt;br /&gt;
 Set interface Dialer1&lt;br /&gt;
The ACLâ€™s 110 and 115 are show below:&lt;br /&gt;
Access-list 110 deny   ip 192.168.10.0 0.0.0.255 192.168.11.0 0.0.0.255&lt;br /&gt;
Access-list 110 permit ip 192.168.10.0 0.0.0.255 any&lt;br /&gt;
Access-list 111 deny   ip 192.168.11.0 0.0.0.255 192.168.10.0 0.0.0.255&lt;br /&gt;
Access-list 111 permit ip 192.168.11.0 0.0.0.255 any&lt;br /&gt;
The access-lists where configured to allow traffic to flow between the two subnets without having to traverse either ADSL connection. &lt;/p&gt;
</description>
 <comments>http://www.neotechnology.com.au/blogs/dual-adsl-connections-one-cisco-router#comments</comments>
 <pubDate>Fri, 07 Aug 2009 16:28:11 +1000</pubDate>
 <dc:creator>twade</dc:creator>
 <guid isPermaLink="false">120 at http://www.neotechnology.com.au</guid>
</item>
<item>
 <title>Amicus point of sale syncronisation </title>
 <link>http://www.neotechnology.com.au/blogs/amicus-point-sale-syncronisation</link>
 <description>&lt;p&gt;One of our supporting products that comes with the Amicus point of sale and business management systems is a windows service called nbsSync. This service is responsible for synchronising data between a set of Amicus POS databases. Eg databases at different sites for Amicus point of sale system.&lt;/p&gt;
&lt;p&gt;This tool can be configured to only synchronise certain tables, and deal with conflicts in a defined way.&lt;/p&gt;
&lt;p&gt;As we are getting ready for the deployment to our largest customer in Vanuatu, we have had to make some changes to the system to make it cope with the ridiculously unstable communication lines they have there.&lt;/p&gt;
&lt;p&gt;The initial implementation used purely the winsock2 API functions WSARecv and WSASend. When this service was written, we used these functions with infinite wait time. After running this service for a while, it was noticed that packets were clearly being lost over their communication lines, so introducing a WSAOVERLAPPED structure was needed so that we could introduce timeouts.&lt;/p&gt;
&lt;p&gt;The example given on MSDN for the WSARecv function was used to implement the timeouts. In the example it was said that â€œIf 0 bytes are received, the connection was closedâ€. Since these are the people who wrote this function, this is what was implemented. When this service was rolled out in Vanuatu, it was seen that 2 of the sites that often had poor communication kept receiving 0 bytes. If the example is to be believed, this means the socket was closed. However, this was not the case. The code was altered so that in the receiving loop, it would no longer stop if 0 bytes were received, and we made the loop itself timeout if nothing was received after a given time. This seemed to make things work.&lt;/p&gt;
</description>
 <comments>http://www.neotechnology.com.au/blogs/amicus-point-sale-syncronisation#comments</comments>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/databases">databases</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/multi-sites">multi-sites</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/point-sale">Point of sale</category>
 <category domain="http://www.neotechnology.com.au/category/blog/pos">POS</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/syncronisation">syncronisation</category>
 <pubDate>Mon, 27 Jul 2009 16:40:50 +1000</pubDate>
 <dc:creator>sburman</dc:creator>
 <guid isPermaLink="false">121 at http://www.neotechnology.com.au</guid>
</item>
<item>
 <title>Amicus POS software testing</title>
 <link>http://www.neotechnology.com.au/blogs/amicus-pos-software-testing-0</link>
 <description>&lt;p&gt;As any developer who has worked on a large project is aware, unit testing goes a long way to making sure the end product is stable. Amicus point of sale and business management software also has unit tests. These are test cases written in code to make sure that the software is behaving. They will never replace testers, as a unit test is only ever as good as the person who made it. But they make sure that the developer has written decent code, and make sure that other developers do not accidently break functionality of existing code later.&lt;br /&gt;
We use CruiseControl.NET for automating the build process. This causes the build server to always build an entire release of Amicus POS every time a developer checks in code. It ensures that a developer will not check in code that is broken, and therefore prevent other developers from working.&lt;br /&gt;
What I have been working on is setting up a new CruiseControl.NET server for automatically running unit tests. We decided to go for another separate server for 2 reasons:&lt;br /&gt;
1.	It takes the load off the build server, as that should only be for building&lt;br /&gt;
2.	We needed an XP server, because some of our old C++ unit tests require GUI to be created. XP allows the creation of GUI from a service.&lt;br /&gt;
The build server project was extended slightly to create all the files required for running the unit tests. These were all placed in a central folder. Then once a day the automated test server copies the files from this location and runs them. We keep the building side of the process on the build server, as that saves us having to setup another server with all the build tools required to build Amicus POS.&lt;/p&gt;
</description>
 <comments>http://www.neotechnology.com.au/blogs/amicus-pos-software-testing-0#comments</comments>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/pos-software-testing">POS software testing</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/software-testing">software testing</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/unit-testing">unit testing</category>
 <pubDate>Mon, 17 Aug 2009 10:46:10 +1000</pubDate>
 <dc:creator>sburman</dc:creator>
 <guid isPermaLink="false">124 at http://www.neotechnology.com.au</guid>
</item>
<item>
 <title>Professional Courtesy - Such a rare commodity</title>
 <link>http://www.neotechnology.com.au/blogs/professional-courtesy-such-rare-commodity</link>
 <description>&lt;p&gt;This week Shirly Sareyka and I have been travelling around Melbourne meeting with potential partners for our Point of Sale product, Amicus. So far we&#039;ve talked to a few very good candidates, most notably &lt;a href=&quot;http://www.retailcare.com.au&quot;&gt;Retail Care&lt;/a&gt; in Prahran and &lt;a href=&quot;http://www.livit.com.au&quot;&gt;LivIT&lt;/a&gt; in Camberwell so the trip has been worthwhile.&lt;/p&gt;
&lt;p&gt;However, the number of stand-ups we&#039;ve had here in Melbourne is really quite bemusing, 3 so far. One of which did actually call to cancel so that&#039;s fine, but the other two simply weren&#039;t there when we arrived for our &amp;quot;confirmed&amp;quot; appointments. Needless to say, if they aren&#039;t professional enough to turn up for a confirmed appointment then they probably aren&#039;t good candidates as distribution partners for our POS system, Amicus, anyway.&lt;/p&gt;
&lt;p&gt;We&#039;re actively seeking to establish long term distribution partners in Australian cities for Amicus which is an affordable, enterprise class Point of Sale system (POS) tailored specifically for the following business types:&lt;/p&gt;
&lt;p&gt;â€¢ Supermarkets&lt;br /&gt;
â€¢ Fuel Outlets&lt;br /&gt;
â€¢ Cafes&lt;br /&gt;
â€¢ Restaurants&lt;br /&gt;
â€¢ Retail Chains&lt;br /&gt;
â€¢ Wholesale&lt;/p&gt;
&lt;p&gt;I would welcome any enquiries by &lt;a href=&quot;mailto:enquiries@neotechnology.com.au&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://www.neotechnology.com.au/blogs/professional-courtesy-such-rare-commodity#comments</comments>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/amicus">Amicus</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/partners">Partners</category>
 <category domain="http://www.neotechnology.com.au/category/blog/pos">POS</category>
 <pubDate>Fri, 21 Aug 2009 08:59:19 +1000</pubDate>
 <dc:creator>dharrison</dc:creator>
 <guid isPermaLink="false">125 at http://www.neotechnology.com.au</guid>
</item>
<item>
 <title>Data Exportation</title>
 <link>http://www.neotechnology.com.au/blogs/data-exportation</link>
 <description>&lt;p&gt;I am trying to write an app.config file generator for a data exportation service being used by Amicus (Supermarket point of sale system) and need to know how to create a very specific app config file.&lt;br /&gt;
What I need is a class that takes in a Dictionary&lt;string, List&lt;Dictionary&lt;string, string&gt;&gt;&gt; and organises an app config file in a very specific way.  Iâ€™ve played around with a few things, but canâ€™t quite get the layout I want.  Currently Iâ€™m writing them by hand.&lt;/p&gt;
&lt;p&gt;What the various parts represent and how Iâ€™m trying to get the layout below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://images.neotechnology.com.au/images/Config.jpg&quot; alt=&quot;Config layout&quot; title=&quot;Config layout&quot; &gt;&lt;/p&gt;
&lt;p&gt;I know what my supported section types are, as well as what their settings names are going to be (it may be easier to create a class for each supported type?).  I assume that as there is nothing separating my settings other than white space, I could just pass back a single string with all settings and values rather than key value pairs.&lt;/p&gt;
&lt;p&gt;On top of creating a class for the instance object, I have created a class that extends ConfigurationSection, another that extends ConfigurationElement, and another that extends ConfigurationElementCollection with limited results.&lt;/p&gt;
&lt;p&gt;Does anyone know how to accomplish this task?  Or know of a good site where I can figure it out.&lt;/p&gt;
&lt;p&gt;Thanks in advance.&lt;/p&gt;
&lt;p&gt;David - Neotechnology Business Systems&lt;/p&gt;
</description>
 <comments>http://www.neotechnology.com.au/blogs/data-exportation#comments</comments>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/config-file-generator">config file generator</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/configuration">configuration</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/data">data</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/dictionary-strings">dictionary strings</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/exporting-data">exporting data</category>
 <pubDate>Fri, 10 Jul 2009 08:48:38 +1000</pubDate>
 <dc:creator>dhosny</dc:creator>
 <guid isPermaLink="false">126 at http://www.neotechnology.com.au</guid>
</item>
<item>
 <title>XAFGrid</title>
 <link>http://www.neotechnology.com.au/blogs/xafgrid</link>
 <description>&lt;p&gt;My current problem:&lt;/p&gt;
&lt;p&gt;I have a web app constructed using Dev Express v8.3 that is used to create customer licences for a POS (Point Of Sale) System Amicus, and I would like to include a grid display in one Domain Object that is populated by two other Domain Objects.&lt;/p&gt;
&lt;p&gt;The model can be described as follows;&lt;br /&gt;
The first object is a customer registration object.  It holds key information about a registration such as expiry date, customer, registration name and number etc.&lt;/p&gt;
&lt;p&gt;The second object is a list of licence types used by Amicus (Such as Restaurant, Cafe, Retail, Fuel etc).&lt;/p&gt;
&lt;p&gt;The third object is a licence record which is essentially a linking table between the two. A registration may contain 0 to many licence records, but the licence records assigned to a registration must point to unique licence types. This table also contains information on the quantity of licences of a type that belong to the registration (I.e. registration for customer â€˜Aâ€™ may have 5 Restaurant and 4 Cafe licences, but customer â€˜Bâ€™ cannot have two licence records where the first links to a Supermarket and the second also links to a Supermarket licence).&lt;/p&gt;
&lt;p&gt;Currently we have to navigate to the licences tab, and create individual records for each licence type we want to link to a registration, but seeing as there are only currently about 10 licences, and this is likely to never exceed 30, we would like to display all available licences on the registrations tab in the form of a grid.&lt;/p&gt;
&lt;p&gt;With this approach we would be able to quickly and easily look down the list and simply allocate a qty for each type required.  If a qty is chosen (I.e. greater than 0), then a record should be inserted in the licence table for the licence type and customer registration with the given qty.  Similarly, when editing a registration, if a qty is altered, then the new value should be saved back to the applicable record, with the exception of 0 where the record would be deleted.&lt;br /&gt;
I am currently searching DevExpress articles to see how this can be achieved, and have also sent them a question, but if anyone knows how to achieve this, it would be greatly appreciated.&lt;/p&gt;
&lt;p&gt;Dave&lt;/p&gt;
</description>
 <comments>http://www.neotechnology.com.au/blogs/xafgrid#comments</comments>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/domain-objects">domain objects</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/software-development">software development</category>
 <category domain="http://www.neotechnology.com.au/category/blog-tags/web-applications">web applications</category>
 <pubDate>Fri, 31 Jul 2009 09:08:36 +1000</pubDate>
 <dc:creator>dhosny</dc:creator>
 <guid isPermaLink="false">127 at http://www.neotechnology.com.au</guid>
</item>
</channel>
</rss>
