BOM 응답 보강

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 4분
  • 이 보강을 사용하여 BOM에 대한 업데이트가 있을 때마다 ProductList 항목으로 작업할 수 있습니다.

    BOM 응답 보강은 환경에서 기본적으로 활성화되며 BOM(자재 명세서)이 업데이트될 때마다 제품 목록의 항목을 조작하는 데 사용할 수 있습니다.

    주:
    CPQ 환경에 제품 작업이 있는 규칙이 포함되어야 하며, 그렇지 않으면 보강이 반복할 내용이 없습니다.

    BOM 응답

    다음 샘플에서 BOM 응답 보강은 제품을 반복하고 제품 가격을 변경합니다.

    //Loop over products and change price of a product
    let dealProduct = cfg.blueMoonSelected;
    if (dealProduct == true) {
            for(var prod of ProductList) {
                    let price = prod.price * .8;
                    prod.price = price;
            }
    }

    On BOM 응답 보강은 GET 또는 POST를 통해 외부 REST 서비스를 요청할 수 있습니다.

    다음 샘플 스크립트에서 BOM 응답 보강은 외부 연결을 사용하여 고객 데이터로 powerPricing API를 쿼리합니다. 서비스에서 검색된 고객별 요금 데이터를 사용하여 보강은 기존 ProductList 기록의 가격을 조정합니다.

    var powerInputs = {"membershipCode":cfg.eCMembershipCode, "icp":cfg.eCICPNumber};
    let powerResponse = External.powerPricing(powerInputs);
    let dailyCharge = 0; let ratesArr = [];
    
    if(powerResponse.status == 200) {
    	for(var record of powerResponse.body) {
    		if(record.chargeType == cfg.expectedUsage) {
    			dailyCharge = record.dailyCharges;
    			ratesArr = record.rates;
    		}
    	}
    	for(var prod of ProductList) {
    		if(prod.id=="electricBillEstimator") {
    			let addedPrice = dailyCharge * cfg.serviceDurationInDays;
    			prod.price = addedPrice;
    		}
    			if(prod.id=="Standard Rate" || prod.id=="Low Rate") {
    			prod.price = dailyCharge;
    		}
    	}
    	for(var rateVal of ratesArr) {
    		ProductList.id = "Additional Charge Per KWH: " + rateVal.name;
    		ProductList.quantity = 1;
    		ProductList.bomType = "Manufacturing";
    		ProductList.orderNumber = 2;
    		ProductList.price = rateVal.rate;
    		ProductList.notes = rateVal.measure;
    		ProductList.parentProduct = "electricBillEstimator";
    		ProductList.next();
    	}
    }
    
    return ProductList;

    규칙 엔진 BOM과 보강된 BOM의 차이점

    런타임 중 BOM에는 런타임 중 제품 규칙의 결과를 기반으로 하는 규칙 엔진 BOM과 BOM 보강의 결과인 보강된 BOM의 두 가지 버전이 있습니다.

    BOM 보강의 ProductList 객체(스크립트에서 참조됨)는 보강된 BOM이 아니라 규칙 엔진 BOM의 결과입니다. 이는 무한 루프가 없는지 확인하기 위한 것입니다. 스크립트가 반환하는 자체 ProductList를 참조하고 BOM 업데이트 시 특정 객체의 가격을 백분율로 높이도록 스크립트를 설정했다고 가정해 보겠습니다. 이 경우 다음에 BOM의 내용이 업데이트될 때 가격 인상이 계속해서 발생합니다.

    이러한 상황을 방지하기 위해 보강된 BOM은 확인 보강의 ProductList 이외의 규칙 또는 보강에서 참조되지 않습니다. 이렇게 하면 BOM 보강이 규칙 엔진 외부에서 작동할 수 있지만, BOM 보강에서 조건이 충족되면 BOM 보강 스크립트에서 해당 조건을 중지하는 BOM에 대한 변경이 참조되지 않기 때문에 다음에 BOM을 업데이트할 때 해당 조건이 다시 충족될 수 있음을 의미합니다.

    외부 연결의 경우 응답이 일관되는 한 문제가 되지 않습니다. 그러나 문자열을 생성하거나 특정 시간을 저장할 때와 같이 여러 번 실행될 때 응답이 변경되면 BOM이 업데이트될 때마다 업데이트됩니다.

    BOM 응답 보강은 다음에 사용할 수 있습니다.

    • BOM에서 제품의 가격을 동적으로 변경합니다. 이는 정적 또는 동적 변경률일 수 있습니다(예: 배송료는 정적이고 세금은 동적입니다).
    • BOM의 일부 조건에 따라 달라지는 BOM의 제품 속성을 변경합니다(예: $100+의 세금이 견적되면 제공되는 무료 스티커의 수량).
    • BOM에서 라인 항목을 제거합니다.