← Back to Projects

Multi Currency Invoicing

Login: User: Admin | Pwd: invoice@189
Multi Currency Invoicing

Port Invoice Management System

Technologies: Django PostgreSQL JavaScript CSS HTML Bootstrap

Live Site: https://pim.abzal.net/jgi/login/


Project Overview: Port Invoice Management System

Port Invoice Management System is a Django-based, production-ready web platform designed for Atlantic Industries (Far East) Ltd to streamline international trade invoicing operations. The system manages port-related invoicing, product catalogs, customer relationships, supplier information, and multi-currency transactions. It offers a robust, scalable solution for businesses involved in international shipping and trade, enabling them to digitize invoicing workflows, automate calculations, and enhance operational efficiency in the logistics and freight forwarding industry.


Technology Stack

  • Backend: Django 5.2.5 (Python web framework)

  • Database: PostgreSQL

  • Frontend: Bootstrap 5, custom Django templates, JavaScript (jQuery)

Key Libraries & Tools:

  • django-autocomplete-light (DAL) – dynamic, searchable dropdowns for products, customers, suppliers

  • Django REST Framework (DRF) – AJAX APIs for real-time invoice item calculations and updates

  • django-mptt – hierarchical category management for product organization

  • openpyxl & pandas – Excel file generation, product bulk import, and data export

  • Pillow – image processing for company logo management

  • Bootstrap 5 – responsive, modern UI design

  • jQuery & Select2 – client-side interactivity, autocomplete, and UI enhancements


Core Features

1. Invoice Management System

  • Multi-Type Invoices: Support for Export, Proforma, and VAT invoice types

  • Invoice Model: Central entity with auto-incrementing invoice numbers starting from 100001

  • Real-Time Calculations: Automatic pricing, markup application, currency conversion, and total calculations

  • Invoice Items: Line items with product details, quantities, pack sizes, case pricing, volume, weight, and markup percentages

  • Freight Charges: Additional shipping and handling charges with sequential item serial numbering

  • Currency Support: Multi-currency invoicing with conversion rate tracking (Rands conversion rate, US$ container conversion rate)

  • Shipping Details: Vessel information, port load/discharge locations, container numbers, seal numbers, and container weights

  • Invoice Locking: Prevent accidental edits after finalization with invoice lock feature

  • Export Capabilities: PDF generation (multi-page support), Excel export, and packing list generation

  • Print Functionality: Print-ready templates with company branding and logo support

2. Product Catalog Management

  • Product Model: Comprehensive product database with auto-incrementing product codes (starting from 100001)

  • Case Pricing: Product pricing based on case units with markup percentage calculations

  • Volume & Weight Tracking: Product dimensions (volume in CBM, weight) for shipping calculations

  • Category Organization: Hierarchical product categorization using MPTT for flexible organization

  • Supplier Linking: Products linked to suppliers with supplier reference tracking

  • Bulk Import System: Excel-based product import with template generation, validation, error reporting, and preview before import

  • Price Change Tracking: Automatic tracking of price change dates

  • Product Status: List/non-list status for price list filtering

  • Advanced Search: Multi-field search with filtering, sorting, and pagination

3. Customer & Supplier Management

  • Customer Database: Auto-incrementing customer codes (starting from 100001) with complete contact information

  • Contact Information: Name, title, initial, contact person, telephone, fax, cellular, email

  • Address Management: Separate physical and postal address tracking

  • Customer References: Custom reference field for invoice tracking

  • Supplier Database: Similar structure to customers with contact details and addresses

  • Active/Inactive Status: Status tracking for both customers and suppliers

  • Export Capabilities: Excel export for customers and suppliers with customizable field selection

4. Port & Currency Management

  • Port Database: Port information with country and port rate tracking

  • Currency System: Multi-currency support with currency symbols, descriptions, and default currency designation

  • Conversion Rates: Invoice-level currency conversion rates for international transactions

5. Company & Settings Management

  • Company Details: Multiple company profiles with default company designation

  • Company Branding: Company logo upload, company header text for invoices

  • System Settings: Application-wide settings and preferences management

6. Dashboard & Reporting

  • Dashboard Overview: System-wide statistics including counts for customers, suppliers, products, categories, invoices

  • Invoice Statistics: Breakdown by invoice type (Export, Proforma, VAT), lock status, and active/inactive status

  • Invoice Table: Sortable, filterable, searchable invoice listing with pagination

  • Advanced Filtering: Filter by invoice type, status (active/inactive), lock status, and search by invoice number, customer, vessel, port, etc.

  • Sorting: Multi-column sorting (invoice number, date, type, customer, totals, conversion rates, volume, status)

  • Export Reports: Excel export for invoices, customers, suppliers with field selection

7. Dynamic Forms & Autocomplete

  • DAL Integration: AJAX-based searchable dropdowns for products, customers, suppliers, ports, categories, currencies

  • Select2 Integration: Enhanced dropdown UI with search, pagination, and improved UX

  • Real-Time Product Lookup: Product search with pricing information for invoice item addition

  • Autofill Logic: Auto-populates related fields based on selections

8. Advanced Features

  • Session Management: Automatic session expiration (1 hour) with session persistence across requests

  • Responsive Design: Fully mobile-compatible layout with Bootstrap 5, responsive tables with horizontal scrolling

  • Inline Editing: Real-time editing of invoice items via AJAX without page reload

  • Pagination State Preservation: Maintains user context (page, filters, sort) when navigating and editing invoices

  • Bulk Operations: Efficient multi-record management for product imports

  • Error Handling: Comprehensive validation and error reporting


