Banco de dados
Para permitir as operações sem conectividade, o aplicativo deve armazenar localmente os dados previamente recebidos e incrementá-los a medida que novos dados de atualizações forem recebidos. Segue abaixo estrutura de banco de dados em SQL Lite para servir como ponto de partida.
CREATE TABLE [android_metadata]
(
[locale] TEXT DEFAULT 'pt_BR'
);
CREATE TABLE [Schema]
(
[Version] INTEGER NOT NULL
);
CREATE TABLE [CloudAccounts]
(
[CloudAccountEid] INTEGER NOT NULL,
[FirstLoginDate] DATETIME NOT NULL,
[Name] NVARCHAR(100) NULL,
[Document] NVARCHAR(18) NULL,
[Logged] BIT NOT NULL
);
CREATE TABLE [ConsumptionAccounts]
(
[Id] INTEGER NOT NULL PRIMARY KEY,
[CloudAccountEid] INTEGER NOT NULL,
[AccountNumber] INTEGER NOT NULL,
[Type] TINYINT NOT NULL,
[Owner] NVARCHAR(131) NULL,
[Code] NVARCHAR(30) NOT NULL,
[CreditLimit] NUMERIC(18,2) NULL,
[CurrentBalance] NUMERIC(18,2) NOT NULL,
[AvailableCredit] NUMERIC(18,2) NOT NULL,
[PayableValue] NUMERIC(18,2) NOT NULL,
[OpenInvoiceValue] NUMERIC(18,2) NOT NULL,
[Status] TINYINT NOT NULL,
[CadasterDate] DATETIME NOT NULL
);
CREATE INDEX [IX_ConsumptionAccounts_AccountNumber] ON [ConsumptionAccounts] ([AccountNumber] ASC);
CREATE INDEX [IX_ConsumptionAccounts_CloudAccountEid] ON [ConsumptionAccounts] ([CloudAccountEid] ASC);
INSERT INTO [Schema]([Version]) VALUES(1);