Научная статья на тему 'Программная реализация партионного учета FIFO в клиент-серверной архитектуре'

Программная реализация партионного учета FIFO в клиент-серверной архитектуре Текст научной статьи по специальности «Экономика и бизнес»

CC BY
135
54
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ИНФОРМАЦИОННАЯ СИСТЕМА / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / FIFO / INFORMATION MODEL / SOFTWARE

Аннотация научной статьи по экономике и бизнесу, автор научной работы — Грибанова-подкина Мария Юрьевна

Рассматривается модель партионного учета по схеме FIFO. Реализация в клиент-серверной архитектуре представлена моделью базы данных и клиентскими компонентами, осуществляющими регистрацию поставок и расхода товара.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

SOFTWARE DEVELOPMENT OF BATCH ACCOUNTING FIFO IN CLIENT-SERVER ARCHITECTURE

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 в клиент-серверной архитектуре»

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ПАРТИОННОГО УЧЕТА FIFO В КЛИЕНТ-СЕРВЕРНОЙ АРХИТЕКТУРЕ

Грибанова-Подкина Мария Юрьевна

канд. физ.-мат. наук, доцент кафедры прикладной информатики Балашовского института Саратовского государственного университета им.

Н.Г. Чернышевского, РФ, г. Балашов E-mail: m.gribanova-podkina@.rambler. ru

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 invoiceitem.idinvoice as invoice, register.invoiceitem,

register.source, sum(debet)-sum(credit) as saldo

from register, invoice_item

where register. invoiceitem =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, outgoitemtype, outgoitem, debet, credit) values

(: invoice,: invoiceitem,: source,: outgoitemtype,: outgoitem,: 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 с.

i Надоели баннеры? Вы всегда можете отключить рекламу.