Kod içinden rapor dosyası oluşturma

Axapta içinden kod ile bir raporu (PDF formatında) nasıl oluşturacağımızı görelim.
Örnek olarakta bir satış şiparişine ait faturayı PDF formatında kaydedelim.
Arzu ederseniz raporu HTML formatına dönüştürüp e-mail olarakta gönderebiliriz.

CustInvoiceJour custInvoice;
SalesId salesId;
ReportRun report;
RecordSortedList List = new RecordSortedList(62);

SalesId='00001';

Select custInvoice Index hint SalesIdx Where custInvoice.SalesId == salesId;

List.ins(custInvoice);
report = new ReportRun(new Args(ReportStr(SalesInvoice)));
report.args().caller(null);
report.args().parmEnum(1);
report.args().parmEnumType(920);
report.args().object(List);
report.args().name("KeepSettings");
report.printJobSettings().setTarget(PrintMedium::File);
report.printJobSettings().format(PrintFormat::PDF);
report.printJobSettings().fileName("C:\\Invoice.pdf");
report.prompt();
report.run();

C# kullanarak Axapta işlemleri

VB.net kullanarak Axapta'ya nasıl bağlanacağımızı (Login) olacağımızı ve Axapta Class'larını nasıl kullanacağımızı bir önceki makelemizde görmüştük.

Şimdi ise VB.net ile yazdığımız kodların C# şeklide yazılmış şekillerini görelim.

private object Logon2(string defaultLogon, string configuration, string company, string Password)
{
const object FUNCTION_NAME = "GetNotificationHeader";
try {
axapta = new AxaptaCOMConnector.Axapta2();
axapta.Logon2(defaultLogon, Password, company, "", "", "", configuration, "false", "", "");
}
catch (Exception ex) {
string strErrorMessage;
strErrorMessage = " ERROR IN " + MODULE_NAME + "." + FUNCTION_NAME + " ERRSOURCE: " + Err.Source + " ERRCODE: " + Err.Number + " ERRDESC: " + Err.Description + " ERRLINE: " + Erl();
InformationManager.HandleError(MODULE_NAME, FUNCTION_NAME, strErrorMessage, InformationManager.LOG_TYPE_ERROR);
Err.Clear();
}
finally {
}

Axapta'ya bağlandıktan sonra aynı Axapta nesnesini kullanarak Axapta içinde bulunan Global Class ına ait operatingSystem metod'unu çağırmaya çalışalım.

private string getOSName()
{
object result;
try {
result = axapta.CallStaticClassMethod("Global", "operatingSystem", null, null, null, null, null, null);
if ((!(result == null))) {
return result.ToString();
} else {
return null;
}
}
catch (Exception ex) {
}
finally {
if (!(axapta == null)) {
try {
axapta.Logoff();
}
catch (Exception ex) {
}
}
}
}

Axapta Class'ını nasıl çağıracağımıza bakalım. Yukarıda yazdığımız fonksiyonu da kullanalım. Yazacağımız örnekte bir recordSet'i göndermeye çalışacağız.

private object CallAxaptaClassMethod(ADODB.Recordset axRecorset, string strAxMethodName)
{
const object FUNCTION_NAME = "CallAxaptaClassMethod";
string osName;
object returnd;
string ssss;
try {
osName = getOSName();
if (!(osName == null)) {
axapta.TTSBegin();
returnd = axapta.CallStaticClassMethod("dataInAxapta", strAxMethodName, axRecorset, null, null, null, null, null);
axapta.TTSCommit();
} else {
throw new Exception("Axapta Connection Not Setvvvv");
}
}
catch (Exception ex) {
string strErrorMessage;
axapta.TTSAbort();
if (!(axapta == null)) {
axapta.Logoff();
}
strErrorMessage = " ERROR IN " + MODULE_NAME + "." + FUNCTION_NAME + " ERRSOURCE: " + Err.Source + " ERRCODE: " + Err.Number + " ERRDESC: " + Err.Description + " ERRLINE: " + Erl();
InformationManager.HandleError(MODULE_NAME, FUNCTION_NAME, strErrorMessage, InformationManager.LOG_TYPE_ERROR);
Err.Clear();
}
finally {
}
}