Integration Customer Center

The Integration Customer Center is an app which displays data retrieved directly from a remote system in real-time.

Supported document types are:

  • Open orders
  • Credit notes
  • Invoices

Using the ICC you can:

  • Retrieve lists of each supported document type
  • Render an instance of a document type based on a template
  • Retrieve a pdf of an instance of a document type

Before you can use the integration customer center, you must have a live integration setup up, as the ICC depends on retrieving and displaying data in real-time – and then:

  • Add the ICC app to a paragraph on your solution
  • Make sure your remote system returns XML in the format expected by Dynamicweb

Add the app to a paragraph on your solution to access the app settings, which allow you to control the behavior of the app.

Figure 2.1 The Integration Customer Center module settings

With the navigation template, you can render a navigation for moving between your ICC pages – Orders, Invoices, etc. The template must contain the <!--@Ecom:IntegrationCustomerCenter.PageContent--> tag.

The pages list controls which types of documents you want to render. Each page settings view (Figure 2.2) allows you to:

  • Name the page and select a document type to render
  • Provide a menu name for the navigation and a tag name
  • Select a list template and an item template to render the list and list entries with
Figure 2.2 ICC Page settings

Finally, you can set up paging using the paging controls.

A requests from the ICC to retrieve an order list looks like this:

<GetList type="Invoice" customerID="1234" requestAmount="10" firstItem="10"></GetList>

Where type equals the document type selected in the page settings.

An example of the XML we expect to get back:

<?xml version="1.0" encoding="utf-8"?> <Items type="Invoice" totalCount="2"> <item> <column columnName="id"><![CDATA[SF11598]]></column> <column columnName="orderDate"><![CDATA[08/26/16]]></column> <column columnName="shipDate"><![CDATA[08/26/16]]></column> <column columnName="dueDate"><![CDATA[09/05/16]]></column> <column columnName="totalAmount"><![CDATA[7.123,55]]></column> <column columnName="totalAmountIncVat"><![CDATA[8.904,44]]></column> </item> <item> <column columnName="id"><![CDATA[SF11599]]></column> <column columnName="orderDate"><![CDATA[08/26/16]]></column> <column columnName="shipDate"><![CDATA[08/26/16]]></column> <column columnName="dueDate"><![CDATA[09/05/16]]></column> <column columnName="totalAmount"><![CDATA[755,00]]></column> <column columnName="totalAmountIncVat"><![CDATA[800,00]]></column> </item> </Items>

When an order in an order list is opened, another request is sent:

<GetItem type="Invoice" customerID="2960" documentNO="SF11598"></GetItem>

The response we get back from the GetItem request looks like this:

