Material Properties

When performing transactions on materials (e.g. Pick, Put) Power Pick Global (PPG) can handle materials differently based on their Material Property.

Materials Properties offers PPG a way to use controls and to record attributes for materials as they are stored in PPG or retrieved from PPG.

Some examples (depending on the license options):

  • FIFO (First-in, first-out)
  • Permanent Location setting
  • Dates (Expiry Date, Production Date, Release Date)
  • Lot & Qualification Tracking
  • Serial Number Tracking
  • Bar code validations
  • Count cycles
  • Storage Zones (for Puts)

The property specifies which attributes (Lot, Qualification, Expiry Date, Serial Number, etc.) should be recorded when doing a Pick or Put on certain materials.

  • unused — The attribute is not required, and must not be in the import file
  • essential to create a storage request — The attribute must be included in the import file or specified at the beginning of the manual request.
  • optional if not provided introduced during confirmation — The attribute is required, but optional whether in the import file (or manual request) or at confirmation. If it's not provided up-front, then it must be entered at confirmation.
  • always introduced during confirmation — Must not be in the import file. Will be prompted for, and must be entered in the Task Processor.

You can create your own Material Properties and assign them to materials a couple of ways:

  • In the Material Management, set the Property from the drop-down of available properties that were created in Material Property Management.
  • Integration The import needs to include Materialbase.Materialname (i.e. Part Number), and MaterialProperty.Propertyname (Property). Refer to separate guides on integration of data into PPG.

By applying a property to a material, the material will take on all the settings of the property.

Each material needs to have a property assigned to it so that PPG knows how to handle it.

Setting Multiple Attributes

A material can have only 1 property. So if you need materials to have multiple settings, you need to make a new property to set those requirements -- in some cases with compound attributes or controls (e.g. LOT_SERIAL_EXPIRY).

Attributes

  • name string LIMIT: 50

    Name of the material property. This should indicate the rule being applied to the material.

  • id uuid

    Unique identifier of the material property.

  • countingCycle integer

    The number of days before a material needs to be counted.

  • countingThreshold float

    How many items are needed before triggering a count.

  • dangerClass string LIMIT: 50

    The danger class assigned to the material.

  • description string LIMIT: 80

    Description of the material property and how it applies to the material.

  • expiryDatePickType integer

  • expiryDatePutType integer

  • expiryDays integer

  • fifoType integer

    First-in, first-out types.

    Possible values:

    0 = No Fifo
    1 = Fifo by put date
    2 = Fifo by product
    3 = Fifo by production date
    4 = Fifo by expiry date

  • isExpiryDateMixed boolean

  • isLocalInventory boolean

  • isLotMixed boolean

  • isProductionDateMixed boolean

  • isQualificationMixed boolean

  • isReleaseDateMixed boolean

  • isSerialNumberMixed boolean

  • isStrictFifo boolean

  • isUncontrolledInventory boolean

  • locContentType integer

  • lotPickType integer

  • lotPutType integer

  • maxDriveSpeed float

  • productionDatePickType integer

  • productionDatePutType integer

  • putDateResolutionType integer

  • qualificationPickType integer

  • qualificationPutType integer

  • releaseDatePickType integer

  • releaseDatePutType integer

  • serialNumberPickType integer

  • serialNumberPutType integer

  • type integer

Endpoints

List Material Properties

get /api/material_properties

Get a list of material properties from the PPG database. View the guide on adding filters to List API calls.

Arguments

  • countingCycle integer

    The number of days before a material needs to be counted.

  • countingThreshold floar

    How many items are needed before triggering a count.

  • dangerClass string

    The danger class assigned to the material.

  • description string

    Only return material properties that include the given description.

  • expiryDatePickType integer

  • expiryDatePutType integer

  • expiryDays integer

  • fifoType integer

    First-in, first-out types.

    Possible values:

    0 = No Fifo
    1 = Fifo by put date
    2 = Fifo by product
    3 = Fifo by production date
    4 = Fifo by expiry date

  • isExpiryDateMixed boolean

  • isLocalInventory boolean

  • isLotMixed boolean

  • isProductionDateMixed boolean

  • isQualificationMixed boolean

  • isReleaseDateMixed boolean

  • isSerialNumberMixed boolean

  • isStrictFifo boolean

  • isUncontrolledInventory boolean

  • lotPickType integer

  • lotPutType integer

  • maxDriveSpeed float

  • name string

    Name of the material property. This should indicate the rule being applied to the material.

  • productionDatePickType integer

  • productionDatePutType integer

  • putDateResolutionType integer

  • qualificationPickType integer

  • qualificationPutType integer

  • releaseDatePickType integer

  • releaseDatePutType integer

  • serialNumberPickType integer

  • serialNumberPutType integer

  • type integer

  • countOnly boolean

    When "true", will only return a count of the amount of items in the query.

    Default value: false

  • limit integer

    A limit on the number of objects to be returned. Limit can range between 1 and 1000.

    Default value: 250

  • page integer

    Page-numbering is based on the value of the "limit" argument. If limit=20, then page=0 will display the hits from 1 to 20. (Page numbers are zero-based.) Using page without a limit returns all items.

  • orderBy string, array

    Order the response by the selected field. Multiple values can be passed, separated by a comma.

