[ОТВЕТИТЬ]
13.07.2007 15:10
nekrom@nt.grave
 
что означают значения в docstate?
13.07.2007 15:21
Dim
 
Статус документа
13.07.2007 15:24
nekrom@nt.grave
 
это я читал, какое значение что означает?
13.07.2007 15:27
Pyatak
 
1 - черновик
2 - принято в количестве
3 - принято в количестве и ценах

а 0 - вроде как "документ заблокирован",
хотя это надо проверить
13.07.2007 15:33
OlegON
 
можно не проверять, так и есть.
13.07.2007 16:55
nekrom@nt.grave
 
Код:
SELECT c.article as "Артикул",
       c.name as "Наименование",
       NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0) as "Остаток",
       NVL((NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0))*NVL(p.price,0),0) as "$$$"
  FROM supermag.smcard c,
       supermag.smgoods q,
       supermag.sacardclass cc,
       supermag.smpricehistory p,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity,
               SUM(dc.itemprice) as price
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate=3
           AND TO_DATE(d.createdat) >= ('01.07.2007')
           AND d.locationto = (2)
        GROUP BY dc.article
       ) pr,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity,
               SUM(dc.itemprice) as price
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate=3
           AND TO_DATE(d.createdat) >= ('01.07.2007')
           AND d.locationfrom = (2)
        GROUP BY dc.article
       ) rs
 WHERE c.article=pr.article(+)
   AND c.article=rs.article(+)
   AND c.article=q.article(+)
   --AND c.accepted=1--active cards
   AND q.storeloc(+)=(2)
   AND c.idclass=cc.id(+)
   AND p.storeloc(+)=(2)
   AND p.pricetype(+)=0
   AND p.eventtime=(select max(eventtime) from supermag.smpricehistory where eventtime <= to_date('01.07.2007','DD.MM.YYYY') and storeloc = q.storeloc and article = q.article)
   AND p.article(+)=c.article
   AND cc.tree like '1.1.1.%'
   AND (NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0))>=0-- > 0 condition
как необходимо модифицировать этот код чтобы получать сумму в ценах на конец периода, ДЛЯ КАЖДОГО элемента, указанный код отбрасвает некоторые сторки которые есть если убрать расчёт суммы или считать её беря стоимость из smprices
13.07.2007 18:02
YuraZ
 
Код:
SELECT c.article as "Артикул",
       c.name as "Наименование",
       NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0) as "Остаток",
       NVL((NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0))*
       NVL((SELECT his.PRICE
            FROM SUPERMAG.SMPRICEHISTORY his, SUPERMAG.SMLOCPRICES prt
            WHERE his.STORELOC = q.STORELOC
              AND his.ARTICLE = q.ARTICLE
              AND his.PRICETYPE = prt.PRICETYPE
              AND prt.LOCID = his.STORELOC
              AND (bitand(prt.FLAGS, 2) = 2)
              AND his.RECID = (SELECT MAX(h.RECID)
                               FROM SUPERMAG.SMPRICEHISTORY h
                               WHERE h.STORELOC = his.STORELOC
                                 AND h.ARTICLE = his.ARTICLE
                                 AND h.PRICETYPE = his.PRICETYPE
                                 AND TRUNC(h.EVENTTIME) <= TRUNC(TO_DATE('01.07.2007', 'DD.MM.YYYY')))),0),0) as "$$$"
  FROM supermag.smcard c,
       supermag.smgoods q,
       supermag.sacardclass cc,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity,
               SUM(dc.itemprice) as price
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate=3
           AND TO_DATE(d.createdat) >= to_date('01.07.2007', 'DD.MM.YYYY')
           AND d.locationto = (2)
        GROUP BY dc.article
       ) pr,
       (
        SELECT dc.article,
               SUM(dc.quantity) as quantity,
               SUM(dc.itemprice) as price
          FROM supermag.smdocuments d,
               supermag.smspec dc
         WHERE d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate=3
           AND TO_DATE(d.createdat) >= to_date('01.07.2007', 'DD.MM.YYYY')
           AND d.locationfrom = (2)
        GROUP BY dc.article
       ) rs
 WHERE c.article=pr.article(+)
   AND c.article=rs.article(+)
   AND c.article=q.article(+)
   --AND c.accepted=1--active cards
   AND q.storeloc(+)=(2)
   AND c.idclass=cc.id(+)
   AND cc.tree like '1.1.1.%'
   AND (NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0))>=0-- > 0 condition
В качестве вида цены берется тот вид, который установлен как вид цены для касс, для заданного места хранения.
13.07.2007 18:10
Pyatak
 
Цитата:
nekrom@nt.grave как необходимо модифицировать этот код чтобы получать сумму в ценах на конец периода, ДЛЯ КАЖДОГО элемента, указанный код отбрасвает некоторые сторки которые есть если убрать расчёт суммы или считать её беря стоимость из smprices
А всетаки, о каких ценах идет речь? И каков должен быть конечный результат?
Может тебе вот это подойдет: https://olegon.ru/showpost.php?p=20062&postcount=11 ?
16.07.2007 09:32
nekrom@nt.grave
 
