Share via


Inventory Visibility publiskie API

Piezīme

Azure Active Directory tagad ir Microsoft Entra ID. Apgūt vairāk

Šajā rakstā ir aprakstīti publiskie API, kas tiek nodrošināti ar krājumu redzamību.

Krājumu redzamības pievienojumprogrammas publiskais REST API piedāvā vairākus specifiskus integrācijas galapunktus. Tas atbalsta četrus galvenos mijiedarbības tipus:

  • Iegrāmatojot pievienojumprogrammas rīcībā esošās izmaiņas no ārējās sistēmas
  • Rīcībā esošo krājumu daudzumu iestatīšana vai ignorēšana pievienojumprogrammai no ārējās sistēmas
  • Iegrāmatojot pievienojumprogrammā rezervācijas notikumus no ārējās sistēmas
  • Tiek vaicāti pašreizējie rīcībā esošie daudzumi no ārējās sistēmas

Tālāk esošajā tabulā ir norādītas pieejamās API:

Ceļš Metode apraksts
/api/environment/{environmentId}/onhand Amats Izveidot vienu rīcībā esošo izmaiņu notikumu
/api/environment/{environmentId}/onhand/bulk Amats Izveidot vairākus izmaiņu notikumus
/api/environment/{environmentId}/setonhand/{inventorySystem}/bulk Amats Iestatīt/ignorēt rīcībā esošos daudzumus
/api/environment/{environmentId}/onhand/reserve Amats Izveidot vienu vieglās rezervācijas notikumu
/api/environment/{environmentId}/onhand/reserve/bulk Amats Izveidot vairākus vieglās rezervēšanas notikumus
/api/environment/{environmentId}/onhand/unreserve Amats Atsaukt vienu vieglās rezervēšanas notikumu
/api/environment/{environmentId}/onhand/unreserve/bulk Amats Atsaukt vairākus vieglās rezervēšanas notikumus
/api/environment/{environmentId}/onhand/reserve/resyncjob Amats Tīrīt rezervēšanas datus
/api/environment/{environmentId}/onhand/changeschedule Amats Izveidot vienu plānoto rīcībā esošo izmaiņu
/api/environment/{environmentId}/onhand/changeschedule/bulk Amats Izveidot vairākas rīcībā esošo izmaiņu ar datumiem
/api/environment/{environmentId}/onhand/indexquery Amats vaicājums, izmantojot grāmatošanas metodi (ieteicams)
/api/environment/{environmentId}/onhand Iegūt Vaicājums, izmantojot metodi Iegūt
/api/environment/{environmentId}/onhand/exactquery Amats Precīzs vaicājums, izmantojot grāmatošanas metodi
/api/environment/{environmentId}/allocation/allocate Amats Izveidot vienu piešķires notikumu
/api/environment/{environmentId}/allocation/unallocate Amats Izveidot vienu nesadalītu notikumu
/api/environment/{environmentId}/allocation/reallocate Amats Izveidot vienu no jauna pārceltiem notikumiem
/api/environment/{environmentId}/allocation/consume Amats Izveidot vienu patērēto notikumu
/api/environment/{environmentId}/allocation/query Amats Vaicājuma sadalījuma rezultāts
/api/environment/{environmentId}/onhand/productsearch/indexquery Amats Pasta indeksa vaicājums ar preču meklēšanu
/api/environment/{environmentId}/onhand/productsearch/exactquery Amats Grāmatot precīzu vaicājumu, izmantojot preču meklēšanu

Piezīme

Ceļa {environmentId} daļa ir vides ID Microsoft Dynamics pakalpojumos Lifecycle Services.

Lielapjoma API var atgriezt maksimāli 512 ierakstus katram pieprasījumam.

Autentifikācija

Platformas drošības marķieris tiek izmantots, lai izsauktu Krājumu redzamības pievienojumprogrammas publisko API. Tāpēc marķieris jāizveido Microsoft Entra , izmantojot programmu Microsoft Entra . Pēc tam ir jāizmanto marķieris Microsoft Entra , lai iegūtu piekļuves pilnvaras no drošības pakalpojuma.

