• Ласкаво просимо на Спільнота для обміну досвідом між користувачами програм УкрБланк, УкрСклад, УкрЗарплата.
 

Движение товара по складу с разделением по типу документов по приходу и расходу

Автор Horis, Вересень 05, 2008, 09:07:42

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Horis

Можно ли создать очет по движению товара по складу с разделением по типу документов по приходу и расходу
Разделить колонку приход на две - движение товара по накладной на перемещение и движение товара по приходной накладной.
Аналогично разделить колонку расход на три - движение товара по расходной накладной, движение товара по акту списания
и движение товара по накладной на перемещение.
Если мы имеем несколько складов по одной фирме нам нужно для контроля истинного расхода и прихода из вне этот отчет.

admin

Если Вас это устроит мы можем написать скрипт как сделать 3 отдельных отчета по приходам, передвижениям и ввод остатков.

Horis


admin

Цитата: Horis від Вересень 09, 2008, 11:24:24
Спасибо за помощь. Жду ответа со скриптами.

Думал будет проще :), давайте попробуем.

Внимаение все скрипты копируйте и вставляйте при включенной русской раскладке, не английской

Выполняете след скрипт в SQL менеджере:

CREATE PROCEDURE USR_SKLAD_VIEW_1_1 (
    doc_type_id1 INTEGER,
    doc_type_id2 INTEGER,
    sklad_id INTEGER,
    date_from DATE,
    date_to DATE)
RETURNS (
    num INTEGER,
    z_kolvo DOUBLE PRECISION,
    z_suma DOUBLE PRECISION,
    to_kolvo DOUBLE PRECISION,
    to_cena DOUBLE PRECISION,
    to_suma DOUBLE PRECISION,
    from_kolvo DOUBLE PRECISION,
    from_cena DOUBLE PRECISION,
    from_suma DOUBLE PRECISION)
