Результаты опроса: Перемещения алкоголя между магазинами
Есть, оформляем накладную на перемещение 18 27.27%
Есть, оформляем расходную накладную/приходную накладную 21 31.82%
Нет. 27 40.91%
Голосовавшие: 66. Вы ещё не голосовали в этом опросе

[ТЕМА ЗАКРЫТА]
Опции темы
11.05.2012 11:34  
Mtirt
Здесь вопрос не только к С+, но и к РАРу.
Каким образом ты предполагаешь учитывать алкоголь, если у тебя у одного товара разные производители?
 
11.05.2012 11:41  
Carott
Цитата:
Сообщение от Kryukov
да.... только толку от него мало ... нам "у товара не может быть более одного производителя/импортера" никак не подходит...
Нам тоже не особо подходит, но здесь вообще ясности нет. Как сказала Mtirt - этот вопрос надо к РАРу задать.
 
11.05.2012 12:07  
Kryukov
Цитата:
Сообщение от Mtirt
Здесь вопрос не только к С+, но и к РАРу.
Каким образом ты предполагаешь учитывать алкоголь, если у тебя у одного товара разные производители?
плодить карточки, маркировать своими короткими ...
 
11.05.2012 12:15  
Mtirt
Ну это и сводится к фразе "что действие функционала основано на принципе единственности поставщика (импортера) для каждого товара".
При смене производителя ты создаешь новую карточку.
 
21.05.2012 16:14  
Петушок
Здравствуйте хочу посоветовать очень хорошую утилиту для декларант алко она может из реестра лицензий выгружать производителей\импортеров и поставщиков сразу до 50 организации в формате XML и Импортировать их в декларант алко. Наберите в яндексе "импорт в декларант алко" первый сайт она и есть, на том ресурсе еще можно купить не дорого и быстро ЭЦП.
 
24.05.2012 12:06  
konst
реестр обособленных подразделений, большую часть данных можно получить и из других таблиц, но я свел все в одну - для удобства...
Код:
CREATE TABLE supermag.exporter_alcomx
(idmx NUMBER (3),                                                --ID магазина
idclient NUMBER (4),                                       -- ID моего юр лица
NAME VARCHAR2 (20),                                   -- наименование магазина
accepted NUMBER (2),                                            -- активен 1/0
inn VARCHAR2 (12),                                              -- ИНН Юр лица
kpp VARCHAR2 (9),                           -- КПП обособленного подразделения
xml_adr VARCHAR2 (300));                           -- Адрес МХ в XML-формате
Реестр поставщиков и лицензий
Код:
CREATE TABLE supermag.exporter_alcolic
(ID NUMBER (4),
-- ID поставщика = № по порядку, а также используется в случае если в СМ поставщик заведен более одного раза
idsup NUMBER (5),                     -- ID поставщика из таблицы СМ Suppliers
NAME VARCHAR2 (100),                                           -- наименование
accepted NUMBER (2),                                         -- активность 1/0
juridicpers NUMBER (1),                                    -- 0 - ИП - 1 - ООО
inn VARCHAR2 (12),                                           -- ИНН поставщика
kpp VARCHAR2 (9),                                            -- КПП поставщика
idsuplic NUMBER (3),                -- порядковый номер лицензии у контрагента
reg NUMBER (2),                                                 -- код региона
licser VARCHAR2 (12),                                        -- серия лицензии
licnum VARCHAR2 (12),                                        -- номер лицензии
datastart DATE,                                        -- дата начала лицензии
dataend DATE,                                       -- дата окончания лицензии
organ VARCHAR2 (150),                               -- орган выдавший лицензию
comments VARCHAR2 (200));                --комментарий
Производители / импортеры:
Код:
CREATE TABLE supermag.exporter_alcoproducer
(ID NUMBER (5),
-- ID производителя / импортера (счетчик) у меня начинается с 5000 чтобы не было пересечений с другими ID,
-- т.к. этот вопрос в формате декларации в тумане
NAME VARCHAR2 (100),                                           -- наименование
shortname VARCHAR2 (50),                               -- краткое наименование
inn VARCHAR2 (12),                                                      -- ИНН
kpp VARCHAR2 (9),                                                       -- КПП
TYPE VARCHAR2 (1),                    -- тип - I - иппортер, P - производитель
comments VARCHAR2 (50));                        -- комментарий
COMMIT ;
Приход - данные из приходных накладных - таблица №1 АлкоДекларации
Код:
CREATE TABLE supermag.exporter_alcoprihod
(god NUMBER (4),                                                        -- год
kvart NUMBER (2),                                                   -- квартал
idmx NUMBER (4),                                                -- ID магазина
idpost NUMBER (4),                                             -- ID постащика
clientdoc VARCHAR2 (50),                         -- номер документа поставщика
clientdate DATE,                                  -- дата документа поставщика
dkl NUMBER (14,5),                             -- объем продукции в декалитрах
kodap NUMBER (3),                                                    -- код АП
idprod NUMBER (4),                              -- ID произвоидителя/импортера
idlic NUMBER (4));                       -- ID лицензии поставщика
COMMIT ;
Таблица - оборот - таблица №2 АлкоДекларации
Код:
CREATE TABLE supermag.exporter_alcooborot
(god NUMBER (4), 										     -- Год декларации
kvart NUMBER (2), 										 -- Квартал декларации
idmx NUMBER (4), 												-- ID магазина
kodap NUMBER (3), 								  -- Код алкогольной продукции
idprod NUMBER (4), 								 -- ID производителя/импортера
p06 NUMBER (14,5),                                        -- остаток на начало
p08 NUMBER (14,5),                            -- закупка = p10 - итого закупка
p11 NUMBER (14,5),                                    -- возврат от покупателя
p12 NUMBER (14,5),              -- прочие поступления - инвентаризация излишки
p15 NUMBER (14,5),                                        -- розничные продажи
p16 NUMBER (14,5),                    -- прочий расход - инвентаризация потери
p17 NUMBER (14,5),                                       -- возврат поставщику
p20 NUMBER (14,5)); 									   -- остаток на конец
COMMIT ;
 
