From 34a72c7f7198b652fa885e353be5badcb92c03e2 Mon Sep 17 00:00:00 2001 From: Aji Setiaji Date: Tue, 8 Jul 2025 17:36:04 +1400 Subject: [PATCH] penambahan child po item --- note.md | 567 ++++++++++++++++++ src/components/Sidebar.svelte | 8 + .../backoffice/purchaseorder/+page.svelte | 4 +- .../purchaseorder/poitem/+page.svelte | 450 ++++++++++++++ 4 files changed, 1027 insertions(+), 2 deletions(-) create mode 100644 note.md create mode 100644 src/routes/backoffice/purchaseorder/poitem/+page.svelte diff --git a/note.md b/note.md new file mode 100644 index 0000000..ad03ddf --- /dev/null +++ b/note.md @@ -0,0 +1,567 @@ + + +
+
+
+

+ 🚗 Transport Request List +

+

+ Manage and track all transport requests efficiently. +

+
+
+ { + const searchTerm = ( + e.target as HTMLInputElement + ).value.toLowerCase(); + fetchTransport(null, searchTerm, "created_at", "desc"); + }} + /> + + + + +
+
+
+ + + + {#each columns as col} + {#if col.key === "guest_name"} + + {:else} + + {/if} + {/each} + + + + {#each paginatedRows as row} + + {#each columns as col} + {#if col.key === "guest_name"} + + {:else if col.key === "requested_date"} + + {:else if col.key === "pickup_date"} + + {:else if col.key === "created_at"} + + {:else if col.key === "area"} + + {:else if col.key === "request_things"} + + {:else if col.key === "additional_notes"} + + {:else if col.key === "requested_by"} + + {:else if col.key === "vendor_email_address"} + + {:else if col.key === "actions"} + + {:else} + + {/if} + {/each} + + {/each} + +
+ {col.title} + + {col.title} +
+ {row[col.key as keyof Transport]} + + {row[col.key as keyof Transport] + ? new Date( + row[ + col.key as keyof Transport + ] as string | number | Date, + ).toLocaleDateString() + : "N/A"} + + {new Date( + new Date( + row[col.key as keyof Transport] as + | string + | number + | Date, + ).toLocaleDateString() || "N/A", + ).toLocaleDateString()} + + {row[col.key as keyof Transport] + ? new Date( + row[ + col.key as keyof Transport + ] as string | number | Date, + ).toLocaleDateString() + : "N/A"} + + {row[col.key as keyof Transport]} + + {row[col.key as keyof Transport]} + + {row[col.key as keyof Transport] || + "No additional notes"} + + {row[col.key as keyof Transport]} + + {row[col.key as keyof TransportDisplay] || + "No email provided"} + + + + + {row[col.key as keyof TransportDisplay]} +
+
+ + +
+
+ Showing {(currentPage - 1) * rowsPerPage + 1}– + {Math.min(currentPage * rowsPerPage, allRows.length)} of {allRows.length} +
+
+ + {#each Array(totalPages) + .fill(0) + .map((_, i) => i + 1) as page} + + {/each} + +
+
+
+ +{#if showModal} +
+
+

+ {isEditing ? "Edit Transport Request" : "New Transport Request"} +

+
+ {#each formColumns as col} +
+ + {#if col.key === "requested_date" || col.key === "pickup_date"} + + {:else if col.key === "area"} + + {:else if col.key === "request_things"} + + {:else} + + {/if} + {#if $formErrors[col.key]} +

+ {$formErrors[col.key]} +

+ {/if} +
+ {/each} +
+ + + {#if $formErrors.additional_notes} +

+ {$formErrors.additional_notes} +

+ {/if} +
+
+ + +
+
+
+
+{/if} diff --git a/src/components/Sidebar.svelte b/src/components/Sidebar.svelte index 329c939..2fb13d3 100644 --- a/src/components/Sidebar.svelte +++ b/src/components/Sidebar.svelte @@ -85,6 +85,14 @@ icon: "📦", url: "/backoffice/purchaseorder", roles: ["it", "guest", "accounting", "ga", "office", "hm", "vm"], + sub: [ + { + name: "PO Item", + icon: "📋", + url: "/backoffice/purchaseorder/poitem", + roles: ["it", "ga", "office", "hm", "vm", "accounting"], + }, + ], }, { name: "Timesheets", diff --git a/src/routes/backoffice/purchaseorder/+page.svelte b/src/routes/backoffice/purchaseorder/+page.svelte index e39ff8b..7c22ce1 100644 --- a/src/routes/backoffice/purchaseorder/+page.svelte +++ b/src/routes/backoffice/purchaseorder/+page.svelte @@ -1270,7 +1270,7 @@
{/each} + +
+ +
+ + + + {#each columns as col} + {#if col.key === "guest_name"} + + {:else} + + {/if} + {/each} + + + + {#each allRows as row} + + {#each columns as col} + {#if col.key === "item_name"} + + {:else if col.key === "created_at"} + + {:else if col.key === "actions"} + + {:else} + + {/if} + {/each} + + {/each} + +
+ {col.title} + + {col.title} +
+ {row[col.key as keyof POItem]} + + {row[col.key as keyof POItem] + ? new Date( + row[ + col.key as keyof POItem + ] as string | number | Date, + ).toLocaleDateString() + : "N/A"} + + + + + {row[col.key as keyof TransportDisplay]} +
+
+ + +
+
+ Showing {(currentPage - 1) * rowsPerPage + 1}– + {Math.min(currentPage * rowsPerPage, totalItems)} of {totalItems} items +
+
+ + {#each pageRange(totalPages, currentPage) as page} + {#if page === "..."} + ... + {:else} + + {/if} + {/each} + +
+
+ + +{#if showModal} +
+
+

+ {isEditing ? "Edit PO Item" : "New Item Request"} +

+
+ {#each formColumns as col} +
+ + + {#if $formErrors[col.key]} +

+ {$formErrors[col.key]} +

+ {/if} +
+ {/each} +
+ + +
+
+
+
+{/if}