1+ <?xml version =" 1.0" encoding =" utf-8" ?>
2+ <AxClass xmlns : i =" http://www.w3.org/2001/XMLSchema-instance" >
3+ <Name >DEVIntegTutorialExportBulkCustInvEDIInc</Name >
4+ <SourceCode >
5+ <Declaration ><![CDATA[
6+ public class DEVIntegTutorialExportBulkCustInvEDIInc extends DEVIntegExportBulkBase
7+ {
8+ DEVIntegParametersPerCompany integParametersPerCompany;
9+
10+ DialogField dfFromDate;
11+ TransDate fromDate;
12+
13+ DialogField dfToDate;
14+ TransDate toDate;
15+
16+ Range invoiceIdRange;
17+ DialogField dlgInvoiceIdRange;
18+
19+ DEVIntegExportBulkIncrementalType exportType;
20+ DialogField dlgExportType;
21+
22+ DEVIntegTmpExportRecordsMark tmpExportRecordsMark;
23+
24+ #define.CurrentVersion(1)
25+ #localmacro.CurrentList
26+ exportType,
27+ fromDate,
28+ toDate
29+ #endmacro
30+
31+ }
32+ ]]> </Declaration >
33+ <Methods >
34+ <Method >
35+ <Name >exportQueryInit</Name >
36+ <Source ><![CDATA[
37+ public Query exportQueryInit()
38+ {
39+ Query query;
40+
41+ QueryBuildDataSource qBDS;
42+
43+ query = new Query();
44+
45+ qBDS = query.addDataSource(tablenum(CustInvoiceJour));
46+ qBDS.addRange(FieldNum(CustInvoiceJour, InvoiceAccount)).value('US-005');
47+ qBDS.addRange(FieldNum(CustInvoiceJour, SalesType)).value(SysQuery::value(SalesType::Sales));
48+
49+ qBDS.addRange(FieldNum(CustInvoiceJour, InvoiceDate));
50+ qBDS.addRange(FieldNum(CustInvoiceJour, InvoiceId));
51+
52+ return query;
53+ }
54+
55+ ]]> </Source >
56+ </Method >
57+ <Method >
58+ <Name >dialog</Name >
59+ <Source ><![CDATA[
60+ public Object dialog()
61+ {
62+ DialogRunbase dialog = super();
63+ ;
64+ dlgInvoiceIdRange = dialog.addFieldValue(extendedtypestr(Range), invoiceIdRange, "Invoice range");
65+
66+ dfFromDate = dialog.addField(extendedTypeStr(FromDate));
67+ dfToDate = dialog.addField(extendedTypeStr(ToDate));
68+
69+ dlgExportType = dialog.addFieldValue(enumstr(DEVIntegExportBulkIncrementalType), exportType);
70+
71+ return dialog;
72+ }
73+
74+ ]]> </Source >
75+ </Method >
76+ <Method >
77+ <Name >getFromDialog</Name >
78+ <Source ><![CDATA[
79+ public boolean getFromDialog()
80+ {
81+ ;
82+ fromDate = dfFromDate.value();
83+ toDate = dfToDate.value();
84+ exportType = dlgExportType.value();
85+
86+ invoiceIdRange = dlgInvoiceIdRange.value();
87+
88+ return super();
89+ }
90+
91+ ]]> </Source >
92+ </Method >
93+ <Method >
94+ <Name >pack</Name >
95+ <Source ><![CDATA[
96+ public container pack()
97+ {
98+ return [#CurrentVersion, #CurrentList, super()];
99+ }
100+
101+ ]]> </Source >
102+ </Method >
103+ <Method >
104+ <Name >unpack</Name >
105+ <Source ><![CDATA[
106+ public boolean unpack(container _packedClass)
107+ {
108+ Version version = RunBase::getVersion(_packedClass);
109+ container base;
110+ boolean res;
111+ switch (version)
112+ {
113+ case #CurrentVersion:
114+ [version,#CurrentList, base] = _packedClass;
115+ res = super(base);
116+ break;
117+ default:
118+ return false;
119+ }
120+ return res;
121+ }
122+
123+ ]]> </Source >
124+ </Method >
125+ <Method >
126+ <Name >exportData</Name >
127+ <Source ><![CDATA[
128+ public void exportData()
129+ {
130+ CustInvoiceJour custInvoiceJour;
131+ QueryBuildDataSource qbds;
132+ QueryRun qr;
133+ Query query;
134+ QueryBuildRange qbrInvoiceDate;
135+
136+ integParametersPerCompany = DEVIntegParametersPerCompany::find();
137+
138+ this.initCSVStream();
139+
140+ query = this.exportQueryGet();
141+ qbds = query.dataSourceTable(tablenum(CustInvoiceJour));
142+
143+ qbrInvoiceDate = qbds.addRange(FieldNum(CustInvoiceJour, InvoiceDate));
144+
145+ if (fromDate || toDate)
146+ {
147+ qbrInvoiceDate.value(SysQuery::range(fromDate, toDate));
148+ }
149+ if (invoiceIdRange)
150+ {
151+ qbds.addRange(FieldNum(CustInvoiceJour, InvoiceId)).value(invoiceIdRange);
152+ }
153+ if (exportType == DEVIntegExportBulkIncrementalType::Incremental)
154+ {
155+ qbds.addRange(FieldNum(CustInvoiceJour, DEVTutorialIntegEDIIsSend)).value(queryValue(NoYes::No));
156+ }
157+ qr = new QueryRun(query);
158+
159+ while (qr.next())
160+ {
161+ custinvoicejour = qr.get(TableNum(CustInvoiceJour));
162+
163+ this.exportRecord(custInvoiceJour);
164+
165+ tmpExportRecordsMark.RefRecId = custInvoiceJour.RecId;
166+ tmpExportRecordsMark.insert();
167+ }
168+ this.sendFileToStorageNotEmpty();
169+
170+ if (! isTestRun)
171+ {
172+ ttsbegin;
173+ custInvoiceJour = null;
174+ update_recordset custInvoiceJour
175+ setting DEVTutorialIntegEDISendDateTime = exportStartDateTime,
176+ DEVTutorialIntegEDIIsSend = true
177+ exists join tmpExportRecordsMark
178+ where tmpExportRecordsMark.RefRecId == custInvoiceJour.RecId;
179+ ttscommit;
180+ }
181+
182+
183+ }
184+
185+ ]]> </Source >
186+ </Method >
187+ <Method >
188+ <Name >exportRecord</Name >
189+ <Source ><![CDATA[
190+ void exportRecord(CustInvoiceJour _custInvoiceJour)
191+ {
192+ CustInvoiceTrans custinvoicetrans;
193+ str invoiceDateStr;
194+ int lineCounter;
195+ real realPrice;
196+ str realPriceStr;
197+ CustTable custTable;
198+ SalesTable salesTable;
199+ Markuptrans markuptrans;
200+ real lastlinenum;
201+ Qty totalQty;
202+ str barCodeStr;
203+ ;
204+
205+ lineCounter = 0;
206+
207+ custTable = CustTable::find(_custinvoicejour.OrderAccount);
208+ salesTable = SalesTable::find(_custInvoiceJour.SalesId);
209+
210+
211+ invoiceDateStr = date2str(_custinvoicejour.InvoiceDate,123,2,3,2,3,2);
212+ invoiceDateStr = strReplace(invoiceDateStr, ".", "");
213+
214+ container lineData = ["H",
215+ "ContosoUSA",
216+ _custInvoiceJour.invoiceAmount >= 0 ? "IN" : "CR",
217+ "",
218+ _custinvoicejour.InvoiceId,
219+ invoiceDateStr,
220+ _custinvoicejour.CurrencyCode == Ledger::accountingCurrency(CompanyInfo::current()) ? "" : _custinvoicejour.CurrencyCode];
221+
222+ this.writeDataLine(lineData);
223+
224+ while select custinvoicetrans
225+ order by LineNum, itemid
226+ where custinvoicetrans.InvoiceId == _custinvoicejour.InvoiceId &&
227+ custinvoicetrans.SalesId == _custinvoicejour.SalesId
228+ {
229+ linecounter++;
230+ totalQty += custinvoicetrans.Qty;
231+
232+ InventDim inventDim = custinvoicetrans.inventDim();
233+
234+ if (custInvoiceTrans.SumLineDiscMST && custInvoiceTrans.Qty)
235+ {
236+ realPrice = decRound(custInvoiceTrans.SalesPrice - (custInvoiceTrans.SumLineDiscMST/custInvoiceTrans.Qty),4);
237+ realPriceStr = num2str(realPrice,1,2,1,0);
238+ }
239+ else
240+ {
241+ realPriceStr = num2Str(custinvoicetrans.SalesPrice,1,2,1,0);
242+ }
243+ InventItemBarcode inventItemBarcode = inventItemBarcode::findItemId(custInvoiceTrans.ItemId, false, false, 'EAN-13');
244+ barCodeStr = inventItemBarcode.ItemBarCode;
245+ if(! barCodeStr)
246+ {
247+ barCodeStr = custinvoicetrans.ItemId + '-' + inventDim.InventColorId + '-' + inventDim.InventSizeId;
248+ }
249+
250+ lastlinenum = custinvoicetrans.LineNum;
251+
252+ this.writeDataLine(["D",
253+ num2str(custinvoicetrans.LineNum,1,0,0,0),
254+ salesTable.PurchOrderFormNum,
255+ barCodeStr,
256+ custinvoicetrans.itemName(),
257+ num2str(custinvoicetrans.Qty,1,2,1,0),
258+ custinvoicetrans.SalesUnit,
259+ num2str(custInvoiceTrans.SalesPrice,1,2,1,0),
260+ num2str(custInvoiceTrans.DiscPercent,1,2,1,0),
261+ realPriceStr,
262+ _custInvoiceJour.InclTax ? "Y" : "",
263+ num2str(custinvoicetrans.Qty * custInvoiceTrans.SalesPrice,1,2,1,0),
264+ num2str(custInvoiceTrans.SumLineDisc,1,2,1,0),
265+ num2str(custInvoiceTrans.LineAmount,1,2,1,0),
266+ num2str(custInvoiceTrans.TaxAmount,1,2,1,0),
267+ custInvoiceTrans.TaxAmount ? num2str(decRound(custinvoicetrans.LineAmount/custInvoiceTrans.TaxAmount, 0) * 100,1,0,0,0) : num2str(0.0,1,0,0,0)]);
268+ }
269+
270+ while select markuptrans
271+ where markuptrans.TransRecId == _custinvoicejour.RecId &&
272+ markuptrans.TransTableId == _custinvoicejour.TableId
273+ {
274+ lastLineNum++;
275+
276+ linecounter++;
277+
278+ this.writeDataLine(["M",
279+ num2str(lastLineNum,1,0,0,0),
280+ salesTable.PurchOrderFormNum,
281+ "EN",
282+ "CHARGE",
283+ markuptrans.MarkupCode,
284+ num2str(markuptrans.Value,1,2,1,0),
285+ num2str(markuptrans.CalculatedAmount + markuptrans.TaxAmount,1,2,1,0),
286+ num2str(markuptrans.TaxAmount,1,2,1,0),
287+ markuptrans.TaxAmount ? num2str(decRound(markuptrans.CalculatedAmount/markuptrans.TaxAmount, 0) * 100,1,0,0,0) : num2str(0.0,1,0,0,0)]);
288+ }
289+
290+ this.writeDataLine(["S",
291+ num2str(linecounter,1,0,0,0),
292+ num2str(_custInvoiceJour.InvoiceAmount,1,2,1,0),
293+ num2str(totalQty,1,0,0,0),
294+ num2str(_custInvoiceJour.SumTax,1,2,1,0)]);
295+ }
296+
297+ ]]> </Source >
298+ </Method >
299+ <Method >
300+ <Name >initDefaultParameters</Name >
301+ <Source ><![CDATA[
302+ public DEVIntegMessageTypeTableOutbound initDefaultParameters(DEVIntegMessageTypeTableOutbound _messageTypeTableOutbound)
303+ {
304+ DEVIntegMessageTypeTableOutbound tableOutbound = super(_messageTypeTableOutbound);
305+ tableOutbound.FileNameParameterD = 'yyyyMMdd';
306+ tableOutbound.FileName = 'EDICustInvoices_%d_INV.CSV';
307+ tableOutbound.FileColumnDelimiter = ',';
308+
309+ return tableOutbound;
310+ }
311+
312+ ]]> </Source >
313+ </Method >
314+ <Method >
315+ <Name >getExportDescription</Name >
316+ <Source ><![CDATA[
317+ public str getExportDescription()
318+ {
319+ return "Tutorial Export EDI Invoices(Incremental)";
320+ }
321+
322+ ]]> </Source >
323+ </Method >
324+ </Methods >
325+ </SourceCode >
326+ </AxClass >
0 commit comments