PIS (Purchase Import System)
Aplikasi: PIS (PO Import System )
Perusahaan: PT Sanghiang Perkasa
Tipe Project: .Net Core Web Application
Tim Product Terkait: Hendi Hendrasta
Tanggal Dokumentasi: Januari 2026
๐ Akses Aplikasiโ
Berikut adalah alamat akses cepat untuk environment aplikasi:
| Environment | URL Akses | Deskripsi |
|---|---|---|
| ๐ Production | https://epis.kalbenutritionals.com | Environment utama pengguna |
| ๐งช Development | https://episdev.kalbenutritionals.web.id | Testing & staging area |
| โ๏ธ Hangfire | https://epis.kalbenutritionals.com/hangfire | Dashboard Background Jobs |
๐ Deskripsi Proyekโ
PIS (Purchase Order Import System) adalah aplikasi web berbasis ASP.NET Core MVC yang dikembangkan untuk Kalbe Nutritionals. Sistem ini digunakan untuk mengelola proses import, mulai dari Purchase Order, Perizinan Import, Realisasi, Clearance, Payment, hingga pengelolaan dokumen dan pelaporan.
๐๏ธ Arsitektur Aplikasiโ
Proyek ini menggunakan arsitektur Multi-Layer Architecture dengan pemisahan concern yang jelas:
pis/
โโโ epis/ # Web Application Layer (ASP.NET Core MVC)
โโโ KN2023_PIS.BussLogic/ # Business Logic Layer
โโโ KN2023_PIS.Common/ # Common/Shared Library
โโโ KN2023_PIS.DAL/ # Data Access Layer
Layer Descriptionsโ
-
epis - Web Application Layer
- ASP.NET Core MVC application
- Controllers untuk handling HTTP requests
- Views untuk UI rendering
- Configuration dan dependency injection setup
-
KN2023_PIS.BussLogic - Business Logic Layer
- Business logic implementation
- Service interfaces dan implementations
- Transaction processing
- Report generation logic
-
KN2023_PIS.Common - Common Library
- Entity models
- DTOs (Request/Response)
- Interfaces
- Utility libraries
- Configuration models
-
KN2023_PIS.DAL - Data Access Layer
- Database context (Entity Framework Core)
- Model builders
- Database migrations
- Oracle dan PostgreSQL integration
๐ ๏ธ Teknologi yang Digunakanโ
Framework & Runtimeโ
- .NET 7.0 - Target framework
- ASP.NET Core MVC - Web framework
- Entity Framework Core 7.0.9 - ORM
Databaseโ
- PostgreSQL - Database utama (via Npgsql.EntityFrameworkCore.PostgreSQL)
- Oracle Database - Database eksternal (via Oracle.EntityFrameworkCore)
- Redis - Caching dan session storage
Libraries & Toolsโ
- Hangfire 1.7.32 - Background job processing
- Hangfire.PostgreSql 1.9.9 - Hangfire storage untuk PostgreSQL
- ElmahCore 2.1.2 - Error logging dan monitoring
- Swashbuckle.AspNetCore 6.5.0 - Swagger/OpenAPI documentation
- ClosedXML 0.105.0 - Excel file manipulation
- FluentValidation 11.10.0 - Input validation
- Microsoft.AspNetCore.Mvc.Versioning 5.1.0 - API versioning
- SixLaborsCaptcha.Mvc.Core 1.0.0 - CAPTCHA generation
- KN2021_GlobalClient-NetCore 3.0.1 - Kalbe Nutritionals Global Client Library
Infrastructureโ
- Docker - Containerization support
- Redis - Distributed caching
- WSO API Gateway - API management dan authentication
๐ฆ Struktur Proyekโ
Controllersโ
Transaction Controllersโ
PurchaseOrderController- Manajemen Purchase OrderImportPermitPerizinanController- Manajemen Perizinan Import PermitImportPermitRealisasiController- Manajemen Realisasi Import PermitClearanceController- Manajemen ClearancePaymentController- Manajemen PaymentDocumentController- Manajemen Dokumen
Master Controllersโ
CategoryController- Master KategoriHolidayController- Master Hari LiburHsCodeController- Master HS Code
Report Controllersโ
BeaCukaiAuditController- Laporan Audit Bea CukaiBPOMHistoryController- Laporan History BPOMDocumentHistoryController- Laporan History DokumenImportMonitoringController- Laporan Monitoring ImportPaymentHistoryController- Laporan History PaymentSupplierPerformanceController- Laporan Performance Supplier & Inventory In-TransitKarantinaHistoryController- Laporan History Karantina
System Controllersโ
JobController- Manajemen Background JobsLOVController- List of ValuesParameterController- Manajemen Parameter Sistem
โ๏ธ Konfigurasiโ
Connection Stringsโ
Aplikasi menggunakan encrypted connection strings yang disimpan di appsettings.json:
- PISDBConnection - PostgreSQL database untuk aplikasi utama
- HangfireConnection - PostgreSQL database untuk Hangfire jobs
- OracleConnection - Oracle database untuk integrasi dengan sistem eksternal
- ElmahLogConnection - SQL Server database untuk error logging
App Settingsโ
{
"AppSettings": {
"Secret": "", // JWT Secret Key
"ENVIRONMENT": "PRODUCTION" // Environment: DEVELOPMENT/PRODUCTION
},
"RedisSettings": {
"RedisConnection": "", // Encrypted Redis connection string
"RedisDB": 4 // Redis database number
},
"WSOHelperConfiguration": {
"txtGlobalAPI_Url": "", // Global API URL
"wso_api_gateway": "", // WSO API Gateway URL
"wso_consumer_key": "", // WSO Consumer Key
"wso_consumer_secret": "", // WSO Consumer Secret
"wso_api_key": "" // WSO API Key
}
}
๐ Cara Menjalankan Aplikasiโ
Prerequisitesโ
- .NET 7.0 SDK - Download dari dotnet.microsoft.com
- PostgreSQL - Database server
- Redis - Redis server untuk caching
- Oracle Client - Untuk koneksi ke Oracle database (opsional)
- Visual Studio 2022 atau VS Code - IDE (opsional)
Setup Development Environmentโ
-
Clone Repository
git clone <repository-url>
cd pis -
Restore NuGet Packages
dotnet restore -
Konfigurasi appsettings.json
- Copy
appsettings.Development.jsonatau editappsettings.json - Update connection strings sesuai environment development
- Update Redis settings
- Update WSO API Gateway configuration
- Copy
-
Setup Database
- Pastikan PostgreSQL server berjalan
- Jalankan migration (jika ada):
dotnet ef database update --project KN2023_PIS.DAL --startup-project epis
-
Setup Redis
- Pastikan Redis server berjalan
- Update Redis connection string di
appsettings.json
-
Run Application
cd epis
dotnet runAtau menggunakan Visual Studio:
- Buka
KN2023_PIS.sln - Set
epissebagai startup project - Tekan F5 untuk run
- Buka
Docker Deploymentโ
-
Build Docker Image
docker build -t pis:latest -f epis/Dockerfile . -
Run Container
docker run -d -p 80:80 \
-e ASPNETCORE_ENVIRONMENT=Production \
-v /path/to/appsettings.json:/app/appsettings.json \
pis:latest
๐ API Documentationโ
Aplikasi menyediakan Swagger UI untuk dokumentasi API:
- Development:
https://localhost:<port>/swagger - Production:
https://<domain>/swagger
API menggunakan versioning dengan format URL: /api/v{version}/{controller}/{action}
Authenticationโ
API menggunakan JWT token authentication. Token harus disertakan di header:
Authorization: Bearer <token>
๐ง Fitur Utamaโ
1. Purchase Order Managementโ
- Create, Read, Update, Delete Purchase Order
- Import Purchase Order dari Excel
- Tracking status Purchase Order
2. Import Permit Managementโ
- Perizinan: Pengajuan dan approval perizinan import
- Realisasi: Realisasi import permit yang sudah disetujui
3. Clearance Managementโ
- Manajemen clearance untuk import
- Integrasi dengan sistem Bea Cukai
4. Payment Managementโ
- Tracking payment untuk import
- Payment history dan reporting
5. Document Managementโ
- Upload dan management dokumen import
- Document history tracking
6. Reportingโ
- Bea Cukai Audit Report
- BPOM History Report
- Payment History Report
- Import Monitoring Report
- Supplier Performance Report
- Document History Report
- Karantina History Report
7. Background Jobsโ
- Hangfire dashboard:
/hangfire - Scheduled jobs untuk proses otomatis
- Job monitoring dan management
8. Error Loggingโ
- ELMAH error logging:
/logging - Error tracking dan monitoring
๐ Security Featuresโ
- JWT Authentication - Token-based authentication
- Data Encryption - Connection strings dienkripsi menggunakan Rijndael
- Data Protection - ASP.NET Core Data Protection dengan certificate
- CAPTCHA - SixLaborsCaptcha untuk form protection
- CORS - Cross-Origin Resource Sharing configuration
- XSS Protection - Anti-XSS middleware (commented, dapat diaktifkan)
๐ Development Guidelinesโ
Code Structureโ
- Controllers - Handle HTTP requests, minimal business logic
- Business Logic - Semua business logic di layer
KN2023_PIS.BussLogic - Data Access - Semua database operations di layer
KN2023_PIS.DAL - Common - Shared models, interfaces, dan utilities
Naming Conventionsโ
- Controllers:
{Entity}Controller.cs - Business Logic:
Cls{Entity}BL.cs - Interfaces:
I{Entity}.cs - Entities: PascalCase
- Methods: PascalCase
Dependency Injectionโ
Semua services diregister di Program.cs menggunakan Singleton pattern untuk business logic services.
๐ฆ Build & Deploymentโ
Build untuk Productionโ
dotnet build -c Release
dotnet publish epis/epis.csproj -c Release -o ./publish
๐ Version Historyโ
- v1.0.0 - Initial release
- Purchase Order Management
- Import Permit Management
- Clearance Management
- Payment Management
- Document Management
- Reporting features
- Background jobs dengan Hangfire
- Error logging dengan ELMAH
Common Issues & Troubleshootingโ
Last Updated: 2024 Maintained by: Kalbe Nutritionals IT Development Team