AS
DECLARE VARIABLE date_last_fix DATE;
BEGIN
  date_last_fix = '1900.01.01';
  /*Nachalnie ostatki*/
  FOR
    SELECT
      tovar_id AS num,
      kolvo AS z_kolvo,
      suma AS z_suma,
      CAST(NULL AS DOUBLE PRECISION) AS to_kolvo,
      CAST(NULL AS DOUBLE PRECISION) AS to_cena,
      CAST(NULL AS DOUBLE PRECISION) AS to_suma,
      CAST(NULL AS DOUBLE PRECISION) AS from_kolvo,
      CAST(NULL AS DOUBLE PRECISION) AS from_cena,
      CAST(NULL AS DOUBLE PRECISION) AS from_suma
    FROM
      tovar_zal_fix
    WHERE
      sklad_id=:sklad_id AND fdate=:date_last_fix
    INTO :num,:z_kolvo,:z_suma,:to_kolvo,:to_cena,:to_suma,:from_kolvo,:from_cena,:from_suma
  DO
  SUSPEND;
  /*Dobavlennie ostatki*/
    FOR
    /*Dobavlennie ostatki - Prihod*/
    SELECT
      t.tovar_id AS num,
      SUM(t.to_kolvo) AS z_kolvo,
      SUM(t.to_suma) AS z_suma,
      CAST(NULL AS DOUBLE PRECISION) AS to_kolvo,
      CAST(NULL AS DOUBLE PRECISION) AS to_cena,
      CAST(NULL AS DOUBLE PRECISION) AS to_suma,
      CAST(NULL AS DOUBLE PRECISION) AS from_kolvo,
      CAST(NULL AS DOUBLE PRECISION) AS from_cena,
      CAST(NULL AS DOUBLE PRECISION) AS from_suma
    FROM
      tovar_move t, tovar_zal z
    WHERE
      (t.doc_type_id = :doc_type_id1 OR t.doc_type_id = :doc_type_id2) AND t.doc_type_id != 6 AND t.tovar_id=z.tovar_id AND z.sklad_id=:sklad_id AND to_sklad_id=:sklad_id AND mdate>:date_last_fix AND mdate<:date_from
    GROUP BY t.tovar_id
    UNION
    /*Dobavlennie ostatki - Rashod*/
    SELECT
      t.tovar_id AS num,
      SUM(t.from_kolvo)*(-1) AS z_kolvo,
      SUM(t.from_suma)*(-1) AS z_suma,
      CAST(NULL AS DOUBLE PRECISION) AS to_kolvo,
      CAST(NULL AS DOUBLE PRECISION) AS to_cena,
      CAST(NULL AS DOUBLE PRECISION) AS to_suma,
      CAST(NULL AS DOUBLE PRECISION) AS from_kolvo,
      CAST(NULL AS DOUBLE PRECISION) AS from_cena,
      CAST(NULL AS DOUBLE PRECISION) AS from_suma
    FROM
      tovar_move t, tovar_zal z
    WHERE
      (t.doc_type_id = :doc_type_id1 OR t.doc_type_id = :doc_type_id2) AND t.doc_type_id != 6 AND t.tovar_id=z.tovar_id AND z.sklad_id=:sklad_id AND t.from_sklad_id=:sklad_id AND t.mdate>:date_last_fix AND t.mdate<:date_from
    GROUP BY t.tovar_id
    INTO :num,:z_kolvo,:z_suma,:to_kolvo,:to_cena,:to_suma,:from_kolvo,:from_cena,:from_suma
  DO
  SUSPEND;
  FOR
    /*Prihod*/
    SELECT
      t.tovar_id AS num,
      CAST(NULL AS DOUBLE PRECISION) AS z_kolvo,
      CAST(NULL AS DOUBLE PRECISION) AS z_suma,
      SUM(t.to_kolvo) AS to_kolvo,
      AVG(t.to_cena) AS to_cena,
      SUM(t.to_suma) AS to_suma,
      CAST(NULL AS DOUBLE PRECISION) AS from_kolvo,
      CAST(NULL AS DOUBLE PRECISION) AS from_cena,
      CAST(NULL AS DOUBLE PRECISION) AS from_suma
    FROM
      tovar_move t, tovar_zal z
    WHERE
      (t.doc_type_id = :doc_type_id1 OR t.doc_type_id = :doc_type_id2) AND t.doc_type_id != 6 AND t.tovar_id=z.tovar_id AND z.sklad_id=:sklad_id AND t.to_sklad_id=:sklad_id AND t.mdate>=:date_from AND t.mdate<=:date_to
    GROUP BY t.tovar_id
    UNION
    /*Rashod*/
    SELECT
      t.tovar_id AS num,
      CAST(NULL AS DOUBLE PRECISION) AS z_kolvo,
      CAST(NULL AS DOUBLE PRECISION) AS z_suma,
      CAST(NULL AS DOUBLE PRECISION) AS to_kolvo,
      CAST(NULL AS DOUBLE PRECISION) AS to_cena,
      CAST(NULL AS DOUBLE PRECISION) AS to_suma,
      SUM(t.from_kolvo) AS from_kolvo,
      AVG(t.from_cena) AS from_cena,
      SUM(t.from_suma) AS from_suma
    FROM
      tovar_move t, tovar_zal z
    WHERE
      (t.doc_type_id = :doc_type_id1 OR t.doc_type_id = :doc_type_id2) AND t.doc_type_id != 6 AND t.tovar_id=z.tovar_id AND z.sklad_id=:sklad_id AND t.from_sklad_id=:sklad_id AND t.mdate>=:date_from AND t.mdate<=:date_to
    GROUP BY t.tovar_id
    INTO :num,:z_kolvo,:z_suma,:to_kolvo,:to_cena,:to_suma,:from_kolvo,:from_cena,:from_suma
  DO
  SUSPEND;
END


