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.
Piesakieties Azure portālā un izmantojiet to, lai atrastu programmas
clientId
clientSecret
vērtības un Dynamics 365 Supply Chain Management vērtības.Paņemiet marķieri Microsoft Entra (), iesniedzot
aadToken
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" }
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ā.
- Vērtībai
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 ir1.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 }
- URL:
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 dimensions
pamatdimensijas. 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 Path
Body
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, ifCheckAvailForReserv
False
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 organizationId
productId
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: 10
varat 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ā unsiteId
taslocationId
nedrīkst būt tukšs.siteId
unlocationId
tiek izmantoti nodalīšanas laikā. Rīcībā esošo vaicājuma pieprasījumāsiteId
locationId
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ā tasproductId
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, siteId
locationId
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
: organizationId
productId
,, 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 tikaisiteId
unlocationId
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žusdimensions
.
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:
- Jums jādarbojas Dynamics 365 Supply Chain Management 10.0.36 vai jaunākai versijai.
- Krājumu redzamības versijai 1.2.2.54 vai jaunākai versijai jābūt instalētai un iestatītai tā, kā aprakstīts Sadaļā Krājumu redzamība instalēšana un iestatīšana.
- Krājumu redzamības meklēšanas pakalpojums ir jāinstalē un jāiestata, kā aprakstīts, iestatīt preču meklēšanu krājumu redzamībai.
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 And Or . 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 subFilters subFilters . |
conditionOperator |
Iespējamās vērtības ir, IsExactly IsNot , Contains , DoesNotContain BeginsWith , IsOneOf , GreaterEqual LessEqual , 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 ,, itemNumber productSearchName , productType , productName , productDescription inventoryUnitSymbol salesUnitSymbol 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 ProductAttribute DimensionAttribute un BatchAttribute . |
Vaicājums ar preču meklēšanu
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
}
}
}
]
Precīzs vaicājums ar preču meklēšanu
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ā.