Edits history of script submission #18945 for ' Create an inventory transaction definition (sage_intacct)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    type SageIntacct = {
    	token: string
    }
    /**
     * Create an inventory transaction definition
     * Creates a new inventory transaction definition.
     */
    export async function main(
    	auth: SageIntacct,
    	body: {
    		key?: string
    		id?: string
    		href?: string
    		templateType?: 'quote' | 'order' | 'list' | 'invoice' | 'adjustment' | 'other'
    		description?: string
    		workflowCategory?: 'adjustment' | 'receipt' | 'transfer' | 'shipping'
    		reportingCategory?:
    			| 'inventoryAdjustment'
    			| 'buildKits'
    			| 'disassembleKits'
    			| 'inventoryDamagedGoods'
    			| 'inventoryReceipt'
    			| 'inventoryScrapOrSpoilage'
    			| 'inventoryShipper'
    			| 'warehouseTransfer'
    		status?: 'active' | 'inactive'
    		txnNumbering?: {
    			enableSequenceNumbering?: false | true
    			numberingSequence?: { key?: string; id?: string; href?: string }
    			preserveSequenceNumbers?: false | true
    			inheritSourceDocumentNumber?: false | true
    		}
    		inventoryControl?: {
    			enableWarnOnLowQty?: false | true
    			updatesInventory?: 'no' | 'quantity' | 'value' | 'quantityAndValue'
    			updatesCost?: false | true
    			increaseOrDecreaseInventory?: 'increase' | 'decrease'
    			warehouseSelectionMethod?:
    				| 'sortByID'
    				| 'sortByName'
    				| 'warehouseWithAvailableInventory'
    				| 'useTheDefaultWarehouse'
    			defaultWarehouse?: { key?: string; id?: string; href?: string }
    		}
    		accounting?: {
    			txnPosting?: 'postToGeneralLedger' | 'doNotPost'
    			isSubTotalsEnabled?: false | true
    		}
    		conversionType?: 'leaveTxnOpen' | 'closeTxn'
    		pricingAndTerms?: {
    			initialPriceList?: { key?: string; id?: string; href?: string }
    			specialPriceList?: { key?: string; id?: string; href?: string }
    		}
    		print?: { documentTemplate?: string; defaultText?: string }
    		enableUserOrGroupPermmission?: false | true
    		userOverrides?: {
    			allowDepartmentOverride?: false | true
    			allowLocationOverride?: false | true
    		}
    		documentPermissions?: {
    			editPolicy?: 'noEdit' | 'beforePrinting' | 'editInDraftOnly' | 'all'
    			deletePolicy?: 'beforePrinting' | 'all' | 'noDelete' | 'deleteInDraftOnly'
    			createPolicy?: 'newDocumentOrConvert' | 'convertOnly'
    			multiEntityRuleForTxn?: 'topLevelOrEntity' | 'topLevelOnly' | 'entityOnly'
    		}
    		inventoryTotalDetail?: {
    			key?: string
    			id?: string
    			href?: string
    			maintainType?: 'quantity' | 'value' | 'quantityAndValue'
    			operation?: 'add' | 'subtract'
    			inventoryTotal?: { key?: string; id?: string; href?: string }
    			inventoryTxnDefinition?: { key?: string; id?: string; href?: string }
    		}[]
    		subtotalDetail?: {
    			key?: string
    			id?: string
    			href?: string
    			inventoryTxnDefinition?: { key?: string; id?: string; href?: string }
    			lineNumber?: number
    			description?: string
    			subtotalType?: 'discount' | 'charge'
    			appliedToLineNumber?: number
    			valueType?: 'amount' | 'percent'
    			subtotalValue?: string
    			txnType?: '' | 'debit' | 'credit'
    			glAccount?: { href?: string; id?: string; key?: string }
    			offsetGlAccount?: { href?: string; id?: string; key?: string }
    			isTax?: false | true
    			enableAvaTax?: false | true
    			dimensions?: {
    				location?: { key?: string; id?: string; name?: string; href?: string }
    				department?: {
    					key?: string
    					id?: string
    					name?: string
    					href?: string
    				}
    				employee?: { key?: string; id?: string; name?: string; href?: string }
    				project?: { key?: string; id?: string; name?: string; href?: string }
    				customer?: { key?: string; id?: string; name?: string; href?: string }
    				vendor?: { key?: string; id?: string; name?: string; href?: string }
    				item?: { key?: string; id?: string; name?: string; href?: string }
    				warehouse?: { key?: string; id?: string; name?: string; href?: string }
    				class?: { key?: string; id?: string; name?: string; href?: string }
    				task?: { id?: string; key?: string; name?: string; href?: string }
    				costType?: { id?: string; key?: string; name?: string; href?: string }
    				asset?: { id?: string; key?: string; name?: string; href?: string }
    				contract?: { id?: string; key?: string; name?: string; href?: string }
    				affiliateEntity?: {
    					key?: string
    					id?: string
    					href?: string
    					name?: string
    				}
    			} & {
    				department?: {
    					href?: string
    					id?: string
    					key?: string
    					name?: string
    				}
    				location?: { href?: string; id?: string; key?: string; name?: string }
    			}
    		}[]
    		sourceDocumentDetail?: {
    			key?: string
    			id?: string
    			href?: string
    			inventoryTxnDefinition?: { key?: string; id?: string; href?: string }
    			convertedFrom?: { key?: string; id?: string; href?: string }
    		}[]
    		inventoryAccountMapping?: {
    			key?: string
    			id?: string
    			href?: string
    			txnType?: 'debit' | 'credit'
    			moduleType?: 'subledger' | 'inventory'
    			lineNumber?: number
    			glAccount?: { key?: string; id?: string; href?: string }
    			dimensions?: {
    				location?: { key?: string; id?: string; name?: string; href?: string }
    				department?: {
    					key?: string
    					id?: string
    					name?: string
    					href?: string
    				}
    				employee?: { key?: string; id?: string; name?: string; href?: string }
    				project?: { key?: string; id?: string; name?: string; href?: string }
    				customer?: { key?: string; id?: string; name?: string; href?: string }
    				vendor?: { key?: string; id?: string; name?: string; href?: string }
    				item?: { key?: string; id?: string; name?: string; href?: string }
    				warehouse?: { key?: string; id?: string; name?: string; href?: string }
    				class?: { key?: string; id?: string; name?: string; href?: string }
    				task?: { id?: string; key?: string; name?: string; href?: string }
    				costType?: { id?: string; key?: string; name?: string; href?: string }
    				asset?: { id?: string; key?: string; name?: string; href?: string }
    				contract?: { id?: string; key?: string; name?: string; href?: string }
    				affiliateEntity?: {
    					key?: string
    					id?: string
    					href?: string
    					name?: string
    				}
    			} & {
    				location?: { key?: string; id?: string; name?: string; href?: string }
    				department?: {
    					key?: string
    					id?: string
    					name?: string
    					href?: string
    				}
    				warehouse?: { key?: string; id?: string; href?: string }
    			}
    			itemGLGroup?: { key?: string; id?: string; href?: string }
    			inventoryTxnDefinition?: { key?: string; id?: string; href?: string }
    		}[]
    		entitySettingDetail?: {
    			key?: string
    			id?: string
    			href?: string
    			txnNumbering?: {
    				preserveSequenceNumbering?: false | true
    				inheritSourceDocumentNumber?: false | true
    				sequenceNumber?: { key?: string; href?: string; id?: string }
    			}
    			documentTemplate?: { key?: string; id?: string }
    			entity?: { href?: string; key?: string; id?: string }
    			inventoryTxnDefinition?: { key?: string; id?: string; href?: string }
    		}[]
    		audit?: {
    			createdDateTime?: string
    			modifiedDateTime?: string
    			createdBy?: string
    			modifiedBy?: string
    		}
    		entity?: { key?: string; id?: string; name?: string; href?: string }
    	} & {}
    ) {
    	const url = new URL(`https://api.intacct.com/ia/api/v1/objects/inventory-control/txn-definition`)
    
    	const response = await fetch(url, {
    		method: 'POST',
    		headers: {
    			'Content-Type': 'application/json',
    			Authorization: 'Bearer ' + auth.token
    		},
    		body: JSON.stringify(body)
    	})
    	if (!response.ok) {
    		const text = await response.text()
    		throw new Error(`${response.status} ${text}`)
    	}
    	return await response.json()
    }
    

    Submitted by hugo697 235 days ago