Lai iegūtu drošības pakalpojuma pilnvaru, rīkojieties šādi.

  1. Piesakieties Azure portālā un izmantojiet to, lai atrastu programmas clientIdclientSecret vērtības un Dynamics 365 Supply Chain Management vērtības.

  2. Paņemiet marķieri Microsoft Entra (), iesniedzotaadToken HTTP pieprasījumu ar šādiem rekvizītiem:

    • URL:https://login.microsoftonline.com/${aadTenantId}/oauth2/v2.0/token

    • Metodi:GET

    • Pamatteksta saturs (formas dati):

      Princips Vērtība
      client_id ${aadAppId}
      client_secret ${aadAppSecret}
      grant_type client_credentials
      Darbības joma 0cdb527f-a8d1-4bf8-9436-b352c68682b2/.Noklusējuma

    Atbildei vajadzētu Microsoft Entra saņemt marķieri (aadToken). Tiem vajadzētu līdzināties šādam piemēram.

    {
        "token_type": "Bearer",
        "expires_in": "3599",
        "ext_expires_in": "3599",
        "access_token": "eyJ0eX...8WQ"
    }
    
  3. Formulējiet JavaScript objekta notācijas (JSON) pieprasījumu, kas ir līdzīgs šim piemēram.

    {
        "grant_type": "client_credentials",
        "client_assertion_type": "aad_app",
        "client_assertion": "{Your_Microsoft EntraToken}",
        "scope": "https://inventoryservice.operations365.dynamics.com/.default",
        "context": "{$LCS_environment_id}",
        "context_type": "finops-env"
    }
    

    Ņemiet vērā šādus punktus:

    • Vērtībai client_assertion ir jābūt marķierim Microsoft Entra (aadToken), kuru saņēmāt iepriekšējā darbībā.
    • Vērtībai context ir jābūt Lifecycle Services vides ID, kurā vēlaties izvietot pievienojumprogrammu.
    • Iestatiet pārējās vērtības, kā parādītas piemērā.
  4. Ienest piekļuves marķieri (access_token), iesniedzot HTTP pieprasījumu ar šādiem rekvizītiem:

    • URL:https://securityservice.operations365.dynamics.com/token
    • Metodi:POST
    • HTTP virsraksts: iekļaut API versiju. (Atslēga ir Api-Version, un vērtība ir 1.0.)
    • Pamatteksta saturs: iekļaut iepriekšējā darbībā izveidoto JSON pieprasījumu.

    Atbildei vajadzētu saņemt piekļuves marķieri (access_token). Tas ir tas, kas jums nepieciešams kā nesēja marķieris, lai izsauktu Krājumu redzamības API. Lūk, piemērs:

    {
        "access_token": "{Returned_Token}",
        "token_type": "bearer",
        "expires_in": 3600
    }
    

Piezīme

URL https://securityservice.operations365.dynamics.com/token ir vispārīgs drošības pakalpojuma URL. Nosaucot URL, pirmā atbilde ir http 307 novirzīšanas atbilde ar statusa kodu atbildes virsrakstos un ievadne ar atslēgu "Atrašanās vieta", kas ietver drošības pakalpojuma mērķa URL. URL ir šādā formātā: https://gw.{$geo}-il101.gateway.prod.island.powerapps.com/securityservice/token Piemēram, ja jūsu vide atrodas ASV ģeogrāfiskā atrašanās vietā, url varētu būt https://gw.us-il101.gateway.prod.island.powerapps.com/securityservice/token. Ja 307 atbildes statusa kods nav pieņemams jums, varat manuāli izveidot faktisko URL atbilstoši FinOps vides atrašanās vietai. Vienkāršākais veids ir atvērt ar pārlūkprogrammu https://gw.as-il101.gateway.prod.island.powerapps.com/securityservice/token , un tad kopēt adresi adreses joslā.

Izveidot rīcībā esošos izmaiņu notikumus

Rīcībā esošo izmaiņu notikumu izveidošanai ir divi API:

  • Izveidot vienu ierakstu: /api/environment/{environmentId}/onhand
  • Izveidot vairākus ierakstus: /api/environment/{environmentId}/onhand/bulk

Tabulā ir apkopota katra JSON pamatteksta lauka nozīme.

Lauka kods apraksts
id Unikāls ID noteiktam izmaiņu notikumam. Ja atkārtota iesniegšana rodas pakalpojuma kļūmes dēļ, šis ID tiek izmantots, lai nodrošinātu, ka viens un tas pats notikums sistēmā netiks uzskaitīts divreiz.
organizationId Ar notikumu saistītās organizācijas identifikators. Tas attiecas uz risinājuma Supply Chain Management organizācijām vai datu apgabala ID.
productId Preces identifikators.
quantities Daudzumam ir jābūt mazākam par rīcībā esošo daudzumu. Piemēram, ja plauktam ir pievienotas 10 jaunas grāmatas, šī vērtība tiks pievienota quantities:{ shelf:{ received: 10 }}. Ja no plaukta vai pārdotas ir noņemtas trīs grāmatas, šī vērtība tiks noņemta quantities:{ shelf:{ sold: 3 }}.
dimensionDataSource Grāmatošanas izmaiņu notikumā un vaicājumā izmantoto dimensiju datu avots. Ja norādāt datu avotu, varat izmantot pielāgotās dimensijas no norādītā datu avota. Ar dimensiju konfigurāciju Krājumu pārredzamība var kartēt pielāgotās dimensijas uz vispārīgajām noklusējuma dimensijām. Ja vērtība dimensionDataSource nav norādīta, vaicājumos varat izmantot tikai vispārīgās pamatdimensijas .
dimensions Dinamisks atslēgu/vērtību pāra kopums. Vērtības ir kartētas uz dažām Supply Chain Management dimensijām. Tomēr jūs varat arī pievienot pielāgotas dimensijas (piemēram, Avots ), lai norādītu, vai notikums nāk no Piegādes ķēdes pārvaldības vai ārējas sistēmas.

Piezīme

