Account Payable Entry Form
Structure of an AP Entry Form
A good form is typically divided into three sections:- Header Information: Details about the vendor and the invoice document itself.
- Line Item / Distribution: Details on what was purchased and how it should be coded in your accounting system (this part drives the journal entry).
- Summary & Approval: Totals that must match the invoice and internal control/workflow information.
Section 1: Header Information (Who and What)
This section identifies the vendor and the specific invoice being processed.- Vendor Name: The name of the company you need to pay.
- (Best Practice: Use a dropdown list that pulls from your master vendor list to prevent duplicates and typos. Include a Vendor ID/Code if you use one.)
- Invoice Number: The unique number the vendor assigned to their invoice.
- (This is CRITICAL to prevent paying the same invoice twice.)
- Invoice Date: The date the vendor created the invoice. This is used for aging reports.
- Date Received: The date your company received the invoice. Useful for tracking internal processing time.
- Invoice Due Date: The date the payment is due.
- Payment Terms: The terms agreed upon with the vendor (e.g., Net 30, 2/10 Net 30). The system can often calculate the due date from the invoice date and terms.
- Purchase Order (PO) Number: If the purchase was pre-authorized with a PO, this number links the invoice to the original order. This is key for 3-way matching (matching the PO, receiving report, and invoice).
- Memo / Description: A brief, overall description of the invoice (e.g., “Monthly Office Cleaning - October 2023”).
Section 2: Line Items / GL Distribution (The “Why”)
This is the most important section for accounting. It details what the money was spent on and dictates the debit side of your journal entry. An invoice can be split across multiple accounts, departments, or projects.- Description: A detailed description of the product or service for a specific line item (e.g., “Paper, toner, pens”).
- GL Account Number: The General Ledger account to be debited. This is the expense account (e.g.,
6510 - Office Supplies,7200 - Professional Fees,1510 - Fixed Assets). - (Best Practice: Use a searchable dropdown list of your Chart of Accounts.)
- Amount: The amount for that specific line item.
- Department / Cost Center: (Optional but common) For internal budgeting and reporting, this specifies which department’s budget the expense belongs to.
- Job / Project Code: (Optional) If the expense is for a specific customer job or internal project.
- Quantity / Unit Price: (Optional) Sometimes useful to break down the cost further, but often just the total
Amountper line is sufficient.
Section 3: Summary & Approvals (Control and Workflow)
This section ensures the numbers match the physical invoice and tracks internal workflow.- Subtotal: The total of all line items before taxes and other charges.
- Sales Tax: The amount of tax charged by the vendor.
- Shipping / Freight: Any shipping costs.
- Invoice Total: The grand total of the invoice.
- (CRITICAL CONTROL: The sum of all line item amounts + tax + shipping MUST equal the
Invoice Total. Your form or system should validate this.) - Attachment: A field to upload a digital copy (PDF/scan) of the original vendor invoice. This is essential for a paperless audit trail.
- Entered By: The user ID or name of the person performing the data entry.
- Date Entered: The date the entry was made.
- Approved By: The manager or authorized person who approved the invoice for payment.
- Date Approved: The date of approval.
The Flow in Action: From Form to Journal Entry
Let’s see how the form fields translate into a journal entry. Scenario: You receive an invoice for 500 is for supplies and $25 is for sales tax. 1. Invoice from Vendor:- Vendor: Staples
- Invoice #: INV-9876
- Total: $525
- Header:
- Vendor Name: Staples
- Invoice Number:
INV-9876 - Invoice Date:
10/26/2023 - Due Date:
11/25/2023 - Invoice Total:
525.00 - Line Items:
- Line 1:
- Description: “Office Supplies for Q4”
- GL Account:
6510 - Office Supplies Expense - Amount:
500.00 - Line 2:
- Description: “Sales Tax”
- GL Account:
6515 - Sales Tax Expense(or it could be coded to the same account) - Amount:
25.00
| Account Number | Account Name | Debit | Credit |
|---|---|---|---|
6510 | Office Supplies Expense | $500.00 | |
6515 | Sales Tax Expense | $25.00 | |
2000 | Accounts Payable | $525.00 | |
| To record invoice INV-9876 from Staples |
- The Debits come from the GL Account and Amount fields in the Line Items section.
- The Credit is always to the Accounts Payable liability account for the Invoice Total.
Sample Form Layout (Simplified)
Transform Invoice to AP
This is a very common and efficient workflow in modern accounting systems. You are essentially separating the initial data capture of the invoice from the accounting classification (the AP entry). Let’s break this down into two parts:- The Database Fields: Defining the fields for your
Invoicestable. - The Field-to-Field Relation: Mapping the fields from the
Invoicestable to your AP Entry Form.
Part 1: Common Fields for an Invoices Table
This table acts as a digital representation of the physical or PDF invoices you receive. Its primary job is to capture all the data exactly as it appears on the vendor’s document.
Table: Invoices (Header Information)
| Field Name | Data Type | Description | Example |
|---|---|---|---|
invoice_id | Integer (PK) | Unique internal ID for the database record. | 1024 |
vendor_id | Integer (FK) | Foreign key linking to your Vendors master table. | 58 (for “Staples”) |
vendor_invoice_number | Varchar | The key field. The unique number from the vendor’s invoice. | INV-9876 |
invoice_date | Date | The date printed on the invoice. | 2023-10-26 |
date_received | Date | The date your company received the invoice. | 2023-10-28 |
due_date | Date | The payment due date from the invoice. | 2023-11-25 |
po_number | Varchar (Nullable) | The Purchase Order number referenced on the invoice, if any. | PO-2023-152 |
invoice_subtotal | Decimal | The total amount before taxes and shipping. | 500.00 |
tax_amount | Decimal | Total sales tax amount. | 25.00 |
shipping_amount | Decimal | Total shipping/freight charges. | 0.00 |
invoice_total | Decimal | The final, total amount of the invoice. | 525.00 |
invoice_status | Varchar | Tracks the invoice’s lifecycle (Received, Pending_AP, Processed). | Pending_AP |
attachment_path | Varchar | File path or URL to the scanned invoice image/PDF. | /docs/inv-9876.pdf |
Invoice_Line_Items (Details)
An invoice has a one-to-many relationship with its line items.
| Field Name | Data Type | Description | Example |
|---|---|---|---|
line_id | Integer (PK) | Unique internal ID for the line item. | 3051 |
invoice_id | Integer (FK) | Links this line back to the Invoices table. | 1024 |
line_number | Integer | The order of the item on the invoice (1, 2, 3…). | 1 |
item_description | Text | The description from the invoice line. | ”Case of 8.5x11 Printer Paper” |
quantity | Decimal | The quantity of the item purchased. | 10 |
unit_price | Decimal | The price per unit. | 50.00 |
line_total | Decimal | The total for this line (quantity * unit_price). | 500.00 |
Part 2: Field-to-Field Relation (Invoice Table -> AP Entry Form)
This is the core of your request. When a user selects aninvoice_number (INV-9876 in our example), your application fetches the data from the tables above and uses the following mapping to populate the AP Entry Form.
| AP Entry Form Field | Source Invoices Table Field | Source Invoice_Line_Items Table Field | Logic & Notes |
|---|---|---|---|
| --- HEADER --- | |||
Vendor Name | vendor_id (via lookup) | The vendor_id is used to look up the full vendor name from the Vendors table. This field is usually read-only. | |
Invoice Number | vendor_invoice_number | This is the key field used to initiate the data load. It is read-only after selection. | |
Invoice Date | invoice_date | Direct 1-to-1 mapping. Populated and made read-only. | |
Due Date | due_date | Direct 1-to-1 mapping. Populated and made read-only. | |
PO Number | po_number | Direct 1-to-1 mapping. Populated and made read-only. | |
Invoice Total (for validation) | invoice_total | This is the most critical control field. It’s loaded into a read-only field on the form. The sum of the distribution lines below must equal this amount before the entry can be saved. | |
Attachment Link | attachment_path | The form should display a clickable link to the stored invoice document so the user can view it while coding the expenses. | |
| --- LINE ITEMS / DISTRIBUTION --- | This is where the user does their work. The system can pre-populate these lines based on the Invoice_Line_Items, but the user must provide the GL codes. | ||
Description (of the expense) | item_description | The item_description from each line item on the invoice is used to pre-populate the description on each distribution line of the AP form. The user can edit or append to this. | |
Amount (of the expense) | line_total | The line_total from the invoice line item populates the Amount for the corresponding AP distribution line. This might be editable if the user needs to split a single line across multiple GL accounts. | |
GL Account | N/A | N/A | This is new data added by the user. This is the core purpose of the AP Entry Form. The user selects the appropriate expense account from the Chart of Accounts. |
Department / Cost Center | N/A | N/A | This is new data added by the user. The user assigns the cost to the correct internal department. |
Project Code | N/A | N/A | This is new data added by the user. |
| --- SUMMARY & WORKFLOW --- | |||
Subtotal | invoice_subtotal | Can be displayed for reference. | |
Sales Tax | tax_amount | Often, tax is entered as a separate distribution line. The system can suggest a line item for tax with the tax_amount pre-filled, and the user just needs to select the Sales Tax Expense GL account. | |
Shipping | shipping_amount | Similar to tax, this can be pre-populated on a separate distribution line, requiring only a GL account from the user. |
The AJAX-driven Flow in Action:
- User Action: Clicks “Create AP Entry”.
- System Action: User is prompted to select an unprocessed invoice (e.g., from a dropdown where
Invoices.invoice_status = 'Pending_AP'). User selectsINV-9876. - AJAX Call: The front-end sends
vendor_invoice_number: 'INV-9876'to the back-end. - Back-End Logic:
- Find the record in the
Invoicestable wherevendor_invoice_numbermatches. - Find all associated records in the
Invoice_Line_Itemstable using theinvoice_id. - Fetch the
vendor_namefrom theVendorstable. - Bundle all this data into a JSON object.
- Front-End Population:
- The AJAX call returns the JSON object.
- Your JavaScript uses the mapping table above to populate the AP form fields:
form.vendorName.value = json.vendor_nameform.invoiceNumber.value = json.vendor_invoice_numberform.invoiceTotal.value = json.invoice_total- It then iterates through
json.line_itemsto create the initial distribution lines, filling inDescriptionandAmountfor each. TheGL Accountfield is left blank for the user to complete.
Bahasa Indonesia
Berikut adalah dokumentasi lengkap yang menggabungkan semua penjelasan sebelumnya—alur kerja, struktur data, dan pemetaan kolom—dan diterjemahkan ke dalam Bahasa Indonesia.Dokumentasi Alur dan Struktur Data untuk Entri Hutang Usaha (Accounts Payable)
Dokumen ini menjelaskan alur kerja, struktur data, dan relasi kolom yang direkomendasikan untuk membuat formulir entri Hutang Usaha (Accounts Payable/AP). Tujuannya adalah untuk menciptakan alur kerja yang efisien di mana data dari invoice vendor pertama kali dicatat, kemudian digunakan untuk mengisi formulir entri AP secara otomatis, yang pada akhirnya akan menghasilkan Jurnal Akuntansi yang akurat.Bagian 1: Alur Kerja Keseluruhan (Overall Workflow)
Alur kerja yang diusulkan memisahkan proses pencatatan data invoice dari proses klasifikasi akuntansi untuk meningkatkan kecepatan dan akurasi.- Pencatatan Invoice: Data dari invoice fisik atau PDF yang diterima dari vendor dicatat terlebih dahulu ke dalam sistem (Tabel
Invoices). Tahap ini hanya fokus pada pencatatan data apa adanya dari dokumen sumber. Status invoice diatur menjadiPending AP Entry. - Pembuatan Entri AP: Staf Akuntansi memulai proses dengan membuat “Entri AP Baru”.
- Pemilihan Sumber Data: Pengguna memilih nomor invoice dari daftar invoice yang statusnya masih
Pending AP Entry. - Pengisian Formulir Otomatis: Setelah nomor invoice dipilih, sistem secara otomatis (via AJAX) mengambil data dari tabel
Invoicesdan mengisi kolom-kolom yang relevan di formulir Entri AP (seperti nama vendor, tanggal, total, dll.). - Distribusi Akuntansi: Pengguna melengkapi formulir dengan menambahkan informasi akuntansi, yaitu memilih Akun GL (General Ledger) dan alokasi departemen/proyek untuk setiap baris pengeluaran.
- Pembuatan Jurnal: Setelah formulir disimpan, sistem secara otomatis membuat Jurnal Akuntansi yang sesuai: Debit ke akun Beban dan Kredit ke akun Hutang Usaha (Accounts Payable).
Bagian 2: Struktur Tabel Database (Database Table Structure)
Untuk mendukung alur kerja ini, dibutuhkan setidaknya dua tabel utama.Tabel 1: Invoices (Data Header Invoice)
Tabel ini menyimpan informasi utama dari setiap invoice yang diterima.
| Nama Kolom (Field Name) | Tipe Data (Data Type) | Deskripsi | Contoh |
|---|---|---|---|
invoice_id | Integer (PK) | ID unik internal untuk setiap record invoice di database. | 1024 |
vendor_id | Integer (FK) | Foreign Key yang terhubung ke tabel master Vendors. | 58 (untuk “CV Jaya Abadi”) |
vendor_invoice_number | Varchar | Kolom Kunci. Nomor unik yang tertera pada invoice vendor. | INV-9876 |
invoice_date | Date | Tanggal yang tercetak di invoice. | 2023-10-26 |
date_received | Date | Tanggal saat perusahaan menerima invoice. | 2023-10-28 |
due_date | Date | Tanggal jatuh tempo pembayaran. | 2023-11-25 |
invoice_subtotal | Decimal | Total jumlah sebelum pajak dan biaya lainnya. | 5000000 |
tax_amount | Decimal | Jumlah PPN atau pajak lainnya. | 550000 |
shipping_amount | Decimal | Biaya pengiriman. | 50000 |
invoice_total | Decimal | Jumlah total akhir dari invoice. | 5600000 |
invoice_status | Varchar | Status siklus invoice (Received, Pending_AP, Processed). | Pending_AP |
attachment_path | Varchar | Lokasi file atau URL dari hasil scan invoice (PDF/gambar). | /docs/inv-9876.pdf |
Tabel 2: Invoice_Line_Items (Data Rincian Invoice)
Tabel ini menyimpan rincian barang atau jasa dari sebuah invoice.
| Nama Kolom (Field Name) | Tipe Data (Data Type) | Deskripsi | Contoh |
|---|---|---|---|
line_id | Integer (PK) | ID unik internal untuk setiap baris rincian. | 3051 |
invoice_id | Integer (FK) | Foreign Key yang terhubung ke tabel Invoices. | 1024 |
item_description | Text | Deskripsi barang atau jasa dari baris invoice. | ”Jasa Konsultasi Pemasaran Oktober” |
quantity | Decimal | Kuantitas barang atau jasa. | 1 |
unit_price | Decimal | Harga per unit. | 5000000 |
line_total | Decimal | Total untuk baris ini (quantity * unit_price). | 5000000 |
Bagian 3: Relasi Kolom: Tabel Invoice ke Formulir Entri AP
Ini adalah pemetaan kunci yang menjelaskan bagaimana data dari database secara otomatis mengisi formulir Entri AP saat pengguna memilih sebuah nomor invoice.| Kolom di Formulir Entri AP | Sumber dari Tabel Invoices | Sumber dari Tabel Invoice_Line_Items | Logika & Catatan |
|---|---|---|---|
| --- BAGIAN HEADER --- | |||
Nama Vendor | vendor_id (via lookup) | ID vendor digunakan untuk mencari nama lengkap vendor dari tabel master. Kolom ini tidak bisa diubah (read-only). | |
Nomor Invoice | vendor_invoice_number | Kolom ini menjadi kunci untuk memuat data. Kolom ini tidak bisa diubah setelah dipilih. | |
Tanggal Invoice | invoice_date | Dipetakan langsung 1-ke-1. Kolom ini tidak bisa diubah. | |
Tanggal Jatuh Tempo | due_date | Dipetakan langsung 1-ke-1. Kolom ini tidak bisa diubah. | |
Total Invoice (untuk validasi) | invoice_total | Nilai ini dimuat ke kolom read-only sebagai kontrol. Total dari baris distribusi di bawah harus sama dengan nilai ini agar formulir bisa disimpan. | |
Link Lampiran | attachment_path | Menampilkan link ke dokumen invoice agar pengguna bisa melihatnya saat melakukan pengkodean. | |
| --- BAGIAN DISTRIBUSI / RINCIAN AKUNTANSI --- | Di sinilah pengguna melakukan input utama. Sistem mengisi Deskripsi dan Jumlah, tetapi pengguna harus mengisi Akun GL. | ||
Deskripsi (Beban) | item_description | Deskripsi dari setiap baris invoice digunakan untuk mengisi deskripsi di baris distribusi AP. Pengguna bisa mengeditnya. | |
Jumlah (Beban) | line_total | Jumlah dari setiap baris invoice mengisi kolom Jumlah di baris distribusi. | |
Akun GL | N/A | N/A | Ini adalah data baru yang diinput oleh pengguna. Pengguna memilih akun beban yang sesuai dari Chart of Accounts (Daftar Akun). |
Departemen / Pusat Biaya | N/A | N/A | Ini adalah data baru yang diinput oleh pengguna. Mengalokasikan biaya ke departemen yang relevan untuk tujuan budgeting. |
| --- BAGIAN TOTAL & WORKFLOW --- | |||
Pajak | tax_amount | Sistem dapat secara otomatis membuat satu baris distribusi khusus untuk pajak, dengan jumlah yang sudah terisi. Pengguna hanya perlu memilih Akun GL untuk Pajak. | |
Biaya Kirim | shipping_amount | Sama seperti pajak, sistem dapat membuat baris distribusi terpisah untuk biaya kirim. Pengguna tinggal memilih Akun GL yang sesuai. |
Bagian 4: Hasil Akhir: Jurnal Akuntansi (The Resulting Journal Entry)
Setelah formulir Entri AP diisi dan disimpan, sistem akan menghasilkan jurnal berikut secara otomatis. Skenario:- Invoice dari “CV Jaya Abadi” (
INV-9876) - Total Invoice: Rp 5.600.000
- Rincian: Jasa Konsultasi (Rp 5.000.000) + PPN (Rp 550.000) + Biaya Lain (Rp 50.000)
- Baris 1: Akun GL
6100 - Beban Jasa Profesional, JumlahRp 5.000.000 - Baris 2: Akun GL
2500 - PPN Masukan, JumlahRp 550.000 - Baris 3: Akun GL
6200 - Beban Lain-lain, JumlahRp 50.000
| No. Akun | Nama Akun | Debit | Kredit |
|---|---|---|---|
6100 | Beban Jasa Profesional | Rp 5.000.000 | |
2500 | PPN Masukan | Rp 550.000 | |
6200 | Beban Lain-lain | Rp 50.000 | |
2100 | Hutang Usaha | Rp 5.600.000 | |
| Untuk mencatat invoice INV-9876 dari CV Jaya Abadi |
Account Payable Aging
Visualizing Accounts Payable (AP) Aging is one of the most critical functions of an AP system. It helps a business manage cash flow, prioritize payments, and maintain good relationships with vendors. Let’s break down how to create and visualize an AP Aging report, starting from your datatable of unpaid invoices.Part 1: The Concept of AP Aging
AP Aging categorizes your unpaid invoices based on how long they have been outstanding. The goal is to see not just how much you owe, but how urgent those payments are. The report is typically broken into time-based “buckets.” A standard set of aging buckets is:- Current: Invoices that are not yet due.
- 1-30 Days Past Due: Invoices that are 1 to 30 days overdue.
- 31-60 Days Past Due: Invoices that are 31 to 60 days overdue.
- 61-90 Days Past Due: Invoices that are 61 to 90 days overdue.
- 90+ Days Past Due: Invoices that are more than 90 days overdue.
Part 2: Data Requirements
Your datatable of AP entries must contain the following key fields for each unpaid invoice to generate an aging report.| Field Name | Data Type | Description | Example |
|---|---|---|---|
vendor_name | Varchar | The name of the supplier. | ”CV Jaya Abadi” |
invoice_number | Varchar | The unique invoice identifier. | INV-9876 |
invoice_date | Date | The date on the vendor’s invoice. | 2023-10-26 |
due_date | Date | Crucial Field. The date payment is due. | 2023-11-25 |
invoice_total | Decimal | The total amount of the invoice. | 5,600,000 |
amount_paid | Decimal | The amount that has already been paid. | 0 |
balance_due | Decimal | The value to be aged. (invoice_total - amount_paid) | 5,600,000 |
Part 3: The Calculation Logic
The entire process hinges on one calculation: Days Overdue. This is calculated for each invoice relative to a specific reference date, which is usually today. Step 1: Determine the “As of” Date This is the date you are running the report for. Let’s assumeToday's Date = 2023-12-15.
Step 2: Calculate “Days Overdue” for Each Invoice
The formula is: Days Overdue = Today's Date - Due_Date
- If the result is negative or zero, the invoice is “Current” (not yet due).
- If the result is positive, the invoice is past due.
- Invoice A: Due Date
2023-12-20->15-Dec-20-Dec= -5 days (Current) - Invoice B: Due Date
2023-11-30->15-Dec-30-Nov= 15 days (Falls in 1-30 bucket) - Invoice C: Due Date
2023-10-25->15-Dec-25-Oct= 51 days (Falls in 31-60 bucket)
balance_due to the Correct Bucket
Using logic (like a CASE statement in SQL or an if/else block in code), you place the balance_due of each invoice into its corresponding aging bucket.
Pseudocode / SQL Logic:
Part 4: Visualization Methods
There are three common ways to visualize AP Aging, moving from detailed to high-level summary.1. Detailed AP Aging Report (The Classic Table)
This is the most fundamental report. It lists every single unpaid invoice and places its balance in the appropriate bucket. It’s used by AP staff for day-to-day work. AP Aging Report as of: 2023-12-15| Vendor Name | Invoice # | Due Date | Days Overdue | Total Balance | Current | 1-30 Days | 31-60 Days | 61-90 Days | 90+ Days |
|---|---|---|---|---|---|---|---|---|---|
| CV Jaya Abadi | INV-1005 | 2023-12-20 | -5 | 2,500,000 | 2,500,000 | ||||
| PT Sinar Tech | INV-789 | 2023-11-30 | 15 | 7,000,000 | 7,000,000 | ||||
| Supplier Maju | INV-SM-05 | 2023-11-10 | 35 | 4,200,000 | 4,200,000 | ||||
| CV Jaya Abadi | INV-987 | 2023-10-01 | 75 | 1,500,000 | 1,500,000 | ||||
| PT Sinar Tech | INV-456 | 2023-08-15 | 122 | 3,000,000 | 3,000,000 | ||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| TOTALS | 18,200,000 | 2,500,000 | 7,000,000 | 4,200,000 | 1,500,000 | 3,000,000 |
2. Summary AP Aging Report (Grouped by Vendor)
This report is more useful for managers. It hides the invoice-level detail and shows the total amount owed to each vendor, broken down by aging bucket. AP Aging Summary as of: 2023-12-15| Vendor Name | Total Balance | Current | 1-30 Days | 31-60 Days | 61-90 Days | 90+ Days |
|---|---|---|---|---|---|---|
| CV Jaya Abadi | 4,000,000 | 2,500,000 | 1,500,000 | |||
| PT Sinar Tech | 10,000,000 | 7,000,000 | 3,000,000 | |||
| Supplier Maju | 4,200,000 | 4,200,000 | ||||
| --- | --- | --- | --- | --- | --- | --- |
| TOTALS | 18,200,000 | 2,500,000 | 7,000,000 | 4,200,000 | 1,500,000 | 3,000,000 |
3. Graphical Visualization (For Dashboards)
For a high-level overview, charts are extremely effective. They allow management to see the health of the company’s payables at a glance.- Stacked Bar Chart: This is perfect for showing the total AP balance and the proportion of that total in each aging bucket.
- Pie Chart: A simple way to show the percentage of debt in each aging category. It quickly highlights if a large portion of your debt is severely overdue.
Bahasa Indonesia
Cara Membuat dan Memvisualisasikan Laporan Umur Hutang (AP Aging)
Laporan Umur Hutang (AP Aging) adalah alat vital untuk manajemen arus kas. Berikut adalah cara membuat dan memvisualisasikannya dari data hutang Anda.Bagian 1: Konsep Umur Hutang (AP Aging)
AP Aging mengelompokkan invoice yang belum dibayar berdasarkan berapa lama invoice tersebut telah beredar (outstanding). Tujuannya adalah untuk melihat urgensi pembayaran. Laporan ini dibagi menjadi beberapa “kelompok waktu” (bucket). Kelompok waktu standar adalah:- Lancar (Current): Invoice yang belum jatuh tempo.
- Lewat Tempo 1-30 Hari: Invoice yang terlambat 1 hingga 30 hari.
- Lewat Tempo 31-60 Hari: Invoice yang terlambat 31 hingga 60 hari.
- Lewat Tempo 61-90 Hari: Invoice yang terlambat 61 hingga 90 hari.
- Lewat Tempo 90+ Hari: Invoice yang terlambat lebih dari 90 hari.
Bagian 2: Kebutuhan Data
Tabel data entri AP Anda harus memiliki kolom-kolom kunci berikut untuk setiap invoice yang belum dibayar.| Nama Kolom | Tipe Data | Deskripsi | Contoh |
|---|---|---|---|
vendor_name | Varchar | Nama pemasok. | ”CV Jaya Abadi” |
invoice_number | Varchar | Nomor unik invoice. | INV-9876 |
invoice_date | Date | Tanggal pada invoice. | 2023-10-26 |
due_date | Date | Kolom Kritis. Tanggal jatuh tempo pembayaran. | 2023-11-25 |
invoice_total | Decimal | Total nilai invoice. | 5,600,000 |
amount_paid | Decimal | Jumlah yang sudah dibayar. | 0 |
balance_due | Decimal | Nilai yang akan dihitung umurnya. (invoice_total - amount_paid) | 5,600,000 |
Bagian 3: Logika Perhitungan
Inti dari proses ini adalah menghitung Hari Lewat Tempo (Days Overdue). Langkah 1: Tentukan Tanggal Laporan (“As of” Date) Ini adalah tanggal acuan laporan, biasanya adalah hari ini. MisalTanggal Hari Ini = 15 Desember 2023.
Langkah 2: Hitung “Hari Lewat Tempo”
Rumusnya: Hari Lewat Tempo = Tanggal Hari Ini - Tanggal Jatuh Tempo
- Jika hasilnya negatif atau nol, invoice tersebut Lancar.
- Jika hasilnya positif, invoice tersebut Lewat Tempo.
balance_due ke Kelompok Waktu yang Benar
Gunakan logika (CASE statement di SQL atau if/else) untuk menempatkan nilai balance_due ke dalam kelompok waktu yang sesuai berdasarkan Hari Lewat Tempo.
Bagian 4: Metode Visualisasi
Terdapat tiga cara umum untuk memvisualisasikan Laporan Umur Hutang. 1. Laporan Umur Hutang Rinci (Tabel Klasik) Ini adalah laporan paling dasar yang menampilkan setiap invoice belum bayar dan menempatkan saldonya di kolom yang sesuai. Laporan Umur Hutang per tanggal: 15-12-2023| Nama Vendor | No. Invoice | Tgl Jatuh Tempo | Lewat Tempo | Saldo Total | Lancar | 1-30 Hari | 31-60 Hari | 61-90 Hari | 90+ Hari |
|---|---|---|---|---|---|---|---|---|---|
| CV Jaya Abadi | INV-1005 | 20-12-2023 | -5 hari | 2.500.000 | 2.500.000 | ||||
| PT Sinar Tech | INV-789 | 30-11-2023 | 15 hari | 7.000.000 | 7.000.000 | ||||
| Supplier Maju | INV-SM-05 | 10-11-2023 | 35 hari | 4.200.000 | 4.200.000 | ||||
| TOTAL | 13.700.000 | 2.500.000 | 7.000.000 | 4.200.000 | 0 | 0 |
| Nama Vendor | Saldo Total | Lancar | 1-30 Hari | 31-60 Hari | 90+ Hari |
|---|---|---|---|---|---|
| CV Jaya Abadi | 4.000.000 | 2.500.000 | 1.500.000 | ||
| PT Sinar Tech | 10.000.000 | 7.000.000 | 3.000.000 | ||
| TOTAL | 14.000.000 | 2.500.000 | 7.000.000 | 0 | 4.500.000 |
- Grafik Batang Bertumpuk (Stacked Bar Chart): Sempurna untuk menunjukkan total saldo hutang dan proporsi setiap kelompok umurnya.
- Grafik Lingkaran (Pie Chart): Cara sederhana untuk menampilkan persentase hutang di setiap kategori umur.
