diff --git a/pyjeeves/models/abc.py b/pyjeeves/models/abc.py index 334c3c7..061d681 100644 --- a/pyjeeves/models/abc.py +++ b/pyjeeves/models/abc.py @@ -27,7 +27,7 @@ try: meta.reflect(bind=db.raw.connection(), only=['ar', 'ars', 'xae', 'xare', 'fr', 'kus', 'x1k', 'oh', 'orp', 'lp', 'vg', 'xp', 'xm', 'prh', 'prl', - 'kp', 'kpw', 'cr', 'X4', 'xw']) + 'kp', 'kpw', 'cr', 'X4', 'xw', 'X1']) except OperationalError as e: logger.error("Failed to read Jeeves DB structure") raise e diff --git a/pyjeeves/models/raw.py b/pyjeeves/models/raw.py index 3c47bf5..873b0b2 100644 --- a/pyjeeves/models/raw.py +++ b/pyjeeves/models/raw.py @@ -89,6 +89,12 @@ class ArticleBalance(RawBaseModel): ArtNr = Column(Integer, ForeignKey('ar.ArtNr'), primary_key=True) +class VATRate(RawBaseModel): + __tablename__ = 'X1' + __column_map__ = {'MomsKod': 'VATID', 'MomsSats': 'VATRate'} + __to_dict_only__ = ('MomsKod', 'MomsSats') + + class Article(RawBaseModel): __tablename__ = 'ar' @@ -119,7 +125,8 @@ class Article(RawBaseModel): 'WholeSaleUnit', 'WholeSaleAmount', 'ListPrice', - 'Balance') + 'Balance', + 'VATRate') ArtNr = Column(Integer, primary_key=True) @@ -127,12 +134,15 @@ class Article(RawBaseModel): ArtProdKlass = Column(Integer, ForeignKey('xp.ArtProdKlass'), primary_key=True) ArtKod = Column(Integer, ForeignKey('xm.ArtKod'), primary_key=True) + MomsKod = Column(Integer, ForeignKey('X1.MomsKod')) + CommodityGroup = relationship(CommodityGroup, lazy='joined') ProductClass = relationship(ProductClass, lazy='joined') ArticleClass = relationship(ArticleClass, lazy='joined') ArticleBalance = relationship(ArticleBalance) ArticleUnit = relationship(ArticleUnit, uselist=True) + ArticleVATRate = relationship(VATRate, lazy='joined') def _get_alt_unit(self): # Find matching alternative unit for amount per piece, or return default for the article. @@ -171,6 +181,10 @@ class Article(RawBaseModel): # Amount of units in the alternative unit of the article, or 1 if none exist. return self.get_unit_conv() + @hybrid_property + def VATRate(self): + return self.ArticleVATRate.MomsSats + @hybrid_property def ListPrice(self): try: