protected virtual IEnumerable addItem(PXAdapter e)
        {
            if (this.InventoryFilter.AskExt((graph, viewName) => graph.Views[viewName].Cache.Clear(), true) == WebDialogResult.OK)
            {
                var source =
                    this.InventoryFilter.Current.EndInventoryID == null
                                                ? PXSelect <InventoryItem,
                                                            Where <InventoryItem.stkItem, Equal <boolTrue>,
                                                                   And <InventoryItem.itemStatus, NotEqual <InventoryItemStatus.inactive>,
                                                                        And <InventoryItem.itemStatus, NotEqual <InventoryItemStatus.markedForDeletion>,
                                                                             And <InventoryItem.inventoryCD, GreaterEqual <Required <InventoryItem.inventoryCD> > > > > > >
                    .Select(this,
                            this.InventoryFilter.Cache.GetValueExt <INPIInventoryFilter.startInventoryID>(
                                this.InventoryFilter.Current).ToString())
                                                : PXSelect <InventoryItem,
                                                            Where <InventoryItem.stkItem, Equal <boolTrue>,
                                                                   And <InventoryItem.itemStatus, NotEqual <InventoryItemStatus.inactive>,
                                                                        And <InventoryItem.itemStatus, NotEqual <InventoryItemStatus.markedForDeletion>,
                                                                             And <InventoryItem.inventoryCD, Between <Required <InventoryItem.inventoryCD>, Required <InventoryItem.inventoryCD> > > > > > >
                    .Select(this,
                            this.InventoryFilter.Cache.GetValueExt <INPIInventoryFilter.startInventoryID>(this.InventoryFilter.Current).ToString(),
                            this.InventoryFilter.Cache.GetValueExt <INPIInventoryFilter.endInventoryID>(this.InventoryFilter.Current).ToString());

                foreach (InventoryItem l in source)
                {
                    INPIClassItem item = (INPIClassItem)Items.Cache.CreateInstance();
                    if (Items.Locate(item) == null)
                    {
                        item.InventoryID = l.InventoryID;
                        Items.Insert(item);
                    }
                }
            }
            return(e.Get());
        }
示例#2
0
        protected virtual void EPAssignmentRule_RowInserting(PXCache sender, PXRowInsertingEventArgs e)
        {
            EPAssignmentRule row = e.Row as EPAssignmentRule;

            if (row != null)
            {
                if (!IsImport)
                {
                    row.AssignmentRouteID = PositionFilter.Current.ItemID;
                }
                else if (PositionFilter.Current.RouteItemID != null && PositionFilter.Current.RouteItemID != row.AssignmentRouteID)
                {
                    row.AssignmentRouteID = PositionFilter.Current.RouteItemID;
                    Items.Current         = Items.Locate(new EPAssignmentRoute {
                        AssignmentMapID = PositionFilter.Current.MapID, AssignmentRouteID = row.AssignmentRouteID
                    });
                }
            }
        }
        private IEnumerable PerformPaste(PXAdapter adapter)
        {
            var buffer = CutBuffer.Cache.Cached.Cast <ItemBuffer>().ToArray();

            if (buffer.Any() == false)
            {
                return(adapter.Get());
            }

            int newItemClassID = (int)ItemClasses.Current.ItemClassID;

            object[] inventoryIDs = buffer.Select(b => b.InventoryID).Cast <object>().ToArray();
            var      inventories  =
                PXSelectReadonly <InventoryItem,
                                  Where <InventoryItem.inventoryID, In <Required <InventoryItem.inventoryID> > > >
                .Select(this, new[] { inventoryIDs }).RowCast <InventoryItem>().ToArray();

            var notMatchItems = inventories.Where(i => i.StkItem != ItemClasses.Current.StkItem).ToArray();

            if (notMatchItems.Any())
            {
                String segmentedItemClassID = ItemClasses.Current.SegmentedClassCD.FirstSegment(' ');
                if (notMatchItems.Length == 1)
                {
                    throw new PXInvalidOperationException(
                              Messages.ItemClassAndInventoryItemStkItemShouldBeSameSingleItem,
                              notMatchItems[0].InventoryCD.TrimEnd(),
                              segmentedItemClassID);
                }
                else
                {
                    PXTrace.WriteInformation(
                        notMatchItems.Aggregate(
                            new StringBuilder().AppendLine(PXMessages.LocalizeFormatNoPrefix(Messages.CouldNotBeMovedToItemClassItemsList, segmentedItemClassID)),
                            (sb, item) => sb.AppendLine(item.InventoryCD.TrimEnd()),
                            sb => sb.ToString()));

                    throw new PXInvalidOperationException(
                              Messages.ItemClassAndInventoryItemStkItemShouldBeSameManyItems,
                              segmentedItemClassID);
                }
            }

            bool needToDefault = Inventories.Ask(AR.Messages.Warning, Messages.ItemClassChangeWarning, MessageButtons.YesNo) == WebDialogResult.Yes;

            Lazy <InventoryItemMaint> stockItemMaint    = new Lazy <InventoryItemMaint>(CreateInstance <InventoryItemMaint>);
            Lazy <NonStockItemMaint>  nonStockItemMaint = new Lazy <NonStockItemMaint>(CreateInstance <NonStockItemMaint>);

            foreach (InventoryItem inventory in inventories)
            {
                if (needToDefault)
                {
                    InventoryItemMaintBase inventoryItemMaint = inventory.StkItem == true ? (InventoryItemMaintBase)stockItemMaint.Value : nonStockItemMaint.Value;

                    inventoryItemMaint.Item.Current = inventory;
                    using (inventoryItemMaint.MakeRuleWeakeningScopeFor <InventoryItem.lotSerClassID>(RuleWeakenLevel.SuppressError))
                        using (inventoryItemMaint.MakeRuleWeakeningScopeFor <InventoryItem.baseUnit>(RuleWeakenLevel.SuppressError))
                            using (stockItemMaint.Value.MakeRuleWeakeningScopeFor <InventoryItem.decimalBaseUnit>(RuleWeakenLevel.SuppressError))
                            {
                                var copy = (InventoryItem)inventoryItemMaint.Item.Cache.CreateCopy(inventory);
                                copy.ItemClassID = newItemClassID;
                                inventoryItemMaint.Item.Update(copy);
                            }
                    inventoryItemMaint.Actions.PressSave();
                }
                else
                {
                    inventory.ItemClassID = newItemClassID;
                    Inventories.Cache.Update(inventory);
                }
                Inventories.SetValueExt <InventoryItem.selected>(Inventories.Locate(inventory), false);
            }

            CutBuffer.Cache.Clear();

            if (needToDefault)
            {
                Actions.PressCancel();
            }
            else
            {
                Actions.PressSave();
            }

            return(adapter.Get());
        }