Ja datu nodalījuma kārtula ir iestatīta uz Pēc preces ID un ir siteId neobligātas locationId dimensijas. Pretējā gadījumā nepieciešamas dimensijas. Šis nosacījums attiecas arī uz sadalījuma, vieglās rezerves un izmaiņu grafika API.

Tālāk minētās apakšsadaļas sniedz piemērus, kā lietot šos API.

Izveidot vienu rīcībā esošo izmaiņu notikumu

Šis API izveido vienu rīcībā esošo izmaiņu notikumu.

Path:
    /api/environment/{environmentId}/onhand
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    {
        id: string,
        organizationId: string,
        productId: string,
        dimensionDataSource: string, # Optional
        dimensions: {
            [key:string]: string,
        },
        quantities: {
            [dataSourceName:string]: {
                [key:string]: number,
            },
        },
    }

Šajā piemērā parādīts parauga pamatteksta saturs. Šajā piemērā uzņēmumam ir pārdošanas punkta (POS) sistēma, kas apstrādā veikala darbības un tādējādi veic krājumu izmaiņas. Debitors savam veikalam ir atgriezis sarkanu T-kreklu. Lai atspoguļotu šīs izmaiņas, grāmatojiet vienu T-krekla preces izmaiņu notikumu. Šī notikuma dēļ T-krekla prece tiks palielināta par 1.

{
    "id": "Test201",
    "organizationId": "usmf",
    "productId": "T-shirt",
    "dimensionDataSource": "pos",
    "dimensions": {
        "siteId": "1",
        "locationId": "11",
        "posMachineId": "0001",
        "colorId": "red"
    },
    "quantities": {
        "pos": {
            "inbound": 1
        }
    }
}

Šajā piemērā parādīts parauga pamatteksta saturs bez dimensionDataSource. Šajā gadījumā tās ir dimensionspamatdimensijas. Ja dimensionDataSource iestatīts, var dimensions būt vai nu datu avota dimensijas, vai pamatdimensijas.

{
    "id": "Test202",
    "organizationId": "usmf",
    "productId": "T-shirt",
    "dimensions": {
        "siteId": "1",
        "locationId": "11",
        "colorId": "red"
    },
    "quantities": {
        "pos": {
            "inbound": 1
        }
    }
}

Izveidot vairākus izmaiņu notikumus

Šis API var izveidot izmaiņu notikumus tāpat kā viena notikuma API . Vienīgā atšķirība ir tā, ka šis API var izveidot vairākus ierakstus vienlaicīgi. Tāpēc arī vērtības PathBody atšķiras. Šim API sniedz Body ierakstu masīvu. Maksimālais ierakstu skaits ir 512. Tāpēc rīcībā esošo izmaiņu lielapjoma API var atbalstīt līdz 512 izmaiņu notikumiem vienlaicīgi.

Piemēram, mazumtirdzniecības veikala POS iekārta apstrādāja šādas divas darbības:

  • Viens atgriešanas pasūtījums ar vienu sarkanu T-kreklu
  • Viena pārdošanas transakcija trīs melnā T-kreklu

Šajā gadījumā jūs varat iekļaut abus krājumu atjauninājumus vienā API izsaukumā.

Path:
    /api/environment/{environmentId}/onhand/bulk
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    [
        {
            id: string,
            organizationId: string,
            productId: string,
            dimensionDataSource: string, # Optional
            dimensions: {
                [key:string]: string,
            },
            quantities: {
                [dataSourceName:string]: {
                    [key:string]: number,
                },
            },
        },
        ...
    ]

Šajā piemērā parādīts parauga pamatteksta saturs.

[
    {
        "id": "Test203",
        "organizationId": "usmf",
        "productId": "T-shirt",
        "dimensionDataSource": "pos",
        "dimensions": {
            "SiteId": "Site1",
            "LocationId": "11",
            "posMachineId": "0001"
            "colorId": "red"
        },
        "quantities": {
            "pos": { "inbound": 1 }
        }
    },
    {
        "id": "Test204",
        "organizationId": "usmf",
        "productId": "T-shirt",
        "dimensions": {
            "siteId": "1",
            "locationId": "11",
            "colorId": "black"
        },
        "quantities": {
            "pos": { "outbound": 3 }
        }
    }
]

Iestatīt/ignorēt rīcībā esošos daudzumus

Izmantojot iestatīto rīcībā esošo API, tiek ignorēti norādītā produkta pašreizējie dati. Šī funkcionalitāte parasti tiek izmantota krājumu inventarizācijas atjaunināšanai. Piemēram, ikdienas krājumu inventarizācijas laikā veikals var atrast, ka faktiskie rīcībā esošie krājumi sarkanajam T-kreklum ir 100. Tāpēc POS ienākošais daudzums ir jāatjaunina uz 100 neatkarīgi no iepriekšējā daudzuma. Šo API var izmantot, lai ignorētu esošo vērtību.

Path:
    /api/environment/{environmentId}/setonhand/{inventorySystem}/bulk
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    [
        {
            id: string,
            organizationId: string,
            productId: string,
            dimensionDataSource: string, # Optional
            dimensions: {
                [key:string]: string,
            },
            quantities: {
                [dataSourceName:string]: {
                    [key:string]: number,
                },
            },
            modifiedDateTimeUTC: datetime,
        },
        ...
    ]

