Skip to content

Commit 5b75c04

Browse files
committed
Periodic export samples
1 parent 4a3cdf1 commit 5b75c04

7 files changed

Lines changed: 1055 additions & 5 deletions
Lines changed: 326 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,326 @@
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>

DEVTutorial/DEVExternalIntegrationSamples/AxClass/DEVIntegTutorialExportBulkInventOnhand.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,14 @@ class DEVIntegTutorialExportBulkInventOnhand extends DEVIntegExportBulkBase
2222
this.writeHeaderLine(lineData);
2323
2424
while select crosscompany sum(AvailPhysical), maxof(LastUpdDatePhysical) from inventSum
25-
group by ItemId, InventLocationId
25+
group by ItemId, InventLocationId, DataAreaId
2626
where inventSum.AvailPhysical
2727
{
2828
lineData = [inventSum.DataAreaId, inventSum.ItemId, inventSum.InventLocationId, inventSum.LastUpdDatePhysical, inventSum.AvailPhysical];
2929
this.writeDataLine(lineData);
3030
}
3131
3232
this.sendFileToStorage();
33-
3433
}
3534
3635
]]></Source>

0 commit comments

Comments
 (0)