Create Order with nav web service in PHP

Hi.

I need to create a order from PHP using web service. I use the next code but I get this error:

Fatal error: Uncaught SoapFault exception: [a:Microsoft.Dynamics.Nav.Types.Exceptions.NavCSideException] The Sales Line already exists. Identification fields and values: Document Type=‘Order’,Document No.=‘PV091/0040388’,Line No.=‘10000’ in C:\wamp\www\soap\navcreaped.php:228 Stack trace: #0 C:\wamp\www\soap\navcreaped.php(228): SoapClient->__call(‘Update’, Array) #1 C:\wamp\www\soap\navcreaped.php(228): NTLMSoapClient->Update(Object(stdClass)) #2 {main} thrown in C:\wamp\www\soap\navcreaped.php on line 228

If I don’t create order lines, I could save the new order but I can’t create the order lines. I use the page 42 Sales_Order. Is posible to do using page 42 and 46 Sales_Line ?.

My code:

$pageURL = $baseURL.‘Page/Sales_Order’;

$service = new NTLMSoapClient($pageURL);

$create = new stdClass();

$sq = new stdClass();

$create->Sales_Order = $sq;

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

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

echo $key;

$update = new stdClass();

$sq->Key = $key;

$sq->Sell_to_Customer_No = ‘000851’;

$salesLineList = new stdClass();

$salesLine = new stdClass();

$salesLine->No = ‘VIWE1102218’;

$salesLine->Type = ‘Item’;

$salesLine->Quantity = 1;

$salesLine->Unit_Price = 101;

$salesLineList->Sales_Order_Line = $salesLine;

$sq->SalesLines = $salesLineList;

$update->Sales_Order = $sq;

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

THANKS!!

The code is perfect, the problem was $salesLine->Unit_Price = 101; I have another field.

Check your fields!!

Now!!!

HOW CAN I CREATE MORE THAN ONE ITEM LINE???

Help please!!

To create more than one detail line:

$pageURL = $baseURL.‘Page/Sales_Order’;

// Initialize Page Soap Client

$service = new NTLMSoapClient($pageURL);

// Create object

$create = new stdClass();

$sq = new stdClass();

// Add Sales Quote to Create

$create->Sales_Order = $sq;

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

// Retrieve record key to use in update request

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

echo $key;

$update = new stdClass();

$sq->Key = $key;

$sq->Sell_to_Customer_No = ‘000851’;

$sq->Pedido_web = 1;

$sq->Pedido_web_de = ‘Asociado’;

// Add sales lines

$salesLine = new stdClass();

$salesLine->Key = ‘1’;

//$salesLine->No = ‘VIWE1102218’;

$salesLine->Cross_Reference_No = ‘mWE1102218’;

//$salesLine->Location_Code = ‘ALCOBENDAS’;

$salesLine->Quantity = ‘1’;

//$salesLine->Qty_to_Ship = 1;

//$salesLine->Qty_to_Invoice = 1;

//$salesLine->Line_Discount_Amount = 5;

$salesLine->Type = ‘Item’;

// Add SalesLineList to SalesQuote

$sq->SalesLines[0] = $salesLine;

$salesLine = new stdClass();

//$salesLine->Key = ‘2’;

//$salesLine->No = ‘VIWE1102218’;

$salesLine->Cross_Reference_No = ‘mWE1102218’;

//$salesLine->Location_Code = ‘ALCOBENDAS’;

//$salesLine->Quantity = ‘1’;

//$salesLine->Qty_to_Ship = 1;

//$salesLine->Qty_to_Invoice = 1;

//$salesLine->Line_Discount_Amount = 5;

$salesLine->Type = ‘Item’;

// Add SalesLineList to SalesQuote

$sq->SalesLines[1] = $salesLine;

$update->Sales_Order = $sq;

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

But when I use the code to create sales line, if I use the quantity (commented in my code) the code crush…

I get this error:

Fatal error: Uncaught SoapFault exception: [a:Microsoft.Dynamics.Nav.Types.Exceptions.NavCSideException] The Sales Line already exists. Identification fields and values: Document Type=‘Order’,Document No.=‘PV091/0040594’,Line No.=‘10000’ in C:\wamp\www\soap\navcreaped.php:223 Stack trace: #0 C:\wamp\www\soap\navcreaped.php(223): SoapClient->__call(‘Update’, Array) #1 C:\wamp\www\soap\navcreaped.php(223): NTLMSoapClient->Update(Object(stdClass)) #2 {main} thrown in C:\wamp\www\soap\navcreaped.php on line 223

[:S][:S][:S][:S][:S][:S][:S][:S][:S][:S][:S][:S][:S][:S][:S][:S][:S][:S]

PLEASE HELP!!

It looks like the number your entering in quantity seems so be in quotes? That would indicate a string and result in an error…I’m no webservice-expert but maybe you want to take a look at this?

Regards,

Jan

Hi.

Thanks Jan.

The problem was that I cant set line details directly, I must create lines first in blank, only with ‘ITEM’ and later edit each row.

Now I need to Release Sales Document, I’m trying to do but I don’t know how; I’m trying with the Release_Sales_Document codeunit but I can’t. Anyone know how to do it?. IN PHP!

Thanks.