2013-03-21 4 views
0

econnect를 사용하여 Dynamics GP에서 단일 gltransaction을 입력하려고합니다.Dynamics GP에서 배열을 사용하여 GLTransaction에 대한 eConnect XML 파일 세부 정보

아래 코드는 XML 파일을 생성합니다. 그러나 XML 파일에 3 개의 동일한 GL 행 항목을 25 달러에 각각 배치하여 불균형 항목을 남깁니다.

내가 대신하고 싶은 점은 아래 코드 당 $ 75 이체, $ 50 크레딧 및 $ 25 크레딧입니다. 내가 특별히 잘못한 일을 해결할 수 있도록 도와 주셔서 3 개의 $ 25 항목이 파일에 들어 가지 않습니까? 사전에

감사합니다.

string DTime = DateTime.Today.ToString(); 
string CurrentDatabase = "OCITE"; 
string NextJEno = GetNextJournal.GetNextJournalEntry(CurrentDatabase); 

eConnectType eConnect = new eConnectType(); 

GLTransactionType myGLTrxType = new GLTransactionType(); 
taGLTransactionHeaderInsert myGLHeader = new taGLTransactionHeaderInsert(); 
taGLTransactionLineInsert_ItemsTaGLTransactionLineInsert [] myGLDetail = new taGLTransactionLineInsert_ItemsTaGLTransactionLineInsert[3]; 
taGLTransactionLineInsert_ItemsTaGLTransactionLineInsert myGLDetailLine = new taGLTransactionLineInsert_ItemsTaGLTransactionLineInsert(); 

myGLDetailLine.BACHNUMB = CurrentDatabase; 
myGLDetailLine.JRNENTRY = Int32.Parse(NextJEno); 
myGLDetailLine.CRDTAMNT = (decimal)0; 
myGLDetailLine.DEBITAMT = (decimal)75.00; 
myGLDetailLine.ACTNUMST = "1000-0000-C"; 

myGLDetail[0] = myGLDetailLine; 

myGLDetailLine.BACHNUMB = CurrentDatabase; 
myGLDetailLine.JRNENTRY = Int32.Parse(NextJEno); 
myGLDetailLine.CRDTAMNT = (decimal)50; 
myGLDetailLine.DEBITAMT = (decimal)0; 
myGLDetailLine.ACTNUMST = "6560-0000-C"; 

myGLDetail[1] = myGLDetailLine; 

myGLDetailLine.BACHNUMB = CurrentDatabase; 
myGLDetailLine.JRNENTRY = Int32.Parse(NextJEno); 
myGLDetailLine.CRDTAMNT = (decimal)25; 
myGLDetailLine.DEBITAMT = (decimal)0; 
myGLDetailLine.ACTNUMST = "5120-0000-C"; 

myGLDetail[2] = myGLDetailLine; 

myGLHeader.BACHNUMB = CurrentDatabase; 
myGLHeader.JRNENTRY = Int32.Parse(NextJEno); 
myGLHeader.REFRENCE = "REFRENCE"; 
myGLHeader.TRXDATE = DTime; 
myGLHeader.TRXTYPE = 0; 

myGLTrxType.taGLTransactionLineInsert_Items = myGLDetail; 
myGLTrxType.taGLTransactionHeaderInsert = myGLHeader; 
GLTransactionType[] myGLType = { myGLTrxType }; 
eConnect.GLTransactionType = myGLType; 

FileStream streamFile = new FileStream(filename, FileMode.Create); 
XmlTextWriter Xmlwriter = new XmlTextWriter(streamFile, new UTF8Encoding()); 

XmlSerializer serializer = new XmlSerializer(eConnect.GetType()); 
serializer.Serialize(Xmlwriter, eConnect); 
Xmlwriter.Close(); 

XML 파일

<eConnect xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<GLTransactionType> 
<eConnectProcessInfo xsi:nil="true" /> 
<taRequesterTrxDisabler_Items xsi:nil="true" /> 
<taGLTransactionLineInsert_Items> 
<taGLTransactionLineInsert> 
<BACHNUMB>OCITE</BACHNUMB> 
<JRNENTRY>1750</JRNENTRY> 
<CRDTAMNT>25</CRDTAMNT> 
<DEBITAMT>0</DEBITAMT> 
<ACTNUMST>5120-0000-C</ACTNUMST> 
</taGLTransactionLineInsert> 
<taGLTransactionLineInsert> 
<BACHNUMB>OCITE</BACHNUMB> 
<JRNENTRY>1750</JRNENTRY> 
<CRDTAMNT>25</CRDTAMNT> 
<DEBITAMT>0</DEBITAMT> 
<ACTNUMST>5120-0000-C</ACTNUMST> 
</taGLTransactionLineInsert> 
<taGLTransactionLineInsert> 
<BACHNUMB>OCITE</BACHNUMB> 
<JRNENTRY>1750</JRNENTRY> 
<CRDTAMNT>25</CRDTAMNT> 
<DEBITAMT>0</DEBITAMT> 
<ACTNUMST>5120-0000-C</ACTNUMST> 
</taGLTransactionLineInsert> 
</taGLTransactionLineInsert_Items> 
<taAnalyticsDistribution_Items xsi:nil="true" /> 
<taGLTransactionHeaderInsert> 
<BACHNUMB>OCITE</BACHNUMB> 
<JRNENTRY>1750</JRNENTRY> 
<REFRENCE>REFRENCE</REFRENCE> 
<TRXDATE>3/21/2013 12:00:00 AM</TRXDATE> 
<TRXTYPE>0</TRXTYPE> 
</taGLTransactionHeaderInsert> 
<taMdaUpdate_Items xsi:nil="true" /> 
</GLTransactionType> 
</eConnect> 

답변

0

나는 내 자신의 질문에 대한 해결책으로 내놓았다.

즉, '모든'단일 행에 대한 myGLDetailLine 객체의 새 인스턴스를 만들면이 문제가 해결됩니다.

taGLTransactionLineInsert_ItemsTaGLTransactionLineInsert myGLDetailLine = new taGLTransactionLineInsert_ItemsTaGLTransactionLineInsert();