Статья опубликована в рамках: XXX Международной научно-практической конференции «Технические науки - от теории к практике» (Россия, г. Новосибирск, 22 января 2014 г.)
Наука: Технические науки
Секция: Информатика, вычислительная техника и управление
Скачать книгу(-и): Сборник статей конференции
- Условия публикаций
- Все статьи конференции
дипломов
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ПАРТИОННОГО УЧЕТА FIFO В КЛИЕНТ-СЕРВЕРНОЙ АРХИТЕКТУРЕ
Грибанова-Подкина Мария Юрьевна
канд. физ.-мат. наук, доцент кафедры прикладной информатики Балашовского института Саратовского государственного университета им. Н.Г. Чернышевского, РФ, г. Балашов
E-mail:
SOFTWARE DEVELOPMENT OF BATCH ACCOUNTING FIFO IN CLIENT-SERVER ARCHITECTURE
Maria Gribanova-Podkina
candidate of physical and mathematical sciences, Assistant professor of Applied informatics department, Balashov Institute of Saratov State University, Russia Balashov
АННОТАЦИЯ
Рассматривается модель партионного учета по схеме FIFO. Реализация в клиент-серверной архитектуре представлена моделью базы данных и клиентскими компонентами, осуществляющими регистрацию поставок и расхода товара.
ABSTRACT
The article describes the model of batch accounting FIFO. Implementation in a client-server architecture model is presented database and client components that register supplies and flow of goods.
Ключевые слова: FIFO; информационная система; программное обеспечение.
Keywords: FIFO; information model; software.
При разработке информационной системы, автоматизирующей учет движений товара на складе предприятия, была поставлена задача партионного учета по технологии FIFO (first-in-first-out). Эта технология подразумевает последовательное списание (или расход) товара, начиная с самых ранних поставок [1, c. 163]. Схема востребована во многих организациях при ведении учета товаров, так как всегда известно, какой товар, в каком количестве и по какой цене присутствует на складе. Это позволяет, например, в любой момент времени рассчитать реальную себестоимость продукции. Большинство программных продуктов, существующих на рынке, реализуют самые распространенные схема партионного учета, в том числе и FIFO. Однако информационная система, разработанная по индивидуальному проекту, является лучшим выбором, так как учитывает все обозначенные заказчиком особенности. В этом случае необходимо разрабатывать и индивидуальную модель реализации партионного учета.
Для программной реализации рассматриваемой схемы моделируется база данных с информацией обо всех необходимых сущностях (см. рисунок 1).
Рисунок 1. Логическая модель базы данных
Для поступления товара потребуются две таблицы:
· invoice — накладная, будет содержать сведения о номере накладной, дате поставки и поставщике;
· invoice_item — табличная часть накладной, содержит номер позиции, собственно приходуемый ресурс (товар), его цену и количество.
Аналогично расход оформляется двумя таблицами:
· outgo — документ на расход, содержит номер, дату и код клиента;
· outgo_item — табличная часть расходного документа, содержит номер позиции, расходуемый ресурс (товар) и количество товара в расходе.
Еще одна дополнительная сущность будет регистрировать приход и расход товара. Это таблица register, содержащая сведения о дате операции, номере накладной и ее позиции, регистрируемом ресурсе, приходуемом и расходуемом количестве ресурса, а также о расходном документе и его позиции.
Допустим, имеются две поставки товара с кодом 5, каждая поставка в количестве 10 единиц. В таблице invoice_item они будут зафиксированы, соответственно, двумя записями (см. таблица 1).
Далее, товар с кодом 5, расходуется дважды, и каждый раз в количестве 7 единиц. В таблице outgo_item фиксируем также две записи (см. таблица 2).
Таблица 1.
Записи таблицы invoice_item
ID |
ID_invoice |
source |
price |
count |
1 |
1 |
5 |
300 |
10 |
2 |
2 |
5 |
320 |
10 |
Таблица 2.
Записи таблицы outgo_item
ID |
ID_outgo |
source |
count |
1 |
1 |
5 |
7 |
2 |
2 |
5 |
7 |
Таблица 3.
Записи таблицы register
ID |
date |
invoice |
Invoice_item |
source |
debet |
credit |
1 |
|
1 |
1 |
5 |
10 |
|
2 |
|
2 |
2 |
5 |
10 |
|
3 |
|
1 |
1 |
5 |
|
7 |
4 |
|
1 |
1 |
5 |
|
3 |
5 |
|
2 |
2 |
5 |
|
4 |
Теперь необходимо зарегистрировать соответствие между поставками товара и его расходом. Для этого, согласно технологии FIFO, в таблице register будет пять записей: две на приход товара, одна на первый расход (7 единиц) и две на второй расход (3 единицы и 4 единицы). Каждый расход привязывается к соответствующему приходу (см. таблица 3).
Для вычисления остатков по каждой партии на серверной стороне имеется представление view_saldo_source, SQL-код которого приведен ниже:
select invoice_item.id_invoice as invoice, register.invoice_item,
register.source, sum(debet)-sum(credit) as saldo
from register, invoice_item
where register.invoice_item=invoice_item.id
group by invoice_item.id_invoice, register.invoice_item, register.source
order by register.invoice_item;
Теперь в клиентской части информационной системы (реализована в Delphi 7) для списания товара необходима реализация двух задач:
· сформировать остатки по данному товару;
· в цикле, пока не наберем нужное количество единиц товара для списания, формируем записи на расход товара из первой по порядку партии, полученной в обновленном представлении view_saldo_source.
Первая из этих задач обеспечивается выборкой из представления view_saldo_source по заданному параметру source. В среде Delphi это компонент
ADOQSaldoSource класса TADOTable со следующим текстом:
select invoice,invoice_item, source, saldo
from view_saldo_source
where source=:source
Вторая задача подразумевает наличие компонента ADOCreditRegister класса TADOCommand с командой
insert into register
(invoice,invoice_item,source,outgo_item_type,outgo_item,debet,credit)
values
(:invoice,:invoice_item,:source,:outgo_item_type,:outgo_item,:debet,:credit)
Формирование записей на расход товара по партиям приведен фрагментом процедуры клиентской части, являющейся частью транзакции:
while credit>0 do begin
ADOQSaldoSource.Active:=false;
ADOQSaldoSource.Parameters.ParamByName('source').Value:=source_;
ADOQSaldoSource.Active:=true; //обновление представления с остатками
...//общие параметры для списания
ADOQSaldoSource.First; //первая запись = первая партия товара
saldo:=ADOQSaldoSource.FieldByName('saldo').AsFloat; //количество
...//считываем из ADOQSaldoSource общие данные по накладной
if saldo<=credit then begin
//если количество в партии недостаточное, то запись на расход
//с количеством в партии
ADOCreditRegister.Parameters.ParamByName('credit').Value:=saldo;
credit:=credit-saldo; //уменьшаем следующий расход
end else begin
//иначе запись на расход с оставшимся несписанным количеством
ADOCreditRegister.Parameters.ParamByName('credit').Value:=credit;
credit:=0; //следующего расхода не будет, цикл закончится
end;
ADOCreditRegister.Execute; // формируем запись в таблице register
end; //конец цикла
Приведенная реализация на данный момент успешно функционирует в составе разработанной по заказу информационной системы. Кроме того, она может рассматриваться как общая модель функционирования партионного учета FIFO и быть руководством для программной разработки.
Список литературы:
1.Кондраков Н.П. Бухгалтерский учет: Учебник. М.:ИНФРА-М, 2007. — 592 с.
дипломов
Оставить комментарий