Šajā piemērā parādīts parauga pamatteksta saturs. Šī API uzvedība atšķiras no to API uzvedības, kas izklāstītas šī raksta sadaļā Rīcībā esošo izmaiņu notikumu izveide iepriekš. Šajā paraugā T-krekla preces daudzums tiks iestatīts uz 1.

[
    {
        "id": "Test204",
        "organizationId": "usmf",
        "productId": "T-shirt",
        "dimensionDataSource": "pos",
        "dimensions": {
            "SiteId": "1",
            "LocationId": "11",
            "posMachineId": "0001"
            "colorId": "red"
        },
        "quantities": {
            "pos": {
                "inbound": 100
            }
        }
    }
]

Izveidot rezervācijas notikumus

Lai lietotu API rezervēšanu , ir jāslēdz rezervācijas funkcija un jāpabeidz rezervācijas konfigurācija. Papildinformāciju (tostarp datu darbplūsmu un parauga scenāriju) skatiet sadaļā Krājumu redzamības rezervācijas.

Izveidot vienu rezervācijas notikumu

Rezervāciju var veikt pret citiem datu avota iestatījumiem. Lai konfigurētu šī tipa rezervāciju, vispirms parametrā norādiet datu dimensionDataSource avotu. Pēc tam parametrā dimensions norādiet dimensijas saskaņā ar dimensijas iestatījumiem mērķa datu avotā.

Izsaucot rezervācijas API, var kontrolēt rezervācijas apstiprināšanu, pieprasījuma ifCheckAvailForReserv pamattekstā norādot Būla parametru. Līdzekļu vērtība True nozīmē, ka ir nepieciešama apstiprināšana, bet nozīmē False , ka pārbaude nav nepieciešama. Noklusētā vērtība ir True.

Ja vēlaties atsaukt rezervāciju vai neatgriezt norādītos krājumu daudzumus, iestatiet daudzumu kā negatīvu vērtību un iestatiet parametru, ifCheckAvailForReservFalse lai izlaistu pārbaudi. Ir arī atvēlēts nepieejams API, lai to pašu darītu. Atšķirība ir tikai veids, kādā tiek izsaukti divi API. Ir vienkāršāk atsaukt noteiktu rezervācijas notikumu, izmantojot reservationId nepieejamu API. Papildinformāciju skatiet sadaļā Viena rezervācijas notikuma neatlasīt .

Path:
    /api/environment/{environmentId}/onhand/reserve
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    {
        id: string,
        organizationId: string,
        productId: string,
        dimensionDataSource: string,
        dimensions: {
            [key:string]: string,
        },
        quantityDataSource: string, # optional
        quantities: {
            [dataSourceName:string]: {
                [key:string]: number,
            },
        },
        modifier: string,
        quantity: number,
        ifCheckAvailForReserv: boolean,
    }

Šajā piemērā parādīts parauga pamatteksta saturs.

{
    "id": "reserve-0",
    "organizationId": "SCM_IV",
    "productId": "iv_contoso_product",
    "quantity": 1,
    "quantityDataSource": "iv",
    "modifier": "softReservOrdered",
    "ifCheckAvailForReserv": true,
    "dimensions": {
        "siteId": "iv_contoso_site",
        "locationId": "iv_contoso_location",
        "colorId": "red",
        "sizeId": "small"
    }
}

Šajā piemērā parādīta veiksmīga atbilde.

{
    "reservationId": "RESERVATION_ID",
    "id": "ohre~id-822-232959-524",
    "processingStatus": "success",
    "message": "",
    "statusCode": 200
}

Izveidot vairākus rezervēšanas notikumus

Šis API ir viena notikuma API lielapjoma versija.

Path:
    /api/environment/{environmentId}/onhand/reserve/bulk
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    [
        {
            id: string,
            organizationId: string,
            productId: string,
            dimensionDataSource: string,
            dimensions: {
                [key:string]: string,
            },
            quantityDataSource: string, # optional
            quantities: {
                [dataSourceName:string]: {
                    [key:string]: number,
                },
            },
            modifier: string,
            quantity: number,
            ifCheckAvailForReserv: boolean,
        },
        ...
    ]

Atsaukt rezervēšanas notikumus

Rezervācijas atcelšanas API darbojas kā stornēšanas darbība rezervācijas notikumiem. Tas nodrošina veidu, kā atsaukt rezervēšanas notikumu, kas norādīts reservationId par rezervēšanas daudzumu vai samazināt to.

Atsaukt vienu rezervācijas notikumu

Veidojot rezervāciju, tā reservationId tiek iekļauta atbildes pamattekstā. Jums ir jānorāda viens un reservationId tas pats, lai atceltu rezervēšanu, un tas pats organizationIdproductId jau ir jāiekļauj dimensions un jāizmanto rezervēšanas API zvanam. Visbeidzot norādiet vērtību OffsetQty , kas norāda krājumu skaitu, kuri tiks atbrīvoti no iepriekšējās rezervēšanas. Rezervēšanu var pilnībā vai daļēji atcelt atkarībā no norādītā. OffsetQty Piemēram, ja rezervētas 100 krājumu vienības, OffsetQty: 10varat norādīt, lai atceltu 10 no sākotnējās rezervētās summas.

