cXML-1-2-007-InvoiceDetailRequest-In
The data mapping and sample payload for 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 |
TAX |
Amount |
|
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 |
---|---|---|
|
N/A |
ITEM |
Amount |
If present in the payload, otherwise map.
|
N/A |
|
The
|
1.n |
|
If present in the payload, otherwise map.
|
N/A |
|
|
N/A |
|
|
N/A |
|
|
N/A |
There's a predefined DVM in use for this field. |
|
N/A |
|
N/A |
TAX |
Amount |
This is mapped only if |
N/A |
|
The Line Group Number from the parent
|
N/A |
|
N/A |
TAX |
|
There may be many of these lines for an
|
N/A |
|
The Line Group Number from the parent
|
N/A |
InvoiceDetailHeaderOrder Mapping
An Invoice Line is represented by
InvoiceDetailRequest/InvoiceDetailHeaderOrder
if
InvoiceDetailRequest/InvoiceDetailOrder
isn't present.
InvoiceInterfaceLine |
|
Value in the XSL File |
---|---|---|
|
N/A |
ITEM |
Amount |
If present in the payload, otherwise map.
|
N/A |
|
The
|
1.n |
|
If present in the payload, otherwise map.
|
N/A |
|
N/A |
TAX |
Amount |
This is mapped only if |
N/A |
|
The Line Group Number from the parent
|
N/A |
|
N/A |
TAX |
Amount |
There may be many of these lines created for an
|
N/A |
|
The Line Group Number from the parent
|
N/A |
|
N/A |
TAX |
Amount |
There may be many of these lines created for an
|
N/A |
|
The Line Group Number from the parent
|
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>