Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Отчет по запросу информации из СМ+ о возвратах поставщику и их номера контрактов : Супермаг Плюс (Супермаг 2000)

29.03.2024 10:39


23.01.2015 12:43
vdm
 
Так как у вас основания в накладных проставляются.
На каждую позицию спецификации (основание для товародвижения) или одно общее основание на весь документ?
Для поартикульных оснований не вижу смысла возиться, выше правильно расписали - там по каждой позиции свой контракт может вылезти.
Для общих оснований посмотрю на выходных.
23.01.2015 12:49
Aligator
 
Цитата:
vdm Так как у вас основания в накладных проставляются.
На каждую позицию спецификации (основание для товародвижения) или одно общее основание на весь документ?
Для поартикульных оснований не вижу смысла возиться, выше правильно расписали - там по каждой позиции свой контракт может вылезти.
Для общих оснований посмотрю на выходных.
А если поартикульно смотреть только на последний активный контракт ?
23.01.2015 12:55
vdm
 
В исходных условиях в результате требовалось
расход - контракт

с детализацией по позициям будет
расход - артикул1 - контракт
расход - артикул2 - контракт2
и т.д.
26.01.2015 10:01
vdm
 
Ну вот такое.
Т.е. не последний контракт, а строго по цепочке оснований.
Не вникал подробно в ситуацию, когда в основании прихода несколько заказов или в основании заказа несколько соглашений о поставке, поставил примитивный отбор по совпадению артикулов.
Статусы документов не проверяются.

Код:
SELECT t2.wo_id, t2.article, t2.wi_id, t2.or_id, t2.cq_id, 
       (SELECT d_cq.docco  
          FROM supermag.svdocnopricecq d_cq
         WHERE d_cq.doctype = 'CQ' AND d_cq.id = t2.cq_id
       ) co_id  
  FROM (
        SELECT t1.wo_id, t1.article, t1.wi_id, t1.or_id, 
               (SELECT MIN(b_cq.baseid) KEEP (DENSE_RANK FIRST ORDER BY s_cq.article ASC NULLS LAST)  
                  FROM supermag.smcommonbases b_cq, supermag.smspec s_cq
                 WHERE b_cq.doctype = 'OR' AND b_cq.id = t1.or_id AND b_cq.basedoctype = 'CQ'
                   AND s_cq.doctype(+) = b_cq.basedoctype AND s_cq.docid(+) = b_cq.baseid AND s_cq.article(+) = t1.article
               ) cq_id  
          FROM (
                SELECT s.docid wo_id, s.article, s.causeid wi_id,
                       (SELECT MIN(b_or.baseid) KEEP (DENSE_RANK FIRST ORDER BY s_or.article ASC NULLS LAST) or_id  
                          FROM supermag.smcommonbases b_or, supermag.smspec s_or
                         WHERE b_or.doctype = s.causetype AND b_or.id = s.causeid AND b_or.basedoctype = 'OR'
                           AND s_or.doctype(+) = b_or.basedoctype AND s_or.docid(+) = b_or.baseid AND s_or.article(+) = s.article
                       ) or_id  
                  FROM supermag.smdocuments d, supermag.smspec s
                 WHERE s.doctype = 'WO' 
                   AND d.opcode = 2
                   AND d.docstate = 3
                   AND d.locationfrom = :P_LOC
                   AND d.createdat BETWEEN :P_DATEFROM AND :P_DATETO
                   AND s.docid=d.id AND s.doctype=d.doctype
               ) t1
       ) t2
;
Часовой пояс GMT +3, время: 10:39.

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