Path:
    /api/environment/{environmentId}/onhand/unreserve
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    {
        id: string,
        organizationId: string,
        productId: string,
        reservationId: string,
        dimensions: {
            [key:string]: string,
        },
        OffsetQty: number
    }

Šis kods rāda pamatteksta satura piemēru.

{
    "id": "unreserve-0",
    "organizationId": "SCM_IV",
    "productId": "iv_contoso_product",
    "reservationId": "RESERVATION_ID",
    "dimensions": {
        "siteid":"iv_contoso_site",
        "locationid":"iv_contoso_location",
        "ColorId": "red",
        "SizeId": "small"
    },
    "OffsetQty": 1
}

Tālāk redzamais kods parāda veiksmīgas atbildes pamatteksta piemēru.

{
    "reservationId": "RESERVATION_ID",
    "totalInvalidOffsetQtyByReservId": 0,
    "id": "ohoe~id-823-11744-883",
    "processingStatus": "success",
    "message": "",
    "statusCode": 200
}

Piezīme

Atbildes pamattekstā, ja rezervēšanas OffsetQty daudzums ir mazāks vai vienāds ar to, processingStatus būs "veiksmīgs" un totalInvalidOffsetQtyByReservId būs 0.

Ja OffsetQty tā ir lielāka par rezervēto summu, processingStatus būs "partialSuccess" totalInvalidOffsetQtyByReservId , un tā būs starpība starp rezervēto OffsetQty summu un rezervēto summu.

Piemēram, ja rezervēšanas daudzums ir 10 un vērtība ir 12 , būs OffsetQty 2 .totalInvalidOffsetQtyByReservId

Atsaukt vairākus rezervēšanas notikumus

Šis API ir viena notikuma API lielapjoma versija.

Path:
    /api/environment/{environmentId}/onhand/unreserve/bulk
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    [      
        {
            id: string,
            organizationId: string,
            productId: string,
            reservationId: string,
            dimensions: {
                [key:string]: string,
            },
            OffsetQty: number
        }
        ...
    ]

Tīrīt rezervēšanas datus

Tīrīšanas rezervēšanas datu API tiek izmantots, lai iztīrītu vēsturiskos rezervēšanas datus. Pamattekstam jābūt datu avotu sarakstam. Ja saraksts ir tukšs, visi datu avoti tiks iztīrīti.

Path:
    /api/environment/{environmentId}/onhand/reserve/resyncjob
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    [      
        "iv",
        "pos"
    ]

Rīcībā esošie vaicājumi

Izmantojiet rīcībā esošo vaicājumu API, lai ienestu pašreizējos rīcībā esošos krājumu datus saviem produktiem. Šo API varat izmantot ikreiz, kad ir jāzina krājumi, piemēram, kad vēlaties pārskatīt preču krājumu līmeņus savā e-komercijas vietnē vai kad vēlaties pārbaudīt preču pieejamību reģionos vai tuvajos veikalos un noliktavās. API pašlaik atbalsta vaicājumu līdz 5000 atsevišķiem krājumiem pēc productID vērtības. Katrs siteID vaicājumā locationID var norādīt vairākas vērtības. Ja datu nodalījuma kārtula ir iestatīta uz Pēc novietojuma, maksimālo ierobežojumu nosaka šāds vienādojums:

NumOf(SiteID) * NumOf(LocationID) <= 100.

Vaicājums, izmantojot grāmatošanas metodi

Path:
    /api/environment/{environmentId}/onhand/indexquery
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    {
        dimensionDataSource: string, # Optional
        filters: {
            organizationId: string[],
            productId: string[],
            siteId: string[],
            locationId: string[],
            [dimensionKey:string]: string[],
        },
        groupByValues: string[],
        returnNegative: boolean,
    }

Šī pieprasījuma pamatteksta daļā ir izvēles dimensionDataSource parametrs. Ja tas nav iestatīts, tiks filters uzskatīts par pamatdimensijām .

Parametrs returnNegative kontrolē, vai rezultātos ir negatīvi ieraksti.

Vaicājuma dati, kas tiek glabāti pēc atrašanās vietas

Šī sadaļa ir piemērojama, ja datu nodalījuma kārtula ir iestatīta uz Pēc novietojuma.

  • organizationId jābūt masīvam, kurā ir tieši viena vērtība.
  • productId var ietvert vienu vai vairākas vērtības. Ja tas ir tukšs masīvs, sistēma atgriezīs visas preces norādītajām vietām un vietām. Šajā gadījumā un siteId tas locationId nedrīkst būt tukšs.
  • siteId un locationId tiek izmantoti nodalīšanas laikā. Rīcībā esošo vaicājuma pieprasījumā siteIdlocationId var norādīt vairāk nekā vienu un vērtību . Ja abi masīvi ir tukši, sistēma atgriezīs visas norādīto preču vietas un vietas. Šajā gadījumā tas productId nedrīkst būt tukšs.

