In this post i would be demonstrating how to use out of box Customer Service (CustCustomerService) for the following operations:
- Read a Customer
- Create a Customer
- Update a Customer
- Delete a Customer
- Find Customers
- FindKeys for Customers
CustService is the alias name i used in my code to refer Customer Service;
using CustService = ConsumeAXServices.CustomerServiceRef;
Here is the C# method to Read a Customer:
public CustService.AxdCustomer CustomerRead(ref CustService.EntityKey[] entityKeyList, string accNum = "US-003" , Boolean halt = true)
{
CustService.CustomerServiceClient proxy = null;
CustService.AxdCustomer custDoc = null;
CustService.CallContext callContext = null;
try
{
custDoc = new CustService.AxdCustomer();
CustService.EntityKey[] custKeyList = new CustService.EntityKey[1];
CustService.EntityKey custKey = new CustService.EntityKey();
custKey.KeyData = new CustService.KeyField[1];
CustService.KeyField custAccountNum = new CustService.KeyField();
custAccountNum.Field = "AccountNum";
custAccountNum.Value = accNum;
custKey.KeyData[0] = custAccountNum;
custKeyList[0] = custKey;
callContext = new CustService.CallContext() { Company = "usmf" };
proxy = new CustService.CustomerServiceClient();
custDoc = proxy.read(callContext, custKeyList);
Console.WriteLine("Cust Num - " + custDoc.CustTable[0].AccountNum);
Console.WriteLine("Cust CreditStatus - " + custDoc.CustTable[0].CreditRating);
if (halt)
Console.ReadLine();
entityKeyList = custKeyList;
}
catch (Exception ex)
{
Console.WriteLine("Error - " + ex.Message);
proxy.Abort();
Console.ReadLine();
}
finally
{
if (proxy != null)
{
proxy.Close();
proxy = null;
}
}
return custDoc;
}
Here is the C# method to Create a Customer:
public void CreateCustomer(string accNum = "SanCus003", string custName = "Santosh Cust 003")
{
CustService.CustomerServiceClient proxy = null;
CustService.AxdCustomer custDoc;
CustService.CallContext callContext = null;
CustService.AxdEntity_CustTable custTable = null;
CustService.AxdEntity_DirParty_DirOrganization dirPartyOrg = null;
CustService.AxdEntity_OrganizationName orgName = null;
try
{
custDoc = new CustService.AxdCustomer();
custTable = new CustService.AxdEntity_CustTable() { AccountNum = accNum, CustGroup = "20" };
dirPartyOrg = new CustService.AxdEntity_DirParty_DirOrganization() { NumberOfEmployees = 11, NumberOfEmployeesSpecified = true };
orgName = new CustService.AxdEntity_OrganizationName { Name = custName };
dirPartyOrg.OrganizationName = new CustService.AxdEntity_OrganizationName[] { orgName };
custDoc.CustTable = new CustService.AxdEntity_CustTable[] { custTable};
custTable.DirParty = new CustService.AxdEntity_DirParty_DirPartyTable[] { dirPartyOrg };
callContext = new CustService.CallContext() { Company = "usmf" };
proxy = new CustService.CustomerServiceClient();
var entityKeyList = proxy.create(callContext, custDoc);
var keyField = entityKeyList.FirstOrDefault().KeyData.FirstOrDefault();
Console.WriteLine("Key Field - " + keyField.Field + "Key Value - " + keyField.Value);
Console.ReadLine();
}
// removed Catch and finally block to save the space
Here is the C# method to Update a Customer:
public void UpdateCustomer(string accNum = "SanCus002", string CustName = "Santosh Cust 002 - Update3")
{
CustService.CustomerServiceClient proxy = null;
CustService.AxdCustomer custDoc = null;
CustService.CallContext callContext = null;
CustService.AxdEntity_CustTable custTable = null;
CustService.AxdEntity_DirParty_DirOrganization dirPartyOrg = null;
CustService.AxdEntity_OrganizationName orgName = null;
CustService.EntityKey[] entityKeyList = null;
try
{
custDoc = this.CustomerRead(ref entityKeyList, accNum, false);
custTable = custDoc.CustTable[0];
custTable.CreditMax = 10000;
custTable.action = CustService.AxdEnum_AxdEntityAction.update;
custTable.actionSpecified = true;
dirPartyOrg = custDoc.CustTable[0].DirParty[0] as CustService.AxdEntity_DirParty_DirOrganization;
dirPartyOrg.NumberOfEmployees = 12;
dirPartyOrg.NumberOfEmployeesSpecified = true;
dirPartyOrg.action = CustService.AxdEnum_AxdEntityAction.update;
dirPartyOrg.actionSpecified = true;
orgName = dirPartyOrg.OrganizationName[0];
orgName.updateMode = CustService.AxdEnum_ValidTimeStateUpdate.Correction;
orgName.updateModeSpecified = true;
orgName.Name = CustName;
orgName.action = CustService.AxdEnum_AxdEntityAction.update;
orgName.actionSpecified = true;
callContext = new CustService.CallContext() { Company = "usmf" };
proxy = new CustService.CustomerServiceClient();
proxy.update(callContext, entityKeyList, custDoc);
Console.WriteLine("Customer Update Success");
Console.ReadLine();
}
// removed Catch and finally block to save the space
Here is the C# method to Delete a Customer (customer shouldn't have any transactions assoicated):
public void DeleteCustomer(string accNum = "US-003")
{
CustService.CustomerServiceClient proxy = null;
CustService.CallContext callContext = null;
try
{
CustService.EntityKey[] custKeyList = new CustService.EntityKey[1];
CustService.EntityKey custKey = new CustService.EntityKey();
custKey.KeyData = new CustService.KeyField[1];
CustService.KeyField custAccountNum = new CustService.KeyField();
custAccountNum.Field = "AccountNum";
custAccountNum.Value = accNum;
custKey.KeyData[0] = custAccountNum;
custKeyList[0] = custKey;
callContext = new CustService.CallContext() { Company = "usmf" };
proxy = new CustService.CustomerServiceClient();
proxy.delete(callContext, custKeyList);
Console.WriteLine("Customer Delete Success - " + accNum);
Console.ReadLine();
}
// removed Catch and finally block to save the space
Here is the C# method to Find Customers based on a Criteria
public void FindCustomers(string custGrp = "10")
{
CustService.CustomerServiceClient proxy = null;
CustService.CallContext callContext = null;
CustService.QueryCriteria qc = null;
CustService.AxdCustomer custDoc = null;
CustService.AxdEntity_CustTable[] custTableList = null;
try
{
CustService.CriteriaElement criteria = new CustService.CriteriaElement()
{ DataSourceName = "CustTable", FieldName = "CustGroup", Value1 = custGrp };
CustService.CriteriaElement[] criteriaList = new CustService.CriteriaElement[] { criteria };
qc = new CustService.QueryCriteria();
qc.CriteriaElement = criteriaList;
callContext = new CustService.CallContext() { Company = "usmf" };
proxy = new CustService.CustomerServiceClient();
custDoc = proxy.find(callContext, qc);
custTableList = custDoc.CustTable;
foreach (var custTable in custTableList)
{
Console.WriteLine("Customer - {0} , Group - {1}" , custTable.Name, custTable.CustGroup);
}
Console.ReadLine();
}
// removed Catch and finally block to save the space
Here is the C# method to FindKeys of Customers based on a Criteria:
public void FindKeysCustomer(string custGrp = "10")
{
CustService.CustomerServiceClient proxy = null;
CustService.CallContext callContext = null;
CustService.QueryCriteria qc = null;
CustService.EntityKey[] custKeyList = null;
try
{
CustService.CriteriaElement criteria = new CustService.CriteriaElement() { DataSourceName = "CustTable", FieldName = "CustGroup", Value1 = custGrp };
CustService.CriteriaElement[] criteriaList = new CustService.CriteriaElement[] { criteria };
qc = new CustService.QueryCriteria();
qc.CriteriaElement = criteriaList;
callContext = new CustService.CallContext() { Company = "usmf" };
proxy = new CustService.CustomerServiceClient();
custKeyList = proxy.findKeys(callContext, qc);
foreach (var custKey in custKeyList)
{
CustService.KeyField keyField = custKey.KeyData.FirstOrDefault();
Console.WriteLine("Key Field - {0} , Key Value - {1}", keyField.Field, keyField.Value);
}
Console.ReadLine();
}
// removed Catch and finally block to save the space