首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Dynamics GP中使用数组的GLTransaction的eConnect XML文件详细信息

在Dynamics GP中使用数组的GLTransaction的eConnect XML文件详细信息
EN

Stack Overflow用户
提问于 2013-03-22 07:02:13
回答 1查看 676关注 0票数 0

我希望使用econnect在Dynamics GP中输入单个gltransaction。

我的以下代码确实生成了一个XML文件。但是,它在XML文件中放置了三个相同的GL行项目,每个项目25美元,留下了一个不平衡的条目。

我希望它所做的是,而不是把一个75美元的借方,50美元的信贷和25美元的信贷每下面的代码。你能帮我排查一下我做错了什么吗,这样我就不会有三个$25的项目进入文件了?

提前谢谢。

代码语言:javascript
复制
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文件

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2013-03-22 09:59:40

我对我自己的问题想出了一个解决方案。

也就是说,为“每一行”创建一个新的myGLDetailLine对象实例就可以解决这个问题。

代码语言:javascript
复制
taGLTransactionLineInsert_ItemsTaGLTransactionLineInsert myGLDetailLine = new taGLTransactionLineInsert_ItemsTaGLTransactionLineInsert();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15559811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档