Fixes to pricing and customer models. Add req deliv to order. And more..
* Fix NullPriceAllowed and logic in price calculation * Fix CustomerCategory join in Customer model * Add RequestedDeliveryDate to order creation * Start using Jeeves Signatures on order creation
This commit is contained in:
parent
fc7c1e13bc
commit
6339e9d1ce
4 changed files with 63 additions and 24 deletions
|
|
@ -301,7 +301,6 @@ class Customer(RawBaseModel):
|
|||
'GodsMarke2', 'LevSattKod', 'Language', 'ValKod')
|
||||
|
||||
FtgNr = Column(String, ForeignKey('fr.FtgNr'), primary_key=True)
|
||||
KundKategoriKod = Column(Integer, ForeignKey('x1k.KundKategoriKod'))
|
||||
SprakKod = Column(Integer, ForeignKey('xw.SprakKod'))
|
||||
PrisLista = Column(Integer, ForeignKey('prh.PrisLista'))
|
||||
PrisListaKundSpec = Column(Integer, ForeignKey('prh.PrisLista'))
|
||||
|
|
@ -314,7 +313,9 @@ class Customer(RawBaseModel):
|
|||
foreign_keys='PriceList.PrisLista',
|
||||
primaryjoin="Customer.PrisLista==PriceList.PrisLista")
|
||||
|
||||
KundKategori = relationship("CustomerCategory")
|
||||
KundKategori = relationship(
|
||||
"CustomerCategory", uselist=False, foreign_keys='CustomerCategory.KundKategoriKod',
|
||||
primaryjoin="Customer.kundkategorikod==CustomerCategory.KundKategoriKod")
|
||||
LanguageCodes = relationship("LanguageCodes")
|
||||
|
||||
WebUsers = relationship(
|
||||
|
|
@ -346,8 +347,8 @@ class PriceList(RawBaseModel):
|
|||
class PriceListItem(RawBaseModel):
|
||||
__tablename__ = 'prl'
|
||||
__column_map__ = {'ArtNr': 'ArticleNumber', 'vb_pris': 'UnitPrice',
|
||||
'MarkUpBelopp': 'UnitPriceFactor', 'NollFaktor': 'NullPriceAllowed'}
|
||||
__to_dict_only__ = ('ArtNr', 'vb_pris', 'MarkUpBelopp', 'NollFaktor', 'Price')
|
||||
'MarkUpBelopp': 'UnitPriceFactor', 'KodNollPris': 'NullPriceAllowed'}
|
||||
__to_dict_only__ = ('ArtNr', 'vb_pris', 'MarkUpBelopp', 'KodNollPris', 'Price')
|
||||
__to_dict_filter__ = ['PriceList']
|
||||
|
||||
# Do not serialize price list relationship
|
||||
|
|
@ -370,8 +371,12 @@ class PriceListItem(RawBaseModel):
|
|||
@hybrid_property
|
||||
def Price(self):
|
||||
if not self.vb_pris and not self.MarkUpBelopp:
|
||||
if self.KodNollPris == "1":
|
||||
return 0
|
||||
|
||||
MarkUpBelop = self.PriceList.MarkUpBelopp if self.PriceList.MarkUpBelopp else 0
|
||||
return (
|
||||
(self.Article.ArtListPris + self.PriceList.MarkUpBelopp) *
|
||||
(self.Article.ArtListPris + MarkUpBelop) *
|
||||
self.Article.get_unit_conv())
|
||||
if self.vb_pris:
|
||||
return self.vb_pris * self.Article.get_unit_conv()
|
||||
|
|
@ -390,9 +395,10 @@ class Order(RawBaseModel):
|
|||
'KundBestNr': 'CustomerContact', 'KundRef2': 'CustomerReference',
|
||||
'GodsMarke1': 'ShippingInfo', 'GodsMarke2': 'InternalInfo',
|
||||
'TA_MailNotified': 'ShippingEmail', 'TA_PhonNotifiedNo': 'ShippingPhone',
|
||||
'TA_SMSNotifiedNo': 'ShippingSMS', 'LevSattKod': 'ShippingTypeCode'}
|
||||
'TA_SMSNotifiedNo': 'ShippingSMS', 'LevSattKod': 'ShippingTypeCode',
|
||||
'OrdBerLevDat': 'RequestedDeliveryDate'}
|
||||
__to_dict_only__ = ('OrderNr', 'FtgNr', 'OrdDatum', 'OrdStat', 'CompanyName', 'LevSattKod',
|
||||
'OrdLevAdr1', 'OrdLevAdr2', 'OrdLevAdr3',
|
||||
'OrdLevAdr1', 'OrdLevAdr2', 'OrdLevAdr3', 'OrdBerLevDat',
|
||||
'OrdLevAdrLandsKod', 'KundBestNr', 'KundRef2', 'GodsMarke1',
|
||||
'GodsMarke2', 'OrderItems', 'AddrPostalCode', 'AddrCity',
|
||||
'TA_MailNotified', 'TA_PhonNotifiedNo', 'TA_SMSNotifiedNo')
|
||||
|
|
@ -401,6 +407,7 @@ class Order(RawBaseModel):
|
|||
'adapters': {
|
||||
**{
|
||||
'OrdDatum': lambda ord_date, *_: ord_date.strftime("%Y-%m-%d"),
|
||||
'OrdBerLevDat': lambda ord_date, *_: ord_date.strftime("%Y-%m-%d"),
|
||||
},
|
||||
**RawBaseModel.__dict_args__['adapters']
|
||||
}
|
||||
|
|
@ -444,7 +451,8 @@ class Order(RawBaseModel):
|
|||
|
||||
def create(self, webusername=None):
|
||||
# TODO: Extend with additional functionlity if desired.
|
||||
self['OrderNr'], invoicing_possible = OrderHead(self['FtgNr'], webusername).callproc()
|
||||
self['OrderNr'], invoicing_possible = OrderHead(
|
||||
self['FtgNr'], webusername, pers_sign=self['PersSign']).callproc()
|
||||
return self, invoicing_possible
|
||||
|
||||
def save(self, invoiced=False, webusername=None):
|
||||
|
|
@ -462,15 +470,19 @@ class OrderItem(RawBaseModel):
|
|||
__tablename__ = 'orp'
|
||||
__column_map__ = {'OrdRadNr': 'OrderRowNumber', 'vb_pris': 'UnitPrice',
|
||||
'ArtNr': 'ArticleNumber', 'OrdAntal': 'UnitAmount',
|
||||
'OrdAntalAltEnh': 'AltUnitAmount', 'AltEnhetKod': 'AltUnit'}
|
||||
'OrdAntalAltEnh': 'AltUnitAmount', 'AltEnhetKod': 'AltUnit',
|
||||
'OrdBegLevDat': 'RequestedDeliveryDate'}
|
||||
__to_dict_only__ = ('OrdRadNr', 'vb_pris', 'ArtNr', 'ArticleName', 'OrdAntal',
|
||||
'OrdAntalAltEnh', 'AltEnhetKod')
|
||||
'OrdAntalAltEnh', 'AltEnhetKod', 'OrdBegLevDat')
|
||||
|
||||
# Do not serialize order relationship
|
||||
__dict_args__ = {
|
||||
'adapters': {
|
||||
**{
|
||||
Order: None,
|
||||
'OrdBegLevDat': lambda req_date, *_: (
|
||||
req_date.strftime("%Y-%m-%d")
|
||||
if not isinstance(req_date, str) else req_date),
|
||||
},
|
||||
**RawBaseModel.__dict_args__['adapters']
|
||||
}
|
||||
|
|
@ -499,6 +511,7 @@ class OrderItem(RawBaseModel):
|
|||
row_no = OrderRow(
|
||||
company_no=self['FtgNr'], order_no=self['OrderNr'], item_no=self['ArtNr'],
|
||||
qty=self['OrdAntal'], qty_alt_unit=self['OrdAntalAltEnh'],
|
||||
alt_unit=self['AltEnhetKod'], pers_sign='marlin').callproc()
|
||||
alt_unit=self['AltEnhetKod'], requested_date=self['OrdBegLevDat'],
|
||||
pers_sign=self['PersSign']).callproc()
|
||||
self['OrdRadNr'] = row_no
|
||||
return self
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue