smithery.ai

create-purchase-order

Create purchase order (PO) in NexERP database

First seen Mar 21, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,898 B
  • docs SUMMARY.md 74 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

Create Purchase Order Skill

Creates a purchase order (PO) record in the NexERP system. A purchase order represents goods/services to be ordered from a supplier.

Usage

python main.py \
  --supplier-name "ACTION BOLT" \
  --order-date "2025-10-26" \
  --items '[{"product_name": "WIRE D1.2", "quantity": 100, "unit_price": 10.50}]' \
  --json

Required Fields

  • --supplier-name: Supplier name (fuzzy match supported)
  • --order-date: Order date (YYYY-MM-DD format)
  • --items: JSON array of line items

Item Fields

Each item must have:

  • product_name: Product name or SKU (fuzzy match supported)
  • quantity: Quantity to order (positive number)
  • unit_price: Price per unit

Optional item fields:

  • discount: Line discount percentage (0-100)
  • remark: Line item remark/notes

Optional PO Fields

  • --supplier-ref: Supplier's reference number
  • --expiry-date: PO expiry date (YYYY-MM-DD)
  • --tax-rate: Tax rate as decimal (default: 0.06 for 6% tax)
  • --remark: PO remark/notes

Output

Returns JSON with PO details:

{
  "success": true,
  "po_number": "PO25100036",
  "txn_id": 2126,
  "supplier": "ACTION BOLT & NUTS SDN BHD",
  "order_date": "2025-10-26",
  "items_count": 1,
  "subtotal": 1050.00,
  "tax": 63.00,
  "grand_total": 1113.00,
  "status": "Pending"
}

Error Handling

Returns error JSON if:

  • Supplier not found (suggests alternatives)
  • Product not found for any item
  • Invalid date format
  • Invalid amounts or quantities
  • Database connection fails

Database Tables

Writes to 3 tables:

  1. tblpordertxn - PO header
  2. tblporderitem - Line items
  3. tblpordermovement - Stock movement tracking

Document Number Format

PO numbers follow pattern: PO{YY}{MM}{NNNN}

  • Example: PO25100036 = October 2025, PO #36

Business Rules

  • Supplier must exist and be active (Status_i = 1)
  • Products must exist in tblproductcode
  • Order date must be valid date format
  • Quantities must be positive
  • Amounts rounded to 2 decimal places
  • Default tax rate: 6% (for purchase orders)
  • PO status defaults to 'P' (Pending)
  • Automatic calculation: SubTotal + Tax = GrandTotal

PO Status Values

  • P: Pending (default)
  • A: Approved
  • C: Confirmed
  • R: Received
  • X: Cancelled

Integration

This skill is called by the Database Agent when processing purchase order documents.

Examples

Single Item PO

python main.py \
  --supplier-name "ACTION" \
  --order-date "2025-10-26" \
  --items '[{"product_name": "WIRE D1.2-L105.8", "quantity": 100, "unit_price": 10.50}]' \
  --json

Multi-Item PO with Expiry Date

python main.py \
  --supplier-name "NINGBO" \
  --order-date "2025-10-26" \
  --expiry-date "2025-11-26" \
  --supplier-ref "REF-2025-ABC" \
  --items '[
    {"product_name": "WIRE D1.2", "quantity": 200, "unit_price": 5.00},
    {"product_name": "BOLT M10", "quantity": 1000, "unit_price": 0.50, "discount": 15}
  ]' \
  --remark "Urgent order - deliver by Nov 15" \
  --json

With Custom Tax Rate

python main.py \
  --supplier-name "Dell" \
  --order-date "2025-10-26" \
  --items '[{"product_name": "Laptop", "quantity": 5, "unit_price": 3500.00}]' \
  --tax-rate 0.08 \
  --json

Testing

# Test with verbose output
python main.py --supplier-name "ACTION" --order-date "2025-10-26" \
  --items '[{"product_name": "WIRE", "quantity": 50, "unit_price": 10.00}]' \
  --verbose --json

# Test error handling (invalid supplier)
python main.py --supplier-name "XYZ_NONEXISTENT" --order-date "2025-10-26" \
  --items '[{"product_name": "WIRE", "quantity": 50, "unit_price": 10.00}]' \
  --json

Exit Codes

  • 0: Success
  • 1: Error (invalid input, database error)
  • 2: Not found (supplier/product not found)