How to Create UDT and UDFs

<< Click to Display Table of Contents >>

Navigation:  Developers' Guide >

How to Create UDT and UDFs

Navigation: Developers' Guide >

hm_btn_navigate_prevhm_btn_navigate_tophm_btn_navigate_next

How to Create UDT and UDFs

 

Show/Hide Hidden Text

This section explains how to create User Defined Field (UDF) and User Defined Table (UDT) using iVend AddOn Framework.

UDT and UDFs in iVend Retail are those custom fields which are created to cater different business requirement. iVend Retail 6.6 - Extensibility Package allows developers to create UDT and UDFs using iVend Retail Add-On Framework.

 

Follow the below mentioned steps to create UDT and UDFs on the start of an Add-On:

1.Create a new project by choosing "Class Library" as project type and and open it.

2.Add the CXS.Retail.Extensibility; and CXS.Framework.Core; and refer in the namespace.

3.Inherit BasePlugin class and override with Start() method.

4.Define and create UDT in the Start method.

5.Create an object of UserDefinedTable type.

6.Now define table properties such as name, description, and other attributes depending on business requirements.

7.Use "UserDefinedField m_Field1 = m_SampleTable.CreateField();" to create table fields and define fields' attribute.

8.Create, define, and add the properties in UDF then add them in the UDT.

9.Save the UDT to database using instance of CommitUserDefinedFields() method of UDFHelperClass class.

Click here to expand/collapse the view.

Sample Code for Creating and Updating UDT

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using CXS.Retail.Extensibility;

using CXS.Framework.Core;

using System.Windows.Forms;

namespace SampleAddOnForUDT

{

    //Details about Add on

    public class iVendAddOn:BasePlugin

    {

        UserDefinedTable m_SampleTable;

        public override string CompanyName

        {

            get { return "Company Name"; }

        }

 

        public override string Description

        {

            get { return "Sample Add-On for UDT and UDF"; }

        }

 

        public override string Name

        {

            get { return "TestUDT "; }

        }

 

        public override Version VersionInfo

        {

            get

            {

                return new Version("1.0.0.0");

            }

        }

 

        //Create UDT on start of Add on.

        public override void Start()

        {

            base.Start();

            CreateUDT();

        }

 

       //Create user defined table

        private void CreateUDT()

        {

            // No need to check table name with "u_"

            m_SampleTable = UserDefinedTableSubSystem.Instance.Load("SampleTable");

            if (m_SampleTable == null)

            {

                //for creating new UDT

                m_SampleTable = new UserDefinedTable();

                m_SampleTable.TableName = "SampleTable";

                m_SampleTable.Description = "Sample user defined Table";

                m_SampleTable.IsHistoryTracked = true;

 

                //for creating fields for user defined table --varchar  type

                UserDefinedField m_Field1 = m_SampleTable.CreateField();

                m_Field1.FieldName = "Name";

                m_Field1.Description = "Name of sample item";

                m_Field1.DataType = UserDefinedFieldDataType.String;

                m_Field1.DataLength = 50;

                m_SampleTable.AddField(m_Field1);

                UserDefinedField m_Field2 = m_SampleTable.CreateField();

                m_Field2.FieldName = "Code";

                m_Field2.Description = "Code of sample item";

                m_Field2.DataType = UserDefinedFieldDataType.Decimal;

                m_Field2.DataLength = 10;

                m_SampleTable.AddField(m_Field2);

                UserDefinedField m_Field3 = m_SampleTable.CreateField();

                m_Field3.FieldName = "DateofIssue";

                m_Field3.Description = "Issue date of sample item";

                m_Field3.DataType = UserDefinedFieldDataType.DateTime;

                m_SampleTable.AddField(m_Field3);

                CXS.Retail.BusinessLogic.UDFHelperClass.CommitUserDefinedFields(m_SampleTable);

            }

            else

            {

                //for adding fields to existing UDT

                MessageBox.Show("U_SampleTable UDT already exist.");

 

                //for adding valid values field for custom UDT.

                ExtendedBindingList<UserDefinedFieldValidValue> m_UserDefinedFieldValidValueList;

                UserDefinedField m_FieldRow = m_SampleTable.Fields.FirstOrDefault(d => d.FieldName == "U_ValidValueFieldColor");

                if (m_FieldRow == null)

                {

                    UserDefinedField m_Field4 = m_SampleTable.CreateField();

                    m_Field4.FieldName = "U_ValidValueFieldColor";

                    m_Field4.DataType = UserDefinedFieldDataType.ValidValues;

                    m_UserDefinedFieldValidValueList = m_Field4.UserDefinedFieldValidValueList;

 

                    UserDefinedFieldValidValue m_ValidValues1 = UserDefinedFieldValidValueSubSystem.Instance.Create();

                    m_ValidValues1.Id = "Red";

                    m_ValidValues1.Description = "Red Description";

                    m_UserDefinedFieldValidValueList.Add(m_ValidValues1);

 

                    UserDefinedFieldValidValue m_ValidValues2 = UserDefinedFieldValidValueSubSystem.Instance.Create();

                    m_ValidValues2.Id = "Yellow";

                    m_ValidValues2.Description = "Yellow Description";

                    m_UserDefinedFieldValidValueList.Add(m_ValidValues2);

 

                    UserDefinedFieldValidValue m_ValidValues3 = UserDefinedFieldValidValueSubSystem.Instance.Create();

                    m_ValidValues3.Id = "Green";

                    m_ValidValues3.Description = "Green Description";

                    m_UserDefinedFieldValidValueList.Add(m_ValidValues3);

 

                    m_SampleTable.AddField(m_Field4);

                    m_Field4.IsSearchable = true;

                    m_Field4.IsMandatory = true;

                    m_Field4.DisplayOnly = false;

                   

                    //updating UDT.

                    CXS.Retail.BusinessLogic.UDFHelperClass.CommitUserDefinedFields(m_SampleTable);

                }

                else

                {

                    MessageBox.Show(" U_ValidValueFieldColor Field already exist.");

                }

            }

        }

    }

}

Click here to expand/collapse the view.

Code Snippet for Creating UDFs

  UserDefinedField m_Field1 = m_SampleTable.CreateField();

                m_Field1.FieldName = "Name";

                m_Field1.Description = "Name of sample item";

                m_Field1.DataType = UserDefinedFieldDataType.String;

                m_Field1.DataLength = 50;

                m_SampleTable.AddField(m_Field1);