protected virtual IEnumerable lines()
        {
            if (Vendor.Current == null || Vendor.Current.VendorLocationID == null)
            {
                yield break;
            }
            using (ReadOnlyScope scope = new ReadOnlyScope(this.Lines.Cache))
            {
                bool reset = !Bidding.Cache.IsDirty;
                PXResultset <RQRequisitionLineBidding> list =
                    PXSelectJoin <RQRequisitionLineBidding,
                                  LeftJoin <RQBidding,
                                            On <RQBidding.reqNbr, Equal <RQRequisitionLineBidding.reqNbr>,
                                                And <RQBidding.lineNbr, Equal <RQRequisitionLineBidding.lineNbr>,
                                                     And <RQBidding.vendorID, Equal <Current <RQBiddingVendor.vendorID> >,
                                                          And <RQBidding.vendorLocationID, Equal <Current <RQBiddingVendor.vendorLocationID> > > > > > >,
                                  Where <RQRequisitionLineBidding.reqNbr, Equal <Current <RQBiddingVendor.reqNbr> > > >
                    .Select(this);

                if (reset)
                {
                    this.Lines.Cache.Clear();
                }
                foreach (PXResult <RQRequisitionLineBidding, RQBidding> item in list)
                {
                    RQRequisitionLineBidding result = item;
                    RQBidding bidding = item;
                    bidding = Bidding.Locate(bidding) ?? item;

                    result                   = (RQRequisitionLineBidding)this.Lines.Cache.CreateCopy(result);
                    result.QuoteNumber       = bidding.QuoteNumber;
                    result.QuoteQty          = bidding.QuoteQty ?? 0m;
                    result.CuryInfoID        = Vendor.Current.CuryInfoID;
                    result.CuryQuoteUnitCost = bidding.CuryQuoteUnitCost ?? 0m;
                    result.QuoteUnitCost     = bidding.QuoteUnitCost ?? 0m;
                    result.CuryQuoteExtCost  = bidding.CuryQuoteExtCost ?? 0m;
                    result.QuoteExtCost      = bidding.QuoteExtCost ?? 0m;
                    result.MinQty            = bidding.MinQty ?? 0m;

                    if (bidding.CuryQuoteUnitCost == null && result.InventoryID != null)
                    {
                        POItemCostManager.ItemCost cost =
                            POItemCostManager.Fetch(this,
                                                    Vendor.Current.VendorID,
                                                    Vendor.Current.VendorLocationID, null,
                                                    (string)Vendor.GetValueExt <RQBiddingVendor.curyID>(Vendor.Current),
                                                    result.InventoryID, result.SubItemID, null, result.UOM);
                        result.CuryQuoteUnitCost =
                            cost.Convert <RQRequisitionLineBidding.inventoryID, RQRequisitionLineBidding.curyInfoID>(this, result, result.UOM);;
                    }

                    if (result.CuryQuoteUnitCost == null)
                    {
                        result.CuryQuoteUnitCost = 0m;
                    }

                    result = this.Lines.Insert(result) ?? (RQRequisitionLineBidding)this.Lines.Cache.Locate(result);
                    yield return(result);
                }
            }
        }