"Спасибо" konst от:
24.05.2012 15:55  
konst
все запросы написаны с учетом особенностей моей БД...
(алкоголь - группа классификатора - 1.1% Пиво - 1.26%)

1. проверяем, чтобы не было приходных накладных, у которых дата поставщика попадает в другой квартал, относительно даты документа в СМ

Код:
SELECT   a.ID, d.NAME mxname, a.clientindex, b.NAME, c.supplierdoc,
         c.supplinvoicecreate, a.createdat
    FROM supermag.smdocuments a,
         supermag.exporter_alcolic b,
         supermag.smwaybillsin c,
         supermag.exporter_alcomx d,
         supermag.smspec e,
         supermag.smcard g
   WHERE a.doctype = 'WI'
     AND a.createdat BETWEEN TO_DATE ('31.03.2012', 'DD.MM.YYYY') - 20
                         AND TO_DATE ('31.03.2012', 'DD.MM.YYYY') + 20
     AND a.clientindex = b.idsup
     AND c.doctype = 'WI'
     AND a.ID = c.ID
     AND a.locationto = d.idmx
     AND c.supplinvoicecreate < TO_DATE ('31.03.2012', 'DD.MM.YYYY') + 1
     AND a.createdat > TO_DATE ('31.03.2012', 'DD.MM.YYYY')
     AND e.doctype = 'WI'
     AND e.docid = a.ID
     AND e.article = g.article
     AND g.idclass IN (SELECT f.ID
                         FROM supermag.sacardclass f
                        WHERE f.tree LIKE ('1.1.%') OR f.tree LIKE ('1.26.%'))
ORDER BY c.supplinvoicecreate
2. Проверяем отрицательные остатки два раза на начало отчетного квартала и на начало следующего квартала... соотвественно если они есть - создаем приходные накладные - с типом "Инвентаризация излишков"

Код:
SELECT   mx, art, kolvo
    FROM (SELECT   NVL (d.locationto, d.locationfrom) mx, t.article art,
                   SUM (DECODE (t.doctype,
                                'WI', t.quantity,
                                'WO', -t.quantity,
                                'CR', t.quantity,
                                'CS', -t.quantity
                               )
                       ) kolvo
              FROM supermag.smspec t, supermag.smdocuments d
             WHERE t.doctype = d.doctype
               AND t.docid = d.ID
               AND d.createdat < TO_DATE ('01.01.2012', 'DD.MM.YYYY')
               AND d.docstate > 2
               AND d.doctype IN ('WI', 'WO', 'CS', 'CR')
               AND t.article IN (
                      SELECT   m.article
                          FROM supermag.smspec m, supermag.smcard n
                         WHERE m.article = n.article
                           AND n.idclass IN (
                                  SELECT k.ID
                                    FROM supermag.sacardclass k
                                   WHERE k.tree LIKE '1.1.%'
                                      OR k.tree LIKE '1.26.%')
                      GROUP BY m.article)
          GROUP BY NVL (d.locationto, d.locationfrom), t.article)
   WHERE kolvo < 0
ORDER BY mx, art
 
