Open PeppolとUBLで繰返しが違うとき

Views: 41

Open Peppolのコアインボイスモデルは、UBL 2.1へマッピングされるが、対応するXML要素の繰り返し回数のUBLでの定義が必ずしもモデルと一致している保証は無く、不一致の場合の対応が必要となることがある。

繰返し回数制限の違いの回避策

CEN/TS 16931-3-1は、繰返し回数制限の違いの回避策を規定している。
繰返し回数制限の問題を回避するには、繰返し回数制限の問題に基づくルールが必要。

ID Peppol
UBL
問題 対策
CAR1 任意(0..x)必須(1..x) 値が存在しない場合、UBLスキーマ検証でエラー 「欠落している場合のデフォルト値」(例:0、1-1-1970、AAA)
CAR2 必須(1..x)任意(0..x) なし 要素が存在しなけれべならないというルールをスキーマトロンに追加
CAR3 単数(x..1)複数(x..n) なし 要素が繰り返されないというルールをスキーマトロンに追加
CAR4 複数(x..n)単数(x..1) 繰返す要素は処理できない 1)可能であれば、親要素を繰り返す。
2)テキスト要素の場合、繰り返し要素を連結する。
CAR5 未定義
必須
問題 「欠落している場合のデフォルト値」に同意する(例:0、1-1-1970、AAA)
未定義
任意
警告 処理されない

CAR1およびCAR5の場合には、デフォルト値を決めておく。 CAR2およびCAR3の場合、スキーマトロンでルールを定義する必要がある。 CAR4では、いずれかの可能な解決策を選択する必要がある。また、CEN/TS 16931-3-1では規定されていないが、Open Peppolのコアインボイスモデルで定義されていないにもかかわらず、UBLで定義されている要素が使用されるときには、スキーマトロンは、警告(warning)を報告する必要がある。

スキーマトロン定義例

Open PeppolのBIS Billing 3.0の定義例を紹介する。
rule要素のcontext属性でXPathを用いて対象とする要素を特定し、assert要素のtest属性に検証ルールを記述する。text属性での検証の際に用いるXPathは、rule要素のcontext属性で指定したXPathからの相対指定。

CAR2

インボイスには仕様ID(Specification identifier)がなければならない。

<rule context="/ubl:Invoice | /cn:CreditNote">
    <assert id="BR-01" flag="fatal" 
        test="(cbc:CustomizationID) != ''">
    [BR-01]-An Invoice shall have a Specification identifier (BT-24).
    </assert>
</rule>

CAR3

インボイスの支払い銀行口座は最大1件

<rule context="/ubl:Invoice | /cn:CreditNote">
    <assert id="BR-66" flag="fatal"
        test="count(cac:PaymentMeans/cac:CardAccount) &lt;= 1">
    [BR-66]-An Invoice shall contain maximum one Payment Card account (BG-18).
    </assert>
</rule>

BIS Billing 1.0 では、次の表現も検討されていた。

<rule context="ubl:Invoice/cac:PaymentMeans">
    <assert flag="fatal" id="BASIC-00175" test="not(cac:CardAccount[2])">
    No more than a single instance of cac:CardAccount are allowed.
    </assert>
</rule>

ここでは、2つ目の<cac:CardAccount>が無いことを条件としている。

CAR4

ID Level Business Term Card  XPath Card
BG-4 1 SELLER 1..1 略/ cac:Party 1..1
TB-34 2 Seller electronic address 0..1 略/ cac:Party/ cbc:EndpointID 0..1
TB-29 2 Seller identifier 0..n 略/ cac:Party/ cac:PartyIdentification/ cbc:ID 1..1

Seller identifier (BT-29)は、モデル定義では複数指定な任意要素とされているが、UBLで対応する要素で定義された繰返しは、1..1となっておりCAR4問題であるが、この場合、親要素のが0..nと定義されているので、問題とならない。


投稿日

カテゴリー:

,

投稿者:

タグ: