using Connected.Data;
using Logistics.Types.Warehouses;
namespace Logistics.Types.WarehouseLocations;
///
/// Represents a physical or logical location inside a .
///
///
/// Each contains zero or more locations.
/// Location can be a container, which means it contains child locations, or leaf, which doesn't contain
/// child locations. Items can be put only in leaf locations, whereas containers acts only as aggregators
/// which means they provide calculated values for items contained in the child locations.
///
public interface IWarehouseLocation : IPrimaryKey
{
int? Parent { get; init; }
int Warehouse { get; init; }
string Name { get; init; }
string Code { get; init; }
Status Status { get; init; }
///
/// The number of direct child items that belong to this
/// location. If this value is 0 it means the location
/// is leaf. If not, it's a container.
///
int ItemCount { get; init; }
}