Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In this case, we create a directory named ../pages/summary/inventory and then we create a new XML file named installedItemTypeSummary.xml as follows.

 

Code Block
languagehtml/xml
titleInstalled Item Type Summary Page XML
firstline1
linenumberstrue
collapsetrue
<summary>
    <title>Installed Item Types</title>
     <sql>FROM INSTALLEDITEMTYPES
         LEFT OUTER JOIN PRODUCTS ON PRODUCTS.ProdID=INSTALLEDITEMTYPES.ProdID
         LEFT OUTER JOIN PRODUCTTYPES ON PRODUCTTYPES.ProdTypeID=INSTALLEDITEMTYPES.ProdTypeID 
         LEFT OUTER JOIN USERS CREATEDBY ON CREATEDBY.UserID=INSTALLEDITEMTYPES.InstItemTypeCreatedByUserID
        LEFT OUTER JOIN USERS UPDATEDBY ON UPDATEDBY.UserID=INSTALLEDITEMTYPES.InstItemTypeUpdatedByUserID 
        WHERE INSTALLEDITEMTYPES.INSTITEMTYPEDELETED=0
    </sql>
    <rowsperpage>100</rowsperpage>
    <primaryfield>INSTALLEDITEMTYPES.InstItemTypeID</primaryfield>
    <mainlinkfield>INSTALLEDITEMTYPES.InstItemTypeID</mainlinkfield>
    <groupby></groupby>
    <autosearch>true</autosearch>
    <hidefindbutton>false</hidefindbutton>
    <multiselect>false</multiselect>
    <userviewfilter></userviewfilter>
    
    <fieldlist>
        <field>
            <fieldname>INSTALLEDITEMTYPES.InstItemTypeName</fieldname>
            <caption>Name</caption>
            <summary>true</summary>
            <filter>true</filter>
            <fieldtype>string</fieldtype>
            <link>page.do?xml=inventory/installedItemTypeDetailBody&amp;act=itm&amp;fc=loadForm&amp;jndi=ejb/CRMUIInstalledItemType&amp;pv0=((INSTALLEDITEMTYPES.InstItemTypeID))&amp;pvc=1</link>
        </field>
        
        <field>
            <fieldname>INSTALLEDITEMTYPES.InstItemTypeAltCode</fieldname>
            <caption>Alternative Code</caption>
            <summary>true</summary>
            <filter>true</filter>
            <mouseover>false</mouseover>
            <expand>false</expand>
        </field>
        
        <field>
            <fieldname>INSTALLEDITEMTYPES.InstItemTypeDesc</fieldname>
            <caption>Description</caption>
            <summary>true</summary>
            <filter>false</filter>
            <mouseover>false</mouseover>
            <expand>false</expand>
        </field>
        
        <field>
            <fieldname>IsDefault</fieldname>
            <fieldfunction>INSTALLEDITEMTYPES.InstItemTypeDefault</fieldfunction>
            <caption>Is Default</caption>
            <fixedlookup>ejb/CRMUIInstalledItemType.getYesNoSelectBox</fixedlookup>
            <filter>true</filter>
            <filteronexpand>true</filteronexpand>
        </field>
        
        <field>
            <fieldname>IsTraceable</fieldname>
            <fieldfunction>INSTALLEDITEMTYPES.InstItemTypeIsTraceable</fieldfunction>
            <caption>Is Traceable</caption>
            <fixedlookup>ejb/CRMUIInstalledItemType.getYesNoSelectBox</fixedlookup>
            <filter>true</filter>
        </field>
        
        <field>
            <fieldname>INSTALLEDITEMTYPES.InstItemTypeDefault</fieldname>
            <caption>Is Default</caption>
            <fixedlookup>ejb/CRMUIInstalledItemType.getYesNoLookup</fixedlookup>
            <summary>true</summary>
        </field>
        
        <field>
            <fieldname>INSTALLEDITEMTYPES.InstItemTypeIsTraceable</fieldname>
            <caption>Is Traceable</caption>
            <fixedlookup>ejb/CRMUIInstalledItemType.getYesNoLookup</fixedlookup>
            <summary>true</summary>
        </field>
           <field>
               <fieldname>PRODUCTS.ProdID</fieldname>
               <caption>Product</caption>
            <filter>true</filter>
            <filteronexpand>true</filteronexpand>
            <filterlookupname>dataset;products.getproducts;prodid;prodnum</filterlookupname>
            <summary>false</summary>
           </field>
           
            <field>
               <fieldname>PRODUCTTYPES.ProdTypeID</fieldname>
               <caption>Product Type</caption>
            <filter>true</filter>
            <filteronexpand>true</filteronexpand>
            <filterlookupname>dataset;products.getproducttypes;prodtypeid;prodtypename</filterlookupname>
            <summary>false</summary>
           </field>
        <field>
            <fieldname>PRODUCTS.ProdNum</fieldname>
               <caption>Product No.</caption>
               <summary>true</summary>
               <expand>false</expand>    
           </field>
           
           <field>
            <fieldname>PRODUCTTYPES.ProdTypeName</fieldname>
               <caption>Product Type Name</caption>
               <summary>true</summary>
               <expand>false</expand>    
           </field>   
        <field>
            <fieldname>CREATEDBY.USERNAME</fieldname>
            <caption>Created by</caption>
            <summary>false</summary>
            <available>true</available>
            <expand>true</expand>
        </field>
        
        <field>
            <fieldname>INSTALLEDITEMTYPES.InstItemTypeCreatedDate</fieldname>
            <caption>Created on</caption>
            <fieldtype>date</fieldtype>
            <summary>false</summary>
            <expand>true</expand>
        </field>
        
        <field>
            <fieldname>UPDATEDBY.USERNAME</fieldname>
            <caption>Updated by</caption>
            <summary>false</summary>
            <available>true</available>
            <expand>true</expand>
        </field>
        <field>
            <fieldname>INSTALLEDITEMTYPES.InstItemTypeUpdatedDate</fieldname>
            <caption>Updated on</caption>
            <fieldtype>date</fieldtype>
            <summary>false</summary>
            <expand>true</expand>
        </field>
        
        <field>
               <fieldname>CREATEDBY.USERID</fieldname>
               <caption>Created By</caption>
            <filter>true</filter>
            <filteronexpand>true</filteronexpand>
            <filterlookupname>dataset;businessnetwork.searchusers;userid;userpersonname</filterlookupname>
            <summary>false</summary>
           </field>
           
           <field>
               <fieldname>UPDATEDBY.USERID</fieldname>
               <caption>Updated By</caption>
            <filteravailable>true</filteravailable>
            <filterlookupname>dataset;businessnetwork.searchusers;userid;userpersonname</filterlookupname>
            <summary>false</summary>
           </field>
    </fieldlist>
    
    <actions>
        <action>
            <caption>New</caption>
            <link>page.do?xml=inventory/installedItemTypeDetailBody&amp;act=new&amp;fc=createButton&amp;jndi=ejb/CRMUIInstalledItemType</link>
            <topmenu>true</topmenu>
        </action>
        <action>
            <caption>Set Default</caption>
            <link>javascript:displayModalCreate('inventory/setDefaultTypeDetailBody','ejb/CRMUIInstalledItemType','loadDefaultForm',null,'new',null,'','')</link>
        </action>
    </actions>
