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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.10.2024, 20:04   #1  
Lankey is offline
Lankey
Участник
 
127 / 28 (1) +++
Регистрация: 19.05.2020
Как правильно сопоставлять платежи с оптатами?
Ax2012
Мне нужно сопоставлять платежи с оплатами при импорте строк журнала. Мне дается при импорте номер счет-фактуры, с которой надо сопоставить строку журнала. Это надо делать как при импорте журналов клиентов так и для строк журналах платежей поставщиков (в любом случае делаем сопоставление). Если оплата неполная, то сумма должна корректно перерасчитаться на проводке помеченной к оплате.

Вот кода, например https://axgenius.blogspot.com/2016/11/how-to-mark-vendor-open-settlement.html сопоставляет для поставщиков и использует custvendopentransmanager Нахожу также код , где используется spectransmanager (ну, например, даже тут Сопоставление VendTrans)
Как правильно это делать? И можно ли сделать так, чтобы работал код и для пославщиков и для клиентов или есть какие-то различия в бизнес-логике такие, что это незозможно?
Спасибо

PS: Также вопрос про markedInvoice на строках журнала. Нужно ли его заполнять при сопоставлении платежей с оплатами поставщика? Вроде как не заполняется, но не понимаю почему он не нужен

Последний раз редактировалось Lankey; 22.10.2024 в 20:13.
Старый 23.10.2024, 02:15   #2  
Lankey is offline
Lankey
Участник
 
127 / 28 (1) +++
Регистрация: 19.05.2020
А тут https://www.theaxapta.com/2015/03/au...ice-in-ax.html иcпользуют custVendTransData
PS: Прошу прощения за опечатки. Впопыхах писала первое сообщение, и сейчас уже нельзя ни удалить, ни исправить
Старый 23.10.2024, 10:45   #3  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Первая ссылка - маркирование проводок по документам, которые еще не разнесены в системе (в момент разноски сформируется проводка и она будет сопоставлена с той, по которой сделана маркировка перед разноской).

Ссылка из второго сообщения - сопоставление уже сформированных проводок (т.е. когда у вас уже есть в системе и накладная и оплата).

Варианты реализации, которые видятся (оба варианта - что маркирование до разноски\что после для CustVend будут выглядеть +- одинаково (использование мапов CustVendTrans\CustVendTransOpen и т.д. думаю поможет сделать идентичным, пример из коробки CustVendAutoSettlement_RU), если не использовать markedInvoice или допилить его использование для поставщиков) :

- Выполнить маркирование не разнесенной строки журнала с уже проведенной проводкой накладной (в момент создания\отдельным методом после создания всех строк). Пример как это сделать есть в первой ссылке.

Для клиентов из коробки можно использовать поле markedInvoice (заполняем номер, код компании) и дополнительно вызываем код из DS write формы клиентов платежей - по сути он выполняет тоже самое, что и код маркирования, в случае оплаты для одной накладной, скажем так - код получается чуть проще. Для поставщиков не используется, только если допиливать для своих нужд.

- Выполнить разноску строки журнала и уже после сопоставлять сформированные проводки оплаты и накладной (пример из второго сообщения).

Я сейчас уже не вспомню всех нюансов, но о чем стоит подумать и посмотреть :

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

- если журналы большие - много строк, мало клиентов - то сопоставление в момент создания\разноски журнала, может стать узким местом и возможно имеет смысл сделать отдельную ПО для сопоставления уже в отдельной транзакции после разноски.
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: Lankey (1).
Старый 23.10.2024, 14:04   #4  
Lankey is offline
Lankey
Участник
 
127 / 28 (1) +++
Регистрация: 19.05.2020
Спасибо, Сергей! Да, мне нужно строку неразнесенного журнала промаркировать с разнесенной счет-фактурой. В отличае от 1го примера, у меня могут быть частичные оплаты. То есть, сумма оплаты меньше, чем сумма счет-фактуры. Поэтому,видимо, не нужно обновлять сумму на журнале,как в примере, а вызывать custvendopentransmanager.updateSettleAmount(myJourLinePaymAmount). Вопрос, нужно ли потом еще и taxWitholdTrans пересчитывать(. В примере этого нет, а вот в форме vendOpenTrans editSettleAmoutCur() вызывает такой пересчет)

Не понимаю, почему столько вариантов даже в стандарте для простого, казалось бы, сопоставления. Будто по минному полю ходишь (. Может, есть какая-то документация для разработчиков, где можно почитать о том, как правильно это делать, чтобы не наломать дров? Как Вы все с этим разбирались ? По коду или читали где-то док с архитектурой этого процесса (какие классы и таблицы за что отвечают и тд)
Старый 24.10.2024, 08:01   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Насчет обновления суммы в явном виде updateSettleAmount - насколько я понимаю, это нужно делать, если вам необходимо сопоставление только на часть суммы из каждой проводки (если же надо сопоставить всю сумму одной из проводок, можно не вызывать этот метод явно, т.к. сопоставление само разберется и сопоставит на меньшую сумму проводок, но возвращаясь к моменту - что у вас может быть несколько не обработанных оплат, которые надо сопоставить с одной накладной, этот метод вызывать придется).

Про taxWitholdTrans - зависит от конфигурации и используется ли у вас эта функциональность, не припомню, чтобы явно приходилось работать с обновлением данных после сопоставления проводок по поставщику.

Думаю за базу можно взять метод в клиентах LedgerJournalEngine_CustPayment\updateMarkedInvoiceSpecTrans и сделать аналогично и для поставщиков.

Я бы не назвал сопоставление простым - достаточно посмотреть на метод settleNow)

Доков по архитектуре данного процесса я не видел (возможно они где то и есть), чата гпт не было, поэтому знания приходили либо от старших товарищей, либо через анализ кода, либо с форума.
__________________
Sergey Nefedov
Теги
ax2012

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Передача таблицы TempDB по маршруту класс1-форма-класс2, как правильно? mikki_messer DAX: Программирование 7 15.07.2019 16:07
D365 как правильно переопределить метод в таблице. Skolos DAX: Программирование 19 31.01.2018 18:57
Иностранные налоговые платежи Mileyko DAX: Программирование 5 13.07.2010 18:58
aEremenko: Как правильно подобрать оборудование и понять, сколько оно будет стоить? Blog bot DAX Blogs 0 17.04.2007 12:00
Как планировать платежи... skof DAX: Прочие вопросы 14 12.01.2005 15:14
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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