### Install Pacioli using bunx Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md This command initializes a new Pacioli project in the current directory without requiring a global installation. It sets up the necessary directory structure and example files. ```bash mkdir my-invoices && cd my-invoices bunx pacioli init ``` -------------------------------- ### Pacioli Development Setup Source: https://github.com/tetipong2542/inv-generate/blob/main/README.md Commands for setting up the development environment for Pacioli. This includes installing dependencies, running tests, and starting the development server for initialization tasks. ```bash bun install bun test bun run dev init ``` -------------------------------- ### Copy Freelancer Profile Example Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Copies the example freelancer configuration file to create a new configuration file. This is the initial step for setting up your freelancer details. ```bash cp config/freelancer.example.json config/freelancer.json ``` -------------------------------- ### Initialize Pacioli Project Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Initializes a new Pacioli project, creating a standard directory structure for templates, examples, customer data, configuration, and output. The `--force` option can overwrite existing files. ```bash pacioli init pacioli init --force ``` -------------------------------- ### Globally Install and Use Pacioli Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Installs Pacioli globally, allowing direct use of the 'pacioli' command without 'bunx'. This is useful for frequent users. It also shows the basic command for generating documents. ```bash bun install -g pacioli pacioli init pacioli generate invoice data.json --customer customer.json ``` -------------------------------- ### Bash for Installing Pacioli Dependencies Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Command to install project dependencies using Bun, a fast JavaScript runtime. This is required after cloning the repository. ```bash # Install dependencies bun install ``` -------------------------------- ### Example Unit Test Structure with Bun Test Source: https://github.com/tetipong2542/inv-generate/blob/main/TEST.md Provides a complete example of a unit test file using the Bun test runner. It includes necessary imports, describe blocks for test suites, and individual test cases for normal and edge case inputs. ```typescript import { describe, test, expect } from "bun:test"; import { myFunction } from "../src/myModule"; describe("myFunction", () => { test("handles normal input", () => { const result = myFunction("input"); expect(result).toBe("expected"); }); test("handles edge case", () => { const result = myFunction(""); expect(result).toBe("default"); }); }); ``` -------------------------------- ### Bash for Pacioli Help Commands Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Shows how to access help documentation for the Pacioli CLI tool and its subcommands. This is essential for understanding available options and usage. ```bash pacioli --help # Main help pacioli init --help # Init command help pacioli generate --help # Generate command help ``` -------------------------------- ### Install Dependencies with Bun Source: https://github.com/tetipong2542/inv-generate/blob/main/CLAUDE.md Installs all necessary project dependencies using the Bun package manager. This is the first step before running any other development commands. ```bash bun install ``` -------------------------------- ### Bash for Cloning Pacioli Repository Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Instructions for cloning the Pacioli project repository from GitHub using Git. This is the first step for local development. ```bash # Clone repository git clone https://github.com/peerasak-u/pacioli.git cd pacioli ``` -------------------------------- ### Initialize Pacioli Project Source: https://github.com/tetipong2542/inv-generate/blob/main/README.md Initializes a new Pacioli project, setting up the necessary configuration files and directory structure for generating financial documents. This is the first step to start using Pacioli. ```bash bunx pacioli init ``` -------------------------------- ### Pre-commit Hook for Running Tests Source: https://github.com/tetipong2542/inv-generate/blob/main/TEST.md A shell script example for a pre-commit hook that automatically runs Bun tests before allowing a commit. This ensures that tests are executed consistently. ```bash #!/bin/sh bun test || exit 1 ``` -------------------------------- ### CSS for Customizing Document Appearance Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Provides an example of CSS to customize the appearance of documents, specifically changing the background color of a header element. This allows for branding and visual adjustments. ```css .header { background-color: #your-color; } ``` -------------------------------- ### Bash for Publishing Pacioli to npm Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Commands for logging into npm and publishing the Pacioli package. This is the final step for releasing new versions. ```bash # Login to npm npm login # Publish bun publish ``` -------------------------------- ### Generate Invoice with Multiple Profiles Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Demonstrates how to generate an invoice using different freelancer profiles. This allows for managing multiple business identities or client-specific configurations. ```bash pacioli generate invoice data.json --customer customer.json --profile config/personal.json pacioli generate invoice data.json --customer customer.json --profile config/company.json ``` -------------------------------- ### Initialize Pacioli Project CLI Source: https://context7.com/tetipong2542/inv-generate/llms.txt Initializes a new Pacioli project, creating necessary directories and files for templates, examples, customer data, configuration, and output. The `--force` flag can be used to overwrite existing files. ```bash bunx pacioli init bunx pacioli init --force ``` -------------------------------- ### Bash for Running Pacioli Locally Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Commands to run the Pacioli CLI tool locally for initialization and document generation. These commands are used for testing and development. ```bash # Run locally bun run src/cli.ts init bun run src/cli.ts generate invoice examples/invoice.json --customer customers/acme-corp.json ``` -------------------------------- ### Bash for Linking Pacioli Globally Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Instructions for linking the locally developed Pacioli package globally, allowing it to be run as a command-line tool from any directory. This is useful for testing the CLI. ```bash # Link for global testing bun link pacioli init ``` -------------------------------- ### TypeScript Utility Function Example Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Illustrates a utility function within the Pacioli project, specifically `src/utils.ts`, which handles date conversions. This function is responsible for converting dates to the Thai Buddhist Era format. ```typescript // Example from src/utils.ts (conceptual) function convertToThaiBuddhistEra(dateString: string): string { // ... implementation details ... return ""; } ``` -------------------------------- ### HTML Template Syntax for Data Injection Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Demonstrates how to use `{{placeholder}}` syntax within HTML templates to inject dynamic data. This is a core feature for creating personalized documents. ```html
เลขที่: {{documentNumber}}
วันที่: {{issueDate}}
``` -------------------------------- ### Invoice Document Structure (JSON) Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Example structure for an invoice document, used for billing completed work. It includes required fields like document number, dates, and items, along with optional tax and payment details. ```json { "documentNumber": "auto", "issueDate": "2024-11-12", "dueDate": "2024-11-30", "items": [ { "description": "Website Development", "quantity": 1, "unit": "โครงการ", "unitPrice": 50000 } ], "taxType": "withholding", "taxRate": 0.03, "taxLabel": "หัก ณ ที่จ่าย 3%", "paymentTerms": [ "ชำระเต็มจำนวนภายใน 30 วัน", "โอนเงินเข้าบัญชีธนาคาร" ], "notes": "ขอบคุณที่ใช้บริการครับ" } ``` -------------------------------- ### Bash for Running Pacioli Tests Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Commands to execute the test suite for the Pacioli project using Bun. This includes running all tests, specific files, or tests by name. ```bash # Run all tests bun test # Run specific test file bun test tests/utils.test.ts # Run tests by name bun test -t "calculates withholding tax correctly" ``` -------------------------------- ### Quotation Document Structure (JSON) Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Example structure for a quotation document, used for providing price estimates before work begins. It requires document number, dates, and items, with optional fields for tax and payment terms. ```json { "documentNumber": "auto", "issueDate": "2024-11-12", "validUntil": "2024-12-31", "items": [ { "description": "E-commerce Website", "quantity": 1, "unit": "โครงการ", "unitPrice": 150000 } ], "taxType": "vat", "taxRate": 0.07, "taxLabel": "VAT 7%", "paymentTerms": [ "เริ่มงาน: 30%", "จบ Phase 1: 30%", "จบงาน: 40%" ], "notes": "ใบเสนอราคานี้สำหรับโครงการ e-commerce ที่มีคุณสมบัติตามที่กำหนด" } ``` -------------------------------- ### Edit HTML Templates Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Lists the default HTML templates available for customization after project initialization. These templates control the visual theme of generated documents. ```bash templates/ ├── invoice.html # Dark blue theme ├── quotation.html # Purple theme └── receipt.html # Green theme ``` -------------------------------- ### Run Pacioli CLI Commands Source: https://github.com/tetipong2542/inv-generate/blob/main/agent-skills/pacioli-skills/SKILL.md Execute Pacioli commands to manage financial document generation. The primary command is `pacioli [args]`, with subcommands like `init`, `generate`, `help`, and `version` for project setup, document creation, and utility functions. ```bash bunx pacioli [args] ``` -------------------------------- ### Arrange-Act-Assert Pattern for Tests Source: https://github.com/tetipong2542/inv-generate/blob/main/TEST.md Illustrates the Arrange-Act-Assert (AAA) pattern for structuring unit tests. This pattern helps in organizing test setup, execution, and verification steps for clarity and maintainability. ```typescript test("example test", () => { // Arrange - set up test data const data = { ... }; // Act - call the function const result = someFunction(data); // Assert - verify the result expect(result).toBe(expected); }); ``` -------------------------------- ### Bash for Generating Documents with Custom Profiles Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Illustrates how to use the `--profile` flag with the `pacioli generate` command to specify different configuration profiles for generating documents. This is useful for managing different environments like development and production. ```bash # Test documents pacioli generate invoice test.json --customer test-customer.json --profile config/freelancer-dev.json # Real documents pacioli generate invoice invoice.json --customer real-customer.json --profile config/freelancer-prod.json ``` -------------------------------- ### HTML for Adding a Company Logo Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Shows how to include a company logo within an HTML template using the `` tag. This is a common customization for professional documents. ```html Company Logo ``` -------------------------------- ### Bash for Custom Output File Naming Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Demonstrates how to use the `--output` flag with the `pacioli generate` command to specify a custom name and path for the generated PDF file. This allows for organized storage of output documents. ```bash pacioli generate invoice invoice.json --customer acme.json --output "invoices/2024/11/acme-nov-2024.pdf" ``` -------------------------------- ### Test Naming Conventions in TypeScript Source: https://github.com/tetipong2542/inv-generate/blob/main/TEST.md Demonstrates clear and descriptive naming conventions for unit tests in TypeScript, aiding in understanding test purpose and failure reasons. These examples follow standard testing library patterns. ```typescript test("calculates withholding tax correctly", () => { ... }) test("rejects missing customer name", () => { ... }) ``` -------------------------------- ### Configure Freelancer Profile Source: https://github.com/tetipong2542/inv-generate/blob/main/CLAUDE.md Before the first use of the invoice generation tool, you need to create a configuration file for your freelancer profile. This involves copying an example file and editing it with your specific business information. ```bash cp config/freelancer.example.json config/freelancer.json # Edit with your information ``` -------------------------------- ### Enable Auto-Numbering for Documents Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Configures Pacioli to automatically generate sequential document numbers. The numbering resets monthly and uses prefixes based on the document type (e.g., INV, QT, REC). ```json { "documentNumber": "auto", "issueDate": "2024-11-12", ... } ``` -------------------------------- ### Bash Script for Batch Document Generation Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md A shell script demonstrating how to generate multiple documents in batches using the `pacioli generate` command. It iterates through JSON files in an 'invoices' directory. ```bash #!/bin/bash for file in invoices/*.json; do pacioli generate invoice "$file" --customer "$(jq -r '.customerPath' "$file")" done ``` -------------------------------- ### Customer Management API Operations Source: https://context7.com/tetipong2542/inv-generate/llms.txt This section covers the CRUD operations for managing customer data via the API. It includes examples for listing, retrieving, creating, updating, and deleting customers. ```bash # List all customers curl http://localhost:3001/api/customers # Response: { "success": true, "data": [{ "id": "acme-corp", "name": "...", ... }] } # Get single customer curl http://localhost:3001/api/customers/acme-corp # Response: { "success": true, "data": { "id": "acme-corp", "name": "...", ... } } # Create new customer curl -X POST http://localhost:3001/api/customers \ -H "Content-Type: application/json" \ -d '{ "id": "new-client", "name": "New Client Name", "company": "New Client Co., Ltd.", "address": "789 New Street, Bangkok 10100", "taxId": "0-1234-56789-01-2", "phone": "02-333-4444", "email": "contact@newclient.com" }' # Response: { "success": true, "data": { "id": "new-client", ... } } # Update customer curl -X PUT http://localhost:3001/api/customers/new-client \ -H "Content-Type: application/json" \ -d '{ "name": "Updated Client Name", "company": "Updated Co., Ltd.", "address": "Updated Address", "taxId": "0-1234-56789-01-2" }' # Delete customer curl -X DELETE http://localhost:3001/api/customers/new-client # Response: { "success": true, "message": "Customer deleted successfully" } ``` -------------------------------- ### Initialize Pacioli Project Structure Source: https://github.com/tetipong2542/inv-generate/blob/main/agent-skills/pacioli-skills/SKILL.md Set up a new Pacioli project by creating the necessary directory structure, including folders for configuration, customer data, and HTML templates. This command ensures all required files and directories are in place for document generation. ```bash mkdir my-financial-docs cd my-financial-docs bunx pacioli init ``` -------------------------------- ### Run All Tests (Bash) Source: https://github.com/tetipong2542/inv-generate/blob/main/TEST.md Executes the entire test suite using the bun test command. This is the primary command for verifying the project's functionality. ```bash bun test ``` -------------------------------- ### Receipt Document Structure (JSON) Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Example structure for a receipt document, used for confirming payments. It includes required fields like document number, issue date, payment date, and items, along with optional payment and tax details. ```json { "documentNumber": "auto", "issueDate": "2024-11-15", "paymentDate": "2024-11-14", "items": [ { "description": "Website Development", "quantity": 1, "unit": "โครงการ", "unitPrice": 50000 } ], "paymentMethod": "โอนเงินธนาคาร", "paymentReference": "REF-20241114-001", "taxType": "withholding", "taxRate": 0.03, "taxLabel": "หัก ณ ที่จ่าย 3%", "paymentTerms": ["ชำระแล้วเต็มจำนวน"], "notes": "ขอบคุณที่ชำระเงินตรงเวลาครับ" } ``` -------------------------------- ### Pacioli CLI Commands Source: https://github.com/tetipong2542/inv-generate/blob/main/agent-skills/pacioli-skills/SKILL.md Overview of the available commands for the Pacioli CLI tool, including initialization, document generation, help, and version checking. ```APIDOC ## Pacioli CLI Commands ### Description This section outlines the primary commands available in the Pacioli CLI for managing and generating financial documents. ### Method CLI Commands ### Endpoint N/A ### Parameters #### CLI Commands - **`init`** (command) - Initializes a new project structure with configuration files and HTML templates. - **`generate [--customer ]`** (command) - Generates a PDF document. `` can be `invoice`, `quotation`, or `receipt`. `` is the path to the document's JSON data file. `--customer` is an optional flag to specify the customer's JSON profile path. - **`help`** (command) - Displays the help message for the Pacioli CLI. - **`version`** (command) - Shows the current version of the Pacioli CLI. ### Request Example ```bash bunx pacioli init bunx pacioli generate invoice invoices/oct-service.json --customer customers/acme.json ``` ### Response #### Success Response - Output will vary based on the command executed. `init` creates files, `generate` outputs a PDF file, `help` displays text, and `version` displays the version string. #### Response Example ``` # Example for 'generate' command (output is a PDF file, not text) # Example for 'version' command 1.0.0 ``` ``` -------------------------------- ### Pacioli Usage Overview Source: https://github.com/tetipong2542/inv-generate/blob/main/README.md Provides a summary of common Pacioli commands for initializing a project and generating different types of financial documents (invoice, quotation, receipt). Each document generation requires data and customer information. ```bash pacioli init # Initialize new project pacioli generate invoice data.json --customer customer.json pacioli generate quotation data.json --customer customer.json pacioli generate receipt data.json --customer customer.json ``` -------------------------------- ### No Tax Configuration (JSON) Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Configuration for scenarios where no tax is applied. This JSON snippet sets the tax rate to zero and provides a label indicating 'No Tax'. ```json { "taxRate": 0, "taxLabel": "ไม่มีภาษี" } ``` -------------------------------- ### Manually Set Document Number Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Allows specifying a custom document number directly in the data JSON. This bypasses the auto-numbering sequence and does not affect the auto-numbering counter. ```json { "documentNumber": "INV-2024-CUSTOM-001", ... } ``` -------------------------------- ### Importing Bun Test Utilities Source: https://github.com/tetipong2542/inv-generate/blob/main/TEST.md Demonstrates the correct import statement for Bun test utilities, specifically highlighting the need to import `beforeEach` and `afterEach` from `bun:test` to resolve 'ReferenceError'. ```typescript import { describe, test, expect, beforeEach, afterEach } from "bun:test"; ``` -------------------------------- ### Generate Financial Document CLI Source: https://context7.com/tetipong2542/inv-generate/llms.txt Generates financial documents (invoice, quotation, receipt) from JSON data files. It requires customer data and can optionally use an alternative freelancer profile and specify an output path. ```bash bunx pacioli generate invoice data/invoice.json --customer customers/acme-corp.json bunx pacioli generate quotation data/quote.json --customer customers/demo.json --output custom/quote.pdf bunx pacioli generate receipt data/receipt.json --customer customers/test.json --profile config/freelancer-alt.json ``` -------------------------------- ### Common Item Structure (JSON) Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Defines the common structure for items across all document types (invoice, quotation, receipt). It includes fields for description, quantity, unit, and unit price. ```json { "items": [ { "description": "Service or product description", "quantity": 1, "unit": "Unit name (e.g., โครงการ, ชม., หน้า)", "unitPrice": 10000.00 } ] } ``` -------------------------------- ### Freelancer Profile Configuration JSON Source: https://context7.com/tetipong2542/inv-generate/llms.txt Defines the freelancer's business information, including contact details, tax ID, signature path, and bank information, used across all generated financial documents. ```json { "name": "John Smith", "title": "Full-Stack Developer", "email": "john@example.com", "phone": "081-234-5678", "address": "123 Main Street, Bangkok 10110", "taxId": "1234567890123", "signature": "config/signature.png", "bankInfo": { "bankName": "Bangkok Bank", "accountName": "John Smith", "accountNumber": "123-4-56789-0", "branch": "Silom Branch" } } ``` -------------------------------- ### Withholding Tax Configuration (JSON) Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Configuration for withholding tax, commonly used by freelancers in Thailand. This JSON snippet defines the tax type, rate, and label for deducting tax from the total amount. ```json { "taxType": "withholding", "taxRate": 0.03, "taxLabel": "หัก ณ ที่จ่าย 3%" } ``` -------------------------------- ### Generate Receipt Source: https://github.com/tetipong2542/inv-generate/blob/main/agent-skills/pacioli-skills/SKILL.md Produce a receipt PDF document. Similar to generating invoices and quotations, this command takes the path to the receipt JSON data file and can optionally link to a customer JSON file using the `--customer` flag. ```bash bunx pacioli generate receipt receipts/payment-101.json --customer customers/acme.json ``` -------------------------------- ### Generate Invoice with Customer Flag Source: https://github.com/tetipong2542/inv-generate/blob/main/agent-skills/pacioli-skills/SKILL.md Generate an invoice PDF by specifying the invoice JSON file and the customer JSON file using the `--customer` flag. This method is useful when the customer details are not embedded within the invoice JSON itself. ```bash bunx pacioli generate invoice invoices/oct-service.json --customer customers/acme.json ``` -------------------------------- ### Auto-Numbering System Example Source: https://github.com/tetipong2542/inv-generate/blob/main/CLAUDE.md The tool supports an auto-numbering system for documents, formatted as 'PREFIX-YYYYMM-NUMBER'. It handles month rollovers and allows for manual overrides, updating the counter intelligently. The metadata is stored in '.metadata.json'. ```json {"documentNumber": "auto", ...} // First invoice in Oct 2024 → INV-202410-001 {"documentNumber": "auto", ...} // Second invoice → INV-202410-002 {"documentNumber": "INV-202410-999", ...} // Manual number updates counter to 999 {"documentNumber": "auto", ...} // Next auto → INV-202410-1000 {"documentNumber": "auto", ...} // First invoice in Nov 2024 → INV-202411-001 (counter resets) ``` -------------------------------- ### Run Tests in Watch Mode (Bash) Source: https://github.com/tetipong2542/inv-generate/blob/main/TEST.md Executes tests and automatically re-runs them when file changes are detected. This is useful for a rapid development feedback loop. ```bash bun test:watch ``` -------------------------------- ### VAT Configuration (JSON) Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Configuration for Value Added Tax (VAT). This JSON snippet defines the tax type, rate, and label for adding tax to the total amount, commonly used in business transactions. ```json { "taxType": "vat", "taxRate": 0.07, "taxLabel": "VAT 7%" } ``` -------------------------------- ### Specify Customer Path in Data JSON Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Allows embedding the customer file path directly within the data JSON file. This simplifies the generation command when the customer is consistently linked to the document data. ```json { "customerPath": "customers/acme-corp.json", "documentNumber": "auto", "issueDate": "2024-11-12", ... } ``` -------------------------------- ### Run Specific Test File (Bash) Source: https://github.com/tetipong2542/inv-generate/blob/main/TEST.md Executes tests only for a specified file, such as 'tests/utils.test.ts'. This is helpful for isolating and debugging specific test modules. ```bash bun test tests/utils.test.ts ``` -------------------------------- ### Generate PDF Invoice using API Source: https://context7.com/tetipong2542/inv-generate/llms.txt This snippet demonstrates how to generate a PDF invoice using the project's API. It sends a POST request with invoice details and receives a response containing the filename and path of the generated PDF. ```bash # Generate an invoice via API curl -X POST http://localhost:3001/api/generate \ -H "Content-Type: application/json" \ -d '{ "type": "invoice", "customerId": "acme-corp", "documentData": { "documentNumber": "auto", "issueDate": "2024-11-12", "dueDate": "2024-11-30", "items": [ { "description": "Web Development", "quantity": 1, "unit": "project", "unitPrice": 50000 } ], "taxType": "withholding", "taxRate": 0.03, "taxLabel": "Withholding Tax 3%" } }' # Response { "success": true, "data": { "filename": "invoice-INV-202411-001.pdf", "path": "/output/invoice-INV-202411-001.pdf", "documentNumber": "INV-202411-001", "type": "invoice" }, "message": "PDF created successfully: invoice-INV-202411-001.pdf" } ``` -------------------------------- ### Generate Quotation Source: https://github.com/tetipong2542/inv-generate/blob/main/agent-skills/pacioli-skills/SKILL.md Create a quotation PDF document. This command requires the path to the quotation JSON data file and optionally accepts a path to a customer JSON file via the `--customer` flag. ```bash bunx pacioli generate quotation quotations/web-design.json --customer customers/acme.json ``` -------------------------------- ### Freelancer Profile Structure (JSON) Source: https://github.com/tetipong2542/inv-generate/blob/main/USAGE.md Defines the structure for a freelancer's profile, including personal information, contact details, tax ID, bank information, and signature path. This JSON file is essential for generating documents. ```json { "name": "นายสมชาย ใจดี", "title": "Full-Stack Developer", "email": "somchai@example.com", "phone": "081-234-5678", "address": "123 ถนนสุขุมวิท กรุงเทพมหานคร 10110", "taxId": "1809900958692", "bankInfo": { "bankName": "ธนาคารกสิกรไทย", "accountName": "นายสมชาย ใจดี", "accountNumber": "123-4-56789-0", "branch": "สาขาสีลม" }, "signature": "config/signature.png" } ```