16.07.2007 11:21
dmware
 
Вот такой вот вопрос.
Мне нужно отобрать все возвраты по документам.
Пытаюсь разобраться. Например: имела место операция продажи по документам в одном из магазинов (расходная накладная за таким-то номером, код операции 1 - продажа).
В документах я ее нахожу. Далее мне говорят, что был возврат этого товара - как следствие наличия брака.
Как мне узнать, действительно ли был возврат? Где и что посмотреть?
16.07.2007 11:30
dmware
 
Следующим запросом нахожу расходные накладные. Код операции у всех 1. Продажа. Просветите меня пожалуйста, как теперь учесть только возвраты по документам?
Код:
SELECT  SACARDCLASS_TREE as "Код узла", 
        SACARDCLASS_NAME as "Классификатор", 
        SMCARD_ARTICLE as "Артикул", 
        SMCARD_NAME as "Полное наименование",  
        SUM(SMSPEC_QUANTITY) as "Количество",  
        SUM(SMSPEC_TOTALPRICE) as "Сумма_реализации",

        round(SUM(SMSPEC_QUANTITY)/(to_date('30.06.2007', 'DD.MM.YYYY') - to_date('01.04.2007', 'DD.MM.YYYY') + 1), 3)  as "Ср сут реализация_Количество", 
        round(SUM(SMSPEC_TOTALPRICE)/(to_date('30.06.2007', 'DD.MM.YYYY') - to_date('01.04.2007', 'DD.MM.YYYY') + 1), 2) as "Ср сут реализация_Сумма",

        STORELOCATION as "Место хранения",
        SMDOCUMENTS_OPCODE as "Код операции",
        SMDOCUMENTS_ID as "Номер документа"
FROM   (
       SELECT  SACARDCLASS.TREE SACARDCLASS_TREE, 
               SACARDCLASS.NAME SACARDCLASS_NAME, 
               SMCARD.ARTICLE SMCARD_ARTICLE, 
               SMCARD.NAME SMCARD_NAME, 
               SMSPEC.QUANTITY SMSPEC_QUANTITY, 
               SMDOCUMENTS.ID SMDOCUMENTS_ID, 
               SMSPEC.TOTALPRICE SMSPEC_TOTALPRICE, 
               SMDOCUMENTS.CREATEDAT SMDOCUMENTS_CREATEDAT, 
               NVL(SMDOCUMENTS.LOCATIONTO, SMDOCUMENTS.LOCATIONFROM) STORELOCATION,
               SMDOCUMENTS.OPCODE SMDOCUMENTS_OPCODE
               
       FROM    SACARDCLASS, 
               SMCARD, 
               SMSPEC, 
               SMDOCUMENTS 
       WHERE   SACARDCLASS.ID = SMCARD.IDCLASS 
               AND SMSPEC.DOCTYPE = SMDOCUMENTS.DOCTYPE 
               AND SMSPEC.DOCID = SMDOCUMENTS.ID 
               AND SMSPEC.ARTICLE = SMCARD.ARTICLE                 
               AND SMDOCUMENTS.DOCSTATE = 3

               AND SMSPEC.Article IN(
                                     SELECT  SMCARD.ARTICLE 
                                     FROM    SMCARD, 
                                             SACARDCLASS 
                                     WHERE   SMCARD.IDCLASS = SACARDCLASS.ID 
                                             AND SACARDCLASS.TREE LIKE '16.%'  
                                     )                                     

               AND SMDOCUMENTS.CREATEDAT >= to_date('01.04.2007', 'DD.MM.YYYY') 
               AND SMDOCUMENTS.CREATEDAT <= to_date('30.06.2007', 'DD.MM.YYYY')

               AND NVL(SMDOCUMENTS.LOCATIONTO, SMDOCUMENTS.LOCATIONFROM) IN(22)          
               AND SMDOCUMENTS.DOCTYPE IN('WO')

       ORDER BY SMCARD.ARTICLE 
       ) 
GROUP BY SACARDCLASS_TREE, 
         SACARDCLASS_NAME, 
         SMCARD_ARTICLE, 
         SMCARD_NAME, 
         STORELOCATION,
         SMDOCUMENTS_OPCODE,
         SMDOCUMENTS_ID  
ORDER BY SMDOCUMENTS_ID ASC
16.07.2007 12:20
akonev
 
для этого надо, чтобы они как-то отличались в Супермаге.
например, развести их по пользовательским операциям.
тогда и в запросе надо будет дописать код пользовательской операции.
если же для Супермага это просто расход - никак не выделишь.
16.07.2007 12:29
Mtirt
 
Я бы смотрела в сторону ffmaprep.
Там для каждого расхода уже подобрано основание - приходная накладная, соотвественно можно, отобрав по этому основанию строки посмотреть, что и когда возвращалось.
16.07.2007 13:24
dmware
 
Цитата:
Mtirt Я бы смотрела в сторону ffmaprep.
Там для каждого расхода уже подобрано основание - приходная накладная, соотвественно можно, отобрав по этому основанию строки посмотреть, что и когда возвращалось.
Можно чуть подробнее? Я сделал выборку по id конкретного документа из FFMAPREP. И, если Супермаг мне основание не показывал, то здесь я его вижу:
Код:
SELECT SALEID, INCOMEID FROM FFMAPREP
WHERE SALEID LIKE '0РН8700742'
Получаю две строки с одним SALEID и разными INCOMEID.
По данной расходной накладной были возвращены два вида товаров, потому присутствуют две приходные накладные (на основании заказа поставщику в магазин приходит товар (две приходные накладные). Потом он возвращается (один расходник)).
Далее... как использовать эту информацию? Как отделить непосредственно возвраты от продажи?
16.07.2007 13:28
dmware
 
Цитата:
Andrew_Konev для этого надо, чтобы они как-то отличались в Супермаге.
например, развести их по пользовательским операциям.
тогда и в запросе надо будет дописать код пользовательской операции.
если же для Супермага это просто расход - никак не выделишь.
А что подразумевается под пользовательской операцией? Поле UserOP в данной строке - пустое.
Я знаю, что OPCODE - код системной операции - определяет конкретную операцию (опытным путем выяснено, что 1- есть продажа).
16.07.2007 13:43
Mtirt
 
Разделы - Настройка-Справочники-Виды операций.

И там всё написано про OPCODE.
16.07.2007 14:02
dmware
 
Цитата:
Mtirt Разделы - Настройка-Справочники-Виды операций.

И там всё написано про OPCODE.
Извиняюсь, виноват:)
Часовой пояс GMT +3, время: 16:56.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.