How to load orders to DC1?

There are 2 sets of methods that can be used to create sales order in DC1:

  • Methods which use DI (witout prevalidation)
  • Methods to dirrect create sales orders.

Create sales orders inside DI files

These are set of API’s which create sales order inside DI files. You don’t have validation of data you put inside files. You can use these API’s to register an order with any type, because these orders will be managed by standard DI interface. (You can e.g. use a sales order type with ‘invoicing only flag’)

Steps:

  1. Add the order into DI files by following methonds:
  • diSalesOrder.add
  • diSalesOrderAddress.add
  • diSalesOrderLine.add
  1. Then when order is ready, you run the di processing method using salesOrderCreation.add. This method change status of DI control record, then receiving order process starts.During order creation missing values are retrieved either from defaults and replacements or from DC1 set up. The order of bringing default values is as follows:
  • Search in defaults and replacements. Use methodSubtype as group for searching for defaults value.
  • If the value is not found in defaults and replacement then orodinary DC1 set up is used determine value. See documentation of DIS module of DC1. (e.g. sales order type can be taken from DC1 user default value.)

Following key values are put into DI interface:

  • Method Subtype is taken from diSalesOrder.add input parameter. It can be any string (10A) (e.g. MAGENTO)
  • DI Method is defailted to *INTERNAL
  • DI Document is defaulted to ORDERS

Default and replacements Some defaults can be defined in ‘default and replacements ‘. The ‘group’ name is the same as methodSubtype passes in diSalesOrder.add. Following defaults and replacement keys are available:

API methodGroupLevelKeydescription
diSalesOrder.add{as methodSubtype}SALESROUTINERoutine id
diSalesOrder.add{as methodSubtype}SALESCUSTOMERCustomer
diSalesOrder.add{as methodSubtype}SALESORDTDEBSales order type
diSalesOrder.add{as methodSubtype}SALESHANDLERHandler
diSalesOrder.add{as methodSubtype}SALESDEBTOR_ADDRESSDebtor addres no.
diSalesOrder.add{as methodSubtype}SALESCURRENCYCurrency
diSalesOrder.add{as methodSubtype}SALESTOPCTerms of payment
diSalesOrder.add{as methodSubtype}SALESMOTCManner of transport
diSalesOrder.add{as methodSubtype}SALESTODCTerms of delivery
diSalesOrder.add{as methodSubtype}SALESCONTRACTInventory contract number
diSalesOrder.add{as methodSubtype}SALESSOURCEOrder source
diSalesOrderLine.add{as methodSubtype}SALESWAREHOUSEWarehouse
diSalesOrderLine.add{as methodSubtype}SALESMOTCManner of transport
diSalesOrderLine.add{as methodSubtype}SALESTODCTerms of delivery
diSalesOrderCreation.add{as methodSubtype}SALESROUTINERoutine id
diSalesOrderCreation.add{as methodSubtype}SALESUSERUser

As next step the additional defaults and replacements are used by DC1 system itself.

RoutineGroupLevelKeydescription
Sales order creation process{as methodSubtype}SALESREPRICEReprice (Y/N). Use “N” for manual price
Sales order creation process{as methodSubtype}DFTORDTORDERTYPESales order type
Sales order creation process{as methodSubtype}DFTORDTHANDLERHandler

Create / update sales order in interactive mode

These are set of API’s to create order in interactive mode. The validation is included, in case of error during, the API will return an error message in the response. In this way you create an order at the first step by salesOrderHeader.add and next you can add/change lines, texts, discounts, batches.

NOTE: Interactive API’s can create orders up to status 20.

NOTE: There is limitation that order types must be set up to print pick list: After the order is entered via the API into DC1, there is no API to interactively push the client to execute the pick process. These API’s are to register the order only and the picking, packing, transport, and invoicing is done in DC1 in “normal way”. This set of API’s is to use in case you would like to interact with the user. In this method client has to enter all mandatory parameters and react on erro messages if validation fails.

