_d="Steuerart (Code)")
exemption_reason = StringField(NS_RAM, "ExemptionReason", required=False,
profile=COMFORT, _d="Grund der Steuerbefreiung (Freitext)")
+ exemption_reason_code = StringField(NS_RAM, "ExemptionReasonCode", required=False,
+ profile=EXTENDED, _d="Grund der Steuerbefreiung (Code)")
basis_amount = CurrencyField(NS_RAM, "BasisAmount", required=True,
profile=BASIC, _d="Basisbetrag der Steuerberechnung")
line_total_basis_amount = CurrencyField(NS_RAM, "LineTotalBasisAmount",
_d="Gesamtbetrag Zu- und Abschläge des Steuersatzes")
category_code = StringField(NS_RAM, "CategoryCode", required=False,
profile=COMFORT, _d="Steuerkategorie (Wert)")
- applicable_percent = DecimalField(NS_RAM, "ApplicablePercent",
- required=True, profile=BASIC)
+ rate_applicable_percent = DecimalField(NS_RAM, "RateApplicablePercent",
+ required=True, profile=BASIC)
class Meta:
namespace = NS_RAM
class Meta:
namespace = NS_RAM
- tag = "SpecifiedTradeSettlementMonetarySummation"
+ tag = "SpecifiedTradeSettlementHeaderMonetarySummation"
class BillingSpecifiedPeriod(Element):
if self.required or list(el) or el.text:
node.append(el)
- def serialize(self):
+ def serialize(self, schema="FACTUR-X_BASIC"):
xml = b"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + ET.tostring(self.to_etree(), "utf-8")
- return validate_xml(xmlout=xml, schema="ZUGFeRD1p0")
+ return validate_xml(xmlout=xml, schema=schema)
def from_etree(self, root):
if hasattr(self, 'Meta') and hasattr(self.Meta, 'namespace') and root.tag != "{%s}%s" % (
class TradeTransaction(Element):
+ items = MultiField(LineItem, required=True)
agreement = Field(TradeAgreement, required=True)
delivery = Field(TradeDelivery, required=True)
settlement = Field(TradeSettlement, required=True)
- items = MultiField(LineItem, required=True)
class Meta:
namespace = NS_RSM
class Meta:
namespace = NS_RAM
- tag = "SpecifiedTradeSettlementMonetarySummation"
+ tag = "SpecifiedTradeSettlementLineMonetarySummation"
class LineSettlement(Element):
class LineItem(Element):
document = Field(LineDocument, required=True)
+ product = Field(TradeProduct)
agreement = Field(LineAgreement)
delivery = Field(LineDelivery)
settlement = Field(LineSettlement, required=True)
- product = Field(TradeProduct)
class Meta:
namespace = NS_RAM
open(os.path.join(os.path.dirname(__file__), 'samples', filename), 'rb').read(),
remove_comments=True
)
+ schema = 'FACTUR-X_' + filename.split('_')[2]
doc = Invoice.parse(origxml)
- generatedxml = prettify(doc.serialize())
+ generatedxml = prettify(doc.serialize(schema))
assert origxml.decode().strip() == generatedxml.decode().strip()