📋 Inventory Management

Manage your inventory items, track stock levels, and ensure everything is in order.

Note : Tekan tombol Enter untuk menyimpan. ⚠️

{ const searchTerm = ( e.target as HTMLInputElement ).value.toLowerCase(); fetchInventory( searchTerm, selectedVillaId, selectedYear, sortBy, sortOrder, offset, limit, ); }} />
{#each columns as col} {#if col.key === "item_name"} {:else} {/if} {/each} {#each inventoryItems as item} {#each columns as col} {#if +col.key >= 1 && +col.key <= 12} {:else if col.key === "item_name"} {:else if col.key === "created_at" || col.key === "updated_at"} {:else if col.key === "actions"} {:else} {/if} {/each} {:else} {/each}
{col.title} {col.title}
{ const target = e.target as HTMLInputElement | null; if (!target) return; const value = Number(target.value); updateQtyMonth( item.id, +col.key, selectedYear || new Date().getFullYear(), value, ).then((success) => { if (success) { alert( `Quantity for ${item.item_name} in month ${col.key} updated successfully.`, ); } else { alert( `Failed to update quantity for ${item.item_name} in month ${col.key}.`, ); } }); }} /> {item.item_name} {item[col.key] !== undefined ? new Date( item[col.key] as | string | number | Date, ).toLocaleString() : "N/A"}
{item[col.key as keyof Inventory]}
No items found.
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 Item" : "New Item"}

{/if}