Ieteicams parametru lietot groupByValues tādā veidā, kas atbilst indeksa konfigurācijai. Papildinformāciju skatiet sadaļā Rīcībā esošo krājumu indeksa konfigurācija.

Vaicājuma dati, kas tiek glabāti pēc preces ID

Šī sadaļa ir piemērojama, ja datu nodalījuma kārtula ir iestatīta uz Pēc preces ID. Šajā gadījumā ir nepieciešami filters divi lauki: organizationId, productId.

  • organizationId jābūt masīvam, kurā ir tieši viena vērtība.
  • productId jābūt masīvam ar vismaz vienu vērtību.

Atšķirībā no datu glabāšanas pēc atrašanās vietas, siteIdlocationId ja nenorādāt vērtības, un krājumu informācija katram preces ID tiks apkopota visās vietās un/vai vietās.

Piezīme

Ja esat aktivizējuši rīcībā esošo izmaiņu grafiku un pieejamās uz solīšanai (ATP) funkcijas, QueryATP vaicājumā var būt iekļauts arī Būla parametrs, kas kontrolē, vai vaicājuma rezultāti ietver ATP informāciju. Papildinformāciju un piemērus skatiet sadaļā "Rīcībā esošo krājumu redzamības maiņu grafiki" un "pieejams solīšanai".

Šajā piemērā parādīts parauga pamatteksta saturs. Tas parāda, ka varat pieprasīt rīcībā esošos krājumus no vairākām atrašanās vietām (noliktavām).

{
    "dimensionDataSource": "pos",
    "filters": {
        "organizationId": ["usmf"],
        "productId": ["T-shirt"],
        "siteId": ["1"],
        "locationId": ["11","12","13"],
        "colorId": ["red"]
    },
    "groupByValues": ["colorId", "sizeId"],
    "returnNegative": true
}

Šajā piemērā parādīts, kā vaicāt par visām precēm noteiktā vietā un atrašanās vietā.

{
    "filters": {
        "organizationId": ["usmf"],
        "productId": [],
        "siteId": ["1"],
        "locationId": ["11"],
    },
    "groupByValues": ["colorId", "sizeId"],
    "returnNegative": true
}

Vaicājums, izmantojot metodi Iegūt

Path:
    /api/environment/{environmentId}/onhand
Method:
    Get
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Query(Url Parameters):
    groupBy
    returnNegative
    [Filters]

Šeit paraugs iegūst vietrādi URL. Šis saņemšanas pieprasījums ir tieši tāds pats kā iepriekš sniegtais grāmatošanas paraugs.

/api/environment/{environmentId}/onhand?organizationId=SCM_IV&productId=iv_contoso_product&siteId=iv_contoso_site&locationId=iv_contoso_location&colorId=red&groupBy=colorId,sizeId&returnNegative=true

Rīcībā esošo krājumu vaicājums

Rīcībā esošie vaicājumi ir līdzīgi parastie rīcībā esošie vaicājumi, bet tie ļauj norādīt kartēšanas hierarhiju starp vietu un atrašanās vietu. Piemēram, jums ir šādas divas vietas:

  • 1. vieta, kas ir kartēta uz vietu A
  • 2. vieta, kas ir kartēta uz vietu B

Ja parastam rīcībā esošo krājumu vaicājumam ir norādīts "siteId": ["1","2"]"locationId": ["A","B"] un krājumu redzamība automātiski vaicās rezultātu šādām vietām un vietām:

  • 1. vieta, novietojums A
  • 1. vieta, novietojums B
  • 2. vieta, novietojums A
  • 2. vieta, vieta B

Kā redzams, parastais rīcībā esošie vaicājums neatpazīst, ka A vieta ir tikai 1. vietā, un vieta B pastāv tikai 2. vietā. Tāpēc tā veic liekus vaicājumus. Lai pielāgotu šo hierarhisko kartēšanu, varat izmantot rīcībā esošu precīzu vaicājumu un norādīt atrašanās vietas kartējumus vaicājuma pamattekstā. Šajā gadījumā vaicājums tiks saņemts un saņemts tikai par 1. vietu, vietu A un vietu 2, uz vietu B.

Precīzs vaicājums, izmantojot grāmatošanas metodi

Path:
    /api/environment/{environmentId}/onhand/exactquery
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    {
        dimensionDataSource: string, # Optional
        filters: {
            organizationId: string[],
            productId: string[],
            dimensions: string[],
            values: string[][],
        },
        groupByValues: string[],
        returnNegative: boolean,
    }

Šī pieprasījuma pamatteksta daļā ir izvēles dimensionDataSource parametrs. Ja tas nav iestatīts, tiks dimensions uzskatīts filters par pamatdimensijām . Ir četri obligātie lauki filters: organizationIdproductId,, dimensions un values.

  • organizationId jāsatur tikai viena vērtība, bet tā joprojām ir masīvs.
  • productId var ietvert vienu vai vairākas vērtības. Ja tas ir tukšs masīvs, visas preces tiks atgrieztas.
  • Masīvā dimensions ir nepieciešami tikai siteId un locationId tikai tad, ja datu nodalījuma kārtula ir iestatīta uz Pēc atrašanās vietas. Šajā gadījumā tie var parādīties kopā ar citiem elementiem jebkādā secībā.
  • values var ietvert vienu vai vairākus atšķirīgus atbilstošo vērtību kortežus dimensions.

