Compare commits

..

1430 Commits

Author SHA1 Message Date
ValdiANS 9d9b9d93db feat(FE-331): implement permission guard in closing 2025-12-24 09:41:48 +07:00
ValdiANS f41899dbc9 feat(FE-331): add /report route to ROUTE_PERMISSIONS 2025-12-24 09:24:16 +07:00
ValdiANS de63b6721a feat(FE-331): implement permission guard in inventory 2025-12-23 16:40:32 +07:00
ValdiANS a200dac23c chore(FE-331): fix inventory route path 2025-12-23 16:39:08 +07:00
ValdiANS fcfd2fb576 Merge branch 'feat/FE/US-304/permission-guard' into feat/FE/US-304/permission-guard-master-data 2025-12-23 15:55:50 +07:00
ValdiANS 2c28d0a831 Merge branch 'feat/FE/US-304/permission-guard' into feat/FE/US-304/permission-guard-master-data 2025-12-23 15:53:05 +07:00
ValdiANS addfaff692 feat(FE-331): implement permission guard in master data 2025-12-23 12:10:07 +07:00
ValdiANS ecdbb764d5 feat(FE-331): only show menu if user has the permission 2025-12-23 12:09:49 +07:00
ValdiANS a3be3de338 feat(FE-331): return PermissionNotFound component if user is not permitted 2025-12-23 12:09:06 +07:00
ValdiANS 9e895af62a chore: refresh user data every 13 minutes 2025-12-23 12:08:39 +07:00
ValdiANS 1f9992c1c8 feat(FE-331): add permissions to MAIN_DRAWER_LINKS 2025-12-23 12:08:16 +07:00
ValdiANS 574fb3b371 feat(FE-331): create ROUTE_PERMISSION constant 2025-12-23 12:07:55 +07:00
ValdiANS 4643a39c3e feat(FE-331): create RequirePermission helper component 2025-12-23 12:07:38 +07:00
ValdiANS 88b8767ca4 chore: lint 2025-12-23 12:07:24 +07:00
ValdiANS de19cc5de2 feat(FE-331): create PermissionNotFound component 2025-12-23 12:07:14 +07:00
Adnan Zahir a4b9b3fd2f Merge branch 'feat/FE/US-334/expedition-hpp-report' into 'development'
[FEAT/FE][US#334] Slicing and Integrate API Expedition HPP Report Table

See merge request mbugroup/lti-web-client!111
2025-12-23 10:57:59 +07:00
Adnan Zahir b91a199d13 Merge branch 'feat/FE/US-339/purchase-report' into 'development'
[FEAT/FE][US#339] Slicing and Integrate API Purchase Report Page

See merge request mbugroup/lti-web-client!109
2025-12-23 10:57:46 +07:00
rstubryan bf16d259bd Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-334/expedition-hpp-report 2025-12-23 10:43:56 +07:00
rstubryan 5ae299a4b5 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-339/purchase-report 2025-12-23 10:31:32 +07:00
Adnan Zahir c840f881bb Merge branch 'feat/FE/US-352/daily-kandang-hpp-report' into 'development'
[FEAT/FE][US#352] HPP Harian Per Kandang Report

See merge request mbugroup/lti-web-client!114
2025-12-23 10:20:10 +07:00
Adnan Zahir 6f16cf6deb Merge branch 'feat/FE/US-338/expense-report' into 'development'
[FEAT/FE][US#338] Expense Report

See merge request mbugroup/lti-web-client!110
2025-12-23 10:19:43 +07:00
Adnan Zahir 5b4bc136f2 Merge branch 'feat/FE/US-336/finance-report' into 'development'
[FEAT/FE][US#336] Reporting Closing Finance

See merge request mbugroup/lti-web-client!108
2025-12-23 10:19:02 +07:00
rstubryan 346d655406 refactor(FE): Upgrade xlsx and add HPP per kandang tab 2025-12-23 09:25:26 +07:00
rstubryan 5ff132070c Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-352/daily-kandang-hpp-report 2025-12-23 09:24:17 +07:00
randy-ar 398a09bf3b Merge branch 'development' into 'feat/FE/US-336/finance-report'
# Conflicts:
#   src/config/constant.ts
2025-12-23 02:22:41 +00:00
randy-ar 4e1315a027 Merge branch 'development' into 'feat/FE/US-338/expense-report'
# Conflicts:
#   src/components/pages/closing/ClosingDetail.tsx
2025-12-23 02:21:47 +00:00
Adnan Zahir dcf2acc799 Merge branch 'feat/FE/US-333/overhead-report' into 'development'
[FEAT/FE][US#333] Reporting Closing Overhead

See merge request mbugroup/lti-web-client!107
2025-12-22 17:45:56 +07:00
randy-ar 67a3ce2906 fix(FE): resolve conflict with branch development 2025-12-22 16:53:06 +07:00
randy-ar 1d28e80b66 fix(FE): resolve conflict with branch development 2025-12-22 16:45:18 +07:00
randy-ar 9dae6f1e95 fix(FE): resolve merge conflict with branch development 2025-12-22 16:34:49 +07:00
Adnan Zahir 4bc9926356 Merge branch 'feat/FE/US-335/production-data-report' into 'development'
[FEAT/FE][US#335] Production Data Report

See merge request mbugroup/lti-web-client!106
2025-12-22 15:38:54 +07:00
ValdiANS ea32056ca8 feat(FE-347): adjust getProductionData method 2025-12-22 15:29:39 +07:00
ValdiANS ddfdfe4d91 Merge branch 'development' into feat/FE/US-335/production-data-report 2025-12-22 15:28:01 +07:00
ValdiANS 7ea16d6a8a Merge branch 'development' into feat/FE/US-335/production-data-report 2025-12-22 15:23:15 +07:00
ValdiANS 206d6c0b4e Merge branch 'development' into feat/FE/US-335/production-data-report 2025-12-22 15:15:04 +07:00
Adnan Zahir 382721059a Merge branch 'feat/FE/US-340/marketing-report' into 'development'
[FEAT/FE][US#340] Marketing Report

See merge request mbugroup/lti-web-client!103
2025-12-22 14:47:12 +07:00
Rivaldi A N S 6a71828167 Merge branch 'feat/FE/US-352/TASK-355-356-357-slicing-and-integrate-kandang-hpp-daily-report-page' into 'feat/FE/US-352/daily-kandang-hpp-report'
[FEAT/FE][US#352/TASK-355-356-357] Slicing and Integrate API Hpp Harian Per Kandang Report

See merge request mbugroup/lti-web-client!113
2025-12-20 03:53:12 +00:00
rstubryan a5e79570c5 refactor(FE-356): Clarify 'Sisa Kg' label to specify Ayam 2025-12-20 10:30:11 +07:00
rstubryan 804aa700d3 feat(FE-356): Display egg production and HPP in PDF export 2025-12-20 10:26:18 +07:00
rstubryan 982a5d0d11 feat(FE-356): Display egg production and HPP in PDF export 2025-12-20 10:25:40 +07:00
rstubryan 478e9eb541 refactor(FE-356): Use summaryTotal and memoize per-weight summary 2025-12-20 10:18:50 +07:00
rstubryan 9e0631a415 feat(FE-355,357): Use summary totals and show egg metrics 2025-12-20 10:13:48 +07:00
rstubryan 18ca7d8a59 refactor(FE-357): Reference summary.total in footers 2025-12-20 09:50:19 +07:00
rstubryan eb8a1567c6 refactor(FE-355): Render weight-range summaries as table rows 2025-12-20 09:47:50 +07:00
rstubryan a0e63ea2d4 refactor(FE-355): Use flexRender and prepend default row in table 2025-12-20 09:37:42 +07:00
rstubryan 1ac35691ff refactor(FE-355): Move td classes into tr with [&_td] utilities 2025-12-20 09:32:35 +07:00
Rivaldi A N S f9aa254c18 Merge branch 'dev/randy' into 'feat/FE/US-338/expense-report'
[FIX/FE][US#338] Fixing Export PDF Using jspdf Library

See merge request mbugroup/lti-web-client!112
2025-12-20 02:17:37 +00:00
rstubryan c8effe4473 feat(FE-355,357): Render per-weight-range summary rows 2025-12-20 09:17:31 +07:00
rstubryan c230c8000b refactor(FE-355,356,257): Use API summary per_weight_range for HPP
reports
2025-12-20 08:52:34 +07:00
randy-ar a7267370a0 fix(FE): fix export report expense & fix report closing table view & fix project flock form set disable inofrmasi umum on edit 2025-12-19 17:20:02 +07:00
rstubryan daddebc0a6 refactor(FE-357): Refactor HppPerKandang types and add BaseMetadata 2025-12-19 16:30:06 +07:00
rstubryan 856d1f5c0c feat(FE): Filter supplier options by SAPRONAK category 2025-12-19 14:05:50 +07:00
rstubryan da5a577fde refactor(FE-357): Add key to summary table row 2025-12-19 13:46:02 +07:00
rstubryan c36d1ee153 feat(FE-355): Add custom row renderer to HppPerKandangTab 2025-12-19 13:40:41 +07:00
rstubryan 7259de8b14 feat(FE): Add renderCustomRow prop to Table 2025-12-19 12:56:25 +07:00
Rivaldi A N S 9e576cf444 Merge branch 'feat/FE/US-334/TASK-344-345-slicing-and-integrate-expedition-hpp-report-table' into 'feat/FE/US-334/expedition-hpp-report'
[FEAT/FE][US#334/TASK-344-345] Slicing and Integrate API Expedition HPP Report Table

See merge request mbugroup/lti-web-client!105
2025-12-19 03:33:05 +00:00
rstubryan d7b828cb47 chore(FE): Add xlsx@0.20.3 from SheetJS CDN 2025-12-19 10:24:16 +07:00
Rivaldi A N S f757e5f6ba Merge branch 'dev/randy' into 'feat/FE/US-338/expense-report'
[FEAT/FE][US#338] Expense Report

See merge request mbugroup/lti-web-client!104
2025-12-19 03:17:50 +00:00
rstubryan 7f694c7298 chore(FE): Bump Next.js to 15.5.9 2025-12-19 10:17:08 +07:00
Rivaldi A N S 5326fc918a Merge branch 'feat/FE/US-339/TASK-361-362-363-slicing-purchase-and-integrate-purchase-report-page' into 'feat/FE/US-339/purchase-report'
[FEAT/FE][US#339/TASK-361-362-363-367] Slicing and Integrate API Purchase Report Page

See merge request mbugroup/lti-web-client!101
2025-12-19 03:06:04 +00:00
Rivaldi A N S 6658312427 Merge branch 'dev/randy' into 'feat/FE/US-336/finance-report'
[FEAT/FE][US#336] Reporting Closing Finance

See merge request mbugroup/lti-web-client!100
2025-12-19 02:51:28 +00:00
Rivaldi A N S de73c626b1 Merge branch 'dev/randy' into 'feat/FE/US-333/overhead-report'
[FEAT/FE][US#333] Reporting Closing Overhead

See merge request mbugroup/lti-web-client!99
2025-12-19 02:47:10 +00:00
ValdiANS faaa10b74b chore(FE-347): update ClosingProductionData type 2025-12-19 09:39:56 +07:00
ValdiANS d66eaf08c0 chore(FE-347): set return type for getProductionData method 2025-12-19 09:39:43 +07:00
ValdiANS a6a6ff9f72 feat: create dummyClosingProductionData 2025-12-19 09:38:57 +07:00
ValdiANS 5a21a3b44c chore(FE-347): adjust UI based on updated ClosingProductionData type 2025-12-19 09:38:39 +07:00
rstubryan 00e0126e42 refactor(FE-357): Use string weights and parse floats for filters 2025-12-18 20:35:47 +07:00
rstubryan 2f23755510 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-352/TASK-355-356-357-slicing-and-integrate-kandang-hpp-daily-report-page 2025-12-18 20:27:08 +07:00
rstubryan 996e132660 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-339/TASK-361-362-363-slicing-purchase-and-integrate-purchase-report-page 2025-12-18 20:18:02 +07:00
rstubryan e3eda4f5e4 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-334/TASK-344-345-slicing-and-integrate-expedition-hpp-report-table 2025-12-18 20:15:19 +07:00
ValdiANS 7cc616ff41 Merge branch 'development' into feat/FE/US-335/production-data-report 2025-12-18 19:29:27 +07:00
randy-ar 0b75d68494 Merge branch 'development' of https://gitlab.com/mbugroup/lti-web-client into dev/randy 2025-12-18 19:01:48 +07:00
randy-ar 83224e046b fix(FE): fix submenu stock product name 2025-12-18 19:00:30 +07:00
ValdiANS 096a8d394e Merge branch 'development' into feat/FE/US-335/production-data-report 2025-12-18 18:50:22 +07:00
randy-ar 11bf6ad760 feat(FE): adding xlsx package 2025-12-18 18:14:56 +07:00
randy-ar c8a834f84a feat(FE): adding export xlsx for report expense, change report data fetching, adding progress bar 2025-12-18 18:13:27 +07:00
kris ead5ba759d Update .gitlab-ci.yml file 2025-12-18 10:00:38 +00:00
rstubryan 8ceca2cc59 refactor(FE-345): Rename CostOfRevenueExpedition to HppExpedition 2025-12-18 16:38:39 +07:00
rstubryan 8dc23f83cd refactor(FE-335): Rename expedition HPP types and update usages 2025-12-18 16:26:09 +07:00
Rivaldi A N S 57f53b0a04 Merge branch 'feat/FE/US-340/TASK-364-365-368-marketing-report' into 'feat/FE/US-340/marketing-report'
[FEAT/FE][US#340/TASK#364-365-368] Marketing Report

See merge request mbugroup/lti-web-client!102
2025-12-18 09:25:46 +00:00
ValdiANS 7e0aa4f790 feat(FE-365): create marketing report types 2025-12-18 16:19:30 +07:00
ValdiANS 2fe4ec981c chore: remove double declaration 2025-12-18 16:18:25 +07:00
ValdiANS cf41fbfdaf feat(FE-365): create Marketing Report API Service 2025-12-18 16:18:11 +07:00
ValdiANS 86cef78a12 feat(FE-347): create product data dummy data 2025-12-18 16:13:37 +07:00
ValdiANS fa63bd8ff9 feat: create marketing-report.dummy.ts for marketing report dummy data 2025-12-18 16:12:19 +07:00
ValdiANS d9b41a6760 feat: add laporan menu, FILTER_TYPE_OPTIONS, and MARKETING_TYPE_OPTIONS 2025-12-18 16:11:59 +07:00
ValdiANS c9cf33f1ad feat(FE-364): create MarketingReportContent component 2025-12-18 16:10:10 +07:00
ValdiANS 33d8d2aa2a feat(FE-364): create DailyMarketingsTable component 2025-12-18 16:09:34 +07:00
ValdiANS 61d85154fd feat(FE-368): create DailyMarketingReportPDF component 2025-12-18 16:08:46 +07:00
ValdiANS 466ea47121 feat(FE-364): create DailyMarketingReportContent component 2025-12-18 16:08:15 +07:00
ValdiANS 3a35c72e06 feat: add isLoading prop 2025-12-18 16:07:19 +07:00
ValdiANS 09d36f504b feat: refresh user data every 13 minutes 2025-12-18 16:07:04 +07:00
ValdiANS b9b7e45bc7 chore: update Dropdown component 2025-12-18 16:06:48 +07:00
ValdiANS e49c247f02 chore: update Tabs component 2025-12-18 16:06:41 +07:00
ValdiANS b8c6f94db8 feat(FE-364): create Marketing Report page 2025-12-18 16:06:19 +07:00
ValdiANS 5def3c9f17 chore: update next version and install xlsx 2025-12-18 16:04:43 +07:00
rstubryan 447b8067f7 refactor(FE-345): Rename hpp-ekspedisi endpoint to expedition-hpp 2025-12-18 15:55:20 +07:00
rstubryan 4a8f2b1e1d feat(FE-345): Add HPP expedition types and API method 2025-12-18 15:49:01 +07:00
rstubryan 36389bae2a refactor(FE-364): Refactor purchases export to use supplier reports 2025-12-18 15:11:34 +07:00
rstubryan d001b05c4e refactor(FE-361,363,364): Use per-supplier report arrays for export 2025-12-18 14:58:54 +07:00
rstubryan 20494657c6 refactor(FE-363): Extract row and summary types for logistic report 2025-12-18 14:35:10 +07:00
rstubryan 2d8e479b6c refactor(FE-363): Switch LogisticApi service to reports endpoint 2025-12-18 14:16:00 +07:00
rstubryan fef7f0e29b refactor(FE-363): Use relative endpoint for logistic reports 2025-12-18 13:59:11 +07:00
rstubryan 81d242bd1d refactor(FE-361,363): Add sort order selector to PurchasesPerSupplierTab 2025-12-18 13:57:58 +07:00
rstubryan 1be596921a refactor(FE-363): Fetch export data on demand via callback 2025-12-18 13:50:38 +07:00
rstubryan 8fb1ccbdce refactor(FE-364): Add hyphen before timestamp in export filenames 2025-12-18 13:40:26 +07:00
rstubryan 85fddcb19a refactor(FE-364): Timestamp purchases-per-supplier export filenames 2025-12-18 13:39:05 +07:00
rstubryan 915e68f755 refactor(FE-363): Send joined filter params to logistic report API 2025-12-18 13:35:40 +07:00
rstubryan 87adbf8547 refactor(FE-363): Accept array filters in logistic purchase report 2025-12-18 13:31:08 +07:00
rstubryan e8492f87ba refactor(FE-364): Enable multi-select filters for purchases report 2025-12-18 13:28:00 +07:00
rstubryan ceae338c73 refactor(FE-356): Include period in export filenames 2025-12-18 13:10:21 +07:00
rstubryan fa7824224c refactor(FE-356): Use timestamped filename for HPP export 2025-12-18 13:05:01 +07:00
rstubryan 6b30457ec2 feat(FE-356): Include filter details in export header 2025-12-18 13:02:16 +07:00
rstubryan 843fa6ee7a refactor(FE-357): Make area/location/kandang filters multi-select 2025-12-18 12:56:05 +07:00
randy-ar a935ffd9f5 fix(FE): fixing floating button & revert require auth component 2025-12-18 11:33:18 +07:00
rstubryan 1de98db4ba refactor(FE-361): Hide unused logistic tabs and adjust card 2025-12-18 11:31:05 +07:00
rstubryan f844c9ff2c refactor(FE-357): Use relative URL for marketing sale reports 2025-12-18 11:19:23 +07:00
rstubryan 83fc92d48b refactor(FE-356): Refactor weight-range grouping and format currency 2025-12-18 11:12:30 +07:00
rstubryan 4edd4f1285 feat(FE-356): Add egg production and HPP fields to PDF export 2025-12-18 09:57:21 +07:00
rstubryan cc3765abcd refactor(FE-356): Add egg production and pricing columns 2025-12-18 09:50:11 +07:00
rstubryan 3497a6346c refactor(FE-357): Deduplicate totals and supplier aggregation 2025-12-18 09:47:52 +07:00
rstubryan 69b4ca455e refactor(FE-355): Guard HPP total calculation for empty data 2025-12-18 09:33:13 +07:00
rstubryan 320bc52244 refactor(FE-355,357): Show HPP and average DOC totals in table footer 2025-12-18 09:24:49 +07:00
rstubryan 40f2d0ba93 refactor(FE-355): Reorder egg_value_rp column in HppPerKandangTab 2025-12-18 09:12:28 +07:00
rstubryan 481a643b3c refactor(FE-355): Use summary fallbacks for report footers 2025-12-18 09:11:21 +07:00
rstubryan 9b2d98f7ce feat(FE-355,357): Add egg columns to HPP table and disable sale tabs 2025-12-18 08:59:07 +07:00
ValdiANS 3e8c29df64 Merge branch 'feat/FE/US-335/production-data-report' into feat/FE/US-340/TASK-364-365-368-marketing-report 2025-12-17 15:58:23 +07:00
rstubryan 6155929e14 refactor(FE-357): Use hppPerKandangExport instead of fetchAllExportData 2025-12-17 14:54:28 +07:00
rstubryan 7c9f68d3a3 feat(FE-363): Add Excel export loading and combine export state 2025-12-17 14:44:36 +07:00
randy-ar 918e85e0cc fix(FE): resolve merge conflict with branch development 2025-12-17 14:26:03 +07:00
randy-ar bb80e9e9c6 fix(FE): remove dummy data and integrate live API for closing finance and fixing closing UI when given data is null 2025-12-17 14:22:15 +07:00
rstubryan 80fd75dfc1 refactor(FE-357): Rename API response and export fetch vars 2025-12-17 14:14:27 +07:00
rstubryan e1b562c175 refactor(FE-357): Refactor export data fetching and handlers 2025-12-17 14:05:29 +07:00
rstubryan 9365320b03 feat(FE-357): Add loading state for export 2025-12-17 13:45:00 +07:00
rstubryan e515438312 refactor(FE-355): Use NumberInput and SelectInput for filters 2025-12-17 13:33:51 +07:00
rstubryan 530ef4982d refactor(FE-355,357): Use summary fields for egg HPP and total value 2025-12-17 13:04:26 +07:00
rstubryan a8c3b1a66f feat(FE-356): Include HPP and supplier aggregates in export 2025-12-17 11:56:42 +07:00
rstubryan 62d4d7b7db refactor(FE): Fix Dropdown import path 2025-12-17 11:49:41 +07:00
rstubryan 57df2e9aed Merge branch 'dev/restu' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-352/TASK-355-356-357-slicing-and-integrate-kandang-hpp-daily-report-page 2025-12-17 11:48:24 +07:00
rstubryan 9ea86fe5c3 Merge branch 'dev/restu' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-339/TASK-361-362-363-slicing-purchase-and-integrate-purchase-report-page 2025-12-17 11:47:57 +07:00
rstubryan ecf1677c27 Merge branch 'dev/restu' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-334/TASK-344-345-slicing-and-integrate-expedition-hpp-report-table 2025-12-17 11:47:36 +07:00
rstubryan c1e075b1ff refactor(FE): refactor Dropdown component API and Navbar usage 2025-12-17 11:47:12 +07:00
rstubryan c70cfbd450 feat(FE-355,356,357): Add PDF export for HPP per kandang report 2025-12-17 11:42:45 +07:00
rstubryan 4cc41c0167 feat(FE-355,357): Use API summary for weighted averages 2025-12-17 11:11:44 +07:00
rstubryan 730b7903a7 feat(FE-355): Remove pagination from HppPerKandangTab 2025-12-17 11:01:01 +07:00
rstubryan 78efd587be feat(FE-355,357): Add aggregated footers for HPP per kandang table 2025-12-17 10:54:02 +07:00
rstubryan 3d91c12874 feat(FE-355,356,357): Implement HPP Per Kandang report tab 2025-12-17 10:38:56 +07:00
rstubryan 12e6d60745 feat(FE-357): Rename HppPerkandang types and update API path 2025-12-17 10:37:05 +07:00
rstubryan 01313f0b09 refactor(FE-363): Move logistic API to report/logistic-stock 2025-12-17 10:05:32 +07:00
rstubryan 9f521a6a08 refactor(FE-363): Rename logistic stock report API method 2025-12-17 10:00:35 +07:00
rstubryan 43afc5781c feat(FE-355): Add sale report tabs and marketing layout 2025-12-17 09:50:55 +07:00
rstubryan 0f7f4e891c feat(FE-357): Add marketing sales report API and types 2025-12-17 09:50:36 +07:00
randy-ar b02b458034 feat(FE): Closing Finance and adjust reports expense filter request 2025-12-16 17:52:59 +07:00
rstubryan 304084ea2c Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-334/TASK-344-345-slicing-and-integrate-expedition-hpp-report-table 2025-12-16 16:21:39 +07:00
rstubryan 204a1098a3 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-339/TASK-361-362-363-slicing-purchase-and-integrate-purchase-report-page 2025-12-16 16:20:35 +07:00
rstubryan c04cd29ac7 refactor(FE-363): Use snake_case for totals in purchases tab 2025-12-16 15:19:47 +07:00
Adnan Zahir 224f7ddeea Merge branch 'feat/FE/US-284/sapronak-calculation-report' into 'development'
[FEAT/FE][US#284] Add Feature Perhitungan Sapronak Closing Report

See merge request mbugroup/lti-web-client!98
2025-12-16 15:00:47 +07:00
rstubryan d17c11e2f2 feat(FE-364): Implement Excel export for purchases per supplier 2025-12-16 14:48:17 +07:00
randy-ar f58b03ba0e fix(FE): revert auth component 2025-12-16 14:24:52 +07:00
rstubryan c9544e1bd0 refactor(FE-361): Format quantity with formatNumber 2025-12-16 14:21:58 +07:00
randy-ar d348cee4e6 fix(FE): resolve merge conflict 2025-12-16 14:17:23 +07:00
rstubryan 1560908101 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-334/TASK-344-345-slicing-and-integrate-expedition-hpp-report-table 2025-12-16 14:08:45 +07:00
rstubryan 874bc27e4c Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-339/TASK-361-362-363-slicing-purchase-and-integrate-purchase-report-page 2025-12-16 13:57:40 +07:00
Adnan Zahir be238779a4 Merge branch 'dev/hotfix/restu' into 'development'
[HOTFIX/FE] Fixing Recording and Approval Button

See merge request mbugroup/lti-web-client!97
2025-12-16 13:57:24 +07:00
rstubryan aea39a878a Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-339/TASK-361-362-363-slicing-purchase-and-integrate-purchase-report-page 2025-12-16 13:57:09 +07:00
rstubryan 84e562e22c refactor(FE-364): Refine PDF table cell styles and header alignment 2025-12-16 13:56:48 +07:00
Adnan Zahir 8db7b6d5e9 Merge branch 'feat/FE/US-279/closing-button' into 'development'
[FEAT/FE][US#279] Add Feature Closing Produksi (Project Flock)

See merge request mbugroup/lti-web-client!96
2025-12-16 13:56:20 +07:00
rstubryan 5c8bc4fc6e feat(FE-364): Center align badge in PDF export styles 2025-12-16 13:52:55 +07:00
rstubryan 9ba3fa1b6c refactor(FE-364): refactor PDF table styles and remove total styles 2025-12-16 13:34:36 +07:00
rstubryan 6f18c58042 refactor(FE-364): refactor PDF table styles and remove total styles 2025-12-16 13:33:57 +07:00
rstubryan 0d8e642b4e refactor(FE-364): update PDF export layout and parameter badges 2025-12-16 13:26:16 +07:00
rstubryan 615d4d5ffe feat(FE-364): Add PDF export for purchases per supplier 2025-12-16 12:00:56 +07:00
rstubryan 2a00da0298 refactor(FE-361): Make filter layout responsive 2025-12-16 11:12:30 +07:00
rstubryan 68437b3b7e feat(FE-361,363): Add product category filter and API params 2025-12-16 10:26:31 +07:00
rstubryan 31b2a5a548 refactor(FE-361,363): Adapt PurchasesPerSupplier to new report shape 2025-12-16 10:01:13 +07:00
rstubryan 4d997256ad refactor(FE-363): Update logistic report API endpoint and types 2025-12-16 10:00:39 +07:00
rstubryan 7ea9e10ad2 chore(FE): Add xlsx dependency from SheetJS CDN 2025-12-15 16:34:00 +07:00
rstubryan 245da2595c fix(FE-vulnerability): Bump Next.js to 15.5.9 2025-12-15 16:29:27 +07:00
rstubryan 45f1e923b7 feat(FE-361,363): Add export dropdown to PurchasesPerSupplier tab 2025-12-15 15:10:22 +07:00
Rivaldi A N S ebe752b27b Merge branch 'feat/FE/US-284/TASK-324-325-slicing-and-integration-sapronak-calculation-closing-report' into 'feat/FE/US-284/sapronak-calculation-report'
[FEAT/FE][US#284/TASK#324-325] Add Feature Perhitungan Sapronak Closing Report

See merge request mbugroup/lti-web-client!71
2025-12-15 07:54:59 +00:00
rstubryan 3c3c2345c7 feat(FE-361): Update action buttons in PurchasesPerSupplierTab 2025-12-15 14:14:34 +07:00
rstubryan 3f78cfdb63 refactor(FE): refactor Dropdown component API and Navbar usage 2025-12-15 14:04:16 +07:00
rstubryan 69eaae6d43 feat(FE=361,363): Add Submit button to PurchasesPerSupplierTab 2025-12-15 11:41:12 +07:00
ValdiANS 65b60cc464 chore(FE-347): update closings API endpoint '/closings' 2025-12-15 11:13:18 +07:00
rstubryan 5c9332537c feat(FE-363): Add pagination to purchases per supplier report 2025-12-15 11:08:05 +07:00
rstubryan 63c2a240d2 refactor(FE-363): Use SWR key+fetcher with params for logistic report 2025-12-13 12:03:56 +07:00
rstubryan fd2e1f8b96 refactor(FE-363): Replace LogisticService with LogisticApi instance 2025-12-13 11:51:41 +07:00
rstubryan fdb3e0481a refactor(FE-363): Rename response variable to purchasePerSupplier 2025-12-13 11:46:00 +07:00
rstubryan 9bc632c286 feat(FE-361): Add Reset button to clear report filters 2025-12-13 11:34:37 +07:00
rstubryan 81f98c5f06 feat(FE-361): Add pagination control to supplier purchases table 2025-12-13 11:21:04 +07:00
rstubryan 0983f154d2 refactor(FE-363): Rename SupplierWithItems type for clarity 2025-12-13 10:57:56 +07:00
rstubryan bd4c51cb04 refactor(FE-361,363): Refactor purchases-per-supplier report to use API 2025-12-13 10:55:15 +07:00
randy-ar 9c09395677 feat(FE-338): Slicing UI Halaman Reporting BOP & API integration & refactor debounce input: adding useEffect for sync value 2025-12-11 18:23:55 +07:00
rstubryan 67b5187d39 feat(FE-363): Add Logistic API service and update types 2025-12-11 15:47:21 +07:00
rstubryan 5de5dcffc0 fix(FE): Area import path in logistic-stock types 2025-12-11 15:28:26 +07:00
rstubryan 51ff739926 Merge branch 'dev/hotfix/restu' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-339/TASK-361-362-363-slicing-purchase-and-integrate-purchase-report-page 2025-12-11 15:23:15 +07:00
rstubryan 238edfeca2 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-339/TASK-361-362-363-slicing-purchase-and-integrate-purchase-report-page 2025-12-11 15:22:21 +07:00
rstubryan bd8d121113 feat(FE-344,345): Integrate HPP Ekspedisi into Closing detail 2025-12-11 15:04:37 +07:00
rstubryan 38b91a57f0 refactor(FE-345): Remove unused fields from BaseClosingSales 2025-12-11 14:43:54 +07:00
randy-ar d0abc0e9ff fix(FE): adjust inventory adjustment and inventory product table 2025-12-11 14:35:27 +07:00
rstubryan 4262e8e286 refactor(FE-344): Add Cost of Revenue Expedition table 2025-12-11 14:27:29 +07:00
randy-ar 48c163c1cd fix(FE): remove pengajuan from project flock kandang approval lines 2025-12-11 14:00:46 +07:00
rstubryan 3c03494bd3 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-334/TASK-344-345-slicing-and-integrate-expedition-hpp-report-table 2025-12-11 14:00:19 +07:00
rstubryan 3dd36b8248 fix(FE): Parse recordingId and hide actions for rejected 2025-12-11 11:05:20 +07:00
rstubryan 12698004e1 fix(FE): Update recording detail links to include production path 2025-12-11 10:47:25 +07:00
rstubryan a0ca8e8f69 Merge branch 'feat/FE/US-279/closing-button' of gitlab.com:mbugroup/lti-web-client into dev/hotfix/restu 2025-12-11 10:46:52 +07:00
rstubryan 69206d4524 fix(FE): Update recording detail links to include production path 2025-12-11 10:46:38 +07:00
rstubryan a73f9a1acd fix(FE): Update recording detail links to include production path 2025-12-11 10:46:21 +07:00
randy-ar 4ea56f2e18 fix(FE): fixing closing button project flock 2025-12-11 01:20:48 +07:00
Rivaldi A N S 48649df409 Merge branch 'dev/randy' into 'feat/FE/US-279/closing-button'
[FEAT/FE][US#279/TASK#312-313] Add Feature Closing Produksi (Project Flock)

See merge request mbugroup/lti-web-client!72
2025-12-10 18:06:46 +00:00
randy-ar c53f9352be fix(FE): closing project flock & merge development 2025-12-11 00:32:54 +07:00
Adnan Zahir df632526d2 Merge branch 'dev/hotfix/restu' into 'development'
[HOTFIX/FE] Fixing Credit Term issue on Purchase

See merge request mbugroup/lti-web-client!95
2025-12-11 00:10:33 +07:00
rstubryan 4ec455b3b7 feat(FE): Add credit_term to purchase forms and types 2025-12-10 23:54:59 +07:00
randy-ar 4f4fd3e6b7 fix(FE): pull development 2025-12-10 23:19:43 +07:00
Adnan Zahir 0d7dd0a110 Merge branch 'feat/FE/US-278/purchase-and-expense' into 'development'
[FEAT/FE][US#278] Adjust Purchase Request and Purchase Order (Expense Extended)

See merge request mbugroup/lti-web-client!86
2025-12-10 23:18:50 +07:00
Adnan Zahir 9bf4fd585d Merge branch 'feat/FE/US-282/egg-grading-adjustment' into 'development'
[FEAT/FE][US#282] Adjustment Recording Egg Grading

See merge request mbugroup/lti-web-client!85
2025-12-10 23:18:20 +07:00
kris a77a360410 Merge branch 'fix/redirect-error' into 'development'
[HOTFIX/FE] Fixing redirect issues

See merge request mbugroup/lti-web-client!94
2025-12-10 15:31:00 +00:00
ValdiANS 9628ee88ad chore: add condition for redirecting to SSO 2025-12-10 21:47:58 +07:00
ValdiANS 4356bd8803 fix: remove redirectToSSO 2025-12-10 21:43:05 +07:00
kris cbf1660da5 Merge branch 'fix/redirect-error' into 'development'
[HOTFIX/FE] Fixing redirect issues

See merge request mbugroup/lti-web-client!93
2025-12-10 11:53:47 +00:00
ValdiANS 37f59f9470 fix: remove unnecessary code 2025-12-10 18:50:58 +07:00
kris 6e3b25eb98 Merge branch 'fix/redirect-error' into 'development'
[HOTFIX/FE] Fixing redirect issues

See merge request mbugroup/lti-web-client!92
2025-12-10 11:11:50 +00:00
ValdiANS f939f4b0fb fix: return children only if userResponse success and user is set 2025-12-10 18:10:08 +07:00
ValdiANS 720ff2128f fix: add use-client and export dynamic 2025-12-10 18:09:30 +07:00
ValdiANS 280fffe6a5 fix: add use-client 2025-12-10 18:09:21 +07:00
ValdiANS 6340a5e519 fix: export dynamic 2025-12-10 18:09:10 +07:00
kris d4fc0b4a4f Merge branch 'fix/redirect-error' into 'development'
[HOTFIX/FE] Fixing redirect issues

See merge request mbugroup/lti-web-client!91
2025-12-10 10:32:40 +00:00
ValdiANS 4f595c7cad chore: wrap router.replace in useEffect 2025-12-10 17:31:21 +07:00
ValdiANS 3826b8ea53 feat: set trailingSlash to true 2025-12-10 17:31:06 +07:00
kris 5cc82f1615 Merge branch 'fix/redirect-error' into 'development'
[HOTFIX/FE] Fixing redirect issues

See merge request mbugroup/lti-web-client!90
2025-12-10 10:16:33 +00:00
ValdiANS cfaac14820 chore: return loading text if all condition unmet 2025-12-10 17:15:23 +07:00
kris b39d1f5c2e Merge branch 'fix/redirect-error' into 'development'
[HOTFIX/FE] Fixing redirect issues

See merge request mbugroup/lti-web-client!89
2025-12-10 10:08:42 +00:00
ValdiANS 30ab48e426 fix: redirect to dashboard if pathname is in root path 2025-12-10 17:07:44 +07:00
kris 88c640df18 Merge branch 'fix/redirect-error' into 'development'
[HOTFIX/FE] Fixing redirect issues

See merge request mbugroup/lti-web-client!88
2025-12-10 10:00:08 +00:00
ValdiANS 017b081832 fix: redirect to SSO if user isnt exist and show loading state if still loading user 2025-12-10 16:57:45 +07:00
ValdiANS 83d76f7de4 fix: set isLoadingUser in useAuth hook 2025-12-10 16:57:20 +07:00
randy-ar 9af140e58d fix(FE): fix merge conflict 2025-12-10 16:56:25 +07:00
randy-ar 654aa50cc7 fix(FE): fix merge conflict 2025-12-10 16:53:50 +07:00
randy-ar 814e8db1ba fix(FE): resolve merge conflict development 2025-12-10 16:45:54 +07:00
randy-ar d1883654bc fix(FE): resolve merge conflict development 2025-12-10 16:44:52 +07:00
kris 2c6ad71fd3 Update .gitlab-ci.yml file 2025-12-10 09:42:13 +00:00
randy-ar 6c31d933b0 fix(FE): resolve merge conflict 2025-12-10 16:41:21 +07:00
Mitra Berlian Unggas b806c0f0a1 Merge branch 'fix/redirect-error' into 'development'
[HOTFIX/FE] Fixing redirect issues

See merge request mbugroup/lti-web-client!87
2025-12-10 09:36:29 +00:00
randy-ar a073488c2c fix(FE): fixing closing project flock and fetching data in closing report 2025-12-10 16:32:50 +07:00
Rivaldi A N S 7efb2a4dbb Merge branch 'feat/FE/US-278/TASK-311-adjustment-purchase-and-expense' into 'feat/FE/US-278/purchase-and-expense'
[FEAT/FE][US#278/TASK-311] Adjust Purchase Request and Purchase Order (Expense Extended)

See merge request mbugroup/lti-web-client!83
2025-12-10 09:27:50 +00:00
Rivaldi A N S 01d1ed8f0d Merge branch 'feat/FE/US-282/TASK-318-319-slicing-and-adjustment-egg-grading-form' into 'feat/FE/US-282/egg-grading-adjustment'
[FEAT/FE][US#282/TASK-318-319] Adjustment Recording Egg Grading

See merge request mbugroup/lti-web-client!84
2025-12-10 09:25:32 +00:00
ValdiANS aed58ef10c hotfix: Implement client-side dashboard redirect with loading spinner, improve authentication error handling by clearing user state on 401, and extend SSO redirect loop protection. 2025-12-10 16:23:51 +07:00
rstubryan f105852a07 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-282/TASK-318-319-slicing-and-adjustment-egg-grading-form 2025-12-10 15:52:30 +07:00
rstubryan 21d6fc8579 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-278/TASK-311-adjustment-purchase-and-expense 2025-12-10 15:44:58 +07:00
kris eea1fcb513 Update .gitlab-ci.yml file 2025-12-10 08:43:08 +00:00
rstubryan 312580a7fc Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-339/TASK-361-362-363-slicing-purchase-and-integrate-purchase-report-page 2025-12-10 15:37:16 +07:00
rstubryan 7c4d5e68fa Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-282/TASK-318-319-slicing-and-adjustment-egg-grading-form 2025-12-10 15:36:36 +07:00
rstubryan b74e43c483 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-278/TASK-311-adjustment-purchase-and-expense 2025-12-10 15:36:12 +07:00
Adnan Zahir dbff1bda3d Merge branch 'dev/hotfix/restu' into 'development'
[HOTFIX/FE] Fixing Penjualan Tabs (Misplacement Issue)

See merge request mbugroup/lti-web-client!81
2025-12-10 15:33:54 +07:00
Adnan Zahir 244c564f06 Merge branch 'fix/redirect-error' into 'development'
[HOTFIX/FE] Fixing redirect issues

See merge request mbugroup/lti-web-client!82
2025-12-10 15:31:31 +07:00
ValdiANS 757e0435ac hotfix: use redirectToSSO function 2025-12-10 15:21:46 +07:00
ValdiANS 46d70e36dd feat: create auth-helper file and redirectToSSO helper function 2025-12-10 15:21:10 +07:00
ValdiANS 0cc9d0e94e hotfix: Centralize SSO redirection logic into a new helper with loop protection, integrate it into the HTTP client and RequireAuth component, and add an authentication failure UI. 2025-12-10 15:18:37 +07:00
rstubryan d7199fad53 hotfix(FE): Pass sales data to ClosingDetail and fix sales API 2025-12-10 15:05:52 +07:00
rstubryan 8c2683c440 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into dev/restu 2025-12-10 14:34:12 +07:00
rstubryan 9c7033b53a feat(FE-361): Migrate main drawer links to SidebarMenuItem 2025-12-10 14:17:12 +07:00
rstubryan 07bfe0a20b Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-339/TASK-361-362-363-slicing-purchase-and-integrate-purchase-report-page 2025-12-10 14:12:25 +07:00
rstubryan b9e69b243f Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-282/TASK-318-319-slicing-and-adjustment-egg-grading-form 2025-12-10 13:59:04 +07:00
rstubryan 8dec4915a2 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-278/TASK-311-adjustment-purchase-and-expense 2025-12-10 13:57:07 +07:00
rstubryan 7be32326a9 feat(FE-311): Disable approval actions when rejected 2025-12-10 13:56:13 +07:00
randy-ar c416fdbdaa fix(FE): resolve conflit merge development 2025-12-10 13:51:19 +07:00
Adnan Zahir 270e8ff0c6 Merge branch 'dev/hot-fix/randy' into 'development'
[HOTFIX/FE] Fixing Dropdown Button Logout

See merge request mbugroup/lti-web-client!80
2025-12-10 13:44:20 +07:00
Adnan Zahir 64abc5001d Merge branch 'feat/FE/US-285/marketing-closing-report' into 'development'
[FEAT/FE][US#285] Add Feature Marketing Closing Report (Sales/Penjualan)

See merge request mbugroup/lti-web-client!77
2025-12-10 13:38:26 +07:00
randy-ar f48cfca650 fix(FE): revert require auth component 2025-12-10 13:35:42 +07:00
rstubryan a116f7ca66 fix(FE): Remove closing detail page and layout 2025-12-10 13:32:29 +07:00
rstubryan 429f5ffb62 feat(FE-311): Add rejection modals and accept handler 2025-12-10 13:30:40 +07:00
randy-ar eed142a85f hotfix(FE): fixing dropdown logout and floating button max size 2025-12-10 13:25:07 +07:00
rstubryan 48f228de1c Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-278/TASK-311-adjustment-purchase-and-expense 2025-12-10 13:08:36 +07:00
rstubryan c92abfc9ab Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-285/marketing-closing-report 2025-12-10 11:54:05 +07:00
rstubryan 7e999b2e34 feat(FE): Show sales report on closing detail page 2025-12-10 11:53:47 +07:00
rstubryan e90c7d993c Merge branch ‘development’ of gitlab.com:mbugroup/lti-web-client into
feat/FE/US-285/marketing-closing-report
2025-12-10 11:44:46 +07:00
rstubryan 99fbcaaea3 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-285/marketing-closing-report 2025-12-10 11:40:43 +07:00
Adnan Zahir 865b0b3d8f Merge branch 'fix/FE/US-163-164/api-integration-adjustment-in-expense-request-and-realization' into 'development'
[FIX/FE][US#163-164] API Integration Adjustment in Expense Request and Realization

See merge request mbugroup/lti-web-client!78
2025-12-10 11:32:21 +07:00
Adnan Zahir a4c83f99a7 Merge branch 'feat/FE/US-286/inventory-management-product-stock' into 'development'
[FEAT/FE][US#286] Inventory Product Stock

See merge request mbugroup/lti-web-client!76
2025-12-10 11:25:27 +07:00
rstubryan e23b698fc7 feat(FE-363): Add TypeScript definitions for logistic stock report 2025-12-10 11:18:54 +07:00
Adnan Zahir 294c971fea Merge branch 'feat/FE/US-280/project-flock-budget' into 'development'
[FEAT/FE][US#280] Project Flock Budgets

See merge request mbugroup/lti-web-client!75
2025-12-10 11:14:07 +07:00
randy-ar 8a8128a692 fix(FE): resolve merge conflict checkbox and constant 2025-12-10 10:09:56 +07:00
randy-ar 649dd70ea7 Merge branch 'development' of https://gitlab.com/mbugroup/lti-web-client into dev/randy 2025-12-10 10:03:28 +07:00
Adnan Zahir 44b9210ccc Merge branch 'feat/FE/US-283/sapronak-closing-report' into 'development'
[FEAT/FE][US#283] Sapronak Closing Report

See merge request mbugroup/lti-web-client!74
2025-12-10 09:42:35 +07:00
rstubryan e3f90a49d0 feat(FE-361): Extract LogisticStockTabs component 2025-12-10 09:22:09 +07:00
rstubryan a1679ba5ff feat(FE-363): Add data type and date range filters 2025-12-09 21:49:26 +07:00
rstubryan 8a7149c123 feat(FE-361): Add logistic stock tabs and tweak styles 2025-12-09 20:19:00 +07:00
rstubryan f87854ed07 refactor(FE-361): Remove wrapper top margin and clear table margin 2025-12-09 18:51:36 +07:00
rstubryan 1ef7130661 refactor(FE-344): Export TABLE_DEFAULT_STYLING and refine classes 2025-12-09 18:45:38 +07:00
rstubryan 066c356d4f refactor(FE-339): Export TABLE_DEFAULT_STYLING and refine table classes 2025-12-09 18:44:35 +07:00
randy-ar 8c7640eb9c feat(FE-333): adding feature overhead closing report 2025-12-09 18:14:46 +07:00
rstubryan 8f5dd1851a refactor(FE-361): Refactor table and pagination components 2025-12-09 18:04:33 +07:00
randy-ar 489815ecaf fix(FE): revert require auth component 2025-12-09 18:04:06 +07:00
randy-ar f9dfe7b27f feat(FE-284): Refactor table component support for nesting header 2025-12-09 17:57:46 +07:00
rstubryan 6a926f881d feat(FE-334): Use column footers and fix closing loading check 2025-12-09 17:51:11 +07:00
rstubryan 68dd5b1121 refactor(FE-344): Add table cell side borders in sales report 2025-12-09 17:49:50 +07:00
rstubryan 5a3c7d71b0 refactor(FE-345): HPP ekspedisi API path to use /closings 2025-12-09 17:48:03 +07:00
rstubryan 5ad61d483a refactor(FE-344): update pagination UI and table footer handling 2025-12-09 16:47:59 +07:00
ValdiANS 1567a4016f feat(FE-347): use ClosingProductionDataTabContent in dataProduksi tab 2025-12-09 15:55:32 +07:00
ValdiANS 8b8702b1b8 feat(FE-346): create ClosingProductionDataTabContent component 2025-12-09 15:51:33 +07:00
rstubryan b039ec832b feat(FE-361): Add logistic-stock report page and table footer 2025-12-09 15:49:59 +07:00
ValdiANS abf2735b86 feat(FE-347): add getProductionData method 2025-12-09 15:46:12 +07:00
ValdiANS a26099b507 feat(FE-347): create ClosingProductionData type 2025-12-09 15:32:17 +07:00
rstubryan d7384752a0 feat(FE-361): Add Laporan report menu with logistic submenu 2025-12-09 14:11:15 +07:00
rstubryan dfecef2e0c feat(FE-344,345): Fetch and render HPP Ekspedisi report 2025-12-09 13:28:47 +07:00
rstubryan 80fd8bb7ba feat(FE-344,345): Add CosExpeditionReportTable component 2025-12-09 13:28:14 +07:00
rstubryan 44b9f94cec feat(FE-345): Add getHppEkspedisi to ClosingApiService 2025-12-09 13:27:15 +07:00
rstubryan e3b3f5ccdc feat(FE-345): Add Cost of Services expedition types and export
ClosingSales
2025-12-09 13:26:19 +07:00
ValdiANS 33691f45bb chore(FE-323): update outgoing sapronak API endpoint 2025-12-09 11:38:57 +07:00
ValdiANS 2c72c44be4 chore(FE-323): update incoming sapronak API endpoint 2025-12-09 11:38:53 +07:00
ValdiANS 98dfd4564c chore(FE-323): change closing API route path 2025-12-09 11:37:26 +07:00
ValdiANS a795d78c80 Merge branch 'development' into feat/FE/US-283/sapronak-closing-report 2025-12-09 10:58:43 +07:00
ValdiANS 7d8a6ff852 fix: update next.js version 2025-12-09 10:52:49 +07:00
randy-ar 8a0adf847e fix(FE-279): adjust closing project flock kandang 2025-12-09 10:33:38 +07:00
rstubryan 8e80d668fa refactor(FE-311): Remove credit_term from purchase request data and UI 2025-12-09 10:13:48 +07:00
rstubryan a45de4fb13 refactor(FE-311): Remove grand_total and due_date from purchases 2025-12-09 09:58:15 +07:00
rstubryan 6ee5bc3f1b refactor(FE-318,319): Remove egg grading schema and UI logic 2025-12-08 23:37:20 +07:00
rstubryan 012fe800bc refactor(FE-318,319): Remove laying grading checks and simplify approval 2025-12-08 23:35:55 +07:00
rstubryan c3835d5128 refactor(FE-319): Renumber RECORDINGS approval workflow steps 2025-12-08 23:35:12 +07:00
rstubryan 7c4bd81364 feat(FE-319): Remove recording grading feature 2025-12-08 23:34:01 +07:00
rstubryan 545af8267a feat(FE-319): Refactor recording types and simplify payloads 2025-12-08 23:33:34 +07:00
rstubryan 2e6a724b2f refactor(FE-319): Use approval step 2 and remove grading button 2025-12-08 20:13:10 +07:00
rstubryan 305b8e5005 refactor(FE-319): Remove Grading-Telur step from RECORDINGS workflow 2025-12-08 20:12:18 +07:00
rstubryan 5deca5739f refactor(FE-318): Add egg weight column and separate inputs 2025-12-08 20:08:35 +07:00
rstubryan b464432581 chore(FE): Add .claude to .gitignore 2025-12-08 18:49:17 +07:00
rstubryan 512ad5175e refactor(FE-311): Default received_qty and remove transport_total 2025-12-08 18:37:58 +07:00
rstubryan a7d884b5f0 refactor(FE-311): Use latest_approval instead of approval 2025-12-08 18:14:38 +07:00
rstubryan ce75eb25d7 refactor(FE-311): Show previous values only in edit mode 2025-12-08 17:55:22 +07:00
rstubryan c7911f01f2 refactor(FE-311): Remove Total Transport header from approval form 2025-12-08 17:43:44 +07:00
rstubryan 68874a1c14 feat(FE-311): Use latest_approval for purchase approvals 2025-12-08 17:42:23 +07:00
rstubryan 7cc2a31745 Merge branch 'feat/FE/US-280/project-flock-budget' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-278/TASK-311-adjustment-purchase-and-expense 2025-12-08 16:28:09 +07:00
rstubryan f5663b82aa refactor(ci): clean up .gitlab-ci.yml by removing unnecessary whitespace 2025-12-08 14:43:53 +07:00
rstubryan 3a7f1f4812 refactor(FE-311): remove transport_total field and update approval actions 2025-12-08 14:42:39 +07:00
rstubryan 32ffc1f14c chore(prettier): Remove trailing whitespace in .gitlab-ci.yml 2025-12-08 14:08:40 +07:00
rstubryan 58fb9b0c08 chore(CVE): Bump Next to 15.5.7 and ignore .claude 2025-12-08 14:07:25 +07:00
randy-ar 3569955e7f fix(FE): fix warn issue next js 2025-12-08 14:01:13 +07:00
randy-ar 7df743ebf5 fix(FE): adjust sapronak calculation to closing detail page 2025-12-08 10:24:41 +07:00
rstubryan 86a0faaa52 chore(ci): clean up .gitlab-ci.yml by removing unnecessary whitespace 2025-12-08 10:09:21 +07:00
rstubryan df3f342214 chore(CVE): update Next.js version to ^15.5.7 in package.json and package-lock.json 2025-12-08 10:07:00 +07:00
rstubryan c3c1bbbe96 feat(FE-326): Add egg weight field to recording forms 2025-12-08 09:47:22 +07:00
ValdiANS dc0fd7a3ed chore: format code 2025-12-07 15:00:25 +07:00
ValdiANS 5782abb531 refactor: change expense_date to transaction_date 2025-12-07 14:59:51 +07:00
ValdiANS 2d1cabb86b refactor: update CreateExpensePayload, UpdateExpensePayload, and CreateExpenseRealizationPayload types 2025-12-07 14:59:25 +07:00
Rivaldi A N S b362fd1748 Merge branch 'feat/FE/US-285/TASK-326-327-slicing-and-integration-marketing-closing-report' into 'feat/FE/US-285/marketing-closing-report'
[FEAT/FE][US#285/TASK#326-327] Add Feature Marketing Closing Report (Sales/Penjualan)

See merge request mbugroup/lti-web-client!70
2025-12-06 10:25:38 +00:00
Rivaldi A N S 3411aa9b1b Merge branch 'dev/randy' into 'feat/FE/US-286/inventory-management-product-stock'
[FEAT/FE][US#286] Inventory Product Stock

See merge request mbugroup/lti-web-client!69
2025-12-06 10:25:19 +00:00
Rivaldi A N S 1f29e3cb50 Merge branch 'dev/randy' into 'feat/FE/US-280/project-flock-budget'
[FEAT/FE][US#280] Project Flock Budgets

See merge request mbugroup/lti-web-client!68
2025-12-06 10:23:34 +00:00
Rivaldi A N S b671de1336 Merge branch 'feat/FE/US-283/TASK-320-321-322-323-sapronak-closing-report' into 'feat/FE/US-283/sapronak-closing-report'
[FEAT/FE][US#283/TASK#320-321-322-323] Sapronak Closing Report

See merge request mbugroup/lti-web-client!73
2025-12-06 10:18:01 +00:00
ValdiANS 090a3183f7 feat(FE-323): create Closing type 2025-12-06 17:14:09 +07:00
ValdiANS 17865d733d feat(FE-323): create ClosingApiService 2025-12-06 17:13:53 +07:00
ValdiANS 5be67ef01c chore: update formatDate helper function 2025-12-06 17:13:27 +07:00
ValdiANS 7f326bedd4 chore(FE-320): add Closing menu 2025-12-06 17:13:00 +07:00
ValdiANS c350bc0be2 feat(FE-321): create ClosingSapronakTabContent component 2025-12-06 16:54:44 +07:00
ValdiANS 6f7627ac92 feat(FE-321): create ClosingOutgoingSapronaksTable component 2025-12-06 16:54:27 +07:00
ValdiANS 1ae5c1bd64 feat(FE-321): create ClosingIncomingSapronaksTable component 2025-12-06 16:54:15 +07:00
ValdiANS 5bb366026d feat(FE-321): create ClosingGeneralInformationTable component 2025-12-06 16:53:54 +07:00
ValdiANS 9888dc4356 feat(FE-321): create ClosingDetail component 2025-12-06 16:53:39 +07:00
ValdiANS 7615daa22a chore: update Pagination component 2025-12-06 16:53:20 +07:00
ValdiANS 435cc0aedc feat(FE-321): create layout file for closing detail route 2025-12-06 16:53:05 +07:00
ValdiANS d189252551 feat(FE-321): create Closing detail page 2025-12-06 16:52:45 +07:00
ValdiANS d85cf29193 feat(FE-320): create ClosingsTable component 2025-12-06 16:52:12 +07:00
ValdiANS 84ff5e178b feat(FE-320): create Closing list page 2025-12-06 16:51:48 +07:00
ValdiANS 72840e2193 chore: set container size value 2025-12-06 16:46:14 +07:00
ValdiANS ea2ada8224 chore: update daisyui version 2025-12-06 16:44:31 +07:00
randy-ar b97cc39854 fix(FE): revert RequireAuth component and closing logic 2025-12-06 13:10:03 +07:00
randy-ar 195bbbe449 fix(FE): change closing folder name 2025-12-06 12:51:13 +07:00
randy-ar 375b50b646 fix(FE): revert RequireAuth Component 2025-12-06 12:45:07 +07:00
randy-ar a5c71ff8ce feat(FE-284): Slicing and API Integration Perhitungan Sapronak 2025-12-06 12:43:22 +07:00
randy-ar e09074eed0 feat(FE): add sapronak table 2025-12-06 11:55:47 +07:00
randy-ar ffbf886718 fix(FE): adjust chickin and closing after submit 2025-12-06 11:38:28 +07:00
rstubryan b3f7b8a3c5 feat(FE-326): Add totals footer row to sales report table 2025-12-06 10:26:26 +07:00
rstubryan e407410c4a feat(FE-Storyless): Add footer support to Table component 2025-12-06 10:25:40 +07:00
randy-ar 341cb42452 feat(FE): adding temporary perhitungan sapronak 2025-12-06 10:05:10 +07:00
rstubryan 99b9df27a7 refactor(FE-326): Comment _closing for copy-paste function 2025-12-06 09:58:38 +07:00
rstubryan 27c867036f refactor(FE-327): Update import paths for consistency in SalesReportTable 2025-12-06 09:51:40 +07:00
rstubryan c9552dec2d refactor(FE-326): Remove custom header rows and simplify Table 2025-12-06 09:47:38 +07:00
rstubryan aad24c3c58 refactor(FE-327): Rename salesBroilerData to salesData 2025-12-06 09:12:02 +07:00
rstubryan ff1493b520 refactor(FE-326): Remove avgPriceAct/totalAct and use partner totals,
fix badge case
2025-12-06 09:09:41 +07:00
rstubryan 4ff1649991 chore(FE-327): Remove unused state from SalesReportTable 2025-12-06 08:56:14 +07:00
rstubryan 4fe53f364a refactor(FE-326): Remove Tabs wrapper from SalesReportTable 2025-12-06 08:54:12 +07:00
randy-ar 85fdb4f7dd refactor(FE): refactor chickin views and adjust approval logic in project flocks 2025-12-06 00:15:30 +07:00
randy-ar 885e4250fd feat(FE-279): Add functionality closing project flock 2025-12-05 22:55:11 +07:00
rstubryan eaf118845c feat(FE-327): Include Kandang in sales data and display name 2025-12-05 19:15:38 +07:00
rstubryan 30db7ee95d refactor(FE-327): change SalesReportTable to use new API fields 2025-12-05 18:27:45 +07:00
rstubryan 5869e0434b refactor(FE-327): change closing API paths and sales types 2025-12-05 18:26:58 +07:00
rstubryan f205c66509 refactor(FE-327): Rename Ekor label to Kuantitas 2025-12-05 17:49:59 +07:00
rstubryan 46e072bbcf refactor(FE-327): Map Indonesian sales fields and add API sample 2025-12-05 11:15:41 +07:00
rstubryan c31b284cf4 refactor(FE-327): Split BaseClosingSales into BaseSales and wrapper 2025-12-05 11:14:52 +07:00
ValdiANS bac3f30ce3 chore: update Table component 2025-12-04 23:09:08 +07:00
ValdiANS be725d42c3 chore: add Size type 2025-12-04 22:46:26 +07:00
ValdiANS b37c3f87b0 chore: set color for menu foreground and background 2025-12-04 22:46:18 +07:00
ValdiANS ae4c17b391 chore: create isPathActive helper 2025-12-04 22:45:57 +07:00
ValdiANS 48dd6d7218 chore: update MAIN_DRAWER_LINKS structure 2025-12-04 22:45:48 +07:00
ValdiANS cee3d4ba90 chore: create SidebarMenu component 2025-12-04 22:45:29 +07:00
ValdiANS a8d7fdc30d chore: update Menu component 2025-12-04 22:45:20 +07:00
ValdiANS 2bb2da74e6 chore: update CheckboxInput component 2025-12-04 22:45:13 +07:00
ValdiANS fd024fdb8f chore: update Pagination component 2025-12-04 22:44:43 +07:00
ValdiANS 79a89ea193 chore: use SidebarMenu component 2025-12-04 22:44:17 +07:00
ValdiANS 611655e408 chore: update gitlab-ci 2025-12-04 22:42:57 +07:00
ValdiANS 702943c55c chore: update next, daisyui, and eslint-config-next library 2025-12-04 22:36:22 +07:00
rstubryan 075d945a59 refactor(FE-326): Use placeholder for sales type in header 2025-12-04 21:29:45 +07:00
rstubryan 7d9a88cf3b feat(FE-326,327): Add sortable table headers and styling 2025-12-04 20:14:29 +07:00
rstubryan b095208fae refactor(FE-327): Temporarily map Indonesian sales fields to English 2025-12-04 17:41:22 +07:00
randy-ar c69d9dd605 fix(FE): revert require auth component to correct file 2025-12-04 16:39:00 +07:00
randy-ar a1d0c7b331 fix(FE): adjust data types for inventory product stock 2025-12-04 16:35:10 +07:00
randy-ar e0a8514814 fix(FE): adjust data types for project flock and product stock inventory 2025-12-04 16:13:47 +07:00
rstubryan 949761d59d feat(FE-326,327): add footer rendering to SalesReportTable for total sales display 2025-12-04 14:25:27 +07:00
rstubryan 15ced14e20 refactor(FE-Storyless): add footer rendering support to Table component 2025-12-04 14:25:11 +07:00
rstubryan 492efb18e2 chore: update next.js to version 15.5.7 in package.json and package-lock.json 2025-12-04 14:15:58 +07:00
rstubryan 8ea29579ec feat(FE-326,327): add layout and closing detail page with sales report integration 2025-12-04 14:10:57 +07:00
randy-ar dc6b0eaec6 fix(FE): change datatype location in inventory products 2025-12-04 14:10:46 +07:00
rstubryan 1a4a05308f refactor(FE-326,327): enhance SalesReportTable to handle empty sales data and conditionally render summary row 2025-12-04 14:08:44 +07:00
rstubryan ba40bbb1d3 refactor(FE-327): remove dummy sales data and update ClosingApiService to fetch real sales data from API 2025-12-04 14:07:10 +07:00
rstubryan 647b002065 refactor(FE-326): change SalesReportTable to use BaseClosingSales type and support initial values 2025-12-04 11:55:57 +07:00
rstubryan 991a594ee1 refactor(FE-326): Add ClosingApiService and types for closing sales data 2025-12-04 11:51:11 +07:00
randy-ar 3b846bf11c fix(FE): fixing error suspense layout 2025-12-04 02:06:33 +07:00
randy-ar 3e07316678 feat(FE-328-329-330): Adding Feature Inventory Product Stocks 2025-12-04 02:05:34 +07:00
rstubryan 411c2586f5 chore(format): prettier format 2025-12-03 22:32:11 +07:00
rstubryan 3a87b039bf feat(FE-326): Add SalesReportTable component 2025-12-03 22:31:10 +07:00
rstubryan 50559caf52 feat(FE-326): Support custom header rows and cell render hook 2025-12-03 22:28:18 +07:00
rstubryan 8fbe6aa148 chore(FE-Storyless): Add .claude to .gitignore 2025-12-03 22:26:33 +07:00
randy-ar 873a4b308d fix(FE): resolve conflict pull branch development 2025-12-03 21:21:42 +07:00
randy-ar f0ec758d7f feat(FE-314-315): API Integration project budgets and refactoring UI 2025-12-03 21:09:12 +07:00
rstubryan 88878f7613 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into dev/restu 2025-12-03 10:55:39 +07:00
randy-ar 31f758d680 refactor(FE): refactor UI detail from page into drawer 2025-12-02 16:25:55 +07:00
randy-ar 9eba5ffeca feat(FE): create floation actions button 2025-12-02 12:37:03 +07:00
randy-ar 6b5838b5aa feat(FE): refactor drawer zustand store 2025-12-02 11:01:53 +07:00
randy-ar c76f3a3715 feat(FE): US#278 slicing UI from and client side validation 2025-12-02 04:11:01 +07:00
randy-ar 48435a9cbb fix(FE): change import module to absolute path 2025-12-01 10:22:00 +07:00
randy-ar 2ace95a0db feat(FE): add drawer ui store 2025-12-01 10:13:28 +07:00
kris 58532881f4 Update .gitlab-ci.yml update env 2025-11-28 13:06:03 +00:00
kris 4073f4dfde Update .gitlab-ci.yml update env 2025-11-28 12:47:47 +00:00
kris 94e2d71dba Update .gitlab-ci.yml file 2025-11-28 10:15:49 +00:00
kris 944f479e2d Update .gitlab-ci.yml file 2025-11-28 10:02:17 +00:00
kris 5046d687b5 Update .gitlab-ci.yml file 2025-11-28 09:54:57 +00:00
randy-ar 892bb19dfd refactor(FE): change project flock form, detail and chickin view using drawer 2025-11-28 16:41:01 +07:00
kris 711deda6a8 Update .gitlab-ci.yml file 2025-11-28 09:38:44 +00:00
Adnan Zahir 029be31020 Merge branch 'feat/FE/US-164/expense-realization' into 'development'
[FEAT/FE][US#164] Expense Realization

See merge request mbugroup/lti-web-client!67
2025-11-28 15:40:33 +07:00
Rivaldi A N S ed7563a028 Merge branch 'feat/FE/US-164/TASK-200-204-205-206-207-expense-realization' into 'feat/FE/US-164/expense-realization'
[FEAT/FE][US#164/TASK#200-204-205-206-207] Expense Realization

See merge request mbugroup/lti-web-client!66
2025-11-28 03:41:26 +00:00
ValdiANS f82ca4f959 chore(FE-195): adjust RowOptionsMenu type 2025-11-28 10:32:00 +07:00
ValdiANS 0cc01ae738 feat(FE-196,199): create ExpensePDF component 2025-11-28 10:31:27 +07:00
ValdiANS 1de743a404 feat(FE-196,199): create ExpensePDFButton component 2025-11-28 10:31:08 +07:00
ValdiANS 68c1e76a4a feat(FE-196,199): add Expense PDF Preview button 2025-11-28 10:30:26 +07:00
ValdiANS 2001cdb843 chore(FE-205): adjust content styling 2025-11-28 10:29:36 +07:00
ValdiANS b8590040ff chore: remove unnecessary code 2025-11-28 10:28:33 +07:00
ValdiANS 909aa3357c chore: add MBU logo 2025-11-28 10:24:56 +07:00
rstubryan 7a76719547 refactor(FE-Storyless): remove console, window and err catch 2025-11-27 13:46:53 +07:00
rstubryan 4b6144d0b4 refactor(FE-Storyless): update import paths for schema files to use absolute paths 2025-11-27 13:36:12 +07:00
ValdiANS 507543eff8 chore: remove unnecessary code 2025-11-27 09:38:26 +07:00
ValdiANS 8dc6b3d1db Merge branch 'development' into feat/FE/US-164/TASK-200-204-205-206-207-expense-realization 2025-11-26 13:44:01 +07:00
Adnan Zahir 22ce1b1142 Merge branch 'feat/FE/US-162/purchase-order' into 'development'
[FEAT/FE][US#161|US#162] Add Feature Purchase Request and Purchase Order

See merge request mbugroup/lti-web-client!65
2025-11-26 12:47:50 +07:00
Rivaldi A N S e126ab4a0e Merge branch 'feat/FE/US-161/TASK-208-212-slicing-ui-and-validation-create-purchase-request-form' into 'feat/FE/US-162/purchase-order'
[FEAT/FE][US#161|US#162] Add Feature Purchase Request and Purchase Order

See merge request mbugroup/lti-web-client!61
2025-11-26 03:10:06 +00:00
rstubryan 7685be0c7b Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-161/TASK-208-212-slicing-ui-and-validation-create-purchase-request-form 2025-11-26 09:43:52 +07:00
Adnan Zahir 8b72f58467 Merge branch 'fix/FE/US-160/marketing-delivery-order' into 'development'
[FIX/FE][US#160] Fixing Missing Component UI DebounceTextArea

See merge request mbugroup/lti-web-client!64
2025-11-26 09:43:16 +07:00
Rivaldi A N S 87c25a8bc4 Merge branch 'dev/randy' into 'fix/FE/US-160/marketing-delivery-order'
[FIX/FE][US#160/TASK#220] Fixing Missing Component UI DebounceTextArea

See merge request mbugroup/lti-web-client!63
2025-11-26 02:15:14 +00:00
randy-ar 1e4c826a0a fix(FE): fixing error missing component DebounceTextArea 2025-11-26 01:27:00 +07:00
rstubryan 6d3632a385 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-161/TASK-208-212-slicing-ui-and-validation-create-purchase-request-form 2025-11-25 11:30:49 +07:00
Adnan Zahir d75ac635df Merge branch 'feat/FE/US-160/marketing-delivery-order' into 'development'
[FE/FE][US#160] Marketing - Delivery Order

See merge request mbugroup/lti-web-client!62
2025-11-25 11:30:17 +07:00
Rivaldi A N S 352fd701cb Merge branch 'dev/randy' into 'feat/FE/US-160/marketing-delivery-order'
[FE/FE][US#160/TASK#179-181-220-272] Adding Feature Delivery Order

See merge request mbugroup/lti-web-client!60
2025-11-25 04:22:36 +00:00
ValdiANS 2a97f9d504 Merge branch 'development' into feat/FE/US-164/TASK-200-204-205-206-207-expense-realization 2025-11-25 10:55:52 +07:00
ValdiANS b805fb4ae1 chore(FE-196): use useApprovalSteps hook 2025-11-25 10:48:27 +07:00
ValdiANS 642f966985 chore: adjust ApprovalSteps component 2025-11-25 10:47:34 +07:00
ValdiANS c3e4d4c630 chore(FE-199,207): adjust expense type according to the API need 2025-11-25 09:25:40 +07:00
ValdiANS b616f28c95 feat: add interceptor to axiosClient to redirect to login page if the user is logged out 2025-11-25 09:24:46 +07:00
ValdiANS 334202569c chore(FE-199,207): integrate ExpenseApiService to API 2025-11-25 09:24:12 +07:00
ValdiANS 1a1fefc237 chore: create AuthApiService 2025-11-25 09:19:58 +07:00
ValdiANS 47690f82ac chore(FE-199): update Expense Request approval line step name 2025-11-25 09:18:04 +07:00
ValdiANS b868a37485 chore(FE-188,193): adjust ExpenseRequestKandangDetailExpense component 2025-11-25 09:17:02 +07:00
randy-ar 034d185b84 fix(FE): make text area debounce input for lag textarea input issue 2025-11-24 17:18:16 +07:00
ValdiANS e4a6b22357 chore(FE-188,193,199): adjust Expense Request Form and integrate to API 2025-11-24 09:54:28 +07:00
ValdiANS 82eac4a965 chore(FE-198): adjust Expense Request Form validation 2025-11-24 09:47:09 +07:00
ValdiANS 20c3e2d6b4 feat(FE-200,204): create ExpenseRealizationKandangDetailExpense component 2025-11-24 09:44:48 +07:00
ValdiANS f24ae992e6 feat(FE-206): create Expense Realization Form validation 2025-11-24 09:43:58 +07:00
ValdiANS 4f375a4f0b feat(FE-200,204): create Expense Realization Form 2025-11-24 09:43:20 +07:00
ValdiANS 510d10270e feat(FE-195): implement bulk approve/reject in Expense list page 2025-11-24 09:42:14 +07:00
ValdiANS b083b9cb1a feat(FE-196): create Expense Request Detail's content component 2025-11-24 09:38:31 +07:00
ValdiANS 93d14cb98b feat(FE-205): create Expense Realization Detail's content component 2025-11-24 09:38:13 +07:00
ValdiANS b0bd2bd8a5 chore(FE-196,205): refactor ExpenseDetail component 2025-11-24 09:35:30 +07:00
ValdiANS c0bba827a0 chore: remove dummy data 2025-11-24 09:31:27 +07:00
ValdiANS 032e9d45b3 feat: add logout functionality 2025-11-24 09:30:12 +07:00
ValdiANS 4027b25598 chore(FE-204): create Edit Expense Realization page 2025-11-24 09:26:37 +07:00
ValdiANS 70b1ba3f6b chore(FE-200): create Add Expense Realization page 2025-11-24 09:26:20 +07:00
ValdiANS d34c113be3 chore(FE-205): create layout file for expense realization detail page 2025-11-24 09:23:54 +07:00
ValdiANS 6a08854603 chore(FE-204,207): add validation to check if expense can be edited 2025-11-24 09:21:32 +07:00
rstubryan 824eed910a fix(resolve): fix resolve merge 2025-11-24 08:34:50 +07:00
randy-ar d769bfe452 fix(FE-270): adjust endpoint get next period project flock 2025-11-23 13:34:45 +07:00
rstubryan 274322606d refactor(FE-212): enhance quantity and price handling in PurchaseOrderStaffApprovalForm with improved validation and formatting 2025-11-22 13:47:24 +07:00
rstubryan 62c3d2af53 refactor(FE-212): add quantity field handling in PurchaseOrderStaffApprovalForm for improved item updates 2025-11-22 13:36:38 +07:00
rstubryan 01b9595606 refactor(FE-212): replace quantity input with NumberInput for editable rows in PurchaseOrderStaffApprovalForm 2025-11-22 13:32:10 +07:00
rstubryan 09065f59cf refactor(FE-212): enhance approval step logic in PurchaseOrderStaffApprovalForm for better item management 2025-11-22 13:23:23 +07:00
rstubryan ad79f29494 refactor(FE-212): update supplier data fetching logic to handle invalid supplier IDs in PurchaseRequestForm 2025-11-22 13:00:57 +07:00
randy-ar a26665e4ac fix(FE-179): prevent qty input greater than sales order qty 2025-11-22 12:58:55 +07:00
randy-ar eaaed9521b fix(FE-179-220): Adjust form add and edit delivery, add validation to prevent duplicate product 2025-11-22 12:04:46 +07:00
rstubryan 5bb94b5679 refactor(FE-Issue): add validation to prevent selecting the same warehouse for source and destination in MovementForm 2025-11-22 11:33:28 +07:00
rstubryan 3c7f630580 feat(FE-Storyless): add date input for transfer date in MovementForm 2025-11-22 11:17:06 +07:00
rstubryan 6ce5a5b625 refactor(FE-208): filter supplier options by category in MovementForm for improved data relevance 2025-11-22 11:10:49 +07:00
rstubryan c12a58cb6d refactor(FE-208): add validation to ensure destination warehouse is different from source warehouse in MovementForm 2025-11-22 11:07:23 +07:00
rstubryan 34c1da94d8 refactor(FE-Issue): remove unused product and warehouse selection from MovementTable for cleaner UI 2025-11-22 10:47:27 +07:00
rstubryan 5b84a19afa refactor(FE-Issue): add max length validation for product category name in ProductCategoryForm 2025-11-22 10:35:56 +07:00
rstubryan a4a2b76277 fix(resolve): fix resolve MR 2025-11-22 10:25:37 +07:00
rstubryan 23abdbb78f refactor(FE-208): display formatted total and subtotal quantities in PurchaseOrderInvoice for improved clarity 2025-11-22 10:21:36 +07:00
rstubryan 6a39c2fd3f refactor(FE-208): swap accessor keys for total_qty and sub_qty in PurchaseOrderDetail for accurate data representation 2025-11-22 10:17:38 +07:00
rstubryan f9215738aa feat(FE-212): add quantity validation to PurchaseOrderAcceptApprovalForm to prevent submission with exceeded received quantities 2025-11-22 10:16:39 +07:00
rstubryan b12a1ebd36 feat(FE-212): add rawDataApprovals prop to PurchaseOrderStaffApprovalForm for improved approval data handling 2025-11-22 10:11:30 +07:00
rstubryan 0fefe5e035 feat(FE-212): enhance PurchaseOrderStaffApprovalForm to dynamically determine form type and validate product selection for duplicates 2025-11-22 09:47:20 +07:00
rstubryan ef95d1a0e8 refactor(FE-208): improve deletion logic in PurchaseOrderDetail to restrict item deletion to approval step 3 and enhance approval step handling 2025-11-22 00:58:06 +07:00
rstubryan 30ab69ae21 refactor(FE-208,212,213): update PurchaseOrderForm and PurchaseOrderStaffApprovalForm to allow optional product and warehouse fields and control visibility of action buttons based on approval step 2025-11-22 00:52:23 +07:00
rstubryan 5b28067203 feat(FE-208,212,213): enhance PurchaseOrderStaffApprovalForm with product and warehouse selection for new items 2025-11-21 22:46:50 +07:00
rstubryan ffea96edf9 refactor(FE-208): update deletion logic in PurchaseOrderDetail to allow item deletion only at approval step 3 2025-11-21 20:30:06 +07:00
rstubryan 1a74a9d33f feat(FE-208,212,213): integrate dynamic supplier selection in PurchaseOrderAcceptApprovalForm 2025-11-21 20:23:58 +07:00
rstubryan b9990e0253 refactor(FE-208): enhance PurchaseRequestForm to fetch and display supplier-specific products 2025-11-21 18:54:17 +07:00
rstubryan 95a7afdaa6 feat(FE-208): add refetchData prop to PurchaseOrderDetail and related forms for improved data synchronization 2025-11-21 18:18:40 +07:00
randy-ar b198f24b75 Merge branch 'development' of https://gitlab.com/mbugroup/lti-web-client into dev/randy 2025-11-21 13:35:03 +07:00
randy-ar b7c3b9313c fix(FE-169-177): Allow Drafted Marketing to be rejected 2025-11-21 13:33:40 +07:00
rstubryan c74733430b feat(FE-208): implement conditional item deletion in PurchaseOrderDetail and update form handling in PurchaseOrderStaffApprovalForm 2025-11-21 13:26:34 +07:00
rstubryan f6fe2d4eb1 refactor(FE-208): remove 'Jumlah Retur' column from PurchaseOrderDetail for UI simplification 2025-11-21 11:01:33 +07:00
rstubryan d624da97c3 feat(FE-208): replace product name input with select dropdown for better usability 2025-11-21 10:13:38 +07:00
Adnan Zahir fdf680bc38 Merge branch 'feat/FE/US-159/marketing-sales-order' into 'development'
[FE/FE][US#159] Sales Order

See merge request mbugroup/lti-web-client!59
2025-11-21 10:08:11 +07:00
Rivaldi A N S e9d9897e1d Merge branch 'dev/randy' into 'feat/FE/US-159/marketing-sales-order'
[FE/FE][US#159/TASK#166-167-168-169-176-177-271] Adding Feature Sales Order

See merge request mbugroup/lti-web-client!56
2025-11-21 03:04:03 +00:00
randy-ar 70521330e4 fix(FE): resolve merge conflict 2025-11-21 09:45:40 +07:00
rstubryan 63e5962a4e fix(resolve): fix resolve MR 2025-11-21 09:25:16 +07:00
rstubryan 835074f538 refactor(FE-212): group purchase items by warehouse in PurchaseOrderStaffApprovalForm 2025-11-21 09:17:00 +07:00
Adnan Zahir e69e5da2c3 Merge branch 'feat/FE/US-79/egg-grading' into 'development'
[FEAT/FE][US#78|US#79] Add Feature Daily Recording Laying, Grading and Adjusting Recording Growing

See merge request mbugroup/lti-web-client!58
2025-11-21 09:15:02 +07:00
Rivaldi A N S e451a128c5 Merge branch 'feat/FE/US-78/TASK-170-174-slicing-ui-and-validation-create-daily-recording-laying-form' into 'feat/FE/US-79/egg-grading'
[FEAT/FE][US#78|US#79] Add Feature Daily Recording Laying, Grading and Adjusting Recording Growing

See merge request mbugroup/lti-web-client!51
2025-11-21 02:05:18 +00:00
randy-ar 23ab4b15e1 fix(FE-270): delete relations project flock to flock data master 2025-11-21 01:28:57 +07:00
randy-ar d523a01e34 fix(FE-270): adjust flock_name in select input and fixing project flock approval 2025-11-21 00:31:25 +07:00
rstubryan e00b7bc3f2 refactor(FE-212): update default unit of measure in PurchaseOrderAcceptApprovalForm 2025-11-20 23:52:35 +07:00
rstubryan 51f157dfad refactor(FE-208,212): enhance quantity validation and formatting in PurchaseOrderAcceptApprovalForm 2025-11-20 23:50:14 +07:00
rstubryan c1d71ee3c6 refactor(FE-212): add warehouse information to PurchaseOrderAcceptApprovalForm 2025-11-20 23:31:35 +07:00
rstubryan c8b3e52ac0 refactor(FE-212): remove commented-out edit button in PurchaseTable component 2025-11-20 23:28:05 +07:00
rstubryan b2ef545f63 refactor(FE-208,212,213): replace product_id and warehouse_id with purchase_item_id in PurchaseRequestStaffApprovalForm and related schemas 2025-11-20 23:21:12 +07:00
rstubryan a6d187a8b3 refactor(FE-208,212,213): add action field to staff approval request payloads and implement rejection handling in PurchaseOrderDetail 2025-11-20 23:05:12 +07:00
rstubryan 24e2bcf35d refactor(FE-212): update notes field in UpdateStaffApprovalRequestPayload for consistency 2025-11-20 22:54:22 +07:00
rstubryan 417d08e0fc refactor(FE-212,213): unify purchase API service references in Purchase components 2025-11-20 22:39:04 +07:00
rstubryan 6e9d065bc6 refactor(FE-212): change HTTP method to DELETE for item removal in PurchaseRequestForm 2025-11-20 22:16:44 +07:00
randy-ar af939ee225 feat(FE-272): adding DO PDF export 2025-11-20 19:43:50 +07:00
randy-ar 391b355e8d feat(FE-181-179-220-271): adding SO export PDF and adjusting delivery form 2025-11-20 18:15:42 +07:00
rstubryan 4ddc44b59c refactor(FE-208,212): enhance product selection and quantity input handling in PurchaseRequestForm based on supplier selection 2025-11-20 15:38:04 +07:00
rstubryan e0b4805d0a refactor(FE-208,212): reset touched fields and values for purchase items in PurchaseRequestForm 2025-11-20 15:36:12 +07:00
rstubryan 074e6fad05 refactor(FE-208,212): improve credit term handling and validation in PurchaseRequestForm 2025-11-20 15:33:43 +07:00
rstubryan e640bce8ea refactor(FE-208): streamline supplier change handling and reset purchase items in PurchaseRequestForm 2025-11-20 15:25:39 +07:00
rstubryan f1e5692f8f refactor(FE-208,212): initialize items in PurchaseRequestForm with initial values 2025-11-20 14:50:36 +07:00
rstubryan 655e971788 refactor(FE-208): update input wrapper classes for consistency in PurchaseRequestForm 2025-11-20 14:44:41 +07:00
rstubryan 00e18d6d0d refactor(FE-208,212): enhance form validation and streamline change handlers in PurchaseRequestForm 2025-11-20 14:13:57 +07:00
rstubryan 343cc7c4e7 refactor(FE-212): remove unused poDate and supplier fields from table filter in PurchaseTable 2025-11-20 13:34:52 +07:00
rstubryan 4e8b17f55c refactor(FE-208): remove unused supplier state and handlers in PurchaseTable 2025-11-20 13:32:26 +07:00
rstubryan 862e056950 chore(FE-Storyless): prettier format 2025-11-20 13:07:51 +07:00
rstubryan 1310c7401c feat(FE-170,174): enhance number formatting in RecordingForm validation messages 2025-11-20 11:25:36 +07:00
rstubryan d0f2fefe1c feat(FE-170,174): add validation for total chick quantity in RecordingForm 2025-11-20 11:18:48 +07:00
rstubryan 6cb517ac92 fix(FE-174): correct parameter name for next day recording API request 2025-11-20 10:58:32 +07:00
rstubryan c698893f88 feat(FE-170,174,175): implement next day recording functionality in RecordingForm 2025-11-20 10:31:24 +07:00
rstubryan cb236c191b refactor(FE-170,174): adjust layout of action buttons in RecordingForm for better responsiveness 2025-11-20 09:20:39 +07:00
rstubryan ac764c9d3b refactor(FE-170,174): clean up grading redirect in RecordingTable action 2025-11-20 09:08:06 +07:00
randy-ar b33e7a1919 feat(FE-181-179-220): Slicing UI, Client Side Validation and API Integration for Delivery Order 2025-11-20 00:57:07 +07:00
rstubryan 28a5343592 refactor(FE-170): update tableWrapperClassName to allow overflow visibility 2025-11-19 22:41:02 +07:00
rstubryan d3c3d9c9c6 feat(FE-170,174): add notes input to approval and rejection confirmation modals 2025-11-19 20:25:06 +07:00
rstubryan 42253d123b feat(FE-170,174): enhance approval and rejection modals to include notes input 2025-11-19 20:07:26 +07:00
rstubryan 539b329b6f refactor(FE-170,174): refine RecordingTable approval logic and remove unused tooltips 2025-11-19 19:47:55 +07:00
rstubryan 427887a0e0 feat(FE-170,174): update RecordingTable to restrict selection and approval to GROWING category only 2025-11-19 19:34:46 +07:00
rstubryan 7e58e46254 feat(FE-170,174): add loading state and improve validation messages in GradingForm 2025-11-19 19:17:32 +07:00
rstubryan c876824c8f feat(FE-170,174,175): add validation for incomplete grading in GradingForm 2025-11-19 19:05:45 +07:00
rstubryan 9c69369a51 feat(FE-170): remove total_weight from body_weights and update validation logic in RecordingForm 2025-11-19 18:04:15 +07:00
rstubryan 7b28e47c68 refactor(FE-170): streamline RecordingTable component by removing unused imports and state management for area, location, and kandang 2025-11-19 17:23:04 +07:00
rstubryan 432ea1e975 refactor(FE-208,212): update input wrapper classes for improved responsiveness in PurchaseRequestForm 2025-11-19 17:12:18 +07:00
rstubryan 14f216a352 refactor(FE-208,212): rename product_warehouse to warehouse and update related schema and form handling 2025-11-19 16:21:46 +07:00
rstubryan 8bda56e5d3 refactor(FE-208,212): add refreshApprovals and onModalClose props to approval forms 2025-11-19 13:27:36 +07:00
randy-ar 429f2b9109 fix(FE): adding capacity to kandang and change confirmation modal marketing with note 2025-11-19 13:00:21 +07:00
rstubryan 9d6455167f refactor(FE-208,212): enhance approval button layout and add reject option in PurchaseOrderDetail 2025-11-19 11:40:47 +07:00
rstubryan e3274a3353 refactor(FE-208,212): streamline approval button handling in PurchaseOrderDetail 2025-11-19 11:37:32 +07:00
rstubryan 07fd71558e refactor(FE-208,212): remove debug information from PurchaseOrderAcceptApprovalForm 2025-11-19 11:02:50 +07:00
rstubryan d2a69917e7 refactor(FE-208,212): improve rendering of grouped goods receipt items in PurchaseOrderDetail 2025-11-19 10:55:44 +07:00
rstubryan af5dfa9292 refactor(FE-208,212): implement grouping of goods receipt items and enhance table rendering in PurchaseOrderDetail 2025-11-19 10:50:53 +07:00
randy-ar 8662bcb63b fix(FE): resolve merge conflict 2025-11-19 10:30:21 +07:00
randy-ar f68e59e8c7 fix(FE): fixing table flickering when input form value 2025-11-19 10:21:59 +07:00
rstubryan b520b4ee54 refactor(FE-208,212,213): add transport-related fields and update form handling in PurchaseOrder forms 2025-11-19 10:19:05 +07:00
rstubryan 89d9d40713 refactor(FE-208,212): remove warehouse-related fields and logic from PurchaseOrder forms and schema 2025-11-19 09:17:17 +07:00
rstubryan 17378d8408 refactor(FE-208,212): rename getPurchaseItemError to isRepeaterInputError for clarity in validation checks 2025-11-18 23:13:15 +07:00
rstubryan 25544e2e38 refactor(FE-208,212): enhance PurchaseOrderDetail and PurchaseOrderStaffApprovalForm to conditionally render invoice and item receipt based on approval steps 2025-11-18 23:10:49 +07:00
rstubryan 89b54f6f87 refactor(FE-208,212): update PurchaseOrderDetail to conditionally render invoice based on update permissions 2025-11-18 22:51:29 +07:00
rstubryan 3a431352ed refactor(FE-208,212): enhance PurchaseOrderDetail and PurchaseOrderStaffApprovalForm to conditionally allow updates based on approval step 2025-11-18 22:46:46 +07:00
rstubryan f6afb741af refactor(FE-208,212): enhance PurchaseOrderStaffApprovalForm for edit functionality and validation checks 2025-11-18 22:32:39 +07:00
rstubryan f4bb87550c refactor(FE-212): add updateStaffApproval method and enhance PurchaseStaffApprovalItem schema with optional purchase_item_id 2025-11-18 22:28:27 +07:00
rstubryan 3d468d9507 refactor(FE-208,213): simplify PurchaseOrderForm and PurchaseOrderStaffApprovalForm by removing unused product and warehouse fields and enhancing price validation 2025-11-18 22:13:14 +07:00
rstubryan 0c79e86736 refactor(FE-208,212): update PurchaseOrderForm and PurchaseOrderStaffApprovalForm for improved validation and dynamic item handling 2025-11-18 21:00:46 +07:00
rstubryan 1b90d657ff refactor(FE-208,212): update PurchaseOrderForm and PurchaseOrderStaffApprovalForm for improved validation and dynamic item handling 2025-11-18 20:43:57 +07:00
rstubryan 0d025ba34c refactor(FE-208,213): streamline PurchaseOrderAcceptApprovalForm by removing hardcoded warehouse options and utilizing initialValues for dynamic data 2025-11-18 18:31:49 +07:00
rstubryan 8c3cd3bc53 refactor(FE-208,213): enhance PurchaseOrderDetail and PurchaseOrderStaffApprovalForm components with initialValues prop and clean up unused code 2025-11-18 18:22:10 +07:00
rstubryan 75e7b9a6de refactor(FE-208,213): update PurchaseOrderDetail and PurchaseOrderInvoice components for improved warehouse and supplier details 2025-11-18 14:58:49 +07:00
rstubryan 00c432a918 refactor(FE-208,212,213): update approval steps and improve PurchaseOrderDetail component structure 2025-11-18 14:49:30 +07:00
rstubryan f6cf22f885 refactor(FE-208): update PurchaseOrderDetail component to use initialValues prop 2025-11-18 14:36:16 +07:00
rstubryan 3d86c9ce6b refactor(FE-Storyless): add support for 'UPDATED' action in approval status and make page parameter optional 2025-11-18 14:34:26 +07:00
rstubryan d93f0c26b6 refactor(FE-212): update PurchaseOrderDetail component to use initialValues prop instead of data 2025-11-18 14:32:24 +07:00
rstubryan e8dd4f3759 feat(FE-218,212,213): implement PurchaseOrderDetail component and update related types 2025-11-18 14:30:09 +07:00
rstubryan edd59598f9 refactor(FE-208,212): refine PurchaseRequestForm validation and state management 2025-11-18 13:50:54 +07:00
rstubryan 964a4500ab feat(FE-208): update date formatting in PurchaseTable for improved readability 2025-11-18 13:39:42 +07:00
rstubryan 9a650a130d feat(FE-208): enhance PurchaseTable with improved state management and memoization 2025-11-18 13:35:58 +07:00
rstubryan 2f2c1fca07 feat(FE-212): add sales orders link and accepted file types constants 2025-11-18 13:25:21 +07:00
rstubryan 2680d5a24d feat(FE-212): add sales orders link and accepted file types constants 2025-11-18 13:24:34 +07:00
rstubryan 0f9019e7b4 fix(resolve): fix resolve MR 2025-11-18 11:36:41 +07:00
rstubryan 14b7f06369 fix(resolve): fix resolve MR 2025-11-18 11:17:20 +07:00
rstubryan 4dd50622a9 feat(FE-170,174,175): enhance grading button with consumable eggs validation and update rejection notes 2025-11-18 11:11:32 +07:00
rstubryan 6022ff2dae feat(FE-170,174,175): add tooltip for grading button based on consumable eggs validation 2025-11-18 10:48:41 +07:00
rstubryan 9164b985b1 feat(FE-170,174,175): implement approval lines for growing and laying recording categories 2025-11-18 10:37:10 +07:00
rstubryan 38cab1464c refactor(FE-170,174,175): add layout component and enhance API data fetching limits 2025-11-18 09:40:35 +07:00
Adnan Zahir 71b7598f87 Merge branch 'feat/FE/US-163/expense-request' into 'development'
[FEAT/FE][US#163] Expense Request

See merge request mbugroup/lti-web-client!55
2025-11-18 09:25:50 +07:00
Rivaldi A N S 075e5e452f Merge branch 'feat/FE/US-163/TASK-188-193-195-196-198-expense-request' into 'feat/FE/US-163/expense-request'
[FEAT/FE][US#163/TASK#188-193-195-196-198] Expense Request

See merge request mbugroup/lti-web-client!54
2025-11-17 09:15:04 +00:00
ValdiANS 8cd054e6aa Merge branch 'development' into feat/FE/US-163/expense-request 2025-11-17 16:04:35 +07:00
randy-ar a9bdb6c36e feat(FE-177): Integrate API sales order and fixing sales order initial state 2025-11-17 15:59:31 +07:00
ValdiANS 8b02d0df1c chore(FE-199): add reference_number, po_number, and approval property 2025-11-17 14:57:55 +07:00
ValdiANS 470cdb8b02 chore(FE-199): create Expense dummy data 2025-11-17 14:56:25 +07:00
ValdiANS da40e7d7be chore(FE-196): create expense request approval line 2025-11-17 14:55:27 +07:00
rstubryan 9260f1aff6 refactor(FE-212): update qty validation in PurchaseRequestForm schema to enforce numeric input 2025-11-17 14:54:15 +07:00
rstubryan 0087ba384c refactor(FE-212): update qty validation in PurchaseRequestForm schema to enforce numeric input 2025-11-17 14:45:46 +07:00
rstubryan 71a41d3f37 feat(FE-208,212): update purchase request form to use 'qty' instead of 'quantity' and add credit term field 2025-11-17 14:38:09 +07:00
ValdiANS c58dde960c chore(FE-188,193): add IDR prefix 2025-11-17 14:23:35 +07:00
ValdiANS 4e88e76538 feat(FE-193): add existing documents link 2025-11-17 14:10:08 +07:00
ValdiANS e6ac11893a chore(FE-198): create UploadRequestDocumentsFormSchema and UploadRequestDocumentsFormValues 2025-11-17 14:07:14 +07:00
ValdiANS 83f1ba46a7 chore(FE-188,193): adjust ExpenseKandangsTable component 2025-11-17 14:05:24 +07:00
ValdiANS fc76b44279 feat(FE-195,196): create RealizationStatusBadge component 2025-11-17 14:00:16 +07:00
ValdiANS dbe6ced602 feat(FE-195,196): create ExpenseStatusBadge component 2025-11-17 13:58:37 +07:00
ValdiANS f01e764d9c feat(FE-195): add filter and approve/reject functionality 2025-11-17 13:56:26 +07:00
rstubryan 6467af35bc refactor(FE-208): restructure goods receipt table columns in PurchaseOrderDetail 2025-11-17 13:51:32 +07:00
ValdiANS ac227f7780 feat(FE-196): create ExpenseDetail component for expense detail page 2025-11-17 13:48:07 +07:00
rstubryan c8f1ea0e4f feat(FE-208): add index column to goods receipt table in PurchaseOrderDetail 2025-11-17 13:45:28 +07:00
ValdiANS 6067c00219 feat(FE-193): create Expense Edit page 2025-11-17 13:40:40 +07:00
rstubryan 283c2b2a44 feat(FE-208,212): implement bulk delete functionality for purchase order items with confirmation modal 2025-11-17 13:21:43 +07:00
rstubryan 7ec4105454 refactor(FE-208,212): implement delete functionality for purchase order items with confirmation modal 2025-11-17 13:09:47 +07:00
ValdiANS a151abfbe9 feat(FE-196): create Expense Detail page 2025-11-17 11:58:34 +07:00
ValdiANS e14d10c503 chore(FE-193,196): create expense detail layout file 2025-11-17 11:57:44 +07:00
rstubryan d0ba9eadbd refactor(FE-208): add edit functionality and modal for Penerimaan Barang in PurchaseOrderDetail 2025-11-17 11:29:17 +07:00
rstubryan 2190f65cb2 refactor(FE-208): add edit functionality to Item Pembelian section in PurchaseOrderDetail 2025-11-17 11:15:13 +07:00
rstubryan b82ba60a32 refactor(FE-208): enhance PurchaseOrderDetail layout with section header for goods receipt information 2025-11-17 10:21:17 +07:00
rstubryan 30ed70b669 refactor(FE-212): add DeletePurchaseRequestItemPayload and implement PurchaseDeleteItemsService 2025-11-17 10:13:30 +07:00
rstubryan 69a8899cac refactor(FE-212): simplify PurchaseRequestService to a constant API instance 2025-11-17 09:39:16 +07:00
rstubryan 9f41768e54 refactor(FE-208): rename PurchaseRequisitions to PurchaseRequest and update related API references 2025-11-17 09:22:49 +07:00
rstubryan c951f09667 refactor(FE-208): rename PurchaseRequisitions to PurchaseRequest and update related API references 2025-11-17 09:21:18 +07:00
randy-ar d3c4706d87 refactor(FE-177-166-167): separate table repeater component and adjust data types with new API Payload 2025-11-16 23:19:28 +07:00
rstubryan 64605b168e refactor(FE-208): remove period from currency formatting in invoice display 2025-11-15 10:57:30 +07:00
rstubryan e421c7d422 refactor(FE-208): enhance PurchaseOrderInvoice layout with improved cell styling and add inner table header 2025-11-15 10:54:59 +07:00
rstubryan 4bd6ac3cac refactor(FE-208): enhance PurchaseOrderInvoice styles with primary color and adjust address maxWidth 2025-11-15 10:43:46 +07:00
rstubryan e638856ea9 chore(deps): add @react-pdf/renderer dependency for PDF generation functionality 2025-11-15 10:36:30 +07:00
rstubryan c45c8601cb feat(FE-208): add PurchaseOrderInvoice component for PDF generation and update PurchaseOrderDetail to integrate invoice display 2025-11-15 10:36:01 +07:00
rstubryan 57a867f611 refactor(FE-208): update approval buttons in PurchaseOrderDetail to include Manager Approval 2025-11-14 16:08:30 +07:00
rstubryan a5758aece4 refactor(FE-208): remove unnecessary font styling from purchase number display in PurchaseOrderDetail 2025-11-14 16:07:21 +07:00
randy-ar 3fdb10ec7f feat(FE-177): refactor sales order management with new schema and API integration 2025-11-14 15:52:58 +07:00
ValdiANS 1ee0454e6b Merge branch 'development' into feat/FE/US-163/TASK-188-193-198-slicing-expense-request-form 2025-11-14 13:41:47 +07:00
rstubryan 0c4c0ce3ab feat(FE-208,212): add PO document path and update PurchaseOrderDetail to display document link 2025-11-14 13:22:05 +07:00
rstubryan 00e0202be2 feat(FE-208): add confirmation modal for manager approval with notes functionality 2025-11-14 10:52:36 +07:00
rstubryan 3d49947c1e feat(FE-212): add manager approval requisition type and service with nullable notes 2025-11-14 10:52:21 +07:00
rstubryan 1ab72b8637 feat(FE-208): add staff and accept approval modals with action buttons in PurchaseOrderDetail 2025-11-14 10:23:37 +07:00
rstubryan f98a597115 refactor(FE-208): refactor PurchaseOrderDetail to integrate Purchase data and update Goods Receipt structure 2025-11-14 10:11:13 +07:00
rstubryan 1be61ae4ff feat(FE-212): extend PurchaseItem type with additional fields for enhanced purchase details 2025-11-14 09:09:23 +07:00
rstubryan 1b64c1f5d1 feat(FE-208): add goods receipt section with table and dummy data in purchase order detail view 2025-11-14 09:05:58 +07:00
rstubryan 7485919e52 feat(FE-208): implement purchase order detail view with collapsible sections and summary table 2025-11-13 16:43:08 +07:00
rstubryan e5d9612e29 refactor(FE-208): update 'Purchase' title to 'Pembelian' in constants 2025-11-13 15:50:11 +07:00
rstubryan b6ac8026c7 chore: prettier format 2025-11-13 15:43:41 +07:00
rstubryan d9ebde65cb chore: prettier format 2025-11-13 15:35:15 +07:00
Adnan Zahir c6f881c78d Merge branch 'feat/FE/US-75-chick-in-doc' into 'development'
[FEAT/FE][US#75] Refactor Chick In DOC

See merge request mbugroup/lti-web-client!52
2025-11-13 15:19:16 +07:00
Rivaldi A N S 18b036285a Merge branch 'dev/randy' into 'feat/FE/US-75-chick-in-doc'
[FIX/FE][US#17/TASK#238-239-240] Resolve Merge Conflict

See merge request mbugroup/lti-web-client!53
2025-11-13 07:54:40 +00:00
rstubryan 5648b51c2e feat(FE-Storyless): add collapsible functionality and improve image handling 2025-11-13 14:54:37 +07:00
rstubryan c7bad200ae chore: prettier format 2025-11-13 14:30:24 +07:00
rstubryan a2dd781140 chore: prettier format 2025-11-13 14:28:46 +07:00
randy-ar 10976452f5 fix(FE-85): remove debug message in flock edit page 2025-11-13 14:25:44 +07:00
ValdiANS 6ffb6e1560 chore: prettier format 2025-11-13 14:25:03 +07:00
ValdiANS 138c97a695 Merge branch 'development' into feat/FE/US-163/TASK-188-193-198-slicing-expense-request-form 2025-11-13 14:20:28 +07:00
randy-ar 56f57c4a6b fix(FE): resolve merge conflict 2025-11-13 14:12:25 +07:00
rstubryan c2479ad248 chore: prettier format 2025-11-13 14:08:35 +07:00
rstubryan b3f4e42f1a chore: prettier format 2025-11-13 14:01:07 +07:00
rstubryan ac8c39324b fix(resolve): resolve MR 2025-11-13 13:06:18 +07:00
Adnan Zahir 7478c2597f Merge branch 'feat/FE/US-77/transfer-to-laying' into 'development'
[FEAT/FE][US#77] Transfer to Laying - API Integration

See merge request mbugroup/lti-web-client!50
2025-11-13 12:33:30 +07:00
Rivaldi A N S 5975340c3d Merge branch 'dev/randy' into 'feat/FE/US-75-chick-in-doc'
[FEAT/FE][US#75/TASK#238-239-240] Refactor Chick In DOC

See merge request mbugroup/lti-web-client!48
2025-11-13 04:53:00 +00:00
randy-ar e5318fd6b5 refactor(FE-238-86): change useApprovalSteps params, and minimize fetching data 2025-11-13 11:18:11 +07:00
randy-ar def7ee4a0b fix(FE-238): hide approval button when chickin on submission 2025-11-13 10:46:11 +07:00
rstubryan 26811f5e3e Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-161/TASK-208-212-slicing-ui-and-validation-create-purchase-request-form 2025-11-13 10:24:37 +07:00
randy-ar 4485ea8181 fix(FE-238): mengubah ui form chick in 2025-11-13 09:54:51 +07:00
rstubryan 57ca050100 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-78/TASK-170-174-slicing-ui-and-validation-create-daily-recording-laying-form 2025-11-13 09:34:52 +07:00
rstubryan b64ab6567b feat(FE-170,175): simplify approval status logic in GradingForm and RecordingForm 2025-11-13 09:23:29 +07:00
rstubryan 478ca186d3 feat(FE-170,175): add approval steps and status display in GradingForm and RecordingForm 2025-11-12 23:41:22 +07:00
rstubryan 47262adaf1 feat(FE-170,174,175): implement approval steps in RecordingForm and remove unused form step status 2025-11-12 23:12:22 +07:00
rstubryan e2249cf73a chore(FE-Storyless): temp fix resolve issue error on flock name 2025-11-12 22:24:06 +07:00
rstubryan 0e7c178736 feat(FE-170): enhance RecordingForm to include kandang_id from lookup and simplify product labels 2025-11-12 22:13:17 +07:00
rstubryan 4a974048a7 feat(FE-208): refactor Purchase Order forms to use table layout for improved readability and maintainability 2025-11-12 21:52:02 +07:00
rstubryan cd8ab8844b feat(FE-208): enhance Purchase Order acceptance form with Card component and improved layout for received date inputs 2025-11-12 20:43:34 +07:00
rstubryan 5d88af1a31 feat(FE-208,212): implement table-based UI for Purchase Order acceptance and staff approval forms 2025-11-12 20:27:06 +07:00
randy-ar fa3ba46810 refactor(FE): menambahkan parameter params useApprovalSteps dan return rawData 2025-11-12 17:03:37 +07:00
rstubryan 4215c6c6ce feat(FE-208): enhance DateInput component with range selection and modal support 2025-11-12 16:54:17 +07:00
randy-ar 6670f1e31b refactor(FE-238-239-240): implement approval workflow chickin & project flock, membuat custom hook useApprovals, dan handling error format approvals 2025-11-12 15:25:14 +07:00
randy-ar b2f4317c08 refactor(FE-238-239-240): implement approval workflow chickin & project flock, membuat custom hook useApprovals, dan handling error format approvals 2025-11-12 15:24:44 +07:00
Rivaldi A N S b9fb3c8311 Merge branch 'feat/FE/US-77/TASK-149-transfer-to-laying-api-integration' into 'feat/FE/US-77/transfer-to-laying'
[FEAT/FE][US#77/TASK#149] API Integration

See merge request mbugroup/lti-web-client!49
2025-11-12 06:48:25 +00:00
ValdiANS 305ad67cb4 chore: run format before commit 2025-11-12 13:39:48 +07:00
ValdiANS e3ecf5dc50 feat(FE-149): adjust BaseTransferToLaying and CreateTransferToLayingPayload structure based on the API 2025-11-12 13:38:12 +07:00
ValdiANS bc8ba1df9c feat(FE-149): add flock_name and kandangs.project_flock_kandang_id field 2025-11-12 13:37:05 +07:00
ValdiANS e7d2c3bc13 feat: add capacity to kandang 2025-11-12 13:36:33 +07:00
ValdiANS b7a055888b chore: remove unnecessary code 2025-11-12 13:36:22 +07:00
ValdiANS 8d09aec66a feat(FE-149): integrate TransferToLayingService to API 2025-11-12 13:36:12 +07:00
ValdiANS 776b809931 chore: change project flock API endpoint 2025-11-12 13:35:24 +07:00
ValdiANS c6fb707a9f chore(FE-149): add TRANSFER_TO_LAYING_APPROVAL_LINE constant 2025-11-12 13:34:49 +07:00
ValdiANS 569a8b495b feat(FE-149): integrate TransferToLayingForm to API 2025-11-12 13:34:25 +07:00
ValdiANS 1ff1e53e02 feat(FE-149): create getTransferToLayingFormInitialValues and getFilledTransferToLayingFormInitialValues helper function 2025-11-12 13:32:23 +07:00
ValdiANS 8e3282bb7d feat(FE-149): integrate TransferToLayingsTable to API 2025-11-12 13:31:35 +07:00
ValdiANS 3c0bd647a8 chore: add capacity dummy data 2025-11-12 13:30:35 +07:00
ValdiANS 557e20cffe chore: set approval status to idle if previous status is rejected 2025-11-12 13:25:58 +07:00
ValdiANS 5124c1b66a chore: create ConfirmationModalWithNotes component 2025-11-12 13:24:51 +07:00
ValdiANS c9092f36e3 chore: add children prop 2025-11-12 13:23:20 +07:00
ValdiANS 73ab5703db chore: update DateInput component 2025-11-12 13:19:00 +07:00
ValdiANS 2959295bfa chore: add enableRowSelection prop 2025-11-12 13:18:26 +07:00
ValdiANS 03b16248e5 chore: update Modal component 2025-11-12 13:15:47 +07:00
rstubryan f264474293 refactor(FE-208): update modal width classes in PurchaseTable for improved responsiveness 2025-11-12 13:14:27 +07:00
ValdiANS 963377199f feat(FE-149): integrate transfer to laying edit page to API 2025-11-12 13:11:30 +07:00
ValdiANS 4bbf6fd7f8 feat(FE-149): integrate transfer to laying detail page to API 2025-11-12 13:10:18 +07:00
ValdiANS 4422b7391a chore(FE-149): install react-day-picker 2025-11-12 13:04:09 +07:00
rstubryan c770651a01 refactor(FE-212): simplify validation for supplier, area, location, and warehouse fields in PurchaseRequisitionsForm 2025-11-12 12:58:08 +07:00
rstubryan 603f95a9b2 refactor(FE-208,212): update terminology in PurchaseOrder forms for consistency and clarity 2025-11-12 11:54:00 +07:00
rstubryan f26e54e8f2 refactor(FE-208,212): update width classes for form fields in PurchaseOrder forms for better responsiveness 2025-11-12 11:16:46 +07:00
rstubryan bc53b9073c feat(FE-208,212): simplify PurchaseOrder forms by removing unused fields and updating user names 2025-11-12 10:51:57 +07:00
rstubryan 45f12cad4f feat(FE-Storyless): update modal functionality to use show() method and clean up code 2025-11-12 09:33:32 +07:00
randy-ar 5dccaf40cb refactor(FE-88): memisahkan file api project flock & penyesuaian tipe data dan paylod dengan BE 2025-11-12 09:04:23 +07:00
rstubryan fde9c449a6 feat(FE-Storyless): update UI form UI repo 2025-11-12 08:57:06 +07:00
rstubryan ecb497430a feat(FE-208,212): enhance PurchaseOrder forms with onCancel functionality and UI improvements 2025-11-11 15:05:05 +07:00
rstubryan 8c17367fb6 feat(FE-208,212): add PurchaseOrderAcceptApprovalForm and validation schema for acceptance of purchase requisitions 2025-11-11 14:06:53 +07:00
rstubryan 21ac73527d feat(FE-212): refactor purchase requisitions services and update item schema for approval process 2025-11-11 13:23:48 +07:00
kris f00e772018 Update .gitlab-ci.yml file 2025-11-11 06:07:24 +00:00
rstubryan f7b2e3c6f2 feat(FE-208,212): add PurchaseRequisitionsStaffApprovalForm and schema for staff approval process 2025-11-11 11:26:46 +07:00
rstubryan 5fc01a9afa feat(FE-208): use CheckboxInput component for item selection in PurchaseRequisitionsForm 2025-11-11 11:26:22 +07:00
rstubryan 3ed3e2e21a feat(FE-208): add PurchaseOrderDetail component for displaying approval steps 2025-11-10 17:09:28 +07:00
rstubryan 7d1992d075 feat(FE-212): add staff approval service and payload types for purchase requisitions 2025-11-10 17:09:04 +07:00
randy-ar f63d3d3870 refactor(FE): Refactor project flock api & implement approval component in project flock details 2025-11-10 17:05:24 +07:00
rstubryan 63dac00f17 feat(FE-212): add PURCHASE_ORDER_APPROVAL_LINE for purchase order approval steps 2025-11-10 14:33:20 +07:00
rstubryan efcc14f3ab refactor(FE-212): rename PurchaseApi to PurchaseRequisitionsApi and update related references in forms and tables 2025-11-10 14:33:01 +07:00
rstubryan 5e64d37c61 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-161/TASK-208-212-slicing-ui-and-validation-create-purchase-request-form 2025-11-10 13:12:02 +07:00
rstubryan c7022ee200 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-78/TASK-170-174-slicing-ui-and-validation-create-daily-recording-laying-form 2025-11-10 08:37:23 +07:00
rstubryan 3ac0672f7e feat(FE-170,175): update RecordingForm to include selectedKandang in product URL generation and options filtering 2025-11-10 08:36:55 +07:00
randy-ar 9f4f140018 refactor(FE-239-238): Refactor UI & API Integration For Form Chickin & Chickin Details 2025-11-10 06:07:02 +07:00
randy-ar e0c347c3d5 refactor(FE-87-106): refactor api integration untuk project flock dan project flock kandang 2025-11-10 04:08:08 +07:00
kris 13d57c206b Update .gitlab-ci.yml file 2025-11-09 10:21:06 +00:00
kris 773aa2dbb1 Update .gitlab-ci.yml file 2025-11-09 10:10:19 +00:00
kris f14adc46d3 Update .gitlab-ci.yml file 2025-11-09 09:50:29 +00:00
kris e7592eb221 Update .gitlab-ci.yml file 2025-11-09 09:48:13 +00:00
kris 32f202d814 Update .gitlab-ci.yml file 2025-11-09 09:23:32 +00:00
kris 942b19375e Merge branch 'chore/build-cicd' into 'development'
update Dockerfile

See merge request mbugroup/lti-web-client!47
2025-11-09 09:09:14 +00:00
GitLab Deploy Bot b62427c5f4 update Dockerfile 2025-11-09 16:08:22 +07:00
kris f126e976fd Update .gitlab-ci.yml file 2025-11-09 08:34:51 +00:00
kris 0a2373572f Merge branch 'chore/build-cicd' into 'development'
edit Dockerfile

See merge request mbugroup/lti-web-client!46
2025-11-09 08:22:15 +00:00
GitLab Deploy Bot 73d2de6dfb edit Dockerfile 2025-11-09 15:21:15 +07:00
kris 49e648689a Merge branch 'chore/build-cicd' into 'development'
edit Dockerfile

See merge request mbugroup/lti-web-client!45
2025-11-09 08:16:08 +00:00
GitLab Deploy Bot d3cc38aed5 edit Dockerfile 2025-11-09 15:15:26 +07:00
kris a9620246c0 Update .gitlab-ci.yml file 2025-11-09 08:05:11 +00:00
kris 2d649eb0ff Merge branch 'chore/build-cicd' into 'development'
edit .gitlab-ci

See merge request mbugroup/lti-web-client!44
2025-11-09 08:02:31 +00:00
GitLab Deploy Bot 66b6579f27 edit .gitlab-ci 2025-11-09 15:01:10 +07:00
kris 4f9695aabe Merge branch 'chore/build-cicd' into 'development'
edit .gitlab-ci

See merge request mbugroup/lti-web-client!43
2025-11-09 07:54:31 +00:00
GitLab Deploy Bot 29ff1bb50a edit .gitlab-ci 2025-11-09 14:53:49 +07:00
kris fefb665485 Merge branch 'chore/build-cicd' into 'development'
build docker via gitlab

See merge request mbugroup/lti-web-client!42
2025-11-09 07:49:21 +00:00
GitLab Deploy Bot 52e8fb4a3b build with tag docker 2025-11-09 14:44:58 +07:00
GitLab Deploy Bot 8a11c176aa build docker via gitlab 2025-11-09 14:21:58 +07:00
rstubryan 8db9d1a52c refactor(FE-212): update product warehouse fetching logic and options mapping in PurchaseRequisitionsForm 2025-11-08 10:53:29 +07:00
rstubryan 10dca5c692 refactor(FE-208): rename PurchaseRequestForm to PurchaseRequisitionsForm and update related components 2025-11-08 09:53:21 +07:00
rstubryan 53751d566c refactor(FE-212): rename PurchaseRequestForm schema to PurchaseRequisitionsForm and update related types 2025-11-08 09:52:48 +07:00
rstubryan 12a1e61b68 refactor(FE-212): update purchase types and payloads for requisition handling 2025-11-08 09:52:34 +07:00
rstubryan 4f88f26b71 feat(FE-170,175): update approval logic in RecordingTable to include additional conditions for egg grading status 2025-11-07 14:56:28 +07:00
rstubryan 80fcabde7e feat(FE-170,175): extend GradingForm to support additional grading data and improve form initialization 2025-11-07 14:56:03 +07:00
rstubryan 2e35462300 feat(FE-170): change Cancel button to Reset in RecordingForm for improved form handling 2025-11-07 08:51:54 +07:00
rstubryan f8f613ec9d refactor(FE-170,175): update approval logic in RecordingForm to consider grading data for LAYING category 2025-11-06 23:45:02 +07:00
rstubryan a1bf38023c feat(FE-170,175): enhance approval logic and tooltips for LAYING category recordings in RecordingTable 2025-11-06 23:40:13 +07:00
rstubryan f032f71136 feat(FE-170,175): implement payload creation for growing and laying recordings in RecordingForm 2025-11-06 23:27:46 +07:00
rstubryan 2e5530cf91 refactor(FE-170): simplify confirmation modal text in RecordingTable 2025-11-06 23:15:50 +07:00
rstubryan c45217e98e feat(FE-170,175): add grading data handling in RecordingForm and update types 2025-11-06 22:40:04 +07:00
rstubryan 62c16bb9d1 feat(FE-170,175): enhance RecordingTable with grading completion checks and approval logic 2025-11-06 22:28:31 +07:00
rstubryan c012668340 feat(FE-175): update grading logic in GradingForm to utilize konsumsiBaikEggId 2025-11-06 21:38:52 +07:00
ValdiANS 512e016b5e chore(FE-199): adjust Expense type 2025-11-06 21:11:18 +07:00
ValdiANS 57ffd50558 feat(FE-195): set expense table column header and cell 2025-11-06 21:10:50 +07:00
rstubryan 5245d44a79 feat(FE-170,175): add module_id prop to approval history modal in RecordingTable 2025-11-06 19:13:11 +07:00
rstubryan b39e8325f8 feat(FE-170): simplify action buttons in RecordingForm for detail view 2025-11-06 17:47:34 +07:00
rstubryan b24c9d8336 feat(FE-170): add approval logic to RecordingForm for detail view actions 2025-11-06 17:17:49 +07:00
rstubryan d8b076d105 feat(FE-170,175): enhance RecordingForm and RecordingTable with approval logic and UI improvements 2025-11-06 17:12:30 +07:00
randy-ar fcc2fced06 feat(FE-166-167-168): slicing ui create, edit dan detail sales order 2025-11-06 16:57:17 +07:00
rstubryan ffa11fa20a feat(FE-170): add grading button for laying category in RecordingTable 2025-11-06 15:46:21 +07:00
ValdiANS e4b61cfe05 chore(FE-199): create Expense API service with dummy data 2025-11-06 15:30:22 +07:00
ValdiANS c59a88bbcb chore(FE-188,193): create formik helper function utils and create removeArrayItemAndSync formik helper function 2025-11-06 15:29:42 +07:00
ValdiANS a8b1f6f8c2 chore(FE-188,193): create convertRowSelectionArrToObj and convertRowSelectionObjToArr helper function 2025-11-06 15:29:15 +07:00
ValdiANS 6e582c4e7c chore(FE-188,193): create ACCEPTED_FILE_TYPES constant 2025-11-06 15:29:00 +07:00
ValdiANS f011f5b7f9 feat(FE-188,193): create ExpenseRequestKandangDetailExpense component 2025-11-06 15:28:42 +07:00
ValdiANS 1d4a16cd0b feat(FE-198): add kandangs, existing_documents, kandangExpenses to ExpenseFormSchemaType and create helper function to get form initial values 2025-11-06 15:28:12 +07:00
ValdiANS 2a71734583 feat(FE-188,193): add Vendor, Request Documents, and Kandang Detail Expense input 2025-11-06 15:26:54 +07:00
ValdiANS e9eee6eb3e feat(FE-188,193): create ExpenseKandangsTable component 2025-11-06 15:22:03 +07:00
rstubryan 069ab98da1 refactor(FE-170): refactor RecordingForm navigation and action buttons for improved user experience 2025-11-06 15:19:01 +07:00
rstubryan 90dd26064d feat(FE-170,175): enhance GradingForm with additional recording details and improve UI for grading information 2025-11-06 15:12:04 +07:00
rstubryan de9ec716f5 feat(FE-170,175): add toast notification for grading exceeding available eggs and enhance UI for grading information 2025-11-06 14:53:21 +07:00
rstubryan 501222a4ee feat(FE-170,175): enhance GradingForm with total egg consumption display and validation for grading limits 2025-11-06 14:42:17 +07:00
rstubryan 62c595bdf6 feat(FE-170,175): enhance product fetching in RecordingForm with additional filters and limits 2025-11-06 14:26:45 +07:00
rstubryan 06eec88d56 feat(FE-170,175): implement form steps and navigation for LAYING category in RecordingForm 2025-11-06 14:13:16 +07:00
randy-ar 158971d904 feat(FE-166-169): Slicing UI Penjualan Form dan Client side validation 2025-11-06 13:45:52 +07:00
rstubryan 6d8d608cc9 refactor(FE-170): add support for 'UPDATED' action in RecordingTable with corresponding status text 2025-11-06 13:27:18 +07:00
rstubryan c9edc407b4 refactor(FE-174,175): update approve method to allow custom notes in RecordingForm 2025-11-06 13:08:26 +07:00
rstubryan c774480a5a refactor(FE-170): enhance RecordingForm with approve and reject buttons for detail view 2025-11-06 13:05:48 +07:00
rstubryan fa42f9b941 refactor(FE-170): clean up imports and enhance state management in RecordingForm 2025-11-06 10:58:14 +07:00
rstubryan 3d3569bbc0 feat(FE-170,175): integrate ProjectFlockKandang API and enhance RecordingForm with detailed project flock and kandang options 2025-11-06 10:33:45 +07:00
rstubryan a524dec16d refactor(FE-174): add ProjectFlockKandang API and enhance type definitions 2025-11-06 09:53:32 +07:00
rstubryan 4e40aba544 refactor(FE-170): refine product name checks in RecordingForm by removing specific keywords 2025-11-06 09:21:01 +07:00
rstubryan 6c164313de refactor(FE-Storyless): correct endpoint URL for project flocks in RecordingService 2025-11-06 09:18:52 +07:00
rstubryan be98655c75 feat(FE-170): improve product name checks in RecordingForm for better matching 2025-11-05 16:43:18 +07:00
rstubryan 333212a1de feat(FE-170,174,175): enhance RecordingForm with product warehouse integration and improve data handling 2025-11-05 15:39:19 +07:00
rstubryan a33a4167c1 refactor(FE-170,175): update approval notes handling in RecordingTable for better clarity 2025-11-05 14:00:48 +07:00
rstubryan 2cf8bcf746 feat(FE-170): refactor approval history button and badge components in RecordingTable 2025-11-05 14:00:02 +07:00
rstubryan b1457a5feb feat(FE-170,174,175): add approval history modal and integrate approval API in RecordingTable 2025-11-05 13:41:55 +07:00
rstubryan fac9d5fa42 feat(FE-170,174): update validation messages and labels for egg product fields in RecordingForm 2025-11-05 13:13:46 +07:00
rstubryan 4454eac8af feat(FE-170,175): implement multi-select approval and rejection for recordings in RecordingTable 2025-11-05 10:01:07 +07:00
rstubryan fa36c10c01 feat(FE-170,175): add approval and rejection functionality with confirmation modals in RecordingTable 2025-11-05 09:46:38 +07:00
rstubryan 02cc4a759d feat(FE-Storyless): add approval workflows for project flocks and recordings 2025-11-05 08:43:10 +07:00
rstubryan 04a1f5e014 feat(FE-170,174): add total_weight field and update calculations in body_weights for RecordingForm 2025-11-04 16:23:29 +07:00
rstubryan b7ab537b95 feat(FE-170): add selection checkboxes and enhance project details in RecordingTable 2025-11-04 16:07:02 +07:00
rstubryan b0665b2541 refactor(FE-174): rename name to flock_name in BaseProjectFlock type for clarity 2025-11-04 16:06:39 +07:00
rstubryan 77e3fe12c3 refactor(FE-170): update API endpoint and rename label for project flock in RecordingForm 2025-11-04 16:06:04 +07:00
ValdiANS 6a070e39da chore(FE-188): updateDropFileInput component 2025-11-04 15:54:13 +07:00
ValdiANS 3b69286a8e chore(FE-188): add DropFileInput component 2025-11-04 15:47:01 +07:00
ValdiANS 0de2e87221 fix(FE-188): required symbol space 2025-11-04 15:46:49 +07:00
ValdiANS 9daa6aaf8c chore(FE-188): update Modal component 2025-11-04 15:46:30 +07:00
ValdiANS a12ae51f3a fix(FE-188): rename to ExpenseRequestForm 2025-11-04 15:46:08 +07:00
ValdiANS 17c316c4af fix(FE-188): required symbol space 2025-11-04 15:45:36 +07:00
ValdiANS c438a8f6aa chore: install react-dropzone 2025-11-04 15:39:55 +07:00
rstubryan 966ad7545c refactor(FE-174): rename project_flock_kandangs_id to project_flock_kandang_id for consistency in RecordingForm 2025-11-04 15:20:33 +07:00
rstubryan 0a17249fb9 refactor(FE-174): rename project_flock_kandangs_id to project_flock_kandang_id for consistency in RecordingForm schema 2025-11-04 14:54:07 +07:00
rstubryan b19be7dd4b refactor(FE-174): update recording types to include approval and egg grading fields for enhanced data handling 2025-11-04 14:53:07 +07:00
rstubryan 8c29358594 refactor(FE-208): remove required attribute from Area and Lokasi SelectInputs in PurchaseRequestForm 2025-11-04 14:36:07 +07:00
randy-ar d8637923bd refactor(FE-106-91-339-238): Slicing UI Chickin DOC Refactored 2025-11-04 13:24:10 +07:00
rstubryan 9d86e21657 refactor(FE-208): remove checkbox selection from PurchaseTable component 2025-11-04 13:20:44 +07:00
rstubryan ef193b9f03 feat(FE-208,212): enhance PurchaseRequestForm with dummy data and update type definitions for purchase items 2025-11-04 13:17:43 +07:00
rstubryan 4828af71b8 feat(FE-208): create PurchaseEdit page with dummy data and integrate PurchaseRequestForm 2025-11-04 11:31:32 +07:00
rstubryan 3312a47f38 feat(FE-208): create PurchaseDetail page with dummy data and integrate PurchaseRequestForm 2025-11-04 11:22:52 +07:00
rstubryan c790180e86 feat(FE-208): add Layout component to wrap children with SuspenseHelper 2025-11-04 10:51:54 +07:00
rstubryan ef339e128d feat(FE-208,212): add Purchase and PurchaseTable components for managing purchase requests 2025-11-04 10:51:12 +07:00
rstubryan 7c9c7eac10 refactor(FE-208,212): update import path for PurchaseRequestForm to reflect new directory structure 2025-11-04 10:49:45 +07:00
rstubryan 986830aa47 refactor(FE-208,212): rename PurchaseRequestForm files and update import paths for consistency 2025-11-04 10:49:19 +07:00
rstubryan 1e44fec15f feat(FE-208,212): implement PurchaseService for fetching purchase request data with dummy response 2025-11-04 10:48:57 +07:00
rstubryan 39dbf57d7f refactor(FE-208,212): streamline PurchaseRequestForm structure, enhance state management, and improve field handling for purchase items 2025-11-04 09:20:39 +07:00
rstubryan 289c8d5672 refactor(FE-208,212): enhance PurchaseRequestForm with product data fetching, update price and UOM fields based on selected products 2025-11-04 08:56:57 +07:00
ValdiANS afa0c6c83f chore: rename ExpenseForm to ExpenseRequestForm 2025-11-03 16:16:12 +07:00
ValdiANS 1afa6f7fad chore: rename ExpenseForm.schema.ts to ExpenseRequestForm.schema.ts 2025-11-03 16:15:19 +07:00
rstubryan ee24ceaff1 refactor(FE-208,212): update PurchaseRequestForm to reset location fields on area change, improve handling of location value and dependencies 2025-11-03 15:45:42 +07:00
rstubryan ecdd8ae49c refactor(FE-208,212): update PurchaseRequestForm schema and validation, improve credit term handling and reset logic for supplier changes 2025-11-03 15:19:19 +07:00
rstubryan e1d070b3af refactor(FE-208,212): update PurchaseRequestForm schema and validation, enhance credit term handling and improve error messages for required fields 2025-11-03 15:02:00 +07:00
rstubryan 4149c51a7b refactor(FE-208,212): update PurchaseRequestForm validation for area and location fields, enhance error handling and conditional checks 2025-11-03 14:29:24 +07:00
rstubryan ae5a57277b refactor(FE-208,212): enhance PurchaseRequestForm with location and warehouse handling, update validation and reset logic for dependent fields 2025-11-03 14:06:32 +07:00
rstubryan 7b19cd4a21 refactor(FE-208,212): enhance PurchaseRequestForm with area and location fields, update validation and data handling for new inputs 2025-11-03 13:01:17 +07:00
rstubryan 408250d7ed refactor(FE-208): enhance PurchaseRequestForm layout and actions, replace header with custom component and improve button handling 2025-11-03 11:39:37 +07:00
rstubryan ae91e17ac0 refactor(FE-207,212): update PurchaseRequestForm schema and validation, enforce required fields and improve data handling for purchase items 2025-11-03 11:29:43 +07:00
rstubryan b4a9c86c2a refactor(FE-212): update PurchaseRequestForm schema and validation, streamline warehouse handling and add sub quantity field 2025-11-03 11:04:07 +07:00
rstubryan 1d79e8de1d refactor(FE-Storyless): streamline RecordingForm component by native card and optimizing layout for better usability 2025-11-03 10:45:36 +07:00
rstubryan e4ab86c3eb refactor(FE-170): streamline RecordingForm component by native card and optimizing layout for better usability 2025-11-03 10:44:37 +07:00
rstubryan d8599a850a refactor(FE-170): streamline RecordingTable component by removing unused state and optimizing layout for better usability 2025-11-03 10:40:13 +07:00
ValdiANS ae560c2451 chore: run prettier formatting before every commit 2025-11-03 10:31:44 +07:00
rstubryan bcb4d4492d refactor(FE-170): replace FormHeader with custom header in GradingForm and RecordingForm for improved layout and navigation 2025-11-03 10:30:33 +07:00
ValdiANS 176e1e7cb8 chore: install react-day-picker 2025-11-03 10:29:23 +07:00
ValdiANS f6d4ef4697 chore: update DateInput component 2025-11-03 10:27:51 +07:00
rstubryan e9e8ad771e refactor(FE-174): enhance GradingForm and RecordingForm with improved error handling and modal integration for delete actions 2025-11-03 10:22:35 +07:00
randy-ar 219cbedbcd refactor(FE-238-106): change dateinput and create chickin page and pull development 2025-11-03 10:12:15 +07:00
rstubryan d53f7fc72f fix(resolve): fix resolve merge 2025-11-03 10:12:12 +07:00
randy-ar 3eb2930640 refactor(FE-238-106): change dateinput and create chickin page 2025-11-03 10:09:12 +07:00
rstubryan 4e4117b5b0 fix(resolve): fix resolve merge 2025-11-03 10:02:26 +07:00
rstubryan 2ba23654ce refactor(FE-Storyless): simplify RowOptionsMenu by using RowOptionsMenuWrapper and enhance button layout 2025-11-03 09:44:50 +07:00
rstubryan ac11559754 chore(FE-Storyless): remove inputmask package and its type definitions from dependencies 2025-11-03 09:35:52 +07:00
rstubryan fa1552e276 fix(resolve): fix resolve merge 2025-11-03 09:35:09 +07:00
rstubryan 9a4d961dee refactor(FE-174): implement create, update, and delete grading methods in RecordingApi and update handlers 2025-11-03 09:28:20 +07:00
ValdiANS 33c0d5513c Merge branch 'development' into feat/FE/US-163/expense-request 2025-11-03 09:26:03 +07:00
Adnan Zahir d679c9f278 Merge branch 'fix/ISSUE-236/table-dropdown-issue' into 'development'
Fix: LTI Issue #236

See merge request mbugroup/lti-web-client!41
2025-11-03 09:08:21 +07:00
rstubryan c26e174885 refactor(FE-174): enhance RecordingApi by adding approve and reject methods for better approval handling 2025-11-03 09:00:49 +07:00
rstubryan b976600099 refactor(FE-170,174): update GradingForm to include recording_egg_id in grading data enhance validation schema 2025-11-02 23:22:37 +07:00
rstubryan aac7215be7 refactor(FE-170,174): update schema and validation for stocks and depletions; rename usage_qty to qty for consistency 2025-11-02 23:14:07 +07:00
rstubryan e116311dc2 refactor(FE-170,174): restructure schema and validation for body weights, stocks, and depletions; improve handling of input values 2025-11-02 23:04:54 +07:00
rstubryan 4afeded080 Merge branch 'dev/restu' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-78/TASK-170-174-slicing-ui-and-validation-create-daily-recording-laying-form 2025-11-02 21:53:56 +07:00
rstubryan 83757b5208 fix(resolve): fix resolve merge 2025-11-02 21:53:41 +07:00
rstubryan f335bc23eb refactor(FE-Storyless): simplify MovementForm by integrating useSelect for warehouse and supplier inputs, enhance data fetching logic 2025-11-02 21:42:03 +07:00
rstubryan d793824520 refactor(FE-Storyless): enhance MovementForm schema and validation, improve handling of product quantities and delivery costs 2025-11-02 21:33:38 +07:00
rstubryan 901b61a172 refactor(FE-Storyless): enhance ProductCategoryForm schema and validation, improve UI text and layout 2025-11-02 21:21:57 +07:00
rstubryan 39dd583e77 refactor(FE-Storyless): enhance ProductForm schema and handling, add required fields and improve validation 2025-11-02 21:15:41 +07:00
rstubryan fc3b090da5 refactor(FE-Storyless): replace TextInput with NumberInput for price and tax fields, enhance form handling 2025-11-02 20:59:37 +07:00
rstubryan 16db7af070 chore(FE-Storyless): remove inputmask and related type definitions 2025-11-02 20:14:22 +07:00
ValdiANS 0ae4fe0831 chore: format code using prettier 2025-11-01 15:58:47 +07:00
ValdiANS f01dae5f97 chore: add format script 2025-11-01 15:58:03 +07:00
ValdiANS 42b4206e66 chore: install prettier 2025-11-01 15:53:37 +07:00
ValdiANS 46572fd992 chore: update add button styling 2025-11-01 15:36:21 +07:00
ValdiANS b2540f1d43 chore: use RowOptionsMenuWrapper 2025-11-01 15:36:11 +07:00
ValdiANS ad10ffbba3 chore: set min width for RowCollapseOptions 2025-11-01 15:35:49 +07:00
ValdiANS 8a3c7d35ec chore: update add button styling and copywriting 2025-11-01 15:35:34 +07:00
ValdiANS d853b43e17 fix: use RowOptionsMenuWrapper component for RowOptionsMenu 2025-11-01 15:31:11 +07:00
ValdiANS e6187555ce chore: create RowOptionsMenuWrapper component 2025-11-01 15:26:25 +07:00
ValdiANS bba8fb15e5 chore: change a element to button 2025-11-01 15:24:52 +07:00
rstubryan f70433d901 refactor(FE-Storyless): remove UpdateMovementPayload type and related schema, streamline MovementForm handling 2025-11-01 10:43:43 +07:00
rstubryan 393f8a6d1b Merge remote-tracking branch 'origin/dev/restu' into dev/restu
# Conflicts:
#	src/components/pages/inventory/movement/MovementTable.tsx
2025-11-01 09:46:46 +07:00
rstubryan e73d3e0823 refactor(FE-Storyless): add product and warehouse filters with select inputs 2025-11-01 09:46:31 +07:00
rstubryan ee4a470fd2 refactor(FE-Storyless): add product and warehouse filters with select inputs 2025-11-01 09:46:06 +07:00
rstubryan 40171720fb Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into dev/restu 2025-11-01 08:36:04 +07:00
rstubryan 09cb5f10aa refactor(FE-Storyless): replace FormHeader and FormActions with custom header and action buttons for improved UI 2025-11-01 08:35:46 +07:00
rstubryan 1228b45045 feat(FE-170,174): clean up RecordingForm and RecordingTable components for improved readability and maintainability 2025-10-31 17:27:10 +07:00
rstubryan 19afb80597 feat(FE-170,174): refactor GradingForm to use grading form handlers and remove approval logic 2025-10-31 17:26:56 +07:00
rstubryan 9495742cb7 feat(FE-174): add grading form handlers for creating, updating, and deleting grading records 2025-10-31 17:26:24 +07:00
rstubryan 01db13ed6c feat(FE-170,174): add GradingForm component for managing grading records 2025-10-31 15:15:48 +07:00
rstubryan 4a1f775c85 feat(FE-170): update daily recording form to redirect to grading form after successful submission 2025-10-31 15:15:32 +07:00
randy-ar 495e11c6fe fix(FE-41): Menambahkan kolom kapasitas di tabel kandang 2025-10-31 14:57:15 +07:00
ValdiANS 15893c18c9 feat(FE-199): create Expense API types 2025-10-31 14:33:28 +07:00
ValdiANS 026e60704b feat(FE-199): create Expense API service 2025-10-31 14:33:19 +07:00
ValdiANS 21b155e64b feat(FE-195): add Expense menu 2025-10-31 14:30:36 +07:00
ValdiANS 1a1bf8754e feat(FE-188): create Expense Form schema 2025-10-31 14:30:00 +07:00
ValdiANS a51c7c44ec feat(FE-188): create ExpenseForm component 2025-10-31 14:29:31 +07:00
ValdiANS 4d1241d712 feat(FE-195): create ExpenseTable component 2025-10-31 14:29:11 +07:00
ValdiANS 80747bb441 chore(FE-195): adjust ConfirmationModal primaryButton and secondaryButton props 2025-10-31 14:28:51 +07:00
ValdiANS 00f64b1897 chore: add string as the valueKey and labelKey type 2025-10-31 14:28:04 +07:00
ValdiANS 01bfe1cc3b chore: export ButtonProps interface 2025-10-31 14:27:13 +07:00
ValdiANS a0cf6c0f56 feat(FE-188): create Add Expense page 2025-10-31 14:26:52 +07:00
ValdiANS c72befb5b4 feat(FE-195): create Expense page 2025-10-31 14:25:01 +07:00
rstubryan 3a52d800e0 feat(FE-174): add grading functionality to daily recording form with validation 2025-10-31 14:01:51 +07:00
randy-ar b6991652ac feat(FE-169): Slicing UI Index Pengajuan Sales & Define Data Type for Marketing 2025-10-31 13:57:30 +07:00
rstubryan c486d6cf81 feat(FE-170): implement form steps and navigation for daily recording form 2025-10-31 13:52:54 +07:00
rstubryan e7ed3d6ab2 feat(FE-174): add FormStepStatus type to enhance daily recording form state management 2025-10-31 13:52:36 +07:00
rstubryan 2d30514d64 refactor(FE-170,174): simplify daily recording form by removing unused flock period logic 2025-10-31 13:08:55 +07:00
rstubryan 59b0eeea2b feat(FE-170): add egg handling and validation to daily recording form 2025-10-31 00:02:04 +07:00
rstubryan 0e77597a70 refactor(FE-174): add grading and egg handling to daily recording form 2025-10-31 00:01:46 +07:00
rstubryan b7de8b40d8 feat(FE-170,174): implement project flock kandang selection and validation in daily recording form 2025-10-30 21:41:14 +07:00
rstubryan 87295252aa refactor(FE-174): remove unused pending_qty field from stocks in recording type definition 2025-10-30 21:41:01 +07:00
randy-ar 7ab96fac8b Merge branch 'development' of https://gitlab.com/mbugroup/lti-web-client into dev/randy 2025-10-30 21:24:20 +07:00
randy-ar 99194eaf80 refactor(FE-92-87): mengganti select input dengan reuseable component 2025-10-30 21:23:37 +07:00
rstubryan 50196493e3 feat(FE-170,174): add depletion products handling and update select input options in daily recording form 2025-10-30 20:21:37 +07:00
rstubryan 75348620d7 feat(FE-170,174): enhance daily recording form with weight validation and dynamic average weight calculation 2025-10-30 19:09:21 +07:00
rstubryan 4cb045de6c refactor(US-170,174): update recording types and validation schema for daily recording form 2025-10-30 18:10:37 +07:00
rstubryan ae0cca778e chore(FE-Storyless): remove inputmask and its type definitions for cleanup 2025-10-30 18:10:04 +07:00
rstubryan 74503f12d6 fix(FE-Storyless): update SelectInput value handling to use undefined instead of null for better compatibility 2025-10-30 14:01:13 +07:00
rstubryan a5f8eb60c6 fix(FE-Storyless): update SelectInput value handling to use undefined instead of null for better compatibility 2025-10-30 13:32:32 +07:00
rstubryan c83ebd73be refactor(FE-Storyless): remove unnecessary padding from badge styles for improved layout 2025-10-30 13:08:36 +07:00
rstubryan be68353b38 feat(FE-114): add unique keys to SelectInput components in RecordingForm for improved rendering 2025-10-30 12:50:56 +07:00
rstubryan 2307035717 feat(FE-Storyless): add custom control component to SelectInput for adornment support 2025-10-30 12:00:22 +07:00
Adnan Zahir e708911429 Merge branch 'fix/FE/US-82/approval-workflow-steps-component' into 'development'
[FIX/FE][US#82] Rework Approval Steps component

See merge request mbugroup/lti-web-client!40
2025-10-30 11:04:04 +07:00
ValdiANS 79cfcad026 chore(FE-91): set formatCurrency default currency to indonesian currency 2025-10-30 11:03:22 +07:00
ValdiANS 37afcc76c3 Merge branch 'development' into fix/FE/US-82/approval-workflow-steps-component 2025-10-30 10:50:57 +07:00
ValdiANS f7eb89c113 feat(FE-91): create constant type file 2025-10-30 10:49:50 +07:00
ValdiANS c9c343b840 chore(FE-91): create BaseGroupedApproval, Approvals, and GroupedApprovals api types 2025-10-30 10:49:36 +07:00
ValdiANS 5c3b1c489f chore(FE-91): set color for step-warning 2025-10-30 10:48:37 +07:00
ValdiANS dd3a0079db chore(FE-91): set formatNumber locale to id-ID as default 2025-10-30 10:48:18 +07:00
ValdiANS bce58c585d feat(FE-91): create approval-line config file 2025-10-30 10:47:51 +07:00
ValdiANS b720c1411b chore(FE-91): make warning step icon glow 2025-10-30 10:47:29 +07:00
ValdiANS 82c1645d92 chore(FE-91): rework ApprovalSteps and create helper function for formatting approval workflow 2025-10-30 10:45:41 +07:00
rstubryan a8fee20133 refactor(FE-208,212): enhance PurchaseRequestForm with product and product warehouse fields 2025-10-30 10:39:23 +07:00
rstubryan b0e8a460fd refactor(FE-208,212): update PurchaseRequestForm schema and component to handle warehouse IDs 2025-10-30 09:29:38 +07:00
rstubryan b2c38cd06f feat(FE-208): create PurchaseRequestForm component and add AddPurchaseRequest page 2025-10-29 21:12:42 +07:00
rstubryan 7ba7b884a4 feat(FE-212): rename purchasing files and update validation schemas for purchase requests 2025-10-29 21:12:24 +07:00
rstubryan 3daf1a518e feat(FE-208): add 'Purchase' link to navigation constants 2025-10-29 21:11:40 +07:00
rstubryan c6fcb17b4d feat(FE-212): add validation schemas for purchase request and update forms 2025-10-29 20:31:31 +07:00
rstubryan 8b09a8d315 feat(FE-212): implement PurchaseApi service for purchase requests 2025-10-29 17:26:26 +07:00
rstubryan 215580215e feat(FE-212): add types for purchase creation and updates 2025-10-29 17:26:06 +07:00
rstubryan c832c4adeb fix(resolve): resolve merge issue 2025-10-29 15:56:57 +07:00
rstubryan eda3f0f1be chore(FE-Storyless): update Prettier to version 3.6.2 and remove .prettierrc from .gitignore 2025-10-29 15:52:34 +07:00
Adnan Zahir d0d201bf3a Merge branch 'feat/FE/US-77/transfer-to-laying' into 'development'
[FIX/FE][US#77] Transfer to Laying

See merge request mbugroup/lti-web-client!36
2025-10-29 15:07:40 +07:00
rstubryan c7b04c5bc6 feat(FE-137): integrate flock periods data fetching in RecordingForm for accurate recording validation 2025-10-28 10:58:37 +07:00
rstubryan c37950a230 refactor(FE-137): optimize recordedProjectFlockIds calculation to filter today's recordings 2025-10-28 10:44:08 +07:00
ValdiANS f88af89562 Merge branch 'development' into feat/FE/US-77/transfer-to-laying 2025-10-28 09:48:41 +07:00
rstubryan 7da95b80b0 refactor(FE-Storyless): conditionally handle onChange prop in SelectInput for better flexibility 2025-10-28 08:58:01 +07:00
Adnan Zahir 883d68032a Merge branch 'feat/FE/US-75/chick-in-doc' into 'development'
[FEAT/FE][US#75] Chick In DOC

See merge request mbugroup/lti-web-client!34
2025-10-27 17:23:06 +07:00
rstubryan c74ed18a16 refactor(FE-137): enable clearable option for select inputs in RecordingForm 2025-10-27 14:15:48 +07:00
Rivaldi A N S e45a9ba5e4 Merge branch 'dev/randy' into 'feat/FE/US-75/chick-in-doc'
[FIX/FE][US#75/TASK#94] Resolve merge conflict from development branch

See merge request mbugroup/lti-web-client!35
2025-10-27 06:14:27 +00:00
ValdiANS de7076e513 Merge branch 'development' into feat/FE/US-77/transfer-to-laying 2025-10-27 13:07:09 +07:00
randy-ar 6706f361d8 refactor(FE): change number input to reuseablecomponent from ui-component 2025-10-27 13:03:38 +07:00
rstubryan 15e6372c30 feat(FE-137): add product flag badges to RecordingForm for enhanced visibility 2025-10-27 13:03:37 +07:00
rstubryan 6dd3593f70 feat(FE-137): integrate Badge component to display project flock period in RecordingForm 2025-10-27 12:57:00 +07:00
rstubryan 5d376f8783 refactor(FE-137): remove unnecessary padding from SelectInput for improved layout 2025-10-27 12:56:38 +07:00
rstubryan 304d14a6fe refactor(FE-137): remove 'Periode' column from RecordingTable for cleaner display 2025-10-27 11:57:46 +07:00
randy-ar 4bd6fe8c35 fix(FE-86): resolve merge conflict 2025-10-27 11:27:08 +07:00
rstubryan 0b0ecd3bc4 refactor(FE-137): replace stock availability text with Badge component in MovementForm 2025-10-27 11:25:15 +07:00
rstubryan 58369b8ffa refactor(FE-137): simplify stock display in MovementForm and RecordingForm, enhance input handling in SelectInput 2025-10-27 11:05:06 +07:00
randy-ar cbb4f7421e fix(FE-86): fixing error null value 2025-10-27 10:58:49 +07:00
Rivaldi A N S 459605f133 Merge branch 'dev/randy' into 'feat/FE/US-75/chick-in-doc'
[FEAT/FE][US#75/TASK#92-93-94-105] Slicing UI detail, create and edit Chickin and integrate with API

See merge request mbugroup/lti-web-client!33
2025-10-27 03:27:19 +00:00
rstubryan 943c0e05b9 refactor(FE-137): conditionally render location SelectInput in RecordingForm based on type 2025-10-27 06:50:48 +07:00
rstubryan 9143248e1d refactor(FE-137): remove redundant status column from RecordingTable 2025-10-27 06:28:51 +07:00
rstubryan 4b9d0d2064 refactor(FE-137): enhance RecordingForm validation to prevent duplicate project flock entries 2025-10-27 06:18:27 +07:00
rstubryan c8f596ad2a refactor(FE-137): update RecordingForm to improve project flock handling and label formatting 2025-10-27 05:54:14 +07:00
randy-ar a65d00edc8 fix(FE): fixing pipeline run error 2025-10-25 17:01:02 +07:00
randy-ar 1e9d02b4b7 feat(FE-92-94): Slicing UI detail chickin & refactor number input chickin form 2025-10-25 16:27:15 +07:00
rstubryan 135fc2d5d3 feat(FE-114): update MovementForm and RecordingForm to use inputPrefix and inputSuffix for improved input handling 2025-10-25 14:24:51 +07:00
rstubryan 189c152745 feat(FE-114): add inputPrefix and inputSuffix props for enhanced input customization 2025-10-25 14:24:23 +07:00
randy-ar f0f6ec53cb refactor(FE-84-87) refactor checkbox using reuseable component checkboxinput 2025-10-25 13:58:46 +07:00
rstubryan a0556ea1f4 refactor(FE-114): add currency prefix and unit suffix to delivery cost and body weight inputs 2025-10-25 13:53:53 +07:00
rstubryan 81ce36e326 refactor(FE-137): remove ID column from RecordingTable for cleaner presentation 2025-10-25 13:41:18 +07:00
Adnan Zahir 48c31373bf Merge branch 'feat/FE/US-76/daily-recording-growing' into 'development'
[FEAT/FE][US#76] Daily Recording Growing

See merge request mbugroup/lti-web-client!31
2025-10-25 13:37:39 +07:00
rstubryan d7ce8c667a refactor(FE-114): simplify input handling in MovementForm and RecordingForm by removing unnecessary value normalization 2025-10-25 11:26:38 +07:00
rstubryan 6290199074 feat(FE-Storyless): integrate NumberInput and PatternInput components with react-number-format for enhanced input handling 2025-10-25 10:49:07 +07:00
randy-ar 4f3dfb4221 Merge branch 'development' of https://gitlab.com/mbugroup/lti-web-client into dev/randy 2025-10-25 06:16:15 +07:00
randy-ar a13a51a16f fix(FE-92-93-105): adding input note and quantity for create/edit chickin 2025-10-25 06:15:29 +07:00
rstubryan 896a0c6de2 refactor(FE-64): integrate product and supplier selection with API data fetching in MovementForm 2025-10-24 21:10:03 +07:00
rstubryan 9c5dc0dbb5 refactor(FE-137): integrate approve and reject functionality in RecordingForm with loading states and modal confirmations 2025-10-24 20:44:15 +07:00
rstubryan 81003eac63 feat(FE-137): enhance stock product selection in RecordingForm with initial values support 2025-10-24 20:37:11 +07:00
rstubryan e322e0d078 feat(FE-137): update RECORDING_FLAG_OPTIONS values for consistency in constant.ts 2025-10-24 20:29:33 +07:00
rstubryan 17e6eef0c5 feat(FE-137): add approve and reject functionality in RecordingForm with confirmation modals 2025-10-24 18:02:41 +07:00
rstubryan 6114d706ad feat(FE-137): disable input field in RecordingForm when type is 'detail' 2025-10-24 14:13:21 +07:00
rstubryan d14fa2ed2b feat(FE-137): integrate advanced filtering options in RecordingTable with dropdowns for area, location, and kandang 2025-10-24 13:53:20 +07:00
rstubryan 537fc617ff feat(FE-137): implement bulk approval and rejection functionality in RecordingTable with user feedback 2025-10-24 13:40:27 +07:00
rstubryan 7a6a35568f feat(FE-137): enhance RecordingTable to support recording deletion with user feedback and refresh functionality 2025-10-24 13:32:46 +07:00
rstubryan d2c485fdf0 feat(FE-114,137): implement stock validation in RecordingForm to manage usage limits and enhance user feedback 2025-10-24 12:45:07 +07:00
rstubryan 0c49978033 feat(FE-114,137): enhance RecordingForm to handle stock usage and depletion total changes with improved input handling 2025-10-24 12:26:33 +07:00
rstubryan 00de4782e7 feat(FE-137): simplify RecordingTable by removing unused columns and enhancing data clarity 2025-10-24 12:14:47 +07:00
rstubryan c546bd6b3c feat(FE-137): refactor RecordingTable to remove unused types and streamline data fetching 2025-10-24 11:37:25 +07:00
rstubryan 258324f092 feat(US-137): update RecordingTable to enhance data display and add new columns for project details 2025-10-24 11:36:14 +07:00
rstubryan 12a69b7c6c feat(FE-137): integrate SWR for fetching recordings and update table to display API data 2025-10-24 11:35:11 +07:00
rstubryan b148a09e84 feat(US-137): update API endpoints and default values in RecordingForm for production environment 2025-10-24 11:27:32 +07:00
rstubryan adc995dbe7 feat(US-114): enhance auto-calculation logic in RecordingForm to handle manual edits 2025-10-24 11:00:14 +07:00
rstubryan 9cbc703a63 feat(FE-114): integrate row selection functionality in RecordingTable and Table components 2025-10-24 10:18:56 +07:00
rstubryan 41e6848d75 refactor(FE-114): remove optional product_warehouse_id validation from RecordingForm schema 2025-10-24 10:08:38 +07:00
Rivaldi A N S fa21fe8da4 Merge branch 'feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form' into 'feat/FE/US-76/daily-recording-growing'
[FEAT/FE][US#76/TASK#114-129-130-131-136] Slicing UI Feature Daily Recording Growing

See merge request mbugroup/lti-web-client!32
2025-10-24 03:03:12 +00:00
rstubryan ca5b236565 refactor(FE-114): enforce required usage amount in RecordingForm validation 2025-10-24 10:00:35 +07:00
rstubryan 714072aea1 fix(merge): resolve merge conflict 2025-10-24 09:57:38 +07:00
rstubryan 8337fa5f55 fix(merge): resolve merge conflict 2025-10-24 09:53:04 +07:00
rstubryan a9f0696b38 refactor(FE-114): auto-populate notes with product name and enhance tooltip visibility in RecordingForm 2025-10-24 09:50:12 +07:00
Adnan Zahir 54bff12e1a Merge branch 'feat/FE/US-75/chick-in-doc' into 'development'
[FEAT/FE][US#75] Chick In DOC

See merge request mbugroup/lti-web-client!30
2025-10-24 09:35:56 +07:00
Adnan Zahir aa17143532 Merge branch 'feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form' into 'feat/FE/US-76/daily-recording-growing'
[FEAT/FE][US#76/TASK#114-129-130-131-136] Slicing UI Feature Daily Recording Growing

See merge request mbugroup/lti-web-client!29
2025-10-24 09:34:51 +07:00
rstubryan 4381e42aaf refactor(FE-114): update input handling for vaccination stock, mortality count, and feed stock with improved parsing and formatting 2025-10-24 09:24:28 +07:00
Rivaldi A N S 24ed2cccbe Merge branch 'dev/randy' into 'feat/FE/US-75/chick-in-doc'
[FEAT/FE][US#75/TASK#92-93-106] Slicing UI list, create, and edit Chickin DOC

See merge request mbugroup/lti-web-client!24
2025-10-24 02:18:23 +00:00
rstubryan a9b0c084f8 refactor(FE-114): update input handling for vaccination stock, mortality count, and feed stock with improved parsing and formatting 2025-10-24 09:15:01 +07:00
rstubryan 16823fa84a refactor(FE-114): implement custom handlers for vaccination stock and mortality count input parsing 2025-10-24 09:00:29 +07:00
rstubryan c30fcd81b2 refactor(FE-114): simplify CreateRecordingPayload structure and update validation in RecordingForm 2025-10-24 08:53:41 +07:00
rstubryan 7f5ae94706 feat(FE-114): integrate product stock fetching and selection in RecordingForm 2025-10-23 22:59:41 +07:00
rstubryan 6060ec0f7e feat(FE-114): prevent auto-calculation override during manual average weight editing in RecordingForm 2025-10-23 22:02:12 +07:00
rstubryan ef249fee12 feat(FE-114): add average weight calculation and input handling in RecordingForm 2025-10-23 21:54:06 +07:00
rstubryan 71df86c8df feat(FE-114): integrate location and project flock selection in RecordingForm 2025-10-23 21:34:40 +07:00
rstubryan d61c0ab844 feat(FE-114): integrate date time handling in RecordingForm for on-time status 2025-10-23 20:59:20 +07:00
rstubryan b653cc1dab refactor(FE-114): replace button elements with Button component for consistency and improved styling 2025-10-23 20:44:59 +07:00
randy-ar 51bce1a2c7 feat(FE-86-88): Adding reject button and integrate with approval api 2025-10-23 20:23:25 +07:00
rstubryan e76d881d8a refactor(FE-114): add foreign key fields to enhance data relationships in project-flock type definitions 2025-10-23 20:00:42 +07:00
rstubryan 392e211181 refactor(FE-Storyless): replace img with Image component for optimized loading 2025-10-23 19:54:17 +07:00
rstubryan cebe738beb refactor(FE-114): enhance type safety and improve checkbox input handling 2025-10-23 19:52:38 +07:00
rstubryan 6e5875a7b7 refactor(FE-Storyless): add flock_id, area_id, fcr_id, location_id, and kandang_ids to project-flock type definition 2025-10-23 19:52:21 +07:00
Rivaldi A N S b2044ac7bd Merge branch 'feat/FE/US-77/TASK-140-slicing-transfer-to-laying-edit-form' into 'feat/FE/US-77/transfer-to-laying'
[FEAT/FE][US#77/TASK#140] Slicing Transfer to Laying Edit Form

See merge request mbugroup/lti-web-client!27
2025-10-23 11:48:38 +00:00
randy-ar 8a467c2d65 fix(FE-92-93-105-106): fixing chickin form, after submit event and chickin modal trigger 2025-10-23 18:43:26 +07:00
rstubryan db8cb56984 fix(merge): resolve conflict on merge 2025-10-23 18:24:02 +07:00
ValdiANS d1d152ef5a feat(FE-140): create Edit Transfer to Laying page 2025-10-23 17:50:18 +07:00
Rivaldi A N S 82950b0ec0 Merge branch 'feat/FE/US-77/TASK-141-slicing-detail-page-for-transfer-to-laying' into 'feat/FE/US-77/transfer-to-laying'
[FEAT/FE][US#77/TASK#141] Slicing detail page for Transfer to Laying

See merge request mbugroup/lti-web-client!26
2025-10-23 10:37:31 +00:00
ValdiANS 3110b96305 feat(FE-141): add approve and reject method 2025-10-23 17:34:52 +07:00
ValdiANS 7e44226a6d feat(FE-141): add approve and reject functionality in Transfer to Laying Detail Page 2025-10-23 17:34:14 +07:00
rstubryan 3f76cb58fe refactor(FE-114): improve alignment and styling of checkbox inputs in RecordingForm 2025-10-23 17:15:17 +07:00
rstubryan 3cf8f4c89b refactor(FE-114): enhance numeric input handling for chicken weight and count with improved formatting 2025-10-23 16:49:32 +07:00
rstubryan 90ae7c469a refactor(FE-114): swap thousand and decimal separators for improved usability 2025-10-23 16:48:55 +07:00
rstubryan ae967c5ddb refactor(FE-114): integrate inputmask for enhanced numeric input handling and validation 2025-10-23 16:00:24 +07:00
rstubryan e801ba08ad chore(FE-114): add inputmask and its type definitions to package.json 2025-10-23 15:09:39 +07:00
rstubryan e6f5b2493b refactor(FE-Storyless): update input components to include consistent background styling 2025-10-23 13:51:34 +07:00
rstubryan 5f677f5076 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form 2025-10-23 13:50:23 +07:00
rstubryan 2de32dc944 refactor(FE-114): simplify CheckboxInput component and enhance styling options 2025-10-23 13:49:43 +07:00
ValdiANS ab534e203a Merge branch 'development' into feat/FE/US-77/TASK-141-slicing-detail-page-for-transfer-to-laying 2025-10-23 13:40:24 +07:00
randy-ar eaf41805d7 feat(FE-92-93-105-106): slicing ui chickin DOC and integrate with API 2025-10-23 13:30:27 +07:00
Adnan Zahir 631ebb9346 Merge branch 'feat/husky-setup' into 'development'
[FEAT/FE] Husky Setup

See merge request mbugroup/lti-web-client!23
2025-10-23 13:25:41 +07:00
rstubryan 7e53743b07 refactor(FE-114): remove FieldMessage component usage and streamline error message handling in form inputs 2025-10-23 13:14:16 +07:00
ValdiANS 70e1aca6c7 feat: create husky pre-commit file 2025-10-23 13:13:34 +07:00
ValdiANS d0d323954b feat: install husky 2025-10-23 13:10:03 +07:00
Rivaldi A N S d1c24bc486 Merge branch 'feat/FE/US-77/TASK-147-slicing-list-page-of-transfer-to-laying' into 'feat/FE/US-77/transfer-to-laying'
[FEAT/FE][US#77/TASK#147] Slicing List page of Transfer to Laying

See merge request mbugroup/lti-web-client!22
2025-10-23 06:06:03 +00:00
ValdiANS f998d32b0a chore(FE-147): add ApproveAction type 2025-10-23 12:55:31 +07:00
ValdiANS 3226b22dfb chore(FE-147): use dummy data 2025-10-23 12:55:12 +07:00
ValdiANS 9a51b2876f chore(FE-113,140,141): adjust back button link 2025-10-23 12:54:46 +07:00
ValdiANS ab9fbc9032 feat(FE-147): create TransferToLayingsTable component 2025-10-23 12:54:02 +07:00
ValdiANS d2f24723fc chore(FE-141): set dummy data for Transfer to Laying detail page 2025-10-23 12:53:41 +07:00
ValdiANS 5e710a792f chore(FE-147): set moment locale to 'id' globally 2025-10-23 12:52:51 +07:00
ValdiANS 3c8bdfbdac chore(FE-147): set generic when using getByPath function 2025-10-23 12:52:29 +07:00
ValdiANS 204369e0fe feat(FE-147): add CheckboxInput component 2025-10-23 12:51:39 +07:00
ValdiANS 1e2ea79a6a chore(FE-147): add close button for MainDrawer 2025-10-23 12:51:20 +07:00
rstubryan 22f1a32e1b feat(FE-137): integrate API for daily recording with enhanced data structure and validation 2025-10-23 11:59:22 +07:00
ValdiANS c24c0817ae chore(FE-147): add rowSelection and setRowSelection props 2025-10-23 11:53:35 +07:00
ValdiANS e53325cdc5 feat(FE-147): show Transfer to Laying table 2025-10-23 11:53:12 +07:00
rstubryan 6687f4af98 feat(FE-Storyless): add Badge component with customizable variants, colors, and sizes 2025-10-23 11:18:57 +07:00
rstubryan 575a317eed refactor(FE-Storyless): update input components to ensure consistent background styling 2025-10-22 15:31:59 +07:00
rstubryan bdb3ab1a50 refactor(FE-114): refactor card native to card component 2025-10-22 14:49:38 +07:00
rstubryan f486a659d0 feat(FE-114): add Card component with customizable layout and styling options 2025-10-22 14:49:05 +07:00
rstubryan 58b4204aab refactor(FE-62): enhance MovementForm by integrating NumberInput for delivery cost fields and improving layout 2025-10-22 14:10:35 +07:00
rstubryan c249585bc2 refactor(FE-114): enhance form UI by adding required field indicators for multiple inputs 2025-10-22 13:55:12 +07:00
rstubryan 9c114628c7 refactor(FE-114,136): improve form validation handling and set touched state asynchronously 2025-10-22 10:54:20 +07:00
rstubryan b35d513e44 refactor(FE-114): update flock accessor key in RecordingTable component 2025-10-22 09:50:09 +07:00
rstubryan a904c35b7f refactor(FE-114): simplify project flock types and update flock reference in recording 2025-10-22 09:41:00 +07:00
rstubryan 2e595b5e86 refactor(FE-114): update import paths from flock to production for recording components 2025-10-22 09:11:23 +07:00
rstubryan 46fa3e57cd Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form 2025-10-21 16:10:40 +07:00
Rivaldi A N S 79b6d6917d Merge branch 'feat/FE/US-77/TASK-113-slicing-transfer-to-laying-create-form' into 'feat/FE/US-77/transfer-to-laying'
[FEAT/FE][US#77/TASK#113] Slicing Transfer to Laying Create Form

See merge request mbugroup/lti-web-client!21
2025-10-21 09:10:07 +00:00
ValdiANS 9f24d22a2c feat(FE-113): create FlockWithKandangs type 2025-10-21 15:54:50 +07:00
ValdiANS 06f1d3f6a4 fix(FE-113): fix merge error 2025-10-21 15:54:25 +07:00
ValdiANS e29613a37e chore(FE-113): add status field 2025-10-21 15:54:11 +07:00
ValdiANS 6e6675d0a7 feat(FE-113): change title and add Transfer ke Laying link 2025-10-21 15:37:25 +07:00
ValdiANS 32d4c0268f Merge branch 'development' into feat/FE/US-77/TASK-113-slicing-transfer-to-laying-create-form 2025-10-21 15:29:10 +07:00
rstubryan 2ab26153fd fix(resolve): fix resolve mismatch conflict path on merge 2025-10-21 15:24:55 +07:00
ValdiANS a29bbc9a42 chore(FE-113): comment Inventory Product link 2025-10-21 15:23:13 +07:00
rstubryan e7e0e308c7 fix(resolve): fix resolve mismatch conflict path on merge 2025-10-21 15:20:15 +07:00
ValdiANS 1ade8f8a38 Merge branch 'development' into feat/FE/US-77/TASK-113-slicing-transfer-to-laying-create-form 2025-10-21 15:18:34 +07:00
Adnan Zahir 791e8e787c Merge branch 'feat/FE/US-74/flock-request' into 'development'
[FEAT/FE][US#74/TASK#84-85-86-87-88-89-102] Project Flock

See merge request mbugroup/lti-web-client!20
2025-10-21 15:17:06 +07:00
ValdiANS a2c43a7f1e feat(FE-141): create Transfer to Laying Detail page 2025-10-21 15:12:09 +07:00
rstubryan 12202c2021 fix(resolve): fix resolve mismatch conflict path on merge 2025-10-21 15:10:57 +07:00
ValdiANS 4127075b13 feat(FE-113): create Transfer to Laying Create Form Schema 2025-10-21 15:09:33 +07:00
ValdiANS d9fa685ae6 feat(FE-113): create Transfer to Laying Create Form 2025-10-21 15:08:11 +07:00
ValdiANS 2f4daea253 feat(FE-113): create API Service for Transfer to Laying 2025-10-21 15:07:51 +07:00
ValdiANS bac72b8eb3 feat(FE-113): create Transfer to Laying type 2025-10-21 15:06:39 +07:00
ValdiANS 5af9c3ee27 chore(FE-113): change api route for getting user info to /auth/sso/userinfo 2025-10-21 15:06:10 +07:00
ValdiANS 1a76913f3f chore(FE-113): set vertical-align to top 2025-10-21 15:05:36 +07:00
ValdiANS 8b403a4208 feat(FE-113): create useSelect hook 2025-10-21 15:01:48 +07:00
ValdiANS 0bab704163 chore(FE-113): create getByPath helper function 2025-10-21 15:01:19 +07:00
ValdiANS d550dcbf48 feat(FE-141): create layout for detail Transfer to Laying route 2025-10-21 14:57:32 +07:00
ValdiANS 7fdbfe6dfb feat(FE-113): create Add Transfer to Laying page 2025-10-21 14:56:58 +07:00
ValdiANS 4e6d2088e1 feat(FE-147): create Transfer to Laying list page 2025-10-21 14:55:37 +07:00
rstubryan 67b180bf7c fix(resolve): fix resolve conflict 2025-10-21 14:36:27 +07:00
Rivaldi A N S 7853899486 Merge branch 'dev/randy' into 'feat/FE/US-74/flock-request'
[FEAT/FE][US#74/TASK#84-85-86-87-88-89-102] Create Feature Project Flocks and Feature Master Data Flocks

See merge request mbugroup/lti-web-client!13
2025-10-21 07:24:58 +00:00
randy-ar 9a04724095 fix(FE-86): fixing approve button and delete button 2025-10-21 14:11:08 +07:00
rstubryan 831995e8e4 refactor(FE-114): translate RecordingForm titles and table headers to Indonesian 2025-10-21 13:59:26 +07:00
randy-ar c8cdb3e772 fix(FE-88): fix error build 2025-10-21 13:22:49 +07:00
randy-ar e5b3af3239 fix(FE-88): fix project flock data types 2025-10-21 13:19:50 +07:00
rstubryan 0740f2d094 refactor(FE-114): ensure fields are marked as touched on change for better validation handling 2025-10-21 13:01:56 +07:00
rstubryan 25a97e34c7 refactor(FE-114): use React's useId hook for generating unique checkbox IDs in CheckboxInput 2025-10-21 11:54:57 +07:00
rstubryan 1ee1cf9ea9 refactor(FE-62): update errorMessage handling and setFieldTouched for form fields 2025-10-21 11:49:55 +07:00
randy-ar e4a1138d8d fix(FE-86-87-88) Hapus tombol edit di index, tambah tombol approve dan delete di detail, dan hit endpoint approve yang udah ada di hoppscocth 2025-10-21 11:37:33 +07:00
rstubryan 41bb05413c feat(FE-62): replace native checkboxes with CheckboxInput component in MovementForm 2025-10-21 11:26:15 +07:00
rstubryan c746bd94b2 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form 2025-10-21 10:42:04 +07:00
rstubryan acea3a3063 refactor(FE-114): replace native checkboxes with CheckboxInput component in RecordingForm 2025-10-21 10:38:26 +07:00
rstubryan b269728ecd feat(FE-114): add CheckboxInput component with customizable props and styling 2025-10-21 10:38:07 +07:00
Adnan Zahir e7a861d8a1 Merge branch 'chore/CI/ignore-build-script' into 'development'
chore(CI): added build-filter.sh to only deploy master and development branch

See merge request mbugroup/lti-web-client!19
2025-10-21 10:21:03 +07:00
Adnan Zahir 1a5a76c0f1 chore(CI): added build-filter.sh to only deploy master and development branch 2025-10-21 10:20:09 +07:00
randy-ar 838d7277c3 fix(FE) resolve merge conflict 2025-10-21 10:19:03 +07:00
randy-ar 1672705464 fix(FE-88-89) adjust category flock dengan API backend & set disabled input period 2025-10-21 10:14:17 +07:00
rstubryan 9ef4484fb3 Merge remote-tracking branch 'origin/feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form' into feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form 2025-10-21 09:55:21 +07:00
rstubryan 645668e1f9 refactor(FE-114): enhance body weight calculations in RecordingForm with auto-update for average weight 2025-10-21 09:55:12 +07:00
rstubryan fb29cea8d2 refactor(FE-114): enhance body weight calculations in RecordingForm with auto-update for average weight 2025-10-21 09:54:28 +07:00
rstubryan 1ecdff855e refactor(FE-114): enhance NumberInput component with improved styling and disabled state handling 2025-10-21 09:54:14 +07:00
rstubryan 7c6e079f56 refactor(FE-114): improve data handling in RecordingForm for numeric fields 2025-10-21 09:33:31 +07:00
rstubryan 41f8067727 refactor(FE-114): enhance NumberInput component with improved props and validation handling 2025-10-21 09:33:17 +07:00
Adnan Zahir f733b0750a Merge branch 'feat/FE/US-35/stock-transfer' into 'development'
[FEAT/FE][US#35/TASK#61-62-63-64-65] Transfer Stock

See merge request mbugroup/lti-web-client!18
2025-10-20 20:56:42 +07:00
rstubryan 83d31b7047 refactor(FE-114): remove unnecessary FieldMessage component from checkbox 2025-10-20 20:20:39 +07:00
rstubryan 966e0886e1 Merge remote-tracking branch 'origin/feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form' into feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form 2025-10-20 20:19:51 +07:00
rstubryan a67d353bcb refactor(FE-114): integrate FieldMessage component for improved field feedback in checkboxes 2025-10-20 20:19:42 +07:00
rstubryan ac2f246988 refactor(FE-114): integrate FieldMessage component for improved field feedback in checkboxes 2025-10-20 20:00:43 +07:00
rstubryan e0ce571000 refactor(FE-114): streamline cost field validation messages and enhance layout with FieldMessage component 2025-10-20 18:54:31 +07:00
rstubryan 1bcfd9bbb4 feat(FE-Storyless): add FieldMessage component for consistent field feedback across inputs 2025-10-20 18:54:02 +07:00
Rivaldi A N S c561c47eae Merge branch 'dev/restu' into 'feat/FE/US-35/stock-transfer'
[FEAT/FE][US#35/TASK#61-62-63-64-65] Create Feature Transfer Stock

See merge request mbugroup/lti-web-client!14
2025-10-20 08:28:22 +00:00
rstubryan c3338d3e05 feat(FE-62): add button for document path in MovementForm with link functionality 2025-10-20 15:23:18 +07:00
rstubryan ba9ae07455 refactor(FE-114): improve validation messages and update layout for better responsiveness 2025-10-20 13:10:41 +07:00
rstubryan c64ff527dd Merge branch 'dev/restu' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form 2025-10-20 12:56:43 +07:00
rstubryan f27e34128e refactor(FE-62): update layout and remove unused delete confirmation in MovementForm 2025-10-20 12:03:58 +07:00
rstubryan c8db992b17 feat(FE-62,63,65): add document_path field to deliveries in MovementForm 2025-10-20 11:50:19 +07:00
rstubryan d76f897840 refactor(FE-62): update wrapper class names for improved layout in MovementForm 2025-10-20 11:32:35 +07:00
rstubryan 5e0cc3699f Merge branch 'dev/restu' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form 2025-10-20 10:46:21 +07:00
rstubryan 895b7afa25 refactor(FE-114): improve product filtering logic for location and flag validation 2025-10-20 10:38:10 +07:00
ValdiANS a088189ed1 chore(FE-140): add Produksi and Transfer ke Laying menu 2025-10-20 10:14:22 +07:00
ValdiANS 406cfad31a chore(FE-140): adjust border radius 2025-10-20 10:14:04 +07:00
rstubryan 6c9c0e1839 Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into dev/restu 2025-10-20 10:10:30 +07:00
rstubryan eb02a8b6f7 refactor(storyless): update border class for consistent styling 2025-10-20 10:09:58 +07:00
rstubryan 73f379832c Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form 2025-10-20 10:09:18 +07:00
rstubryan 4233c19dc9 refactor(FE-114): rearrange code for better readability 2025-10-20 10:06:26 +07:00
Adnan Zahir 403765a2b5 Merge branch 'feat/FE/US-77/transfer-to-laying' into 'development'
[FEAT/FE][US#77] Transfer to Laying

See merge request mbugroup/lti-web-client!16
2025-10-20 10:03:03 +07:00
Rivaldi A N S d30d7328cf Merge branch 'feat/FE/US-77/TASK-113-slicing-transfer-to-laying-create-form' into 'feat/FE/US-77/transfer-to-laying'
[FEAT/FE][US#77/TASK#113] Slicing Transfer to Laying Create Form

See merge request mbugroup/lti-web-client!17
2025-10-20 02:57:58 +00:00
ValdiANS 376fa29f7e fix(FE-40): wrap master data detail with SuspenseHelper 2025-10-20 09:55:08 +07:00
rstubryan 16d72ebf6f feat(FE-114,136): integrate location selection and update flock handling in RecordingForm 2025-10-20 09:51:32 +07:00
Rivaldi A N S 52ad696178 Merge branch 'feat/FE/US-77/TASK-113-slicing-transfer-to-laying-create-form' into 'feat/FE/US-77/transfer-to-laying'
[FEAT/FE][US#77/TASK#113] Slicing Transfer to Laying create form

See merge request mbugroup/lti-web-client!15
2025-10-20 02:42:52 +00:00
ValdiANS 2b3aa9c3ee feat(FE-113): create permissionCheck helper function 2025-10-18 13:40:32 +07:00
ValdiANS 6fe85fac13 feat(FE-113): add Client, Permission, Role, and RoleWithPermission types 2025-10-18 13:40:08 +07:00
randy-ar 9964e1797a feat(FE-87): slicing ui multiple approval checkbox and approval modal confirmation 2025-10-18 12:58:18 +07:00
rstubryan e4f554bcd4 refactor(FE-114,136): update RecordingForm validation and input handling for feed and vaccination data 2025-10-18 12:25:04 +07:00
rstubryan c25b49c179 feat(FE-114): add NumberInput component and integrate into RecordingForm for enhanced numeric input handling 2025-10-18 11:39:18 +07:00
randy-ar a573551110 feat(FE-85-87-88): slicing ui and integrate api for search and edit 2025-10-18 10:46:47 +07:00
rstubryan 881e2bfc4a feat(FE-114,136): enhance product label display in RecordingForm with warehouse and stock information 2025-10-18 09:04:39 +07:00
rstubryan 474c2a1f7d Merge branch 'dev/restu' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-76/TASK-114-129-136-slicing-ui-and-validation-create-edit-daily-recording-growing-form 2025-10-18 08:45:26 +07:00
rstubryan c4de085e11 feat(FE-62,63): enhance warehouse stock information display in MovementForm 2025-10-18 08:40:06 +07:00
rstubryan 0676411dd5 refactor(FE-62,65): enhance product quantity display and stock information in MovementForm 2025-10-17 19:23:19 +07:00
rstubryan f05d367a5d refactor(FE-65): enhance delivery cost validation and calculation in MovementForm 2025-10-17 18:51:35 +07:00
rstubryan edb5f30d6c refactor(FE-62): remove unused product fetching logic from MovementForm 2025-10-17 16:48:52 +07:00
rstubryan 7abe9b7dc6 refactor(FE-63,65): update Movement types and schema to include area and location for warehouses 2025-10-17 16:48:35 +07:00
rstubryan caf68d438f refactor(FE-114,136,137): update feed and vaccination fields to use IDs instead of names and add stock validation 2025-10-17 13:59:28 +07:00
rstubryan fa60f884c1 merge: resolve conflict 2025-10-17 13:18:34 +07:00
rstubryan c77968940e refactor(FE-114,136): update flock references to use ProjectFlock and adjust RecordingForm for new API 2025-10-17 13:16:54 +07:00
rstubryan cfb9b53b54 refactor(FE-63): simplify createMovementHandler by removing unnecessary payload checks 2025-10-17 10:13:14 +07:00
rstubryan caac9c20e6 refactor(FE-62): update MovementForm layout to improve responsiveness with grid system 2025-10-17 10:12:53 +07:00
rstubryan 8bf7603f66 refactor(FE-64): update MovementTable and TableRowOptions to conditionally show edit and delete options 2025-10-17 09:46:07 +07:00
rstubryan 8c662a5152 refactor(FE-65): update DeliveryObjectSchema to enforce minimum delivery costs of 1 2025-10-17 09:22:49 +07:00
randy-ar da92874a40 Merge branch 'feat/FE/US-74/flock-request' of https://gitlab.com/mbugroup/lti-web-client into dev/randy 2025-10-16 16:52:58 +07:00
randy-ar 5113bf4d3f feat(84-85-86-87-88-89-102): create feature project flocks and adjust master data flock feature 2025-10-16 16:49:44 +07:00
rstubryan 1bdec0c9ae refactor(FE-62,63): update MovementForm to handle 'detail' type with appropriate validations and stock checks 2025-10-16 16:46:33 +07:00
rstubryan 57dbcf3624 Merge remote-tracking branch 'origin/dev/restu' into dev/restu 2025-10-16 16:26:03 +07:00
rstubryan 501a68267e refactor(FE-63,63,65): enhance MovementForm to fetch and display product details from ProductWarehouse 2025-10-16 16:25:54 +07:00
rstubryan a2a57f758c refactor(FE-63,63,65): enhance MovementForm to fetch and display product details from ProductWarehouse 2025-10-16 16:24:42 +07:00
rstubryan 157dfc75ed refactor(FE-63): remove debug logging from form submission and movement handlers 2025-10-16 15:47:29 +07:00
rstubryan f5ce898bd2 feat(FE-62,63,65): enhance MovementForm with product warehouse selection, delivery document handling, and stock validation 2025-10-16 15:29:26 +07:00
rstubryan c6a0c542aa refactor(FE-62,63,65): refactor Movement and ProductWarehouse APIs, update MovementForm schema, and enhance MovementTable functionality 2025-10-16 14:33:49 +07:00
Adnan Zahir b0e11095f4 Merge branch 'feat/FE/US-82/approval-workflow-steps-component' into 'development'
[FEAT/FE][US#82] Slicing Approval Steps component

See merge request mbugroup/lti-web-client!12
2025-10-16 11:04:52 +07:00
rstubryan 79acdb4b7b merge: resolve conflict 2025-10-16 10:59:36 +07:00
rstubryan 19db9a4eac refactor(FE-114,136): enhance validation and default values in RecordingForm schema 2025-10-16 10:54:36 +07:00
Rivaldi A N S 1e0b342bbc Merge branch 'feat/FE/US-82/TASK-91-slicing-approval-steps-component' into 'feat/FE/US-82/approval-workflow-steps-component'
[FEAT/FE][US#82/TASK#91] Slicing Approval Steps component

See merge request mbugroup/lti-web-client!11
2025-10-16 03:16:47 +00:00
rstubryan 23d5a41d56 refactor(FE-114): improve recording date handling in RecordingForm 2025-10-16 10:08:49 +07:00
ValdiANS b7a30cc73a chore(FE-91): create ApprovalsLine type 2025-10-16 10:01:50 +07:00
ValdiANS 93beb86f91 feat(FE-91): create ApprovalSteps component 2025-10-16 10:01:40 +07:00
ValdiANS 0577f6ce1d feat(FE-91): create StepItem component 2025-10-16 10:01:29 +07:00
ValdiANS 76dd2e4c54 feat(FE-91): create Steps component 2025-10-16 10:01:23 +07:00
ValdiANS 156de6112b feat(FE-91): create Tooltip component 2025-10-16 10:01:14 +07:00
ValdiANS eb0f04310e chore(FE-91): create daisyui.css file for extending daisyUI style 2025-10-16 10:01:00 +07:00
rstubryan 27d2792a9c refactor(FE-114): enhance layout and structure of RecordingForm component 2025-10-16 09:24:00 +07:00
rstubryan ec387637ed refactor(FE-114): remove bulk delete functionality from RecordingTable 2025-10-16 09:12:21 +07:00
rstubryan 64e6724664 feat(FE-114): add bulk action functionality for approving, rejecting, and deleting recordings in RecordingTable 2025-10-16 09:07:12 +07:00
rstubryan f319a9b5d1 feat(FE-114): implement RecordingEdit and RecordingDetail components with error handling and loading states 2025-10-16 08:39:32 +07:00
randy-ar e2b35e765c feat(FE-102) create master data flock and add LTI theme 2025-10-15 20:01:41 +07:00
rstubryan 8bfce061e6 refactor(FE-114,136): improve location and coop field handling in RecordingForm 2025-10-15 17:53:08 +07:00
rstubryan 64a32fd214 refactor(FE-114,136): update RecordingForm schema and types to include location and coop fields 2025-10-15 17:39:27 +07:00
rstubryan 2ee88a2742 refactor(FE-114): enhance tanggal_recording handling and improve error messaging in RecordingForm 2025-10-15 13:45:48 +07:00
rstubryan aa21088e99 feat(FE-62): enhance MovementForm with delivery product input error handling and validation 2025-10-15 12:30:59 +07:00
rstubryan 06dc869b84 feat(FE-64): update MovementTable structure for improved data clarity and consistency 2025-10-15 12:08:52 +07:00
rstubryan df73ee1fdf feat(FE-62,63,65): refactor MovementForm and related types for improved clarity and consistency 2025-10-15 12:00:17 +07:00
rstubryan cf78687315 merge: resolve conflict 2025-10-15 11:05:37 +07:00
rstubryan 66e6fa84c8 Merge remote-tracking branch 'origin/dev/restu' into dev/restu 2025-10-15 10:56:16 +07:00
rstubryan dcd5d2692f feat(FE-62,65): enhance MovementForm and FormActions to improve form validation and reset behavior 2025-10-15 10:56:06 +07:00
rstubryan 3c4333021f feat(FE-62,65): enhance MovementForm and FormActions to improve form validation and reset behavior 2025-10-15 10:54:38 +07:00
rstubryan 56a9fc2349 refactor(FE-62,65): simplify error handling in MovementForm by consolidating error checks 2025-10-15 10:51:06 +07:00
rstubryan 24144f01d4 feat(FE-114,136): add error handling for repeater inputs in RecordingForm 2025-10-15 10:37:04 +07:00
Adnan Zahir 212fd3b4f2 Merge branch 'feat/FE/US-34/stock-adjustment' into 'development'
[FEAR/FE/US#34/TASK#51-52-53-54] Implement Feature Adjustment Inventory

See merge request mbugroup/lti-web-client!9
2025-10-15 10:26:14 +07:00
rstubryan 6f0467918b feat(FE-114): add tanggal_recording field to RecordingForm and update schema validation 2025-10-15 09:50:21 +07:00
rstubryan 53ee4cdc1b feat(FE-114): add Layout and AddRecording components with routing link 2025-10-15 09:29:29 +07:00
rstubryan b1a3796eca feat(FE-114,136): implement RecordingForm component with data handling and validation 2025-10-15 09:28:57 +07:00
rstubryan 89318407ea feat(FE-136): update RecordingForm schema to remove tanggal and add flock object 2025-10-14 23:01:01 +07:00
rstubryan 6dcb97bcac feat(FE-114,129): add RecordingForm and RecordingTable components with handlers 2025-10-14 22:03:51 +07:00
rstubryan 1869fa8dc5 feat(FE-136): add flock and recording management with validation in forms 2025-10-14 22:03:09 +07:00
rstubryan 4b4b74d07c feat(FE-65): add validation for quantity and required fields in MovementForm 2025-10-14 18:00:34 +07:00
rstubryan ff9e35eb52 Merge remote-tracking branch 'origin/dev/restu' into dev/restu
# Conflicts:
#	src/components/pages/inventory/movement/form/MovementForm.tsx
2025-10-14 14:04:24 +07:00
rstubryan 19bca9ec73 feat(FE-65): enhance MovementForm to support file uploads with FormData conversion 2025-10-14 14:03:46 +07:00
rstubryan 6facfd3d3c feat(FE-65): enhance MovementForm to support file uploads with FormData conversion 2025-10-14 14:00:58 +07:00
rstubryan b2f0bd6698 feat(FE-65): add file type validation for dokumen in MovementForm 2025-10-14 10:31:34 +07:00
rstubryan e7085ab4ff feat(FE-65): add file size validation for dokumen in MovementForm 2025-10-14 10:02:56 +07:00
rstubryan 44e07ddc50 feat(FE-64): refactor MovementTable with new TableToolbar and TableRowSizeSelector components 2025-10-14 09:26:21 +07:00
Rivaldi A N S 46860a93b9 Merge branch 'dev/randy' into 'feat/FE/US-34/stock-adjustment'
[FEAT/FE][US#33][TASK#51-54] Form Validation and UI/UX Adjustment

See merge request mbugroup/lti-web-client!10
2025-10-13 06:53:00 +00:00
randy-ar 302da65c59 fix(FE-51) adjust textarea component ui 2025-10-13 13:09:53 +07:00
randy-ar ce8471343c fix(FE-54) fix form input state inventory adjustment 2025-10-13 12:59:05 +07:00
randy-ar 880ff5740d fix(FE-42): fix validation supplier form and multi select component 2025-10-13 11:26:37 +07:00
randy-ar 9b53c75f2f fix(FE-42): fix validation supplier form and multi select component 2025-10-13 11:25:39 +07:00
rstubryan a4ff4f7b2a feat: add Layout component to wrap children with SuspenseHelper 2025-10-12 20:32:02 +07:00
rstubryan 754e3d526b feat(FE-64): add hatchery and npwp fields to MovementTable data structure 2025-10-12 19:15:14 +07:00
randy-ar f662f2951e fix(FE-51-54): fixing bug and layout form adjustment 2025-10-11 23:26:30 +07:00
randy-ar 1fd4b2aba5 Merge branch 'development' of https://gitlab.com/mbugroup/lti-web-client into feat/FE/US-34/stock-adjustment 2025-10-11 13:18:15 +07:00
randy-ar b75b5956eb feat/FE/US-34/TASK-52-53-slicing-ui-table-adjust-form-with-api 2025-10-11 13:12:05 +07:00
rstubryan 478f52c94b feat(FE-62,65): add biaya_ekspedisi_per_item field and calculation in MovementForm 2025-10-11 08:33:48 +07:00
randy-ar aa7b6581d9 feat/FE/US-34/TASK-54-51-slicing-ui-client-side-validation-stock-adjustment 2025-10-11 02:03:10 +07:00
rstubryan 757893c757 feat(FE-62): add quantity validation for ekspedisi in MovementForm and filter product options 2025-10-10 13:43:30 +07:00
rstubryan a1dc13ceb4 feat(FE-62): enhance MovementForm with area and location display for warehouse selection 2025-10-10 13:36:22 +07:00
rstubryan 157235433e feat(FE-62): implement bulk removal functionality for selected products and ekspedisi in MovementForm 2025-10-10 13:14:39 +07:00
rstubryan 57831646d9 refactor(FE-62): optimize product and ekspedisi removal logic in MovementForm 2025-10-10 11:14:59 +07:00
rstubryan 095190d757 refactor(FE-62,65): refactor MovementForm schema and component for improved product and ekspedisi handling 2025-10-10 10:19:56 +07:00
rstubryan 27f58051ad Merge branch 'development' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-35/stock-transfer 2025-10-10 08:40:39 +07:00
rstubryan a9cdea7318 feat(FE-65): enhance MovementForm with initial values handling and refactor components 2025-10-10 08:40:17 +07:00
rstubryan 7dbf880228 feat(FE-62): add FormActions and FormHeader components for form management 2025-10-10 08:39:34 +07:00
Adnan Zahir 24b702548d Merge branch 'feat/FE/US-33/master-data-management' into 'development'
[FEAT/FE][US#33/TASK#40-41-42-43] Master Data Management

See merge request mbugroup/lti-web-client!8
2025-10-09 17:43:27 +07:00
rstubryan aacdbf0742 Merge branch 'feat/FE/US-33/TASK-40-slicing-ui-for-master-data-forms' of gitlab.com:mbugroup/lti-web-client into feat/FE/US-35/stock-transfer 2025-10-09 16:33:31 +07:00
Rivaldi A N S 96babba4bb Merge branch 'feat/FE/US-33/TASK-40-slicing-ui-for-master-data-customers-and-suppliers-forms' into 'feat/FE/US-33/TASK-40-slicing-ui-for-master-data-forms'
[FEAT/FE/US#33/TASK#40] Slicing UI for Costumer and Suppliers Forms in Master Data

See merge request mbugroup/lti-web-client!7
2025-10-09 08:19:28 +00:00
Rivaldi A N S acd66b0323 Merge branch 'bugfix/FE/ISSUE/build-error' into 'feat/FE/US-33/TASK-40-slicing-ui-for-master-data-forms'
[FIX/FE][ISSUE] Fix Issue for Next.js Build

See merge request mbugroup/lti-web-client!4
2025-10-09 07:50:58 +00:00
rstubryan c17ffc6aff feat(FE-62): add MovementEdit and MovementDetail components for inventory movement management 2025-10-09 14:34:25 +07:00
rstubryan 1ea9ee3069 feat(FE-62,63,65): implement MovementForm component for managing inventory movements 2025-10-09 14:30:05 +07:00
randy-ar 5cf98ed95e fix(FE-33): fix conflict git 2025-10-09 13:35:30 +07:00
Restu Bumi Ryan Ramadhan 558a1788dc Merge branch 'feat/FE/US-35/TASK-62-65-slicing-ui-for-inventory-movement-forms' into 'feat/FE/US-35/stock-transfer'
Feat/fe/us 35/task 62 65 slicing ui for inventory movement forms

See merge request mbugroup/lti-web-client!5
2025-10-09 06:11:39 +00:00
rstubryan e2036ab3dc chore: resolve conflict pull request 2025-10-09 13:05:27 +07:00
randy-ar a83452a0e4 feat(FE-33): create suppliers table and forms 2025-10-09 12:27:59 +07:00
rstubryan 3f712a638f chore: remove redundant start scripts from package.json 2025-10-09 11:45:27 +07:00
rstubryan 0ea78fee92 chore: resolve conflict pull request 2025-10-09 11:44:38 +07:00
rstubryan b561ed6193 fix: update dependencies in multiple tables to include updateSortingFilter in effect dependencies 2025-10-09 11:35:22 +07:00
rstubryan d7ae7e00d3 fix: update dependency in AreasTable to include updateFilter in sorting effect 2025-10-09 11:22:01 +07:00
rstubryan f0eabedcb2 refactor: refactor layout components to use SuspenseHelper for loading states 2025-10-09 11:06:59 +07:00
ValdiANS 94a5ce5604 feat(FE-40): create layout for /detail route and wrap the children in SuspenseHelper component 2025-10-09 11:05:55 +07:00
ValdiANS 9b56308cf0 feat(FE-40): create SuspenseHelper component 2025-10-09 11:05:30 +07:00
ValdiANS 6353b3aee4 feat(FE-40,41): create Master Data Edit FCR page 2025-10-09 10:05:24 +07:00
ValdiANS 527a155997 feat(FE-40,41): create Master Data Detail FCR page 2025-10-09 10:05:17 +07:00
ValdiANS f6163b1f69 feat(FE-40,41): create Master Data Add FCR page 2025-10-09 10:05:07 +07:00
ValdiANS d771b20956 feat(FE-43): create Master Data FCR page 2025-10-09 10:04:55 +07:00
ValdiANS da91201dde chore(FE-40): use optional chaining 2025-10-09 10:04:42 +07:00
ValdiANS 9b13ce2be6 chore(FE-40): render error message if isError and errorMessage exist 2025-10-09 10:04:20 +07:00
ValdiANS 764dacc627 feat(FE-43): create FcrsTable component 2025-10-09 10:04:01 +07:00
rstubryan d1f43c4e42 refactor: rename layout files for consistency and clarity 2025-10-09 10:00:38 +07:00
ValdiANS 5c0da471ae feat(FE-42): create Fcr form validation schema 2025-10-09 10:00:29 +07:00
ValdiANS 95556bfdd7 feat(FE-40,41): create FcrForm component 2025-10-09 09:59:53 +07:00
ValdiANS 24269d8c76 feat(FE-41): create Fcr api service 2025-10-09 09:59:34 +07:00
ValdiANS a6be56e6f2 feat(FE-41): create Fcr api type 2025-10-09 09:57:41 +07:00
ValdiANS f8f5e8403a chore(FE-40): create main drawer menu type 2025-10-09 09:55:14 +07:00
rstubryan 9f2add3a57 feat: add multiple layout components with suspense fallback for loading states 2025-10-09 09:38:16 +07:00
rstubryan 3051e931ca fix: enhance MainDrawer with typed MenuItem structure and submenu handling 2025-10-09 09:12:07 +07:00
randy-ar 21cc01fe68 feat(FE-33): create customers table and details 2025-10-09 04:36:57 +07:00
sweetpotet 21b9396323 feat(FE-33): create customers forms 2025-10-08 16:40:30 +07:00
rstubryan ddbf8b0896 refactor(FE-62): rename Product component to Movement for clarity 2025-10-08 16:16:12 +07:00
rstubryan 3f97ec45f8 feat(FE-64): add MovementTable component for inventory movement management 2025-10-08 16:06:19 +07:00
ValdiANS 1d7f100507 feat(FE-40,41): create Master Data Edit Bank page 2025-10-08 15:38:10 +07:00
ValdiANS 372f1698ca feat(FE-40,41): create Master Data Detail Bank page 2025-10-08 15:38:01 +07:00
ValdiANS 0d5e8383fd feat(FE-40,41): create Master Data Add Bank page 2025-10-08 15:37:26 +07:00
ValdiANS b9015ed673 feat(FE-43): create Master Data Bank page 2025-10-08 15:37:01 +07:00
ValdiANS ca42570a40 feat(FE-43): create BanksTable component 2025-10-08 15:36:13 +07:00
ValdiANS 16a15fce66 feat(FE-42): create Bank form validation schema 2025-10-08 15:35:56 +07:00
ValdiANS 8c507aa410 feat(FE-40,41): create BankForm component 2025-10-08 15:35:34 +07:00
ValdiANS 10749f06da feat(FE-41): create Bank API service 2025-10-08 15:35:15 +07:00
ValdiANS 293f457ecb feat(FE-41): create Bank type 2025-10-08 15:35:00 +07:00
rstubryan 7ceb25ea71 feat(FE-62,65): add inventory movement management with API and form validation 2025-10-08 15:26:45 +07:00
ValdiANS 780c0bb9d0 chore(FE-41): use Nonstock API service 2025-10-08 15:01:45 +07:00
ValdiANS b8548b72c9 feat(FE-40,41): create Nonstock form validation schema 2025-10-08 15:00:41 +07:00
ValdiANS c53f91ec3f feat(FE-43): create NonstocksTable component 2025-10-08 15:00:30 +07:00
ValdiANS 96fea80f62 feat(FE-40,41): create NonstockForm component 2025-10-08 15:00:06 +07:00
ValdiANS d24d50474d feat(FE-41): create Nonstock API service 2025-10-08 14:59:39 +07:00
ValdiANS f3d0e12bcd feat(FE-42): create flags type 2025-10-08 14:59:14 +07:00
ValdiANS 143d640a1e chore(FE-41): refactor nonstock type 2025-10-08 14:58:54 +07:00
ValdiANS 0e49e29002 feat(FE-42): create SUPPLIER_FLAG_OPTIONS constant 2025-10-08 14:58:21 +07:00
ValdiANS 8461667ca2 chore(FE-41): delete nonstock api helper function file 2025-10-08 14:56:52 +07:00
ValdiANS 3e7da624aa feat: add .prettierrc.json config 2025-10-08 13:47:56 +07:00
Rivaldi A N S 1968761b5d Merge branch 'feat/FE/US-33/TASK-40-slicing-ui-for-master-data-product-and-product-category-forms' into 'feat/FE/US-33/TASK-40-slicing-ui-for-master-data-forms'
[FEAT/FE][US#33/TASK#40-43] Implement Product & Product Category Feature (Type, Validation, Form, Table, and Pages)

See merge request mbugroup/lti-web-client!3
2025-10-08 03:08:01 +00:00
rstubryan 396ebe5001 feat(FE-43): add 'Code' column to Product Category table 2025-10-08 09:55:19 +07:00
rstubryan f5952f5a36 feat(FE-43): add Supplier API and data types for supplier management 2025-10-08 09:12:49 +07:00
rstubryan 250c42a04b feat(FE-40,41,42): add Product management pages with form handling and table display 2025-10-07 21:23:12 +07:00
rstubryan e1569c607c feat(FE-41,43): add Products table with CRUD operations and search functionality 2025-10-07 21:22:05 +07:00
rstubryan 3241cc9868 feat(FE-42): add Product API and form validation schema with product flags 2025-10-07 21:21:24 +07:00
rstubryan 26ec456937 feat(FE-40,41,42): add Product Category detail and edit pages with form handling 2025-10-07 18:59:31 +07:00
rstubryan 2b9b8e9920 feat(FE-41,43): implement Product Category table with CRUD operations 2025-10-07 18:58:38 +07:00
rstubryan 3cac49725f feat(FE-42): add Product Category API and form validation schema 2025-10-07 18:56:58 +07:00
rstubryan 4f0e02a93b chore: add .idea to .gitignore 2025-10-07 17:23:58 +07:00
ValdiANS af60e682ee chore(FE-41): redirect to /404 if response error 2025-10-05 16:19:37 +07:00
ValdiANS dcebd53c45 feat(FE-40): add edit button 2025-10-05 16:13:04 +07:00
ValdiANS 1ae2d13335 feat(FE-40,41): create Master Data Edit Warehouse page 2025-10-05 16:07:27 +07:00
ValdiANS 452139eeed feat(FE-40,41): create Master Data Detail Warehouse page 2025-10-05 16:07:17 +07:00
ValdiANS eb10dfe29f feat(FE-40,41): create Master Data Add Warehouse page 2025-10-05 16:07:06 +07:00
ValdiANS 70bdfc3b43 feat(FE-43): create Master Data Warehouse page 2025-10-05 16:06:51 +07:00
ValdiANS c1bc7beb4a feat(FE-43): create WarehousesTable component 2025-10-05 16:06:36 +07:00
ValdiANS 76cd64de5b feat(FE-42): create Warehouse form validation schema 2025-10-05 16:06:21 +07:00
ValdiANS 07691bfd9e feat(FE-40,41): create WarehouseForm component 2025-10-05 16:05:58 +07:00
ValdiANS 1f0c58d264 feat(FE-40): create WAREHOUSE_TYPE_OPTIONS constant 2025-10-05 16:05:33 +07:00
ValdiANS 19ce3989ba feat(FE-41): create Warehouse API service 2025-10-05 16:05:18 +07:00
ValdiANS a136ee1190 chore(FE-41): create Override type 2025-10-05 16:04:59 +07:00
ValdiANS acd28e5deb feat(FE-41): create warehouse api type 2025-10-05 16:04:46 +07:00
ValdiANS bfc81da349 feat(FE-40,41): create Master Data Edit Kandang page 2025-10-05 13:42:22 +07:00
ValdiANS 64bb87f92f feat(FE-40,41): create Master Data Detail Kandang page 2025-10-05 13:42:14 +07:00
ValdiANS f0c2910469 feat(FE-40,41): create Master Data Add Kandang page 2025-10-05 13:42:05 +07:00
ValdiANS 952110d7af feat(FE-43): create Master Data Kandang page 2025-10-05 13:41:45 +07:00
ValdiANS 6441a38a9d feat(FE-42): create Kandang form validation schema 2025-10-05 13:41:27 +07:00
ValdiANS 531a257e78 feat(FE-40,41): create KandangForm component 2025-10-05 13:41:08 +07:00
ValdiANS be844312d3 feat(FE-43): create KandangsTable component 2025-10-05 13:40:46 +07:00
ValdiANS 6ff19f05fd feat(FE-41): craete KandangApi service 2025-10-05 13:40:09 +07:00
ValdiANS 26093034fa feat(FE-41): create user API service 2025-10-05 13:39:38 +07:00
ValdiANS 0e5b718fd7 feat(FE-41): create kandang type 2025-10-05 13:39:25 +07:00
ValdiANS 0675d95a2a feat(FE-41): create user type 2025-10-05 13:39:16 +07:00
ValdiANS d5294e9b0b chore(FE-43): remove unnecessary code 2025-10-05 13:01:30 +07:00
ValdiANS 8c84e08f3b chore(FE-41): use .d.ts extension for types 2025-10-05 13:00:58 +07:00
ValdiANS f32e1ceec4 chore(FE-41): use BaseApiService class 2025-10-05 12:59:35 +07:00
ValdiANS f7b0933c0f feat(FE-41): create BaseApiService class 2025-10-05 12:59:15 +07:00
ValdiANS 508a530c3a chore(FE-43): add address and area sorting 2025-10-05 12:32:51 +07:00
ValdiANS 05a67bdc75 feat(FE-40,41): create Master Data Edit Location page 2025-10-04 14:59:44 +07:00
ValdiANS 54d2c85677 feat(FE-40,41): create Master Data Detail Location page 2025-10-04 14:59:30 +07:00
ValdiANS 288e4b92ff feat(FE-40,41): create Master Data Add Location page 2025-10-04 14:59:16 +07:00
ValdiANS 7e0dd1bdb1 feat(FE-43): create Master Data Location page 2025-10-04 14:59:03 +07:00
ValdiANS 57e5fafabd feat(FE-42): create Location form validation schema 2025-10-04 14:58:45 +07:00
ValdiANS e53d4e22b2 feat(FE-40,41): create LocationForm component 2025-10-04 14:58:25 +07:00
ValdiANS 3c0babb62b feat(FE-43): create LocationsTable component 2025-10-04 14:57:59 +07:00
ValdiANS e7e5456d15 feat(FE-41): create LocationApi service 2025-10-04 14:57:43 +07:00
ValdiANS d3977a0951 feat(FE-41): create Location type 2025-10-04 14:57:17 +07:00
ValdiANS 5b1dab2860 feat(FE-40): add onInputChange prop 2025-10-04 14:53:05 +07:00
ValdiANS 8ed12578b4 chore(FE-40): fix name input placeholder 2025-10-04 14:32:42 +07:00
ValdiANS 7ea599168c chore(FE-43): add conditional to set sorting and setSorting and add manualSorting props 2025-10-04 14:25:29 +07:00
ValdiANS a2345165c1 chore(FE-41): create BaseArea type 2025-10-04 14:09:03 +07:00
ValdiANS e1c34cf0fb chore(FE-41): create BaseUom type 2025-10-04 14:08:53 +07:00
ValdiANS 4332881ba6 chore(FE-40): add delete button and delete confirmation modal 2025-10-04 14:03:53 +07:00
ValdiANS 73cefbb7a3 chore(FE-40): change delete confirmation modal text 2025-10-04 14:03:27 +07:00
ValdiANS 9ba7b5dba4 feat(FE-40,41): create Master Data Edit Area page 2025-10-04 13:58:53 +07:00
ValdiANS 172d8efd8e feat(FE-40,41): create Master Data Detail Area page 2025-10-04 13:58:11 +07:00
ValdiANS 69ecacc1be feat(FE-40,41): create Master Data Add Area page 2025-10-04 13:57:48 +07:00
ValdiANS 4bf4981fd4 feat(FE-43): create Master Data Area page 2025-10-04 13:57:21 +07:00
ValdiANS 6dd6147c29 feat(FE-41): create AreaApi service 2025-10-04 13:57:05 +07:00
ValdiANS c494f8dbd5 feat(FE-41): create Area type 2025-10-04 13:56:51 +07:00
ValdiANS 211951132a feat(FE-42): create Area form validation schema 2025-10-04 13:56:17 +07:00
ValdiANS b82637fb3b feat(FE-40,41): create AreaForm component 2025-10-04 13:55:52 +07:00
ValdiANS eebc9940cc feat(FE-43): create AreasTable component 2025-10-04 13:55:28 +07:00
ValdiANS 777f0f5e81 feat(FE-40): add none type to Color 2025-10-04 12:23:31 +07:00
ValdiANS d29d1f27f8 chore(FE-41): create CreatedUser and BaseMetadata type 2025-10-04 12:23:14 +07:00
ValdiANS bbe55ee4c3 chore(FE-43): add ROWS_OPTIONS constant 2025-10-04 12:22:43 +07:00
ValdiANS 6dec9268c9 feat(FE-41): create Master Data API Service class 2025-10-04 12:22:25 +07:00
ValdiANS b5d9c55fbc chore(FE-41): create UOM type 2025-10-04 12:22:00 +07:00
ValdiANS d941674f9a feat(FE-40,41): create Master Data Edit UOM page 2025-10-04 12:21:38 +07:00
ValdiANS e6c14f57d9 feat(FE-40,41): create Master Data Detail UOM page 2025-10-04 12:21:14 +07:00
ValdiANS f27b261869 feat(FE-40,41): create Master Data Add UOM page 2025-10-04 12:20:19 +07:00
ValdiANS 6a396ccce6 feat(FE-43): create Master Data UOM page 2025-10-04 12:19:52 +07:00
ValdiANS 65e3833cd5 feat(FE-43): create RowDropdownOptions component 2025-10-04 12:19:15 +07:00
ValdiANS 34e9e60173 feat(FE-43): create RowCollapseOptions component 2025-10-04 12:19:01 +07:00
ValdiANS f1a8fda667 feat(FE-42): create UOM form validation schema 2025-10-04 12:18:39 +07:00
ValdiANS 36113f6c2a feat(FE-40,41): create UomForm component 2025-10-04 12:18:15 +07:00
ValdiANS e259d1720c feat(FE-43): create UomsTable component 2025-10-04 12:17:42 +07:00
ValdiANS 78750060de feat(FE-40): create ConfirmationModal component 2025-10-04 12:17:17 +07:00
ValdiANS ae159b9617 chore(FE-40): remove unnecessary dependencies 2025-10-04 12:15:06 +07:00
ValdiANS 56476c7dd9 chore(FE-40): adjust loading dots size 2025-10-04 12:14:47 +07:00
ValdiANS fa5d09e4fb chore(FE-40): add Toaster component in root layout 2025-10-04 12:14:18 +07:00
ValdiANS df1b4c29e5 feat(FE-43): create useTableFilter hooks 2025-10-04 12:13:49 +07:00
ValdiANS 20f6686afc chore(FE-43): add sorting and setSorting props 2025-10-04 12:08:08 +07:00
ValdiANS 18027f0bb9 chore(FE-43): get setPageSize from table object 2025-10-04 11:31:23 +07:00
ValdiANS 2976ffffbf chore(FE-40): install use-debounce 2025-10-04 11:18:23 +07:00
ValdiANS 5983a44311 chore(FE-40): add DebouncedTextInput component 2025-10-04 11:18:08 +07:00
ValdiANS 42dd91117e chore(FE-40): install react-hot-toast 2025-10-04 11:01:21 +07:00
ValdiANS 60d0d77dff feat(FE-40): add Alert component 2025-10-03 22:13:35 +07:00
Adnan Zahir 7723e2a8d3 Merge branch 'chore/CI/merge-request-notify-workflow' into 'development'
chore(CI): added gitlab ci yaml file for notify MR and MR-merged events

See merge request mbugroup/lti-web-client!2
2025-10-03 22:01:25 +07:00
Adnan Zahir 88fe135cb4 chore(CI): added gitlab ci yaml file for notify MR and MR-merged events 2025-10-03 21:58:55 +07:00
ValdiANS 83701a9689 chore(FE-40): update table pageSize if it change 2025-10-03 14:12:02 +07:00
ValdiANS e765a7a5fb chore(FE-40): hide empty content if is loading 2025-10-02 16:50:37 +07:00
ValdiANS 75a5caa63b feat(FE-40): create Nonstock Edit page 2025-10-02 12:03:23 +07:00
ValdiANS c40c707c17 feat(FE-40): create Nonstock Detail page 2025-10-02 12:03:06 +07:00
ValdiANS c3da39ef1b feat(FE-40): create Add Nonstock page 2025-10-02 12:02:21 +07:00
ValdiANS 230e966197 feat(FE-40): create Nonstock page 2025-10-02 12:02:11 +07:00
ValdiANS 62b3894983 feat(FE-40): create api type for nonstock 2025-10-02 12:02:02 +07:00
ValdiANS 8dd1ebdfe4 feat(FE-40): create api service for nonstock 2025-10-02 12:01:43 +07:00
ValdiANS 35c809193b feat(FE-40): create NonstocksTable component 2025-10-02 12:01:14 +07:00
ValdiANS e6acfc1214 feat(FE-40): create NonstockForm component 2025-10-02 12:01:00 +07:00
ValdiANS 36b66d9b2f feat(FE-40): create Dashboard page 2025-10-02 12:00:18 +07:00
ValdiANS 5c73f8f4af chore: update toggle dependencies 2025-10-02 12:00:02 +07:00
ValdiANS 2a6f2a1646 chore(FE-40): update MainDrawer component styling 2025-10-02 11:46:27 +07:00
ValdiANS d40a5dd898 chore: update Collapse styling 2025-10-02 11:46:09 +07:00
ValdiANS ca9205618a feat: add Modal component 2025-10-02 11:45:11 +07:00
ValdiANS 14046a1add chore(FE-40): create isResponseError api helper function 2025-10-01 16:02:12 +07:00
ValdiANS 8ad49a4480 chore(FE-40): export ErrorApiResponse and SucessApiResponse type 2025-10-01 16:01:47 +07:00
ValdiANS 4ff196cb9d chore(FE-40): remove unnecessary gap 2025-10-01 15:32:35 +07:00
ValdiANS 0afde48135 chore(FE-40): set correct page title 2025-10-01 15:24:33 +07:00
ValdiANS 9b2930375d chore(FE-40): fix bank link 2025-10-01 15:00:44 +07:00
ValdiANS 8a6a1e6b5c chore(FE-40): use RequireAuth in root layout 2025-10-01 15:00:06 +07:00
ValdiANS 6924aef8c4 feat(FE-40): create RequireAuth helper component 2025-10-01 14:59:46 +07:00
ValdiANS fa96d7a98a chore(FE-40): set opts.auth default to 'cookie' and export SWRHttpKey type 2025-10-01 14:08:02 +07:00
ValdiANS 3d3df42576 chore(FE-40): update import path and return isLoadingUser and setIsLoadingUser in useAuth 2025-10-01 14:07:30 +07:00
ValdiANS 05886896f1 chore(FE-40): update import path 2025-10-01 14:07:04 +07:00
ValdiANS a347024188 chore(FE-40): update CollapseMenu styling 2025-10-01 14:04:50 +07:00
ValdiANS 6969a2bcb8 chore(FE-40): move api.d.ts to /types/api/api-general.d.ts 2025-10-01 13:56:59 +07:00
ValdiANS 8206f7de5f feat(FE-40): create MainUiSlice type 2025-10-01 13:45:25 +07:00
ValdiANS a5b392ae76 feat(FE-40): create main UI slice 2025-10-01 13:45:16 +07:00
ValdiANS 6cbdff5398 feat(FE-40): add main UI slice to useUiStore 2025-10-01 13:45:00 +07:00
ValdiANS 87ce1e50aa feat(FE-40): create MAIN_DRAWER_LINKS constant 2025-10-01 13:44:42 +07:00
ValdiANS 2456d64a68 feat(FE-40): create MainDrawer component 2025-10-01 13:44:26 +07:00
ValdiANS c068fe5166 feat(FE-40): redirect to /dashboard 2025-10-01 13:44:18 +07:00
ValdiANS 19b7c53ec2 feat(FE-40): use MainDrawer component in root layout 2025-10-01 13:44:02 +07:00
ValdiANS 037e4776a8 chore: run eslint command in dev command 2025-09-30 15:45:33 +07:00
ValdiANS 3be69eeff8 fix: error type 2025-09-30 15:44:48 +07:00
ValdiANS a364a860fa chore: update PasswordInput component 2025-09-30 15:43:48 +07:00
ValdiANS 8e23a805a9 chore: update Button component 2025-09-30 15:43:04 +07:00
ValdiANS e052166b3a chore: update Pagination component 2025-09-30 15:42:25 +07:00
ValdiANS 691b49a902 chore: update Table component 2025-09-30 15:42:03 +07:00
ValdiANS 33f5ca2a57 chore: update Table component 2025-09-30 15:33:57 +07:00
ValdiANS 02c44ced92 chore: update Collapse component 2025-09-30 11:25:38 +07:00
ValdiANS 978285021e feat: add Collapse component 2025-09-29 11:58:57 +07:00
ValdiANS 7e57debb98 chore: update MenuItem component 2025-09-29 11:58:19 +07:00
Adnan Zahir a5d8ac47fe Merge branch 'init' into 'development'
init

See merge request mbugroup/lti-web-client!1
2025-09-26 11:41:47 +07:00
ValdiANS f127e16c7c chore: change copywriting 2025-09-26 11:36:53 +07:00
ValdiANS 2e1b0fef2b init 2025-09-26 11:06:31 +07:00
412 changed files with 70646 additions and 79 deletions
+47
View File
@@ -0,0 +1,47 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# env files (can opt-in for committing if needed)
.env*
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts
# idea
.idea
# claude
.claude
+189
View File
@@ -0,0 +1,189 @@
stages:
- build
- deploy
.build_template: &build_template
stage: build
image: node:20-alpine
cache:
key: npm-cache
paths:
- node_modules/
variables:
NPM_CONFIG_PRODUCTION: 'false'
NODE_ENV: ''
script:
- echo "Installing dependencies..."
- npm ci --no-audit --no-fund
- echo "Build env used:"
- echo "NEXT_PUBLIC_LTI_URL=$NEXT_PUBLIC_LTI_URL"
- echo "NEXT_PUBLIC_SSO_LOGIN_URL=$NEXT_PUBLIC_SSO_LOGIN_URL"
- echo "NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL"
- echo "Building Next.js static export..."
- npx next build
- |
mkdir -p out
cat <<EOF > out/build-info.json
{
"commit": "$CI_COMMIT_SHORT_SHA",
"pipeline": "$CI_PIPELINE_ID",
"built_at": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
"NEXT_PUBLIC_LTI_URL": "$NEXT_PUBLIC_LTI_URL",
"NEXT_PUBLIC_SSO_LOGIN_URL": "$NEXT_PUBLIC_SSO_LOGIN_URL",
"NEXT_PUBLIC_API_BASE_URL": "$NEXT_PUBLIC_API_BASE_URL"
}
EOF
artifacts:
name: 'out-$CI_COMMIT_SHORT_SHA'
paths:
- out/
expire_in: 1 week
.deploy_template: &deploy_template
stage: deploy
image:
name: amazon/aws-cli:latest
entrypoint: ['/bin/sh', '-c']
script:
- set -e
- aws --version
- echo "Cleaning up newline characters in AWS credentials..."
- export AWS_ACCESS_KEY_ID=$(echo $AWS_ACCESS_KEY_ID | tr -d '\r\n')
- export AWS_SECRET_ACCESS_KEY=$(echo $AWS_SECRET_ACCESS_KEY | tr -d '\r\n')
- echo "Deploying to s3://$S3_BUCKET in region $AWS_REGION"
- aws s3api head-bucket --bucket "$S3_BUCKET" --region "$AWS_REGION" || aws s3api create-bucket --bucket "$S3_BUCKET" --region "$AWS_REGION" --create-bucket-configuration LocationConstraint="$AWS_REGION"
- aws s3 sync ./out "s3://$S3_BUCKET" --delete --region "$AWS_REGION" --endpoint-url "https://s3.ap-southeast-3.amazonaws.com"
# CloudFront invalidation
- |
STATUS="success"
if [ -n "$CLOUDFRONT_DISTRIBUTION_ID" ]; then
echo "Invalidating CloudFront cache..."
if ! aws cloudfront create-invalidation --distribution-id "$CLOUDFRONT_DISTRIBUTION_ID" --paths "/*"; then
echo "CloudFront invalidation failed."
STATUS="failed"
fi
else
echo "No CloudFront distribution specified — skipping invalidation"
fi
# Notifikasi Discord
- |
RUN_URL="${CI_PROJECT_URL}/-/pipelines/${CI_PIPELINE_ID}"
if [ "$CI_COMMIT_BRANCH" = "development" ]; then
ENVIRONMENT_NAME="WEB-LTI-DEV"
elif [ "$CI_COMMIT_BRANCH" = "staging" ]; then
ENVIRONMENT_NAME="WEB-LTI-STAGING"
else
ENVIRONMENT_NAME="UNKNOWN"
fi
if [ "$STATUS" = "success" ]; then
COLOR=3066993
TITLE="✅ Deployment ${ENVIRONMENT_NAME} Succeeded"
DESC="Deployment job on branch \`${CI_COMMIT_REF_NAME}\` completed successfully."
else
COLOR=15158332
TITLE="❌ Deployment ${ENVIRONMENT_NAME} Failed"
DESC="Deployment job on branch \`${CI_COMMIT_REF_NAME}\` encountered issues."
fi
jq -n \
--arg title "$TITLE" \
--arg desc "$DESC" \
--arg color "$COLOR" \
--arg repo "$CI_PROJECT_PATH" \
--arg actor "$GITLAB_USER_LOGIN" \
--arg commit "$CI_COMMIT_SHA" \
--arg run_url "$RUN_URL" \
'{
username: "CI Bot - LTI WEB",
embeds: [{
title: $title,
description: $desc,
color: ($color|tonumber),
fields: [
{name: "Repository", value: $repo, inline: true},
{name: "Actor", value: $actor, inline: true},
{name: "Commit", value: $commit, inline: false},
{name: "Pipeline", value: ("[Open run](" + $run_url + ")"), inline: false}
]
}]
}' > payload.json
curl -sS -H "Content-Type: application/json" -d @payload.json "$DISCORD_WEBHOOK_URL"
# ====== DEVELOPMENT (Branch development) ======
build:dev:
<<: *build_template
rules:
- if: '$CI_COMMIT_BRANCH == "development"'
environment:
name: development
variables:
NEXT_PUBLIC_LTI_URL: 'https://dev-lti-erp.mbugroup.id'
NEXT_PUBLIC_SSO_LOGIN_URL: 'https://dev-auth-erp.mbugroup.id'
NEXT_PUBLIC_API_BASE_URL: 'https://dev-api-lti.mbugroup.id/api'
NEXT_PUBLIC_CLIENT_ID: 'Lumbung-Telur-Indonesia'
deploy:dev:
<<: *deploy_template
needs: ['build:dev']
rules:
- if: '$CI_COMMIT_BRANCH == "development"'
variables:
S3_BUCKET: 'dev-lti-erp.mbugroup.id'
AWS_REGION: 'ap-southeast-3'
CLOUDFRONT_DISTRIBUTION_ID: 'E1Z8XTA8XF1GIV'
environment:
name: development
url: https://dev-lti-erp.mbugroup.id
# ====== STAGING (Branch staging) ======
build:staging:
<<: *build_template
rules:
- if: '$CI_COMMIT_BRANCH == "staging"'
environment:
name: staging
variables:
NEXT_PUBLIC_LTI_URL: 'https://stg-lti-erp.mbugroup.id'
NEXT_PUBLIC_SSO_LOGIN_URL: 'https://stg-auth-erp.mbugroup.id'
NEXT_PUBLIC_API_BASE_URL: 'https://stg-api-lti.mbugroup.id/api'
NEXT_PUBLIC_CLIENT_ID: 'Lumbung-Telur-Indonesia'
deploy:staging:
<<: *deploy_template
needs: ['build:staging']
rules:
- if: '$CI_COMMIT_BRANCH == "staging"'
variables:
S3_BUCKET: 'stg-lti-erp.mbugroup.id'
AWS_REGION: 'ap-southeast-3'
CLOUDFRONT_DISTRIBUTION_ID: 'E2V6PPO1AUIU7H'
environment:
name: staging
url: https://stg-lti-erp.mbugroup.id
# ====== PRODUCTION ======
# build:production:
# <<: *build_template
# rules:
# # pilih salah satu: pakai branch master ATAU pakai tags rilis
# - if: '$CI_COMMIT_BRANCH == "master"'
# # - if: '$CI_COMMIT_TAG' # kalau mau rilis via tag, uncomment ini dan hapus baris di atas
# environment:
# name: production
# deploy:production:
# <<: *deploy_template
# needs: ["build:production"]
# rules:
# - if: '$CI_COMMIT_BRANCH == "master"'
# # - if: '$CI_COMMIT_TAG' # selaras dengan rule di build:production
# variables:
# S3_BUCKET: "lti-erp.mbugroup.id"
# CLOUDFRONT_DISTRIBUTION_ID: "ddfd"
# environment:
# name: production
+3
View File
@@ -0,0 +1,3 @@
npm run format
npm run lint
npm run build
+15
View File
@@ -0,0 +1,15 @@
{
"singleQuote": true,
"jsxSingleQuote": true,
"endOfLine": "lf",
"arrowParens": "always",
"bracketSpacing": true,
"embeddedLanguageFormatting": "auto",
"htmlWhitespaceSensitivity": "css",
"printWidth": 80,
"proseWrap": "preserve",
"quoteProps": "as-needed",
"semi": true,
"tabWidth": 2,
"trailingComma": "es5"
}
+15
View File
@@ -0,0 +1,15 @@
{
"singleQuote": true,
"jsxSingleQuote": true,
"endOfLine": "lf",
"arrowParens": "always",
"bracketSpacing": true,
"embeddedLanguageFormatting": "auto",
"htmlWhitespaceSensitivity": "css",
"printWidth": 80,
"proseWrap": "preserve",
"quoteProps": "as-needed",
"semi": true,
"tabWidth": 2,
"trailingComma": "es5"
}
+25
View File
@@ -0,0 +1,25 @@
FROM node:20-alpine
RUN apk add --no-cache git bash build-base curl
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
# Buat config agar Next tahu output: export
RUN echo "const config = { output: 'export', images: { unoptimized: true } }; export default config;" > next.config.mjs
# Build project (Next.js 15 otomatis static export)
RUN NEXT_DISABLE_TURBOPACK=1 npx next build
# Copy static assets dan hasil build agar bisa diakses
RUN mkdir -p .next/server/app/_next && \
cp -r .next/static .next/server/app/_next/static && \
cp -r public/* .next/server/app/
EXPOSE 3000
CMD ["npx", "serve", ".next/server/app", "-l", "3000"]
+22 -79
View File
@@ -1,93 +1,36 @@
# LTI - Client
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
## Getting Started
First, run the development server:
## Getting started
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
## Add your files
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
- [ ] [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-files-to-a-git-repository) or push an existing Git repository with the following command:
```
cd existing_repo
git remote add origin https://gitlab.com/mbugroup/lti-client.git
git branch -M main
git push -uf origin main
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```
## Integrate with your tools
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
- [ ] [Set up project integrations](https://gitlab.com/mbugroup/lti-client/-/settings/integrations)
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
## Collaborate with your team
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
- [ ] [Set auto-merge](https://docs.gitlab.com/user/project/merge_requests/auto_merge/)
## Learn More
## Test and Deploy
To learn more about Next.js, take a look at the following resources:
Use the built-in continuous integration in GitLab.
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/)
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
***
## Deploy on Vercel
# Editing this README
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
## Suggestions for a good README
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
## Name
Choose a self-explaining name for your project.
## Description
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
## Usage
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
## Support
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
## Roadmap
If you have ideas for releases in the future, it is a good idea to list them in the README.
## Contributing
State if you are open to contributions and what your requirements are for accepting them.
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
## License
For open source projects, say how it is licensed.
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
+11
View File
@@ -0,0 +1,11 @@
#!/bin/bash
echo "VERCEL_GIT_COMMIT_REF: $VERCEL_GIT_COMMIT_REF"
if [[ "$VERCEL_GIT_COMMIT_REF" == "master" || "$VERCEL_GIT_COMMIT_REF" == "development" ]]; then
echo "✅ - Build can proceed"
exit 1
else
echo "🛑 - Build cancelled"
exit 0
fi
+39
View File
@@ -0,0 +1,39 @@
version: '3.9'
services:
dev-web-lti:
container_name: dev-web-lti
build:
context: .
dockerfile: Dockerfile
ports:
- '3002:3000'
env_file:
- .env
environment:
NODE_ENV: production
APP_ENV: production
networks:
- dev-lti-network
restart: always
deploy:
resources:
limits:
cpus: '3.0'
memory: 3G
reservations:
cpus: '1.0'
memory: 512M
extra_hosts:
- 'host.docker.internal:host-gateway'
# Optional: aktifkan healthcheck jika punya endpoint
# healthcheck:
# test: ["CMD-SHELL", "curl -fsS http://localhost:3000/api/healthz || exit 1"]
# interval: 10s
# timeout: 3s
# retries: 10
# start_period: 15s
networks:
dev-lti-network:
external: true
+25
View File
@@ -0,0 +1,25 @@
import { dirname } from 'path';
import { fileURLToPath } from 'url';
import { FlatCompat } from '@eslint/eslintrc';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
});
const eslintConfig = [
...compat.extends('next/core-web-vitals', 'next/typescript'),
{
ignores: [
'node_modules/**',
'.next/**',
'out/**',
'build/**',
'next-env.d.ts',
],
},
];
export default eslintConfig;
+9
View File
@@ -0,0 +1,9 @@
import type { NextConfig } from 'next';
const nextConfig: NextConfig = {
output: 'export',
images: { unoptimized: true },
trailingSlash: true,
};
export default nextConfig;
+7849
View File
File diff suppressed because it is too large Load Diff
+53
View File
@@ -0,0 +1,53 @@
{
"name": "lti-web-client",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "eslint && next dev --turbopack",
"build": "next build --turbopack",
"start": "next start",
"lint": "eslint",
"prepare": "husky",
"format": "prettier --write ."
},
"dependencies": {
"@react-pdf/renderer": "^4.3.1",
"@tanstack/match-sorter-utils": "^8.19.4",
"@tanstack/react-table": "^8.21.3",
"axios": "^1.12.2",
"clsx": "^2.1.1",
"formik": "^2.4.6",
"jspdf": "^3.0.4",
"jspdf-autotable": "^5.0.2",
"moment": "^2.30.1",
"next": "15.5.9",
"react": "19.1.0",
"react-day-picker": "^9.11.1",
"react-dom": "19.1.0",
"react-dropzone": "^14.3.8",
"react-hot-toast": "^2.6.0",
"react-number-format": "^5.4.4",
"react-select": "^5.10.2",
"swr": "^2.3.6",
"tailwind-merge": "^3.3.1",
"use-debounce": "^10.0.6",
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
"yup": "^1.7.0",
"zustand": "^5.0.8"
},
"devDependencies": {
"@eslint/eslintrc": "^3",
"@iconify/react": "^6.0.2",
"@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"daisyui": "^5.5.8",
"eslint": "^9",
"eslint-config-next": "^15.5.7",
"husky": "^9.1.7",
"prettier": "^3.6.2",
"tailwindcss": "^4",
"typescript": "^5"
}
}
+5
View File
@@ -0,0 +1,5 @@
const config = {
plugins: ['@tailwindcss/postcss'],
};
export default config;
Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

+11
View File
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
+69
View File
@@ -0,0 +1,69 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import ClosingDetail from '@/components/pages/closing/ClosingDetail';
import { ClosingApi } from '@/services/api/closing';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const ClosingDetailPage = () => {
const router = useRouter();
const searchParams = useSearchParams();
const closingId = searchParams.get('closingId');
const { data: closing, isLoading: isLoadingClosing } = useSWR(
closingId,
(id: number) => ClosingApi.getGeneralInfo(id)
);
const { data: salesData, isLoading: isLoadingSales } = useSWR(
closingId ? `sales-${closingId}` : null,
() => ClosingApi.getPenjualan(Number(closingId))
);
const { data: hppEkspedisiData, isLoading: isLoadingHppEkspedisi } = useSWR(
closingId ? `hpp-ekspedisi-${closingId}` : null,
() => ClosingApi.getHppEkspedisi(Number(closingId))
);
if (!closingId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingClosing && (!closing || isResponseError(closing))) {
router.replace('/404');
return;
}
const isLoading = isLoadingClosing || isLoadingSales || isLoadingHppEkspedisi;
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoading && <span className='loading loading-spinner loading-xl' />}
{!isLoading && isResponseSuccess(closing) && (
<ClosingDetail
id={Number(closingId)}
initialValue={closing.data}
salesData={isResponseSuccess(salesData) ? salesData.data : undefined}
hppExpeditionData={
isResponseSuccess(hppEkspedisiData)
? hppEkspedisiData.data
: undefined
}
/>
)}
</div>
);
};
export default ClosingDetailPage;
+11
View File
@@ -0,0 +1,11 @@
import ClosingsTable from '@/components/pages/closing/ClosingsTable';
const Closing = () => {
return (
<section className='w-full p-4'>
<ClosingsTable />
</section>
);
};
export default Closing;
+9
View File
@@ -0,0 +1,9 @@
const Dashboard = () => {
return (
<section className='w-full p-4'>
<h1 className='text-3xl font-bold text-primary'>Dashboard</h1>
</section>
);
};
export default Dashboard;
+11
View File
@@ -0,0 +1,11 @@
import ExpenseRequestForm from '@/components/pages/expense/form/ExpenseRequestForm';
const AddExpense = () => {
return (
<div className='w-full p-4 flex flex-row justify-center'>
<ExpenseRequestForm />
</div>
);
};
export default AddExpense;
+63
View File
@@ -0,0 +1,63 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import ExpenseRequestForm from '@/components/pages/expense/form/ExpenseRequestForm';
import { ExpenseApi } from '@/services/api/expense';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const ExpenseEditPage = () => {
const router = useRouter();
const searchParams = useSearchParams();
const expenseId = searchParams.get('expenseId');
const { data: expense, isLoading: isLoadingExpense } = useSWR(
expenseId,
(id: number) => ExpenseApi.getSingle(id)
);
if (!expenseId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingExpense && (!expense || isResponseError(expense))) {
router.replace('/404');
return;
}
const isExpenseCanBeEdited =
!isLoadingExpense &&
isResponseSuccess(expense) &&
expense.data.latest_approval.step_number !== 5 &&
(expense.data.latest_approval.step_number === 1 ||
expense.data.latest_approval.step_number === 2 ||
expense.data.latest_approval.step_number === 3);
if (!isLoadingExpense && !isExpenseCanBeEdited) {
router.back();
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingExpense && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingExpense && isResponseSuccess(expense) && (
<ExpenseRequestForm type='edit' initialValues={expense.data} />
)}
</div>
);
};
export default ExpenseEditPage;
+11
View File
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
+50
View File
@@ -0,0 +1,50 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import ExpenseDetail from '@/components/pages/expense/ExpenseDetail';
import { ExpenseApi } from '@/services/api/expense';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const ExpenseDetailPage = () => {
const router = useRouter();
const searchParams = useSearchParams();
const expenseId = searchParams.get('expenseId');
const { data: expense, isLoading: isLoadingExpense } = useSWR(
expenseId,
(id: number) => ExpenseApi.getSingle(id)
);
if (!expenseId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingExpense && (!expense || isResponseError(expense))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingExpense && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingExpense && isResponseSuccess(expense) && (
<ExpenseDetail initialValues={expense.data} />
)}
</div>
);
};
export default ExpenseDetailPage;
+11
View File
@@ -0,0 +1,11 @@
import ExpensesTable from '@/components/pages/expense/ExpensesTable';
const Expense = () => {
return (
<section className='w-full p-4'>
<ExpensesTable />
</section>
);
};
export default Expense;
+62
View File
@@ -0,0 +1,62 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import ExpenseRealizationForm from '@/components/pages/expense/form/ExpenseRealizationForm';
import { ExpenseApi } from '@/services/api/expense';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const ExpenseRealizationEditPage = () => {
const router = useRouter();
const searchParams = useSearchParams();
const expenseId = searchParams.get('expenseId');
const { data: expense, isLoading: isLoadingExpense } = useSWR(
expenseId,
(id: number) => ExpenseApi.getSingle(id)
);
if (!expenseId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingExpense && (!expense || isResponseError(expense))) {
router.replace('/404');
return;
}
const isExpenseRealizationCanBeEdited =
!isLoadingExpense &&
isResponseSuccess(expense) &&
expense.data.latest_approval.action !== 'REJECTED' &&
(expense.data.latest_approval.step_number === 4 ||
expense.data.latest_approval.step_number === 5);
if (!isLoadingExpense && !isExpenseRealizationCanBeEdited) {
router.back();
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingExpense && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingExpense && isResponseSuccess(expense) && (
<ExpenseRealizationForm type='edit' initialValues={expense.data} />
)}
</div>
);
};
export default ExpenseRealizationEditPage;
+11
View File
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
+67
View File
@@ -0,0 +1,67 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import ExpenseRealizationForm from '@/components/pages/expense/form/ExpenseRealizationForm';
import { ExpenseApi } from '@/services/api/expense';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const ExpenseRealization = () => {
const router = useRouter();
const searchParams = useSearchParams();
const expenseId = searchParams.get('expenseId');
const { data: expense, isLoading: isLoadingExpense } = useSWR(
expenseId,
(id: number) => ExpenseApi.getSingle(id)
);
if (!expenseId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingExpense && (!expense || isResponseError(expense))) {
router.replace('/404');
return;
}
const isExpenseCanBeRealized =
isResponseSuccess(expense) &&
expense.data.latest_approval.action !== 'REJECTED' &&
expense.data.latest_approval.step_number === 3;
if (isResponseSuccess(expense) && !isExpenseCanBeRealized) {
if (typeof window !== 'undefined') {
router.back();
}
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingExpense && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingExpense && isResponseSuccess(expense) && (
<ExpenseRealizationForm initialValues={expense.data} />
)}
</div>
);
};
export default ExpenseRealization;
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

+74
View File
@@ -0,0 +1,74 @@
@import 'tailwindcss';
@plugin "daisyui";
@import '../styles/daisyui.css';
@plugin "daisyui/theme" {
name: 'lti';
default: false;
prefersdark: false;
color-scheme: 'light';
/* Primary Colors */
--color-primary: oklch(39.4% 0.177 301.9);
--color-primary-content: oklch(87.5% 0.038 274.5);
/* Secondary Colors */
--color-secondary: oklch(60.1% 0.258 335.7);
--color-secondary-content: oklch(99.4% 0.007 337.8);
/* Accent Colors */
--color-accent: oklch(76.2% 0.155 170.8);
--color-accent-content: oklch(7.2% 0.007 167.6);
/* Neutral Colors */
--color-neutral: oklch(22.4% 0.032 258.8);
--color-neutral-content: oklch(87.7% 0.016 257);
/* Base Colors */
--color-base-100: oklch(100% 0 0); /* #ffffff */
--color-base-200: oklch(97.2% 0 0); /* #f2f2f2 */
--color-base-300: oklch(93.1% 0.002 249.7); /* #e5e6e6 */
--color-base-content: oklch(18.6% 0.024 257.7); /* #1f2937 */
/* Status/Utility Colors */
--color-info: oklch(67.4% 0.176 238.9);
--color-info-content: oklch(0% 0 0); /* #000000 */
--color-success: oklch(62.3% 0.147 149);
--color-success-content: oklch(100% 0 0); /* #ffffff */
--color-warning: oklch(82.2% 0.165 91.9);
--color-warning-content: oklch(0% 0 0); /* #000000 */
--color-error: oklch(61.8% 0.203 27.8);
--color-error-content: oklch(100% 0 0); /* #fffffff */
--radius-selector: 0rem;
--radius-field: 0.25rem;
--radius-box: 0.25rem;
--size-selector: 0.21875rem;
--size-field: 0.1875rem;
--border: 1px;
--depth: 0;
--noise: 0;
}
:root {
--color-primary: #1f74bf;
}
@theme {
--font-inter: var(--font-inter);
--container-sm: 40rem;
--container-md: 48rem;
--container-lg: 64rem;
--container-xl: 80rem;
--container-2xl: 96rem;
}
html {
scrollbar-gutter: initial;
}
.react-select__menu-portal {
position: relative;
z-index: 99999 !important;
}
+11
View File
@@ -0,0 +1,11 @@
import InventoryAdjustmentForm from '@/components/pages/inventory/adjustment/form/InventoryAdjustmentForm';
const CreateInventoryAdjustment = () => {
return (
<section className='w-full p-4 flex flex-row justify-center'>
<InventoryAdjustmentForm />
</section>
);
};
export default CreateInventoryAdjustment;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
@@ -0,0 +1,42 @@
'use client';
import { useEffect, useState } from 'react';
import { useRouter } from 'next/navigation';
import InventoryAdjustmentForm from '@/components/pages/inventory/adjustment/form/InventoryAdjustmentForm';
import type { InventoryAdjustment } from '@/types/api/inventory/adjustment';
const DetailInventoryAdjustment = () => {
const router = useRouter();
const [inventoryAdjustment, setInventoryAdjustment] =
useState<InventoryAdjustment | null>(null);
// Ambil data dari router state
useEffect(() => {
const state = window.history.state?.usr as
| { inventoryAdjustment?: InventoryAdjustment }
| undefined;
if (state?.inventoryAdjustment) {
// jika object dikirim via router.push(state)
setInventoryAdjustment(state.inventoryAdjustment);
}
}, [router]);
const finalData = inventoryAdjustment;
if (!finalData) {
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
return (
<section className='w-full p-4 flex flex-row justify-center'>
<InventoryAdjustmentForm initialValues={finalData} />
</section>
);
};
export default DetailInventoryAdjustment;
+11
View File
@@ -0,0 +1,11 @@
import InventoryAdjustmentTable from '@/components/pages/inventory/adjustment/InventoryAdjustmentTable';
const InventoryAdjustment = () => {
return (
<section className='w-full p-4'>
<InventoryAdjustmentTable />
</section>
);
};
export default InventoryAdjustment;
+11
View File
@@ -0,0 +1,11 @@
import MovementForm from '@/components/pages/inventory/movement/form/MovementForm';
const AddMovement = () => {
return (
<div className='w-full p-4 flex flex-row justify-center'>
<MovementForm />
</div>
);
};
export default AddMovement;
@@ -0,0 +1,48 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import MovementForm from '@/components/pages/inventory/movement/form/MovementForm';
import { MovementApi } from '@/services/api/inventory';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const MovementEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
const movementId = searchParams.get('movementId');
const { data: movement, isLoading: isLoadingMovement } = useSWR(
movementId,
(id: number) => MovementApi.getSingle(id)
);
if (!movementId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingMovement && (!movement || isResponseError(movement))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingMovement && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingMovement && isResponseSuccess(movement) && (
<MovementForm type='edit' initialValues={movement.data} />
)}
</div>
);
};
export default MovementEdit;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
@@ -0,0 +1,48 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import MovementForm from '@/components/pages/inventory/movement/form/MovementForm';
import { MovementApi } from '@/services/api/inventory';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const MovementDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
const movementId = searchParams.get('movementId');
const { data: movement, isLoading: isLoadingMovement } = useSWR(
movementId,
(id: number) => MovementApi.getSingle(id)
);
if (!movementId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingMovement && (!movement || isResponseError(movement))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingMovement && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingMovement && isResponseSuccess(movement) && (
<MovementForm type='detail' initialValues={movement.data} />
)}
</div>
);
};
export default MovementDetail;
+11
View File
@@ -0,0 +1,11 @@
import MovementTable from '@/components/pages/inventory/movement/MovementTable';
const Movement = () => {
return (
<section className='w-full p-4'>
<MovementTable />
</section>
);
};
export default Movement;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
+50
View File
@@ -0,0 +1,50 @@
'use client';
import InventoryProductDetail from '@/components/pages/inventory/product/detail/InventoryProductDetail';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { InventoryProductApi } from '@/services/api/inventory';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
const InventoryProductDetailPage = () => {
const router = useRouter();
const searchParams = useSearchParams();
const inventoryProductId = searchParams.get('inventoryProductId');
const { data: inventoryProduct, isLoading: isLoadingInventoryProduct } =
useSWR(inventoryProductId, (id: number) =>
InventoryProductApi.getSingle(id)
);
if (!inventoryProductId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (
!isLoadingInventoryProduct &&
(!inventoryProduct || isResponseError(inventoryProduct))
) {
router.replace('/404');
return;
}
return (
<div className='size-full'>
{isLoadingInventoryProduct && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingInventoryProduct && isResponseSuccess(inventoryProduct) && (
<InventoryProductDetail inventoryProduct={inventoryProduct.data} />
)}
</div>
);
};
export default InventoryProductDetailPage;
+11
View File
@@ -0,0 +1,11 @@
import InventoryProductTable from '@/components/pages/inventory/product/InventoryProductTable';
const InventoryProductPage = () => {
return (
<div className='size-full'>
<InventoryProductTable />
</div>
);
};
export default InventoryProductPage;
+41
View File
@@ -0,0 +1,41 @@
import type { Metadata, Viewport } from 'next';
import { Inter } from 'next/font/google';
import '@/app/globals.css';
import { Toaster } from 'react-hot-toast';
import MainDrawer from '@/components/MainDrawer';
import RequireAuth from '@/components/helper/RequireAuth';
const inter = Inter({
variable: '--font-inter',
subsets: ['latin'],
});
export const viewport: Viewport = {
themeColor: '#1f74bf',
colorScheme: 'light',
initialScale: 1,
};
export const metadata: Metadata = {
title: 'LTI',
description: 'PT. Lumbung Telur Indonesia',
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang='en' data-theme='lti'>
<body className={`${inter.variable} antialiased font-inter`}>
<RequireAuth>
<MainDrawer>{children}</MainDrawer>
</RequireAuth>
<Toaster />
</body>
</html>
);
}
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
@@ -0,0 +1,54 @@
'use client';
import MarketingForm from '@/components/pages/marketing/form/MarketingForm';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { MarketingApi } from '@/services/api/marketing/marketing';
import { useRouter, useSearchParams } from 'next/navigation';
import toast from 'react-hot-toast';
import useSWR from 'swr';
const EditMarketingDelivery = () => {
const router = useRouter();
const searchParams = useSearchParams();
const soId = searchParams.get('marketingId');
const {
data: marketing,
isLoading: isLoading,
mutate: refreshMarketing,
} = useSWR(`get-so-${soId}`, () =>
MarketingApi.getSingle(soId ? parseInt(soId) : 0)
);
if (!soId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoading && (!marketing || isResponseError(marketing))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4'>
{isLoading && <span className='loading loading-spinner loading-xl' />}
{!isLoading && isResponseSuccess(marketing) && (
<MarketingForm
formType='add_deliver'
initialValues={marketing.data}
afterSubmit={() => {
refreshMarketing();
}}
/>
)}
</div>
);
};
export default EditMarketingDelivery;
@@ -0,0 +1,11 @@
import MarketingForm from '@/components/pages/marketing/form/MarketingForm';
const AddSalesOrder = () => {
return (
<div className='size-full p-4'>
<MarketingForm formType='add' />
</div>
);
};
export default AddSalesOrder;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
@@ -0,0 +1,62 @@
'use client';
import MarketingForm from '@/components/pages/marketing/form/MarketingForm';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { MarketingApi } from '@/services/api/marketing/marketing';
import { useRouter, useSearchParams } from 'next/navigation';
import toast from 'react-hot-toast';
import useSWR from 'swr';
const EditMarketingDelivery = () => {
const router = useRouter();
const searchParams = useSearchParams();
const soId = searchParams.get('marketingId');
const {
data: marketing,
isLoading: isLoading,
mutate: refreshMarketing,
} = useSWR(`get-so-${soId}`, () =>
MarketingApi.getSingle(soId ? parseInt(soId) : 0)
);
if (!soId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoading && (!marketing || isResponseError(marketing))) {
router.replace('/404');
return;
}
if (
isResponseSuccess(marketing) &&
marketing.data.latest_approval.step_number != 3
) {
toast.error('Data Marketing perlu dilakukan approval terlebih dahulu!');
router.back();
}
return (
<div className='w-full p-4'>
{isLoading && <span className='loading loading-spinner loading-xl' />}
{!isLoading && isResponseSuccess(marketing) && (
<MarketingForm
formType='edit_deliver'
initialValues={marketing.data}
afterSubmit={() => {
refreshMarketing();
}}
/>
)}
</div>
);
};
export default EditMarketingDelivery;
+11
View File
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
+49
View File
@@ -0,0 +1,49 @@
'use client';
import MarketingDetail from '@/components/pages/marketing/detail/MarketingDetail';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { MarketingApi } from '@/services/api/marketing/marketing';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
const DetailMarketing = () => {
const router = useRouter();
const searchParams = useSearchParams();
const soId = searchParams.get('marketingId');
const {
data: marketing,
isLoading: isLoading,
mutate: refreshMarketing,
} = useSWR(soId, (id: number) => MarketingApi.getSingle(id));
if (!soId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoading && (!marketing || isResponseError(marketing))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4'>
{isLoading && <span className='loading loading-spinner loading-xl' />}
{!isLoading && isResponseSuccess(marketing) && (
<MarketingDetail
initialValues={marketing.data}
refresh={refreshMarketing}
/>
)}
</div>
);
};
export default DetailMarketing;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
@@ -0,0 +1,52 @@
'use client';
import MarketingForm from '@/components/pages/marketing/form/MarketingForm';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { MarketingApi } from '@/services/api/marketing/marketing';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
const EditSalesOrder = () => {
const router = useRouter();
const searchParams = useSearchParams();
const soId = searchParams.get('marketingId');
const {
data: marketing,
isLoading: isLoading,
mutate: refreshMarketing,
} = useSWR(`get-so-${soId}`, () =>
MarketingApi.getSingle(soId ? parseInt(soId) : 0)
);
if (!soId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoading && (!marketing || isResponseError(marketing))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4'>
{isLoading && <span className='loading loading-spinner loading-xl' />}
{!isLoading && isResponseSuccess(marketing) && (
<MarketingForm
formType='edit'
initialValues={marketing.data}
afterSubmit={() => {
refreshMarketing();
}}
/>
)}
</div>
);
};
export default EditSalesOrder;
+11
View File
@@ -0,0 +1,11 @@
import MarketingTable from '@/components/pages/marketing/MarketingTable';
const Marketing = () => {
return (
<div className='w-full p-4'>
<MarketingTable />
</div>
);
};
export default Marketing;
+11
View File
@@ -0,0 +1,11 @@
import AreaForm from '@/components/pages/master-data/area/form/AreaForm';
const AddNonstock = () => {
return (
<div className='w-full p-4 flex flex-row justify-center'>
<AreaForm />
</div>
);
};
export default AddNonstock;
@@ -0,0 +1,47 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import AreaForm from '@/components/pages/master-data/area/form/AreaForm';
import { AreaApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const AreaEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
const areaId = searchParams.get('areaId');
const { data: area, isLoading: isLoadingArea } = useSWR(
areaId,
(id: number) => AreaApi.getSingle(id)
);
if (!areaId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingArea && (!area || isResponseError(area))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingArea && <span className='loading loading-spinner loading-xl' />}
{!isLoadingArea && isResponseSuccess(area) && (
<AreaForm type='edit' initialValues={area.data} />
)}
</div>
);
};
export default AreaEdit;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
+47
View File
@@ -0,0 +1,47 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import AreaForm from '@/components/pages/master-data/area/form/AreaForm';
import { AreaApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const AreaDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
const areaId = searchParams.get('areaId');
const { data: area, isLoading: isLoadingArea } = useSWR(
areaId,
(id: number) => AreaApi.getSingle(id)
);
if (!areaId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingArea && (!area || isResponseError(area))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingArea && <span className='loading loading-spinner loading-xl' />}
{!isLoadingArea && isResponseSuccess(area) && (
<AreaForm type='detail' initialValues={area.data} />
)}
</div>
);
};
export default AreaDetail;
+11
View File
@@ -0,0 +1,11 @@
import AreasTable from '@/components/pages/master-data/area/AreasTable';
const Nonstock = () => {
return (
<section className='w-full p-4'>
<AreasTable />
</section>
);
};
export default Nonstock;
+11
View File
@@ -0,0 +1,11 @@
import BankForm from '@/components/pages/master-data/bank/form/BankForm';
const AddBank = () => {
return (
<div className='w-full p-4 flex flex-row justify-center'>
<BankForm />
</div>
);
};
export default AddBank;
@@ -0,0 +1,47 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import BankForm from '@/components/pages/master-data/bank/form/BankForm';
import { BankApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const BankEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
const bankId = searchParams.get('bankId');
const { data: bank, isLoading: isLoadingBank } = useSWR(
bankId,
(id: number) => BankApi.getSingle(id)
);
if (!bankId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingBank && (!bank || isResponseError(bank))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingBank && <span className='loading loading-spinner loading-xl' />}
{!isLoadingBank && isResponseSuccess(bank) && (
<BankForm type='edit' initialValues={bank.data} />
)}
</div>
);
};
export default BankEdit;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
+47
View File
@@ -0,0 +1,47 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import BankForm from '@/components/pages/master-data/bank/form/BankForm';
import { BankApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const BankDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
const bankId = searchParams.get('bankId');
const { data: bank, isLoading: isLoadingBank } = useSWR(
bankId,
(id: number) => BankApi.getSingle(id)
);
if (!bankId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingBank && (!bank || isResponseError(bank))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingBank && <span className='loading loading-spinner loading-xl' />}
{!isLoadingBank && isResponseSuccess(bank) && (
<BankForm type='detail' initialValues={bank.data} />
)}
</div>
);
};
export default BankDetail;
+11
View File
@@ -0,0 +1,11 @@
import BanksTable from '@/components/pages/master-data/bank/BanksTable';
const Bank = () => {
return (
<section className='w-full p-4'>
<BanksTable />
</section>
);
};
export default Bank;
+11
View File
@@ -0,0 +1,11 @@
import CustomerForm from '@/components/pages/master-data/customer/form/CustomerForm';
const AddCustomer = () => {
return (
<section className='w-full p-4 flex flex-row justify-center'>
<CustomerForm />
</section>
);
};
export default AddCustomer;
@@ -0,0 +1,47 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import { CustomerApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import CustomerForm from '@/components/pages/master-data/customer/form/CustomerForm';
const CustomerEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
const costumerId = searchParams.get('customerId');
const { data: costumer, isLoading: isLoadingCostumer } = useSWR(
costumerId,
(id: number) => CustomerApi.getSingle(id)
);
if (!costumerId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingCostumer && (!costumer || isResponseError(costumer))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingCostumer && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingCostumer && isResponseSuccess(costumer) && (
<CustomerForm formType='edit' initialValues={costumer.data} />
)}
</div>
);
};
export default CustomerEdit;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
@@ -0,0 +1,47 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import { CustomerApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import CustomerForm from '@/components/pages/master-data/customer/form/CustomerForm';
const CustomerDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
const costumerId = searchParams.get('customerId');
const { data: costumer, isLoading: isLoadingCostumer } = useSWR(
costumerId,
(id: number) => CustomerApi.getSingle(id)
);
if (!costumerId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingCostumer && (!costumer || isResponseError(costumer))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingCostumer && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingCostumer && isResponseSuccess(costumer) && (
<CustomerForm formType='detail' initialValues={costumer.data} />
)}
</div>
);
};
export default CustomerDetail;
+11
View File
@@ -0,0 +1,11 @@
import CustomersTable from '@/components/pages/master-data/customer/CustomersTable';
const Customer = () => {
return (
<section className='w-full p-4'>
<CustomersTable />
</section>
);
};
export default Customer;
+11
View File
@@ -0,0 +1,11 @@
import FcrForm from '@/components/pages/master-data/fcr/form/FcrForm';
const AddFcr = () => {
return (
<div className='w-full p-4 flex flex-row justify-center'>
<FcrForm />
</div>
);
};
export default AddFcr;
@@ -0,0 +1,52 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import FcrForm from '@/components/pages/master-data/fcr/form/FcrForm';
import { FcrApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { BaseApiResponse } from '@/types/api/api-general';
import { FcrWithStandards } from '@/types/api/master-data/fcr';
const FcrEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
const fcrId = searchParams.get('fcrId');
const { data: fcr, isLoading: isLoadingFcr } = useSWR(
fcrId,
(id: number) =>
FcrApi.getSingle(id) as Promise<
BaseApiResponse<FcrWithStandards> | undefined
>
);
if (!fcrId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingFcr && (!fcr || isResponseError(fcr))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingFcr && <span className='loading loading-spinner loading-xl' />}
{!isLoadingFcr && isResponseSuccess(fcr) && (
<FcrForm type='edit' initialValues={fcr.data} />
)}
</div>
);
};
export default FcrEdit;
+11
View File
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
+52
View File
@@ -0,0 +1,52 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import FcrForm from '@/components/pages/master-data/fcr/form/FcrForm';
import { FcrApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { FcrWithStandards } from '@/types/api/master-data/fcr';
import { BaseApiResponse } from '@/types/api/api-general';
const FcrDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
const fcrId = searchParams.get('fcrId');
const { data: fcr, isLoading: isLoadingFcr } = useSWR(
fcrId,
(id: number) =>
FcrApi.getSingle(id) as Promise<
BaseApiResponse<FcrWithStandards> | undefined
>
);
if (!fcrId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingFcr && (!fcr || isResponseError(fcr))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingFcr && <span className='loading loading-spinner loading-xl' />}
{!isLoadingFcr && isResponseSuccess(fcr) && (
<FcrForm type='detail' initialValues={fcr.data} />
)}
</div>
);
};
export default FcrDetail;
+11
View File
@@ -0,0 +1,11 @@
import FcrsTable from '@/components/pages/master-data/fcr/FcrsTable';
const Fcr = () => {
return (
<section className='w-full p-4'>
<FcrsTable />
</section>
);
};
export default Fcr;
+11
View File
@@ -0,0 +1,11 @@
import FlockForm from '@/components/pages/master-data/flock/form/FlockForm';
const AddFlock = () => {
return (
<section className='w-full p-4 flex flex-row justify-center'>
<FlockForm />
</section>
);
};
export default AddFlock;
@@ -0,0 +1,49 @@
'use client';
import FlockForm from '@/components/pages/master-data/flock/form/FlockForm';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { FlockApi } from '@/services/api/master-data';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
const FlockEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
// Get Query Params
const flockId = searchParams.get('flockId');
// Fetch Data
const { data: flock, isLoading: isLoadingFlock } = useSWR(
flockId,
(id: number) => FlockApi.getSingle(id)
);
if (!flockId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingFlock && (!flock || isResponseError(flock))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingFlock && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingFlock && isResponseSuccess(flock) && (
<FlockForm formType='edit' initialValues={flock.data} />
)}
</div>
);
};
export default FlockEdit;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
+49
View File
@@ -0,0 +1,49 @@
'use client';
import FlockForm from '@/components/pages/master-data/flock/form/FlockForm';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { FlockApi } from '@/services/api/master-data';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
const FlockDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
// Get Query Params
const flockId = searchParams.get('flockId');
// Fetch Data
const { data: flock, isLoading: isLoadingFlock } = useSWR(
flockId,
(id: number) => FlockApi.getSingle(id)
);
if (!flockId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingFlock && (!flock || isResponseError(flock))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingFlock && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingFlock && isResponseSuccess(flock) && (
<FlockForm formType='detail' initialValues={flock.data} />
)}
</div>
);
};
export default FlockDetail;
+11
View File
@@ -0,0 +1,11 @@
import FlockTable from '@/components/pages/master-data/flock/FlocksTable';
const Flock = () => {
return (
<section className='w-full p-4'>
<FlockTable />
</section>
);
};
export default Flock;
+11
View File
@@ -0,0 +1,11 @@
import KandangForm from '@/components/pages/master-data/kandang/form/KandangForm';
const AddNonstock = () => {
return (
<div className='w-full p-4 flex flex-row justify-center'>
<KandangForm />
</div>
);
};
export default AddNonstock;
@@ -0,0 +1,49 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import KandangForm from '@/components/pages/master-data/kandang/form/KandangForm';
import { KandangApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const KandangEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
const kandangId = searchParams.get('kandangId');
const { data: kandang, isLoading: isLoadingKandang } = useSWR(
kandangId,
(id: number) => KandangApi.getSingle(id)
);
if (!kandangId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingKandang && (!kandang || isResponseError(kandang))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingKandang && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingKandang && isResponseSuccess(kandang) && (
<KandangForm type='edit' initialValues={kandang.data} />
)}
</div>
);
};
export default KandangEdit;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
@@ -0,0 +1,49 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import KandangForm from '@/components/pages/master-data/kandang/form/KandangForm';
import { KandangApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const KandangDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
const kandangId = searchParams.get('kandangId');
const { data: kandang, isLoading: isLoadingKandang } = useSWR(
kandangId,
(id: number) => KandangApi.getSingle(id)
);
if (!kandangId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingKandang && (!kandang || isResponseError(kandang))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingKandang && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingKandang && isResponseSuccess(kandang) && (
<KandangForm type='detail' initialValues={kandang.data} />
)}
</div>
);
};
export default KandangDetail;
+11
View File
@@ -0,0 +1,11 @@
import KandangsTable from '@/components/pages/master-data/kandang/KandangsTable';
const Nonstock = () => {
return (
<section className='w-full p-4'>
<KandangsTable />
</section>
);
};
export default Nonstock;
+11
View File
@@ -0,0 +1,11 @@
import LocationForm from '@/components/pages/master-data/location/form/LocationForm';
const AddNonstock = () => {
return (
<div className='w-full p-4 flex flex-row justify-center'>
<LocationForm />
</div>
);
};
export default AddNonstock;
@@ -0,0 +1,49 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import LocationForm from '@/components/pages/master-data/location/form/LocationForm';
import { LocationApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const LocationEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
const locationId = searchParams.get('locationId');
const { data: location, isLoading: isLoadingLocation } = useSWR(
locationId,
(id: number) => LocationApi.getSingle(id)
);
if (!locationId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingLocation && (!location || isResponseError(location))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingLocation && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingLocation && isResponseSuccess(location) && (
<LocationForm type='edit' initialValues={location.data} />
)}
</div>
);
};
export default LocationEdit;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
@@ -0,0 +1,49 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import LocationForm from '@/components/pages/master-data/location/form/LocationForm';
import { LocationApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const LocationDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
const locationId = searchParams.get('locationId');
const { data: location, isLoading: isLoadingLocation } = useSWR(
locationId,
(id: number) => LocationApi.getSingle(id)
);
if (!locationId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingLocation && (!location || isResponseError(location))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingLocation && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingLocation && isResponseSuccess(location) && (
<LocationForm type='detail' initialValues={location.data} />
)}
</div>
);
};
export default LocationDetail;
+11
View File
@@ -0,0 +1,11 @@
import LocationsTable from '@/components/pages/master-data/location/LocationsTable';
const Nonstock = () => {
return (
<section className='w-full p-4'>
<LocationsTable />
</section>
);
};
export default Nonstock;
+11
View File
@@ -0,0 +1,11 @@
import NonstockForm from '@/components/pages/master-data/nonstock/form/NonstockForm';
const AddNonstock = () => {
return (
<div className='w-full p-4 flex flex-row justify-center'>
<NonstockForm />
</div>
);
};
export default AddNonstock;
@@ -0,0 +1,49 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import NonstockForm from '@/components/pages/master-data/nonstock/form/NonstockForm';
import { NonstockApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const NonstockEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
const nonstockId = searchParams.get('nonstockId');
const { data: nonstock, isLoading: isLoadingNonstock } = useSWR(
nonstockId,
(id: number) => NonstockApi.getSingle(id)
);
if (!nonstockId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingNonstock && (!nonstock || isResponseError(nonstock))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingNonstock && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingNonstock && isResponseSuccess(nonstock) && (
<NonstockForm type='edit' initialValues={nonstock.data} />
)}
</div>
);
};
export default NonstockEdit;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
@@ -0,0 +1,49 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import NonstockForm from '@/components/pages/master-data/nonstock/form/NonstockForm';
import { NonstockApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const NonstockDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
const nonstockId = searchParams.get('nonstockId');
const { data: nonstock, isLoading: isLoadingNonstock } = useSWR(
nonstockId,
(id: number) => NonstockApi.getSingle(id)
);
if (!nonstockId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingNonstock && (!nonstock || isResponseError(nonstock))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingNonstock && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingNonstock && isResponseSuccess(nonstock) && (
<NonstockForm type='detail' initialValues={nonstock.data} />
)}
</div>
);
};
export default NonstockDetail;
+11
View File
@@ -0,0 +1,11 @@
import NonstocksTable from '@/components/pages/master-data/nonstock/NonstocksTable';
const Nonstock = () => {
return (
<section className='w-full p-4'>
<NonstocksTable />
</section>
);
};
export default Nonstock;
@@ -0,0 +1,11 @@
import ProductCategoryForm from '@/components/pages/master-data/product-category/form/ProductCategoryForm';
const AddProductCategory = () => {
return (
<div className='w-full p-4 flex flex-row justify-center'>
<ProductCategoryForm />
</div>
);
};
export default AddProductCategory;
@@ -0,0 +1,52 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import ProductCategoryForm from '@/components/pages/master-data/product-category/form/ProductCategoryForm';
import { ProductCategoryApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const ProductCategoryEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
const productCategoryId = searchParams.get('productCategoryId');
const { data: productCategory, isLoading: isLoadingProductCategory } = useSWR(
productCategoryId,
(id: number) => ProductCategoryApi.getSingle(id)
);
if (!productCategoryId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (
!isLoadingProductCategory &&
(!productCategory || isResponseError(productCategory))
) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingProductCategory && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingProductCategory && isResponseSuccess(productCategory) && (
<ProductCategoryForm type='edit' initialValues={productCategory.data} />
)}
</div>
);
};
export default ProductCategoryEdit;
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
@@ -0,0 +1,55 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import ProductCategoryForm from '@/components/pages/master-data/product-category/form/ProductCategoryForm';
import { ProductCategoryApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const ProductCategoryDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
const productCategoryId = searchParams.get('productCategoryId');
const { data: productCategory, isLoading: isLoadingProductCategory } = useSWR(
productCategoryId,
(id: number) => ProductCategoryApi.getSingle(id)
);
if (!productCategoryId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (
!isLoadingProductCategory &&
(!productCategory || isResponseError(productCategory))
) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingProductCategory && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingProductCategory && isResponseSuccess(productCategory) && (
<ProductCategoryForm
type='detail'
initialValues={productCategory.data}
/>
)}
</div>
);
};
export default ProductCategoryDetail;
@@ -0,0 +1,11 @@
import ProductCategoryTable from '@/components/pages/master-data/product-category/ProductCategoryTable';
const ProductCategory = () => {
return (
<section className='w-full p-4'>
<ProductCategoryTable />
</section>
);
};
export default ProductCategory;
+11
View File
@@ -0,0 +1,11 @@
import ProductForm from '@/components/pages/master-data/product/form/ProductForm';
const AddProduct = () => {
return (
<div className='w-full p-4 flex flex-row justify-center'>
<ProductForm />
</div>
);
};
export default AddProduct;
@@ -0,0 +1,44 @@
'use client';
import { useRouter, useSearchParams } from 'next/navigation';
import useSWR from 'swr';
import ProductForm from '@/components/pages/master-data/product/form/ProductForm';
import { ProductApi } from '@/services/api/master-data';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
const ProductEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
const productId = searchParams.get('productId');
const { data: product, isLoading } = useSWR(productId, (id: number) =>
ProductApi.getSingle(id)
);
if (!productId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoading && (!product || isResponseError(product))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoading && <span className='loading loading-spinner loading-xl' />}
{!isLoading && isResponseSuccess(product) && (
<ProductForm type='edit' initialValues={product.data} />
)}
</div>
);
};
export default ProductEdit;

Some files were not shown because too many files have changed in this diff Show More