Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: XXX Международной научно-практической конференции «Технические науки - от теории к практике» (Россия, г. Новосибирск, 22 января 2014 г.)

Наука: Технические науки

Секция: Информатика, вычислительная техника и управление

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Грибанова-Подкина М.Ю. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ПАРТИОННОГО УЧЕТА FIFO В КЛИЕНТ-СЕРВЕРНОЙ АРХИТЕКТУРЕ // Технические науки - от теории к практике: сб. ст. по матер. XXX междунар. науч.-практ. конф. № 1(26). – Новосибирск: СибАК, 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  с. 

Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.