dimensions tiek filters automātiski pievienots groupByValues.

Parametrs returnNegative kontrolē, vai rezultātos ir negatīvi ieraksti.

Šajā piemērā parādīts parauga pamatteksta saturs.

{
    "dimensionDataSource": "pos",
    "filters": {
        "organizationId": ["SCM_IV"],
        "productId": ["iv_contoso_product"],
        "dimensions": ["siteId", "locationId", "colorId"],
        "values" : [
            ["iv_contoso_site", "iv_contoso_location", "red"],
            ["iv_contoso_site", "iv_contoso_location", "blue"],
        ]
    },
    "groupByValues": ["colorId", "sizeId"],
    "returnNegative": true
}

Šajā piemērā parādīts, kā vaicāt par visām precēm vairākās vietās un vietās.

{
    "filters": {
        "organizationId": ["SCM_IV"],
        "productId": [],
        "dimensions": ["siteId", "locationId"],
        "values" : [
            ["iv_contoso_site_1", "iv_contoso_location_1"],
            ["iv_contoso_site_2", "iv_contoso_location_2"],
        ]
    },
    "groupByValues": ["colorId", "sizeId"],
    "returnNegative": true
}

Vaicājums ar preču meklēšanu

Lai atbalstītu preču meklēšanu, ir uzlaboti šādi rīcībā esošo vaicājumu API:

Piezīme

Grāmatojot vaicājumu Krājumu redzamība, kas izmanto preču meklēšanu, productSearch izmantojiet pieprasījuma parametru ( ProductAttributeQuery ar iekšpusi objektu), lai atrastu vai filtrētu pēc preces ID. Jaunākais API vairs neatbalsta vecāko pieprasījuma productid parametru pieprasījuma pamattekstā.

Priekšnosacījumi

Pirms varat sākt izmantot preču meklēšanas API, sistēmai jāatbilst šādām prasībām:

Preču meklēšanas līgums

Preces meklēšanas līgums nosaka kārtulas saziņai ar preču meklēšanas API. Tas nodrošina standartizētu veidu, kā aprakstīt preču meklēšanas iespēju iespējas un uzvedību. Tāpēc lietotāji var vieglāk saprast, mijiedarboties ar tām un veidot programmas, kas patērē krājumu redzamības API.

Šajā piemērā parādīts parauga līgums.

{
    "productFilter": {
        "logicalOperator": "And",
        "conditions": [
            {
                "conditionOperator": "Contains",
                "productName": [
                    "Deluxe"
                ],
            },
        ],
        "subFilters": [
            {
                "conditions": [
                    {
                        "conditionOperator": "IsExactly",
                        "productType": [
                            "Item"
                        ]
                    }
                ]
            }
        ]
    },
    "attributeFilter": {
        "logicalOperator": "Or",
        "conditions": [
            {
                "attributeName": "Weight Limit",
                "attributeTypeName":"PoundDomain",
                "attributeArea": " ProductAttribute",
                "attributeValues": [
                    "370"
                ],
                "conditionOperator": "GreaterEqual"
            }
        ],
        "subFilters": [
            {
                "conditions": [
                    {
                        "attributeName": "Weight Limit",
                        "attributeTypeName":"PoundDomain",
                        "attributeArea": " ProductAttribute",
                        "attributeValues": [
                            "330"
                        ],
                        "conditionOperator": "LessEqual"
                    }
                ]
            }
        ]
    },
}

Tabulā ir aprakstīti līguma lauki.

Lauka kods apraksts
logicalOperator Iespējamās vērtības ir un AndOr. Lietojiet šo lauku, lai savienotu vairākus nosacījumus vai nosacījumus un apakšfiltrēšanu. Piezīme, subFilters kas faktiski ir objekts productFilter vai objekts attributeFilter . Tādēļ jūs varat tajā būt subFilterssubFilters.
conditionOperator Iespējamās vērtības ir, IsExactlyIsNot, Contains, DoesNotContainBeginsWith, IsOneOf, GreaterEqualLessEqual, un Between.
ProductFilter Lietojiet šo lauku, lai filtrētu preces pēc informācijas, kas saistīta ar preci. Piemēram, varat mainīt līgumā productName vērtību uz Company,, itemNumberproductSearchName, productType, productName, productDescriptioninventoryUnitSymbolsalesUnitSymbol vai arī atbilstoši purchaseUnitSymbol uzņēmuma vajadzībām.
AttributeFilter Lietojiet šo lauku, lai filtrētu preces pēc atribūta informācijas.
attributeArea Iespējamās vērtības ir ProductAttributeDimensionAttribute un BatchAttribute.
Path:
    /api/environment/{environmentId}/onhand/productsearch/indexquery
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    {
        productSearch: {ProductAttributeQuery contract object inherited from Product Search}
            dimensionDataSource: string, # Optional
            filters: {
                organizationId: string[],
                siteId: string[],
                locationId: string[],
                [dimensionKey:string]: string[],
            },
            groupByValues: string[],
            returnNegative: boolean,
    }

