25.09.2010, 15:19 | #1 |
----------------
|
CustVendSettle просмотр кода
DAX 2009 RU 5
просматривал код и возникли вопросы - метод settleNow строка 552 и далее X++: if (!areDebitsDone && custVendTransDebit.AmountCur != 0) { //find the offset to the custVendTransDebet still open select firstonly custVendTransCredit order by RecId desc where custVendTransCredit.RecId == custVendTransDebit.OffsetRecId; this.setStillOpenValues(custVendTransDebit, custVendTransOpenDebit.RecId, specTransDebit.Balance01, custVendTransCredit.Dimension, debitTransState); } if (!areCreditsDone && custVendTransCredit.AmountCur != 0) { this.setStillOpenValues(custVendTransCredit, custVendTransOpenCredit.RecId, specTransCredit.Balance01, custVendTransCredit.Dimension, debitTransState); // ??? } - метод processStillOpenTransactions Делается цикл по еще открытым проводкам. X++: for (currentIndex = stillOpenIndex; currentIndex > 0; currentIndex--) { // Find over/under amount for the company currentCompany = stillOpenCompany[stillOpenIndex]; changecompany(currentCompany) { // There can be multiple transactions per company in the index, but we only want to // process each company once for over/under taxes. Will use set called companiesWithTaxProccesed // and if company is already in the set this is indication that taxes where already calculated // and shouldn't be calculated again. if (companiesWithTaxProcessed.in(currentCompany)) { calcTaxForCompany = false; } else ... - метод processStillOpenTransactions объявлена переменная isCrossCompany. Единственный раз ее значение меняется в цикле по проводкам. То есть, с какого-то момента все последуюшие проводки обрабатывются с признаком isCrossCompany = true, независимо от данных в самих проводках. Это такая задумка или недодумка? Последний раз редактировалось Wamr; 25.09.2010 в 15:51. |
|
|
За это сообщение автора поблагодарили: kashperuk (5), Logger (3), ziva (2), MikeR (4), gl00mie (5). |
28.09.2010, 20:15 | #2 |
Участник
|
Это еще не все. Вы взгляните на строки в методе settleForDifferentProfilesOrPrepayment:
X++: if (exchRateDiffCalcType == ExchRateDiffCalcType_W::Standard || firstCustVendTrans.RecId == custVendTransCredit.RecId)
{
closeAmountMST = _settleAmountMstDebit;
}
__________________
yes |
|
11.10.2012, 21:59 | #3 |
Программатор
|
\Classes\CustVendSettle\settleForDifferentProfilesOrPrepayment
X++: if (reversePrepayment) { CustVendSettle::postingProfileSettle_RU(ledgerVoucher, custVendTransDebit, this.amount(_settleAmountCurCredit), custVendTransSettlement, settlementGroupPlaceHolder, custVendTransDebit.Dimension, custVendTransDebit.PostingProfile, LedgerTransTxt::Settlement, this.amount(- closeAmountMST), 0, custVendTransCredit.CurrencyCode); CustVendSettle::postingProfileSettle_RU(ledgerVoucher, custVendTransCredit, this.amount(-_settleAmountCurCredit), custVendTransSettlement, settlementGroupPlaceHolder, custVendTransCredit.Dimension, custVendTransCredit.PostingProfile, LedgerTransTxt::Settlement, this.amount(closeAmountMST)); } else { CustVendSettle::postingProfileSettle_RU(ledgerVoucher, // </GEEU> custVendTransDebit, ?????????????????????????????????????????????????????????????????????? this.amount(_settleAmountCurDebit), custVendTransSettlement, settlementGroupPlaceHolder, custVendTransCredit.Dimension, custVendTransCredit.PostingProfile, LedgerTransTxt::Settlement, /* <SYS> this.amount(_settleAmountMstDebit)); } else { CustVendSettle_Vend::postingProfileSettle(ledgerVoucher, </SYS> */ // <GEEU> this.amount(closeAmountMST)); CustVendSettle::postingProfileSettle_RU(ledgerVoucher, // </GEEU> custVendTransDebit, this.amount(-_settleAmountCurDebit), custVendTransSettlement, settlementGroupPlaceHolder, custVendTransDebit.Dimension, custVendTransDebit.PostingProfile, LedgerTransTxt::Settlement, /* <SYS> this.amount(-_settleAmountMstDebit)); CustVendSettle_Vend::postingProfileSettle(ledgerVoucher, custVendTransDebit, this.amount(_settleAmountCurDebit), custVendTransSettlement, settlementGroupPlaceHolder, custVendTransCredit.Dimension, custVendTransCredit.PostingProfile, LedgerTransTxt::Settlement, this.amount(_settleAmountMstDebit)); </SYS> */ // <GEEU> this.amount(- closeAmountMST)); } |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
12.10.2012, 08:22 | #4 |
Участник
|
Не только вам Сопоставление разных профилей (договоры)
|
|
15.10.2012, 13:08 | #5 |
Участник
|
Только вот недавно эту тему увидел.
Баги создал, но уже наверное поздно, но может пофиксят хотфиксом каким-нить. |
|
20.02.2013, 15:58 | #6 |
Программатор
|
И снова здравствуйте, любители сопоставлений! Оказывается, просто замена дебетовой проводки на кредитовую чинит одно, но ломает другое. Оказывается, нужно там еще передать валюту из ДЕБЕТОВОЙ проводки. Вот так:
X++: // </GEEU> // BugFix 26.12.12 --> //custVendTransDebit, custVendTransCredit, // BugFix 26.12.12 <-- this.amount(_settleAmountCurDebit), custVendTransSettlement, settlementGroupPlaceHolder, custVendTransCredit.Dimension, custVendTransCredit.PostingProfile, LedgerTransTxt::Settlement, /* <SYS> this.amount(_settleAmountMstDebit)); } else { CustVendSettle_Vend::postingProfileSettle(ledgerVoucher, </SYS> */ // <GEEU> this.amount(closeAmountMST) // BugFix 19.02.13 --> , 0 , custVendTransDebit.CurrencyCode); !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // BugFix 19.02.13 <-- X++: if (reversePrepayment)
{
CustVendSettle::postingProfileSettle_RU(ledgerVoucher,
custVendTransDebit,
this.amount(_settleAmountCurCredit),
custVendTransSettlement,
settlementGroupPlaceHolder,
custVendTransDebit.Dimension,
custVendTransDebit.PostingProfile,
LedgerTransTxt::Settlement,
this.amount(- closeAmountMST),
0,
custVendTransCredit.CurrencyCode); !!!!!!!!!!!!!!! :)
CustVendSettle::postingProfileSettle_RU(ledgerVoucher,
custVendTransCredit,
this.amount(-_settleAmountCurCredit),
custVendTransSettlement,
settlementGroupPlaceHolder,
custVendTransCredit.Dimension,
custVendTransCredit.PostingProfile,
LedgerTransTxt::Settlement,
this.amount(closeAmountMST)); Последний раз редактировалось Sada; 20.02.2013 в 16:01. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
04.02.2015, 18:05 | #7 |
Читатель
|
\Classes\CustVendSettle\calcCreditToDebitExchRate()
X++: // Use the payment date and exchange rates from the invoice company. exchangeRateHelper = ExchangeRateHelper::newExchangeDate(Ledger::primaryLedger(CompanyInfo::findDataArea(debitCompany).RecId), custVendTransDebit.CurrencyCode, // Invoice currency custVendTransCredit.TransDate); // Payment date // <-- AX2012 R2 CU7 UPDATE: Хотя, тут, может быть, все верно - рассчитывается курс на дату платежа, а не накладной. Но неочевидно как-то, похоже на копипасту ) Последний раз редактировалось b_nosoff; 04.02.2015 в 19:11. |
|
Теги |
ax2009, ax2012, custvendsettle, баг, сопоставление |
|
|