BVSoft

Программное обеспечение для торговых предприятий

В главно меню программы "прайс-листы/прайс-листы" и "прайс-листы/прайс-листы(шапки)" производятся установки для автоматизации работы с прайс-листами, а также непосредственно обработка строк прайс-листов с целью улучшения их отображения в сводном прайс-листе.

Настройках ...
Настройках прайс-листа Настройках прайс-листа
Настройка п...
Настройка прайс-листов Настройка прайс-листов
Настройка п...
Настройка прайс-листов Настройка прайс-листов
Меню регист...
Меню регистрации Меню регистрации
Диалог реги...
Диалог регистрации товара Диалог регистрации товара

Создание прайс-листа

В окне "прайс-листы" при нажатии кнопки "создать прайс-лист" (либо в окне "прайс-листы (шапки)" - кнопка "создать новую запись" мы попадаем в диалог создания/редактирования шапок прайс-листов, где указываем все основные параметры автоматизации прайс-листа:

  • параметр "Поставщик": выбираем из списка контрагентов нужного нам поставщика. В-общем, от одного поставщика мы можем сформировать сколько угодно прайс-листов, различать их в сводном прайс-листе можно будет по полю "код прайс-листа".
  • Код прайс-листа: указывается для того, чтобы можно было различать прайс-листы по укороченному коду, а также для автоматизации импорта прайс-листов, когда коды прайс-листов используются для их идентификации. Предполагается. что коды будут уникальны в списке прайс-листов.
  • Скидка/надбавка относительно общего прайса: если мы пользуемся скидками в указанном прайс-листе, либо хотели бы рассмотреть этот прайс-лист с учетом определенных скидок, то указываем здесь ее размер (если скидка, то отрицательное число, если надбавка, то положительное), после чего в сводном прайс-листе в колонке "цена со скидкой" увидим нужные нам значения.
  • Комментарии: свободный текст, может быть использован для каких-либо специальных пометок, никак в автоматизации не участвует.
  • Скрипт либо вариант импорта: - указываем имя скрипта импорта прайс-листа либо вариант стандартного  сопоставления полей. 
    • В случае использования скрипта импорта мы указываем либо полный путь к файлу скрипта, либо путь относительно каталога общего доступа (указываемого в настройках программы, закладка "общие"), его подкаталога scripts. Скрипт получает на вход предопределенные переменные: Filename - имя файла для импорта и SelfLoader - объект класса TPriceLoader, который и используется при импорте прайс-листа, а задача скрипта - правильно его инициализировать, либо определить более сложные действия над файлами. Подробнее о настройке скриптов импорта и использовании класса TPriceLoader {phocadownload view=category|id=33|text=Каталог скриптов импорта прайс-листов|target=s}.
    • Может быть указан просто шаблон сопоставления полей. Общий скрипт импорта importprices.pas, использующий эти настройки, различает, что нужно использовать, скрипт или шаблон с указанным именем, по наличию расширения скрипта: если расширение не указано, значит это шаблон сопоставления полей. Если указано, то это скрипт, который нужно выполнить. Шаблон формируется операторами при использовании кнопки импорта "импорт прайс-листа вручную, из внешнего файла", меню "импорт вручную из файла". После вызова меню откроется диалог импорта из внешнего файла, знакомый, например, пользователям программы Солярис по импорту накладных, где программа запросит имя файла (допускаются форматы DB,DBF,XLS - простой формат таблицы, CSV, TXT с разделителями-табуляции). После выбора файла программа выдаст диалог сопоставления полей в принимаемом файле и в конечной таблице прайс-листа. Это сопоставление может быть сохранено в виде варианта, а имя варианта указывается как имя варианта импорта в нашем поле настроек свойств прайс-листа. Если файл не удается считать тривиальным способом, то для его дополнительных обработок используется скрипт импорта.
  • Шаблон имени файла прайс-листов для распознавания: данный шаблон используется скриптом importprices.pas для фильтрации файлов прайс-листов в каталоге импорта. При указании шаблона используется символ "%", означающий любое вхождение. Примеры: %.xls, Прайс%.xls. Если файл предполагается получать с http-ресурса, то нужно указать здесь полный путь к файлу, и тогда скрипт, найдя "http://" в шаблоне, произведет его скачивание.
  • Электронная почта для отправки заявок: указанная здесь электронная почта будет использована скриптом экспорта, указанным в пункте "скрипт экспорта", либо скриптом экспорта заявок, указанным для контрагента (справочник организаций, кнопка  "параметры экспорта", пункт меню к ней - "параметры экспорта заявки данной организации"), либо общим скриптом экспорта, указанным в настройках программы (установки программы, закладка "Автоматизация/интеграция-заявки поставщикам" поле "общий скрипт экспорта заявок поставщикам"). В скрипте экспорта параметр задается в переменной VarExportEMail. Если параметр не указан, то будет использован аналогичный параметр, указанный для поставщика в справочнике контрагентов. Если не указан и он, то заявка поставщику формироваться не будет.
  • Скрипт экспорта заявок: указывается скрипт, определенный для экспорта заявки по данному прайс-листу. Если скрипт не указан, то будет использован скрипт, указанный в настройках организации в справочнике организаций (кнопка  "параметры экспорта", пункт меню к ней - "параметры экспорта заявки данной организации"), а если скрипт не указан и там, то заявка будет сформирована по указанному в настройках программы общему скрипту экспорта (установки программы, закладка "Автоматизация/интеграция-заявки поставщикам" поле "общий скрипт экспорта заявок поставщикам"). Общая логика генератора заявок поставщикам такова:
    • При использовании меню "Заявки/передача заявок поставщикам", либо при генерации заявок в прайс-листе и установленной в настройках программы опции "предлагать отправить заявки сразу после их генерации" (настройки программы, закладка "общие"), либо при использовании процедуры встроенного скрипта: ExportAllNotSentOutPreqs, программа проверит наличие почтовых адресов отправки и скриптов отправки, и если они прописаны, то запускает скрипты с указанием данных адресов.
    • Адреса не обязательно могут быть, строго говоря, адресами электронной почты. Они могут означать что угодно и используются конкретным скриптом данного прайс-листа на усмотрение программиста. Если, к примеру, поставщик требует выкладки заявки на FTP, то скрипт будет пользоваться протоколом FTP, а данный адрес будет ему не нужен, либо будет использован для уточнения, к примеру, имени подкаталога. Но параметр должен быть все равно указан.
    • Сначала программа проверит наличие адреса в описании используемого прайс-листа. Если найдет, то использует его. Если адрес не найден, то используется адрес электронной почты для экспорта, указанный для поставщика в справочнике организаций. Если и там не заполнен адрес. то экспорт заявок данному поставщику производиться не будет.
    • Далее программа проверяет наличие скриптов: если прописан скрипт экспорта к конкретному прайс-листу, то будет использован он, если нет, то будет использован скрипт, прописанный к конкретному поставщику, а если и он не прописан, то будет использован общий скрипт, указанный в настройках программы. Если общего скрипта тоже не существует, то заявки сформированы не будут.
  • Вариант печатной формы для вложения в экспортируемую заявку: в реестре "заявки поставщикам" по кнопке печати, подменю "печать одной заявки" можно организовать различные формы печати заявок, по-умолчанию уже установлен вариант "стандартный", но можно сформировать сколько угодно печатных форм. Если указать имя варианта, например "Стандартный", либо другого существующего, то программа при экспорте заявки сформирует печатную форму в формате PDF и передаст скрипту имя файла, который он может использовать, вложив его в письмо с заявкой, либо как-то иначе.
  • Прайс готов к использованию: Если флаг выставлен, то прайс-лист будет представлен в сводном прайс-листе, иначе он рассматривается системой как недооформленный, черновой.

После произведенных настроек импорт прайс-листа будет осуществляться общим скриптом импорта прайс-листов, запускаемым либо по таймеру, либо по событию -изменениям в сканируемом каталоге, либо  с запуском программы с указанием в командной строке имени скрипта. Также можно произвести ручной импорт прайс-листа, используя кнопку "импорт прайс-листа вручную, из внешнего файла", и меню "автоматический импорт из файла", тогда будет запрошен файл импорта прайс-листа, а к нему будет применен скрипт импорта. Либо можно воспользоваться полностью ручным импортом прайс-листа через диалоги сопоставления полей, подменю "импорт вручную из файла" к указанной кнопке. Данный способ хорош, когда используются разовые прайс-листы, и их автоматизация не требуется.

Сформированные прайс-листы будут автоматически доступны в своднике, если включен флаг "прайс-лист готов к использованию". Также в колонках "сформирован" и "принят" в таблице шапок прайс-листов (а также в сводном прайс-листе, на закладке "прайс-листы") можно увидеть дату и время формирования прайс-листа и его принятия в базу данных. За дату формирования берется либо дата, указанная каким-либо образом в прайс-листе и импортированная скриптом (это может быть специальное поле в файле прайс-листа), либо дата создания файла, либо, если невозможно выяснить, то дата получения письма с прайс-листом). 

