खोज…


परिचय

यह विषय एक्यूमैटिक में आधार डेटा दृश्यों को संशोधित करने के लिए उपलब्ध विभिन्न पैटर्न और प्रथाओं को प्रदर्शित करने के लिए है।

APInvoiceEntry BLC: poReceiptLinesSelection डेटा दृश्य में अतिरिक्त प्रतिबंध जोड़ें

PoReceiptLinesSelection डेटा दृश्य में अतिरिक्त प्रतिबंध जोड़ने के लिए, आपको आधार दृश्य पर Select विधि को लागू करना चाहिए और PXResultSet गए PXResultSet में प्रत्येक आइटम का निरीक्षण करना चाहिए PXResultSet यह तय हो सके कि यह अतिरिक्त प्रतिबंध (एस) का अनुपालन करता है

public class APInvoiceEntryExt : PXGraphExtension<APInvoiceEntry>
{
    [PXCopyPasteHiddenView]
    public PXSelect<APInvoiceEntry.POReceiptLineAdd> poReceiptLinesSelection;

    public virtual IEnumerable POReceiptLinesSelection()
    {
        foreach (var record in Base.poReceiptLinesSelection.Select())
        {
            // Additional restriction goes here
            if (true == true)
            {
                yield return record;
            }
        }
    }
}

यह दृष्टिकोण पूरी तरह से poReceiptLinesSelection डेटा दृश्य के साथ काम करता है, आधार दृश्य के कार्यान्वयन में पेजिंग और एकत्रीकरण की कमी के कारण। परिणाम सेट करने के लिए, poReceiptLinesSelection दृश्य डेटाबेस से आवश्यक डेटा का अनुरोध करता है और आवेदन पक्ष पर सभी गणना करता है।

public class APInvoiceEntry : APDataEntryGraph<APInvoiceEntry, APInvoice>, PXImportAttribute.IPXPrepareItems
{
    ...

    [PXCopyPasteHiddenView]
    public PXSelect<POReceiptLineAdd> poReceiptLinesSelection;

    public virtual IEnumerable POReceiptLinesSelection()
    {
        APInvoice doc = this.Document.Current;
        if (doc == null || doc.VendorID == null || doc.VendorLocationID == null) yield break;
        if (doc.DocType != APDocType.Invoice && doc.DocType != APDocType.DebitAdj)
            yield break;

        string poReceiptType = (doc.DocType == APDocType.Invoice) ? POReceiptType.POReceipt : POReceiptType.POReturn;

        HashSet<APTran> usedRecceiptLine = new HashSet<APTran>(new POReceiptLineComparer());
        HashSet<APTran> unusedReceiptLine = new HashSet<APTran>(new POReceiptLineComparer());

        foreach (APTran aPTran in Transactions.Cache.Inserted)
        {
            if (aPTran.ReceiptNbr != null && aPTran.ReceiptType != null && aPTran.ReceiptLineNbr != null)
                usedRecceiptLine.Add(aPTran);
        }

        foreach (APTran aPTran in Transactions.Cache.Deleted)
        {
            if (aPTran.ReceiptNbr != null && aPTran.ReceiptType != null && aPTran.ReceiptLineNbr != null && Transactions.Cache.GetStatus(aPTran) != PXEntryStatus.InsertedDeleted)
                if (!usedRecceiptLine.Remove(aPTran))
                    unusedReceiptLine.Add(aPTran);
        }

        foreach (APTran aPTran in Transactions.Cache.Updated)
        {
            APTran originAPTran = new APTran();
            originAPTran.ReceiptNbr = (String)Transactions.Cache.GetValueOriginal<APTran.receiptNbr>(aPTran);
            originAPTran.ReceiptType = (String)Transactions.Cache.GetValueOriginal<APTran.receiptType>(aPTran);
            originAPTran.ReceiptLineNbr = (Int32?)Transactions.Cache.GetValueOriginal<APTran.receiptLineNbr>(aPTran);

            if (originAPTran.ReceiptNbr != null && originAPTran.ReceiptType != null && originAPTran.ReceiptLineNbr != null)
            {
                if (!usedRecceiptLine.Remove(originAPTran))
                    unusedReceiptLine.Add(originAPTran);
            }

            if (aPTran.ReceiptNbr != null && aPTran.ReceiptType != null && aPTran.ReceiptLineNbr != null)
            {
                if (!unusedReceiptLine.Remove(aPTran))
                    usedRecceiptLine.Add(aPTran);
            }
        }

        foreach (LinkLineReceipt item in PXSelect<LinkLineReceipt,
            Where<LinkLineReceipt.vendorID, Equal<Current<APInvoice.vendorID>>,
            And<LinkLineReceipt.vendorLocationID, Equal<Current<APInvoice.vendorLocationID>>,
            And<LinkLineReceipt.receiptCuryID, Equal<Current<APInvoice.curyID>>,
            And<LinkLineReceipt.receiptType, Equal<Required<POReceipt.receiptType>>,
            And<Where<LinkLineReceipt.orderNbr, Equal<Current<POReceiptFilter.orderNbr>>, Or<Current<POReceiptFilter.orderNbr>, IsNull>>>
            >>>>>.SelectMultiBound(this, new object[] { doc }, poReceiptType))
        {
            APTran aPTran = new APTran();
            aPTran.ReceiptType = item.ReceiptType;
            aPTran.ReceiptNbr = item.ReceiptNbr;
            aPTran.ReceiptLineNbr = item.ReceiptLineNbr;
            if (!usedRecceiptLine.Contains(aPTran))
                yield return (PXResult<POReceiptLineAdd, POReceipt>)ReceipLineAdd.Select(item.ReceiptNbr, item.ReceiptType, item.ReceiptLineNbr);
        }

        foreach (APTran item in unusedReceiptLine)
        {
            yield return (PXResult<POReceiptLineAdd, POReceipt>)ReceipLineAdd.Select(item.ReceiptNbr, item.ReceiptType, item.ReceiptLineNbr);
        }

    }

    ...
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow