Как вычисляется поле SourceBaseAmountCur из таблицы TmpTaxWorkTrans? - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно выяснить, как вычисляется SourceBaseAmountCur, в моем случае я получаю сообщение об ошибке в поле «Сумма источника» в окне SST, где оно не показывает 0, когда это необходимо.

ЯИсходя из Главной книги> Журналы> Общий журнал> (выберите запись, перейдя в Строки)> затем окно SST. Затем поле Источник суммы.

Источник суммы представляет собой поле отображения:

display TaxBaseCur displaySourceBaseAmountCur(TmpTaxWorkTrans _tmpTaxWorkTrans)
{
       return taxTmpWorkTransForm.getSourceBaseAmountCur(_tmpTaxWorkTrans);
}

Как видно из кода выше, он уже передает запись TmpTaxWorkTrans. Переходя к этому методу в классе TaxTmpWorkTransForm, это метод:

public TaxAmountCur getSourceBaseAmountCur(TmpTaxWorkTrans _tmpTaxWorkTrans = null, TmpTaxRegulation _tmpTaxRegulation = null)
{
       if (_tmpTaxRegulation)
       {
          return _tmpTaxRegulation.SourceBaseAmountCur;
       }
      else
      {
          return _tmpTaxWorkTrans.SourceBaseAmountCur * _tmpTaxWorkTrans.taxChangeDisplaySign(accountTypeMap);
      }
}

Я нашел эту статью: https://dynamicsuser.net/ax/f/technical/92855/how-tmptaxworktrans-populated, и я начал с нее Class \ Tax \ insertIntersection и, к сожалению, не смог найтито, что я искал, отлаживал несколько дней.

1 Ответ

0 голосов
/ 07 ноября 2019

Важным отличием является расчет налога для публикуемого и неопубликованного журнала. Похоже, вы просматриваете неопубликованные журналы.

У меня нет больших данных, чтобы проверить это, но я просто взломал эту работу POC вместе через 20 минут, но у нее должно быть достаточно "битов", чтобыВы можете запустить его и получить необходимую информацию.

static void Job3(Args _args)
{
    TaxCalculation          taxCalculation;
    LedgerJournalTrans      ledgerJournalTrans;
    TmpTaxWorkTrans         tmpTaxWorkTrans;
    TaxAmountCur            taxAmountCur;

    ledgerJournalTrans = LedgerJournalTrans::findRecId(5637293082, false); // Use your own journal line

    // The reason we call the below stuff is `element.getShowTax()` and is called from `\Forms\LedgerJournalTransDaily\Designs\Design\[ActionPane:ActionPane]\[ActionPaneTab:ActionPaneTab]\[ButtonGroup:ButtonGroup]\MenuItemButton:TaxTransSource\Methods\clicked`

    // This is from `\Classes\LedgerJournalEngine\getShowTax`
    taxCalculation = LedgerJournalTrans::getTaxInstance(ledgerJournalTrans.JournalNum, ledgerJournalTrans.Voucher, ledgerJournalTrans.Invoice, true, null, false, ledgerJournalTrans.TransDate);
    taxCalculation.sourceSingleLine(true, false);

    // This is from `\Classes\TaxTmpWorkTransForm\initTax`
    tmpTaxWorkTrans.setTmpData(taxCalculation.tmpTaxWorkTrans());

    // This is the temporary table that is populated
    while select tmpTaxWorkTrans
    {
        // This is from `\Classes\TaxTmpWorkTransForm\getSourceBaseAmountCur`
        taxAmountCur = (tmpTaxWorkTrans.SourceTaxAmountCur * tmpTaxWorkTrans.taxChangeDisplaySign(null)); // I pass null because the map doesn't appear used...investigate?

        // This just outputs some data
        info(strFmt("%1: %2", tmpTaxWorkTrans.TaxCode, taxAmountCur));
    }
}
...