-from . import NS_FERD_1p0, COMFORT, EXTENDED, BASIC
+from . import NS_RAM, COMFORT, EXTENDED, BASIC
from .elements import Element
from .fields import DateTimeField, StringField, CurrencyField, DecimalField, MultiField, IndicatorField
class LineApplicableTradeTax(Element):
- calculated_amount = CurrencyField(NS_FERD_1p0, "CalculatedAmount", required=True,
+ calculated_amount = CurrencyField(NS_RAM, "CalculatedAmount", required=True,
profile=BASIC, _d="Steuerbetrag")
- type_code = StringField(NS_FERD_1p0, "TypeCode", required=True, profile=BASIC,
+ type_code = StringField(NS_RAM, "TypeCode", required=True, profile=BASIC,
_d="Steuerart (Code)")
- exemption_reason = StringField(NS_FERD_1p0, "ExemptionReason", required=False,
+ exemption_reason = StringField(NS_RAM, "ExemptionReason", required=False,
profile=COMFORT, _d="Grund der Steuerbefreiung (Freitext)")
- category_code = StringField(NS_FERD_1p0, "CategoryCode", required=False,
+ category_code = StringField(NS_RAM, "CategoryCode", required=False,
profile=COMFORT, _d="Steuerkategorie (Wert)")
- applicable_percent = DecimalField(NS_FERD_1p0, "ApplicablePercent",
+ applicable_percent = DecimalField(NS_RAM, "ApplicablePercent",
required=True, profile=BASIC)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ApplicableTradeTax"
class ApplicableTradeTax(LineApplicableTradeTax):
- basis_amount = CurrencyField(NS_FERD_1p0, "BasisAmount", required=True,
+ basis_amount = CurrencyField(NS_RAM, "BasisAmount", required=True,
profile=BASIC, _d="Basisbetrag der Steuerberechnung")
- line_total_basis_amount = CurrencyField(NS_FERD_1p0, "LineTotalBasisAmount",
+ line_total_basis_amount = CurrencyField(NS_RAM, "LineTotalBasisAmount",
required=False, profile=EXTENDED,
_d="Warenbetrag des Steuersatzes")
- allowance_charge_basis_amount = CurrencyField(NS_FERD_1p0, "AllowanceChargeBasisAmount",
+ allowance_charge_basis_amount = CurrencyField(NS_RAM, "AllowanceChargeBasisAmount",
required=False, profile=EXTENDED,
_d="Gesamtbetrag Zu- und Abschläge des Steuersatzes")
class AccountingAccount(Element):
- id = StringField(NS_FERD_1p0, "ID", required=True, profile=EXTENDED, _d="Buchungsreferenz")
+ id = StringField(NS_RAM, "ID", required=True, profile=EXTENDED, _d="Buchungsreferenz")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ReceivableSpecifiedTradeAccount"
class MonetarySummation(Element):
- line_total = CurrencyField(NS_FERD_1p0, "LineTotalAmount", required=True,
+ line_total = CurrencyField(NS_RAM, "LineTotalAmount", required=True,
profile=BASIC, _d="Gesamtbetrag der Positionen")
- charge_total = CurrencyField(NS_FERD_1p0, "ChargeTotalAmount", required=True,
+ charge_total = CurrencyField(NS_RAM, "ChargeTotalAmount", required=True,
profile=BASIC, _d="Gesamtbetrag der Zuschläge")
- allowance_total = CurrencyField(NS_FERD_1p0, "AllowanceTotalAmount", required=True,
+ allowance_total = CurrencyField(NS_RAM, "AllowanceTotalAmount", required=True,
profile=BASIC, _d="Gesamtbetrag der Abschläge")
- tax_basis_total = CurrencyField(NS_FERD_1p0, "TaxBasisTotalAmount", required=True,
+ tax_basis_total = CurrencyField(NS_RAM, "TaxBasisTotalAmount", required=True,
profile=BASIC, _d="Steuerbasisbetrag")
- tax_total = CurrencyField(NS_FERD_1p0, "TaxTotalAmount", required=True,
+ tax_total = CurrencyField(NS_RAM, "TaxTotalAmount", required=True,
profile=BASIC, _d="Steuergesamtbetrag")
- grand_total = CurrencyField(NS_FERD_1p0, "GrandTotalAmount", required=True,
+ grand_total = CurrencyField(NS_RAM, "GrandTotalAmount", required=True,
profile=BASIC, _d="Bruttosumme")
- prepaid_total = CurrencyField(NS_FERD_1p0, "TotalPrepaidAmount", required=False,
+ prepaid_total = CurrencyField(NS_RAM, "TotalPrepaidAmount", required=False,
profile=COMFORT, _d="Anzahlungsbetrag")
- due_amount = CurrencyField(NS_FERD_1p0, "DuePayableAmount", required=False,
+ due_amount = CurrencyField(NS_RAM, "DuePayableAmount", required=False,
profile=COMFORT, _d="Zahlbetrag")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedTradeSettlementMonetarySummation"
class BillingSpecifiedPeriod(Element):
- start = DateTimeField(NS_FERD_1p0, "StartDateTime", required=True, profile=COMFORT)
- end = DateTimeField(NS_FERD_1p0, "EndDateTime", required=True, profile=COMFORT)
+ start = DateTimeField(NS_RAM, "StartDateTime", required=True, profile=COMFORT)
+ end = DateTimeField(NS_RAM, "EndDateTime", required=True, profile=COMFORT)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "BillingSpecifiedPeriod"
class AppliedTradeTax(Element):
- type_code = StringField(NS_FERD_1p0, "TypeCode", required=True, profile=COMFORT)
- category_code = StringField(NS_FERD_1p0, "CategoryCode", required=True, profile=COMFORT)
- applicable_percent = StringField(NS_FERD_1p0, "ApplicablePercent", required=True, profile=COMFORT)
+ type_code = StringField(NS_RAM, "TypeCode", required=True, profile=COMFORT)
+ category_code = StringField(NS_RAM, "CategoryCode", required=True, profile=COMFORT)
+ applicable_percent = StringField(NS_RAM, "ApplicablePercent", required=True, profile=COMFORT)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "AppliedTradeTax"
class CategoryTradeTax(AppliedTradeTax):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "CategoryTradeTax"
class TradeAllowanceCharge(Element):
- indicator = IndicatorField(NS_FERD_1p0, "ChargeIndicator", required=False, profile=COMFORT,
+ indicator = IndicatorField(NS_RAM, "ChargeIndicator", required=False, profile=COMFORT,
_d="Schalter für Zu-/Abschlag")
- sequence_numeric = DecimalField(NS_FERD_1p0, "SequenceNumeric", required=False, profile=EXTENDED,
+ sequence_numeric = DecimalField(NS_RAM, "SequenceNumeric", required=False, profile=EXTENDED,
_d="Berechnungsreihenfolge")
- calculation_percent = DecimalField(NS_FERD_1p0, "CalculationPercent",
+ calculation_percent = DecimalField(NS_RAM, "CalculationPercent",
required=False, profile=EXTENDED,
_d="Rabatt in Prozent")
- basis_amount = CurrencyField(NS_FERD_1p0, "BasisAmount", required=False,
+ basis_amount = CurrencyField(NS_RAM, "BasisAmount", required=False,
profile=EXTENDED, _d="Basisbetrag des Rabatts")
- basis_quantity = CurrencyField(NS_FERD_1p0, "BasisQuantity", required=False,
+ basis_quantity = CurrencyField(NS_RAM, "BasisQuantity", required=False,
profile=EXTENDED, _d="Basismenge des Rabatts")
- actual_amount = CurrencyField(NS_FERD_1p0, "ActualAmount", required=True,
+ actual_amount = CurrencyField(NS_RAM, "ActualAmount", required=True,
profile=COMFORT, _d="Betrag des Zu-/Abschlags")
- reason_code = StringField(NS_FERD_1p0, "ReasonCode", required=False, profile=EXTENDED)
- reason = StringField(NS_FERD_1p0, "Reason", required=False, profile=COMFORT)
+ reason_code = StringField(NS_RAM, "ReasonCode", required=False, profile=EXTENDED)
+ reason = StringField(NS_RAM, "Reason", required=False, profile=COMFORT)
trade_tax = MultiField(CategoryTradeTax, required=False, profile=COMFORT)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedTradeAllowanceCharge"
-from . import NS_FERD_1p0, BASIC, EXTENDED
+from . import NS_RAM, BASIC, EXTENDED
from .elements import Element
from .fields import DateTimeField, StringField, IDField, Field
from .party import ShipToTradeParty, ShipFromTradeParty, UltimateShipToTradeParty
class SupplyChainEvent(Element):
- occurrence = DateTimeField(NS_FERD_1p0, "OccurenceDateTime",
+ occurrence = DateTimeField(NS_RAM, "OccurenceDateTime",
required=False, profile=BASIC,
_d="Tatsächlicher Lieferungszeitpunkt")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ActualDeliverySupplyChainEvent"
class LogisticsTransportMovement(Element):
- mode_code = StringField(NS_FERD_1p0, "ModeCode", required=False, profile=EXTENDED)
- id = IDField(NS_FERD_1p0, "ID", required=False, profile=EXTENDED)
+ mode_code = StringField(NS_RAM, "ModeCode", required=False, profile=EXTENDED)
+ id = IDField(NS_RAM, "ID", required=False, profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedLogisticsTransportMovement"
movement = Field(LogisticsTransportMovement, required=False, profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "RelatedSupplyChainConsignment"
profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ApplicableSupplyChainTradeDelivery"
import xml.etree.cElementTree as ET
from drafthorse.models.note import IncludedNote
-from . import NS_RAM, NS_UDT, NS_FERD_1p0, EXTENDED, BASIC
+from . import NS_FERD_1p0, NS_UDT, NS_RAM, EXTENDED, BASIC
from .elements import Element
from .fields import DateTimeField, Field, MultiField, StringField, IndicatorField, MultiStringField
from .trade import TradeTransaction
class GuidelineDocumentContextParameter(Element):
- id = StringField(NS_FERD_1p0, "ID")
+ id = StringField(NS_RAM, "ID")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "GuidelineSpecifiedDocumentContextParameter"
class BusinessDocumentContextParameter(Element):
- id = StringField(NS_FERD_1p0, "ID")
+ id = StringField(NS_RAM, "ID")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "BusinessSpecifiedDocumentContextParameter"
class DocumentContext(Element):
- test_indicator = IndicatorField(NS_FERD_1p0, "TestIndicator", required=False,
+ test_indicator = IndicatorField(NS_RAM, "TestIndicator", required=False,
profile=BASIC, _d="Testkennzeichen")
guideline_parameter = Field(GuidelineDocumentContextParameter, required=True,
profile=BASIC, _d="Anwendungsempfehlung")
class EffectivePeriod(Element):
- complete = DateTimeField(NS_FERD_1p0, "CompleteDateTime")
+ complete = DateTimeField(NS_RAM, "CompleteDateTime")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "EffectiveSpecifiedPeriod"
class Header(Element):
- id = StringField(NS_FERD_1p0, "ID", required=True, profile=BASIC,
+ id = StringField(NS_RAM, "ID", required=True, profile=BASIC,
_d="Rechnungsnummer")
- name = StringField(NS_FERD_1p0, "Name", required=True, profile=BASIC,
+ name = StringField(NS_RAM, "Name", required=True, profile=BASIC,
_d="Dokumentenart (Freitext)")
- type_code = StringField(NS_FERD_1p0, "TypeCode", required=True, profile=BASIC,
+ type_code = StringField(NS_RAM, "TypeCode", required=True, profile=BASIC,
_d="Dokumentenart (Code)")
- issue_date_time = DateTimeField(NS_FERD_1p0, "IssueDateTime", required=True,
+ issue_date_time = DateTimeField(NS_RAM, "IssueDateTime", required=True,
profile=BASIC, _d="Rechnungsdatum")
- copy_indicator = IndicatorField(NS_FERD_1p0, "CopyIndicator", required=False,
+ copy_indicator = IndicatorField(NS_RAM, "CopyIndicator", required=False,
profile=EXTENDED, _d="Indikator Original/Kopie")
+ languages = MultiStringField(NS_RAM, "LanguageID", required=False, profile=EXTENDED)
effective_period = Field(EffectivePeriod, required=False, profile=EXTENDED,
_d="Vertragliches Fälligkeitsdatum der Rechnung")
notes = MultiField(IncludedNote)
- languages = MultiStringField(NS_FERD_1p0, "LanguageID", required=False, profile=EXTENDED)
class Meta:
namespace = NS_FERD_1p0
import xml.etree.cElementTree as ET
from collections import OrderedDict
+from drafthorse.utils import validate_xml
from . import NS_UDT
from .fields import Field
node.append(self.to_etree())
def serialize(self):
- return b"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + ET.tostring(self.to_etree(), "utf-8")
+ xml = b"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + ET.tostring(self.to_etree(), "utf-8")
+ print(xml)
+ validate_xml(xmlout=xml, schema="ZUGFeRD1p0")
+ return xml
+
class StringElement(Element):
-from . import NS_FERD_1p0, BASIC, COMFORT, EXTENDED
+from . import NS_RAM, BASIC, COMFORT, EXTENDED
from .elements import Element
from .fields import StringField, MultiStringField
class IncludedNote(Element):
- content = MultiStringField(NS_FERD_1p0, "Content", required=False,
+ content = MultiStringField(NS_RAM, "Content", required=False,
profile=BASIC)
- content_code = StringField(NS_FERD_1p0, "ContentCode", required=False,
+ content_code = StringField(NS_RAM, "ContentCode", required=False,
profile=EXTENDED)
- subject_code = StringField(NS_FERD_1p0, "SubjectCode", required=False,
+ subject_code = StringField(NS_RAM, "SubjectCode", required=False,
profile=COMFORT)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "IncludedNote"
-from . import NS_FERD_1p0, COMFORT, BASIC, EXTENDED
+from . import NS_RAM, COMFORT, BASIC, EXTENDED
from .elements import Element
from .fields import StringField, Field, IDField, MultiField, MultiIDField
class PostalTradeAddress(Element):
- postcode = StringField(NS_FERD_1p0, "PostcodeCode", required=False, profile=BASIC)
- line_one = StringField(NS_FERD_1p0, "LineOne", required=False, profile=BASIC)
- line_two = StringField(NS_FERD_1p0, "LineTwo", required=False, profile=BASIC)
- city_name = StringField(NS_FERD_1p0, "CityName", required=False, profile=BASIC)
- country_id = StringField(NS_FERD_1p0, "CountryID", required=False, profile=BASIC)
+ postcode = StringField(NS_RAM, "PostcodeCode", required=False, profile=BASIC)
+ line_one = StringField(NS_RAM, "LineOne", required=False, profile=BASIC)
+ line_two = StringField(NS_RAM, "LineTwo", required=False, profile=BASIC)
+ city_name = StringField(NS_RAM, "CityName", required=False, profile=BASIC)
+ country_id = StringField(NS_RAM, "CountryID", required=False, profile=BASIC)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "PostalTradeAddress"
class TaxRegistration(Element):
- id = IDField(NS_FERD_1p0, "ID")
+ id = IDField(NS_RAM, "ID")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedTaxRegistration"
class PhoneNumber(Element):
- number = StringField(NS_FERD_1p0, "CompleteNumber", required=False,
+ number = StringField(NS_RAM, "CompleteNumber", required=False,
profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "TelephoneUniversalCommunication"
class FaxNumber(Element):
- number = StringField(NS_FERD_1p0, "CompleteNumber", required=False,
+ number = StringField(NS_RAM, "CompleteNumber", required=False,
profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "FaxUniversalCommunication"
class EmailURI(Element):
- address = StringField(NS_FERD_1p0, "URIID", required=False,
+ address = StringField(NS_RAM, "URIID", required=False,
profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "EmailURICommunication"
class TradeContact(Element):
- person_name = StringField(NS_FERD_1p0, "PersonName", required=False,
+ person_name = StringField(NS_RAM, "PersonName", required=False,
profile=EXTENDED)
- department_name = StringField(NS_FERD_1p0, "DepartmentName", required=False,
+ department_name = StringField(NS_RAM, "DepartmentName", required=False,
profile=EXTENDED)
telephone = Field(PhoneNumber, required=False, profile=EXTENDED)
fax = Field(FaxNumber, required=False, profile=EXTENDED)
email = Field(EmailURI, required=False, profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "DefinedTradeContact"
class TradeParty(Element):
- id = StringField(NS_FERD_1p0, "ID", required=False, profile=COMFORT,
+ id = StringField(NS_RAM, "ID", required=False, profile=COMFORT,
_d="Identifier des Verkäufers")
- global_id = MultiIDField(NS_FERD_1p0, "GlobalID", required=False, profile=COMFORT,
+ global_id = MultiIDField(NS_RAM, "GlobalID", required=False, profile=COMFORT,
_d="Globaler Identifier des Verkäufers")
- name = StringField(NS_FERD_1p0, "Name", required=False, profile=BASIC)
+ name = StringField(NS_RAM, "Name", required=False, profile=BASIC)
contact = Field(TradeContact, required=False, profile=EXTENDED,
_d="Ansprechpartner des Käufers")
address = Field(PostalTradeAddress, required=False, profile=BASIC,
class PayeeTradeParty(TradeParty):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "PayeeTradeParty"
class InvoiceeTradeParty(TradeParty):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "InvoiceeTradeParty"
class BuyerTradeParty(TradeParty):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "BuyerTradeParty"
class SellerTradeParty(TradeParty):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SellerTradeParty"
class EndUserTradeParty(TradeParty):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ProductEndUserTradeParty"
class ShipToTradeParty(TradeParty):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ShipToTradeParty"
class ShipFromTradeParty(TradeParty):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ShipFromTradeParty"
class UltimateShipToTradeParty(TradeParty):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "UltimateShipToTradeParty"
-from . import NS_FERD_1p0, COMFORT, BASIC, EXTENDED
+from . import NS_RAM, COMFORT, BASIC, EXTENDED
from .elements import Element
from .fields import Field, StringField, IDField, DateTimeField, DecimalField, CurrencyField, MultiStringField, \
MultiCurrencyField
class PayerFinancialAccount(Element):
- iban = StringField(NS_FERD_1p0, "IBANID")
- proprietary_id = StringField(NS_FERD_1p0, "ProprietaryID")
+ iban = StringField(NS_RAM, "IBANID")
+ proprietary_id = StringField(NS_RAM, "ProprietaryID")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "PayerPartyDebtorFinancialAccount"
class PayerFinancialInstitution(Element):
- bic = StringField(NS_FERD_1p0, "BICID")
- german_blz = StringField(NS_FERD_1p0, "GermanBankleitzahlID")
- name = StringField(NS_FERD_1p0, "Name")
+ bic = StringField(NS_RAM, "BICID")
+ german_blz = StringField(NS_RAM, "GermanBankleitzahlID")
+ name = StringField(NS_RAM, "Name")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "PayerSpecifiedDebtorFinancialInstitution"
class PayeeFinancialAccount(Element):
- iban = StringField(NS_FERD_1p0, "IBANID")
- account_name = StringField(NS_FERD_1p0, "AccountName")
- proprietary_id = StringField(NS_FERD_1p0, "ProprietaryID")
+ iban = StringField(NS_RAM, "IBANID")
+ account_name = StringField(NS_RAM, "AccountName")
+ proprietary_id = StringField(NS_RAM, "ProprietaryID")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "PayeePartyCreditorFinancialAccount"
class PayeeFinancialInstitution(Element):
- bic = StringField(NS_FERD_1p0, "BICID")
- german_blz = StringField(NS_FERD_1p0, "GermanBankleitzahlID")
- name = StringField(NS_FERD_1p0, "Name")
+ bic = StringField(NS_RAM, "BICID")
+ german_blz = StringField(NS_RAM, "GermanBankleitzahlID")
+ name = StringField(NS_RAM, "Name")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "PayeeSpecifiedCreditorFinancialInstitution"
class PaymentMeans(Element):
- type_code = StringField(NS_FERD_1p0, "TypeCode", required=False, profile=COMFORT)
- information = MultiStringField(NS_FERD_1p0, "Information", required=False, profile=COMFORT)
- id = IDField(NS_FERD_1p0, "ID", required=False, profile=BASIC)
+ type_code = StringField(NS_RAM, "TypeCode", required=False, profile=COMFORT)
+ information = MultiStringField(NS_RAM, "Information", required=False, profile=COMFORT)
+ id = IDField(NS_RAM, "ID", required=False, profile=BASIC)
payer_account = Field(PayerFinancialAccount)
payer_institution = Field(PayerFinancialInstitution)
payee_account = Field(PayeeFinancialAccount)
payee_institution = Field(PayeeFinancialInstitution)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedTradeSettlementPaymentMeans"
class PaymentPenaltyTerms(Element):
- basis_date_time = DateTimeField(NS_FERD_1p0, "BasisDateTime", required=False,
+ basis_date_time = DateTimeField(NS_RAM, "BasisDateTime", required=False,
profile=EXTENDED, _d="Bezugsdatum der Fälligkeit")
- basis_period_measure = StringField(NS_FERD_1p0, "BasisPeriodMeasure", required=False,
+ basis_period_measure = StringField(NS_RAM, "BasisPeriodMeasure", required=False,
profile=EXTENDED, _d="Fälligkeitszeitraum")
- basis_amount = CurrencyField(NS_FERD_1p0, "BasisAmount", required=False,
+ basis_amount = CurrencyField(NS_RAM, "BasisAmount", required=False,
profile=EXTENDED, _d="Basisbetrag des Zahlungszuschlags")
- calculation_percent = DecimalField(NS_FERD_1p0, "CalculationPercent", required=False,
+ calculation_percent = DecimalField(NS_RAM, "CalculationPercent", required=False,
profile=EXTENDED, _d="Prozentwert des Zahlungszuschlags")
- actual_amount = CurrencyField(NS_FERD_1p0, "ActualPenaltyAmount", required=False,
+ actual_amount = CurrencyField(NS_RAM, "ActualPenaltyAmount", required=False,
profile=EXTENDED, _d="Betrag des Zahlungszuschlags")
class PaymentDiscountTerms(Element):
- basis_date_time = DateTimeField(NS_FERD_1p0, "BasisDateTime", required=False,
+ basis_date_time = DateTimeField(NS_RAM, "BasisDateTime", required=False,
profile=EXTENDED, _d="Bezugsdatum der Fälligkeit")
- basis_period_measure = StringField(NS_FERD_1p0, "BasisPeriodMeasure", required=False,
+ basis_period_measure = StringField(NS_RAM, "BasisPeriodMeasure", required=False,
profile=EXTENDED, _d="Fälligkeitszeitraum")
- basis_amount = CurrencyField(NS_FERD_1p0, "BasisAmount", required=False,
+ basis_amount = CurrencyField(NS_RAM, "BasisAmount", required=False,
profile=EXTENDED, _d="Basisbetrag des Zahlungsabschlags")
- calculation_percent = DecimalField(NS_FERD_1p0, "CalculationPercent", required=False,
+ calculation_percent = DecimalField(NS_RAM, "CalculationPercent", required=False,
profile=EXTENDED, _d="Prozentwert des Zahlungsabschlags")
- actual_amount = CurrencyField(NS_FERD_1p0, "ActualDiscountAmount", required=False,
+ actual_amount = CurrencyField(NS_RAM, "ActualDiscountAmount", required=False,
profile=EXTENDED, _d="Betrag des Zahlungsabschlags")
class PaymentTerms(Element):
- description = StringField(NS_FERD_1p0, "Description", required=True, profile=COMFORT,
+ description = StringField(NS_RAM, "Description", required=True, profile=COMFORT,
_d="Freitext der Zahlungsbedingungen")
- due = DateTimeField(NS_FERD_1p0, "DueDateDateTime", required=False, profile=COMFORT,
+ due = DateTimeField(NS_RAM, "DueDateDateTime", required=False, profile=COMFORT,
_d="Fälligkeitsdatum")
- partial_amount = MultiCurrencyField(NS_FERD_1p0, "PartialPaymentAmount", profile=EXTENDED,
+ partial_amount = MultiCurrencyField(NS_RAM, "PartialPaymentAmount", profile=EXTENDED,
required=False, _d="Betrag der Teilzahlung")
penalty_terms = Field(PaymentPenaltyTerms, required=False, profile=EXTENDED,
_d="Detailinformationen zu Zahlungszuschlägen")
_d="Detailinformationen zu Zahlungsabschlägen")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedTradePaymentTerms"
-from . import NS_FERD_1p0, EXTENDED, COMFORT
+from . import NS_RAM, EXTENDED, COMFORT
from .elements import Element
from .fields import StringField, QuantityField, IDField, MultiField, ClassificationField
class ProductCharacteristic(Element):
- type_code = StringField(NS_FERD_1p0, "TypeCode", required=True, profile=EXTENDED,
+ type_code = StringField(NS_RAM, "TypeCode", required=True, profile=EXTENDED,
_d="Art der Produkteigenschaft")
- description = StringField(NS_FERD_1p0, "Description", required=True, profile=EXTENDED)
- value_measure = QuantityField(NS_FERD_1p0, "ValueMeasure", required=False,
+ description = StringField(NS_RAM, "Description", required=True, profile=EXTENDED)
+ value_measure = QuantityField(NS_RAM, "ValueMeasure", required=False,
profile=EXTENDED, _d="Numerische Messgröße")
- value = StringField(NS_FERD_1p0, "Value", required=False, profile=EXTENDED)
+ value = StringField(NS_RAM, "Value", required=False, profile=EXTENDED)
class ProductClassification(Element):
- class_code = ClassificationField(NS_FERD_1p0, "ClassCode", required=True,
+ class_code = ClassificationField(NS_RAM, "ClassCode", required=True,
profile=EXTENDED)
- value = StringField(NS_FERD_1p0, "ClassName", required=True, profile=EXTENDED)
+ value = StringField(NS_RAM, "ClassName", required=True, profile=EXTENDED)
class OriginCountry(Element):
- id = StringField(NS_FERD_1p0, "ID", required=True, profile=EXTENDED,
+ id = StringField(NS_RAM, "ID", required=True, profile=EXTENDED,
_d="Land der Produktherkunft")
class ReferencedProduct(Element):
- name = StringField(NS_FERD_1p0, "Name", required=False, profile=EXTENDED)
- description = StringField(NS_FERD_1p0, "Description", required=False, profile=EXTENDED)
- global_id = IDField(NS_FERD_1p0, "GlobalID", required=False, profile=EXTENDED)
- seller_assigned_id = StringField(NS_FERD_1p0, "SellerAssignedID", required=False,
+ name = StringField(NS_RAM, "Name", required=False, profile=EXTENDED)
+ description = StringField(NS_RAM, "Description", required=False, profile=EXTENDED)
+ global_id = IDField(NS_RAM, "GlobalID", required=False, profile=EXTENDED)
+ seller_assigned_id = StringField(NS_RAM, "SellerAssignedID", required=False,
profile=EXTENDED)
- buyer_assigned_id = StringField(NS_FERD_1p0, "BuyerAssignedID", required=False,
+ buyer_assigned_id = StringField(NS_RAM, "BuyerAssignedID", required=False,
profile=EXTENDED)
- unit_quantity = QuantityField(NS_FERD_1p0, "UnitQuantity", required=False,
+ unit_quantity = QuantityField(NS_RAM, "UnitQuantity", required=False,
profile=EXTENDED)
class TradeProduct(Element):
- name = StringField(NS_FERD_1p0, "Name", required=False, profile=COMFORT)
- description = StringField(NS_FERD_1p0, "Description", required=False, profile=COMFORT)
- global_id = IDField(NS_FERD_1p0, "GlobalID", required=False, profile=COMFORT)
- seller_assigned_id = StringField(NS_FERD_1p0, "SellerAssignedID", required=False,
+ name = StringField(NS_RAM, "Name", required=False, profile=COMFORT)
+ description = StringField(NS_RAM, "Description", required=False, profile=COMFORT)
+ global_id = IDField(NS_RAM, "GlobalID", required=False, profile=COMFORT)
+ seller_assigned_id = StringField(NS_RAM, "SellerAssignedID", required=False,
profile=COMFORT)
- buyer_assigned_id = StringField(NS_FERD_1p0, "BuyerAssignedID", required=False,
+ buyer_assigned_id = StringField(NS_RAM, "BuyerAssignedID", required=False,
profile=COMFORT)
characteristics = MultiField(ProductCharacteristic, required=False, profile=EXTENDED)
classifications = MultiField(ProductClassification, required=False, profile=EXTENDED)
-from . import COMFORT, EXTENDED, NS_FERD_1p0
+from . import COMFORT, EXTENDED, NS_RAM
from .elements import Element
from .fields import DateTimeField, StringField
class ReferencedDocument(Element):
- issue_date_time = DateTimeField(NS_FERD_1p0, "IssueDateTime", required=False,
+ issue_date_time = DateTimeField(NS_RAM, "IssueDateTime", required=False,
profile=COMFORT)
- id = StringField(NS_FERD_1p0, "ID", required=False,
+ id = StringField(NS_RAM, "ID", required=False,
profile=COMFORT)
class BuyerOrderReferencedDocument(ReferencedDocument):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "BuyerOrderReferencedDocument"
class ContractReferencedDocument(ReferencedDocument):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ContractReferencedDocument"
class AdditionalReferencedDocument(ReferencedDocument):
- type_code = StringField(NS_FERD_1p0, "ReferenceTypeCode", profile=EXTENDED, required=True)
+ type_code = StringField(NS_RAM, "ReferenceTypeCode", profile=EXTENDED, required=True)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "AdditionalReferencedDocument"
class CustomerOrderReferencedDocument(ReferencedDocument):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "CustomerOrderReferencedDocument"
class DespatchAdviceReferencedDocument(ReferencedDocument):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "DespatchAdviceReferencedDocument"
class LineCustomerOrderReferencedDocument(ReferencedDocument):
- line_id = StringField(NS_FERD_1p0, "LineID", required=False, profile=EXTENDED)
+ line_id = StringField(NS_RAM, "LineID", required=False, profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "CustomerOrderReferencedDocument"
class LineBuyerOrderReferencedDocument(ReferencedDocument):
- line_id = StringField(NS_FERD_1p0, "LineID", required=False, profile=EXTENDED)
+ line_id = StringField(NS_RAM, "LineID", required=False, profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "BuyerOrderReferencedDocument"
class LineContractReferencedDocument(ReferencedDocument):
- line_id = StringField(NS_FERD_1p0, "LineID", required=False, profile=EXTENDED)
+ line_id = StringField(NS_RAM, "LineID", required=False, profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ContractReferencedDocument"
class LineDespatchAdviceReferencedDocument(ReferencedDocument):
- line_id = StringField(NS_FERD_1p0, "LineID", required=False, profile=EXTENDED)
+ line_id = StringField(NS_RAM, "LineID", required=False, profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "DespatchAdviceReferencedDocument"
class LineReceivingAdviceReferencedDocument(ReferencedDocument):
- line_id = StringField(NS_FERD_1p0, "LineID", required=False, profile=EXTENDED)
+ line_id = StringField(NS_RAM, "LineID", required=False, profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ReceivingAdviceReferencedDocument"
class LineAdditionalReferencedDocument(ReferencedDocument):
- line_id = StringField(NS_FERD_1p0, "LineID", required=False, profile=EXTENDED)
- type_code = StringField(NS_FERD_1p0, "ReferenceTypeCode", profile=EXTENDED, required=True)
+ line_id = StringField(NS_RAM, "LineID", required=False, profile=EXTENDED)
+ type_code = StringField(NS_RAM, "ReferenceTypeCode", profile=EXTENDED, required=True)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "AdditionalReferencedDocument"
class DeliveryNoteReferencedDocument(ReferencedDocument):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "DeliveryNoteReferencedDocument"
class LineDeliveryNoteReferencedDocument(ReferencedDocument):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "LineDeliveryNoteReferencedDocument"
-from . import NS_FERD_1p0, COMFORT, EXTENDED, BASIC
+from . import NS_RAM, COMFORT, EXTENDED, BASIC, NS_FERD_1p0
from .accounting import ApplicableTradeTax, BillingSpecifiedPeriod, MonetarySummation, \
AccountingAccount
from .accounting import TradeAllowanceCharge
class TradeAgreement(Element):
- buyer_reference = StringField(NS_FERD_1p0, "BuyerReference", required=False,
+ buyer_reference = StringField(NS_RAM, "BuyerReference", required=False,
profile=COMFORT, _d="Referenz des Käufers")
seller = Field(SellerTradeParty, required=True, _d="Detailinformationen zum Verkäufer")
buyer = Field(BuyerTradeParty, required=True)
end_user = Field(EndUserTradeParty, required=False, _d="Abweichender Endverbraucher")
- delivery_type_code = StringField(NS_FERD_1p0, "DeliveryTypeCode", required=False,
+ delivery_type_code = StringField(NS_RAM, "DeliveryTypeCode", required=False,
profile=EXTENDED, _d="Lieferbedingung (Code)")
buyer_order = BuyerOrderReferencedDocument(required=False, profile=COMFORT)
customer_order = CustomerOrderReferencedDocument(required=False, profile=COMFORT)
profile=COMFORT)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ApplicableSupplyChainTradeAgreement"
class LogisticsServiceCharge(Element):
- description = StringField(NS_FERD_1p0, "Description", required=True, profile=COMFORT,
+ description = StringField(NS_RAM, "Description", required=True, profile=COMFORT,
_d="Identifikation der Servicegebühr")
- applied_amount = CurrencyField(NS_FERD_1p0, "AppliedAmount", required=True,
+ applied_amount = CurrencyField(NS_RAM, "AppliedAmount", required=True,
profile=COMFORT, _d="Betrag der Servicegebühr")
trade_tax = MultiField(ApplicableTradeTax, required=False, profile=COMFORT)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedLogisticsServiceCharge"
class TradeSettlement(Element):
- payment_reference = StringField(NS_FERD_1p0, "PaymentReference")
- currency_code = StringField(NS_FERD_1p0, "InvoiceCurrencyCode")
+ payment_reference = StringField(NS_RAM, "PaymentReference")
+ currency_code = StringField(NS_RAM, "InvoiceCurrencyCode")
invoicee = Field(InvoiceeTradeParty, required=False, profile=COMFORT,
_d="Rechnungsempfänger")
payee = Field(PayeeTradeParty, required=False, profile=COMFORT,
_d="Detailinformationen zur Buchungsreferenz")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "ApplicableSupplyChainTradeSettlement"
from drafthorse.models.delivery import SupplyChainEvent
-from . import NS_FERD_1p0, BASIC, COMFORT, EXTENDED
+from . import NS_RAM, BASIC, COMFORT, EXTENDED
from .accounting import TradeAllowanceCharge, BillingSpecifiedPeriod, AccountingAccount
from .elements import Element
from .fields import CurrencyField, QuantityField, Field, MultiField, StringField
class AllowanceCharge(TradeAllowanceCharge):
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "AppliedTradeAllowanceCharge"
class GrossPrice(Element):
- amount = CurrencyField(NS_FERD_1p0, "ChargeAmount", required=True, profile=COMFORT,
+ amount = CurrencyField(NS_RAM, "ChargeAmount", required=True, profile=COMFORT,
_d="Bruttopreis")
- basis_quantity = QuantityField(NS_FERD_1p0, "BasisQuantity", required=False,
+ basis_quantity = QuantityField(NS_RAM, "BasisQuantity", required=False,
profile=COMFORT, _d="Preisbasismenge")
charge = Field(AllowanceCharge, required=False, profile=COMFORT)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "GrossPriceProductTradePrice"
class NetPrice(Element):
- amount = CurrencyField(NS_FERD_1p0, "ChargeAmount", required=True, profile=COMFORT)
- basis_quantity = QuantityField(NS_FERD_1p0, "BasisQuantity", required=False,
+ amount = CurrencyField(NS_RAM, "ChargeAmount", required=True, profile=COMFORT)
+ basis_quantity = QuantityField(NS_RAM, "BasisQuantity", required=False,
profile=COMFORT, _d="Preisbasismenge")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "NetPriceProductTradePrice"
class LineDocument(Element):
- line_id = StringField(NS_FERD_1p0, "LineID")
+ line_id = StringField(NS_RAM, "LineID")
notes = MultiField(IncludedNote)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "AssociatedDocumentLineDocument"
net = Field(NetPrice)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedSupplyChainTradeAgreement"
class LineDelivery(Element):
- billed_quantity = QuantityField(NS_FERD_1p0, "BilledQuantity", required=True,
+ billed_quantity = QuantityField(NS_RAM, "BilledQuantity", required=True,
profile=BASIC, _d="Menge, berechnet")
- charge_free_quantity = QuantityField(NS_FERD_1p0, "ChargeFreeQuantity", required=False,
+ charge_free_quantity = QuantityField(NS_RAM, "ChargeFreeQuantity", required=False,
profile=EXTENDED, _d="Menge, ohne Berechnung")
- package_quantity = QuantityField(NS_FERD_1p0, "ChargeFreeQuantity", required=False,
+ package_quantity = QuantityField(NS_RAM, "ChargeFreeQuantity", required=False,
profile=EXTENDED, _d="Anzahl Packstücke")
ship_to = Field(ShipToTradeParty, required=False, profile=EXTENDED)
ultimate_ship_to = Field(UltimateShipToTradeParty, required=False, profile=EXTENDED)
profile=EXTENDED)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedSupplyChainTradeDelivery"
class LineSummation(Element):
- total_amount = CurrencyField(NS_FERD_1p0, "LineTotalAmount", required=True,
+ total_amount = CurrencyField(NS_RAM, "LineTotalAmount", required=True,
profile=COMFORT)
- total_allowance_charge = CurrencyField(NS_FERD_1p0, "TotalAllowanceChargeAmount",
+ total_allowance_charge = CurrencyField(NS_RAM, "TotalAllowanceChargeAmount",
required=False, profile=EXTENDED, _d="Gesamtbetrag der Zu- und Abschläge")
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedTradeSettlementMonetarySummation"
monetary_summation = Field(LineSummation, required=False, profile=COMFORT)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "SpecifiedSupplyChainTradeSettlement"
product = Field(TradeProduct)
class Meta:
- namespace = NS_FERD_1p0
+ namespace = NS_RAM
tag = "IncludedSupplyChainTradeLineItem"
+import logging
+import os
+
from xml.dom import minidom
+logger = logging.getLogger("drafthorse")
+
def prettify(xml):
reparsed = minidom.parseString(xml)
return reparsed.toprettyxml(indent="\t")
+
+
+def validate_xml(xmlout, schema):
+ try:
+ from lxml import etree
+ except ImportError:
+ logger.warning("Could not validate output as LXML is not installed.")
+ return xmlout
+ schema = etree.XMLSchema(file=os.path.join(os.path.dirname(__file__), 'schema', schema + '.xsd'))
+ parser = etree.XMLParser(schema=schema)
+ xml_root = etree.fromstring(xmlout, parser)
+ return etree.tostring(xml_root, pretty_print=True)
+++ /dev/null
-import os
-
-from lxml import etree
-
-import drafthorse
-
-
-def validate_xml(xmlout, schema):
- with open(os.path.join(os.path.dirname(drafthorse.__file__), 'schema', schema + '.xsd'), 'rb') as schema_file:
- schema_xml = schema_file.read()
- schema_root = etree.XML(schema_xml)
- schema = etree.XMLSchema(schema_root)
- parser = etree.XMLParser(schema=schema)
- xml_root = etree.fromstring(xmlout, parser)
- return etree.tostring(xml_root, pretty_print=True)