AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.02.2007, 21:20   #1  
zemlyn is offline
zemlyn
Участник
Аватар для zemlyn
 
146 / 44 (2) +++
Регистрация: 28.01.2004
не отрабатывает сопоставление по поставщикам
dax 3.0 sp4fp1
Добрый день, подскажите пожалуйста по такой ситуации
(не уверен, в какой из топиков обращаться, но код х++ я тоже приведу)

Ситуация следующая: сопоставляю проводки по поставщику выбранной датой.
была задолженность поставщику 100рублей
сопоставили 30.09.06 100руб.
рассопоставили 31.10.06 100руб.
теперь хочу 31.10.06 снова сопоставить на 100рублей
Не дает: маркирую проводки , жму обновить, галки слетают, суммы прежние. Никаких сообщений
(Возможно тут уже будет готов ответ, тогда можно было ветке по функционалу спрашивать , но если нет, то рассказываю дальше)

Открываю чудо-метод (умещается на одном экране монитора 22века c разрешением 160'000*90'000
calcvendsettlement.settleNow() и пристально изучаю
Нахожу такой код (на последнем sp5fp2_allupdated тоже он есть), похоже относится к книге покупок (// EVZ, Purchase book -->)

PHP код:
  //Valu Reverse datePrinciple -->
            
paymentReversedAmount this.reversedAmount_RU(paymentReversedAmounts,transactionDate);
            if (
abs(paymentReversedAmount) > abs(custVendTransCredit.remainAmountCur()))
            {
                
specTransCredit.balance01 0;
                continue;
            }
            
paymentReversedAmount custVendTransCredit.remainAmountCur() - paymentReversedAmount;
            if (
abs(specTransCredit.balance01) > abs(paymentReversedAmount))
            {
                
paymentReversedAmount     =  specTransCredit.balance01 paymentReversedAmount;
                
specTransCredit.balance01 -=  paymentReversedAmount;
                if (! 
specTransCredit.balance01)
                {
                    continue;
                }
            }
            else
            {
                
paymentReversedAmount 0;
            } 
Не буду рассказывать сколько раз смотрел на переменную paymentReversedAmount (и её содержимое) и пытался согласиться (или примириться) с её названием Но в конечном итоге, расшифровка кода да Винчи привела к следующему выводу:

Если если мы рассопоставили числом Х сумму, то этот рассопоставленный кусок платежа нельзя снова сопоставить этим же числом Х (и ранее видимо тоже)

Это идеологически верно?
И какое бы сообщение можно было бы выдать пользователю в таком случае (и что тогда проверять при этом?)
Старый 22.02.2007, 16:05   #2  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
В общем - короче - картина такая:
Код формы сопоставлений при заполнении сумм в specTrans, использует текущее значение суммы в валюте из custTransOpen/vendTransOpen.
Теперь представим себе ситуацию:
платеж на 100 рублей от 1 числа
потом мы его 5ым числом с чем-то полностью сопоставляем,
потом 20ым числом - отменяем сопоставление.
Соответственно - в настоящий момент времени - у нас в открытой проводке сальдо равно 100 рублям и ты вполне можешь поставить эту цифру в сумму сопоставления.
В то же время - по состоянию между 5ым и 20ыми числами - проводка БЫЛА СОПОСТАВЛЕНА. И пытаться ее снова сопоставить какой-то датой из этого промежутка - некорректно. Ну а методы на тему reversedAmount просто считают все отмененные сопоставления по проводке, отмененные не той датой, которой были проведены исходные сопоставления. А потом сумма этих отмененных сопоставлений вычитается из текущего баланса проводки (грубо говоря).
Так что все логично. Чисто технически, выводить на форму сопоставления не текущие, а исторические сальдо каждой проводки на дату сопоставления было бы очень затратно с точки зрения нагрузки на сервер. Хотя с чисто финансовой точки зрения - это было бы логично. Тогда в specTrans попадала бы сумма сопоставления, основанная на реальном сальдо проводки на дату. Но поскольку технически такой режим сопоставления реализовать было невозможно, автор просто заткнул, как смог, дырку, поставив вычитание суммы отмененных другой датой сопоставлений из введенной пользователем суммы сопоставления.
А ты как раз попал в граничный режим - то есть - не совсем понятно - как именно считать открытый баланс по проводке на 31.10. Была ли проводка на эту дату открытой, если сопоставление как раз только что отменили?
За это сообщение автора поблагодарили: zemlyn (2).
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
сопоставление по клиенту с учетом финансовых аналитик? Aquarius DAX: Функционал 3 20.12.2008 10:05
Сопоставление кассовых ордеров chel DAX: Функционал 2 24.12.2004 05:36
Сопоставление фактур с оплатами tolstjak DAX: Функционал 3 27.09.2004 18:40
"Сопоставление фактур с оплатами" и "Сопоставление открытых проводок" chel DAX: Функционал 2 16.09.2004 12:03
сопоставление открытых проводок - 'коррекция' в основной валюте фирмы sguryev DAX: База знаний и проекты 0 18.12.2001 15:14

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:26.