In my code: "
namespace inAnorak.Win.ExtForms.Classes {
[poExtension("Hercules.*", "Hercules", "CompositionEntries", poExtensionKind.PresenterMethod, "{4E9E8C7B-7AC5-49FF-834A-8092AE92567F}")]
public class inAnorakCompositionEntriesP : poExtensionPresenter, IpoAppContextInit {
private IpoAppContext _AppContext;
public inAnorakCompositionEntriesP(IpoAppContext appContext) {
if (appContext == null) {
MessageBox.Show("The app context is null. Please ensure it is properly initialized.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
throw new InvalidOperationException("IpoAppContext is not initialized.");
}
_AppContext = appContext;
MessageBox.Show("inAnorakCompositionEntriesP initialized successfully.",
"Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
public bool GenerateFileFromCustomReport(ref poActionLogger log, heDocEntriesDataObject entry, string reportid, string exportfolder, string filetype) {
bool bRes = false;
try {
IpoCustomReport repService = _AppContext.GetService<IpoCustomReport>();
poCustomReportInfo report = repService.Get(reportid);
poDataCollector dataCollector = poCustomDataCollector.CreateFromCustomReport(_AppContext, report);
poDataCollectorStorage storage = poDataCollectorStorage.CreateFromDataCollector(dataCollector);
dataCollector.SetFilterValue(storage, "@$Parameter$", "@$Parameter01$", poFilterItemWhereKindEnum.Equal, entry.ID);
dataCollector.ApplyStorage(storage);
poDataCollectorResult result = dataCollector.GetData();
switch (filetype) {
case "xlsx": filetype = "#02"; break;
case "html": filetype = "#05"; break;
case "pdf": filetype = "#06"; break;
case "xps": filetype = "#07"; break;
}
poFormArgs args = new poFormArgs();
args.InArgs["Data"] = result.Data;
args.InArgs["Report"] = report;
args.InArgs["ViewName"] = "(Default)";
args.InArgs["PrintDocType"] = new poPrintDocTypes() { PrintType = filetype };
args.InArgs["FileName"] = exportfolder + entry.DocCode;
args.InArgs["Execute"] = true;
poAsyncResult res1 = _AppContext.CallObjectProxyMethod<poAsyncResult>("Poseidon", "DataCollectorReport", "CustomReport.ReportInvoke", report.ID, storage, null, poReportEngines.ReportEnginesEnum.FastReports);
args.InArgs["Report.frx"] = res1.NamedArgs["Report.frx"];
object res2 = _AppContext.GetService<IpoActionsFactory>().Invoke("Poseidon", "PrintDoc.ExecuteSilent", args, null);
Tuple<List<string>, poPrintFiscalData, poActionLogger> res3 = res2 as Tuple<List<string>, poPrintFiscalData, poActionLogger>;
if ((res3.Item1.Count == 0) && (res3.Item3.Count > 0)) {
foreach (poActionLoggerItem err in res3.Item3)
log.Add(err);
} else
bRes = true;
} catch (Exception exp) {
log.AddFromException(exp, "Error generating report " + entry.GetSignature());
bRes = false;
}
return bRes;
}
}" i get the error '
Value cannot be null. Parameter name: con
' and more specific '
at System.Reflection.Emit.DynamicILGenerator.Emit(OpCode opcode, ConstructorInfo con)
at Poseidon.Libs.Base.poSys.Create(Type t, IpoAppContext appContext, Func1 create)
at Poseidon.Libs.Base.poSys.Create[T](String assemblyName, String className, IpoAppContext appContext)
at Poseidon.Libs.Base.Extensibility.poExtensionsManager.CreateItem[T](IpoAppContext appContext, poExtensionItem item)
at Poseidon.Libs.Base.Extensibility.poExtensionsManager.GetList[T](String domainKey, String domain, String name, String kind, IpoAppContext appContext)
at Poseidon.Libs.UI.Presenters.poPresenter.<Init>b__5_0()
at Poseidon.Libs.Base.poSys.ExtensionCall(Action method)
at Poseidon.Libs.UI.Presenters.poPresenter.Init()
at Poseidon.Libs.UI.Presenters.poPresenterMaster1.Init()
at Hercules.Win.INF.Entries.heDocEntriesPresenter.Init()
at Poseidon.Libs.Base.poObject.Poseidon.Libs.Base.Interfaces.IpoAppContextInit.Init(IpoAppContext appContext)
at Poseidon.Libs.Base.poSys.Create(Type t, IpoAppContext appContext, Func1 create)
at Poseidon.Libs.UI.Helpers.poFormsFactory.CreateProperty(IpoForm form, PropertyInfo prop)
at Poseidon.Libs.UI.Helpers.poFormsFactory.CreateForm(Type t, poFormArgs args)
at Poseidon.Libs.UI.Helpers.poFormsFactory.Create(Type t, poFormArgs args)
at Poseidon.Libs.UI.Schema.poActionForm.FormCreate(poFormArgs args)
at Poseidon.Libs.UI.Schema.poActionForm.InvokeCore(Object[] args)
at Poseidon.Libs.Base.Schema.poAction.Invoke(Object[] args)
at Poseidon.Libs.Base.Schema.poActionsFactory.Invoke(String domain, String name, Object[] args)
at Poseidon.Win.Explorer.poMainF.<>c__DisplayClass152_0.<RunAction>b__1(Object state)
' any help?
What I have tried:
I think the problem is somewhere here: "
private IpoAppContext _AppContext;
public inAnorakCompositionEntriesP(IpoAppContext appContext) {
if (appContext == null) {
MessageBox.Show("The app context is null. Please ensure it is properly initialized.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
throw new InvalidOperationException("IpoAppContext is not initialized.");
}
_AppContext = appContext;
MessageBox.Show("inAnorakCompositionEntriesP initialized successfully.",
"Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
"