YuraZ
Огромное тебе спасибо.
Прокомментируй плз выделенное
Код:
NVL((SELECT his.PRICE
            FROM SUPERMAG.SMPRICEHISTORY his, SUPERMAG.SMLOCPRICES prt
            WHERE his.STORELOC = q.STORELOC
              AND his.ARTICLE = q.ARTICLE
              AND his.PRICETYPE = prt.PRICETYPE
              AND prt.LOCID = his.STORELOC
              AND (bitand(prt.FLAGS, 2) = 2)
              AND his.RECID = (SELECT MAX(h.RECID)
                               FROM SUPERMAG.SMPRICEHISTORY h
                               WHERE h.STORELOC = his.STORELOC
                                 AND h.ARTICLE = his.ARTICLE
                                 AND h.PRICETYPE = his.PRICETYPE
                                 AND TRUNC(h.EVENTTIME) <= TRUNC(TO_DATE('01.07.2007', 'DD.MM.YYYY')))),0),0) as "$$$"
ещё раз thanx
16.07.2007 10:14
nekrom@nt.grave
 
как отличать приходы закуп от возвтрата?
знаю есть к-йто код операции, но где и какие значения чаво означают
16.07.2007 10:23
Dim
 
заведи накладные с разными операциями и посмотри селектом какая цифра какую операцию означает.
16.07.2007 10:24
OlegON
 
Для начала разберись, какими документами у тебя это проводится и какой тип операции в этих документах.
16.07.2007 10:30
nekrom@nt.grave
 
уже выяснил опытным путём
16.07.2007 11:06
nekrom@nt.grave
 
что такое doctype = OR
в смысле что означает OR?
16.07.2007 11:31
YuraZ
 
Цитата:
nekrom@nt.grave YuraZ
Огромное тебе спасибо.
Прокомментируй плз выделенное
Код:
NVL((SELECT his.PRICE
            FROM SUPERMAG.SMPRICEHISTORY his, SUPERMAG.SMLOCPRICES prt
            WHERE his.STORELOC = q.STORELOC
              AND his.ARTICLE = q.ARTICLE
              AND his.PRICETYPE = prt.PRICETYPE
              AND prt.LOCID = his.STORELOC
              AND (bitand(prt.FLAGS, 2) = 2)
              AND his.RECID = (SELECT MAX(h.RECID)
                               FROM SUPERMAG.SMPRICEHISTORY h
                               WHERE h.STORELOC = his.STORELOC
                                 AND h.ARTICLE = his.ARTICLE
                                 AND h.PRICETYPE = his.PRICETYPE
                                 AND TRUNC(h.EVENTTIME) <= TRUNC(TO_DATE('01.07.2007', 'DD.MM.YYYY')))),0),0) as "$$$"
ещё раз thanx
1. Для поиска цены по истории мы должны знать место хранения и вид цены. Наиболее простой вариант взять вид цены для касс, установленный для заданного метса хранения. Эти данные храняться в таблице SMLOCPRICES. В ней есть битовое поле FLAG. С помощью команды AND (bitand(prt.FLAGS, 2) = 2) мы определяем вид цены установленный для касс.
2. Т.к. цена может меняться в течение дня несколько раз, то необходимо выбрать последнюю. Для этого во вложенном запросе мы выбираем запись с максимальным идентификатором. При этом мы подразумеваем, что поле RECID автоинкрементное. А потом уже выбираем данные из истории с указанным RECID.

Цитата:
что такое doctype = OR
в смысле что означает OR?
Разделы->Настройка->Справочники->Типы объектов
18.07.2007 12:40
nekrom@nt.grave
 
Как FFSaleReturns связан с документом возврата?
20.07.2007 13:12
nekrom@nt.grave
 
