Skip to main content

Save Purchase Transaction

The Purchase Transaction Save API registers a purchase transaction in the system. It captures supplier information, invoice details, payment, tax amounts, and itemized purchase records.

Endpoint

POST /insertTrnsPurchase

Purpose

This API:

  • Saves a purchase transaction with header and itemized details
  • Supports tax calculation, discounts, and optional supplier data
  • Returns a result code and message upon success

ℹ️ Ensure supplier PIN, branch, and invoice numbers are valid before calling this API.


Request Object: TrnsPurchaseSaveReq

Request Fields (Header)

FieldDescriptionTypeRequiredLengthNotes
spplrTinSupplier PINCHAR❌ No11
invcNoInvoice NumberNUMBER✅ Yes38
orgInvcNoOriginal Invoice NumberNUMBER✅ Yes38
spplrBhfIdSupplier Branch IDCHAR❌ No2
spplrNmSupplier NameCHAR❌ No60
spplrInvcNoSupplier Invoice NumberNUMBER❌ No38
regTyCdRegistration TypeCHAR✅ Yes5See Registration Type
pchsTyCdPurchase Type CodeCHAR✅ Yes5See Transaction Type
rcptTyCdReceipt Type CodeCHAR✅ Yes5See Purchase Receipt Type
pmtTyCdPayment Type CodeCHAR✅ Yes5See Payment Method
pchsSttsCdPurchase Status CodeCHAR✅ Yes5See Transaction Progress
cfmDtValidated DateCHAR❌ No14YYYYMMDDhhmmss
pchsDtPurchase DateCHAR✅ Yes8YYYYMMDD
wrhsDtWarehousing DateCHAR❌ No14YYYYMMDDhhmmss
cnclReqDtCancel Requested DateCHAR❌ No14YYYYMMDDhhmmss
cnclDtCanceled DateCHAR❌ No14YYYYMMDDhhmmss
rfdDtCredit Note DateCHAR❌ No14YYYYMMDDhhmmss
totItemCntTotal Item CountNUMBER✅ Yes10
taxblAmtA..taxblAmtETaxable Amounts A–ENUMBER✅ Yes18,2
taxRtA..taxRtETax Rates A–ENUMBER✅ Yes7,2
taxAmtA..taxAmtETax Amounts A–ENUMBER✅ Yes18,2
totTaxblAmtTotal Taxable AmountNUMBER✅ Yes18,2
totTaxAmtTotal Tax AmountNUMBER✅ Yes18,2
totAmtTotal AmountNUMBER✅ Yes18,2
remarkOptional remarkCHAR❌ No400
regrIdRegistration IDCHAR✅ Yes20
regrNmRegistration NameCHAR✅ Yes60
modrIdModifier IDCHAR✅ Yes20
modrNmModifier NameCHAR✅ Yes60

Request Fields (Items)

Item List (itemList)

FieldDescriptionTypeRequiredNotes
itemSeqItem Sequence NumberNUMBER✅ Yes
itemCdItem CodeCHAR❌ No20
itemClsCdItem Classification CodeCHAR✅ Yes10
itemNmItem NameCHAR✅ Yes200
bcdBarcodeCHAR❌ No20
spplrItemClsCdSupplier Item Class CodeCHAR❌ No10
spplrItemCdSupplier Item CodeCHAR❌ No20
spplrItemNmSupplier Item NameCHAR❌ No200
pkgUnitCdPackaging Unit CodeCHAR❌ No5See Packaging Unit
pkgPackage QuantityNUMBER✅ Yes13,2
qtyUnitCdQuantity Unit CodeCHAR✅ Yes5See Unit of Quantity
qtyQuantityNUMBER✅ Yes13,2
prcUnit PriceNUMBER✅ Yes18,2
splyAmtSupply AmountNUMBER✅ Yes18,2
dcRtDiscount RateNUMBER✅ Yes5,2
dcAmtDiscount AmountNUMBER✅ Yes18,2
taxblAmtTaxable AmountNUMBER✅ Yes18,2
taxTyCdTaxation Type CodeCHAR✅ Yes5See Tax Type
taxAmtTax AmountNUMBER✅ Yes18,2
totAmtTotal AmountNUMBER✅ Yes18,2
itemExprDtItem Expired DateCHAR❌ No8YYYYMMDD

JSON Request Example

{
"invcNo": 1,
"orgInvcNo": 0,
"spplrTin": "A123456789Z",
"regTyCd": "M",
"pchsTyCd": "N",
"rcptTyCd": "P",
"pmtTyCd": "01",
"pchsSttsCd": "02",
"pchsDt": "20200127",
"totItemCnt": 2,
"taxblAmtB": 10500,
"taxRtB": 18,
"taxAmtB": 1890,
"totTaxblAmt": 10500,
"totTaxAmt": 1890,
"totAmt": 10500,
"regrId": "Test",
"regrNm": "Test",
"modrId": "Test",
"modrNm": "Test",
"itemList": [
{
"itemSeq": 1,
"itemCd": "KE1NTXU0000001",
"itemClsCd": "5059690800",
"itemNm": "test item 1",
"pkgUnitCd": "NT",
"pkg": 2,
"qtyUnitCd": "U",
"qty": 2,
"prc": 3500,
"splyAmt": 7000,
"dcRt": 0,
"dcAmt": 0,
"taxblAmt": 7000,
"taxTyCd": "B",
"taxAmt": 1260,
"totAmt": 7000
}
]
}

Response Object: TrnsPurchaseSaveRes

FieldDescriptionTypeNotes
resultCdResult code (000 = success)CHAR(3)
resultMsgResult messageCHAR
resultDtResponse timestampCHAR(14)YYYYMMDDhhmmss
dataResponse dataObjectOptional

JSON Response Example

{
"resultCd": "000",
"resultMsg": "It is succeeded",
"resultDt": "20200226194650",
"data": null
}

SDK Usage Examples

$requestData = [
'invcNo' => 1,
'orgInvcNo' => 0,
'spplrTin' => 'A123456789Z',
'regTyCd' => 'M',
'pchsTyCd' => 'N',
'rcptTyCd' => 'P',
'pmtTyCd' => '01',
'pchsSttsCd' => '02',
'pchsDt' => '20200127',
'totItemCnt' => 2,
'taxblAmtB' => 10500,
'taxRtB' => 18,
'taxAmtB' => 1890,
'totTaxblAmt' => 10500,
'totTaxAmt' => 1890,
'totAmt' => 10500,
'regrId' => 'Test',
'regrNm' => 'Test',
'modrId' => 'Test',
'modrNm' => 'Test',
'itemList' => [
[
'itemSeq' => 1,
'itemCd' => 'KE1NTXU0000001',
'itemClsCd' => '5059690800',
'itemNm' => 'test item 1',
'pkgUnitCd' => 'NT',
'pkg' => 2,
'qtyUnitCd' => 'U',
'qty' => 2,
'prc' => 3500,
'splyAmt' => 7000,
'dcRt' => 0,
'dcAmt' => 0,
'taxblAmt' => 7000,
'taxTyCd' => 'B',
'taxAmt' => 1260,
'totAmt' => 7000
]
]
];

$response = $etims->savePurchase($requestData);

Best Practices

  • Validate supplier PIN, branch, and invoice numbers before saving
  • Ensure tax, discount, and total amounts are correct
  • Handle non-000 result codes gracefully
  • Store invoice and audit information for reconciliation

Next Steps