</summary>

...

In this tutorial, we are going to create the Installed Item Type detail page.

Creating the

...

Data Entry Page XML Files

A detail data entry page consists of 2 .xml files, the configuration definition .xml that is used to define the components of the page, and the layout .xml which is used to define the layout of the page.

Before proceeding with the creation of the detail data entry page, it is required that you read the detail page documentation found here Data Entry Page documentation.

The first thing to do is to create the configuration .xml located in ../pages/dataEntry/modulename directory.

In this case, following the Getting Started: User Interface, we  we create a installedItemTypeDetailBody.xml located in ../pages/dataEntry/inventory directory.

Code Block
languagehtml/xml
titleConfiguration Definition xml
firstline1
linenumberstrue
collapsetrue
<page>
  <id>installedItemTypeDetailBody</id>
  <name>Installed Item Type</name>
  <datapath>name</datapath>
  <datasources>
    <datasource>
      <key>form</key>
      <classname>com.crm.web.generator.datasource.DTODatasource</classname>
    </datasource>
  </datasources>
  <mainmenu>
    <components>
     <component>
        <id>cmdNew</id>
        <visiblemodes>read</visiblemodes>
        <elements>         
          <button>
            <id>1</id>
            <name>New</name>
            <setmode>new</setmode>
            <refresh>page</refresh>
            <functioncall>
              <functions>
                <function>
                  <type>ejb</type>
                  <classname>ejb/CRMUIInstalledItemType</classname>
                  <functionname>createButton</functionname>
                  <resultaction>replace</resultaction>
                  <datatype>root</datatype>
                </function>
              </functions>
            </functioncall>
          </button>
        </elements>        
      </component>
      
      <component>
        <id>cmdHome</id>
        <visiblemodes>read,edit</visiblemodes>
        <elements>
          <button>
            <id>1</id>
            <name>Home</name>
            <setmode>read</setmode>
            <refresh>page</refresh>
            <url>page.do?xml=inventory/installedItemTypeSummary&amp;act=summary</url>
          </button>                    
        </elements>
      </component>
      

      <component>
        <id>cmdEdit</id>
        <name>cmdEdit</name>
        <visiblemodes>read</visiblemodes>
        <elements>
          <button>
            <id>1</id>
            <name>Edit</name>
            <setmode>edit</setmode>
            <refresh>page</refresh>
            <functioncall>
              <functions>
                <function>
                  <type>ejb</type>
                  <classname>ejb/CRMUIInstalledItemType</classname>
                  <functionname>editButton</functionname>
                  <resultaction>replace</resultaction>
                  <datatype>root</datatype>
                  <parameters>
                    <parameter>
                      <value>[[getDTO]]</value>
                      <datatype>java.lang.Object</datatype>
                    </parameter>
                  </parameters>
                </function>
              </functions>
            </functioncall>
          </button>
        </elements>
      </component>
      <component>
        <id>cmdSave</id>
        <visiblemodes>edit,new</visiblemodes>
        <elements>
          <button>
            <id>1</id>
            <name>Save</name>
            <setmode>read</setmode>
            <refresh>page</refresh>
            <functioncall>
              <functions>
                <function>
                  <type>ejb</type>
                  <classname>ejb/CRMUIInstalledItemType</classname>
                  <functionname>saveButton</functionname>
                  <resultaction>replace</resultaction>
                  <datatype>root</datatype>
                  <parameters>
                    <parameter>
                      <value>[[getDTO]]</value>
                      <datatype>java.lang.Object</datatype>
                    </parameter>
                  </parameters>
                </function>
              </functions>
            </functioncall>
          </button>
        </elements>
      </component>
     
      <component>
            <id>cmdCancel</id>
            <name></name>
            <type></type>
            <visiblemodes>edit,new</visiblemodes>
            
            <elements>
                <button> 
                    <id>2</id> 
                    <name>Cancel</name> 
                    <setmode>read</setmode>
                    <refresh>cancel,page.do?xml=inventory/installedItemTypeSummary&amp;act=summary</refresh> 
                </button>                 
            </elements>
        </component>
        
      <component>
        <id>cmdDelete</id>
        <visiblemodes>read</visiblemodes>
        <elements>
          <button>
            <id>1</id>
            <name>Delete</name>
            <setmode>read</setmode>
            <refresh>page</refresh>
            <url>page.do?xml=inventory/installedItemTypeSummary&amp;act=summary</url>
            <functioncall>
              <functions>
                <function>
                  <type>ejb</type>
                  <classname>ejb/CRMUIInstalledItemType</classname>
                  <functionname>deleteButton</functionname>
                  <datatype>root</datatype>
                  <parameters>
                    <parameter>
                      <value>[[getDTO]]</value>
                      <datatype>java.lang.Object</datatype>
                    </parameter>
                  </parameters>
                </function>
              </functions>
            </functioncall>
          </button>
        </elements>
      </component>
    </components>
  </mainmenu>
  <main>
    <components>
          <component>
            <id>InstItemTypeName</id>
            <name>Name</name>
            <elements>
              <label>
                <id>InstItemTypeNameLabel</id>
                <value>Name</value>
              </label>
              <textbox>
                <id>institemtypename</id>
                <datapath>name</datapath>
                <size>normal</size>
              </textbox>
            </elements>
          </component>
    
    <component>
        <id>description</id>
        <name>Description</name>
        <elements>
              <label>
            <id>Desc_Label</id>
            <value>Description</value>
          </label>
                <textarea>
                    <id>description_Val</id>
                    <datapath>description</datapath>
                </textarea>
                <modal>
                    <id>Description_button</id>
                    <visiblemodes>edit,new,read</visiblemodes>
                    <name>Notes</name>
                    <type>notes</type>
                    <refresh>component,false:false:null:description</refresh>
                    <assignments>
                      <assignment>
                        <datapath>description</datapath>
                      </assignment>
                    </assignments>
                </modal>
        </elements>
      </component>
          <component>
            <id>InstItemTypeAltCode</id>
            <name>Alternative Code</name>
            <elements>
            <label>
                <id>InstItemTypeAltCodeLabel</id>
                <value>Alternative Code</value>
              </label>
              <textbox>
                <id>institemtypealtcode</id>
                <datapath>altCode</datapath>
                <size>large</size>
              </textbox>
            </elements>
          </component>
      
              <component>
                <id>Product</id>
                <name>Product</name>
                <visibilityconditions>'[[getValue,java.lang.String,isTraceable]]'!='1'</visibilityconditions> 
                <elements>
                    <label>
                        <id>Product_lbl</id>
                        <value>Product</value>
                    </label>
                    <searchtextbox>
                        <id>ProdNum_Value</id>
                        <datatype>alias</datatype>
                        <datapath>dummyProd</datapath>
                        <value>[[getValue,java.lang.String,product/number]]</value>
                        <url>page.do?xml=products/prodDetailBody&amp;act=itm&amp;jndi=ejb/CRMBOProduct&amp;fc=read&amp;pv0=[[getValue,java.lang.String,products/number]]&amp;pvc=1</url>
                        <modalref>FindProduct,false:false:null:Product</modalref>
                    </searchtextbox>
                    <modal>
                        <id>FindProduct</id>
                        <visiblemodes>edit,new</visiblemodes>
                        <name>Find</name>
                        <type>search</type>
                        <refresh>component,false:false:null:Product</refresh>
                        <setmode>edit</setmode>
                        <datatype>alias</datatype>
                        <datapath>dummyProd</datapath>
                        <datasetname>products.getproducts</datasetname>
                          <datasetsearchfield>prodnum</datasetsearchfield>
                        <datasetreturnhiddenfield>prodid</datasetreturnhiddenfield>
                          <autosearch>true</autosearch>
                        <assignments>
                          <assignment>
                            <classname>com.crm.dataobject.products.CRMDOProduct</classname>
                            <datapath>product</datapath>
                            <value>id</value>
                            <datatype>load</datatype>
                          </assignment>
                        </assignments>
                  </modal>
                </elements>
            </component>
    
            <component>
                <id>ProductType</id>
                <name>Product Type</name>
                <visibilityconditions>'[[getValue,java.lang.String,isTraceable]]'=='1'</visibilityconditions> 
                <elements>
                    <label>
                        <id>ProductType_lbl</id>
                        <value>Product Type</value>
                    </label>
                    <selectbox>
                        <id>ProductType_Value</id>
                        <lookuptype>dataset</lookuptype>
                        <lookupname>products.getproducttypes;prodtypeid;prodtypename</lookupname>
                        <datapath>productType</datapath>
                        <datapathid>id</datapathid>
                        <classname>com.crm.dataobject.products.CRMDOProductType</classname>
                        <datatype>load</datatype>
                        <reload>false</reload>
                        <refresh>page</refresh>
                    </selectbox>         
                </elements>
            </component>
    
          <component>
            <id>InstItemTypeIsTraceable</id>
            <name>Is Traceable</name>
            <elements>
            <label>
                <id>InstItemTypeIsTraceableLabel</id>
                <value>Is Traceable</value>
              </label>
              <checkbox>
                <id>InstItemTypeIsTraceable_val</id>
                <datapath>isTraceable</datapath>
                <truevalue>1</truevalue>
                <falsevalue>0</falsevalue>
                <truelabel>Yes</truelabel>
                <falselabel>No</falselabel>
                <refresh>page</refresh>
                <onchange>
                    <functions>
                      <function>
                        <type>ejb</type>
                        <classname>ejb/CRMUIInstalledItemType</classname>
                        <functionname>echoDTO</functionname>
                        <resultaction>replace</resultaction>
                        <datatype>root</datatype>
                        <parameters>
                          <parameter>
                            <value>[[getDTO]]</value>
                            <datatype>java.lang.Object</datatype>
                          </parameter>
                        </parameters>
                      </function>
                    </functions>
                </onchange>
              </checkbox>
            </elements>
          </component>
    </components>
  </main>
  <details>
    <tabs>
          <tab>
              <id>standardCosts</id>
            <name>Standard Costs</name>
            <datasourcesetkey>standardCosts</datasourcesetkey>
            <visibilityconditions>'[[getValue,java.lang.String,isTraceable]]'!='1'</visibilityconditions> 
            <functioncall>
              <functions>
                <function>
                  <type>ejb</type>
                  <classname>ejb/CRMUIInstalledItemType</classname>
                  <functionname>loadStandardCostTab</functionname>
                  <resultaction>setreplace</resultaction>
                  <datapath>standardCosts</datapath>
                  <datasourcesetkey>standardCosts</datasourcesetkey>
                  <parameters>
                     <parameter>
                     <value>[[getDTO]]</value>
                     <datatype>java.lang.Object</datatype>
                </parameter>
                  </parameters>
                </function>
              </functions>
            </functioncall>
            
         <tabmenu>
            <components>
           <component>
              <id>add</id>
              <name>Add</name>
              <elements>
                  <button>
                      <id>add_button</id>
                      <visiblemodes>edit,new</visiblemodes>
                      <name>Add</name>
                      <refresh>tab,standardCosts</refresh>
                      <functioncall>
                    <functions>
                      <function>
                        <type>ejb</type>
                        <classname>ejb/CRMUIInstalledItemType</classname>
                        <functionname>addStandardCostButton</functionname>
                        <datasourcesetkey>standardCosts</datasourcesetkey>
                        <resultaction>setappend</resultaction>
                        <parameters>
                          <parameter>
                            <value>[[getDTO]]</value>
                            <datatype>java.lang.Object</datatype>
                          </parameter>
                        </parameters>
                      </function>
                    </functions>
                  </functioncall>
                  </button>
              </elements>
            </component>

            <component>
              <id>remove</id>
              <elements>
                <button>
                  <id>remove_button</id>
                  <visiblemodes>edit,new</visiblemodes>
                  <name>Remove</name>
                  <refresh>tab,standardCosts</refresh>
                  <functioncall>
                    <functions>
                      <function>
                        <type>ejb</type>
                        <classname>ejb/CRMUIInstalledItemType</classname>
                        <functionname>removeStandardCostButton</functionname>
                        <datasourcesetkey>standardCosts</datasourcesetkey>
                        <resultaction>markdeleted</resultaction>
                        <parameters>
                          <parameter>
                            <value>[[getSelectedDTOs,java.lang.String,standardCosts]]</value>
                            <datatype>java.lang.Object</datatype>
                          </parameter>
                         </parameters>
                      </function>
                    </functions>
                  </functioncall>
                </button>
              </elements>
            </component>
            
            </components>
        </tabmenu>
        
         <components>
             
              <component>
                <id>removeLine</id>
                <elements>
                  <rowselector>
                    <datapath>id</datapath>
                  </rowselector>
                </elements>
              </component>

                <component>
                    <id>FromDate</id>
                    <name>From Date</name>
                    <elements>
                        <textbox>
                            <id>FromDate_txt</id>
                            <datapath>fromDate</datapath>
                            <datatype>java.util.Date</datatype>
                            <dataformatting>DATEONLY</dataformatting>
                            <readonly>false</readonly>
                        </textbox>
                        <modal>
                        <id>1</id>
                        <visiblemodes>edit,new</visiblemodes>
                        <name>Date</name>
                        <type>date</type>
                        <refresh>component,true:false:standardCosts:FromDate</refresh>
                        <setmode>edit</setmode>
                        <assignments>
                            <assignment>
                                <datapath>standardCosts[CURRENT_ROW]/fromDate</datapath>
                                <datatype>java.util.Date</datatype>
                            </assignment>
                        </assignments>
                    </modal>
                    </elements>
                </component>
                  
                   <component>
                    <id>ToDate</id>
                    <name>To Date</name>
                    <elements>
                        <textbox>
                            <id>ToDate_txt</id>
                            <datapath>toDate</datapath>
                            <datatype>java.util.Date</datatype>
                            <dataformatting>DATEONLY</dataformatting>
                            <readonly>false</readonly>
                        </textbox>
                        <modal>
                        <id>1</id>
                        <visiblemodes>edit,new</visiblemodes>
                        <name>Date</name>
                        <type>date</type>
                        <refresh>component,true:false:standardCosts:ToDate</refresh>
                        <setmode>edit</setmode>
                        <assignments>
                            <assignment>
                                <datapath>standardCosts[CURRENT_ROW]/toDate</datapath>
                                <datatype>java.util.Date</datatype>
                            </assignment>
                        </assignments>
                    </modal>
                    </elements>
                </component>


          <component>
            <id>unitCostAmount</id>
            <name>Unit Cost</name>
            <elements>
              <textbox>
                <id>unitCostAmountValue</id>
                <datapath>unitCostAmount</datapath>
                <size>smaller</size>
                <dataformatting>DIGITS:2</dataformatting>
                <datatype>java.math.BigDecimal</datatype>
                <readonly>false</readonly>
                <refresh>page</refresh>
              </textbox>
            </elements>
          </component>

                        
            </components>
          </tab>
    </tabs>
  </details>