Request with curl
-d 'curl "http://[subdomain.itempath.com or IP]/api/material_properties?name=basic" \
-X get \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Your JWT Access Token]"'
Example Response
{
    "material_properties": [
        {
            "expiryDays": null,
            "isUncontrolledInventory": 0,
            "productionDatePickType": 0,
            "isReleaseDateMixed": 1,
            "productionDatePutType": 0,
            "serialNumberPutType": 0,
            "id": "F687AB5F-E6F6-48A2-B748-10CE0A6E2C29",
            "isLotMixed": 1,
            "name": "BASIC",
            "qualificationPutType": 0,
            "qualificationPickType": 0,
            "lotPickType": 0,
            "countingThreshold": null,
            "releaseDatePickType": 0,
            "isExpiryDateMixed": 1,
            "isSerialNumberMixed": 1,
            "fifoType": 0,
            "expiryDatePutType": 0,
            "description": "Test",
            "serialNumberPickType": 0,
            "type": 1,
            "countingCycle": 1,
            "releaseDatePutType": 0,
            "expiryDatePickType": 0,
            "isStrictFifo": 0,
            "lotPutType": 0,
            "isProductionDateMixed": 1,
            "isQualificationMixed": 1,
            "putDateResolutionType": 1,
            "isLocalInventory": 0,
            "dangerClass": null
        }
    ]
}

Create Material Properties

post /api/material_properties

Add a new material property to the PPG database and return a response.

Body Parameters

  • name string
    REQUIRED

    Name of the material property.

  • description string

    Description of the material property.

  • type integer

  • dangerClass integer

  • countingCycle integer

    How many items are needed before triggering a count.

  • countingThreshold float

    How many items are needed before triggering a count.

  • locContentType integer

  • maxDriveSpeed float

  • fifoType integer

    First-in-first-out. Value 0 for no, or 1 for yes.

  • isStrictFifo integer

    Value 0 for no, or 1 for yes.

  • isLocalInventory integer

    Value 0 for no, or 1 for yes.

  • isUncontrolledInventory integer

    Value 0 for no, or 1 for yes.

  • expiryDays

  • putDateResolutionType integer

    Value 0 for not allowed, or 1 for required.

  • lotPutType integer

    Lot Numbers: Puts. Value 0 for not allowed, or 1 for required.

  • lotPickType integer

    Lot Numbers: Picks. Value 0 for not allowed, or 1 for required.

  • isLotMixed integer

    Value 0 for no, or 1 for yes.

  • serialNumberPutType integer

    Serial Numbers: Puts. Value 0 for not allowed, or 1 for required.

  • serialNumberPickType integer

    Serial Numbers: Picks. Value 0 for not allowed, or 1 for required.

  • isSerialNumberMixed integer

    Value 0 for no, or 1 for yes.

  • expiryDatePutType integer

    Expiry Date: Puts. Value 0 for not allowed, or 1 for required.

  • expiryDatePickType integer

    Expiry Date: Picks. Value 0 for not allowed, or 1 for required.

  • isExpiryDateMixed

    Value 0 for no, or 1 for yes.

  • productionDatePutType integer

    Production Date: Puts. Value 0 for not allowed, or 1 for required.

  • productionDatePickType integer

    Production Date: Picks. Value 0 for not allowed, or 1 for required.

  • isProductionDateMixed integer

    Value 0 for no, or 1 for yes.

  • releaseDatePutType integer

    Release Date: Puts. Value 0 for not allowed, or 1 for required.

  • releaseDatePickType integer

    Release Date: Picks. Value 0 for not allowed, or 1 for required.

  • isReleaseDateMixed integer

    Value 0 for no, or 1 for yes.

  • qualificationPutType integer

    Qualification: Puts. Value 0 for not allowed, or 1 for required.

  • qualificationPickType integer

    Qualification: Picks. Value 0 for not allowed, or 1 for required.

  • isQualificationMixed integer

    Value 0 for no, or 1 for yes.

