Implement support for contact persons and web users. Also show addr info for company.
This commit is contained in:
parent
a23e88ff2f
commit
fc7c1e13bc
2 changed files with 97 additions and 5 deletions
|
|
@ -26,7 +26,8 @@ meta = MetaData()
|
||||||
try:
|
try:
|
||||||
meta.reflect(bind=db.raw.connection(),
|
meta.reflect(bind=db.raw.connection(),
|
||||||
only=['ar', 'ars', 'xae', 'xare', 'fr', 'kus', 'x1k',
|
only=['ar', 'ars', 'xae', 'xare', 'fr', 'kus', 'x1k',
|
||||||
'oh', 'orp', 'lp', 'vg', 'xp', 'xm', 'prh', 'prl'])
|
'oh', 'orp', 'lp', 'vg', 'xp', 'xm', 'prh', 'prl',
|
||||||
|
'kp', 'kpw', 'cr', 'X4', 'xw'])
|
||||||
except OperationalError as e:
|
except OperationalError as e:
|
||||||
logger.error("Failed to read Jeeves DB structure")
|
logger.error("Failed to read Jeeves DB structure")
|
||||||
raise e
|
raise e
|
||||||
|
|
|
||||||
|
|
@ -192,14 +192,92 @@ class Article(RawBaseModel):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ContactInformationType(RawBaseModel):
|
||||||
|
__tablename__ = 'X4'
|
||||||
|
__to_dict_only__ = ('ComKod', 'ComBeskr')
|
||||||
|
|
||||||
|
|
||||||
|
class ContactInformation(RawBaseModel):
|
||||||
|
__tablename__ = 'cr'
|
||||||
|
__column_map__ = {'ComNr': 'Information'}
|
||||||
|
__to_dict_only__ = ('InformationType', 'ComNr')
|
||||||
|
|
||||||
|
FtgNr = Column(String, ForeignKey('fr.FtgNr'), primary_key=True)
|
||||||
|
FtgKontaktNr = Column(Integer, ForeignKey('kp.FtgKontaktNr'), primary_key=True)
|
||||||
|
ComKod = Column(String, ForeignKey('X4.ComKod'), primary_key=True)
|
||||||
|
|
||||||
|
ContactInformationType = relationship(ContactInformationType)
|
||||||
|
|
||||||
|
@hybrid_property
|
||||||
|
def InformationType(self):
|
||||||
|
return self.ContactInformationType.ComBeskr if self.ContactInformationType else ""
|
||||||
|
|
||||||
|
|
||||||
|
class ContactPerson(RawBaseModel):
|
||||||
|
__tablename__ = 'kp'
|
||||||
|
__column_map__ = {'FtgKontaktNr': 'ContactNumber', 'FtgPerson': 'ContactName'}
|
||||||
|
__to_dict_only__ = ('FtgKontaktNr', 'FtgPerson', 'ContactInformation')
|
||||||
|
|
||||||
|
FtgNr = Column(String, ForeignKey('fr.FtgNr'), primary_key=True)
|
||||||
|
FtgKontaktNr = Column(Integer, primary_key=True)
|
||||||
|
|
||||||
|
ContactInformation = relationship(
|
||||||
|
"ContactInformation", lazy='joined',
|
||||||
|
foreign_keys='ContactInformation.FtgNr, ContactInformation.FtgKontaktNr',
|
||||||
|
primaryjoin="and_(ContactInformation.FtgNr==ContactPerson.FtgNr,"
|
||||||
|
"ContactInformation.FtgKontaktNr==ContactPerson.FtgKontaktNr)")
|
||||||
|
|
||||||
|
|
||||||
|
class WebUser(RawBaseModel):
|
||||||
|
__tablename__ = 'kpw'
|
||||||
|
__to_dict_only__ = ('WebUserName', 'ValidToUse', 'ContactPersonName', 'ContactPersonNumber')
|
||||||
|
|
||||||
|
FtgNr = Column(String, ForeignKey('fr.FtgNr'), primary_key=True)
|
||||||
|
FtgKontaktNr = Column(Integer, ForeignKey('kp.FtgKontaktNr'), primary_key=True)
|
||||||
|
|
||||||
|
ContactPerson = relationship(
|
||||||
|
ContactPerson, uselist=False, lazy='joined',
|
||||||
|
foreign_keys='ContactPerson.FtgNr, ContactPerson.FtgKontaktNr',
|
||||||
|
primaryjoin="and_(ContactPerson.FtgNr==WebUser.FtgNr,"
|
||||||
|
"ContactPerson.FtgKontaktNr==WebUser.FtgKontaktNr)")
|
||||||
|
|
||||||
|
@hybrid_property
|
||||||
|
def ContactPersonName(self):
|
||||||
|
return self.ContactPerson.FtgPerson if self.ContactPerson else ""
|
||||||
|
|
||||||
|
@hybrid_property
|
||||||
|
def ContactPersonNumber(self):
|
||||||
|
return self.ContactPerson.FtgKontaktNr if self.ContactPerson else ""
|
||||||
|
|
||||||
|
|
||||||
|
class LanguageCodes(RawBaseModel):
|
||||||
|
__tablename__ = 'xw'
|
||||||
|
|
||||||
|
SprakKod = Column(Integer, primary_key=True)
|
||||||
|
|
||||||
|
|
||||||
class Company(RawBaseModel):
|
class Company(RawBaseModel):
|
||||||
__tablename__ = 'fr'
|
__tablename__ = 'fr'
|
||||||
__column_map__ = {'FtgNr': 'CompanyNumber', 'FtgNamn': 'CompanyName'}
|
__column_map__ = {'FtgNr': 'CompanyNumber', 'FtgNamn': 'CompanyName',
|
||||||
__to_dict_only__ = ('FtgNr', 'FtgNamn', 'Customer')
|
'OrgNr': 'CompanyIdentityNumber', 'EUMomsNr': 'CompanyVATNumber',
|
||||||
|
'FtgPostAdr1': 'AddrCO', 'FtgPostadr5': 'AddrStreet',
|
||||||
|
'FtgLevPostNr': 'AddrPostalCode', 'FtgPostLevAdr3': 'AddrCity',
|
||||||
|
'LandsKod': 'AddrCountry',
|
||||||
|
'FtgPostAdr2': 'PostAddrStreet', 'FtgPostnr': 'PostAddrPostalCode',
|
||||||
|
'FtgPostAdr3': 'PostAddrCity'}
|
||||||
|
__to_dict_only__ = ('FtgNr', 'FtgNamn', 'Customer', 'ContactPersons', 'ContactInformation',
|
||||||
|
'FtgPostadr5', 'FtgPostAdr1', 'FtgPostLevAdr3', 'FtgLevPostNr', 'LandsKod',
|
||||||
|
'FtgPostAdr2', 'FtgPostnr', 'FtgPostAdr3', 'OrgNr', 'EUMomsNr')
|
||||||
|
|
||||||
FtgNr = Column(String, primary_key=True)
|
FtgNr = Column(String, primary_key=True)
|
||||||
|
|
||||||
Customer = relationship('Customer', uselist=False, back_populates='Company', lazy='joined')
|
Customer = relationship('Customer', uselist=False, back_populates='Company', lazy='joined')
|
||||||
|
ContactPersons = relationship("ContactPerson", lazy='joined')
|
||||||
|
ContactInformation = relationship(
|
||||||
|
"ContactInformation", lazy='joined',
|
||||||
|
foreign_keys='ContactInformation.FtgNr',
|
||||||
|
primaryjoin="and_(ContactInformation.FtgNr==Company.FtgNr,"
|
||||||
|
"ContactInformation.FtgKontaktNr==null())")
|
||||||
|
|
||||||
|
|
||||||
class DelivLoc(RawBaseModel):
|
class DelivLoc(RawBaseModel):
|
||||||
|
|
@ -215,12 +293,16 @@ class CustomerCategory(RawBaseModel):
|
||||||
class Customer(RawBaseModel):
|
class Customer(RawBaseModel):
|
||||||
__tablename__ = 'kus'
|
__tablename__ = 'kus'
|
||||||
__column_map__ = {'FtgNr': 'CompanyNumber', 'kundkategorikod': 'CustomerCategoryCode',
|
__column_map__ = {'FtgNr': 'CompanyNumber', 'kundkategorikod': 'CustomerCategoryCode',
|
||||||
'PrisListaKundSpec': 'PriceListPrimary', 'PrisLista': 'PriceListSecondary'}
|
'PrisListaKundSpec': 'PriceListPrimary', 'PrisLista': 'PriceListSecondary',
|
||||||
|
'GodsMarke1': 'DefaultShippingInfo', 'GodsMarke2': 'InternalInfo',
|
||||||
|
'LevSattKod': 'DefaultShippingTypeCode', 'ValKod': 'CustomerCurrency'}
|
||||||
__to_dict_only__ = ('kundkategorikod', 'PriceList', 'PriceListCommon', 'CustomerCategory',
|
__to_dict_only__ = ('kundkategorikod', 'PriceList', 'PriceListCommon', 'CustomerCategory',
|
||||||
'PrisLista', 'PrisListaKundSpec')
|
'PrisLista', 'PrisListaKundSpec', 'WebUsers', 'GodsMarke1',
|
||||||
|
'GodsMarke2', 'LevSattKod', 'Language', 'ValKod')
|
||||||
|
|
||||||
FtgNr = Column(String, ForeignKey('fr.FtgNr'), primary_key=True)
|
FtgNr = Column(String, ForeignKey('fr.FtgNr'), primary_key=True)
|
||||||
KundKategoriKod = Column(Integer, ForeignKey('x1k.KundKategoriKod'))
|
KundKategoriKod = Column(Integer, ForeignKey('x1k.KundKategoriKod'))
|
||||||
|
SprakKod = Column(Integer, ForeignKey('xw.SprakKod'))
|
||||||
PrisLista = Column(Integer, ForeignKey('prh.PrisLista'))
|
PrisLista = Column(Integer, ForeignKey('prh.PrisLista'))
|
||||||
PrisListaKundSpec = Column(Integer, ForeignKey('prh.PrisLista'))
|
PrisListaKundSpec = Column(Integer, ForeignKey('prh.PrisLista'))
|
||||||
|
|
||||||
|
|
@ -233,11 +315,20 @@ class Customer(RawBaseModel):
|
||||||
primaryjoin="Customer.PrisLista==PriceList.PrisLista")
|
primaryjoin="Customer.PrisLista==PriceList.PrisLista")
|
||||||
|
|
||||||
KundKategori = relationship("CustomerCategory")
|
KundKategori = relationship("CustomerCategory")
|
||||||
|
LanguageCodes = relationship("LanguageCodes")
|
||||||
|
|
||||||
|
WebUsers = relationship(
|
||||||
|
WebUser, uselist=True, lazy='joined',
|
||||||
|
foreign_keys='WebUser.FtgNr', primaryjoin="Customer.FtgNr==WebUser.FtgNr")
|
||||||
|
|
||||||
@hybrid_property
|
@hybrid_property
|
||||||
def CustomerCategory(self):
|
def CustomerCategory(self):
|
||||||
return self.KundKategori.KundKatBeskr if self.KundKategori else ""
|
return self.KundKategori.KundKatBeskr if self.KundKategori else ""
|
||||||
|
|
||||||
|
@hybrid_property
|
||||||
|
def Language(self):
|
||||||
|
return self.LanguageCodes.Sprak if self.LanguageCodes else ""
|
||||||
|
|
||||||
|
|
||||||
class PriceList(RawBaseModel):
|
class PriceList(RawBaseModel):
|
||||||
__tablename__ = 'prh'
|
__tablename__ = 'prh'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue