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

  • id uuid

  • name string

    The name of the property.

  • description string

    The description of the property.

  • type integer

  • dangerClass integer

  • countingCycle integer

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

  • countingThreshold float

    How many items are needed before triggering a count.

  • locContentType integer

  • maxDriveSpeed float

  • fifoType integer

  • isStrictFifo integer

  • isUncontrolledInventory integer

  • isLocalInventory integer

  • expiryDays integer

  • putDateResolutionType integer

  • lotPutType integer

  • lotPickType integer

  • isLotMixed integer

  • serialNumberPutType integer

  • serialNumberPickType integer

  • isSerialNumberMixed integer

  • expiryDatePutType integer

  • expiryDatePickType integer

  • isExpiryDateMixed integer

  • productionDatePutType integer

  • productionDatePickType integer

  • isProductionDateMixed integer

  • releaseDatePutType integer

  • releaseDatePickType integer

  • isReleaseDateMixed integer

  • qualificationPutType integer

  • qualificationPickType integer

  • isQualificationMixed integer

Endpoints

List Material Properties

get /api/material_properties

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

Arguments

  • name string

    Only return material properties that have the given name.

  • description string

    Only return material properties that include the given description.

  • 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.

  • countOnly boolean

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

    Default value: false

Request with curl
curl "http://[Your IP] /api/material_properties" \ -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://[Your 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://[Your 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://[Your 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://[Your IP] /api/material_properties/[id]" \ -X delete \ -H "Content-Type: application/json" \ -H "Authorization: Bearer [Your JWT Access Token]"
Example Response
{ "deleted": "true" }