-
Notifications
You must be signed in to change notification settings - Fork 0
/
Задание.txt
77 lines (64 loc) · 4.64 KB
/
Задание.txt
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
=== Начало ========================
Представим, что где-то, существует небольшая фирма торгующая медикаментами.
В фирме существуют 3 независимых склада, на которые может соответственно осуществляться приход и расход товара.
Приход осуществляется документом "Приход", расход документом "Расход". Причем в момент расхода должен производиться
контроль на отрицательный остаток, в случае если хоть по одной позиции будет отрицательный остаток, транзакция
должна быть отменена с ошибкой. В пояснение ошибки должны быть указаны причины отмены транзакции.
Также приход товара возможен в валюте, которая внутри системы пересчитывается в соответствие с текущим курсом.
Текущий курс валюты, на каждый день, хранится в системе. То есть, при записи сегодня приходного документа 7 дневной
давности, курс должен браться 7 дневной давности.
Сущность "товар" состоит из следующих полей
- Наименование
- Цена продажи
Сущность "валюта"
- Наименование
Сущность "курсы валют"
- Валюта
- Дата
- Курс
Сущность "склад"
- Наименование
Сущность "организация"
- Наименование
Сущность "приход" состоит из следующих полей
- №
- дата
- склад
- валюта
- продавец (организации)
детализация прихода
- № строки
- товар
- кол-во
- цена
- сумма
Сущность "расход"
- №
- дата
- склад
- покупатель (организация)
детализация
- № строки
- товар
- кол-во
- цена
- сумма
Складской учет ведется в разрезе "Склад","Товар" по "Сумме" и "Количеству". Сумма - рублевая.
При приходе товара, на склад записывается количество и сумма указанная в детализации прихода. Сумма пересчитывается
в рублевую исходя из курса валюты на дату прихода.
При расходе списывается указанное количество в детализации "Расхода". Сумма списывается по средней цене.
То есть "Сумма к списанию = Количество в расходе * (Остаток суммы на складе/Количество остатка товара на складе)".
Задача
1. Создать таблички соответствующие описанным сущностям.
2. Заполнить тестовыми данными.
3. Придумать и реализовать систему хранения остатков по складскому учету.
4. Реализовать систему хранимых процедур, которые будут выполнять роль интерфейса между клиентской программой
и серверной частью. Как вариант, возможна (и наверное желателен) реализация хранимых процедур типа Save_Income
и Save_Outcome, которые на входе будут получать XML документ с сущностью "Приход" или "Расход". И соответственно
вся логика по списанию и написанию на остатки склада будут реализована внутри этих процедур.
XML например может быть такого вида
<Income Num="1" DocDate="10-10-2003T00:00:00" StorageID="1" CurrencyID="2" SellerID="123">
<Line Num="1" WaresID="5" Count="3" Price="4535.4" Sum="13606.2"/>
<Line Num="2" WaresID="43" Count="2" Price="11" Sum="22"/>
</Income>
для сущности "Расход" что либо похожее.