CREATE TABLE act_company (
`comCode` varchar(20) primary key,
`comName` varchar(80),
`comAddressLine1` varchar(80),
`comAddressLine2` varchar(80),
`comAddressLine3` varchar(80),
`comAddressLine4` varchar(80),
`comAddressPostal` varchar(10),
`comAddressCountry` varchar(60),
`comPhoneOffice` varchar(20),
`comBusinessReg` varchar(20),
`comTaxReg` varchar(20),
`comFax` varchar(20),
`comEmail` varchar(80),
`comLocalCurrency` char(3),
`comFYStartYear` varchar(4),
`comFYStartMonth` integer,
`comFYClosingMonth` integer,
`comMainCompany` char(1),
`comTaxPercent` decimal(38,18),
`comImage` blob
);

CREATE TABLE act_accounts (
`acctKey` varchar(28) primary key,
`acctCode` varchar(20),
`acctTitle` varchar(50),
`acctHeaderDetail` varchar(6),
`acctDebitCredit` varchar(6),
`acctGroup` varchar(15),
`acctParent` varchar(20),
`acctDebtorCreditor` varchar(10),
`acctCreditPeriod` integer,
`acctRole` varchar(20),
`acctBankAcctNo` varchar(20)
);

CREATE INDEX `acctCode` on act_accounts(`acctCode`);
CREATE INDEX `acctGroup` on act_accounts(`acctGroup`);
CREATE INDEX `acctParent` on act_accounts(`acctParent`);

CREATE TABLE act_vouchers (
`vouKey` varchar(28) primary key,
`vouRefNo` varchar(20),
`vouTransDate` date,
`vouJournalType` varchar(4),
`vouInvoiceType` varchar(4),
`vouCurrencyCode` char(3),
`vouExchangeRate` decimal(38,18),
`vouDescription` varchar(80),
`vouArapCode` varchar(20),
`vouPayorPayee` varchar(50),
`vouYear` integer,
`vouMonth` integer,
`vouStatus` varchar(20),
`vouAmt` decimal(38,18),
`vouAmtTax` decimal(38,18),
`vouCheckAcctIn` varchar(20),
`vouPaidAmtIn` decimal(38,18),
`vouChequeNoIn` varchar(20),
`vouCheckAcctOut` varchar(20),
`vouPaidAmtOut` decimal(38,18),
`vouChequeNoOut` varchar(20),
`vouBankCharges` decimal(38,18),
`vouRunningNo` integer,
`vouType` char(1),
`vouInvoiceNo` varchar(20),
`vouYourRefNo` varchar(20),
`vouCostCentre1` varchar(30),
`vouCostCentre2` varchar(30),
`vouCostCentre3` varchar(30),
`vouYearMonth` varchar(6),
`vouCheckAcctCurr` char(3),
`vouInvoiceXRate` decimal(38,18),
`vouIdUpdate` varchar(28),
`vouDateUpdate` date,
`vouIdCreate` varchar(28),
`vouDateCreate` date,
`vouRepeatKey` varchar(28),
`vouRepeatRules` varchar(80)
);

CREATE INDEX `vouArapCode` on act_vouchers(`vouArapCode`);
CREATE INDEX `vouCurrencyCode` on act_vouchers(`vouCurrencyCode`);
CREATE INDEX `vouJournalType` on act_vouchers(`vouJournalType`);
CREATE INDEX `vouCostCentre1` on act_vouchers(`vouCostCentre1`);
CREATE INDEX `vouTransDate` on act_vouchers(`vouTransDate`);
CREATE INDEX `vouYearMonth` on act_vouchers(`vouYearMonth`);
CREATE INDEX `vouYear` on act_vouchers(`vouYear`);
CREATE INDEX `vouMonth` on act_vouchers(`vouMonth`);

CREATE TABLE act_v_details (
`vouKey` varchar(28),
`vouCostCentre1` varchar(30),
`vouCostCentre2` varchar(30),
`vouCostCentre3` varchar(30),
`vouAcctCode` varchar(20),
`vouDebit` decimal(38,18),
`vouCredit` decimal(38,18),
`vouDescription` varchar(80),
`vouSequenceNo` integer
);

CREATE INDEX `detvouKey` on act_v_details(`vouKey`);
CREATE INDEX `vouAcctCode` on act_v_details(`vouAcctCode`);

CREATE TABLE act_consacct (
`consYear` integer,
`consMonth` integer,
`consAcctCode` varchar(20),
`consBudget` decimal(38,18),
`consOpeningBalance` decimal(38,18),
`consDebit` decimal(38,18),
`consCredit` decimal(38,18),
`consNetTransaction` decimal(38,18),
`consClosingBalance` decimal(38,18),
`consBalance` decimal(38,18),
`consCostCentre1` varchar(30),
`consCostCentre2` varchar(30),
`consCostCentre3` varchar(30),
`consYearMonth` varchar(6)
);

CREATE INDEX `consAcctCode` on act_consacct(`consAcctCode`);
CREATE INDEX `consYearMonth` on act_consacct(`consYearMonth`);

CREATE TABLE act_payments (
`vouKey` varchar(28),
`vouInvoiceKey` varchar(28) ,
`vouAppAmt` decimal(38,18),
`vouAppAmtTax` decimal(38,18),
`vouTransDate` date
);

CREATE INDEX `payvouTransDate` on act_payments(`vouTransDate`);
CREATE INDEX `vouInvoiceKey` on act_payments(`vouInvoiceKey`);
CREATE INDEX `vouKey` on act_payments(`vouKey`);

CREATE TABLE act_acctrole (
`code` varchar(30) primary key,
`description` varchar(80)
);

CREATE TABLE act_address (
`acctCode` varchar(20) primary key,
`acctAddressLine1` varchar(80),
`acctAddressLine2`  varchar(80),
`acctAddressLine3` varchar(80),
`acctAddressLine4` varchar(80),
`acctAddressPostal` varchar(10),
`acctAddressCountry` varchar(60),
`acctCreditPeriod` integer
);

CREATE TABLE act_costcentre (
`costcentre` varchar(30),
`centrelevel` integer,
`code` varchar(30),
`description` varchar(80));

CREATE TABLE act_log (
`logYear` integer,
`logMonth` integer,
`logStatus` varchar(20),
`logUser` varchar(20),
`logDate` date);

CREATE TABLE act_currency (
`currencyCode` char(3) primary key,
`currencyFormatter` blob);

CREATE TABLE db_settings (
`dbVersion` varchar(20) DEFAULT 0
);