Request with curl
curl "http://[subdomain.itempath.com or IP]/api/material_properties" \ -X post \ -H "Content-Type: application/json" \ -H "Authorization: Bearer [Your JWT Access Token]" \
-d '{
    "name": "Sample Material Property",
    "description": "Example",
    "qualificationPutType": 0,
    "countingCycle": 1,
    "lotPickType": 0,
    "expiryDatePutType": 0,
    "qualificationPickType": 0,
    "isUncontrolledInventory": 0,
    "releaseDatePickType": 0,
    "type": 1,
    "productionDatePutType": 0,
    "expiryDatePickType": 0,
    "isQualificationMixed": 1,
    "isSerialNumberMixed": 1,
    "fifoType": 0,
    "isProductionDateMixed": 1,
    "lotPutType": 0,
    "releaseDatePutType": 0,
    "isLocalInventory": 0,
    "isStrictFifo": 0,
    "serialNumberPickType": 0,
    "serialNumberPutType": 0,
    "isReleaseDateMixed": 1,
    "putDateResolutionType": 1,
    "isLotMixed": 1,
    "productionDatePickType": 0,
    "isExpiryDateMixed": 1
}'
Example Response
{
    "material_property": {
        "qualificationPutType": 0,
        "countingCycle": 1,
        "lotPickType": 0,
        "expiryDatePutType": 0,
        "qualificationPickType": 0,
        "isUncontrolledInventory": 0,
        "releaseDatePickType": 0,
        "type": 1,
        "productionDatePutType": 0,
        "expiryDatePickType": 0,
        "name": "Sample Material Property",
        "isQualificationMixed": 1,
        "isSerialNumberMixed": 1,
        "dangerClass": null,
        "fifoType": 0,
        "isProductionDateMixed": 1,
        "description": "Example",
        "lotPutType": 0,
        "releaseDatePutType": 0,
        "isLocalInventory": 0,
        "isStrictFifo": 0,
        "countingThreshold": null,
        "serialNumberPickType": 0,
        "serialNumberPutType": 0,
        "isReleaseDateMixed": 1,
        "putDateResolutionType": 1,
        "isLotMixed": 1,
        "productionDatePickType": 0,
        "id": "F687AB5F-E6F6-48A2-B748-10CE0A6E2C29",
        "expiryDays": null,
        "isExpiryDateMixed": 1
    }
}

Show Material Property

get /api/material_properties/[id]

Get a specific material property from the PPG database and return a JSON response.

Arguments

Request with curl
curl "http://[subdomain.itempath.com or IP]/api/material_properties/[id]" \ -X get \ -H "Content-Type: application/json" \ -H "Authorization: Bearer [Your JWT Access Token]"
Example Response
{
    "material_property": {
        "qualificationPutType": 0,
        "countingCycle": 1,
        "lotPickType": 0,
        "expiryDatePutType": 0,
        "qualificationPickType": 0,
        "isUncontrolledInventory": 0,
        "releaseDatePickType": 0,
        "type": 1,
        "productionDatePutType": 0,
        "expiryDatePickType": 0,
        "name": "BASIC",
        "isQualificationMixed": 1,
        "isSerialNumberMixed": 1,
        "dangerClass": null,
        "fifoType": 0,
        "isProductionDateMixed": 1,
        "description": "Test",
        "lotPutType": 0,
        "releaseDatePutType": 0,
        "isLocalInventory": 0,
        "isStrictFifo": 0,
        "countingThreshold": null,
        "serialNumberPickType": 0,
        "serialNumberPutType": 0,
        "isReleaseDateMixed": 1,
        "putDateResolutionType": 1,
        "isLotMixed": 1,
        "productionDatePickType": 0,
        "id": "F687AB5F-E6F6-48A2-B748-10CE0A6E2C29",
        "expiryDays": null,
        "isExpiryDateMixed": 1
    }
}

Update Material Properties

put /api/material_properties/[id]

Update a material property in the PPG database and return a response.

