diff --git a/App/pelagia-portal/app/(portal)/admin/accounts/page.tsx b/App/pelagia-portal/app/(portal)/admin/accounts/page.tsx index 21e86a8..ac1ad56 100644 --- a/App/pelagia-portal/app/(portal)/admin/accounts/page.tsx +++ b/App/pelagia-portal/app/(portal)/admin/accounts/page.tsx @@ -20,7 +20,7 @@ export default async function AdminAccountsPage() { return (
-

Account / Cost Centre Management

+

Account Management

diff --git a/App/pelagia-portal/app/(portal)/admin/sites/[id]/page.tsx b/App/pelagia-portal/app/(portal)/admin/sites/[id]/page.tsx index 1023d1e..8cd329d 100644 --- a/App/pelagia-portal/app/(portal)/admin/sites/[id]/page.tsx +++ b/App/pelagia-portal/app/(portal)/admin/sites/[id]/page.tsx @@ -110,7 +110,7 @@ export default async function SiteDetailPage({ params }: Props) { {/* Summary cards */}
-

Assigned Vessels

+

Assigned Cost Centres

{site.vessels.length}

diff --git a/App/pelagia-portal/app/(portal)/admin/sites/page.tsx b/App/pelagia-portal/app/(portal)/admin/sites/page.tsx index f1b3e06..ec966cc 100644 --- a/App/pelagia-portal/app/(portal)/admin/sites/page.tsx +++ b/App/pelagia-portal/app/(portal)/admin/sites/page.tsx @@ -41,7 +41,7 @@ export default async function SitesPage() { Name Code Address - Vessels + Cost Centres Items tracked Location Status diff --git a/App/pelagia-portal/app/(portal)/admin/vessels/[id]/page.tsx b/App/pelagia-portal/app/(portal)/admin/vessels/[id]/page.tsx index b18e7e2..8c6482a 100644 --- a/App/pelagia-portal/app/(portal)/admin/vessels/[id]/page.tsx +++ b/App/pelagia-portal/app/(portal)/admin/vessels/[id]/page.tsx @@ -11,7 +11,7 @@ interface Props { params: Promise<{ id: string }> } export async function generateMetadata({ params }: Props): Promise { const { id } = await params; const v = await db.vessel.findUnique({ where: { id }, select: { name: true } }); - return { title: v?.name ?? "Vessel Detail" }; + return { title: v?.name ?? "Cost Centre Detail" }; } export default async function VesselDetailPage({ params }: Props) { @@ -47,7 +47,7 @@ export default async function VesselDetailPage({ params }: Props) { return (
- Vessels + Cost Centres / {vessel.name}
@@ -63,7 +63,7 @@ export default async function VesselDetailPage({ params }: Props) {

{vessel.name}

{vessel.site && (

- Home port: {vessel.site.name} + Home site: {vessel.site.name}

)}
diff --git a/App/pelagia-portal/app/(portal)/admin/vessels/page.tsx b/App/pelagia-portal/app/(portal)/admin/vessels/page.tsx index f72598e..6c78e35 100644 --- a/App/pelagia-portal/app/(portal)/admin/vessels/page.tsx +++ b/App/pelagia-portal/app/(portal)/admin/vessels/page.tsx @@ -7,7 +7,7 @@ import { ConfirmDeleteButton } from "@/components/ui/confirm-delete-button"; import { deleteVessel } from "./actions"; import type { Metadata } from "next"; -export const metadata: Metadata = { title: "Vessel Management" }; +export const metadata: Metadata = { title: "Cost Centre Management" }; export default async function AdminVesselsPage() { const session = await auth(); @@ -20,7 +20,7 @@ export default async function AdminVesselsPage() { return (
-

Vessel Management

+

Cost Centre Management

@@ -63,7 +63,7 @@ export default async function AdminVesselsPage() { ))} {vessels.length === 0 && ( - No vessels yet. + No cost centres yet. )} diff --git a/App/pelagia-portal/app/(portal)/admin/vessels/vessel-form.tsx b/App/pelagia-portal/app/(portal)/admin/vessels/vessel-form.tsx index 15470bd..c9930b9 100644 --- a/App/pelagia-portal/app/(portal)/admin/vessels/vessel-form.tsx +++ b/App/pelagia-portal/app/(portal)/admin/vessels/vessel-form.tsx @@ -16,7 +16,7 @@ function VesselFormFields({ vessel }: { vessel?: VesselRow }) { return (
- +
@@ -49,9 +49,9 @@ export function AddVesselButton() { <> - setOpen(false)}> + setOpen(false)}>
{error &&

{error}

} @@ -62,7 +62,7 @@ export function AddVesselButton() {
@@ -108,7 +108,7 @@ export function EditVesselButton({ vessel }: { vessel: VesselRow }) { {toggling ? "…" : vessel.isActive ? "Deactivate" : "Activate"}
- setOpen(false)}> + setOpen(false)}>
{error &&

{error}

} diff --git a/App/pelagia-portal/app/(portal)/approvals/[id]/manager-edit-po-form.tsx b/App/pelagia-portal/app/(portal)/approvals/[id]/manager-edit-po-form.tsx index b78d630..d86e689 100644 --- a/App/pelagia-portal/app/(portal)/approvals/[id]/manager-edit-po-form.tsx +++ b/App/pelagia-portal/app/(portal)/approvals/[id]/manager-edit-po-form.tsx @@ -150,13 +150,13 @@ export function ManagerEditPoForm({ po, vessels, accounts, vendors }: Props) {
- +
- + diff --git a/App/pelagia-portal/app/(portal)/approvals/approvals-search.tsx b/App/pelagia-portal/app/(portal)/approvals/approvals-search.tsx index 98a58e0..cde840e 100644 --- a/App/pelagia-portal/app/(portal)/approvals/approvals-search.tsx +++ b/App/pelagia-portal/app/(portal)/approvals/approvals-search.tsx @@ -43,10 +43,10 @@ export function ApprovalsSearch({ vessels }: Props) { className="w-full rounded-lg border border-neutral-300 px-3 py-2 text-sm focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20" />
- +
diff --git a/App/pelagia-portal/app/(portal)/approvals/page.tsx b/App/pelagia-portal/app/(portal)/approvals/page.tsx index 3bde612..41dc9c5 100644 --- a/App/pelagia-portal/app/(portal)/approvals/page.tsx +++ b/App/pelagia-portal/app/(portal)/approvals/page.tsx @@ -75,7 +75,7 @@ export default async function ApprovalsPage({ searchParams }: Props) { PO Number Title Submitter - Vessel + Cost Centre Amount Submitted diff --git a/App/pelagia-portal/app/(portal)/dashboard/page.tsx b/App/pelagia-portal/app/(portal)/dashboard/page.tsx index 77b0a7d..878734a 100644 --- a/App/pelagia-portal/app/(portal)/dashboard/page.tsx +++ b/App/pelagia-portal/app/(portal)/dashboard/page.tsx @@ -190,7 +190,7 @@ async function ManagerDashboard() { PO Title - Vessel + Cost Centre Status Amount Approved diff --git a/App/pelagia-portal/app/(portal)/history/history-filters.tsx b/App/pelagia-portal/app/(portal)/history/history-filters.tsx index f3bdd28..16b4132 100644 --- a/App/pelagia-portal/app/(portal)/history/history-filters.tsx +++ b/App/pelagia-portal/app/(portal)/history/history-filters.tsx @@ -60,10 +60,10 @@ export function HistoryFilters({ vessels }: Props) { className="w-full rounded-lg border border-neutral-300 px-3 py-2 text-sm focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20" />
- +
diff --git a/App/pelagia-portal/app/(portal)/history/page.tsx b/App/pelagia-portal/app/(portal)/history/page.tsx index f87c73a..e30f9c8 100644 --- a/App/pelagia-portal/app/(portal)/history/page.tsx +++ b/App/pelagia-portal/app/(portal)/history/page.tsx @@ -87,7 +87,7 @@ export default async function HistoryPage({ searchParams }: Props) { PO Number Title - Vessel + Cost Centre Submitter Status Amount diff --git a/App/pelagia-portal/app/(portal)/my-orders/page.tsx b/App/pelagia-portal/app/(portal)/my-orders/page.tsx index 0d578f3..6c75b15 100644 --- a/App/pelagia-portal/app/(portal)/my-orders/page.tsx +++ b/App/pelagia-portal/app/(portal)/my-orders/page.tsx @@ -80,7 +80,7 @@ function PoTable({ title, rows, className = "" }: { title: string; rows: PoRow[] PO Number Title - Vessel + Cost Centre Status Amount Updated diff --git a/App/pelagia-portal/app/(portal)/po/[id]/edit/edit-po-form.tsx b/App/pelagia-portal/app/(portal)/po/[id]/edit/edit-po-form.tsx index ac38071..519bd01 100644 --- a/App/pelagia-portal/app/(portal)/po/[id]/edit/edit-po-form.tsx +++ b/App/pelagia-portal/app/(portal)/po/[id]/edit/edit-po-form.tsx @@ -122,7 +122,7 @@ export function EditPoForm({ po, vessels, accounts, vendors }: Props) {
diff --git a/App/pelagia-portal/app/(portal)/po/import/import-form.tsx b/App/pelagia-portal/app/(portal)/po/import/import-form.tsx index 9e2e02e..df5540a 100644 --- a/App/pelagia-portal/app/(portal)/po/import/import-form.tsx +++ b/App/pelagia-portal/app/(portal)/po/import/import-form.tsx @@ -179,7 +179,7 @@ export function ImportForm({ vessels, accounts, vendors }: Props) {
- + {vessels.map((v) => )}
@@ -143,7 +143,7 @@ export function NewPoForm({ vessels, accounts, vendors }: Props) {

Requisition

- +
diff --git a/App/pelagia-portal/app/api/po/[id]/export/route.ts b/App/pelagia-portal/app/api/po/[id]/export/route.ts index 2f8efc5..7e13578 100644 --- a/App/pelagia-portal/app/api/po/[id]/export/route.ts +++ b/App/pelagia-portal/app/api/po/[id]/export/route.ts @@ -217,12 +217,12 @@ export async function GET(request: NextRequest, { params }: Props) { ws.mergeCells("G6:H6"); sc(6, 9, piDate, { font: fBase, border: bordAll, align: alignL }); - // ══ ROW 7: Vessel Owner / Budget / Requested By ═══════════════════════ + // ══ ROW 7: Cost Centre / Account / Requested By ═══════════════════════ ws.getRow(7).height = 14; - sc(7, 1, "Vessel Owner Name", { font: fBold, fill: fillLbl, border: bordAll, align: alignL }); + sc(7, 1, "Cost Centre", { font: fBold, fill: fillLbl, border: bordAll, align: alignL }); ws.mergeCells("A7:B7"); sc(7, 3, "Pelagia Marine Services Pvt. Ltd.", { font: fBase, border: bordAll, align: alignL }); - sc(7, 4, "Budget head", { font: fBold, fill: fillLbl, border: bordAll, align: alignC }); + sc(7, 4, "Account", { font: fBold, fill: fillLbl, border: bordAll, align: alignC }); ws.mergeCells("D7:E7"); sc(7, 6, po.account.code, { font: fBase, border: bordAll, align: alignC }); sc(7, 7, "Requested By", { font: fBold, fill: fillLbl, border: bordAll, align: alignC }); @@ -231,7 +231,7 @@ export async function GET(request: NextRequest, { params }: Props) { // ══ ROW 8: Requisition / Approved By ═════════════════════════════════ ws.getRow(8).height = 14; - sc(8, 1, "Vessel/Office Requisition Number", { font: fBold, fill: fillLbl, border: bordAll, align: alignL }); + sc(8, 1, "Cost Centre/Office Requisition Number", { font: fBold, fill: fillLbl, border: bordAll, align: alignL }); ws.mergeCells("A8:B8"); sc(8, 3, reqNo, { font: fBase, border: bordAll, align: alignL }); sc(8, 4, "Reqn. Date", { font: fBold, fill: fillLbl, border: bordAll, align: alignC }); @@ -537,18 +537,18 @@ export async function GET(request: NextRequest, { params }: Props) { - + - + - + - + diff --git a/App/pelagia-portal/app/api/reports/export/route.ts b/App/pelagia-portal/app/api/reports/export/route.ts index 1012d87..941e5c7 100644 --- a/App/pelagia-portal/app/api/reports/export/route.ts +++ b/App/pelagia-portal/app/api/reports/export/route.ts @@ -82,7 +82,7 @@ export async function GET(request: NextRequest) {
Vessel Owner NameCost Centre Pelagia Marine Services Pvt. Ltd.Budget headAccount ${po.account.code} Requested By ${po.submitter.name}
Vessel/Office Requisition NumberCost Centre/Office Requisition Number ${reqNo} Reqn. Date ${reqDate}
- + @@ -98,7 +98,7 @@ export async function GET(request: NextRequest) { } // Default: CSV - const headers = ["PO Number", "Title", "Status", "Vessel", "Account", "Vendor", "Submitter", "Amount", "Currency", "Created"]; + const headers = ["PO Number", "Title", "Status", "Cost Centre", "Account", "Vendor", "Submitter", "Amount", "Currency", "Created"]; const csvRows = orders.map((po) => [ po.poNumber, `"${po.title.replace(/"/g, '""')}"`, diff --git a/App/pelagia-portal/components/dashboard/spend-charts.tsx b/App/pelagia-portal/components/dashboard/spend-charts.tsx index 9ee6fc7..c31b0e5 100644 --- a/App/pelagia-portal/components/dashboard/spend-charts.tsx +++ b/App/pelagia-portal/components/dashboard/spend-charts.tsx @@ -40,7 +40,7 @@ export function SpendCharts({ vesselData, monthData }: Props) {
{vesselData.length > 0 && (
-

Approved Spend by Vessel (Top 5)

+

Approved Spend by Cost Centre (Top 5)

diff --git a/App/pelagia-portal/components/layout/sidebar.tsx b/App/pelagia-portal/components/layout/sidebar.tsx index deb814d..10813b3 100644 --- a/App/pelagia-portal/components/layout/sidebar.tsx +++ b/App/pelagia-portal/components/layout/sidebar.tsx @@ -43,7 +43,7 @@ const NAV_ITEMS: NavItem[] = [ const INVENTORY_ITEMS: NavItem[] = [ { href: "/admin/vendors", label: "Vendors", icon: Store, roles: ["MANAGER", "ACCOUNTS", "ADMIN"] }, { href: "/admin/products", label: "Items", icon: Package, roles: ["MANAGER", "ADMIN"] }, - { href: "/admin/vessels", label: "Vessels", icon: Ship, roles: ["MANAGER", "ADMIN"] }, + { href: "/admin/vessels", label: "Cost Centres", icon: Ship, roles: ["MANAGER", "ADMIN"] }, { href: "/admin/sites", label: "Sites", icon: MapPin, roles: ["MANAGER", "ADMIN"] }, { href: "/inventory/cart", label: "Cart", icon: ShoppingCart, roles: ["MANAGER", "SUPERUSER", "TECHNICAL", "MANNING"] }, ]; diff --git a/App/pelagia-portal/components/po/po-detail.tsx b/App/pelagia-portal/components/po/po-detail.tsx index d14fece..7bc651a 100644 --- a/App/pelagia-portal/components/po/po-detail.tsx +++ b/App/pelagia-portal/components/po/po-detail.tsx @@ -174,8 +174,8 @@ export async function PoDetail({ po, currentUserId, currentRole, readOnly = fals

Order Details

-
Vessel
{po.vessel.name}
-
Account / Budget Head
{po.account.name} ({po.account.code})
+
Cost Centre
{po.vessel?.name ?? "—"}
+
Account
{po.account.name} ({po.account.code})
Requested By
{po.submitter.name}
{approvalAction && (
Approved By
{approvalAction.actor.name}
diff --git a/App/pelagia-portal/lib/validations/po.ts b/App/pelagia-portal/lib/validations/po.ts index 2f24fb6..bfb302d 100644 --- a/App/pelagia-portal/lib/validations/po.ts +++ b/App/pelagia-portal/lib/validations/po.ts @@ -29,7 +29,7 @@ export const TC_DEFAULTS = { export const createPoSchema = z.object({ title: z.string().min(1, "Title is required").max(200), - vesselId: z.string().min(1, "Vessel is required"), + vesselId: z.string().min(1, "Cost Centre is required"), accountId: z.string().min(1, "Account is required"), projectCode: z.string().optional(), dateRequired: z.string().optional(),
PO NumberTitleStatusVesselPO NumberTitleStatusCost Centre SubmitterVendorAmountCreated