![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Есть еще варианты? [D6, IB6.x]
Mike Kouzmine © (2004-05-19 17:25:00)Задача. Под одной крышей несколько организаций у каждой свой склад, но есть табличка в которой указано какие склады (других организаций) она дополнительно видит. При выписке счета они могут цеплять не только свой товар, но и чужой (если разрешено).
Получается типа
Заголовок
СЛД НОМЕР ОРГАНИЗАЦЯ
1 1 Рога и Копыта
Содержание
СКЛ НОМЕР АРТ НАЗВАНИЕ
1 1 345 Тра-та-та
3 1 222 Пам-па-ра
У организации с номером склада 3 должен сформироваться запрос на товар
Заг.
1 1 Рога и Копыта
Содержание
3 1 222 Пам-па-ра
Сейчас делаю через ХП с ограничением по датам перебором. Или можно (нужно) как-то иначе?
Mike Kouzmine (2004-05-19 18:12:00) [1]Все написал. Все нормально, всем спасибо.
Mike Kouzmine (2004-05-19 18:01:00) [2]Вопрос снят. Сейчас допишу и пусть будет так.
Mike Kouzmine (2004-05-19 17:58:00) [3]Курдль © (19.05.04 17:54) [12] Вопрос не об этом.
Соловьев © (19.05.04 17:44) [6] Примерно так
begin
FOR SELECT STATUS, MOVE, DAT_CREATE, NUM, ORG, TUSER FROM HEADERS
WHERE SCLAD = :SCLAD AND VID = 2 AND DAT_CREATE BETWEEN :DAT_OT AND :DAT_DO
INTO :STATUS, :MOVE, :DAT_CREATE, :NUM, :ORG, :TUSER DO
BEGIN
SELECT COUNT(*) FROM MOVE
WHERE MOVE.NUM = :NUM AND MOVE.SCLAD <> :SCLAD INTO :RECCOUNT;
if (RECCOUNT > 0) then
BEGIN
Дальнейшая обработка
SUSPEND;
END
END
end
-SeM- (2004-05-19 17:54:00) [4]
> А что здесь нечеловеческого
> со своего склада выписал чужой товар
> у каждой своя бухгалтерия и свой склад
[8]
Курдль (2004-05-19 17:54:00) [5]
> А что здесь нечеловеческого.
Да даже названия! Если есть компании - вполне логично завести таблицу "КОМПАНИИ". Несколько складов, причем, как я понимаю, у одной компании может быть не один склад - значит таблица "СКЛАДЫ", имеющая отношение "много-к-одному" к т."КОМПАНИИ". Если есть какой-то товар - пусть себе хранится в таблице "СПРАВОЧНИК_ТОВАРОВ", а к складам привязывается ассоциативной таблицей "ЕСТЬ_НА_СКЛАДЕ".
Ну и т.д.
Mike Kouzmine (2004-05-19 17:48:00) [6]Курдль © (19.05.04 17:45) [8] А что здесь нечеловеческого. Группа компаний под одной крышей, но у каждой своя бухгалтерия и свой склад.
Mike Kouzmine (2004-05-19 17:46:00) [7]Соловьев © (19.05.04 17:44) [6] Сейчас корябую. Да не думаю, что будут проблемы. Вопрос в чем, может быстрее будет запросом одним получить заголовки?
Курдль (2004-05-19 17:45:00) [8]Может все-таки убедить того, кто придумал такую структуру сделать все по-человечески? Или это не реально?
Соловьев (2004-05-19 17:44:00) [9]
> Сейчас делаю через ХП с ограничением по датам перебором.
> Или можно (нужно) как-то иначе?
что уже сделал? покажи
Mike Kouzmine (2004-05-19 17:44:00) [10]Суть в чем. У каждой организации свой склад (один), но необходимо предусмотреть возможность выписки товара и из других складов. При этом на товар с других складов должны формироваться пакеты документов по правилам.
Напрмер
возврат поставщику -> оприходование -> отгрузка или
продажа -> отгрузка
Ты со своего склада выписал чужой товар. По правилу 1 необходимо: чужая организация возвращает товар поставщику, затем он оприходуется на тебя и происходит отгрузка
Соловьев (2004-05-19 17:43:00) [11]
> организаций) она дополнительно видит. При выписке счета
> они могут цеплять не только свой товар, но и чужой (если
> разрешено).
если есть условия то только ХП.
Курдль (2004-05-19 17:41:00) [12]Тогда я - пас! :(
Mike Kouzmine (2004-05-19 17:39:00) [13]ЗАГОЛОВКИ
TABLE HEADERS (
SCLAD INTEGER NOT NULL,
VID INTEGER NOT NULL,
STATUS INTEGER NOT NULL,
MOVE INTEGER NOT NULL,
DAT_CREATE DATE NOT NULL,
DAT_OTGR DATE NOT NULL,
NUM INTEGER NOT NULL,
PARTNER INTEGER DEFAULT 0 NOT NULL,
ORG INTEGER NOT NULL,
SUMMA NUMERIC(15,2) DEFAULT 0 NOT NULL,
SUMMA_OPL NUMERIC(15,2) NOT NULL,
NDS NUMERIC(15,7) DEFAULT 0 NOT NULL,
ZAKAZ INTEGER DEFAULT 0 NOT NULL,
ZAK_STATUS INTEGER DEFAULT 0 NOT NULL,
TUSER INTEGER NOT NULL,
OWNER INTEGER DEFAULT 0 NOT NULL,
DAT_CREAT DATE DEFAULT 'NOW' NOT NULL,
LAST_EDIT DATE DEFAULT 'NOW' NOT NULL,
DAT_IMPORT DATE,
DAT_EXPORT DATE
);
СОДЕРЖАНИЕ
TABLE MOVE (
SCLAD INTEGER NOT NULL,
VID INTEGER NOT NULL,
STATUS INTEGER NOT NULL,
MOVE INTEGER NOT NULL,
DAT_CREATE DATE NOT NULL,
DAT_OTGR DATE NOT NULL,
NUM INTEGER NOT NULL,
PARTNER INTEGER NOT NULL,
ORG INTEGER NOT NULL,
MNUM INTEGER NOT NULL,
GROUPS INTEGER NOT NULL,
ARTICUL VARCHAR(30) NOT NULL COLLATE PXW_CYRL,
NAME VARCHAR(80) NOT NULL COLLATE PXW_CYRL,
ZAKAZ INTEGER DEFAULT 0 NOT NULL,
ZAK_STATUS INTEGER DEFAULT 0 NOT NULL,
CNT NUMERIC(15,2) DEFAULT 0 NOT NULL,
PRICE NUMERIC(15,2) DEFAULT 0 NOT NULL,
ITOG COMPUTED BY (PRICE * CNT),
FROM_SCLAD NUMERIC(15,2) DEFAULT 0 NOT NULL,
FROM_ZAL NUMERIC(15,2) DEFAULT 0 NOT NULL,
GTD VARCHAR(50) COLLATE PXW_CYRL,
COUNTRY INTEGER NOT NULL,
OWNER INTEGER NOT NULL,
DAT_CREAT DATE DEFAULT 'NOW' NOT NULL,
DAT_EXPORT DATE,
LAST_EDIT DATE DEFAULT 'NOW' NOT NULL,
DAT_IMPORT DATE
);
ДОПОЛНИТЕЛЬНЫЕ СКЛАДЫ
TABLE SCLAD_VISIBLE (
SCLAD INTEGER NOT NULL,
SCLAD_VISIBLE INTEGER NOT NULL,
DAT_CREAT DATE DEFAULT 'NOW' NOT NULL,
LAST_EDIT DATE DEFAULT 'NOW' NOT NULL,
DAT_IMPORT DATE,
DAT_EXPORT DATE
);
Курдль (2004-05-19 17:37:00) [14]Ну здесь взрослые люди собрались! Можете говорить открыто:
"Есть таблицы:
ОРГАНИЗАЦИИ"
ОРГ_ИД
ОРГ_ИМЯ
СКЛАДЫ
СКЛ_ИД
ОРГ_ИД
СКЛ_ИМЯ
ТОВАРЫ
ТОВ_ИД
СКЛ_ИД
Так?
Что нужно выбрать?
Johnmen (2004-05-19 17:33:00) [15]Честно говоря, не очень понял.
Можно формализовать задачу ? Структура таблиц, пример данных в них и какой НД надо получить (поля и значения).