powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / организация учета на складе
5 сообщений из 5, страница 1 из 1
организация учета на складе
    #34363160
bev84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Прощу помощи по организации слада. Прочитал много постов на форуме и появились следующие вопросы:
на фирму приходят от поставщиков - материал, комплектующие, детали. Для каждой состовляющей необходимо создавать свои таблицы складов, движения и тд., так?
как я вижу, будут слудующие таблицы:
1. справочник материалов, справочник комплектующих и деталей.
2. склады - (код склада, наименование, доп. инфо)
в ней я буду хранить список складов: поставщик, склад материалов, склад комплектующих, деталей, переходящие склады производства и тд. С производственным складом свои заморочки, сюда поступают со всех складов и матнериал и компл. и тд, в процессе производства появляется продукция, которая может уходить со склада в цеха доработок и возвращяться обратно как другая продукция, как учесть это?
3. движение материала - (дата поступления, код документа о приходе, код склада откуда, код склада куда, код операции, код товара, количество, реальная цена)
такая же таблица будет и для комплектующих и для деталей. Вопрос, как мне производить расчет остатков при такой структуре? суммировать все по приходу и отнимать все по расходу? видел варинат создания отдельной таблицы для остатков, как правильно?
4. документация - (код док, наименование, номер, код поставщика, дата)
5. операции - (приход, расход, ...)
6. поставщики - (код, наименование)

Заранее благодарен!
...
Рейтинг: 0 / 0
организация учета на складе
    #34363255
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам в подфорумы "Проектирвоание БД" или "Разработка ИС", там использовать можно поиск по "складу", топиков море.
...
Рейтинг: 0 / 0
организация учета на складе
    #34363270
bev84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сорри за пост не в ту ветку!
...
Рейтинг: 0 / 0
организация учета на складе
    #34365517
cuvashi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю такой вариант

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
--Справочник Номенклатура
create table r_product
(
 id integer not null,
 prod_name  varchar( 80 ),
 type_id integer, -- изделия,комплектующие,прочее
 primary key(id)
)
--Справочник Клиенты 
create table r_client
(
 id integer not null,
 client_name  varchar( 80 ),
 type_id integer, --внешние клиенты,склады,сотрудники,прочее
 primary key(id)
)

--Таблица Операции 
create table r_operation
(
 id integer not null,
 num_oper    integer, -- номер накладной
 date_oper   date,    --дата накладной
 debet_id integer, -- Куда ссылка на r_client
 credit_id integer, -- Откуда  ссылка на r_client
 primary key(id)
)

--Таблица Документы

create table r_document
(
 id integer not null,
 oper_id     integer, -- ссылка на r_operation
 prod_id     integer,
 amount  decimal( 15 , 3 ),-- количество
 primary key(id)
)


--Расчет остатков и оборотов по Складу
--Все упрощенно,только идеи.
--Остаток продукта на дату по складу
create procedure r_rest_prod(rep_date date,client_id integer,prod_id integer)
returns (amount decimal( 15 , 3 ))
as
begin
 for select 
      sum(case when debet_id=:client_id then b.amount else -b.amount end),
        from r_operation a,r_document b
         where a.id=b.oper_id 
          and  (a.debet_id=:client_id or a.credit_id=:client_id)
          and a.date_oper<:rep_date and b.prod_id=:prod_id
           into :amount
             do suspend;
end;
#

-- Обороты по складу
create procedure r_turnover_whouse (client_id integer,start_date date,end_date date)
returns (prod_id integer,prod_name varchar( 80 ),
in_amount decimal( 15 , 3 ),debet_amount decimal( 15 , 3 ),credit_amount decimal( 15 , 3 ),
out_amount decimal( 15 , 3 )
)
as
begin
 for select id,prod_name 
    from man_product
      order by c.prod_name
       into :prod_id,:prod_name
     do
     begin
     in_amount= 0 ;debet_amount= 0 ;credit_amount= 0 ;out_amount= 0 ;
      
     execute procedure r_rest_prod start_date,client_id,prod_id returning_values in_amount;
      
     select 
      sum(case when debet_id=:client_id then b.amount else  0  end),
      sum(case when credit_id=:client_id then b.amount else  0  end),
        from man_operation a,man_document b
         where a.id=b.oper_id 
          and  (a.debet_id=:client_id or a.credit_id=:client_id)
           and a.date_oper>=:start_date and a.date_oper<=:end_date and prod_id=:prod_id
            into :debet_amount,:credit_amount;
       out_amount=in_amount+debet_amount-credit_amount;
       suspend;            
    end
    
end
#

--Для знания текущего остатка.
--обновления данных в этой таблице происходит в триггерах 
--для таблиц r_document (after insert,update,delete)
--или r_operation (after update,когда debet_id,credit_id 
--ввели ошибочно и изменили после вставки документов)

create table man_whouserest
(
  id integer not null, 
  whouse_id   integer, -- клиенты у которых тип Склад
  prod_id     integer, -- ссылка на r_product
  rest  decimal( 15 , 3 ),
  primary key(id)
);
...
Рейтинг: 0 / 0
организация учета на складе
    #34367316
Фотография shelsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОЧЕНЬ-ОЧЕНЬ ГРУБО:
----------------------

Основные операции:
1) Приход
- прибытие на склад из внешнего источника
- закупка
- брак
- ...
- прибытие на склад из другого склада (там парная операция расхода)
- прибытие с производственного склада (несколько операций расхода в т. ч.
с разных складов грубо
РАСХОД(1 пробка + 1 бутылка + 0.5 пива) = ПРИХОД (бутылка пива)
ЦЕНА(1 пробка + 1 бутылка + 0.5 пива) + ИЗДЕРЖКИ = ЦЕНА (бутылка пива)
2) Расход
- убытие во внешний источник
- продажа
- брак
- ....
- убытие другой склад (там парная операция расхода)
- убытие на производственный склад (см. аналогичное прибытие)
3) Остаток
- всего единиц данного вида
- всего единиц данного вида на конкретном складе
- всего единиц данного вида конкретной партии

------------------------------------------------------------------------------------
1. Дополнительно необходимо учесть объединение единиц данного вида из нескольких партий в одну
2. Во операциях есть поставщик и потребитель, только где-то он внешний (лицо, организация), где-то внутрений (склад) - одна таблица
3. Классификатор товаров - одна таблица
4. Движение - одна таблица (товар, дата, приход, расход, количество, документ)
5. Накладные - одна таблица (поставщик, потребитель, документ)

"отдельной таблицы для остатков" как пожелаете, можно сначала сделать и "стартовый приход",
но обычно делают, причем часто не только со стартовым ... (текущий, конец квартала, брак и т.д.)





_______________________________________________________________________________
... Как что достать - вторая эскадрилья. А как самолеты сбивать - первая эскадрилья ...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / организация учета на складе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]