Работа с составом прайс-листа

В общем случае, состав прайс-листов может быть сформирован и вручную. Так или иначе, строки прайс-листа всегда доступны для редактирования. Для этого нужно перевести курсор в нижнюю таблицу справочника прайс-листов, и использовать сплывающее меню, либо горячие клавиши (F2,Ins,Del), либо кнопки редактирования состава документов на основной панели окна прайс-листов. Также доступны разные фильтрации и сортировки состава прайс-листов (правая верхняя часть окна прайс-листов).

Важную роль в работе сводного прайс-листа играет систематизация наименований товаров и производителей, или, другими словами, регистрация кодов товаров и производителей: товар в прайс-листе ассоциируется с товаром в собственном справочнике товаров организации, а производитель - соответственно с производителем. После того, как для строки прайс-листа получены коды из нашего собственного справочника, мы уже можем работать со сводником в своих терминах, плюс к этому мы можем сбить одинаковые товары  в одну группу, внутри которой они будут отсортированы  по цене (либо по цене со скидкой), что наглядно отобразит лучшие предложения, а также поможет автозаявке сделать правильный выбор. Изначально при каждом создании строки прайс-листа, либо ее редактировании программа пытается автоматически зарегистрировать товар и производителя, происходит это по такой схеме:

  • Если в прайс-листе указан штрихкод, то программа пытается найти товар с таким штрихкодом в справочнике товаров. Если находит, то строка прайс-листа прикрепляется к этому коду справочника товаров. Данная система работает, если справочник товаров детализирован до производителя и штрихкода, то есть каждый отдельный товар отдельного производителя с отдельным штрихкодом будет выведен отдельной строкой в справочнике товаров. Такая система часто используется в складских программах, однако она имеет существенный недостаток: товары от разных производителей будут считаться разными в сводном прайс-листе, и не могут быть сбиты в одну группу. На наш взгляд, лучше, все-таки, справочник товаров вести отдельно от справочников производителей, а значит и штрихкод связать с  товаром уже в номенклатурном справочнике будет неправильно. 
  • Существует справочник "штрихкоды от производителей" (В меню программы "Справочники"/штрихкоды от производителей)
    Штрихкоды о...
    Штрихкоды от производителей Штрихкоды от производителей
     Этот справочник позволяет вести реестр штрихкодов, сопоставляя штрихкод с элементом справочника товаров и элементом из справочника производителей. Так мы ведем реестр штрихкодов, если справочник товаров не связан со справочником производителей, и штрихкодом не связывается. Если таковой справочник существует, то он будет использован системой автоматической регистрации для выявления кода товара и кода производителя для строки прайс-листа, если не нашел ничего по предыдущему пункту. Данный справочник может быть сформирован, например, по данным складской программы, по соответствующему справочнику, либо по приходным накладным.
  • Если штрихкод не указан, либо указанный штрихкод не найден в наших справочниках, то система попытается найти наименования в справочниках товаров и производителей, совпадающие по нормализации в наименованиями в прайс-листе. Нормализация наименования - это техническое сокращение, убирающее из текста наименования все лишние знаки, а также заменяющее общеупотребимые термины их сокращенными, приведенными к одному виду аналогами. Таким образом мы получаем наименование, приведенное к техническим более простому виду, без потери информации, предполагая, что если товары, либо производители имеют одинаковое нормализованное наименование, то они будут одинаковыми. Правила нормализации прописаны в базе данных, то есть, их всегда можно переопределить. Каждое описанное удачно правило может привести к автоматической регистрации новых сотен строк, в зависимости от частоты применения этого правила, и количества вариантов разночтений, попадающих под это правило.
  • Если в справочнике не найдены одноименные по нормализации наименования, то система обращается к базе знаний (глоссарии): к каждому номенклатурному коду, либо коду производителя накапливаются все известные его написания, и, обращаясь к этой базе, мы можем расширять возможности автоматической регистрации. Пополняется же база знаний либо засчет импорта их из складских модулей, применяющих аналогичные системы, либо вручную оператором, с использованием диалогов поиска. При синхронизации вручную база знаний пополняется, и следующие связи для таких же наименований будут происходить автоматически.

