0

Microsoft Dynamics GP では、個々の注文の税を課税対象/非課税として設定する必要があります (顧客レコードでは実行できません)。

何らかの理由で、Web サービスの CreateSalesOrder 呼び出しに何を渡しても、税情報が保存されません。

私はもう試した:

  • 「Create Taxes Behavior」を「Taxes will provide」に設定した CreateSalesInvoice ポリシーを使用する
  • 「Use Header Level Taxes Behavior」と「Create Taxes Behavior」を使用してポリシーをオーバーライドし、4 つのモードすべてを試しました。
  • 販売注文の合計として提供された税金
  • 販売注文の税詳細として税を提供
  • 項目の合計として提供された税金
  • 販売注文の税詳細として税を提供
  • 注文に TaxScheduleKey を設定する
  • 項目に TaxScheduleKey を設定する

税金は GP で白紙にされてしまいます。腹立たしいです...何かアイデアはありますか? 私は Dynamics データベースにアクセスできますが、できればそのルートには行きたくありません。

私の調査によると、これは壊れており (この件に関するすべてのスレッドが回答なしで終了します)、Microsoft はそれを修正するつもりはありませんが、それは自動化にひどい打撃を与えます。

4

1 に答える 1

1

今日、この問題に遭遇しました。少し背景:

上記のすべてを試し、ポリシー (特にセールス ドキュメント - セールス ドキュメントの作成ポリシー) を変更し、セールス オーダーの作成に税金を指定できるポリシーがないことに不満を感じた後、GP サービスがどのように機能するかについてのこの MSDN の記事に出会いました。設計または拡張: https://msdn.microsoft.com/en-us/library/dd996499.aspx

そこまでは興味がありませんでしたが、「Program Files\Microsoft Dynamics\GPWebServices\XSLT」、特に「Microsoft.Dynamics.GP.SalesOrderCreate.xslt」ファイルを見つけました。

GreatPlains にインストールされているため、受信した税データを利用するための変換はまったく行われていません (これまでに試行されたことを考えれば驚くことではありません)。USINGHEADERLEVELTAXES は 0 に設定されています。

「Microsoft.Dynamics.GP.SalesInvoiceCreate.xslt」ファイルの税行を SalesOrderCreate.xslt ファイルに結合すると、SalesOrderCreate の eConnect に送信された XML を変更して税を適切に作成できます。

