Вверх ↑
Ответов: 824
Рейтинг: 138
#1: 2014-01-25 15:06:42 ЛС | профиль | цитата
Создание приложения для ведения бухгалтерской главной книги.
В продолжение темы Главная книга 1 (Excel)

Задумок много, и у меня уже сформировалась общая концепция приложения, но пока ещё не совсем четко.
Естественно, что в процессе дальнейшей разработки и изучения Sqlite, эта концепция может претерпеть изменения... Но всему свое время

Что же должна "делать" программа (основное):
Ввод и редактирование данных.
  Возможность ввода начальных остатков. (табл. ob_ost)
  Ввод и редактирование счетов. (табл. sch) - справочник счетов
  Ввод и редактирование проводок. (табл. provod) - журнал проводок
Формирование и печать отчетов.
  Анализ сета за произвольный период.
  Оборотно-сальдовая ведомость за произвольный период.
  Главная книга за произвольный период.
Как, я, представляю работу программы:
Из своей практики знаю, что наиболее удобным способом массового ввода однотипных данный есть табличный, так как никакие диалоги не закрывают обзор уже введенных. Поэтому буду пытаться реализовать именно этот метод ввода. Собственно это будет касаться ввода начальных остатков и проводок.

Предполагается, что основные вычисления, проверки вводимых данных, обновление таблиц будет возложено на саму базу sqlite. И здесь будут задействованы триггеры на добавление, изменение (обновление записей), удаление. Например: счет, который мы попытаемся ввести в журнал проводок должен быть проверен на существование в справочнике счетов, если такого счета нет в справочнике - выдать сообщение об ошибке или предложить внести его в справочник; проверка на введение чисел (сумма проводки), и т. п..

При первом запуске программа должна предложить пользователю выбрать начальный период ведения учета, после - предложить внести начальные остатки по счетам.
Тут нужно рассказать немного об остатках (табл. ob_ost). В этой таблице будут хранится: начальные остатки, обороты за период, и конечные остатки, одним словом - итоги.
В данной таблице предполагается, что каждый счет в определенном периоде может быть записан один раз, т. е. один и тот-же счет не может присутствовать в таблице с одним периодом: счет 201 "Материалы" не может быть записан в феврале дважды.
В нашем случае понятия "начальные" и "конечные" остатки относительные. Как-же определить начальные остатки? - Текущий период по счету минус 1 месяц = период начальных остатков по счету.
После внесения остатков (если это необходимо), можно приступать к внесению данных в журнал проводок. Если пользователь внес хотя-бы одну запись в журнал проводок - запретить редактирование начальных остатков. Разумеется, что пользователь может допустить ошибку при вводе начальных остатков, и выявить ее позже, не удалять же нам все данные из журнала проводок. Для такого случая нужно предусмотреть специальный режим изменения начальных остатков с пересчетом всех итогов больше даты начальных остатков.

Немного об отчетах. ....... (будет)
Все данные в базе будут заносится в кодировке utf-8
Поэтому, при разработке буду использовать нестандартные компоненты SQLite UTF8
А также последнюю Альтернативную сборку от CriDos

Для такой задачи первым делом нужно спроектировать базу данных:

Sql код для создания таблиц:

#sql
CREATE TABLE "sch" (
"id" INTEGER,
"code" TEXT(8) NOT NULL,
"typ" TEXT(2) NOT NULL,
"name" TEXT,
PRIMARY KEY ("id") ,
UNIQUE ("code")
);

CREATE TABLE "ob_ost" (
"id" INTEGER,
"sch_id" INTEGER,
"period" DATE,
"ob_d" DECIMAL(10,2),
"ob_k" DECIMAL(10,2),
"ost" DECIMAL(10,2),
PRIMARY KEY ("id") ,
CONSTRAINT "fk_ob_ost_sch_1" FOREIGN KEY ("sch_id") REFERENCES "sch" ("id")
);

CREATE TABLE "provod" (
"id" INTEGER,
"period" DATE,
"sch_d" INTEGER,
"sch_k" INTEGER,
"suma" DECIMAL(10,2),
"comment" TEXT,
PRIMARY KEY ("id") ,
CONSTRAINT "fk_provod_sch_1" FOREIGN KEY ("sch_d") REFERENCES "sch" ("id"),
CONSTRAINT "fk_provod_sch_2" FOREIGN KEY ("sch_k") REFERENCES "sch" ("id")
);



(Редактирование этого поста не закончено! Продолжение следует!)
карма: 1

0
файлы: 1code_32923.txt [751B] [215]