"Спасибо" konst от:
24.05.2012 16:01  
konst
После того как все проверили - формируем 2 таблицы - приход и оборот.
1. Приход:

Код:
INSERT INTO supermag.exporter_alcoprihod
   SELECT   '2012' god, '1' kvart, idmx, idpost, clientdoc, clientdate,
            SUM (rate * quantity) / 10 dkl, s1, idprod, idlic
       FROM (SELECT d.idmx, b.ID idpost, c.supplierdoc clientdoc,
                    c.supplinvoicecreate clientdate, e.quantity,
                    NVL ((SELECT rate
                            FROM supermag.smaltunits
                           WHERE e.article = article AND altunit = '2'),
                         0
                        ) rate,
                    SUBSTR (NVL ((SELECT propval
                                    FROM supermag.smcardproperties
                                   WHERE e.article = article
                                     AND propid = 'alcokod1'),
                                 '-'
                                ),
                            0,
                            3
                           ) s1,
                    NVL ((SELECT propval
                            FROM supermag.smcardproperties
                           WHERE e.article = article
                             AND propid = 'alcoproducer'),
                         '5000'
                        ) idprod,
                    NVL
                       ((SELECT idsuplic
                           FROM supermag.exporter_alcolic
                          WHERE idsuplic > 0
                            AND idsup = a.clientindex
                            AND c.supplinvoicecreate BETWEEN datastart AND dataend),
                        0
                       ) idlic
               FROM supermag.smdocuments a,
                    supermag.exporter_alcolic b,
                    supermag.smwaybillsin c,
                    supermag.exporter_alcomx d,
                    supermag.smspec e,
                    supermag.smcard g
              WHERE a.doctype = 'WI'
                AND a.createdat BETWEEN   TO_DATE ('01.01.2012', 'DD.MM.YYYY')
                                        - 10
                                    AND   TO_DATE ('31.03.2012', 'DD.MM.YYYY')
                                        + 10
                AND c.doctype = 'WI'
                AND a.ID = c.ID
                AND a.locationto = d.idmx
                AND b.idsuplic = 0
                AND a.clientindex = b.idsup
                AND c.supplinvoicecreate BETWEEN TO_DATE ('01.01.2012',
                                                          'DD.MM.YYYY'
                                                         )
                                             AND TO_DATE ('31.03.2012',
                                                          'DD.MM.YYYY'
                                                         )
                AND e.doctype = 'WI'
                AND e.docid = a.ID
                AND e.article = g.article
                AND g.idclass IN (SELECT f.ID
                                    FROM supermag.sacardclass f
                                   WHERE f.tree LIKE ('1.1.%')))
   GROUP BY idmx, idpost, clientdoc, clientdate, s1, idprod, idlic
   ORDER BY s1, idprod
2. Оборот:

Код:
INSERT INTO supermag.exporter_alcooborot
   SELECT   '2012' god, '1' kvart, mxid, p03, idprod,
            SUM (p06 * rate) / 10 p06i, SUM (p08 * rate) / 10 p08i,
            SUM (p11 * rate) / 10 p11i, SUM (p12 * rate) / 10 p12i,
            SUM (p15 * rate) / 10 p15i, SUM (p16 * rate) / 10 p16i,
            SUM (p17 * rate) / 10 p17i, SUM (p20 * rate) / 10 p20i
       FROM (SELECT z.mxid,
                    SUBSTR (NVL ((SELECT propval
                                    FROM supermag.smcardproperties
                                   WHERE z.art = article
                                     AND propid = 'alcokod1'),
                                 '000'
                                ),
                            0,
                            3
                           ) p03,
                    NVL ((SELECT propval
                            FROM supermag.smcardproperties
                           WHERE z.art = article AND propid = 'alcoproducer'),
                         '5000'
                        ) idprod,
                    z.art,
                    NVL ((SELECT rate
                            FROM supermag.smaltunits
                           WHERE z.art = article AND altunit = 2), 1) rate,
                    z.p06, z.p08, z.p11, z.p12, z.p15, z.p16, z.p17, z.p20
               FROM (SELECT   mxid, art, SUM (s6) p06, SUM (s8) p08,
                              SUM (s11) p11, SUM (s12) p12, SUM (s15) p15,
                              SUM (s16) p16, SUM (s17) p17, SUM (s20) p20
                         FROM (SELECT mxid, art, s6, 0 s8, 0 s11, 0 s12,
                                      0 s15, 0 s16, 0 s17, 0 s20
                                 FROM (SELECT   NVL (d.locationto,
                                                     d.locationfrom
                                                    ) mxid,
                                                t.article art,
                                                SUM (DECODE (t.doctype,
                                                             'WI', t.quantity,
                                                             'WO', -t.quantity,
                                                             'CR', t.quantity,
                                                             'CS', -t.quantity
                                                            )
                                                    ) s6
                                           FROM supermag.smspec t,
                                                supermag.smdocuments d
                                          WHERE t.doctype = d.doctype
                                            AND t.docid = d.ID
                                            AND d.createdat <
                                                   TO_DATE ('01.01.2012',
                                                            'DD.MM.YYYY'
                                                           )
                                            AND d.docstate = 3
                                            AND d.doctype IN
                                                     ('WI', 'WO', 'CS', 'CR')
                                            AND t.article IN (
                                                   SELECT c.article
                                                     FROM supermag.smcard c
                                                    WHERE c.idclass IN (
                                                             SELECT ID
                                                               FROM supermag.sacardclass
                                                              WHERE tree LIKE
                                                                       ('1.1.%'
                                                                       )))
                                       GROUP BY NVL (d.locationto,
                                                     d.locationfrom
                                                    ),
                                                t.article)
                                WHERE s6 != 0
                               UNION ALL
                               SELECT a.locationto mxid, b.article art, 0 s6,
                                      b.quantity s8, 0 s11, 0 s12, 0 s15,
                                      0 s16, 0 s17, 0 s20
                                 FROM supermag.smdocuments a,
                                      supermag.smspec b
                                WHERE a.doctype = 'WI'
                                  AND a.createdat BETWEEN TO_DATE
                                                                ('01.01.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                                      AND TO_DATE
                                                                ('31.03.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                  AND b.doctype = 'WI'
                                  AND a.docstate = 3
                                  AND a.opcode = 0
                                  AND a.userop IS NULL
                                  AND b.docid = a.ID
                                  AND b.article IN (
                                         SELECT c.article
                                           FROM supermag.smcard c
                                          WHERE c.idclass IN (
                                                     SELECT ID
                                                       FROM supermag.sacardclass
                                                      WHERE tree LIKE
                                                                    ('1.1.%'
                                                                    )))
                               UNION ALL
                               SELECT a.locationto mxid, b.article art, 0 s6,
                                      0 s8, b.quantity s11, 0 s12, 0 s15,
                                      0 s16, 0 s17, 0 s20
                                 FROM supermag.smdocuments a,
                                      supermag.smspec b
                                WHERE a.doctype = 'CR'
                                  AND a.createdat BETWEEN TO_DATE
                                                                ('01.01.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                                      AND TO_DATE
                                                                ('31.03.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                  AND b.doctype = 'CR'
                                  AND b.docid = a.ID
                                  AND b.article IN (
                                         SELECT c.article
                                           FROM supermag.smcard c
                                          WHERE c.idclass IN (
                                                     SELECT ID
                                                       FROM supermag.sacardclass
                                                      WHERE tree LIKE
                                                                    ('1.1.%'
                                                                    )))
                               UNION ALL
                               SELECT a.locationto mxid, b.article art, 0 s6,
                                      0 s8, 0 s11, b.quantity s12, 0 s15,
                                      0 s16, 0 s17, 0 s20
                                 FROM supermag.smdocuments a,
                                      supermag.smspec b
                                WHERE a.doctype = 'WI'
                                  AND a.createdat BETWEEN TO_DATE
                                                                ('01.01.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                                      AND TO_DATE
                                                                ('31.03.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                  AND b.doctype = 'WI'
                                  AND a.docstate = 3
                                  AND a.opcode = 9
                                  AND b.docid = a.ID
                                  AND b.article IN (
                                         SELECT c.article
                                           FROM supermag.smcard c
                                          WHERE c.idclass IN (
                                                     SELECT ID
                                                       FROM supermag.sacardclass
                                                      WHERE tree LIKE
                                                                    ('1.1.%'
                                                                    )))
                               UNION ALL
                               SELECT a.locationfrom mxid, b.article art,
                                      0 s6, 0 s8, 0 s11, 0 s12,
                                      b.quantity s15, 0 s16, 0 s17, 0 s20
                                 FROM supermag.smdocuments a,
                                      supermag.smspec b
                                WHERE a.doctype = 'CS'
                                  AND a.createdat BETWEEN TO_DATE
                                                                ('01.01.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                                      AND TO_DATE
                                                                ('31.03.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                  AND b.doctype = 'CS'
                                  AND b.docid = a.ID
                                  AND b.article IN (
                                         SELECT c.article
                                           FROM supermag.smcard c
                                          WHERE c.idclass IN (
                                                     SELECT ID
                                                       FROM supermag.sacardclass
                                                      WHERE tree LIKE
                                                                    ('1.1.%'
                                                                    )))
                               UNION ALL
                               SELECT a.locationfrom mxid, b.article art,
                                      0 s6, 0 s8, 0 s11, 0 s12, 0 s15,
                                      b.quantity s16, 0 s17, 0 s20
                                 FROM supermag.smdocuments a,
                                      supermag.smspec b
                                WHERE a.doctype = 'WO'
                                  AND a.docstate = 3
                                  AND (a.opcode = 8 OR a.opcode = 7)
                                  AND a.createdat BETWEEN TO_DATE
                                                                ('01.01.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                                      AND TO_DATE
                                                                ('31.03.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                  AND b.doctype = 'WO'
                                  AND b.docid = a.ID
                                  AND b.article IN (
                                         SELECT c.article
                                           FROM supermag.smcard c
                                          WHERE c.idclass IN (
                                                     SELECT ID
                                                       FROM supermag.sacardclass
                                                      WHERE tree LIKE
                                                                    ('1.1.%'
                                                                    )))
                               UNION ALL
                               SELECT a.locationfrom mxid, b.article art,
                                      0 s6, 0 s8, 0 s11, 0 s12, 0 s15, 0 s16,
                                      b.quantity s17, 0 s20
                                 FROM supermag.smdocuments a,
                                      supermag.smspec b
                                WHERE a.doctype = 'WO'
                                  AND a.docstate = 3
                                  AND a.opcode = 2
                                  AND a.createdat BETWEEN TO_DATE
                                                                ('01.01.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                                      AND TO_DATE
                                                                ('31.03.2012',
                                                                 'dd.mm.yyyy'
                                                                )
                                  AND b.doctype = 'WO'
                                  AND b.docid = a.ID
                                  AND b.article IN (
                                         SELECT c.article
                                           FROM supermag.smcard c
                                          WHERE c.idclass IN (
                                                     SELECT ID
                                                       FROM supermag.sacardclass
                                                      WHERE tree LIKE
                                                                    ('1.1.%'
                                                                    )))
                               UNION ALL
                               SELECT mxid, art, 0 s6, 0 s8, 0 s11, 0 s12,
                                      0 s15, 0 s16, 0 s17, s20
                                 FROM (SELECT   NVL (d.locationto,
                                                     d.locationfrom
                                                    ) mxid,
                                                t.article art,
                                                SUM (DECODE (t.doctype,
                                                             'WI', t.quantity,
                                                             'WO', -t.quantity,
                                                             'CR', t.quantity,
                                                             'CS', -t.quantity
                                                            )
                                                    ) s20
                                           FROM supermag.smspec t,
                                                supermag.smdocuments d
                                          WHERE t.doctype = d.doctype
                                            AND t.docid = d.ID
                                            AND d.createdat <
                                                     TO_DATE ('31.03.2012',
                                                              'DD.MM.YYYY'
                                                             )
                                                   + 1
                                            AND d.docstate = 3
                                            AND d.doctype IN
                                                     ('WI', 'WO', 'CS', 'CR')
                                            AND t.article IN (
                                                   SELECT c.article
                                                     FROM supermag.smcard c
                                                    WHERE c.idclass IN (
                                                             SELECT ID
                                                               FROM supermag.sacardclass
                                                              WHERE tree LIKE
                                                                       ('1.1.%'
                                                                       )))
                                       GROUP BY NVL (d.locationto,
                                                     d.locationfrom
                                                    ),
                                                t.article)
                                WHERE s20 != 0)
                     GROUP BY mxid, art) z)
   GROUP BY mxid, p03, idprod
   ORDER BY mxid, p03, idprod
 
"Спасибо" konst от:
24.05.2012 16:08  
konst
Что я еще делаю - т.к. таблица оборот свернута по виду АП, то возможна ситуация, когда по одному и тому же коду - будет и приход - инвентаризация излишков и расход - списание недостачи...
чтобы не нагружать сотрудников рара - я прохожу по таблице оборот и так где :
по одному Коду АП и производителю/импортеру...
p12 -- прочие поступления - инвентаризация излишки
И
p16 -- прочий расход - инвентаризация потери
не равны нулю
сравниваю между собой и соотвественно изменяю эти значения, а также итого приход и итого расход..

ну и все... в принципе все данные для формирования ХМЛ файла - готовы
 
"Спасибо" konst от:
24.05.2012 16:32  
akonev
*169 Эээээх, не дает движок четыре раза подряд по флагу щелкнуть в одни ворота! :)
Огромное человеческое СПАСИБО! Пошел доставать большую лопату и закапываться в эту радость.
 
 


Опции темы



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

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