Как делать отчет на основе другого?
1. Заходим в меню "Отчеты" и открываем нужный нам отчет.
2. Потом нажимаем на кнопку "В режим редактирования", и раскрываем
окно на максимум (так будет удобней)
3. В открывшемся окне в полях "Название по-украински" и "Название
по-русски", меняем или дописываем название для будущего отчета.
4. Далее меняем или правим в окне SQL запрос текст SQL запроса к базе
данных.
5. Если надо включаем в "Выбор нужных параметров для отчета" галочки
что надо выбирать перед формированием отчета, а что нет.
6. Нажимаем кнопку "Сохранить как новый", и закрываем окно.
7. Далее заходим обратно в меню "Отчеты" и ищем имя отчета которое вы
задали в п.3 Открываем его и запускаем, если надо правим печатную форму.

Мы используем отчет "Движение товара по складу" как базу

Для расходных/приходных:
меняем в п.4 с
  sklad_view_1(#склад_№#,'#дата_с#','#дата_по#') s,
на
  usr_sklad_view_1_1(1,8,#склад_№#,'#дата_с#','#дата_по#') s,

Для остатка/списания:
меняем в п.4 с
  sklad_view_1(#склад_№#,'#дата_с#','#дата_по#') s,
на
  usr_sklad_view_1_1(9,11,#склад_№#,'#дата_с#','#дата_по#') s,

Для перемещения:
меняем в п.4 с
  sklad_view_1(#склад_№#,'#дата_с#','#дата_по#') s,
на
  usr_sklad_view_1_1(10,10,#склад_№#,'#дата_с#','#дата_по#') s,


Petryk

Уменя проблема другово плана. Нужен фильтр по товару и по клиенту. Створив новий звіт. поставив галочку для вибору кліента. А в звіті все одно кидаєвесь перелікруху товара за період......Поможіть

По всіх клієнтах

Horis

Выполняю Ваш скрипт в SQL менеджере и получаю такое сообщение:
SQL error code = -104
Token unknown - line 37, char 10
?.
Жду ответа...

admin

Цитата: Horis від Вересень 22, 2008, 14:51:33
Выполняю Ваш скрипт в SQL менеджере и получаю такое сообщение:
SQL error code = -104
Token unknown - line 37, char 10
?.
Жду ответа...

Ошибка при вводе скрипта, копируйте и вставляйте скрипт полностью, только с включенной русской раскладкой и ничего сами не изменяйте?

Horis

Вставляю текст Вашего скрипта.
Выдается одно и то же сообщение.
Не хочет видет символ двоеточия : после выражения INTO, выдает ошыбку. После удаления двоеточия
дает ошыбку на следующем двоеточии. Пробывал ввести другое - та же самая ошыбка.
Может Вы что-то подскажите...

admin

Повторно:
Копируйте и вставляйте скрипт полностью, только с включенной русской раскладкой и ничего сами не изменяйте?

Horis

Ничего не меняю, копирую и вставляю скрип со включенной русской раскладкой,
все равно выдает сообщение об ошыбке.


admin

Не может быть, проверили все работает, сохранили скрипт прикрепленный файл, пробуйте из него копировать.

Ника

Я тоже пыталась сделать такой же отчет(он мне подходит), затем скопировала все из прикрепленного файла и программа все равно выдает:

SQL error code = -104
Token unknown - line 37, char 10
?.

admin

Ну если и так не проходит тогда, еще один способ:

1. Выйдите из программы
2. Перекопируйте прилагаемый файл 999 в подпапку /db/patch/
3. Запустите программу.
4. Выйдите из программы
5. Удалите файл 999 из подпапки /db/patch_ok/
6. Продолжайте работу по инструкции, считайте "Выполняете след скрипт в SQL менеджере" выполнено.

Horis


Lyudasiya

помогите и мне сделать такой отчет. У меня не получается, выдает след:
Dynamic SQL Error
SQL error code=-204
procedure unknown
USR_SKLAD_VIEV_1_1
At line 23, column 56