2014-10-03 6 views
0

Acumatica 4.2를 사용하고 다른 시스템의 api를 통해 판매 주문서를 삽입하고 있습니다. 판매 주문서에 메모를 추가하라는 요청이 왔으며이를 수행하는 방법에 대한 유용한 정보가 없습니다. 미리 감사드립니다. 다음은 Acumatica WebAPI를 사용하여 SalesOrder를 삽입하는 코드입니다. 그것은 아주 잘 작동합니다.api를 사용하여 판매 주문을 삽입하는 동안 판매 주문서에 메모를 삽입하려면 어떻게해야합니까?

판매 주문 화면에는 판매 주문에 메모를 추가 할 수있는 오른쪽 상단에 메모 표시기가 있습니다. acumatica 웹 API를 사용하여 메모를 추가하는 방법은 무엇입니까? 또는 단순히 반환 된 SONumber를 사용하고 SONumber를 참조로 사용하여 노트를 삽입합니까? 전에 메모를 처리하지 않아도되었습니다.

try 
    { 
     cmds.AddRange(
      new SO301000_509.Command[] 
     { 
      so301000.Actions.Insert, 
        new SO301000_509.Value { Value = "SO", LinkedCommand = so301000.OrderSummary.OrderType }, 
        new SO301000_509.Value { Value = "='new'", LinkedCommand = so301000.OrderSummary.OrderNbr }, 
        new SO301000_509.Value { Value = dealerOrder.accountCode, LinkedCommand = so301000.OrderSummary.Customer }, 
        //new SO301000_509.Value { Value = ((DateTime)dealerOrder.orderDateTime).ToShortDateString(), LinkedCommand = so301000.OrderSummary.Date }, 
        new SO301000_509.Value { Value = (dealerOrder.orderDateTime), LinkedCommand = so301000.OrderSummary.Date }, 
        new SO301000_509.Value { Value = "Hubsoft Order Nbr: " + dealerOrder.hubsoftOrderNumber, LinkedCommand = so301000.OrderSummary.Description }, 
        new SO301000_509.Value { Value = dealerOrder.hubsoftOrderNumber, LinkedCommand = so301000.OrderSummary.CustomerRef }, 
        new SO301000_509.Value { Value = "HS-" + dealerOrder.purchaseOrderNumber, LinkedCommand = so301000.OrderSummary.CustomerOrder }, 
        //new SO301000_509.Value { Value = dealerOrder.hubsoftOrderNumber, LinkedCommand = so301000.OrderSummary.ControlTotal }, 
     } 
     ); 
     //create the sales order lines in loop 
     for (var idx = 0; idx < SalesOrderLine.Length; idx++) 
     { 
      cmds.AddRange(
       new SO301000_509.Command[] 
      { 
       so301000.DocumentDetails.ServiceCommands.NewRow, 
        //simple line adding 
        so301000.DocumentDetails.ServiceCommands.NewRow, 
        new SO301000_509.Value { Value = SalesOrderLine[idx].inventoryCD, LinkedCommand = so301000.DocumentDetails.InventoryID }, 
        new SO301000_509.Value { Value = SalesOrderLine[idx].UOM, LinkedCommand = so301000.DocumentDetails.UOM }, 
        new SO301000_509.Value { Value = SalesOrderLine[idx].Qty, LinkedCommand = so301000.DocumentDetails.Quantity }, 
        new SO301000_509.Value { Value = "MAIN", LinkedCommand = so301000.DocumentDetails.Warehouse},       
        new SO301000_509.Value { Value = SalesOrderLine[idx].UnitPrice, LinkedCommand = so301000.DocumentDetails.UnitPrice, Commit = true }, 
      } 
      ); 
     } 
     cmds.Add(so301000.Actions.Save);            //save all 
     cmds.Add(so301000.OrderSummary.OrderNbr);          //return Order # 

     SO301000_509.Content[] SO301000Content = context.Submit(cmds.ToArray());   //submit 
     PXTrace.WriteInformation(SO301000Content[0].OrderSummary.OrderNbr.Value); 
     acumaticaSONbr = SO301000Content[0].OrderSummary.OrderNbr.Value; 
    } 
    catch (Exception ex) 
    { 
     PXTrace.WriteError("Error adding Sales Order - " + ex.Message); 
    } 
    return acumaticaSONbr; 
+0

귀하의 질문은 매우 낮은 품질의 ... 당신이 세부 사항을 더 추가 할 수 있습니까? – Miki

+0

질문을 이해하지만 문제를 보여주는 코드 샘플을 제공하고 이미 시도한 내용을 통해 질문의 품질을 향상시킬 수 있습니다. – Gabriel

+0

