[ОТВЕТИТЬ]
15.02.2013 09:23
konst
 
Как правило менеджеры стараются заводить контракты по правилу: 1 поставщик - 1 контракт...
но бывают и исключения, тем более когда оптовики укрупняются...
например оптовик "марса" поставляет и шоколадки и корма для животных, само собой это разные контракты, а еще есть химики, так по ним и по 5-6 контрактов бывает...
при генерации автозаказа, супермаг автоматом подставляет все контракты, и для того чтобы сгенерировать отдельный заказ по каждому контракту менеджеру приходится многократно снимать галки по "лишним" контрактам, а интерфейс этого окошка еще тот (окно не увеличивается, и в нем отображается только пара строк...)
кто и как выходит из этой ситуации... поделитесь опытом...
у меня есть желание сделать что то типа такого:
менеджер генерит автозаказ сразу по все контрактам поставщика, а затем запросом разбить общий заказ на отдельные, в соответсвии с контрактами
15.02.2013 09:34
Mtirt
 
Формирование заказа на базе контракта не предлагать?
15.02.2013 09:37
konst
 
Цитата:
Mtirt Формирование заказа на базе контракта не предлагать?
Предлагать... может быть я что-то и упустил...
если что - версия СМ 1.027.1 SP3
15.02.2013 09:41
Troll
 
В административном модуле есть галочка "При формировании заказов формировать отдельный заказ на каждый контракт"
15.02.2013 09:43
Mtirt
 
Цитата:
Troll В административном модуле есть галочка "При формировании заказов формировать отдельный заказ на каждый контракт"
Появилась в какой-то из 29-х версий :(
15.02.2013 09:45
Mtirt
 
Цитата:
konst Предлагать... может быть я что-то и упустил...
если что - версия СМ 1.027.1 SP3
в 27 версии вроде как уже есть.
Другой мастер, для формирования заказа надо выбрать контракт (только один, всегда) и на его основании в другом интерфейсе сделать заказ.

Добавлено через 30 секунд
Для выбора предлагаются только действующие контракты.
15.02.2013 09:46
konst
 
может быть я плохо ищу - но у меня такой галочки нет...
есть только выпадающий список:
Тип процесса формирования заказа на основании контракта: - и два варианта:
формирование заказа на базе контракта
формирование пакета заказов на базе контракта

но с другой стороны - заказы формируются и так и так...
одним поставщикам - один заказ по нескольким контрактам...
другим - 1 заказа - 1 контракт....
15.02.2013 09:50
Mtirt
 
Цитата:
konst Тип процесса формирования заказа на основании контракта: - и два варианта:
формирование заказа на базе контракта
формирование пакета заказов на базе контракта
В заказах, жмешь кнопку Новый и дальше в мастере идешь по пути "Формирование заказа на базе контракта".


Что касается галочки в адм. модуле:
- первое значение: выбираем контракт, выбираем МХ и делаем один заказ.
- второе значение: выбираем контракт, выбираем НЕСКОЛЬКО МХ и делаем НЕСКОЛЬКО заказов.
15.02.2013 09:58
konst
 
Цитата:
Mtirt В заказах, жмешь кнопку Новый и дальше в мастере идешь по пути "Формирование заказа на базе контракта".
да этот вариант понятен... вижу как минимум 2 минуса
1. все равно придется запускать этот процесс столько раз - сколько контрактов у этого поставщика...
2. в окне выбора контракта - нет комментария и т.п. реквизитов
т.е. менеджеру придется выбирать контракты "вслепую"... ну или сделать табличку с контрактами в экселе и оттуда поочередно выбирать номера контрактов...
15.02.2013 15:48
konst
 
Продолжу тему...
Как я вижу этот процесс:
1. менеджеры генерируют 1 заказ сразу по всем контрактам данного поставщика...
далее я каким-то образом на основании данного 1 заказа - создаю в БД Супермага столько - сколько контрактов в основании...
тут возможны варианты:
1. создавать XML-файлы с заказами и подсовывать их почтовику - минус данного метода: т.к. это процесс не мгновенный и не хочется нарушать нумерацию документов...
2. создавать документ непосредственно в БД -
insert into smdocuments ...;
insert into smspec.....;
insert into smwaybillsin .... ;
insert into smdoclog ..... ;
commit;
само собой документ создается в статусе черновик, строки будут копироваться из уже существующего документа... по-идее проблем не должно возникнуть...
3. воспользоваться встроенными функциями СМ и также создавать документ непосредственно в БД...
но тут я начинаю наступать на грабли, например процедура генерации номера документа:
Код:
SELECT supermag.documents.generatedocno ('OR', '1', NULL) docid
  FROM DUAL;
Выдает ошибку: ORA-20017: Клиентский процесс не зарегистрирован сервером
есть решение, если перед процедурой выполнить:
Код:
DECLARE
   core_result   PLS_INTEGER;
BEGIN
   IF supermag.core.getproc IS NULL
   THEN
      core_result := supermag.core.startsmapp ();
   END IF;
END;
то она выполняется и возвращает номер документа, единственное все это выполняется в SQLNavigatore и по отдельности... не могу понять как это объединить в единое целое да еще и в Delphi...
15.02.2013 15:50
Mtirt
 
Остановись на минутку.
Точно уверен, что ОДИН менеджер создает заказ по Марсу и на конфеты и на корма для животных?
У них нет разделения по группам товаров?
18.02.2013 10:10
CrazyWolf
 
konst
Если еще актуально. рабочий код на Шарпе
Код:
        // Получение номера супермага для документа
        public static string GetDocNumber(string strConnString, string strDocType, int intLocationId)
        {
            string strDocNum;
            using (var conOra = new OracleConnection(strConnString))
            {
                conOra.Open();
                const string txtSql = "declare " +
                                      "core_result pls_integer; " +
                                      "vDocTypeID varchar2(2) := :vDocTypeID; " +
                                      "nLocationID number(3,0) := :nLocationID; " +
                                      "vDocID varchar2(50); " +
                                      "begin " +
                                      "if supermag.core.getproc is null then " +
                                      "core_result := supermag.Core.StartSMApp(); " +
                                      "end if; " +
                                      "vDocID := SUPERMAG.DOCUMENTS.GENERATEDOCNO(ADOCTYPE => vDocTypeID, ALOCATION => nLocationID); " +
                                      "SUPERMAG.DOCUMENTS.UNLOCKDOC(vDocTypeID, vDocID); " +
                                      ":vDocID := vDocID; " +
                                      "end;";
                using (var cmd = new OracleCommand(txtSql, conOra))
                {
                    cmd.Parameters.Add(new OracleParameter("vDocTypeID", OracleType.VarChar));
                    cmd.Parameters["vDocTypeID"].Value = strDocType;
                    cmd.Parameters.Add(new OracleParameter("nLocationID", OracleType.Int16));
                    cmd.Parameters["nLocationID"].Value = intLocationId;
                    OracleParameter parNRec = cmd.Parameters.Add("vDocID", OracleType.VarChar, 15);
                    parNRec.Direction = ParameterDirection.Output;
                    try
                    {
                        cmd.ExecuteNonQuery();
                        strDocNum = parNRec.Value.ToString();
                    }
                    catch (Exception)
                    {
                        strDocNum = "";
                    }
                }
            }
            return strDocNum;
        }
Опции темы


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

 

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