1

販売ライン、購入ライン、アイテムマスター([販売]タブ)の価格フィールドに小数点以下5桁を表示する必要があります。salesLine.SalesPriceフィールドとInventTableModule.Priceフィールドを置き換えるために、小数点以下5桁の新しいEDTを作成しました。しかし、販売ラインが作成されるとすぐに。SalesPriceフィールドの値は、小数点以下第2位を四捨五入しています。たとえば、アイテムマスターの値は10.12345ですが、販売ラインでは10.12000と表示されます。最後の3桁はなくなりました。

これまで、さまざまな投稿やブログから複数のアプローチを聞いてきました。

  1. RealBase EDTでNoOfDecimalsプロパティを5に変更するには、アプリケーション全体でAmountフィールドを効果的に変更します。私はこれをしたくありません。

  2. GL>設定>通貨>丸めルールで丸めルールを変更します。フィールドは編集できません。

  3. PriceDiscTable.AmountフィールドのEDTを小数点以下5桁に変更しました。しかし、助けにはなりません。私の場合のSalesPriceは貿易協定から流れていないと思います。

私が見落としている/見逃しているものはありますか?

ありがとう

4

2 に答える 2

1

PriceDisc.price() メソッドを見てください。EDT で小数点以下を変更したり、新しい EDT メソッドを作成したりしても、売買契約または InventTableModule 価格フィールドから価格を取得しているかどうかに関係なく、Dynamics はコードで価格を丸めます。

PriceDisc.price() メソッドは、後で Currency.priceTypeRound(...) メソッドを呼び出し、小数点以下 2 桁に丸められます。

private Price priceTyperound(Price          _price,
                         PriceRoundOff  _unit)
{
Price   price;
real    decimals;
;

switch (this.RoundOffTypePrice)
{
    case RoundOffType::Ordinary:
        if (_unit)
            price = round(_price, _unit);
        else
            price = round(_price,0.01);
        break;
        (...)

丸めタイプは、[為替レート] フォームの最後のタブ (丸め) の値によって異なります。したがって、小数を適切に機能させたい場合は、さらにいくつかの変更を加える必要があります。

これがお役に立てば幸いです。

于 2012-12-20T08:20:25.523 に答える
0

aariste さん、あなたは AX バージョン 2009 について言及していると思います。それは、Currency.priceTypeRound メソッドが 2012 年に非推奨になったためです。しかし、Currency テーブルと、2012 年に追加された CurrencyExchangeHelper という新しいクラスで同様のメソッドを見つけました。悲しいことに、価格設定メカニズム全体が複雑すぎて、私はそれに干渉しないことにしました。2012 のもう 1 つの違いは、IL で実行されるメソッドはほとんどないため、通常のデバッガーは、「IL でビジネス オペレーションを実行する」というツールの設定を変更するまでそれらをキャッチできないことです。私は今、salesPrice を強制的にプッシュし、lineAmount を再計算して、貿易協定の価格設定ロジックを上書きしています。コードの変更ではなく、David Lawson が提案したように、Price Unit を引き上げることに完全に賛成です。お二方、問題を調べてアドバイスしていただきありがとうございます。

于 2012-12-26T17:16:19.063 に答える