@Gabriel 코드 및 설명이 업데이트되었습니다. – xDJR1875

답변

1
 Content SO301000 = context.GetSchema(); 
     context.Clear(); 
     Content[] result = context.Submit(
      new Command[]{ 
       new Value { Value = "000586", LinkedCommand = SO301000.OrderSummary.OrderNbr, Commit = true }, 
       new Value { Value = "NoteText", LinkedCommand = SO301000.OrderSummary.NoteText, Commit = true }, 
       SO301000.Actions.Save 
      } 
     ); 
+0

이 코드를 추가 했으므로 이제 판매 주문서에 메모를 삽입 할 수있게되었습니다. 고맙습니다! – xDJR1875

0

이 일을하는 또 다른 방법은 판매 주문 자체의 첫번째 삽입에 있습니다. acumember가 게시 한 예제에는 API에 대한 두 번째 호출이 필요했습니다. 한 번에 많은 판매 주문을 삽입하기 때문에 전화를 제한하고 싶습니다. 다음은 또한 작동하며 하나의 호출 만 필요합니다.

감사

 try 
     { 
      cmds.AddRange(
       new SO301000_509.Command[] 
      { 
       so301000.Actions.Insert, 
         new SO301000_509.Value { Value = "SO", LinkedCommand = so301000.OrderSummary.OrderType }, 
         new SO301000_509.Value { Value = "='new'", LinkedCommand = so301000.OrderSummary.OrderNbr }, 
         new SO301000_509.Value { Value = dealerOrder.accountCode, LinkedCommand = so301000.OrderSummary.Customer }, 
         new SO301000_509.Value { Value = (dealerOrder.orderDateTime), LinkedCommand = so301000.OrderSummary.Date }, 
         new SO301000_509.Value { Value = "Hubsoft Order Nbr: " + dealerOrder.hubsoftOrderNumber, LinkedCommand = so301000.OrderSummary.Description }, 
         new SO301000_509.Value { Value = dealerOrder.hubsoftOrderNumber, LinkedCommand = so301000.OrderSummary.CustomerRef }, 
         new SO301000_509.Value { Value = "HS-" + dealerOrder.purchaseOrderNumber, LinkedCommand = so301000.OrderSummary.CustomerOrder }, 

         **new SO301000_509.Value { Value = dealerOrder.notes, LinkedCommand = so301000.OrderSummary.NoteText},** 

         new SO301000_509.Value { Value = "1", LinkedCommand = so301000.ShippingSettingsShipToInfo.OverrideAddress }, 
         new SO301000_509.Value { Value = shipStreet1, LinkedCommand = so301000.ShippingSettingsShipToInfo.AddressLine1 }, 
         new SO301000_509.Value { Value = shipStreet2, LinkedCommand = so301000.ShippingSettingsShipToInfo.AddressLine2 }, 
         new SO301000_509.Value { Value = shipCity, LinkedCommand = so301000.ShippingSettingsShipToInfo.City }, 
         new SO301000_509.Value { Value = shipState, LinkedCommand = so301000.ShippingSettingsShipToInfo.State }, 
         new SO301000_509.Value { Value = shipCountry, LinkedCommand = so301000.ShippingSettingsShipToInfo.Country }, 
         new SO301000_509.Value { Value = shipPostal, LinkedCommand = so301000.ShippingSettingsShipToInfo.PostalCode }, 
      } 
      ); 
      //create the sales order lines in loop 
      for (var idx = 0; idx < SalesOrderLine.Length; idx++) 
      { 
       cmds.AddRange(
        new SO301000_509.Command[] 
       { 
        so301000.DocumentDetails.ServiceCommands.NewRow, 
         //simple line adding 
         so301000.DocumentDetails.ServiceCommands.NewRow, 
         new SO301000_509.Value { Value = SalesOrderLine[idx].inventoryCD, LinkedCommand = so301000.DocumentDetails.InventoryID }, 
         new SO301000_509.Value { Value = SalesOrderLine[idx].UOM, LinkedCommand = so301000.DocumentDetails.UOM }, 
         new SO301000_509.Value { Value = SalesOrderLine[idx].Qty, LinkedCommand = so301000.DocumentDetails.Quantity }, 
         new SO301000_509.Value { Value = "MAIN", LinkedCommand = so301000.DocumentDetails.Warehouse},       
         new SO301000_509.Value { Value = SalesOrderLine[idx].UnitPrice, LinkedCommand = so301000.DocumentDetails.UnitPrice, Commit = true }, 
       } 
       ); 
      } 
      cmds.Add(so301000.Actions.Save);             //save all 
      cmds.Add(so301000.OrderSummary.OrderNbr);           //return Order #