Šajā piemērā parādīts parauga pamatteksta saturs.

{
    "productSearch": {
        "productFilter": {
            "conditions": [
                {
                    "conditionOperator": "contains",
                    "productName": [
                        "speaker cable"
                    ],
                },
            ],
        },
    },
    "returnNegative": true, 
    "filters": 
    {
        "organizationId": ["usmf"], 
        "siteId": ["1"], 
        "locationId": ["13"],
    },
    "groupByValues": ["colorid"],
}

Šajā piemērā parādīta veiksmīga atbilde.

[
    {
        "productId": "M0030",
        "dimensions": {
            "ColorId": "White",
            "siteid": "1",
            "locationid": "13"
        },
        "quantities": {
            "fno": {
                "arrived": 0,
                "availordered": 20,
                "onorder": 5,
                "ordered": 20,
                "physicalinvent": 0,
                "reservordered": 0,
                "reservphysical": 0,
                "orderedsum": 20,
                "softreserved": 0
            },
            "iv": {
                "ordered": 0,
                "softreserved": 0,
                "softreservphysical": 0,
                "softreservordered": 0,
                "total ordered": 20,
                "total on order": 5,
                "availabletoreserve": 20,
                "totalavailable": 20,
                "totalordered": 20,
                "totalonorder": 5
            },
            "pos": {
                "inbound": 0,
                "outbound": 0
            },
            "@iv": {
                "@allocated": 0
            }
        }
    },
    {
        "productId": "M0030",
        "dimensions": {
            "ColorId": "Black",
            "siteid": "1",
            "locationid": "13"
        },
        "quantities": {
            "fno": {
                "arrived": 0,
                "availordered": 3,
                "ordered": 3,
                "physicalinvent": 0,
                "reservordered": 0,
                "reservphysical": 0,
                "orderedsum": 3,
                "softreserved": 0
            },
            "iv": {
                "ordered": 0,
                "softreserved": 0,
                "softreservphysical": 0,
                "softreservordered": 0,
                "total ordered": 3,
                "availabletoreserve": 3,
                "totalavailable": 3,
                "totalordered": 3
            },
            "pos": {
                "inbound": 0,
                "outbound": 0
            },
            "@iv": {
                "@allocated": 0
            }
        }
    }
]
Path:
    /api/environment/{environmentId}/onhand/productsearch/exactquery
Method:
    Post
Headers:
    Api-Version="1.0"
    Authorization="Bearer $access_token"
ContentType:
    application/json
Body:
    {
        productSearch: {ProductAttributeQuery contract object inherited from Product Search}
            dimensionDataSource: string, # Optional
            filters: {
                organizationId: string[],
                dimensions: string[],
                values: string[][],
            },
            groupByValues: string[],
            returnNegative: boolean,
    }

Šajā piemērā parādīts parauga pamatteksta saturs.

{
    "productSearch": {
        "productFilter": {
            "conditions": [
                {
                    "conditionOperator": "contains",
                    "productName": [
                        "speaker cable"
                    ],
                },
            ],
        },
    },
    "filters": {
        "organizationId": ["usmf"],
        "dimensions": ["siteId", "locationId", "colorid"],
        "values" : [
            ["1", "13", "Black"],
        ]
    },
    "groupByValues": [],
    "returnNegative": true
}

Šajā piemērā parādīta veiksmīga atbilde.

[
    {
        "productId": "M0030",
        "dimensions": {
            "ColorId": "Black",
            "siteid": "1",
            "locationid": "13"
        },
        "quantities": {
            "fno": {
                "arrived": 0,
                "availordered": 3,
                "ordered": 3,
                "physicalinvent": 0,
                "reservordered": 0,
                "reservphysical": 0,
                "orderedsum": 3,
                "softreserved": 0
            },
            "iv": {
                "ordered": 0,
                "softreserved": 0,
                "softreservphysical": 0,
                "softreservordered": 0,
                "total ordered": 3,
                "availabletoreserve": 3,
                "totalavailable": 3,
                "totalordered": 3
            },
            "pos": {
                "inbound": 0,
                "outbound": 0
            },
            "@iv": {
                "@allocated": 0
            }
        }
    }
]

Pieejams solīšanai

Var iestatīt krājumu redzamību, lai ļautu plānot turpmākās rīcībā esošo izmaiņu veikšanu un aprēķināt ATP daudzumus. ATP ir pieejamais krājuma daudzums, un to var apsolīt debitoram nākamajā periodā. ATP aprēķina izmantošana var ievērojami palielināt pasūtījuma izpildes spēju. Papildinformāciju par to, kā iespējot šo funkciju un kā mijiedarboties ar krājumu redzamību, izmantojot tā API pēc funkcijas iespējošanas, skatiet krājumu redzamības rīcībā esošo izmaiņu grafikus un pieejamos solīšanai.

Sadalījums

Ar sadalījumu saistītie API ir novietoti krājumu redzamības sadalījumā.