07.08.2006, 09:08 | #1 |
Участник
|
Валюты в CRM
Добрый день всем!
Кто нибудь пытался реализовать валютные прайс листы в системе? Пока вижу только один способ - добавлять собственные сущности валюта курс валют валютный прайс лист и позиции по валютному прайс листу и прикреплять все это к заказам и счетам. Может быть есть какой то способ добавить поле валюта к прайс листу или позиции прайс листа ? |
|
07.08.2006, 12:04 | #2 |
Участник
|
Ходят слухи, что следующая версия системы будет многовалютной!
А пока, можно и скрипты использовать (ограниченно, естественно, только, если на конкретные поля вешать). |
|
07.08.2006, 17:59 | #3 |
Microsoft CRM Certified Professional
|
А откуда слухи? Какие ещё слухи бродят? Что есть почитать по слухам?
|
|
08.08.2006, 09:23 | #4 |
Участник
|
По слухам есть почитать разные околоCRMовские блоги. Они англоязычные, но тем не менее. Кстати, на одном из этих самых блогов я видел не так давно что-то как раз по многовалютности.
__________________
"Поживем - увидим", сказал слепой, больной СПИДом. |
|
08.08.2006, 17:03 | #5 |
Участник
|
Цитата:
Сообщение от KomatoZo
Кстати, на одном из этих самых блогов я видел не так давно что-то как раз по многовалютности.
НО ЭТО не слухи))))) Последний раз редактировалось SidAnn; 08.08.2006 в 17:06. |
|
|
За это сообщение автора поблагодарили: natterru (1). |
09.08.2006, 05:28 | #6 |
Участник
|
Цитата:
Сообщение от SidAnn
и честно говоря так и не понял как они его реализовали. Неужели никто не пробовал? |
|
01.03.2007, 18:12 | #7 |
Участник
|
Тоже буду реализовывать, кто уже эти грабли проехал? Куда грести рассказывайте.
|
|
06.03.2007, 11:29 | #8 |
Участник
|
чтобы реализовать мультивалютность, нужно хорошо знать алгоритм работы прайсной машины (ценообразования). А где бы почитать об этом?
Типа этого, но поподробнее: http://blogs.msdn.com/crm/archive/20...25/770666.aspx |
|
10.03.2007, 20:21 | #9 |
Участник
|
Я реализовал многовалютность, но в связке с MS NAV. Курсы формируются в NAV, получаются в MS CRM при формировании заказа. В приниципе, решение получилось достаточно прозрачным. Единственная проблема: трудоемкая работа при программировании в JS, это отняло немало времени.
|
|
14.03.2007, 19:05 | #10 |
Участник
|
Надо убрать знак валюты в типе money наименования поля. Подскажите как?
|
|
14.03.2007, 19:24 | #11 |
Участник
|
Создал объект "курсы валют"
права у бухов добавлять и менять: атрибуты этого объекта: Дата, курс евро, курс доллара. Во многие объкты надо копировать значение даты и курса да еще и менять значение курса в зависимости от даты. Копировать поля внутри формы легко (js), а это как сделать копирование и подстановку из одной формы в другую ума не приложу... Помогите, кто может... хотя бы примерами похожими на js. |
|
15.03.2007, 06:08 | #12 |
Softline Solutions
|
С помощью js не реализуешь копирование из одной формы в другую. С помощью workflow можно обновлять значения в связанных объектах, но у workflow есть ограничения (запуск правила на события: create, manual, change state и доступны только объекты типа пользователь). Чтобы скопировать значение из одной сущности в другую надо сервис на .NET, который будет запускаться на onchange поля.
|
|
15.03.2007, 06:38 | #13 |
Участник
|
Цитата:
Код: function nameLabel (fieldname, str) { var oLabel = document.getElementById(fieldname+"_c"); if(oLabel != null) oLabel.innerText = str; } nameLabel( "totalamount", "Сумма заказа без рублей" ); |
|
15.03.2007, 10:38 | #14 |
Участник
|
на onLoad формы сделайте вызов веб службы либо aspx страницы, возвращающей ближайший курсы доллара\ евро на текущую дату.
есть веб страница - получает в заголовке код объекта, возвращает что то типа <nodeid >значение</nodeid > есть функция на js - вызывает эту страницу Код: function GetSingleFromPage (url, nodeid ) { var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("post", url, false); xmlhttp.send(); var startTag1 = "<"+nodeid+">"; var endTag1 = "</"+nodeid+">"; var start =0; var end = 0; start = xmlhttp.responseXML.xml.indexOf(startTag1, end) + startTag1.length; end = xmlhttp.responseXml.xml.indexOf(endTag1, end+1); text = xmlhttp.responseXML.xml.substring(start, end); if(text != null) { return text; } else { alert(xmlhttp.responseXML.xml); } return null; } Последний раз редактировалось sam; 15.03.2007 в 10:47. |
|
26.03.2007, 16:03 | #15 |
Участник
|
Не совсем понятный код, надо бы побольше примеров на jscript.net посмотреть. Посоветуйте чего почитать?
|
|
27.03.2007, 12:06 | #16 |
Участник
|
Там все просто, создаете aspx страницу - в своем веб приложении, либо свое веб приложение в visual studio. Эта страница получает какой либо параметр, обрабатывает его и возвращает что нужно вам. Там пишите на c# или vb.net.
Там нужно стереть все из html описания формы и вставить свой код. что типа такого Код: <%@ Import Namespace="CRMadv" %> <%@ Import Namespace="CRMadv.CrmSdk" %> <%@ Page Language="c#"%> <script runat="server"> protected override void Render(HtmlTextWriter writer) { Response.Clear(); Response.ContentType = "text/xml"; // Load the requested "objecttypename" and "db" from the querystring if( Request.QueryString["ObjectTypeName"] != null) { string objecttypename = request.QueryString["ObjectTypeName"]; ................обработка......... } else { Response.Write("<error>Не указано имя сущности, для нумерации</error>"); } } </script> Или можете написать веб сервис и вызывать его, есть пример в Sdk (3.0.4)в разделе ClientSideScripting\ Accessing Web Services сам все искал в поисковике, CrmSdk http://www.stunnware.com/crm2 http://blogs.msdn.com/crm http://ronaldlemmen.blogspot.com |
|
27.03.2007, 17:01 | #17 |
Участник
|
Попробывал, лезет куча ошибок, от массы прочитанного кода голова пухнет.
Из анализа уже созданного я понял, при старте CRM нужно проверять есть ли курс евро и доллара на текущую дату, если нет, то выдавать пугающее сообщение. Т.е. из сущности "Currency" имеющей grid с формами, где хранятся поля с курсами валют и имя формы = дате курса, т.е имя формы с курсами валют копируется из поля дата курса и = сегодняшней дате для последней формы. Вот эту последнюю форму и надо сделать текущей и извлечь из нее в глобальные переменные значение полей курсов валют. Для winforms зарача была бы простая, неужели здесь надо городить такой огород, чтобы прочитать значение двух полей? Последний раз редактировалось natterru; 27.03.2007 в 17:21. |
|
28.03.2007, 06:45 | #18 |
Участник
|
Вам собственно что нужно?
Чтобы автоматически считывать ближайший курс на дату? тогда создаете веб приложение с одной веб страницей, подсоединяетесь к веб службе ms crm на вашем сервере. В html код страницы копируете примерно то что показывал выше, только пишите в качестве namespace название своего приложения. В самом коде страницы делайте запрос - QueryExpression - на объект курс валют по дате ближайшей к текущей. Страница должна возвращать текущий курс валют Это в конце когда пишете Response.Write ("<currencyondate>"+ваш_курс+"</currencyondate>"); В форме, например заказа, на onload, вызывайте эту страницу через функцию GetSingleFromPage ( "http://ваш_сервер/ваше_приложение/ваша_веб_страница" , "currencyondate") , она вернет вам текущий курс, преобразуйте в число и дальше используйте как вам нужно. А можно проще, создать отношение между курсом валют и объектами счет\ заказ Настроить для представления lookup сортировку по убыванию по дате курса и пусть пользователи сами выбирают курс, текущий всегда будет вверху. |
|
|
За это сообщение автора поблагодарили: natterru (1). |
28.03.2007, 13:01 | #19 |
Участник
|
Спасибо, я все понял, ты настоящий друг! Будешь в Питере с меня пиво! Все что сделал до этого прибил. Сделал сущность "курс доллара" и "курс евро" связал их с продуктом, предложением... и т.д. Понял, что нужно сделать сопоставление. тем более пользователи не должны выбирать курс, он для них только ОДИН - на текущую дату. Наверное надо сделать нередактируемый лук-ап? Не нашел где и как сделать сортировку по дате курса... Надеюсь, что моя песочница когда-нить закончится. О общем мое спасибо уже просто не знает границ!
|
|
28.03.2007, 13:57 | #20 |
Участник
|
Пожалуйста : )
Сопоставление не нужно - никто же не будет создавать заказы\ предложения из курса валют. Нужно фильтровать лукап. на Gotdotnet в разделе crm приводился пример фильтрации лукапа, писал здесь: Не знаю поддерживаемая ли это кастомизация, так что на свое усмотрение, у себя использовал - работает. По дате раньше не фильтровал, сейчас попробовал, вот такой пример: там главное смотреть как работают условия в фильтрах - это sdk раздел fetch Код: // абсурдный пример - в курсе валют при выборе валюты отображаем только валюты дата создания которых позже или равна текущей. //имя лукапа который нужно фильтровать var oField = crmForm.all.etk_currency_rate; // дата по которой нужно фильтровать var mydate = new Date(); // преобразуем дату в строку формата = Месяц\ день\ год var strdate = mydate.getMonth().toString()+"\\"+mydate.getDay().toString()+"\\"+ mydate.getYear().toString(); // Включаем фильтр - <entity name='etk_currency'> пишем код сущности которая должна грузиться из лукапа // <condition attribute='createdon' operator='on-or-after' фильтруем по атрибуту дата создания, условие 'on-or-after' - такая же или позже // value=' " + strdate - как значение подставляем нашу дату oField.lookupbrowse = 1; oField.additionalparams = "fetchXml=<fetch mapping='logical'><entity name='etk_currency'><all-attributes/><filter type='and'><condition attribute='createdon' operator='on-or-after' value=' " + strdate +"' /></filter></entity></fetch> "; |
|
|
|