Work Order Stock-In Data Create

stockin.data.create
POST JSON Sync

1. Basic Information

ItemDescription
API Name (Chinese)Work Order Stock-In Data Create
API Name (English)Work Order Stock-In Data Create
CROSS API Codestockin.data.create
ESB Service/sendTransForm (General) or /outsourcingPurchaseStockinCreate (TRANSTYPE=59)
Call DirectionMES → ERP
Trigger Timing1. When last station checkout completes
2. Batch stock-in operation
3. Manual stock-in trigger
Main Business ScenarioAfter manufacturing completion, stock finished goods into ERP designated warehouse, update ERP inventory quantity and work order status
Request FormatJSON (Content-Type: application/json)
Sync/AsyncSynchronous call
Transaction ControlRequired (MES and ERP must ensure data consistency)
RemarkReturn TB001/TB002 is the document type/number generated by ERP, needs to be written back to TL011/TL012

2. Business Flow

MES System ERP System 1. Last Station Checkout 2. Assemble Data (TransOrderDataToJson) 4. Write Back TL011/TL012 3a. Validate WO (Qty/Status) 3b. Create Stock-In (TB001/TB002) 3c. Update Inventory (Add FG) Code Location: TransOrderDataToJson.java:648 → SendFormSbyJson → XmlToERP_handler
Code Reference
  • Route Decision: TransOrderDataToJson.java:648
  • JSON Assembly: SendFormSbyJson.transferFormToJson()
  • Field Mapping: SendFormElementbyJson.getTransferFormHead/Body()
  • HTTP Send: XmlToERP_handler.sendToErpByESB()

Stock-In Type Decision Logic

TRANSTYPE = 59 ? Outsourcing Receipt outsourcingPurchaseStockinCreate Yes General Transfer/Stock-In generateTransferForm / sendTransForm No

3. Request Specification

Transport Format: JSON
Content-Type: application/json (HttpClient.java:25)

3.1 Outer Structure

FieldTypeRequiredDescriptionMES Source
companyIDstringYCompany IDCOMPANYID
userIdstringYOperatorCONFIRMER
doActionstringY2=TransferDOACTION
docasestringY1=Add, 2=Modify, 3=DeleteDOCASE
headobjectYHeader data-
linearrayYLine items-

3.2 Header (head) - getTransferFormHead()

FieldTypeLengthRequiredDescriptionMES Source
transferTypestring10YTransfer typeTRANSTYPE
transferCodestring30NTransfer number (required for modify)TO008
datestring10YDocument date YYYY-MM-DDTRANSDATE
moveOutTypestring2YMove out type (1=WS, 2=WH, 3=Dept)OUTTYPE
moveOutCodestring20YMove out codeOUTDEPID
moveOutNamestring50NMove out nameOUTDEPNAME
moveInTypestring2YMove in typeINTYPE
moveInCodestring20YMove in code (warehouse)INDEPID
moveInNamestring50NMove in nameINDEPNAME
factoryCodestring10YFactory codeFACTORYID
confirmationCodestring20NConfirmation codeCONFIRMCODE
remarkstring255NRemarkCOMMENT
orderDatestring10NOrder dateDOCUMENTDATE
eMESTransferTypestring10YMES doc typeTRANSTYPE
eMESTransferCodestring30YMES doc numberTRANSNO
source_nostring50YSource number (MES type-number)eMESTransferType + "-" + eMESTransferCode
operator_nostring20NOperatorcreate (CONFIRMER)

3.3 Line Items (line) - getTransferFormBody() - Array

FieldTypeRequiredDescriptionMES Source
moTypestringYWork order typeMOTYPE
moCodestringYWork order numberMONO
moveOutOpSeqstringYMove out op sequenceOUTOPSEQ
moveOutOpIdstringYMove out operationOUTOP
moveInOpSeqstringNMove in op sequenceINOPSEQ
moveInOpIdstringNMove in operationINOP
qtydecimalYQuantityTRANSQTY
unitstringYUnitUNIT
batchCodestringYBatch/Lot numberLOTNO
statestringYState (PATTERN)PATTERN
prodCodestringYItem codeITEMID
prodNamestringNItem nameITEMNAME
prodSpecstringNItem specITEMDESCRIPTION
acceptanceQtydecimalNAcceptance qtyTL002
scrapQtydecimalNScrap qtySCRAPQTY
inspectionReturnQtydecimalNRejection qtyTL003
moveInCodestringNMove in deptINDEP
moveInLocationstringNMove in locationINSTORAGESPACE
useTimedecimalNLabor hoursLABORHOUR
useMachineTimedecimalNMachine hoursMACHINEHOUR
remarkstringNRemarkNOTE
manufactureDualUnitstringNDual unitTWINUNIT
hasQtystringNStock-in statusHASQTY

4. Response Specification

FieldTypeDescription
codeint200=Success, others=Failure
msgstringProcessing result message
TB001stringERP doc type → Write to TL011
TB002stringERP doc number → Write to TL012

MES Internal Processing Result

FieldDescription
ISOKtrue=Success, false=Failure
MsgProcessing message
TB001Write to TL011
TB002Write to TL012

5. Validation Rules

#Check ItemRuleCode Location
1Line data existsSFT_TRANSORDER_LINE_GRID cannot be emptyTransOrderDataToJson.java:609
2TO013 check= 1 to send generateTransferFormTransOrderDataToJson.java:612
3ERP connectionSFTConfig.isHasERP() = trueTransOrderDataToJson.java:646
4TRANSTYPE decision59=Outsourcing, others=General transferTransOrderDataToJson.java:648
5WO completion checkcanUpdateERP_TA_OP_Status100() = trueTransOrderDataToJson.java:637

6. Error Codes

CodeMessageDescription
E001Required field missingRequest missing required fields
E002Work order not foundMOTYPE-MONO error
E003Work order status not allowedWork order closed or cancelled
E004Quantity must be greater than zeroqty ≤ 0
E005Quantity exceeds remainingExceeds available stock-in quantity
E006Warehouse not foundmoveInCode invalid
E999System errorTimeout, connection exception
Return result parsing error!Response parsing failedXmlToERP_handler.java:117

7. JSON Examples

Request (MES JSON)

{
  "companyID": "COMP01",
  "userId": "EMP001",
  "doAction": "2",           // 2=Transfer
  "docase": "1",              // 1=Add
  "head": {
    "transferType": "51",
    "date": "2026-03-19",
    "moveOutType": "1",
    "moveOutCode": "WS001",
    "moveOutName": "Assembly Station",
    "moveInType": "2",
    "moveInCode": "FG01",
    "moveInName": "Finished Goods WH",
    "factoryCode": "P001",
    "remark": "Normal completion stock-in",
    "create": "EMP001",       // → ERP: operator_no
    "eMESTransferType": "51",
    "eMESTransferCode": "T20260319001"
  },
  "line": [{
    "moType": "5101",
    "moCode": "20260319001",
    "moveOutOpSeq": "0030",
    "moveOutOpId": "OP030",
    "qty": 100,
    "unit": "PCS",
    "batchCode": "LOT20260319001",
    "state": "1",
    "prodCode": "FG-A001-001",
    "prodName": "Finished Product A",
    "moveInCode": "FG01",
    "moveInLocation": "A-01-01",
    "hasQty": "1",           // → ERP: stock_in_status
    "remark": ""
  }]
}

Response (Success)

{
  "code": 200,
  "msg": "Stock-in order created successfully",
  "TB001": "5101",
  "TB002": "20260319001"
}

Response (Failure)

{
  "code": 500,
  "msg": "Work order not found 5101-20260319999"
}