문제

I am trying to create a customer in MS Dynamics GP. Here is my code:

public void CreateGPCustomer(JMAOrder jd)
    {
        Customer cu = new Customer();
        cu.ModifiedDate = DateTime.Now;
        cu.IsActive = true;
        cu.Name = "Joseph Jones";
        cu.Shortname = "Joe";
        cu.StatementName = cu.Name;
        CustomerAddress cad = new CustomerAddress();
        cad.City = "Waltham";
        cad.ContactPerson = cu.Name;
        cad.CountryRegion = "US";
        cad.CreatedDate = DateTime.Now;
        cad.LastModifiedDate = DateTime.Now;
        cad.Line1 = "123 Main St";
        cad.Line2 = "12";
        PhoneNumber ph = new PhoneNumber();
        ph.CountryCode = "1";
        ph.Value = "7811234567";
        cad.Phone1 = ph;
        cad.PostalCode = "02452";
        cad.State = "MA";
        cu.Key = MakeCustomerKey("Joseph", "Jones");
        Policy p = wsDynamicsGP.GetPolicyByOperation("CreateCustomer", context);
        wsDynamicsGP.CreateCustomer(cu, context, p);
    }

I see no address has been added:

enter image description here

What code am I missing?

도움이 되었습니까?

해결책

Creating a customer address is a separate call from creating a customer. See the CreateCustomerAddress method in the Dynamics GP Web Services Reference.

        CompanyKey companyKey;
        Context context;
        CustomerKey customerKey;
        CustomerAddressKey customerAddressKey;
        CustomerAddress customerAddress;
        Policy customerAddressCreatePolicy;

        // Create an instance of the service
        DynamicsGPClient wsDynamicsGP = new DynamicsGPClient();

        // Create a context with which to call the service
        context = new Context();

        // Specify which company to use (sample company)
        companyKey = new CompanyKey();
        companyKey.Id = (-1);

        // Set up the context object
        context.OrganizationKey = (OrganizationKey)companyKey;

        // Create a customer key to specify the customer
        customerKey = new CustomerKey();
        customerKey.Id = "AARONFIT0001";

        // Create a customer address key
        customerAddressKey = new CustomerAddressKey();
        customerAddressKey.CustomerKey = customerKey;
        customerAddressKey.Id = "BILLING";

        // Create a customer address object
        customerAddress = new CustomerAddress();
        customerAddress.Key = customerAddressKey;

        // Populate properties with address information
        customerAddress.Line1 = "11403 45 St. South";
        customerAddress.Line2 = "Billing Dept.";
        customerAddress.City = "Chicago";
        customerAddress.State = "IL";
        customerAddress.CountryRegion = "USA";

        // Get the create policy for the customer address
        customerAddressCreatePolicy = wsDynamicsGP.GetPolicyByOperation("CreateCustomerAddress",
        context);

        // Create the customer address
        wsDynamicsGP.CreateCustomerAddress(customerAddress, context, customerAddressCreatePolicy);

        // Close the service
        if(wsDynamicsGP.State != CommunicationState.Faulted)
        {
            wsDynamicsGP.Close();
        }

다른 팁

There is an ability to add addresses in the same call. You just need to include addresses:

  var customerKey = new CustomerKey() { Id = "Customer1" };

  var customer = new Customer()
  {
    Key = customerKey,
    ClassKey = new CustomerClassKey() { Id = "(DEFAULT)      " },
    Addresses = new CustomerAddress[] { 
      new CustomerAddress 
      {
        Key = new CustomerAddressKey { Id = "PRIMARY", CustomerKey = customerKey },  
        City = "MyCity",
        PostalCode = "61170",
        Line1 = "Line 1",
        Phone1 = new PhoneNumber{CountryCode = "US", Value = "111"},
        Phone2 = new PhoneNumber{CountryCode = "US", Value = "222"}
      },
      new CustomerAddress 
      {
        Key = new CustomerAddressKey { Id = "SHIPTO", CustomerKey = customerKey },  
        City = "MyCity",
        PostalCode = "2222",
        Line1 = "Line 1",
        Phone1 = new PhoneNumber{CountryCode = "US", Value = "333"},
        Phone2 = new PhoneNumber{CountryCode = "US", Value = "444"}
      }
    },
  };
  var createCustomerPolicy = client.GetPolicyByOperation("CreateCustomer", context);
  client.CreateCustomer(customer, context, createCustomerPolicy);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top