Following methods are used to maintain sales order:

  • salesOrder.delete
  • salesOrderHeader.add
  • salesOrderHeader.get
  • salesOrderHeader.update
  • salesOrderHeaderAddress.get
  • salesOrderHeaderAddress.update
  • salesOrderHeaderAddresses.get
  • salesOrderHeaderDiscount.add
  • salesOrderHeaderDiscount.delete
  • salesOrderHeaderDiscount.get
  • salesOrderHeaderDiscount.update
  • salesOrderHeaderDiscounts.get
  • salesOrderHeaderHoldReasonRelease.add
  • salesOrderHeaderProfit.get
  • salesOrderHeaders.get
  • salesOrderHeaderSimulation.get
  • salesOrderHeaderText.add
  • salesOrderHeaderText.delete
  • salesOrderHeaderText.get
  • salesOrderHeaderText.update
  • salesOrderHeaderTexts.get
  • salesOrderHeldReason.get
  • salesOrderHeldReasons.get
  • salesOrderLine.add
  • salesOrderLine.delete
  • salesOrderLine.get
  • salesOrderLine.reprice
  • salesOrderLine.update
  • salesOrderLineAddress.get
  • salesOrderLineAddress.update
  • salesOrderLineBatch.add
  • salesOrderLineBatch.delete
  • salesOrderLineBatch.get
  • salesOrderLineBatch.update
  • salesOrderLineBatches.get
  • salesOrderLineDiscount.add
  • salesOrderLineDiscount.delete
  • salesOrderLineDiscount.get
  • salesOrderLineDiscount.update
  • salesOrderLineDiscounts.get
  • salesOrderLineProfit.get
  • salesOrderLines.get
  • salesOrderLineSerialNumber.get
  • salesOrderLineSerialNumbers.get
  • salesOrderLineSimulation.get
  • salesOrderLineText.add
  • salesOrderLineText.delete
  • salesOrderLineText.get
  • salesOrderLineText.update
  • salesOrderLineTexts.get
  • salesOrderStatistics.get
  • salesOrderTexts.get

Examples

Example 1 : creating sales order using DI Execute the steps in the following order:

  1. diSalesOrder.add
{
  "method":"diSalesOrder.add",
  "params":{
    "methodSubtype":"{{methodSubtype}}",
    "customer":"{{businessPartner}}"
  }
}

e.g.

{
  "method":"diSalesOrder.add",
  "params":{
    "methodSubtype":"SALESDFTUX",
    "customer":"AL191555"
  }
}

This returns a transmissionid to be used in subsequent calls e.g 250

  1. diSalesOrderAddress.add
{
  "method": "diSalesOrderAddress.add",
  "params": {
    "transmissionId": "{{transmissionId}}",
    "addressType": "{{addressType}}",
    "name": "{{name}}",
    "addressLine1": "{{addressLine1}}",
    "addressLine2": "{{addressLine2}}",
    "addressLine3": "{{addressLine3}}",
    "addressLine4": "{{addressLine4}}",
    "postalCode": "{{postalCode}}",
    "country": "{{country}}",
    "state": "{{state}}"
  }
}

e.g.

{
  "method": "diSalesOrderAddress.add",
  "params": {
    "transmissionId": "250",
    "addressType": "I",
    "name": "John Doe",
    "addressLine1": "30, Light Avenue",
    "addressLine2": "",
    "addressLine3": "",
    "addressLine4": "San Fransisco",
    "postalCode": "85054",
    "country": "US",
    "state": "CA"
  }
}

Returns empty response if OK.

  1. diSalesOrderLine.add
{
  "method": "diSalesOrderLine.add",
  "params": {
    "transmissionId": "{{transmissionId}}",
    "item": "{{item}}",
    "quantity": "{{quantity}}",
    "description": "{{itemDescription}}"
  }
}

e.g

{
  "method": "diSalesOrderLine.add",
  "params": {
    "transmissionId": "250",
    "item": "120563",
    "quantity": "3,00",
    "description": "iPhone"
  }
}

Returns empty response if OK.

  1. diSalesOrderCreation.add
{
  "method":"diSalesOrderCreation.add",
  "params":{
    "transmissionId":"{{transmissionId}}"
  }
}

e.g.

{
  "method":"diSalesOrderCreation.add",
  "params":{
    "transmissionId": "250"
  }
}

Returns empty response if OK.