Arguments

  • name string
    REQUIRED

    Name of the material property.

  • description string

    Description of the material property.

  • type integer

  • dangerClass integer

  • countingCycle integer

    How many items are needed before triggering a count.

  • countingThreshold float

    How many items are needed before triggering a count.

  • locContentType integer

  • maxDriveSpeed float

  • fifoType integer

    First-in-first-out. Value 0 for no, or 1 for yes.

  • isStrictFifo integer

    Value 0 for no, or 1 for yes.

  • isLocalInventory integer

    Value 0 for no, or 1 for yes.

  • isUncontrolledInventory integer

    Value 0 for no, or 1 for yes.

  • expiryDays

  • putDateResolutionType integer

    Value 0 for not allowed, or 1 for required.

  • lotPutType integer

    Lot Numbers: Puts. Value 0 for not allowed, or 1 for required.

  • lotPickType integer

    Lot Numbers: Picks. Value 0 for not allowed, or 1 for required.

  • isLotMixed integer

    Value 0 for no, or 1 for yes.

  • serialNumberPutType integer

    Serial Numbers: Puts. Value 0 for not allowed, or 1 for required.

  • serialNumberPickType integer

    Serial Numbers: Picks. Value 0 for not allowed, or 1 for required.

  • isSerialNumberMixed integer

    Value 0 for no, or 1 for yes.

  • expiryDatePutType integer

    Expiry Date: Puts. Value 0 for not allowed, or 1 for required.

  • expiryDatePickType integer

    Expiry Date: Picks. Value 0 for not allowed, or 1 for required.

  • isExpiryDateMixed

    Value 0 for no, or 1 for yes.

  • productionDatePutType integer

    Production Date: Puts. Value 0 for not allowed, or 1 for required.

  • productionDatePickType integer

    Production Date: Picks. Value 0 for not allowed, or 1 for required.

  • isProductionDateMixed integer

    Value 0 for no, or 1 for yes.

  • releaseDatePutType integer

    Release Date: Puts. Value 0 for not allowed, or 1 for required.

  • releaseDatePickType integer

    Release Date: Picks. Value 0 for not allowed, or 1 for required.

  • isReleaseDateMixed integer

    Value 0 for no, or 1 for yes.

  • qualificationPutType integer

    Qualification: Puts. Value 0 for not allowed, or 1 for required.

  • qualificationPickType integer

    Qualification: Picks. Value 0 for not allowed, or 1 for required.

  • isQualificationMixed integer

    Value 0 for no, or 1 for yes.

Request with curl
curl "http://[subdomain.itempath.com or IP]/api/material_properties/[id]" \ -X put \ -H "Content-Type: application/json" \ -H "Authorization: Bearer [Your JWT Access Token]"
-d '{
    "name": "Updated Material Property",
    "description": "Example",
    "fifoType": 1,
    "isLocalInventory": 1,
    "isStrictFifo": 1,
}'
Example Response
{
    "material_property": {
        "qualificationPutType": 0,
        "countingCycle": 1,
        "lotPickType": 2,
        "expiryDatePutType": 0,
        "qualificationPickType": 0,
        "isUncontrolledInventory": 0,
        "releaseDatePickType": 0,
        "type": 1,
        "productionDatePutType": 0,
        "expiryDatePickType": 0,
        "name": "Updated Material Property",
        "isQualificationMixed": 1,
        "isSerialNumberMixed": 1,
        "dangerClass": null,
        "fifoType": 1,
        "isProductionDateMixed": 1,
        "description": null,
        "lotPutType": 3,
        "releaseDatePutType": 0,
        "isLocalInventory": 1,
        "isStrictFifo": 1,
        "countingThreshold": null,
        "serialNumberPickType": 0,
        "serialNumberPutType": 0,
        "isReleaseDateMixed": 1,
        "putDateResolutionType": 1,
        "isLotMixed": 1,
        "productionDatePickType": 0,
        "id": "BE0D281F-8388-4297-8D70-2BC30284AA9A",
        "expiryDays": null,
        "isExpiryDateMixed": 1
    }
}

Delete Material Property

delete /api/material_properties/[id]

Delete a material property from the PPG database.

Arguments

Request with curl
curl "http://[subdomain.itempath.com or IP]/api/material_properties/[id]" \ -X delete \ -H "Content-Type: application/json" \ -H "Authorization: Bearer [Your JWT Access Token]"
Example Response
{ "deleted": "true" }