以下の例では、ヘッダー レベルの税の動作を使用/テスト済みです。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:mbs="http://schemas.microsoft.com/dynamics/2006/01"
    xmlns:gputil="urn:Microsoft.Dynamics.GP.TransformUtilities"
    version="1.0">

  <xsl:import href="Microsoft.Dynamics.GP.SalesCreateUpdateLibrary.xslt"/>
  <xsl:import href="Microsoft.Dynamics.GP.StandardLibrary.xslt"/>

  <xsl:variable name="CompanyId">
    <xsl:value-of select="/SalesOrder/mbs:Context/mbs:OrganizationKey/mbs:Id"/>
  </xsl:variable>

  <xsl:template match ="/">
    <eConnect xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsl:apply-templates />
    </eConnect>
  </xsl:template>

  <xsl:template match="SalesOrder">
    <SOPTransactionType>
      <xsl:apply-templates select="Lines/SalesOrderLine/Serials/SalesLineSerial">
        <xsl:with-param name="UpdateIfExists">0</xsl:with-param>
      </xsl:apply-templates>
      <xsl:apply-templates select="Lines/SalesOrderLine/Components/SalesOrderComponent/Serials/SalesComponentSerial">
        <xsl:with-param name="UpdateIfExists">0</xsl:with-param>
      </xsl:apply-templates>
      <xsl:apply-templates select="Lines/SalesOrderLine/Lots/SalesLineLot">
        <xsl:with-param name="UpdateIfExists">0</xsl:with-param>
      </xsl:apply-templates>
      <xsl:apply-templates select="Lines/SalesOrderLine/Components/SalesOrderComponent/Lots/SalesComponentLot">
        <xsl:with-param name="UpdateIfExists">0</xsl:with-param>
      </xsl:apply-templates>
      <xsl:apply-templates select="Lines/SalesOrderLine" />
      <xsl:apply-templates select="Lines/SalesOrderLine/Components/SalesOrderComponent" />
      <xsl:apply-templates select="TrackingNumbers/SalesTrackingNumber" />
      <xsl:apply-templates select="Taxes/SalesDocumentTax" />
      <xsl:apply-templates select="Commissions/SalesCommission" />
      <xsl:apply-templates select="Payments/SalesPayment">
        <xsl:with-param name="UpdateIfExists">0</xsl:with-param>
      </xsl:apply-templates>
      <xsl:apply-templates select="UserDefined" />
      <xsl:apply-templates select="Lines/SalesOrderLine/Bins/SalesLineBin" />
      <xsl:apply-templates select="Lines/SalesOrderLine/Components/SalesOrderComponent/Bins/SalesComponentBin" />
      <xsl:call-template name="SalesHeader" />
      <xsl:apply-templates select="ProcessHolds/SalesProcessHold">
        <xsl:with-param name="UpdateIfExists">0</xsl:with-param>
      </xsl:apply-templates>
    </SOPTransactionType>
  </xsl:template>

  <xsl:template match="SalesOrderLine">
    <taSopLineIvcInsert>
      <xsl:call-template name="CreateUpdateLine">
        <xsl:with-param name="UpdateIfExists">0</xsl:with-param>
        <xsl:with-param name="CompanyId">
          <xsl:value-of select="$CompanyId" />
        </xsl:with-param>
      </xsl:call-template>
      <xsl:if test="QuantityToBackorder/Value != ''">
        <QTYTBAOR>
          <xsl:value-of select="QuantityToBackorder/Value" />
        </QTYTBAOR>
      </xsl:if>
      <xsl:if test="QuantityToInvoice/Value != ''">
        <QUANTITY>
          <xsl:value-of select="QuantityToInvoice/Value" />
        </QUANTITY>
      </xsl:if>
      <xsl:if test="QuantityCanceled/Value != ''">
        <QTYCANCE>
          <xsl:value-of select="QuantityCanceled/Value" />
        </QTYCANCE>
      </xsl:if>
      <xsl:if test="QuantityFulfilled/Value != ''">
        <QTYFULFI>
          <xsl:value-of select="QuantityFulfilled/Value" />
        </QTYFULFI>
      </xsl:if>
      <xsl:if test="TaxAmount/Value != ''">
        <TAXAMNT>
          <xsl:value-of select="TaxAmount/Value" />
        </TAXAMNT>
      </xsl:if>
      <RecreateDist>0</RecreateDist>
    </taSopLineIvcInsert>
  </xsl:template>
  <xsl:template match="SalesOrderComponent">
    <taSopLineIvcInsertComponent>
      <xsl:call-template name="CreateUpdateComponent">
        <xsl:with-param name="UpdateIfExists">0</xsl:with-param>
      </xsl:call-template>
      <xsl:if test="QuantityToBackorder/Value != ''">
        <QTYTBAOR>
          <xsl:value-of select="QuantityToBackorder/Value" />
        </QTYTBAOR>
      </xsl:if>
      <xsl:if test="QuantityToInvoice/Value != ''">
        <QUANTITY>
          <xsl:value-of select="QuantityToInvoice/Value" />
        </QUANTITY>
      </xsl:if>
      <xsl:if test="QuantityCanceled/Value != ''">
        <QTYCANCE>
          <xsl:value-of select="QuantityCanceled/Value" />
        </QTYCANCE>
      </xsl:if>
      <xsl:if test="QuantityFulfilled/Value != ''">
        <QTYFULFI>
          <xsl:value-of select="QuantityFulfilled/Value" />
        </QTYFULFI>
      </xsl:if>
    </taSopLineIvcInsertComponent>
  </xsl:template>
  <xsl:template name="SalesHeader">
    <taSopHdrIvcInsert>
      <xsl:call-template name="CreateUpdateDocument">
        <xsl:with-param name="UpdateIfExists">0</xsl:with-param>
        <xsl:with-param name="CompanyId">
          <xsl:value-of select="$CompanyId" />
        </xsl:with-param>
      </xsl:call-template>
      <xsl:if test="PaymentAmount/Value != ''">
        <PYMTRCVD>
          <xsl:value-of select="PaymentAmount/Value" />
        </PYMTRCVD>
      </xsl:if>
      <xsl:if test="TaxAmount/Value != ''">
        <TAXAMNT>
          <xsl:value-of select="TaxAmount/Value" />
        </TAXAMNT>
      </xsl:if>
      <USINGHEADERLEVELTAXES>1</USINGHEADERLEVELTAXES>
      <CREATEDIST>0</CREATEDIST>
      <CREATETAXES>0</CREATETAXES>
    </taSopHdrIvcInsert>
  </xsl:template>
</xsl:stylesheet>
于 2017-01-25T09:21:19.070 に答える