Все позиции, которые система не смогла зарегистрировать автоматически, могут быть обработаны вручную, при этом система пополняет свои глоссарии, что дает возможность в будущем эту работу не проводить заново для данных написаний товаров и производителей. Для того, чтобы запустить процесс ручной регистрации, нужно в окне "прайс-листы" по кнопке "Регистрация товаров, производителей, стран" выполнить нужный пункт меню (регистрация товаров, либо регистрация производителей, либо регистрация пары товар-производитель, если мы ведем справочник товаров с указанием производителя). Система пойдет по всему отфильтрованному списку составов прайс-листа (нижняя таблица в окне "прайс-листы", это могут быть все реестры, либо выбранный один реестр), попытается зарегистрировать самостоятельно и, если не безуспешно, то выдаст диалог для регистрации с удобными поисками в наших справочниках и возможностью их пополнения на лету. Подробнее о регистрации товаров, производителей, стран.

Используя фильтры по составу (все прайс-листы, либо только выбранный) и по регистрациям (все, зарегистрированные, не зарегистрированные), можно увидеть статистику по количеству зарегистрированных/незарегистрированных товаров/производителей.

Идеальной будет считаться ситуация, если все строки прайс-листов согласованы с системным справочником: тогда мы при анализе предложений в сводном прайс-листе будем иметь идеальную ситуацию: все предложения одного товара будут сгруппированы и отсортированы по ценам. Еще более интересные перспективы открываются для автозаявки, когда из программы берется дефектура - список товара, необходимого к заказу, и автоматически распределяется по лучшим предложениям. Однако, если регистрации не происходит, то все строки прайс-листов все равно будут представлены в своднике, и будут отсортированы по их наименованию, и, с учетом возможностей фильтрации и поиска, могут быть достаточно быстро найдены и использованы в заказе.