Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизЕсть еще варианты? Найти похожие ветки
← →
Mike Kouzmine © (2004-05-19 17:25) [0]Задача. Под одной крышей несколько организаций у каждой свой склад, но есть табличка в которой указано какие склады (других организаций) она дополнительно видит. При выписке счета они могут цеплять не только свой товар, но и чужой (если разрешено).
Получается типа
Заголовок
СЛД НОМЕР ОРГАНИЗАЦЯ
1 1 Рога и Копыта
Содержание
СКЛ НОМЕР АРТ НАЗВАНИЕ
1 1 345 Тра-та-та
3 1 222 Пам-па-ра
У организации с номером склада 3 должен сформироваться запрос на товар
Заг.
1 1 Рога и Копыта
Содержание
3 1 222 Пам-па-ра
Сейчас делаю через ХП с ограничением по датам перебором. Или можно (нужно) как-то иначе?
← →
Johnmen © (2004-05-19 17:33) [1]Честно говоря, не очень понял.
Можно формализовать задачу ? Структура таблиц, пример данных в них и какой НД надо получить (поля и значения).
← →
Курдль © (2004-05-19 17:37) [2]Ну здесь взрослые люди собрались! Можете говорить открыто:
"Есть таблицы:ОРГАНИЗАЦИИ
"
ОРГ_ИД
ОРГ_ИМЯ
СКЛАДЫ
СКЛ_ИД
ОРГ_ИД
СКЛ_ИМЯ
ТОВАРЫ
ТОВ_ИД
СКЛ_ИД
Так?
Что нужно выбрать?
← →
Mike Kouzmine © (2004-05-19 17:39) [3]ЗАГОЛОВКИ
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:41) [4]Тогда я - пас! :(
← →
Соловьев © (2004-05-19 17:43) [5]
> организаций) она дополнительно видит. При выписке счета
> они могут цеплять не только свой товар, но и чужой (если
> разрешено).
если есть условия то только ХП.
← →
Соловьев © (2004-05-19 17:44) [6]
> Сейчас делаю через ХП с ограничением по датам перебором.
> Или можно (нужно) как-то иначе?
что уже сделал? покажи
← →
Mike Kouzmine © (2004-05-19 17:44) [7]Суть в чем. У каждой организации свой склад (один), но необходимо предусмотреть возможность выписки товара и из других складов. При этом на товар с других складов должны формироваться пакеты документов по правилам.
Напрмер
возврат поставщику -> оприходование -> отгрузка или
продажа -> отгрузка
Ты со своего склада выписал чужой товар. По правилу 1 необходимо: чужая организация возвращает товар поставщику, затем он оприходуется на тебя и происходит отгрузка
← →
Курдль © (2004-05-19 17:45) [8]Может все-таки убедить того, кто придумал такую структуру сделать все по-человечески? Или это не реально?
← →
Mike Kouzmine © (2004-05-19 17:46) [9]Соловьев © (19.05.04 17:44) [6] Сейчас корябую. Да не думаю, что будут проблемы. Вопрос в чем, может быстрее будет запросом одним получить заголовки?
← →
Mike Kouzmine © (2004-05-19 17:48) [10]Курдль © (19.05.04 17:45) [8] А что здесь нечеловеческого. Группа компаний под одной крышей, но у каждой своя бухгалтерия и свой склад.
← →
-SeM- (2004-05-19 17:54) [11]
> А что здесь нечеловеческого
> со своего склада выписал чужой товар
> у каждой своя бухгалтерия и свой склад
[8]
← →
Курдль © (2004-05-19 17:54) [12]
> А что здесь нечеловеческого.
Да даже названия! Если есть компании - вполне логично завести таблицу "КОМПАНИИ". Несколько складов, причем, как я понимаю, у одной компании может быть не один склад - значит таблица "СКЛАДЫ", имеющая отношение "много-к-одному" к т."КОМПАНИИ". Если есть какой-то товар - пусть себе хранится в таблице "СПРАВОЧНИК_ТОВАРОВ", а к складам привязывается ассоциативной таблицей "ЕСТЬ_НА_СКЛАДЕ".
Ну и т.д.
← →
Mike Kouzmine © (2004-05-19 17:58) [13]Курдль © (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
← →
Mike Kouzmine © (2004-05-19 18:01) [14]Вопрос снят. Сейчас допишу и пусть будет так.
← →
Mike Kouzmine © (2004-05-19 18:12) [15]Все написал. Все нормально, всем спасибо.
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.03 c