devsofttech_hms_ci4/scratch/verify_sale_24.php
DevSoftTech Server d2f069e3c8 feat(medical-store): add B2C sales returns, same-invoice exchanges, and DB migrations
- 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
2026-09-08 05:07:45 +05:30

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";
}