С 4 августа по 30 сентября 2015 года предоставляется скидка 10 % на bpm’online sales omnichannel — CRM-систему для средних и крупных компаний с большим количеством различных каналов продаж.
Специальная стоимость распространяется как на облачную версию продукта, так и при развертывании системы на собственных мощностях компании.
Также дополнительно можно приобрести пакет bpm’online field force для управления полевыми продажами компании.
Подготовьтесь к большим продажам в новом бизнес-сезоне!
Наш потенциальный клиент, компания Сушия, был настолько воодушевлен презентацией и идеями, которые ему озвучили Виталик Кедык и Оля Хорошайло, что еще до старта проекта решил нас отблагодарить
Работая на предыдущем рабочем месте, очень тесно сотрудничали с Сушия. Данный клиент постоянно дарил нам различные сертификаты :), возможно, это один из маркетинговых ходов.
Молодцы!
При создании по счету складского документа, продукты из счета переходят в продукты складского документа с ценой без учета скидки в счете.
Продукт "Вода питьевая негаз. 19 л" имеет прайс под названием "Клиентский" с ценой на продукт 100 руб.
Контрагенту создан персональный прайс по этому продукту на основе "Клиентского" прайса с дополнительной скидкой 20%.
При создании счета для этого клиента по этому продукту, мы видим, что продукт попадает в счет с учетом скидки 20% с итоговой суммой 80 руб.
Итоговая сумма счета также учитывает скидку 20% и равна 80 руб.
Однако, когда мы создаем по счету складской документ, то в него продукт из счета попадает с ценой не 80 руб, а с ценой 100 руб, т.е. скидка из продукта в счете игнорируется.
Сумма всей расходной накладной также равна 100 руб.
Как бы исхитриться, чтобы продукты в расходную накладную попадали из счета с учетом скидки?
Оно конечно можно, руками исправить цену в складском документе, но поскольку доставка воды на дом - это "частые" продажи, то это придется делать слишком часто..
Я полез в код, генерирующий складской документ по счету (CreateBillPayment), но, как я понял, непосредственно копированием продуктов счета в продукты складского документа занимается процедура EnableDatasetFields, вызываемая из процедуры HaveOfferingsInInvoice.
Но изменить процедуру EnableDatasetFields так, чтобы она решила мою задачу и не нарушила функционирование остальной программы, я не не смог. Да и боязно курочить процедуры из скрипта scr_DB.
Подскажите, как лучше и с меньшей кровью решить мою проблему?
Здравствуйте Егор!
Спасибо за подробное описание задачи.
"Егор Николаевич" написал:Однако, когда мы создаем по счету складской документ, то в него продукт из счета попадает с ценой не 80 руб, а с ценой 100 руб, т.е. скидка из продукта в счете игнорируется.
В коробочной версии логика отрабатывает, так как Вы описали, при добавлении продукта в Складской документ нет привязки к счету (данное поле не является обязательным для заполнения), или какому либо клиенту, как следствие в складской расходной накладной мы получаем сумму без учета скидки на клиента.
Я предлагаю следующий вариант решения. Доработаем карточку продукта в Складском документе (wnd_OfferingInMovementEdit). Сделаем привязку к полю Счет
Для реализации логики, необходимо внести изменения в скрипт wnd_OfferingInMovementEditScript , а именно в функцию UpdateValuesByOfferingID.
Изменения внесены между комментариев "//26.03.2012" .
function UpdateValuesByOfferingID(Dataset){
var OfferingID = Dataset('OfferingID');
Dataset('UnitName')= GetOfferingFieldValue(OfferingID, 'DefaultUnit');
var Quantity = Dataset.ValAsFloat('Quantity');if(!Quantity){
Dataset('Quantity')= GetOfferingFieldValue(OfferingID, 'UnitDivision');}
var OfferingMovementTypeID = Self.Attributes('TypeID');//26.03.2012if(!IsEmpty(Dataset('InvoiceID'))){//проверка заполнено ли поле Счет, если нет не выполняем действия
var accountID = GetDatasetFieldValueByID('ds_Invoice',Dataset('InvoiceID'),'CustomerID')//открываем датасет Счетов, и получаем поле Клиент (это будет идентификатор контрагента)
var PriceDataset = Services.GetNewItemByUSI('ds_AccountPrice');
ApplyDatasetFilter(PriceDataset,'AccountID',accountID,true);//фильтруем таблицу детали Прайс-Лист контрагентов
ApplyDatasetFilter(PriceDataset,'OfferingID',OfferingID,true);//фильтруем детать Прайс-Лист контрагентов по интересующему нас продукту
PriceDataset.Open();
var discount = PriceDataset('DiscountPercent');//получаем значение скидки
Dataset('BasicPrice')= Dataset('BasicPrice')+ Dataset('BasicPrice')* discount/100;
PriceDataset.Close();}//26.03.2012if(OfferingMovementTypeID == omtReceipt){
Dataset('BasicPrice')= GetSupplierOfferingBasicPrice(
Dataset('OfferingID'),
Dataset('SupplierID'));}
SetConsignmentID(Dataset);}
После данных действий общая сумма расходной накладной, будет формироваться с учетом скидки.
Хочу заметить что функция UpdateValuesByOfferingID отрабатывает сразу после выбора продукта в карточке, т.е сначала необходимо будет выбрать счет, после чего сам продукт.
Егор, если у Вас есть какие либо замечания, или пожелания по данному вопросу просьба их озвучить.
Здравствуйте, Алексей!
Алимова Анна подсказала еще одно решение.
Оно оставляет складской документ так же отвязанным от счета, как и в коробочной версии, учет скидки происходит при формировании складского документа по счету.
Изменяется в скрипте scr_InvoiceWorkspace функция CopyOfferingsFromInvoice, создающая складской документ по счету.
В строки, копирующие значения цены и стоимости, добавляется учет скидки:
OfferingInOMDataset('Price') = OfferingDataset('Price') * (1 - OfferingDataset('DiscountPercent')/100);
OfferingInOMDataset('BasicPrice') = OfferingDataset('BasicPrice') * (1 - OfferingDataset('DiscountPercent')/100);
OfferingInOMDataset('Amount') = OfferingDataset('Amount') * (1 - OfferingDataset('DiscountPercent')/100);
OfferingInOMDataset('BasicAmount') = OfferingDataset('BasicAmount') * (1 - OfferingDataset('DiscountPercent')/100);
Не могу найти возможность сделать скидку для клиента по конкретному счету. Есть возможность вводить скидку по каждому товару но это очень неудобно. Есть ли такая стандартная возможность?
Для того, чтобы не заносить скидку отдельно для каждого продукта можно использовать понятие "Прайс-листы", то есть, для каждого конкретного контрагента Вы можете на детали "Прайс-лист" в разделе "Контрагенты" указать скидки, которые будут действовать по определенным продуктам или типам продуктов.
Далее, при добавлении продуктов в счет эти скидки будут автоматически учитываться (при условии указания соответствующего прайс-листа), и сумма счета будет рассчитываться с учетом этих скидок.
Если же Вам необходимо видеть на карточке счета, какая скидка была дана, то самый простой способ сделать это - создать дополнительное пользовательское поле и заполнять его вручную.
Инна Безверхняя,
II линия службы поддержки Terrasoft
Можно ли привязать к Терасофту считыватель магнитных карт и реализовать на нем систему дисконтных карт, так чтобы за Клиентом была привязана определенная накопительная карточка и при накоплении определенной суммы, процент скидка увеличивался. Например, как это используют в большинстве магазинах.
Присмотритесь к программному продукту Terrasoft Loyalty http://www.terrasoft.ua/software/loyalty/
Возможно, достаточно будет проинтегрироваться только с учетной системой, чтобы передавать из Terrasoft информацию о %дисконта или бонусах.
Рекомендую связаться с менеджерами и заказать презентацию - они Вам о всех вариантах подробнее расскажут:smile:
Немогу понять как в Terrasoft Loyalty пробивать скидку магнитной карточкой, вроде создал карточку, прикрепил её к контакту, а вот как пробивать скидку при проводе карты по считывателю немогу разобратся
Сканер штрих-кода может быть и USB, но он всеравно эмулирует нажатие кнопок на клавиатуре. Весь фокус заключается в том, чтобы распознать когда срабатывает именно сканер и передать управление соответствующему полю на форме.