Skip to main content

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:

EnvironmentURL AksesDeskripsi
๐Ÿš€ Productionhttps://epis.kalbenutritionals.comEnvironment utama pengguna
๐Ÿงช Developmenthttps://episdev.kalbenutritionals.web.idTesting & staging area
โš™๏ธ Hangfirehttps://epis.kalbenutritionals.com/hangfireDashboard 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โ€‹

  1. epis - Web Application Layer

    • ASP.NET Core MVC application
    • Controllers untuk handling HTTP requests
    • Views untuk UI rendering
    • Configuration dan dependency injection setup
  2. KN2023_PIS.BussLogic - Business Logic Layer

    • Business logic implementation
    • Service interfaces dan implementations
    • Transaction processing
    • Report generation logic
  3. KN2023_PIS.Common - Common Library

    • Entity models
    • DTOs (Request/Response)
    • Interfaces
    • Utility libraries
    • Configuration models
  4. 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 Order
  • ImportPermitPerizinanController - Manajemen Perizinan Import Permit
  • ImportPermitRealisasiController - Manajemen Realisasi Import Permit
  • ClearanceController - Manajemen Clearance
  • PaymentController - Manajemen Payment
  • DocumentController - Manajemen Dokumen

Master Controllersโ€‹

  • CategoryController - Master Kategori
  • HolidayController - Master Hari Libur
  • HsCodeController - Master HS Code

Report Controllersโ€‹

  • BeaCukaiAuditController - Laporan Audit Bea Cukai
  • BPOMHistoryController - Laporan History BPOM
  • DocumentHistoryController - Laporan History Dokumen
  • ImportMonitoringController - Laporan Monitoring Import
  • PaymentHistoryController - Laporan History Payment
  • SupplierPerformanceController - Laporan Performance Supplier & Inventory In-Transit
  • KarantinaHistoryController - Laporan History Karantina

System Controllersโ€‹

  • JobController - Manajemen Background Jobs
  • LOVController - List of Values
  • ParameterController - 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โ€‹

  1. .NET 7.0 SDK - Download dari dotnet.microsoft.com
  2. PostgreSQL - Database server
  3. Redis - Redis server untuk caching
  4. Oracle Client - Untuk koneksi ke Oracle database (opsional)
  5. Visual Studio 2022 atau VS Code - IDE (opsional)

Setup Development Environmentโ€‹

  1. Clone Repository

    git clone <repository-url>
    cd pis
  2. Restore NuGet Packages

    dotnet restore
  3. Konfigurasi appsettings.json

    • Copy appsettings.Development.json atau edit appsettings.json
    • Update connection strings sesuai environment development
    • Update Redis settings
    • Update WSO API Gateway configuration
  4. Setup Database

    • Pastikan PostgreSQL server berjalan
    • Jalankan migration (jika ada):
      dotnet ef database update --project KN2023_PIS.DAL --startup-project epis
  5. Setup Redis

    • Pastikan Redis server berjalan
    • Update Redis connection string di appsettings.json
  6. Run Application

    cd epis
    dotnet run

    Atau menggunakan Visual Studio:

    • Buka KN2023_PIS.sln
    • Set epis sebagai startup project
    • Tekan F5 untuk run

Docker Deploymentโ€‹

  1. Build Docker Image

    docker build -t pis:latest -f epis/Dockerfile .
  2. 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โ€‹

  1. Controllers - Handle HTTP requests, minimal business logic
  2. Business Logic - Semua business logic di layer KN2023_PIS.BussLogic
  3. Data Access - Semua database operations di layer KN2023_PIS.DAL
  4. 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