Sweep all .cshtml files for encoding corruption; add pre-commit guard
Replace all corruption variants with HTML entities across 226 view files: - 3-char UTF-8-as-Win1252 sequences (ae-corruption) - Standalone smart/curly quotes that break C# Razor expressions - Partially re-corrupted variants where the 3rd byte was normalised to ASCII tools/Fix-Encoding.ps1: re-runnable sweep; uses [char] code points so the script itself never contains a literal non-ASCII character; supports -DryRun .githooks/pre-commit: blocks commits containing the ae-corruption byte signature (xc3xa2xe2x82xac); git core.hooksPath = .githooks so the hook is repo-committed and active for all future work on this machine. Build clean; 225 unit tests pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
ViewData["Title"] = "Add New Vendor";
|
||||
ViewData["PageIcon"] = "bi-truck";
|
||||
ViewData["PageHelpTitle"] = "Add New Vendor";
|
||||
ViewData["PageHelpContent"] = "Add a supplier you purchase materials from. Mark as Preferred to prioritize them in purchase order pickers. Set Default Expense Account and Payment Terms to pre-fill bills created from this vendor's POs. Account Number is your customer account number at the vendor — useful on purchase orders.";
|
||||
ViewData["PageHelpContent"] = "Add a supplier you purchase materials from. Mark as Preferred to prioritize them in purchase order pickers. Set Default Expense Account and Payment Terms to pre-fill bills created from this vendor's POs. Account Number is your customer account number at the vendor — useful on purchase orders.";
|
||||
}
|
||||
|
||||
<div class="row justify-content-center">
|
||||
@@ -29,7 +29,7 @@
|
||||
<a tabindex="0" class="help-icon" role="button"
|
||||
data-bs-toggle="popover" data-bs-placement="right" data-bs-trigger="focus"
|
||||
data-bs-title="Vendor Information"
|
||||
data-bs-content="Vendor Name is required — use the official company name as it appears on invoices. Preferred Vendor marks this supplier as a go-to source; preferred vendors are listed first in purchase order dropdowns.">
|
||||
data-bs-content="Vendor Name is required — use the official company name as it appears on invoices. Preferred Vendor marks this supplier as a go-to source; preferred vendors are listed first in purchase order dropdowns.">
|
||||
<i class="bi bi-question-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
ViewData["Title"] = Model.CompanyName;
|
||||
ViewData["PageIcon"] = "bi-truck";
|
||||
ViewData["PageHelpTitle"] = "Vendor Details";
|
||||
ViewData["PageHelpContent"] = "Full detail for this vendor. Use Quick Actions to view or add inventory items assigned to this supplier, or create a purchase order. Business Information shows your account number at the vendor and their payment terms — these pre-fill on bills and purchase orders.";
|
||||
ViewData["PageHelpContent"] = "Full detail for this vendor. Use Quick Actions to view or add inventory items assigned to this supplier, or create a purchase order. Business Information shows your account number at the vendor and their payment terms — these pre-fill on bills and purchase orders.";
|
||||
}
|
||||
|
||||
<div class="row justify-content-center">
|
||||
@@ -173,7 +173,7 @@
|
||||
<a tabindex="0" class="help-icon" role="button"
|
||||
data-bs-toggle="popover" data-bs-placement="right" data-bs-trigger="focus"
|
||||
data-bs-title="Business Information"
|
||||
data-bs-content="Account Number is your customer account at this vendor — printed on purchase orders. Payment Terms drives the due date on bills (e.g. Net 30 = 30 days after receipt date). Credit Limit is informational only and does not block orders.">
|
||||
data-bs-content="Account Number is your customer account at this vendor — printed on purchase orders. Payment Terms drives the due date on bills (e.g. Net 30 = 30 days after receipt date). Credit Limit is informational only and does not block orders.">
|
||||
<i class="bi bi-question-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
ViewData["Title"] = "Edit Vendor";
|
||||
ViewData["PageIcon"] = "bi-truck";
|
||||
ViewData["PageHelpTitle"] = "Edit Vendor";
|
||||
ViewData["PageHelpContent"] = "Update vendor details here. Changing Default Expense Account or Payment Terms will apply to new bills going forward — existing bills are not affected. Marking a vendor Inactive hides them from purchase order pickers but preserves all history.";
|
||||
ViewData["PageHelpContent"] = "Update vendor details here. Changing Default Expense Account or Payment Terms will apply to new bills going forward — existing bills are not affected. Marking a vendor Inactive hides them from purchase order pickers but preserves all history.";
|
||||
}
|
||||
|
||||
<div class="row justify-content-center">
|
||||
@@ -146,7 +146,7 @@
|
||||
<a tabindex="0" class="help-icon" role="button"
|
||||
data-bs-toggle="popover" data-bs-placement="right" data-bs-trigger="focus"
|
||||
data-bs-title="Business Information"
|
||||
data-bs-content="Account Number is your customer account number at the vendor — appears on POs and bills. Default Expense Account pre-fills the expense category on bills created from this vendor's POs. Payment Terms sets the bill due date (Net 30 = 30 days after receipt). Credit Limit is informational only.">
|
||||
data-bs-content="Account Number is your customer account number at the vendor — appears on POs and bills. Default Expense Account pre-fills the expense category on bills created from this vendor's POs. Payment Terms sets the bill due date (Net 30 = 30 days after receipt). Credit Limit is informational only.">
|
||||
<i class="bi bi-question-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
ViewData["Title"] = "Vendors";
|
||||
ViewData["PageIcon"] = "bi-truck";
|
||||
ViewData["PageHelpTitle"] = "Vendors";
|
||||
ViewData["PageHelpContent"] = "Your supplier directory — companies you buy powder, consumables, and materials from. Preferred Vendors (★) are highlighted for quick selection in purchase orders. Inventory Items shows how many items are assigned to each vendor. Inactive vendors are hidden from pickers but preserved in history. Click any row to view full details.";
|
||||
ViewData["PageHelpContent"] = "Your supplier directory — companies you buy powder, consumables, and materials from. Preferred Vendors (★) are highlighted for quick selection in purchase orders. Inventory Items shows how many items are assigned to each vendor. Inactive vendors are hidden from pickers but preserved in history. Click any row to view full details.";
|
||||
}
|
||||
|
||||
<div class="d-flex justify-content-end align-items-center mb-4">
|
||||
@@ -70,9 +70,9 @@
|
||||
<td>
|
||||
<strong>@vendor.CompanyName</strong>
|
||||
</td>
|
||||
<td>@(vendor.ContactName ?? "—")</td>
|
||||
<td>@(vendor.Phone ?? "—")</td>
|
||||
<td>@(vendor.Email ?? "—")</td>
|
||||
<td>@(vendor.ContactName ?? "—")</td>
|
||||
<td>@(vendor.Phone ?? "—")</td>
|
||||
<td>@(vendor.Email ?? "—")</td>
|
||||
<td>
|
||||
@if (vendor.InventoryItemCount > 0)
|
||||
{
|
||||
@@ -90,7 +90,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="text-muted">—</span>
|
||||
<span class="text-muted">—</span>
|
||||
}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
@model PowderCoating.Application.DTOs.Accounting.VendorStatementDto
|
||||
@{
|
||||
ViewData["Title"] = $"Statement – {Model.VendorName}";
|
||||
ViewData["Title"] = $"Statement – {Model.VendorName}";
|
||||
}
|
||||
|
||||
<div class="d-flex justify-content-between align-items-start mb-4 flex-wrap gap-2">
|
||||
<div>
|
||||
<h4 class="mb-0">Vendor Statement</h4>
|
||||
<p class="text-muted mb-0">@Model.VendorName · @Model.From.ToString("MMM d, yyyy") – @Model.To.ToString("MMM d, yyyy")</p>
|
||||
<p class="text-muted mb-0">@Model.VendorName · @Model.From.ToString("MMM d, yyyy") – @Model.To.ToString("MMM d, yyyy")</p>
|
||||
</div>
|
||||
<div class="d-flex gap-2 flex-wrap">
|
||||
<form method="get" class="d-flex gap-2 align-items-center">
|
||||
|
||||
Reference in New Issue
Block a user