Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/arsinousltd-sudo/Arsinous-V8-Sales/llms.txt

Use this file to discover all available pages before exploring further.

Arsinous V8 Sales turns a standard Google Spreadsheet into a full-featured sales back-office. It connects directly to your MySQL database via Google’s JDBC service, surfaces rich modal dialogs built with Vue.js and Vuetify, and keeps every sheet tab in sync with a single menu click or cell edit — all without leaving Google Workspace.

What It Solves

Sales teams working inside Google Workspace need more than a static spreadsheet. Arsinous V8 Sales brings together customer records, invoices, inventory lots, payment tracking, discount schedules, and financial reports in one coherent environment. Data is always read from and written back to MySQL, so the spreadsheet is a live view rather than a disconnected copy.

Key Modules

ModuleDescription
CustomersCreate, search, and update customer records. Auto-provisions a Drive sub-folder for each new customer.
ProductsManage the product catalog with VAT codes, pricing tiers, and default discount structures.
InvoicesGenerate, view, edit, and delete invoices and credit notes within a chosen date range.
InventoryTrack stock levels, lot numbers, and expiry dates pulled from MySQL.
Payments & DepositsLog and filter customer payments and deposits against a date range and customer filter.
DiscountsView and save per-customer, per-product discount rules directly on the Discounts sheet.
Financial ReportsStatement of Account (Balance tab) and all-customer outstanding balances (All Balances tab).

Architecture

┌──────────────────────────────────────────────────────────┐
│                  Google Spreadsheet                      │
│  ┌─────────────┐  ┌──────────────┐  ┌────────────────┐  │
│  │ Sheet Tabs  │  │  Apps Script │  │ HTML Dialogs   │  │
│  │  (9 tabs)   │◄─│  .gs files   │◄─│ Vue + Vuetify  │  │
│  └─────────────┘  └──────┬───────┘  └────────────────┘  │
└─────────────────────────┼────────────────────────────────┘
                           │ JDBC (port 3306)
                    ┌──────▼───────┐
                    │  MySQL DB    │
                    └──────────────┘
Apps Script backend — All server-side logic lives in .gs files organised by domain (Customer/, product/, invoice/, Payment/, DB/, sidebar/, plus root-level utility scripts). Google Apps Script executes these files server-side (see Setup for the current runtime version and migration note). HTML modal dialogs — Each domain has a matching index.html file rendered as a sidebar or modal dialog using HtmlService. The UI is built with Vue.js and Vuetify, communicating with the backend through google.script.run. JDBC MySQL connection — All database reads and writes go through Jdbc.getConnection() using the connection string configured in Constants.gs. Google’s JDBC service bridges Apps Script to your MySQL server over port 3306.

Automatic Triggers

onOpen — Sidebar & Menu

Every time the spreadsheet is opened, onOpen fires and does two things:
  1. Registers the Arsinous top-level menu with items for the Sidebar, Update Current Tab, and Discount sync actions.
  2. Automatically opens the Arsinous sidebar (when auth mode is not NONE, i.e., the user has already granted permissions).
onOpen.gs
function onOpen(e) {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu("Arsinous")
    .addItem("Sidebar", "showSidebar")
    .addItem("Update Current Tab", "updateCurrentTab")
    
   .addSeparator()
   .addItem("GET Discouts", "getDiscounts")
   .addItem("SAVE Discouts", "saveDiscounts")
   .addToUi();  

   if( e && e.authMode != ScriptApp.AuthMode.NONE ){
     showSidebar();
   }
   
}

onEdit — Auto-Refresh on Cell Change

The onEdit trigger watches three sheet tabs and fires a data refresh when specific trigger cells are edited:
SheetTrigger Cell(s)Action
DiscountsA1Fetches discount rules from MySQL
BalanceA1Loads the Statement of Account for the named customer
P&DC1, C2, E1, C4Refreshes the Payments & Deposits filtered view

Sheet Tabs

The spreadsheet is organised into nine dedicated tabs:
TabPurpose
CustomersCustomer list synced from MySQL
ProductsProduct catalog synced from MySQL
InvoicesInvoice list for the selected date range
InventoryStock levels with lots and expiry dates
DiscountsPer-customer product discounts
BalanceStatement of Account for one customer
All BalancesOutstanding balances for all customers
P&DPayments & Deposits filtered view
SoA InputsInputs driving the Statement of Account query

Runtime

Arsinous V8 Sales is migrating to the Google Apps Script V8 runtime (Chrome V8 engine). The current appsscript.json in the repository sets "runtimeVersion": "DEPRECATED_ES5" — the migration to "V8" is in progress. See the Setup guide for the current manifest content and instructions on updating the runtime before deploying.
Arsinous V8 Sales requires a Google Workspace account (free @gmail.com accounts cannot use certain Apps Script services such as HtmlService sidebar widths or advanced Drive features). Your MySQL server must also be publicly reachable on port 3306 from Google’s server infrastructure — private or firewalled databases require a tunnel or allowlist.

Explore the System

Customers

Create and manage customer records, Drive folders, and discount assignments.

Invoices

Generate, edit, and delete invoices and credit notes backed by MySQL.

Inventory

Track stock lots, quantities, and expiry dates in real time.

Payments

Log customer payments and deposits, filter by date and customer.

Balance Reports

Statement of Account and all-customer outstanding balance views.

Sidebar Overview

The Arsinous sidebar — your central hub for navigation and data entry.

Build docs developers (and LLMs) love