Таблица 14 - INVOICE “Реестр счет-фактур”
Поле
Описание поля
Имя поля
Тип поля
Код
NPP
INTEGER
Дата рестра
DATA
DATE
№ реестра
NOMER
№счет-факт
NOMER_CI
Дата прихода/отгрузки
EXECDATE
Договор(ТЭЦ) №
DOGOVOR
VARCHAR(20)
Договор(БАК) №
DOGOV_BAK
Предприятие
FACTORY
Наименование
PRODUCT
Сумма
Сумма по счет фактуре включая НДС и ТехПД
SUMMA
FLOAT
"+" - мы предъявили счет-фактуру
"-" - нам предъявили счет-фактуру
Служба
DEPARTMENT
SMALLINT
Исполнение
1-исполнен, 0-неисполнен
PERFORMED
Таблица 15 - COAL “Уголь”
Дата отгрузки
Плательщик
Кому отправлен уголь
COMPANY
№ договора
CONTRACT
№ счет-фактуры
счет-фактура, выписанная за отгруженный уголь
INVOICE
Сумма с ж.д.тарифом
Таблица 16 - TEC “Теплоэнергия”
№ п/п
Тип
Назначение
1
2
NOMER_DOG
VARCHAR(8)
Номер договора
3
Месяц начисления
4
5
Все справочные таблицы имеют одинаковую структуру.
NAME
VARCHAR(хх)
Название
AS BEGIN NEW.NPP=GEN_ID(VECSEL_GEN,1);END;
Текст основного SQL-запроса реестра векселей:
SELECT A.NPP, A.ACTNUM, A.VECNUM, B.NAME EMITENT, A.RUBSUM, A.EMISDATE,
A.SENDDATE, C.NAME VECHOLDER, D.NAME SUPPLIER, E.NOMER_OUR,
F.NAME SUBJECT, G.NAME SERVICE,
A.EXECUTED, A.NOTE, H.NAME REGION
FROM VECSEL A
LEFT OUTER JOIN EMITENT B
ON (A.EMITENT = B.NPP)
LEFT OUTER JOIN COMPANY C
ON (A.VECHOLDER = C.NPP)
LEFT OUTER JOIN COMPANY D
ON (A.SUPPLIER = D.NPP)
LEFT OUTER JOIN CONTRACT E
ON (A.CONTRACT = E.NPP)
LEFT OUTER JOIN REGION H
ON (A.REGION = H.NPP)
LEFT OUTER JOIN SUBJECT F
ON (E.SUBJECT = F.NPP)
LEFT OUTER JOIN DEPARTMENT G
ON (E.DEPARTMENT = G.NPP)
ORDER BY A.NPP
Запрос выводит информацию из таблицы VECSEL и тех таблиц, коды из которых использованы:
COMPANY - справочник по компаниям;
CONTRACT - таблица активных договоров;
REGION - справочник по регионам и энергосистемам;
SUBJECT - справочник по предмету договора;
DEPARTMENT - иерархический справочник по подразделениям компании.
Листинг основного модуля программы vecsel.exe
program Vecsel;
uses Forms, Windows, …
{$R *.RES}
const ProductTitle='Реестр векселей';
var FormPointer:PChar;
hD : HWND;
begin
Application.ShowMainForm:=false;
FormPointer:=PChar(ProductTitle);
hD:=FindWindow('TApplication',FormPointer);
If hD<>0 then
// если программа уже запущена, то вывести главное окно на первый план
SetForegroundWindow(hD)
else
//иначе запустить новый экземпляр программы
Application.ShowMainForm:=true;
Application.Initialize;
Application.CreateForm(TCSTForm, CSTForm);
Application.CreateForm(TMainDM, MainDM);
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TExcangeForm, ExcangeForm);
Application.Run;
end;
end.
Созданы справочники на все однородные группы данных. Каждая рабочая таблица хранит код везде, где возможно унифицировать данные. Т.о. были выделены следующие справочники:
страны;
города;
службы;
виды валют;
компании;
банки;
предмет договора;
пользователи.
Когда пользователь вводит информацию, это, как правило, стандартная операция с определенным контуром входных данных. Поэтому выгодно реализовать ввод всех финансовых операций в виде хранимых процедур в базе данных. Приложение-клиент передает по сети, в таком случае, только параметры этой процедуре, а она в свою очередь сама выполняет SQL-запросы. Это дает три хороших момента:
Трафик сети снижен до порогового минимума - следовательно, быстрее будет совместная работа нескольких пользователей;
Одни и те же хранимые процедуры могут использовать разные приложения, сокращается объем кода;
Хранимые процедуры выполняются в рамках одной транзакции - отпадает необходимость программно реализовывать механизм транзакций в каждом приложении.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15