Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Invoice line object identifier (BT-128) does not support to specify a type code from UNTDID 1153 #29

Closed
MAKOMO opened this issue Jan 25, 2024 · 1 comment

Comments

@MAKOMO
Copy link
Contributor

MAKOMO commented Jan 25, 2024

To specify a serial number identifying (BT-128) the product of a line item one has to add a line object identifier with type code 'SE' (UNTDID 1153). This is currently not possible. One would assume to be able to set the serial number with profile COMFORT like this

li.settlement.additional_referenced_document.issuer_assigned_id = ('SE', serial_number)
li.settlement.additional_referenced_document.type_code = "130"

BT-128 is added as IssuerAssignedID of the AdditionalReferencedDocument of SpecifiedLineTradeSettlement (LineTradeSettlementType) which according to the ZUGFeRD v2.2 Specification is a udt:IDType. However, ReferencedDocument is using a StringField for issuer_assigned_id.

class ReferencedDocument(Element):
    issuer_assigned_id = StringField(
        NS_RAM, "IssuerAssignedID", required=False, profile=BASIC
    )
    issue_date_time = DateTimeField(
        NS_RAM, "FormattedIssueDateTime", required=True, profile=BASIC, date_time_namespace=NS_QDT
    )

This should rather be an IDField.

@MAKOMO
Copy link
Contributor Author

MAKOMO commented Jan 26, 2024

Fixed by PR #27

raphaelm pushed a commit that referenced this issue Mar 10, 2024
… and PR #23 and contains alignments to the v2.2 specification (#27)

* - corrects the NS_QDT name according to the zugferd22 specification
- extends elements.py:DateTimeElement to allow the adjustment of the inner DateTimes namespace
- updates references.py:ReferencedDocument to use NS_QDT for its DateTimeElement
- corrects profiles in reference.py for various attributes according to the zugferd22 schemata
- adds test zugferd_2p2_EN16931_ElektronischeAdresse2.xml as a variation of the official zugferd22 sample EN16931_ElektronischeAdresse.xml adding a FormattedIssueDateTime to the BuyerOrderReferencedDocument
- moves SellerOrderReferencedDocument from trade.py to references.py
- fixes DateTimeField namespace of AdvancePayment.received_date

* This commit also adds the class ProductInstance (IndividualTradeProductInstance) to product.py and adds the missing fields "id" (IDField) and "instance" (ProductInstance) to product.py:TradeProduct.

This commit also adds class PayerTradeParty (PayerTradeParty) to party.py and adds the missing field "payer" (PayerTradeParty) to trade.py:TradeSettlement.

This commit also removes the unused (and not needed) party.py:LineApplicableTradeTax class.

This commit also corrects profile and required tags according to the v2.2 specification as follows:

- references.py:LineAdditionalReferencedDocument
  .name profile COMFORT => BASIC (was COMFORT)
- tradelines.py:LineSettlement
  .trade_tax profile COMFORT => BASIC
  .period profile COMFORT => BASIC
  .allowance_charge profile COMFORT => BASIC
  .monetary_summation profile COMFORT => BASIC
  .additional_referenced_document profile EXTENDED => COMFORT
  .accounting_account profile EXTENDED => COMFORT
- product.py:ProductCharacteristic
  .type_code  required => optional
  .description profile EXTENDED => COMFORT
  .value profile EXTENDED => COMFORT
- product.py:ProductClassification
  .class_code required => optional; profile EXTENDED => COMFORT
  .value required => optional
- product.py:TradeProduct
  .name profile COMFORT => BASIC
  .characteristics EXTENDED => COMFORT
  .classifications EXTENDED => COMFORT
  .origins EXTENDED => COMFORT
- trade.py:TradeSettlement
  .tax_currency_code profile COMFORT => BASIC
  .invoicer profile COMFORT => EXTENDED
  .invoicee profile COMFORT => EXTENDED
  .payee profile COMFORT => BASIC
  .allowance_charge profile COMFORT => BASIC
  .service_charge profile COMFORT => EXTENDED
  .terms profile COMFORT => BASIC
  .accounting_account EXTENDED => BASIC
- accounting.py:ApplicableTradeTax
  .exemption_reason COMFORT => BASIC
  .category_code COMFORT => BASIC
  .exemption_reason_code EXTENDED => BASIC

* fixes profile annotations in TradeAllowanceCharge

* SpecifiedTradeAllowanceCharge:ReasonCode in COMFORT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants