WS: SoapFault: The Sales Header already exists.

Hi guys,

I’m trying to post (create) a sales quote using page 41 Sales Quote publishes as web service (Nav 2009 SP1) and got error as follows:

SoapFault: The Sales Header already exists. Identification fields and values: Document Type=‘Quote’,No.=‘1005’


Code is (php):

$create = new Create();
$sq = new SalesQuote();
$sq->Sell_to_Customer_No = ‘01905899’;
$sq->Sell_to_Contact_No = ‘CT000010’;
$sq->Sell_to_Customer_Name = ‘Elkhorn Airport’;
$sq->Sell_to_Address = ‘105 Buffalo Dr.’;
$sq->Sell_to_Post_Code = ‘CA-MB R0M 0N0’;
$sq->Sell_to_City = ‘Elkhorn’;
$sq->Sell_to_Contact = ‘Mr. Ryan Danner’;
$sq->Order_Date = ‘2011-01-28’;
$sq->Document_Date = ‘2011-01-28’;
$sq->Requested_Delivery_Date = ‘2011-02-10’;
$sq->Bill_to_Customer_No = ‘01905899’;
$sq->Bill_to_Contact_No = ‘CT000010’;
$sq->Shipment_Method_Code = ‘EXW’;
$sq->Due_Date = ‘2011-02-05’;
$sq->Salesperson_Code = ‘JR’;
$sq->Status = ‘Open’;
$sq->Currency_Code = ‘DKK’;

$salesLineList = new Sales_Quote_Line_List();

$salesLine = new Sales_Quote_Line();
$salesLine->No = 1001;
$salesLine->Type = ‘Item’;
$salesLine->Quantity = 1;
$salesLine->Unit_Price = 52020.20;

// Add SalesQuoteLine to SalesLineList
$salesLineList->Sales_Quote_Line = $salesLine;

// Add SalesLineList to SalesQuote
$sq->SalesLines = $salesLineList;

// Add Sales Quote to Create
$create->SalesQuote = $sq;
$result = $service->create($create);


Am I doing something wrong?

I’ve found solutions myself. For those who may find this interesting:

links:

Basically, the idea is that first SalesQuote must be created with empty fields, and then updated with additional details and sales lines.

Code (PHP):

// Create object

$create = new Create();

$sq = new SalesQuote();

// Add Sales Quote to Create

$create->SalesQuote = $sq;

$result = $service->create($create);

// Retrieve record key to use in update request

$key = $result->SalesQuote->Key;

$update = new Update();

$sq->Key = $key;

$sq->Sell_to_Customer_No = ‘01905899’;

$sq->Sell_to_Contact_No = ‘CT000010’;

// Add other details here

// Add sales lines

$salesLineList = new Sales_Quote_Line_List();

$salesLine = new Sales_Quote_Line();

$salesLine->No = 1001;

$salesLine->Type = ‘Item’;

$salesLine->Quantity = 1;

$salesLine->Unit_Price = 52020.20;

$salesLine->Variant_Code = ‘SATIN240’;

// Add SalesQuoteLine to SalesLineList

$salesLineList->Sales_Quote_Line = $salesLine;

// Add SalesLineList to SalesQuote

$sq->SalesLines = $salesLineList;

$update->SalesQuote = $sq;

$result = $service->Update($update);

Hi Mike

I am currently doing some development in PHP and passing my data via Arrays rather than this method that you are using.

I’ve taken an interest in the method you’re using and wanted to experiment with it, just wondering if it would be possible please could post or email me the object codes that you have used.

Thanks

Joeh

How many Sales Quote Lines are you entering.