В основном я хочу создать новую кнопку действия. На экране Print Invoice and Memos вы можете распечатать отчет по выбранным счетам.
Почему мы создаем новую кнопку действия, здесь нам нужно распечатать разные форматы для каждого счет-фактура (тип SO), поэтому, когда пользователь выбирает 3 разных записи в сетке для примера 1. INV1234 и т. д. типа TS, тогда мне нужно распечатать отчет xyz 2. INV9875, и он не был создан через SO, тогда мне нужно напечатать AB C отчет 3. CRM4567 и тип SO - это TS (как вышеупомянутый вариант 1)
, поэтому здесь 1 и 3 должны печататься на одной странице (как то же самое, как кнопка процесса работает в acumatica по умолчанию) 2 отчет отчета опции должен печататься в Новая вкладка.
Если я получу образец кода для печати того же отчета на одной странице, а другой на другой вкладке - это нормально.
Ниже приведен код
public PXAction<PrintInvoicesFilter> PrintReport;
[PXUIField(DisplayName = "Print Sales Invoice with Price", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
[PXLookupButton]
public virtual IEnumerable printReport(PXAdapter adapter, [PXString] string reportID)
{
PXReportRequiredException ex = null;
foreach (ARInvoice doc in Base.ARDocumentList.Cache.Cached)
{
var parameters = new Dictionary<string, string>();
if (doc.Selected == true)
{
ARTran TranData = PXSelectReadonly<ARTran, Where<ARTran.tranType, Equal<Required<ARTran.tranType>>,
And<ARTran.refNbr, Equal<Required<ARTran.refNbr>>>>>.Select(Base, doc.DocType, doc.RefNbr);
if (TranData != null)
{
if (TranData.SOOrderType == "WS" || TranData.SOOrderType == "WO" || TranData.SOOrderType == "TS" || TranData.SOOrderType == "IM")
{
if (reportID == null) reportID = "KR501011";
if (reportID == "KR501011")
{
parameters["DocType"] = doc.DocType;
parameters["RefNbr"] = doc.RefNbr;
}
ex = PXReportRequiredException.CombineReport(ex, "KR501011", parameters,false);
}
if (TranData.SOOrderType == "RX")
{
if (reportID == null) reportID = "KR501016";
if (reportID == "KR501016")
{
parameters["DocType"] = doc.DocType;
parameters["RefNbr"] = doc.RefNbr;
}
ex = PXReportRequiredException.CombineReport(ex, "KR501016", parameters,false);
}
if (string.IsNullOrEmpty(TranData.SOOrderType))
{
if (reportID == null) reportID = "KR501038";
if (reportID == "KR501038")
{
parameters["DocType"] = doc.DocType;
parameters["RefNbr"] = doc.RefNbr;
}
ex = PXReportRequiredException.CombineReport(ex, "KR501038", parameters,false);
}
}
}
}
if (ex != null)
{
ex.Mode = PXBaseRedirectException.WindowMode.New;
ex.SeparateWindows = false;
throw ex;
}
Заранее спасибо.