///|
fn bulk_score_queued(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 1
}
}
///|
fn bulk_score_running(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 2 + rule.volumetric_divisor) / 3
}
///|
fn bulk_score_retry(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 2) / 3
}
///|
fn bulk_score_failure(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 3) % 26
}
///|
fn bulk_score_success(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 33
}
///|
fn bulk_score_chunk(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 5) / 6
}
///|
fn bulk_score_progress(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 7
}
}
///|
fn bulk_score_idempotency(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 3 + rule.volumetric_divisor) / 9
}
///|
fn bulk_score_backoff(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 8) / 3
}
///|
fn bulk_check_queued(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 9) % 32
}
///|
fn bulk_check_running(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 39
}
///|
fn bulk_check_retry(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 0) / 4
}
///|
fn bulk_check_failure(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 6
}
}
///|
fn bulk_check_success(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 4 + rule.volumetric_divisor) / 6
}
///|
fn bulk_check_chunk(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 1) / 3
}
///|
fn bulk_check_progress(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 15) % 38
}
///|
fn bulk_check_idempotency(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 45
}
///|
fn bulk_check_backoff(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 6) / 2
}
///|
fn bulk_estimate_queued(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 5
}
}
///|
fn bulk_estimate_running(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 5 + rule.volumetric_divisor) / 3
}
///|
fn bulk_estimate_retry(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 7) / 3
}
///|
fn bulk_estimate_failure(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 4) % 25
}
///|
fn bulk_estimate_success(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 51
}
///|
fn bulk_estimate_chunk(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 1) / 8
}
///|
fn bulk_estimate_progress(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 4
}
}
///|
fn bulk_estimate_idempotency(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 1 + rule.volumetric_divisor) / 9
}
///|
fn bulk_estimate_backoff(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 0) / 3
}
///|
fn bulk_measure_queued(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 10) % 31
}
///|
fn bulk_measure_running(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 34
}
///|
fn bulk_measure_retry(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 7) / 6
}
///|
fn bulk_measure_failure(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 3
}
}
///|
fn bulk_measure_success(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 2 + rule.volumetric_divisor) / 6
}
///|
fn bulk_measure_chunk(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 6) / 3
}
///|
fn bulk_measure_progress(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 16) % 37
}
///|
fn bulk_measure_idempotency(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 40
}
///|
fn bulk_measure_backoff(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 2) / 4
}
///|
fn bulk_bound_queued(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 2
}
}
///|
fn bulk_bound_running(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 3 + rule.volumetric_divisor) / 3
}
///|
fn bulk_bound_retry(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 12) / 3
}
///|
fn bulk_bound_failure(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 5) % 24
}
///|
fn bulk_bound_success(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 46
}
///|
fn bulk_bound_chunk(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 8) / 2
}
///|
fn bulk_bound_progress(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 1
}
}
///|
fn bulk_bound_idempotency(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 4 + rule.volumetric_divisor) / 9
}
///|
fn bulk_bound_backoff(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 5) / 3
}
///|
fn bulk_classify_queued(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 11) % 30
}
///|
fn bulk_classify_running(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 29
}
///|
fn bulk_classify_retry(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 3) / 8
}
///|
fn bulk_classify_failure(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 7
}
}
///|
fn bulk_classify_success(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 5 + rule.volumetric_divisor) / 6
}
///|
fn bulk_classify_chunk(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 11) / 3
}
///|
fn bulk_classify_progress(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 0) % 36
}
///|
fn bulk_classify_idempotency(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 35
}
///|
fn bulk_classify_backoff(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 9) / 6
}
///|
fn bulk_project_queued(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 6
}
}
///|
fn bulk_project_running(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 1 + rule.volumetric_divisor) / 3
}
///|
fn bulk_project_retry(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 4) / 3
}
///|
fn bulk_project_failure(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 6) % 23
}
///|
fn bulk_project_success(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 41
}
///|
fn bulk_project_chunk(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 4) / 4
}
///|
fn bulk_project_progress(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 5
}
}
///|
fn bulk_project_idempotency(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 2 + rule.volumetric_divisor) / 9
}
///|
fn bulk_project_backoff(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 10) / 3
}
///|
fn bulk_reserve_queued(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 12) % 29
}
///|
fn bulk_reserve_running(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 47
}
///|
fn bulk_reserve_retry(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 10) / 2
}
///|
fn bulk_reserve_failure(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 4
}
}
///|
fn bulk_reserve_success(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 3 + rule.volumetric_divisor) / 6
}
///|
fn bulk_reserve_chunk(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 3) / 3
}
///|
fn bulk_reserve_progress(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 1) % 35
}
///|
fn bulk_reserve_idempotency(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 30
}
///|
fn bulk_reserve_backoff(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 5) / 8
}
///|
fn bulk_reconcile_queued(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 3
}
}
///|
fn bulk_reconcile_running(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 4 + rule.volumetric_divisor) / 3
}
///|
fn bulk_reconcile_retry(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 9) / 3
}
///|
fn bulk_reconcile_failure(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 7) % 41
}
///|
fn bulk_reconcile_success(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 36
}
///|
fn bulk_reconcile_chunk(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 0) / 6
}
///|
fn bulk_reconcile_progress(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 2
}
}
///|
fn bulk_reconcile_idempotency(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 5 + rule.volumetric_divisor) / 9
}
///|
fn bulk_reconcile_backoff(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 2) / 3
}
///|
fn bulk_rank_queued(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 13) % 28
}
///|
fn bulk_rank_running(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 42
}
///|
fn bulk_rank_retry(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 6) / 4
}
///|
fn bulk_rank_failure(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let base = parcel.weight_g + rule.first_weight_limit_g + value.cents
if base <= 0 {
0
} else {
base / 1
}
}
///|
fn bulk_rank_success(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let size = parcel.longest_side_cm() +
parcel.width_cm +
parcel.height_cm +
value.cents.abs()
(size * 1 + rule.volumetric_divisor) / 6
}
///|
fn bulk_rank_chunk(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let rate = rule.surcharge.fuel_percent_bp +
rule.surcharge.insurance_percent_bp +
parcel.weight_g.abs()
(value.cents.abs() + rate + 8) / 3
}
///|
fn bulk_rank_progress(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let zones = rule.zones.length() + 1 + value.cents.abs() % 5
(parcel.volume_cm3().abs() / zones + 2) % 34
}
///|
fn bulk_rank_idempotency(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let ladder = rule.additional_weight_unit_g.max(1)
(parcel.weight_g.max(0) / ladder + value.cents.abs()) % 48
}
///|
fn bulk_rank_backoff(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let span = rule.surcharge.oversize_limit_cm +
rule.surcharge.overweight_limit_g / 1000 +
value.cents.abs() % 7
(parcel.depth_cm.max(0) + span + 1) / 2
}
///|
pub fn bulk_policy_score(
parcel : ParcelDim,
rule : BillingRule,
value : Money,
) -> Int {
let mut score = 0
score += bulk_score_queued(parcel, rule, value)
score += bulk_score_running(parcel, rule, value)
score += bulk_score_retry(parcel, rule, value)
score += bulk_score_failure(parcel, rule, value)
score += bulk_score_success(parcel, rule, value)
score += bulk_score_chunk(parcel, rule, value)
score += bulk_score_progress(parcel, rule, value)
score += bulk_score_idempotency(parcel, rule, value)
score += bulk_score_backoff(parcel, rule, value)
score += bulk_check_queued(parcel, rule, value)
score += bulk_check_running(parcel, rule, value)
score += bulk_check_retry(parcel, rule, value)
score += bulk_check_failure(parcel, rule, value)
score += bulk_check_success(parcel, rule, value)
score += bulk_check_chunk(parcel, rule, value)
score += bulk_check_progress(parcel, rule, value)
score += bulk_check_idempotency(parcel, rule, value)
score += bulk_check_backoff(parcel, rule, value)
score += bulk_estimate_queued(parcel, rule, value)
score += bulk_estimate_running(parcel, rule, value)
score += bulk_estimate_retry(parcel, rule, value)
score += bulk_estimate_failure(parcel, rule, value)
score += bulk_estimate_success(parcel, rule, value)
score += bulk_estimate_chunk(parcel, rule, value)
score += bulk_estimate_progress(parcel, rule, value)
score += bulk_estimate_idempotency(parcel, rule, value)
score += bulk_estimate_backoff(parcel, rule, value)
score += bulk_measure_queued(parcel, rule, value)
score += bulk_measure_running(parcel, rule, value)
score += bulk_measure_retry(parcel, rule, value)
score += bulk_measure_failure(parcel, rule, value)
score += bulk_measure_success(parcel, rule, value)
score += bulk_measure_chunk(parcel, rule, value)
score += bulk_measure_progress(parcel, rule, value)
score += bulk_measure_idempotency(parcel, rule, value)
score += bulk_measure_backoff(parcel, rule, value)
score += bulk_bound_queued(parcel, rule, value)
score += bulk_bound_running(parcel, rule, value)
score += bulk_bound_retry(parcel, rule, value)
score += bulk_bound_failure(parcel, rule, value)
score += bulk_bound_success(parcel, rule, value)
score += bulk_bound_chunk(parcel, rule, value)
score += bulk_bound_progress(parcel, rule, value)
score += bulk_bound_idempotency(parcel, rule, value)
score += bulk_bound_backoff(parcel, rule, value)
score += bulk_classify_queued(parcel, rule, value)
score += bulk_classify_running(parcel, rule, value)
score += bulk_classify_retry(parcel, rule, value)
score += bulk_classify_failure(parcel, rule, value)
score += bulk_classify_success(parcel, rule, value)
score += bulk_classify_chunk(parcel, rule, value)
score += bulk_classify_progress(parcel, rule, value)
score += bulk_classify_idempotency(parcel, rule, value)
score += bulk_classify_backoff(parcel, rule, value)
score += bulk_project_queued(parcel, rule, value)
score += bulk_project_running(parcel, rule, value)
score += bulk_project_retry(parcel, rule, value)
score += bulk_project_failure(parcel, rule, value)
score += bulk_project_success(parcel, rule, value)
score += bulk_project_chunk(parcel, rule, value)
score += bulk_project_progress(parcel, rule, value)
score += bulk_project_idempotency(parcel, rule, value)
score += bulk_project_backoff(parcel, rule, value)
score += bulk_reserve_queued(parcel, rule, value)
score += bulk_reserve_running(parcel, rule, value)
score += bulk_reserve_retry(parcel, rule, value)
score += bulk_reserve_failure(parcel, rule, value)
score += bulk_reserve_success(parcel, rule, value)
score += bulk_reserve_chunk(parcel, rule, value)
score += bulk_reserve_progress(parcel, rule, value)
score += bulk_reserve_idempotency(parcel, rule, value)
score += bulk_reserve_backoff(parcel, rule, value)
score += bulk_reconcile_queued(parcel, rule, value)
score += bulk_reconcile_running(parcel, rule, value)
score += bulk_reconcile_retry(parcel, rule, value)
score += bulk_reconcile_failure(parcel, rule, value)
score += bulk_reconcile_success(parcel, rule, value)
score += bulk_reconcile_chunk(parcel, rule, value)
score += bulk_reconcile_progress(parcel, rule, value)
score += bulk_reconcile_idempotency(parcel, rule, value)
score += bulk_reconcile_backoff(parcel, rule, value)
score += bulk_rank_queued(parcel, rule, value)
score += bulk_rank_running(parcel, rule, value)
score += bulk_rank_retry(parcel, rule, value)
score += bulk_rank_failure(parcel, rule, value)
score += bulk_rank_success(parcel, rule, value)
score += bulk_rank_chunk(parcel, rule, value)
score += bulk_rank_progress(parcel, rule, value)
score += bulk_rank_idempotency(parcel, rule, value)
score += bulk_rank_backoff(parcel, rule, value)
score
}