Существует заказ на продажу, имеющий много заказов на покупку, и в заказе на продажу есть элемент, который суммирует все затраты на доставку в каждом заказе.
Я разрабатываю 2 функции для расчета стоимости доставки вкаждое ПО:
function calcuTotalShippingCostByAllPOs(.....) {
......
// var created_pos is an array which records all the unique PO id in SO
for (i = 0; i < created_pos.length; i++) {
var po_amountValue = po_record.getSublistValue({
sublistId: 'item',
fieldId: 'amount',
line: ship_line
});
total_shipping += parseFloat(po_amountValue);
}
so_record.setSublistValue({
sublistId: "item",
fieldId: "amount",
line: so_ship_line,
// ignoreFieldChange: false,
value: total_shipping
});
}
function calcuTotalShippingCostByCurrentPO(.....) {
......
switch (context.type) {
case context.UserEventType.CREATE:
var difference = new_po_ship_cost;
break;
case context.UserEventType.DELETE:
var difference = -old_po_ship_cost;
break;
default:
var difference = new_po_ship_cost - old_po_ship_cost;
break;
}
// Get the old GST-Shipping cost on SO
var old_so_ship_cost = so_record.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_po_actual_cost',
line: so_ship_line
});
// if PO UNIT COST on ship line is a finite number
if (isNumber(old_so_ship_cost)) {
var new_so_ship_cost = old_so_ship_cost + difference;
} else {
var new_so_ship_cost = difference;
}
so_record.setSublistValue({
sublistId: "item",
fieldId: "amount",
line: so_ship_line,
// ignoreFieldChange: false,
value: total_shipping
});
}
Но если кто-то обновит стоимость доставки в конкретном ПО во время расчета, тогда общая стоимость доставки может быть неправильной.
Возможно ли заблокировать ПОпри выполнении функции суммирования всех затрат на доставку?
Например, если в SO 100000 заказов на поставку, при расчете общей стоимости доставки, если кто-то изменит одну из затрат на доставку в заказе на поставку, тогдаобщая стоимость может быть неверной, если она была добавлена к общей стоимости доставки.
Как предотвратить несогласованность данных в NetSuite.