BOM 응답 보강
이 보강을 사용하여 BOM에 대한 업데이트가 있을 때마다 ProductList 항목으로 작업할 수 있습니다.
BOM 응답 보강은 환경에서 기본적으로 활성화되며 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에서 라인 항목을 제거합니다.