06.02.2017, 13:20 | #1 |
Участник
|
Открытые операции по клиенту
Доброго времени суток, уважаемые программисты и консультанты системы АХ 4.0. Пытаюсь разобраться с логикой системы, просьба мне помочь в этом разборе.
Задача: посчитать сумму предоплаты по заказу на продажу. Сумма предоплаты считается следующим образом: display prepaymentAmountMST prepaymentAmountMST() { SpecTrans specTrans; AmountMST amountMST = 0; ; while select specTrans where specTrans.SpecTableId == this.TableId && specTrans.SpecRecId == this.RecId amountMST += specTrans.custTransOpen().AmountMST; return -amountMST; } Здесь видно, что пробегаемся по всем открытым операциям в таблице custTransOpen, которые через таблицу specTrans привязываются к текущему заказу на продажу по RecId (на форме открытых операций это изображается в виде галочки). Открытые операции могут быть с типом "платеж", это когда через журнал платежей загружают операции, которые потом привязывают к нужному заказу на продажу. Также (и это малопонятно для меня) открытые операции могут быть с типом "заказ на продажу", которые система формирует автоматически при разноске/сторнировании накладных. Рассмотрим ситуации с примером: Ситуация №1. Платеж перед накладной. 1) сначала привязывают платеж 100 рублей в предоплату садится сумма платежа 100 рублей. В шапке заказа на продажу во вкладке настройка значение поля "Тип сопоставления" автоматически меняется с "Нет" на "Помеченные операции". 2) потом разносят накладную на 40 рублей, предоплата остается такой же (открытая операция с типом "заказ на продажу" не формируется) 3) отвязывают платеж на 100 рублей (т.е. снимают галку в открытых операциях) Непонятный момент: "тип сопоставления" не изменяется обратно с "Помеченные операции" на "Нет". Т.к. платеж отвязали, в предоплате останется 0 рублей. 4) потом сторнируют эту же накладную на 40 рублей, формируется открытая операция "кредит-нота" с типом "Заказ на продажу" на сумму 40 рублей и привязывается к заказу. в предоплате становится 40 рублей. 5) потом делают "реверс" платежа 100 рублей В открытых операциях создается строчка с типом "Заказ на продажу" которая связана с накладной из п.2 но (еще один непонятный момент) не привязанная к заказу на продажу. В сумме предоплаты остается 40 рублей. В итоге после проделанных манипуляций по разноске накладной и ее сторнировании в предоплате остается 40 рублей. Если бы созданная в п. 5 строчка привязалась к заказу на продажу, то тогда в итоге осталось бы 0, т.к. произошло бы взаимное уничтожение. Я думаю, что это неверно, что в результате манипуляций осталось 40 а не 0. Ситуация №2. Накладная перед платежом. 1) сначала разносят накладную на 40 рублей автоматически формируется строчка в открытых операциях с типом "Заказ на продажу", которая связана с этой накладной, но не привязана к этому заказу на продажу. Это объясняется тем, что во вкладке настройка в шапке заказа на продажу значение поля "Тип сопоставления" стоит "Нет", и система не привязывает эту открытую операцию к заказу на продажу. В предоплате стоит 0 2) потом привязывают платеж на 100 рублей в предоплату садится дополнительно сумма платежа 100 рублей. В шапке заказа на продажу во вкладке настройка значение поля "Тип сопоставления" автоматически меняется с "Нет" на "Помеченные операции". В итоге в предоплате 100 рублей 3) отвязывают платеж 100 рублей (т.е. снимают галку в открытых операциях) Непонятный момент: "тип сопоставления" не изменяется обратно с "Помеченные операции" на "Нет". Т.к. платеж отвязали, в предоплате останется 0 рублей. 4) потом сторнируют эту же накладную на 40 рублей, формируется открытая операция "кредит-нота" с типом "Заказ на продажу" на сумму 40 рублей и привязывается к заказу. в предоплате становится 40 рублей. 5) потом делают "реверс" платежа 100 рублей никакие дополнительные проводки по custOpenTrans в этом пункте не создаются. Сумма предоплаты становится 40 рублей. Опять же мы видим подобную картину, т.е. после всех манипуляций сумма предоплаты не обнулилась, а стала 40. В связи с этим вопросы: 1. Какой идейный смысл несут в системе автоматически создаваемые проводки по custTransOpen с типом "Заказ на продажу" в момент разноски/сторнирования накладных? 2. Почему тип сопоставления salesTable.settleVoucher не изменяется обратно с "Помеченные операции" на "Нет" в момент отвязки платежа? 3. Почему после операции "разноска накладной -> сторно накладной" возникает остаток в сумме предоплаты? Последний раз редактировалось CHESER85; 06.02.2017 в 13:24. |
|
06.02.2017, 16:28 | #2 |
Участник
|
Так устроен функционал расчета задолженности и сопоставления с платежами. Сопоставляется не платеж с заказом/накладной, а открытая проводка по платежу с открытой проводкой по накладной. Открытые проводки также можно формировать например из журнала ГК (начислили штраф клиенту или еще что). В общем, суть такая, что различные документы формируют пул открытых проводок, положительных и отрицательных и уже эти проводки сопоставляются.
|
|
06.02.2017, 16:33 | #3 |
Участник
|
Цитата:
Сообщение от CHESER85
Ситуация №1. Платеж перед накладной.
1) сначала привязывают платеж 100 рублей в предоплату садится сумма платежа 100 рублей. В шапке заказа на продажу во вкладке настройка значение поля "Тип сопоставления" автоматически меняется с "Нет" на "Помеченные операции". 2) потом разносят накладную на 40 рублей, предоплата остается такой же (открытая операция с типом "заказ на продажу" не формируется) |
|