} // getPercentDone()

        /// <summary>
        /// Create a new batch operation to handle recalcution of inventory levels
        /// </summary>
        public CswNbtObjClassBatchOp makeBatchOp(CswPrimaryKey PrevLocation, CswPrimaryKey CurrentLocation)
        {
            CswNbtObjClassBatchOp    BatchNode = null;
            InventoryLevelsBatchData BatchData = new InventoryLevelsBatchData(PrevLocation, CurrentLocation);

            BatchNode = CswNbtBatchManager.makeNew(_CswNbtResources, _BatchOpName, BatchData);
            return(BatchNode);
        } // makeBatchOp()
        } // makeBatchOp()

        /// <summary>
        /// Run the next iteration of this batch operation
        /// </summary>
        public void runBatchOp(CswNbtObjClassBatchOp BatchNode)
        {
            try
            {
                if (BatchNode != null && BatchNode.OpNameValue == CswEnumNbtBatchOpName.InventoryLevel)
                {
                    BatchNode.start();

                    InventoryLevelsBatchData  BatchData = BatchNode.BatchData.Text;
                    CswNbtSdInventoryLevelMgr Mgr       = new CswNbtSdInventoryLevelMgr(_CswNbtResources);
                    Mgr.changeLocationOfLocation(BatchData.FromLocation, BatchData.ToLocation);
                    BatchNode.finish();
                    BatchNode.postChanges(false);
                }
            }
            catch (Exception ex)
            {
                if (BatchNode != null)
                {
                    BatchNode.error(ex);
                }
            }
        } // runBatchOp()