проблема такая:
пытаюсь прекрутить св-ва товара (через smspecscale). получается туева ..ча всякого ...
код такой:
Код:
SELECT c.article as "Артикул",
       c.name as "Наименование",
       NVL(inprices.price, 0) as "Зак цен",
       NVL(buy.quantity, 0) as "Ко-во прихода",
       NVL(pr.subarticle, '--') as "СубАрт",
       NVL(inprices.price, 0)*NVL(buy.quantity, 0) as "Cумма прихода",
       NVL(saleret.quantity, 0) as "Кол-во возврата",
       NVL(saleret.quantity, 0)*NVL(saleret.price, 0) as "$$$ возврата",
       NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0) as "Остаток",
       NVL(outprices.price,0) as "resprice",
       NVL((NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0))*
       NVL(outprices.price,0),0) as "$$$"
  FROM supermag.smcard c,
       supermag.smgoods q,
       supermag.sacardclass cc,
       (
        SELECT DISTINCT dc.article, ss.subarticle,
               SUM(ss.quantity) as quantity
                -- SUM(dc.itemprice) as price
          FROM supermag.smdocuments d,
               supermag.smspec dc,
               supermag.smspecscale ss
         WHERE ss.doctype=dc.doctype
           AND ss.docid=dc.docid
           AND not(ss.quantity = 0)
           AND d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate=3
           AND TO_DATE(d.createdat) >= to_date('01.07.2007', 'DD.MM.YYYY')
           AND d.locationto = (1)
        GROUP BY dc.article, ss.subarticle
       ) pr,
       (
        SELECT DISTINCT dc.article, ss.subarticle,
               SUM(ss.quantity) as quantity
                -- SUM(dc.itemprice) as price
          FROM supermag.smdocuments d,
               supermag.smspec dc,
               supermag.smspecscale ss
         WHERE ss.doctype=dc.doctype
           AND ss.docid=dc.docid
           AND not(ss.quantity = 0)
           AND d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate=3
           AND (d.opcode = (0)) -- 0 if sklad; 4 if tochka
           AND TO_DATE(d.createdat) between to_date('1.06.2007', 'DD.MM.YYYY') and to_date('01.07.2007', 'DD.MM.YYYY')
           AND d.locationto = (1)
         GROUP BY dc.article, ss.subarticle --dc.itemprice,
       ) buy,
       (
       SELECT his.PRICE, his.ARTICLE, his.STORELOC
            FROM SUPERMAG.SMPRICEHISTORY his, SUPERMAG.SMLOCPRICES prt
              WHERE his.PRICETYPE = prt.PRICETYPE
              AND prt.LOCID = his.STORELOC
              AND (bitand(prt.FLAGS, 2) = 2)
              AND his.RECID = (SELECT MAX(h.RECID)
                               FROM SUPERMAG.SMPRICEHISTORY h
                               WHERE h.STORELOC = his.STORELOC
                                 AND h.ARTICLE = his.ARTICLE
                                 AND h.PRICETYPE = his.PRICETYPE
                                 AND TRUNC(h.EVENTTIME) <= TRUNC(TO_DATE('01.07.2007', 'DD.MM.YYYY')))
        ) outprices,       
       (
       SELECT his.PRICE, his.ARTICLE
            FROM SUPERMAG.SMPRICES his
              WHERE his.PRICETYPE = 1
              AND his.STORELOC = 1
       ) inprices, 
       (
        SELECT DISTINCT dc.article, ss.subarticle,
               SUM(ss.quantity) as quantity,
               SUM(dc.itemprice) as price
          FROM supermag.smdocuments d,
               supermag.smspec dc,
               supermag.smspecscale ss
         WHERE ss.doctype=dc.doctype
           AND ss.docid=dc.docid
           AND not(ss.quantity = 0)
           AND d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate=3
           AND d.opcode = 3
           AND TO_DATE(d.createdat) >= to_date('01.06.2007', 'DD.MM.YYYY')
           AND d.locationto = (1)
           AND d.clientindex = 4 --client!!!
           GROUP BY dc.article, ss.subarticle           
       ) saleret,
       (
        SELECT DISTINCT dc.article, ss.subarticle,
               SUM(ss.quantity) as quantity,
               SUM(dc.itemprice) as price
          FROM supermag.smdocuments d,
               supermag.smspec dc,
               supermag.smspecscale ss
         WHERE ss.doctype=dc.doctype
           AND ss.docid=dc.docid
           AND not(ss.quantity = 0)
           AND d.doctype=dc.doctype
           AND d.id=dc.docid
           AND d.docstate=3
           AND TO_DATE(d.createdat) >= to_date('01.07.2007', 'DD.MM.YYYY')
           AND d.locationfrom = (1)
        GROUP BY dc.article, ss.subarticle
       ) rs
 WHERE c.article=pr.article(+)
   AND c.article=rs.article(+)
   AND c.article=q.article(+)
   AND c.article=buy.article(+)
   AND c.article=outprices.article(+)
   AND q.storeloc=outprices.storeloc
   AND c.article=inprices.article(+)
   AND c.article=saleret.article(+)
   --AND c.accepted=1--active cards
   AND q.storeloc(+)=(1)
   AND c.idclass=cc.id(+)
   AND cc.tree like '1.1.1.%'
   AND c.name like '%Из Рук В Руки%'
   AND (NVL(q.quantity,0)-NVL(pr.quantity,0)+NVL(rs.quantity,0))>=0-- > 0 condition
20.07.2007 13:29
nekrom@nt.grave
 
когда задаю правило:
Код:
 
    AND pr.subarticle = rs.subarticle
   AND pr.subarticle = saleret.subarticle
   AND pr.subarticle = buy.subarticle
пусто!


Опции темы


Часовой пояс GMT +3, время: 02:38.

 

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