<?xml version="1.0" encoding="utf-8"?> <Items type="Invoice"> <table tableName="EcomOrders"> <item table="EcomOrders"> <column columnName="ID"><![CDATA[SF11598]]></column> <column columnName="CurrencyCode"><![CDATA[]]></column> <column columnName="Date"><![CDATA[08/26/16]]></column> <column columnName="PaymentMethodName"><![CDATA[]]></column> <column columnName="ShippingMethodName"><![CDATA[]]></column> <column columnName="CustomerName"><![CDATA[TEST TEST WEBSHOP TEST TEST ]]></column> <column columnName="CustomerAddress"><![CDATA[TESTVEJ 8]]></column> <column columnName="CustomerAddress2"><![CDATA[]]></column> <column columnName="CustomerCity"><![CDATA[Randers C]]></column> <column columnName="CustomerCountryCode"><![CDATA[DK]]></column> <column columnName="CustomerEmail"><![CDATA[]]></column> <column columnName="CustomerFax"><![CDATA[]]></column> <column columnName="CustomerPhone"><![CDATA[]]></column> <column columnName="CustomerZip"><![CDATA[8900]]></column> <column columnName="DeliveryName"><![CDATA[TEST TEST WEBSHOP TEST TEST ]]></column> <column columnName="DeliveryAddress"><![CDATA[TESTVEJ 8]]></column> <column columnName="DeliveryAddress2"><![CDATA[]]></column> <column columnName="DeliveryCity"><![CDATA[Randers C]]></column> <column columnName="DeliveryCountryCode"><![CDATA[DK]]></column> <column columnName="DeliveryEmail"><![CDATA[]]></column> <column columnName="DeliveryFax"><![CDATA[]]></column> <column columnName="DeliveryPhone"><![CDATA[]]></column> <column columnName="DeliveryZip"><![CDATA[8900]]></column> <column columnName="PriceWithVAT"><![CDATA[0,00]]></column> <column columnName="PriceWithoutVAT"><![CDATA[0,00]]></column> <column columnName="PriceVAT"><![CDATA[0,00]]></column> <column columnName="SalesDiscount"><![CDATA[0,00]]></column> <column columnName="ShippingFee"><![CDATA[]]></column> </item> </table> <table tableName="EcomOrderLines"> <item table="EcomOrderLines"> <column columnName="ProductNumber"><![CDATA[3966]]></column> <column columnName="ProductVariantID"><![CDATA[]]></column> <column columnName="Unit"><![CDATA[Unit_KILO]]></column> <column columnName="ID"><![CDATA[10000]]></column> <column columnName="Quantity"><![CDATA[22,50]]></column> <column columnName="Type"><![CDATA[0]]></column> <column columnName="PriceWithoutVAT"><![CDATA[832,50]]></column> <column columnName="UnitPriceWithoutVAT"><![CDATA[37,00]]></column> <column columnName="PriceWithVAT"><![CDATA[1.040,63]]></column> <column columnName="UnitPriceWithVAT"><![CDATA[46,25]]></column> <column columnName="PriceVAT"><![CDATA[208,13]]></column> <column columnName="UnitPriceVAT"><![CDATA[9,25]]></column> <column columnName="PriceVATPercent"><![CDATA[25,00]]></column> <column columnName="UnitPriceVATPercent"><![CDATA[25,00]]></column> </item> <item table="EcomOrderLines"> <column columnName="ProductNumber"><![CDATA[4548]]></column> <column columnName="ProductVariantID"><![CDATA[]]></column> <column columnName="Unit"><![CDATA[Unit_KILO]]></column> <column columnName="ID"><![CDATA[20000]]></column> <column columnName="Quantity"><![CDATA[50,25]]></column> <column columnName="Type"><![CDATA[0]]></column> <column columnName="PriceWithoutVAT"><![CDATA[6.180,75]]></column> <column columnName="UnitPriceWithoutVAT"><![CDATA[123,00]]></column> <column columnName="PriceWithVAT"><![CDATA[7.725,94]]></column> <column columnName="UnitPriceWithVAT"><![CDATA[153,75]]></column> <column columnName="PriceVAT"><![CDATA[1.545,19]]></column> <column columnName="UnitPriceVAT"><![CDATA[30,75]]></column> <column columnName="PriceVATPercent"><![CDATA[25,00]]></column> <column columnName="UnitPriceVATPercent"><![CDATA[25,00]]></column> </item> <item table="EcomOrderLines"> <column columnName="ProductNumber"><![CDATA[2424]]></column> <column columnName="ProductVariantID"><![CDATA[]]></column> <column columnName="Unit"><![CDATA[Unit_KARTON]]></column> <column columnName="ID"><![CDATA[30000]]></column> <column columnName="Quantity"><![CDATA[1,00]]></column> <column columnName="Type"><![CDATA[0]]></column> <column columnName="PriceWithoutVAT"><![CDATA[129,77]]></column> <column columnName="UnitPriceWithoutVAT"><![CDATA[129,77]]></column> <column columnName="PriceWithVAT"><![CDATA[162,21]]></column> <column columnName="UnitPriceWithVAT"><![CDATA[162,21]]></column> <column columnName="PriceVAT"><![CDATA[32,44]]></column> <column columnName="UnitPriceVAT"><![CDATA[32,44]]></column> <column columnName="PriceVATPercent"><![CDATA[25,00]]></column> <column columnName="UnitPriceVATPercent"><![CDATA[25,00]]></column> </item> <item table="EcomOrderLines"> <column columnName="ProductNumber"><![CDATA[2424]]></column> <column columnName="ProductVariantID"><![CDATA[]]></column> <column columnName="Unit"><![CDATA[Unit_KARTON]]></column> <column columnName="ParentLineID"><![CDATA[30000]]></column> <column columnName="Type"><![CDATA[3]]></column> <column columnName="Quantity"><![CDATA[1]]></column> <column columnName="PriceWithoutVAT"><![CDATA[19,47]]></column> <column columnName="PriceWithVAT"><![CDATA[24,34]]></column> <column columnName="DiscountPercentage"><![CDATA[15,00]]></column> <column columnName="PriceVAT"><![CDATA[4,87]]></column> <column columnName="PriceVATPercent"><![CDATA[25,00]]></column> <column columnName="UnitPriceVATPercent"><![CDATA[25,00]]></column> </item> </table> </Items>

When checking the xml that is being generated by the remote system, there are a few details you should be aware of:

  • The EcomOrders and EcomOrderlines values in the "table" properties are expected by the Live Integration Project.
  • If you add columns to either orders or order lines, they will automatically be available via tags in the templates for rendering the items and lists
  • The communication between Dynamicweb and the remote system, and the conversion between the XML generated by the remote system and Dynamicweb tags, is handled by the Live Integration Project, in the internal class IntegrationCustomerCenterHandler - and can be customized there