OBN-cXML-1-2-007-InvoiceDetailRequest-In
The data mapping and sample payload for OBN-cXML-1-2-007-InvoiceDetailRequest-In message definition are outlined in this section.
Data Mapping
You can access the XSD file by exporting the message transformation package for additional information. Mapping an invoice header creates one row in InvoiceInterfaceHeader and zero or more rows in InvoiceInterfaceLine as outlined in this table.
LineGroupNumber for invoice lines with InvoiceDetailOrder element: In the cXML message, an invoice can have many InvoiceDetailOrders, and each InvoiceDetailOrder can have many InvoiceDetailItem elements. For example, if there are two InvoiceDetailOrder elements, each containing two InvoiceDetailItem, then there will be four InvoiceInterfaceLines created, with LineGroupNumber 1,2,3 and 4 respectively.
Invoice Header Mapping
Interface |
Payload and Processing Rules |
Value Provided in the XSL File |
---|---|---|
InvoiceInterfaceHeader One row in InvoiceInterfaceHeader gets created for every invoice |
N/A |
N/A |
Source |
N/A |
B2B XML INVOICE |
VendorId |
Derived from the Purchase Order |
N/A |
VendorSiteId |
Derived from the Purchase Order |
N/A |
Description |
/InvoiceDetailRequest/InvoiceDetailRequestHeader/Comments |
N/A |
InvoiceAmount |
InvoiceDetailRequest/InvoiceDetailSummary/DueAmount/Money if present in the payload, otherwise map /InvoiceDetailRequest/InvoiceDetailSummary/NetAmount/Money |
N/A |
InvoiceCurrencyCode There's a predefined DVM in use for this field. |
/InvoiceDetailRequest/InvoiceDetailSummary/DueAmount/Money/@currency If present in the payload, otherwise map. InvoiceDetailRequest/InvoiceDetailSummary/NetAmount/Money/@currency |
N/A |
InvoiceDate |
/InvoiceDetailRequest/InvoiceDetailRequestHeader/@invoiceDate |
N/A |
InvoiceNumber |
/InvoiceDetailRequest/InvoiceDetailRequestHeader/@invoiceID |
N/A |
InvoiceTypeLookupCode |
Note: This value is set in the XSL, if the InvoiceAmount is negative then the "InvoiceTypeLookupCode" is set to CREDIT otherwise it's set to STANDARD. |
STANDARD or CREDIT |
LegalEntityId |
Derived from the Purchase Order |
N/A |
ShipToLocation |
/InvoiceDetailRequest/InvoiceDetailRequestHeader/Extrinsic[@name='SHIPTOPARTNRIDX'] |
N/A |
B2BProgramName |
N/A |
AP_INV_B2B_SOA |
InvoiceInterfaceLine |
N/A |
N/A |
InvoiceInterfaceLine with LineTypeLookupCode=FREIGHT |
One InvoiceInterfaceLine with LineTypeLookupCode=FREIGHT is created for an invoice, if the /InvoiceDetailRequest/InvoiceDetailSummary/ShippingAmount is present. |
N/A |
Amount |
/InvoiceDetailRequest/InvoiceDetailSummary/ShippingAmount/Money |
N/A |
InvoiceInterfaceLine with LineTypeLookupCode=MISCELLANEOUS |
One InvoiceInterfaceLine with LineTypeLookupCode=MISCELLANEOUS is created for an invoice, if the /InvoiceDetailRequest/InvoiceDetailSummary/SpecialHandlingAmount is present. |
MISCELLANEOUS |
Amount |
/InvoiceDetailRequest/InvoiceDetailSummary/SpecialHandlingAmount/Money |
N/A |
InvoiceInterfaceLine with LineTypeLookupCode=TAX |
One InvoiceInterfaceLine with LineTypeLookupCode=TAX is created
for each |
TAX |
Amount |
|
N/A |
InvoiceInterfaceLine with LineTypeLookupCode=TAX |
One InvoiceInterfaceLine with LineTypeLookupCode=TAX is created
for an invoice if tax isn't specified at line level and
|
TAX |
Amount |
InvoiceDetailRequest/InvoiceDetailSummary/Tax/Money |
N/A |
Invoice Line Mapping
Invoice Line mapping creates many rows in InvoiceInterfaceLine, one for the item, and zero or more rows for each tax, freight and charge element present in the XML file.
An Invoice Line is represented either by InvoiceDetailRequest/InvoiceDetailOrder OR InvoiceDetailRequest/InvoiceDetailHeaderOrder.
InvoiceDetailOrder Mapping
InvoiceInterfaceLine |
Payload and Processing Rules |
Value Provided in the XSL File |
---|---|---|
InvoiceInterfaceLine where LineTypeLookupCode = ITEM |
N/A |
ITEM |
Amount |
/InvoiceDetailRequest/InvoiceDetailOrder/InvoiceDetailItem/NetAmount/Money If present in the payload, otherwise map. /InvoiceDetailRequest/InvoiceDetailOrder/InvoiceDetailItem/SubtotalAmount/Money |
N/A |
LineGroupNumber |
The LineGroupNumber is derived from the array position of the InvoiceDetailItem element and the parent InvoiceDetailOrder element. LineGroupNumber for invoice lines with InvoiceDetailOrder element: In the cXML message, an invoice can have many InvoiceDetailOrders, and each InvoiceDetailOrder can have many InvoiceDetailItem elements. elements - for example if there are two InvoiceDetailOrder elements, each containing two InvoiceDetailItem, then there will be four InvoiceInterfaceLines created, with LineGroupNumber 1,2,3 and 4 respectively. |
1.n |
PONumber |
If present in the payload, otherwise map.
|
N/A |
POLineNumber |
|
N/A |
POShipmentNumber |
/InvoiceDetailRequest/InvoiceDetailOrder/InvoiceDetailItem/Extrinsic[@name='SCHLINENUM'] |
N/A |
InvoicedQuantity |
/InvoiceDetailRequest/InvoiceDetailOrder/InvoiceDetailItem/@quantity |
N/A |
UnitOfMeasLookupCode There's a predefined DVM in use for this field. |
|
N/A |
LineLookupCode |
N/A |
TAX |
Amount |
/InvoiceDetailRequest/InvoiceDetailOrder/InvoiceDetailOrderSummary/Tax/Money This is mapped only if |
N/A |
LineGroupNumber |
The Line Group Number from the parent InvoiceDetailItem is
assigned for all LineGroupNumber for invoice lines with InvoiceDetailOrder element: In the cXML message, an invoice can have many InvoiceDetailOrders, and each InvoiceDetailOrder can have many InvoiceDetailItem elements. elements - for example if there are two InvoiceDetailOrder elements, each containing two InvoiceDetailItem, then there will be four InvoiceInterfaceLines created, with LineGroupNumber 1,2,3 and 4 respectively. |
N/A |
LineLookupCode |
N/A |
TAX |
Amount |
There may be many of these lines for an InvoiceDetailOrder. |
N/A |
LineGroupNumber |
The Line Group Number from the parent InvoiceDetailItem is
assigned for all LineGroupNumber for invoice lines with InvoiceDetailOrder element: In the cXML message, an invoice can have many InvoiceDetailOrders, and each InvoiceDetailOrder can have many InvoiceDetailItem elements. elements - for example if there are two InvoiceDetailOrder elements, each containing two InvoiceDetailItem, then there will be four InvoiceInterfaceLines created, with LineGroupNumber 1,2,3 and 4 respectively. |
N/A |
InvoiceDetailHeaderOrder Mapping
An Invoice Line is represented by InvoiceDetailRequest/InvoiceDetailHeaderOrder if InvoiceDetailRequest/InvoiceDetailOrder isn't present.
InvoiceInterfaceLine |
|
Value in the XSL File |
---|---|---|
InvoiceInterfaceLine where LineTypeLookupCode =ITEM |
N/A |
ITEM |
Amount |
/InvoiceDetailRequest/InvoiceDetailHeaderOrder/InvoiceDetailOrderSummary/NetAmount/Money If present in the payload, otherwise map. /InvoiceDetailRequest/InvoiceDetailHeaderOrder/InvoiceDetailOrderSummary/SubtotalAmount/Money |
N/A |
LineGroupNumber |
The LineGroupNumber is populated based on the array position of the InvoiceDetailHeaderOrder element. LineGroupNumber for invoice lines with InvoiceDetailOrder element: In the cXML message, an invoice can have many InvoiceDetailOrders, and each InvoiceDetailOrder can have many InvoiceDetailItem elements. elements - for example if there are two InvoiceDetailOrder elements, each containing two InvoiceDetailItem, then there will be four InvoiceInterfaceLines created, with LineGroupNumber 1,2,3 and 4 respectively. |
1.n |
PONumber |
If present in the payload, otherwise map.
|
N/A |
InvoiceInterfaceLine where LineTypeLookupCode = TAX |
N/A |
TAX |
Amount |
/InvoiceDetailRequest/InvoiceDetailHeaderOrder/InvoiceDetailOrderSummary/Tax/Money This is mapped only if |
N/A |
LineGroupNumber |
The Line Group Number from the parent InvoiceDetaillHeaderOrder
is assigned for all LineGroupNumber for invoice lines with InvoiceDetailOrder element: In the cXML message, an invoice can have many InvoiceDetailOrders, and each InvoiceDetailOrder can have many InvoiceDetailItem elements. elements - for example if there are two InvoiceDetailOrder elements, each containing two InvoiceDetailItem, then there will be four InvoiceInterfaceLines created, with LineGroupNumber 1,2,3 and 4 respectively. |
N/A |
InvoiceInterfaceLine where LineTypeLookupCode = TAX |
N/A |
TAX |
Amount |
There may be many of these lines created for an InvoiceDetailHeaderOrder. |
N/A |
LineGroupNumber |
The Line Group Number from the parent InvoiceDetaillHeaderOrder
is assigned for all LineGroupNumber for invoice lines with InvoiceDetailOrder element: In the cXML message, an invoice can have many InvoiceDetailOrders, and each InvoiceDetailOrder can have many InvoiceDetailItem elements. elements - for example if there are two InvoiceDetailOrder elements, each containing two InvoiceDetailItem, then there will be four InvoiceInterfaceLines created, with LineGroupNumber 1,2,3 and 4 respectively. |
N/A |
InvoiceInterfaceLine where LineTypeLookupCode = TAX |
N/A |
TAX |
Amount |
There may be many of these lines created for an InvoiceDetailHeaderOrder. |
N/A |
LineGroupNumber |
The Line Group Number from the parent InvoiceDetaillHeaderOrder
is assigned for all LineGroupNumber for invoice lines with InvoiceDetailOrder element: In the cXML message, an invoice can have many InvoiceDetailOrders, and each InvoiceDetailOrder can have many InvoiceDetailItem elements. elements - for example if there are two InvoiceDetailOrder elements, each containing two InvoiceDetailItem, then there will be four InvoiceInterfaceLines created, with LineGroupNumber 1,2,3 and 4 respectively. |
N/A |
Sample Payload
Here's a sample payload:
<cXML xmlns:xml="http://www.w3.org/XML/1998/namespace" timestamp="2004-01-31T16:23:01-07:00" payloadID="1233444-2004@OSN.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header>
<From>
<Credential domain="DUNS">
<Identity>11111111</Identity>
</Credential>
</From>
<To>
<Credential domain="DUNS">
<Identity>222222222</Identity>
</Credential>
</To>
<Sender>
<Credential domain="OracleSN">
<Identity>SellerIdentity</Identity>
<SharedSecret>welcome</SharedSecret>
</Credential>
<UserAgent>Oracle Supplier Network</UserAgent>
</Sender>
</Header>
<Request>
<InvoiceDetailRequest>
<InvoiceDetailRequestHeader invoiceID="Invoice-1234" purpose="creditMemo" invoiceDate="2020-09-21T01:00:00Z">
<InvoiceDetailHeaderIndicator />
<InvoiceDetailLineIndicator />
<InvoicePartner>
<Contact role="ShipTo" addressID="">
<Name xml:lang="en-US">Bill To Contact Name</Name>
<PostalAddress>
<Street>831 Cape Town Place Street</Street>
<City>San Jose City</City>
<State>CA State</State>
<PostalCode>95133</PostalCode>
<Country isoCountryCode="US">Bill United States Country</Country>
</PostalAddress>
</Contact>
</InvoicePartner>
<InvoicePartner>
<Contact role="remitTo">
<Name xml:lang="en-us">VendorSiteName</Name>
</Contact>
</InvoicePartner>
<InvoicePartner>
<Contact role="billTo">
<Name xml:lang="en-us">VendorSiteName</Name>
</Contact>
</InvoicePartner>
<Comments xml:lang="en-US">Header Comments</Comments>
<Extrinsic name="SHIPTOPARTNRIDX">ShipToLocation</Extrinsic>
</InvoiceDetailRequestHeader>
<InvoiceDetailOrder>
<InvoiceDetailOrderInfo>
<OrderReference orderID="1005037">
<DocumentReference payloadID="" />
</OrderReference>
<MasterAgreementReference>
<DocumentReference payloadID="" />
</MasterAgreementReference>
<OrderIDInfo orderID="1005041">
<!-- If OrderIDInfo element is here, we map its value. If not, we map OrderReference/@orderID. If both are there, this takes precedence-->
</OrderIDInfo>
</InvoiceDetailOrderInfo>
<InvoiceDetailItem invoiceLineNumber="1" quantity="500">
<UnitOfMeasure>Each</UnitOfMeasure>
<UnitPrice>
<Money currency="USD">56.00</Money>
</UnitPrice>
<InvoiceDetailItemReference lineNumber="1">
<ItemID>
<SupplierPartID>RCV-100</SupplierPartID>
</ItemID>
</InvoiceDetailItemReference>
<SubtotalAmount>
<Money currency="USD">456.00</Money>
</SubtotalAmount>
<Tax>
<!-- If this block -InvoiceDetailItem/Tax- is present, we don't map InvoiceDetailSummary/Tax>-->
<Money currency="USD">542</Money>
<TaxDetail category="">
<!-- If TaxDetail is here, we map taxAmount/Money from there. If not, map Tax/Money. If both are there, this takes precedence-->
<TaxAmount>
<Money currency="USD">2</Money>
</TaxAmount>
</TaxDetail>
<!-- added 2nd TaxDetail block to payload -->
<!--<TaxDetail category="">
<TaxAmount>
<Money currency="USD">3</Money>
</TaxAmount>
</TaxDetail> -->
</Tax>
<NetAmount>
<!-- If this block is here, we map NetAmount/Money. If not, map SubtotalAmount/Money. If both are there, this takes precedence-->
<Money currency="USD">123.00</Money>
</NetAmount>
<Extrinsic name="SCHLINENUM">1</Extrinsic>
</InvoiceDetailItem>
</InvoiceDetailOrder>
<InvoiceDetailSummary>
<SubtotalAmount>
<Money currency="Each">123.00</Money>
</SubtotalAmount>
<Tax>
<Money currency="USD">542</Money>
<Description xml:lang="en">total tax</Description>
<TaxDetail category="">
<!-- If TaxDetail is here, we map taxAmount/Money from there. If not, map Tax/Money. If both are there, this takes precedence-->
<TaxAmount>
<Money currency="USD">215</Money>
</TaxAmount>
</TaxDetail>
<!-- added 2nd TaxDetail block to payload -->
<!-- <TaxDetail category="">
<TaxAmount>
<Money currency="XYZ">152</Money>
</TaxAmount>
</TaxDetail>-->
</Tax>
<SpecialHandlingAmount>
<Money currency="USD">654</Money>
</SpecialHandlingAmount>
<ShippingAmount>
<Money currency="USD">321</Money>
</ShippingAmount>
<NetAmount>
<Money currency="CAD">-24.39</Money>
</NetAmount>
<DueAmount>
<Money currency="USD">435.00</Money>
<!-- If this has a value, we map that. If not, map NetAmount/Money. If both are there, this takes precedence-->
</DueAmount>
</InvoiceDetailSummary>
</InvoiceDetailRequest>
</Request>
</cXML>