Database Architecture

  • Invoices: Central invoice entity linked to customers, currencies, and company details; includes shipping details, totals, and lock status

  • InvoiceItems: Line items linked to invoices and products; includes quantities, pricing, volume, weight, and markup

  • FreightCharges: Additional charges linked to invoices with sequential serial numbers

  • Products: Product catalog with codes, descriptions, pricing, volume, weight, linked to suppliers and categories

  • Customers & Suppliers: Contact and address information with auto-incrementing codes

  • Categories: Hierarchical product categorization using MPTT

  • Ports: Port information with rates and country

  • Currencies: Currency symbols, descriptions, and default designation

  • CompanyDetails: Company profiles with branding information

  • Settings: Application-wide settings storage

  • BaseModel: Abstract base model with common fields (created_at, updated_at, is_active) for all entities


Key Business Logic

  • Auto-Numbering System: Sequential code generation for invoices (100001+), products (100001+), customers (100001+), and suppliers (100001+)

  • Invoice Calculations:

1. Base product case price with markup percentage

2. Unit price calculation based on pack size

3. Total price per line item (quantity × unit price)

4. Volume and weight aggregation across all items

5. Freight charges addition

6. Final invoice total (items total + freight charges)

  • Currency Conversion: Dual conversion rate system (price conversion for Rands, container conversion for US$)

  • Product Import Workflow:

1. Generate Excel template with validation rules

2. Upload Excel file with product data

3. Validate data against existing products

4. Preview import with error reporting

5. Execute import with add/update/modify actions

  • Invoice Locking: Prevents modifications after invoice is finalized

  • Price Change Tracking: Automatic date tracking when product prices are updated


Deployment Configuration

  • Production Environment: Ubuntu server with Nginx reverse proxy, Gunicorn application server

  • Static Files: Managed with Django's staticfiles, organized for deployment, served by Nginx

  • Media Files: Company logos stored in dedicated media directories

  • Database: PostgreSQL, optimized for performance and reliability

  • Session Storage: Database-backed sessions with 1-hour expiration

  • Caching: Database cache for improved performance

  • Authentication: Django's built-in authentication system with session-based auth

  • Security: CSRF protection, XSS prevention, SQL injection protection via Django ORM


Custom Features

  • Responsive Tables: Horizontal scrolling containers for wide data tables on all screens

  • Multi-Page PDF Export: Advanced PDF generation with proper pagination and A4 formatting

  • Excel Export Templates: Customizable Excel export with field selection for invoices, customers, suppliers

  • Packing List Export: Specialized packing list format for shipping documentation

  • Product Bulk Import: Complete Excel-based import system with template generation and validation

  • Dashboard Integration: Comprehensive dashboard with real-time statistics and quick access to all modules

  • Company Branding: Dynamic logo and header integration in all invoice documents

  • Print Optimization: Print-ready templates with proper page breaks and formatting


Project Structure


port-invoice/

├── core/                    # Django project configuration

│   ├── settings.py         # Application settings (DB, apps, middleware)

│   ├── urls.py            # Main URL routing

│   ├── wsgi.py            # WSGI configuration for production

│   └── models/

│       └── base.py        # BaseModel abstract class

├── jgi/                    # Main application

│   ├── models/            # Database models

│   │   ├── invoice.py     # Invoice, InvoiceItem, FreightCharge

│   │   ├── product.py     # Product model

│   │   ├── customer.py    # Customer model

│   │   ├── supplier.py    # Supplier model

│   │   ├── category.py    # Category model (MPTT)

│   │   ├── port.py        # Port model

│   │   ├── currency.py    # Currency model

│   │   ├── company.py     # CompanyDetails model

│   │   ├── settings.py    # Settings model

│   │   └── product_import.py  # ProductImport model

│   ├── views/             # View controllers

│   │   ├── invoice.py     # Invoice CRUD, export views

│   │   ├── product.py     # Product views

│   │   ├── customer.py    # Customer views

│   │   ├── supplier.py    # Supplier views

│   │   ├── dashboard.py   # Dashboard view with filtering

│   │   └── import_products.py  # Product import views

│   ├── templates/         # HTML templates

│   │   ├── invoice/       # Invoice templates (list, form, detail, export)

│   │   ├── product/       # Product templates

│   │   ├── customer/      # Customer templates

│   │   ├── supplier/      # Supplier templates

│   │   ├── dashboard/     # Dashboard template

│   │   ├── import/        # Import templates

│   │   └── layouts/       # Base templates

│   ├── forms/             # Django forms

│   │   ├── invoice.py     # Invoice forms

│   │   ├── product.py     # Product forms

│   │   ├── customer.py    # Customer forms

│   │   └── excel_upload.py # Excel upload form

│   ├── api_views.py       # REST API endpoints for AJAX operations

│   ├── serializers.py     # API serializers

│   ├── middleware.py      # Session expiration middleware

│   ├── context_processors.py  # Settings context processor

│   └── templatetags/      # Custom template tags

│       └── number_filters.py  # Number formatting filters

├── media/                  # User uploads (company logos)

├── static/                # Static files (CSS, JS, images)

├── staticfiles/           # Collected static files

├── requirements.txt       # Python dependencies

└── manage.py              # Django management script

Conclusion

Port Invoice Management System is a comprehensive and robust platform purpose-built for managing international trade invoicing operations. Its thoughtful architecture handles complex business requirements including multi-currency transactions, shipping logistics, product catalog management, and automated calculations. The system's responsive UI, dynamic features, Excel integration, and export capabilities make it well-suited for freight forwarding companies, import/export businesses, and logistics providers aiming to digitize operations, improve productivity, ensure accuracy in invoicing, and scale efficiently in the competitive international trade market.

The platform successfully addresses the unique challenges of port-related invoicing by providing specialized features like vessel tracking, port load/discharge management, container information, and multi-currency conversion rates—essential requirements for businesses operating in international shipping and logistics.