Part Synergy Dorman Custom Integration
Version | Date | Name | Applied changes |
---|---|---|---|
v1.0 | Hristiyan | First Publish |
In order to incorporate the custom integration for each warehouse we want to build a centralized structure where we gonna add all the authorization and setup details which will connect to the relevant location. In order to achieve this we will need to have a new structure with the following details:
Part Synergy Warehouse Integration (Please note this is should be added in the menu under Custom section only for Part Synergy instance)
Field Name | Type | Require | Default | Comment |
---|---|---|---|---|
Active | checkbox | No | false | |
Name | varchar | Yes | ||
API Type | dropdown | Yes | List with all available custom API integration we have for PartSynergy warehouses | |
API URL | varchar | No | ||
API Username | varchar | No | ||
API Password | varchar | No | ||
API Access Token | varchar | No | ||
API Account | varchar | No | ||
Create Order | checkbox | No | false | |
Get Shipment | checkbox | No | false | |
Get Stock | checkbox | No | false | |
Get Price | checkbox | No | false | |
Location | dropdown | Yes | List with all locations |
Integration Documentation:
IPO User Guide For Customers 1.xlsx
Sandbox Endpoint | http://qaipo.dormanproducts.com/ipo.aspx |
---|---|
Production Endpoint | https://ipo.dormanproducts.com/ipo.aspx |
Part Synergy SAP ID | 3000336 |
---|
Our IPs need to be whitelisted in order to access the IPO endpoint in production
The API Type for Dorman will be - “Dorman”
Create Order
When we are creating order via API we will have to take into consideration that we will also pick order item for export to FTP and both should work together. The trigger for order creation should be:
Part Synergy Warehouse Integration
> Active
= Yes
Part Synergy Warehouse Integration
> Create Order
= Yes
Product in Order
> Exported
= No
Product in Order
> Custom Filter
= It should match the Location ID. For example, if the custom filter value is set to 2, and we’ve selected Part Synergy warehouse integration > Location (which also has an ID of 2), then the order should be picked.
Order > Status = “Ready for Shipping”
In order to push and order to the warehouse we have to generate an XML request :
Example Request body :
<?xml version="1.0" encoding="UTF-8" ?>
<aaia:ProcessPurchaseOrder xmlns:aaia="http://www.aftermarket.org/oagis"
xmlns="http://www.openapplications.org/oagis"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cmn="http://www.aaiasoa.net/IPOv2/Common" cmn:environment="Production" lang="en-US" revision="1.21" xsi:schemaLocation="http://www.aftermarket.org/oagis ../OAGIS8.0/AAIA/Runtime/ProcessPurchaseOrder.xsd">
<ApplicationArea>
<Sender>
<ReferenceId>ORD-030724-234210-87942</ReferenceId>
<Confirmation>0</Confirmation>
</Sender>
<CreationDateTime>2024-03-07T23:42:10-0600</CreationDateTime>
<BODId>2</BODId>
</ApplicationArea>
<DataArea>
<Process confirm="Always" acknowledge="Always"/>
<PurchaseOrder>
<aaia:Header>
<DocumentIds>
<CustomerDocumentId>
<Id>RA-266860914</Id>
</CustomerDocumentId>
</DocumentIds>
<DocumentReferences>
<QuoteDocumentReference>
<DocumentIds>
<SupplierDocumentId>
<Id>ORD-030724-234210-87943</Id>
</SupplierDocumentId>
</DocumentIds>
</QuoteDocumentReference>
</DocumentReferences>
<RFQDocumentReference/>
<DocumentIds>
<CustomerDocumentId>
<Id>ORD-030724-234210-87942</Id>
</CustomerDocumentId>
</DocumentIds>
<DocumentDateTime>2024-03-07T23:42:10-0600</DocumentDateTime>
<ShipPriorToDueDateInd>1</ShipPriorToDueDateInd>
<DropShipInd>1</DropShipInd>
<ReasonCode>Special</ReasonCode>
<TransportationTerm>
<TermCode issuingAgency="none"/>
<FreightTerms>UPS-REG</FreightTerms>
<AccountNumber></AccountNumber>
</TransportationTerm>
<Parties>
<BillToParty>
<PartyId>
<Id>1001052</Id>
</PartyId>
<Name></Name>
<TaxExemptInd></TaxExemptInd>
<TaxId></TaxId>
<Addresses>
<Address>
<AddressLine></AddressLine>
<City></City>
<StateOrProvince></StateOrProvince>
<Country></Country>
<PostalCode></PostalCode>
</Address>
</Addresses>
</BillToParty>
<ShipToParty>
<PartyId>
<Id>5000001</Id>
</PartyId>
<Name>Calixto Morales</Name>
<TaxExemptInd></TaxExemptInd>
<TaxId></TaxId>
<Addresses>
<Address>
<AddressLine>223 S Patterson</AddressLine>
<City>Springfield</City>
<StateOrProvince>MO</StateOrProvince>
<PostalCode>65802</PostalCode>
<Country>US</Country>
</Address>
</Addresses>
</ShipToParty>
<aaia:HostParty>
<PartyId>
<Id>zzdormanipo</Id>
</PartyId>
</aaia:HostParty>
</Parties>
</aaia:Header>
<aaia:Line>
<LineNumber>1</LineNumber>
<aaia:OrderItem>
<aaia:ItemIds>
<aaia:SupplierItemId>
<Id>00051</Id>
</aaia:SupplierItemId>
<aaia:SupplierCode>KKZ</aaia:SupplierCode>
<aaia:ManufacturerCode>KKZ</aaia:ManufacturerCode>
</aaia:ItemIds>
</aaia:OrderItem>
<OrderQuantity uom="EA">2</OrderQuantity>
<Parties>
<ShipFromParty>
<PartyId>
<Id>3300</Id>
</PartyId>
<Addresses>
<Address>
<AddressLine></AddressLine>
<City></City>
<StateOrProvince></StateOrProvince>
<Country></Country>
<PostalCode></PostalCode>
</Address>
</Addresses>
</ShipFromParty>
</Parties>
</aaia:Line>
</PurchaseOrder>
</DataArea>
</aaia:ProcessPurchaseOrder>
Request Mapping :
Dorman Field | MCPro Field | Notes | ||||||
---|---|---|---|---|---|---|---|---|
ApplicationArea |
||||||||
Sender |
||||||||
ReferenceId |
?? | |||||||
Confirmation |
?? | |||||||
CreationDateTime |
We need to submit the current date/time of creation. Format is “2019-09-10T14:42:46.1948348+00:00” | |||||||
BODId |
This must be a unique value in order to successfully send the Purchase Order request. I suggest we use the Orders > ID + current unix timestamp at the time of creating the order. In a format of “id-timestamp” |
|||||||
DataArea |
||||||||
Process |
Hardcoded as confirm="Always" acknowledge="Always” | |||||||
PurchaseOrder |
||||||||
DocumentIds |
||||||||
CustomerDocumentId |
||||||||
Id |
Orders > ID |
|||||||
Revision |
?? | |||||||
DocumentReferences |
||||||||
QuoteDocumentReference |
||||||||
DocumentIds |
||||||||
SupplierDocumentId |
||||||||
Id |
?? | |||||||
DropShipInd |
?? | |||||||
BackOrderedInd |
?? | |||||||
ReasonCode |
?? | |||||||
TransportationTerm |
||||||||
TermCode |
Hardcoded as issuingAgency="None" | |||||||
FreightTerms |
?? | |||||||
Parties |
||||||||
ShipFromParty |
||||||||
PartyId |
||||||||
Id |
?? | |||||||
Name |
Hardcoded as “Dorman Products, Inc.” | |||||||
Addresses |
||||||||
Address |
||||||||
AddressLine |
Hardcoded as “3150 Barry Drive” | |||||||
City |
Hardcoded as “Portland” | |||||||
StateOrProvince |
Hardcoded as “TN” | |||||||
Country |
Hardcoded as “US” | |||||||
PostalCode |
Hardcoded as “37148” | |||||||
BillToParty |
||||||||
PartyId |
||||||||
Id |
?? | |||||||
Name |
?? | |||||||
TaxExemptInd |
?? | |||||||
Addresses |
||||||||
Address |
||||||||
AddressLine |
||||||||
City |
||||||||
StateOrProvince |
||||||||
Country |
||||||||
PostalCode |
||||||||
ShipToParty |
||||||||
PartyId |
||||||||
Id |
Hardoded as “5000001” | |||||||
Name |
||||||||
Addresses |
||||||||
Address |
||||||||
AddressLine |
||||||||
City |
||||||||
StateOrProvince |
||||||||
Country |
||||||||
PostalCode |
||||||||
aaia:HostParty |
||||||||
PartyId |
||||||||
Id |
||||||||
aaia:Line |
||||||||
LineNumber |
||||||||
aaia:OrderItem |
||||||||
aaia:ItemIds |
||||||||
aaia:SupplierItemId |
||||||||
Id |
||||||||
aaia:SupplierCode |
||||||||
aaia:ManufacturerCode |
||||||||
OrderQuantity uom="EA” |
||||||||
UnitPrice |
||||||||
Amount currency="USD” |
||||||||
PerQuantity uom="PE” |
||||||||
NeedDeliveryDate |
||||||||
BackOrderedInd |
||||||||
SubstitutionAllowedInd |
||||||||
Parties |
||||||||
ShipFromParty |
||||||||
PartyId |
||||||||
Id |
||||||||
Name |
||||||||
Addresses |
||||||||
Address |
||||||||
AddressLine |
||||||||
City |
||||||||
StateOrProvince |
||||||||
Country |
||||||||
PostalCode |