Инструменты пользователя

Инструменты сайта


axapta:alexeys:курссопоставления



Проект Курс сопоставления

Что сделать

Вводная

1. Есть клиенты, им продается товар и услуги
2. С каждым клиентом может быть достигнута договоренность о специальном для него курсе, по которому клиент оплачивает продажу
  *Если клиент платит в национальной валюте, то он платит столько сколько выписали в документе
  *Если клиент платит в другой валюте, то она платит по специальному курсу
1. Важно, что договоренность может быть достигнута не только в момент продажи, но и в любой другой момент. Например, позвонили клиенту, напомнили об оплате, договорились о новом курсе

Постановка задачи

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

Пример

  • 10.01.05 Клиенту продали товар на 100 доларов, 2900 рублей
  • 15.01.05 Договорились о спецкурсе 27, текущий курс 28.5
  • 15.01.05 Запустили переоценку. Переоценка для этого клиента создала нереализованную курсовую разница на -200 рублей
  • 20.01.05 Клиент оплатил 2500 по курсу 26, после согласования, продажа полностью сопоставлена с платежом и создана проводка с реализованной курсовой разницей на на -100 рублей.

Как решать

I. Создание полей для хранения информации о Курсе сопоставления

1. Создание полей.
  * Для хранения курса валюты проводки обычно создается два поля: курс валюты проводки ([[~ExchRate]]) и курс основной валюты ([[~ExchRateSecondary]]). В случае если для указания курса валюты проводки не используется триангуляция, заполняется только поле [[~ExchRate]], в которое записывается курс валюты по отношению к основной валюте компании (курс за 100 единиц основной валюты). Если используется триангуляция, в [[~ExchRate]] записывается курс валюты проводки по отношению к валюте триангуляции, а в [[~ExchRateSecondary]] – курс основной валюты к валюте триангуляции. Таким образом, на основании полей [[~ExchRate]] и [[~ExchRateSecondary]] всегда можно вычислить курс (или кросс-курс) валюты проводки к основной валюте компании.
  * Для хранения [[КурсСопоставления]] также надо создать два поля. Для пользователя будет доступно только поле [[~ExchRate]]. В поле [[~ExchRateSecondary]] система сама должна проставлять курс основной валюты по отношению к валюте триангуляции, если курс валюты проводки на дату проводки указан с триангуляцией в справочнике [[~ExchRate]] (для выяснения этого можно воспользоваться функцией ~Currency::triangulation()).
  * Если возникнет потребность в вводе обратного курса, это следует организовать с помощью edit-метода (так же, как это сделано в форме справочника «Курсы валют»).
  * Хранить курсы, вероятно, следует в таблице [[~CustTransOpen]], так как «желаемый курс» - свойство открытой проводки. После сопоставления курс будет храниться в таблице [[~CustSettlement]].

—- !!(зел)а почему в ~CustTransOpen? может просто в ~CustTrans? MazzyMazzy /27.01.2005 20:17/!!!!Потому что «курс сопоставления» - свойство открытой проводки. Сопоставление и переоценка работают с открытыми проводками!!

!!(зел)Ну и что? Пользователи то работают с накладными и платежами. Пользователи работают с клиентскими проводками. Пользователей можно заставить работать с открытыми проводками. Какая разница, где хранить курс? А открытые проводки могут пересоздаваться, если пересчитать график. В открытые проводки надо вспоминать курс, если будет выполнено рассопоставление. Может быть хранить курс где-нибудь в обычной клиентской проводке? а в открытой только доставать его? MazzyMazzy /06.02.2005 03:22/!!


2. Добавление элементов дизайна для редактирования полей.
  * Возможность изменения [[КурсСопоставления]] следует добавить в форму «Открыто» ([[~CustTransOpen]]; доступна из справочника клиентов по нажатию на кнопку «Проводки», а затем на кнопку «Открыто»).
  * Кроме того, [[КурсСопоставления]] должен как минимум выводиться в форме «Сопоставление открытых проводок» ([[~CustOpenTrans]]; доступна из справочника клиентов по нажатию на кнопку ~Функции/Сопоставление открытых проводок»).
3. Дополнительный сервис
  * [[КурсСопоставления]] должен автоматически устанавливаться равным фиксированному курсу, если фиксированный курс не равен 0
  * [[КурсСопоставления]] должен автоматически устанавливаться из формы платежей в журнале платежей. Для этого надо добавить поля в строки журнала платежей клиентов
  * [[КурсСопоставления]] возможно будет правится из накладных. Продавец заходит в журнал накладных и правит курс, если накладная еще не сопоставлена ??Необязательный пункт??

II. Обработка желаемого курса при сопоставлении открытых проводок

  • Желаемый курс должен подставляться в поле «Кросс-курс» при отметке одной из открытых проводок для сопоставления. При этом следует учесть, что поле «Кросс-курс» доступно для редактирования только для проводок по накладным в том случае, если предварительно была отмечена основная оплата (кнопкой «Отметить оплату»).
  • Желаемый курс необходимо инициализировать и при реверсе сопоставленных проводок (так как в этот момент заново создаются строки в таблице ~CustTransOpen). При этом необходимо проверить, используется ли триангуляция по валюте проводки на дату проводки. Если нет – ~ExchRate можно получить, разделив ~SettleAmountCur на ~SettleAmountMST из таблицы ~CustSettlement (сопоставленные проводки). Иначе, курс основной валюты на дату проводки следует взять из справочника «Курсы валют», а ~ExchRate получить, учитывая кросс-курс валюты проводки к основной валюте, который получается делением ~SettleAmountCur на ~SettleAmountMST.

III. Обработка желаемого курса при переоценке

  • Для того, чтобы «желаемый курс» был учтен при переоценке, следует доработать алгоритм расчета переменной ~newAmountMST в методе класса ~CustVendExchAdjTrans.exchAdjustTrans(). При этом, возможно, придется изменить Map ~CustVendTransOpen.
axapta/alexeys/курссопоставления.txt · Последнее изменение: 2018/04/04 00:33 (внешнее изменение)