acumatica
कोड के माध्यम से डेटा के साथ आबादी की रिपोर्ट
खोज…
यह लेख उदाहरण दिखाता है कि मेमोरी रिकॉर्ड का उपयोग करके रिपोर्ट कैसे बनाई जाए:
यह उदाहरण दिखाता है कि डेटा दृश्य प्रतिनिधि द्वारा लौटाए गए डेटा के साथ रिपोर्ट को कैसे पॉप्युलेट किया जाए। अभ्यास के दौरान, हम दो तिथियों के बीच बिक्री आदेशों की सूची दिखाते हुए एक जांच स्क्रीन विकसित करेंगे। विक्रय आदेश जानकारी को पॉप्युलेट करने के लिए डेटा दृश्य प्रतिनिधि का उपयोग किया जाएगा।
आवश्यक शर्तें:
हम SOOrderFilter DAC की घोषणा के साथ शुरू करते हैं:
[Serializable] public class SOOrderFilter : IBqlTable { public abstract class dateFrom : IBqlField { } [PXDate()] [PXUIField(DisplayName = "Date From")] public DateTime? DateFrom { get; set; } public abstract class dateTo : IBqlField { } [PXDate()] [PXUIField(DisplayName = "Date To")] public DateTime? DateTo { get; set; } }
SOOrderData DAC की घोषणा के साथ जारी रखें:
[Serializable] public class SOOrderData : IBqlTable { #region OrderType public abstract class orderType : PX.Data.IBqlField { } [PXString(2, IsKey = true, IsFixed = true)] [PXUIField(DisplayName = "Type")] public virtual string OrderType { get; set; } #endregion #region OrderNbr public abstract class orderNbr : PX.Data.IBqlField { } [PXString(15, IsKey = true, IsUnicode = true, InputMask = ">CCCCCCCCCCCCCCC")] [PXUIField(DisplayName = "Order Nbr.")] public virtual string OrderNbr { get; set; } #endregion #region OrderDate public abstract class orderDate : PX.Data.IBqlField { } [PXDate] [PXUIField(DisplayName = "Date")] public virtual DateTime? OrderDate { get; set; } #endregion #region Status public abstract class status : PX.Data.IBqlField { } [PXString(1, IsFixed = true)] [PXUIField(DisplayName = "Status")] [SOOrderStatus.List()] public virtual string Status { get; set; } #endregion #region OrderDesc public abstract class orderDesc : PX.Data.IBqlField { } [PXString(60, IsUnicode = true)] [PXUIField(DisplayName = "Description", Visibility = PXUIVisibility.SelectorVisible)] public virtual string OrderDesc { get; set; } #endregion #region OrderTotal public abstract class orderTotal : PX.Data.IBqlField { } [PXDecimal(4)] [PXDefault(TypeCode.Decimal, "0.0")] public virtual decimal? OrderTotal { get; set; } #endregion #region DueDate public abstract class dueDate : PX.Data.IBqlField { } [PXDate] [PXUIField(DisplayName = "Due Date")] public virtual DateTime? DueDate { get; set; } #endregion }
PX.Documentation नामस्थान में अपने SOOrderInq BLC परिणाम डेटा दृश्य प्रतिनिधि को घोषित करने के लिए नीचे दिए गए कोड स्निपेट का उपयोग करते हैं, जो बाद में डेटा के साथ रिपोर्ट को पॉप्युलेट करने के लिए उपयोग करेगा:
public class SOOrderInq : PXGraph<SOOrderInq> { public PXCancel<SOOrderFilter> Cancel; public PXFilter<SOOrderFilter> Filter; [PXFilterable] public PXSelectOrderBy<SOOrderData, OrderBy<Desc<SOOrderData.orderNbr>>> Result; protected virtual IEnumerable result() { BqlCommand cmd = PXSelect<SOOrder, Where<SOOrder.orderDate, Between<Current<SOOrderFilter.dateFrom>, Current<SOOrderFilter.dateTo>>>>.GetCommand(); PXView inView = new PXView(this, true, cmd); int startRow = PXView.StartRow; int totalRows = 0; foreach (SOOrder order in inView.Select(PXView.Currents, PXView.Parameters, PXView.Searches, PXView.SortColumns, PXView.Descendings, PXView.Filters, ref startRow, PXView.MaximumRows, ref totalRows)) { yield return new SOOrderData { OrderType = order.OrderType, OrderNbr = order.OrderNbr, OrderDate = order.OrderDate, Status = order.Status, OrderDesc = order.OrderDesc, OrderTotal = order.OrderTotal, DueDate = order.DueDate, }; } PXView.StartRow = 0; } public SOOrderInq() { Result.Cache.AllowInsert = false; Result.Cache.AllowUpdate = false; Result.Cache.AllowDelete = false; } public PXAction<SOOrderFilter> Report; [PXButton] [PXUIField(DisplayName = "View As Report", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)] protected virtual void report() { PXReportResultset reportData = new PXReportResultset(typeof(SOOrderData)); foreach (SOOrderData row in Result.Select()) { reportData.Add(row); } throw new PXReportRequiredException(reportData, "SO610501", PXBaseRedirectException.WindowMode.NewWindow, "Report"); } }
- FormDetail टेम्पलेट का चयन करके SO401090.aspx पृष्ठ बनाएँ, और PXDataSource के लिए निम्नलिखित गुण सेट करें:
प्राथमिक दृश्य: फ़िल्टर
TypeName: PX.Documentation.SOOrderInq
उसके बाद फ़िल्टर हेडर फॉर्म पर इनपुट नियंत्रण जोड़ें:
<px:PXFormView ID="form" runat="server" DataSourceID="ds" Style="z-index: 100" Width="100%" DataMember="Filter"> <Template> <px:PXLayoutRule runat="server" StartRow="True" Merge="True" LabelsWidth="XS" ControlSize="S" /> <px:PXDateTimeEdit ID="edDateFrom" runat="server" CommitChanges="True" DataField="DateFrom" /> <px:PXDateTimeEdit ID="edDateTo" runat="server" CommitChanges="True" DataField="DateTo" /> <px:PXLayoutRule runat="server" /> </Template> </px:PXFormView>
और विस्तार ग्रिड के लिए निम्नलिखित कॉलम बनाएं:
<px:PXGrid ID="grid" runat="server" DataSourceID="ds" Style="z-index: 100" Width="100%" Height="150px" SkinID="Inquire" AllowPaging="True" AdjustPageSize="Auto"> <Levels> <px:PXGridLevel DataMember="Result"> <Columns> <px:PXGridColumn DataField="OrderType" /> <px:PXGridColumn DataField="OrderNbr" Width="90px" /> <px:PXGridColumn DataField="OrderDate" Width="90px" /> <px:PXGridColumn DataField="Status" /> <px:PXGridColumn DataField="OrderDesc" Width="200px" /> <px:PXGridColumn DataField="DueDate" Width="90px" /> </Columns> </px:PXGridLevel> </Levels> <AutoSize Container="Window" Enabled="True" MinHeight="150" /> </px:PXGrid>
- साइट मानचित्र में बनाई गई स्क्रीन जोड़ें
डेटा दृश्य प्रतिनिधि द्वारा लौटाए गए डेटा के साथ रिपोर्ट को पॉप्युलेट करने के लिए:
- अपनी Acumatica वेबसाइट के ReportCustomized फ़ोल्डर में SO610501.rpx रिपोर्ट फ़ाइल पेस्ट करें, फिर साइट मैप हिडन फ़ोल्डर में विक्रय आदेश रिपोर्ट जोड़ें
बिक्री आदेश रिपोर्ट बनाने और दिखाने के लिए SOOrderInq BLC में रिपोर्ट कार्रवाई के रूप में घोषित करें। PXReportRequiredException परिणाम को देखने के लिए कार्रवाई के अंदर तैयार किए गए PXReportResultset परिणाम डेटा दृश्य प्रतिनिधि द्वारा लौटाए गए आंकड़ों के साथ स्वीकार करता है:
public class SOOrderInq : PXGraph<SOOrderInq> { ... public PXAction<SOOrderFilter> Report; [PXButton] [PXUIField(DisplayName = "View as Report", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)] protected virtual void report() { PXReportResultset reportData = new PXReportResultset(typeof(SOOrderData)); foreach (SOOrderData row in Result.Select()) { reportData.Add(row); } throw new PXReportRequiredException(reportData, "SO610501", PXBaseRedirectException.WindowMode.NewWindow, "Report"); } }