Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions templates/transaction-process/view/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,7 @@
$kiriof_wcDiscountTotal = 0.0;
$kiriof_wcShippingDiscount = 0.0;
$kiriof_wcCouponCodes = [];
$kiriof_wcTotal = $kiriof_shippingFee; // fallback
$kiriof_wcTotal = $kiriof_wcOrder ? (float) $kiriof_wcOrder->get_total() : $kiriof_shippingFee;
if ($kiriof_isDeficitRow && ! empty($kiriof_row->wc_order_id)) {
$kiriof_wcOrderForDeficit = wc_get_order((int) $kiriof_row->wc_order_id);
if ($kiriof_wcOrderForDeficit) {
Expand All @@ -397,13 +397,17 @@
$kiriof_adjItemCoupon = $kiriof_adjCouponScopes['item'][0] ?? '';
$kiriof_adjShipCoupon = $kiriof_adjCouponScopes['shipping'][0] ?? '';

$kiriof_effectiveShippingCost = max(0.0, $kiriof_shippingCost - $kiriof_wcShippingDiscount);
$kiriof_effectiveCodPayout = $kiriof_wcTotal - $kiriof_effectiveShippingCost - $kiriof_insuranceCost - $kiriof_codFee;
$kiriof_canRequestPickup = $kiriof_isProcessable && (! $kiriof_isDeficitRow || $kiriof_effectiveCodPayout >= 0);

$kiriof_isProcessedFilter = ('processed' === $kiriof_status_filter);
$kiriof_isAllFilter = ('all' === $kiriof_status_filter);
$kiriof_canPrintRow = (($kiriof_isProcessedFilter || $kiriof_isAllFilter) && ! empty($kiriof_awb) && 'request_pickup' === $kiriof_row->status);
$kiriof_checkboxDisabled = ($kiriof_isProcessedFilter || $kiriof_isAllFilter)
? (! $kiriof_canPrintRow && ($kiriof_isDeficitRow || ! $kiriof_isProcessable))
: ($kiriof_isDeficitRow || ! $kiriof_isProcessable);
$kiriof_checkboxTitle = $kiriof_isDeficitRow
? (! $kiriof_canPrintRow && ! $kiriof_canRequestPickup)
: (! $kiriof_canRequestPickup);
$kiriof_checkboxTitle = $kiriof_isDeficitRow && $kiriof_effectiveCodPayout < 0
? __('Resolve the COD deficit before proceeding.', 'kiriminaja-official')
: (($kiriof_isProcessedFilter || ($kiriof_isAllFilter && ! $kiriof_isProcessable))
? ($kiriof_canPrintRow ? '' : __('Order must have an AWB and request pickup status before it can be printed.', 'kiriminaja-official'))
Expand All @@ -415,7 +419,7 @@
echo '
<tr>
<td class="manage-column column-thumb kiriof-col-select">
<input type="checkbox" name="transaction_id[]" value="' . esc_attr($kiriof_orderIdKA) . '" data-can-pickup="' . ($kiriof_isProcessable && ! $kiriof_isDeficitRow ? '1' : '0') . '" data-can-print="' . ($kiriof_canPrintRow ? '1' : '0') . '"' . ($kiriof_checkboxDisabled ? ' disabled' : '') . ($kiriof_checkboxTitle ? ' title="' . esc_attr($kiriof_checkboxTitle) . '"' : '') . '>
<input type="checkbox" name="transaction_id[]" value="' . esc_attr($kiriof_orderIdKA) . '" data-can-pickup="' . ($kiriof_canRequestPickup ? '1' : '0') . '" data-can-print="' . ($kiriof_canPrintRow ? '1' : '0') . '"' . ($kiriof_checkboxDisabled ? ' disabled' : '') . ($kiriof_checkboxTitle ? ' title="' . esc_attr($kiriof_checkboxTitle) . '"' : '') . '>
</td>
<td class="manage-column column-thumb kiriof-col-order">
<a href="' . esc_url($kiriof_orderEditUrl) . '" target="_blank" style="font-weight: 700">#' . esc_html($kiriof_row->wc_order_id) . '</a>
Expand Down
30 changes: 30 additions & 0 deletions tests/RequestPickupPaymentFlowTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -378,4 +378,34 @@ public function platform_shipping_discount_label_distinguishes_from_user_coupon(
'Admin order metabox should label platform-covered shipping discount as "Shipping Discount (from KiriminAja)"'
);
}

#[Test]
public function deficit_rows_with_non_negative_effective_cod_payout_remain_pickup_processable(): void
{
$transactionProcessView = file_get_contents(PLUGIN_DIR . '/templates/transaction-process/view/index.php');

$this->assertStringContainsString(
'$kiriof_effectiveShippingCost = max(0.0, $kiriof_shippingCost - $kiriof_wcShippingDiscount);',
$transactionProcessView,
'Request pickup eligibility must use discounted shipping when evaluating COD payout'
);

$this->assertStringContainsString(
'$kiriof_effectiveCodPayout = $kiriof_wcTotal - $kiriof_effectiveShippingCost - $kiriof_insuranceCost - $kiriof_codFee;',
$transactionProcessView,
'Request pickup eligibility must evaluate the effective COD payout'
);

$this->assertStringContainsString(
'$kiriof_canRequestPickup = $kiriof_isProcessable && (! $kiriof_isDeficitRow || $kiriof_effectiveCodPayout >= 0);',
$transactionProcessView,
'Deficit rows should remain pickup-processable when the effective COD payout is non-negative'
);

$this->assertStringContainsString(
'data-can-pickup="\' . ($kiriof_canRequestPickup ? \'1\' : \'0\')',
$transactionProcessView,
'Request pickup checkbox must use effective processability instead of the raw deficit flag'
);
}
}
Loading