- Add B2C same-invoice exchange and pure refund workflows (Marg ERP standard) - Support returning excess/unused medicines with proportional unit pricing on original invoice - Auto-net return credits against new medicines in POS cart with refund outflow handling - Implement stock replenishment for restocked batches with audit trail in mst_stock_audit - Generate sequential GST Credit Notes in mst_sale_returns and mst_sale_return_items - Update Thermal 80mm, A5, and A4 print templates with separated dispensed vs returned items - Add CI4 migration 2026-09-08-000001_CreateMedicalStoreReturnsAndExchanges.php for remote execution - Add standalone SQL script scripts/sql/2026-09-08_medical_store_b2c_returns_and_exchanges.sql
27 lines
1000 B
PHP
27 lines
1000 B
PHP
<?php
|
|
$mysqli = new mysqli('localhost', 'root', '', 'hms_data_ci4');
|
|
if ($mysqli->connect_error) die($mysqli->connect_error);
|
|
|
|
echo "=== SALE RECORD ===\n";
|
|
$res = $mysqli->query("SELECT * FROM mst_sales ORDER BY sale_id DESC LIMIT 1");
|
|
$sale = $res->fetch_assoc();
|
|
print_r($sale);
|
|
|
|
echo "\n=== SALE ITEMS ===\n";
|
|
$iRes = $mysqli->query("SELECT * FROM mst_sales_items WHERE sale_id = {$sale['sale_id']}");
|
|
while ($row = $iRes->fetch_assoc()) {
|
|
print_r($row);
|
|
}
|
|
|
|
echo "\n=== CREDIT NOTE RECORD ===\n";
|
|
$cnRes = $mysqli->query("SELECT * FROM mst_sale_returns WHERE new_sale_id = {$sale['sale_id']}");
|
|
while ($row = $cnRes->fetch_assoc()) {
|
|
print_r($row);
|
|
}
|
|
|
|
echo "\n=== STOCK AUDIT TRAIL ===\n";
|
|
$audRes = $mysqli->query("SELECT * FROM mst_stock_audit WHERE remarks LIKE '%{$sale['invoice_no']}%'");
|
|
while ($row = $audRes->fetch_assoc()) {
|
|
echo "Audit ID: {$row['audit_id']} | Item: {$row['item_id']} | Var: {$row['variation_qty']} | Rate: {$row['rate']} | Remarks: {$row['remarks']}\n";
|
|
}
|