</page>

...

The next thing to do is to create the layout .xml. So, we create a installedItemTypeDetailBodylayout.xml located also in ../pages/dataEntry/inventory directory.

Code Block
languagehtml/xml
titleLayout XML
firstline1
linenumberstrue
collapsetrue
<page>
  <mainmenu>
    <components>
        <component>
        <id>cmdHome</id>
      </component>
      <component>
        <id>cmdNew</id>
      </component>      
      <component>
        <id>cmdEdit</id>
      </component>
      <component>
        <id>cmdDelete</id>
      </component>
      <component>
        <id>cmdSave</id>
      </component>
      <component>
        <id>cmdCancel</id>
      </component>
    </components>
  </mainmenu>
  <main>
    <view>
      <type>areas</type>
      <screenareas>
        <screenarea>
          <leftscreenarea>
            <sections>
              <section>
                <id>Main_Information</id>
              </section>
              <section>
                <id>Log_Information</id>
              </section>                  
            </sections>
          </leftscreenarea>
        </screenarea>
      </screenareas>
    </view>
    <sections>
      <section>
        <id>Main_Information</id>
        <name>Main Information</name>
        <disable>false</disable>
        <left>
          <components>
            <component>
              <id>InstItemTypeName</id>
            </component>
            <component>
              <id>description</id>
            </component>
            <component>
              <id>InstItemTypeAltCode</id>
            </component>
          </components>
        </left>
        <right>
          <components> 
            <component>
              <id>InstItemTypeIsTraceable</id>
            </component>      
            <component>
                <id>Product</id>
            </component>
            <component>
                <id>ProductType</id>
            </component>        
          </components>
        </right>
      </section>
      <section>
        <id>Log_Information</id>
        <name>Log Information</name>
        <disable>false</disable>
        <left>
          <components>
            <component><id>file:LogInfo/LogInfoGroup.xml</id></component>
          </components>
        </left>
        <right>
          <components>       
          </components>
        </right>
      </section>      
    </sections>
  </main>
  <details>
      <view>list</view>
    <tabs>
       <tab>
        <id>standardCosts</id>
        <disable>false</disable>
        <preload>true</preload>
        <components>
          <component>
            <id>removeLine</id>
          </component>
          <component>
            <id>FromDate</id>
          </component>
          <component>
            <id>ToDate</id>
          </component>
          <component>
            <id>unitCostAmount</id>
            </component>    
        </components>
      </tab>
    </tabs>
  </details>
</page>

...