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
|
|
@ -3,6 +3,7 @@
|
|||
from pyjeeves.models.raw import Company as CompanyModel, Customer as CustomerModel
|
||||
from pyjeeves.models import db
|
||||
from sqlalchemy.sql.expression import and_
|
||||
from sqlalchemy.orm.strategy_options import Load
|
||||
|
||||
from pyjeeves import logging
|
||||
logger = logging.getLogger("PyJeeves." + __name__)
|
||||
|
|
@ -25,10 +26,24 @@ class Company():
|
|||
return [c.CompanyModel for c in cust]
|
||||
|
||||
@staticmethod
|
||||
def get_list(ftg_nr=[]):
|
||||
return db.raw.query(CompanyModel).filter(
|
||||
CompanyModel.FtgNr.in_(ftg_nr)
|
||||
).all()
|
||||
def get_customer_numbers(category_list=[10], class_list=[], filter_inactive=True):
|
||||
category_in = CustomerModel.kundkategorikod.in_(category_list) if category_list else and_()
|
||||
class_in = CustomerModel.kundklass.in_(class_list) if class_list else and_()
|
||||
inactive = and_(CustomerModel.Makulerad == 0) if filter_inactive else and_()
|
||||
cust = db.raw.query(CustomerModel).options(
|
||||
Load(CustomerModel).noload('*')).filter(
|
||||
and_(category_in, class_in, inactive)).all()
|
||||
return [c.FtgNr for c in cust]
|
||||
|
||||
@staticmethod
|
||||
def get_list(ftg_nr=[], filter_=and_(CustomerModel.Makulerad == 0), offset=0, limit=100):
|
||||
ftg_filter = and_()
|
||||
if ftg_nr:
|
||||
ftg_filter = CompanyModel.FtgNr.in_(ftg_nr)
|
||||
|
||||
return db.raw.query(CompanyModel).join(CustomerModel).filter(
|
||||
and_(ftg_filter, filter_)).order_by(
|
||||
CompanyModel.FtgNr.desc()).offset(offset).limit(limit).all()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
|||
|
|
@ -44,8 +44,9 @@ class Order():
|
|||
).all()
|
||||
|
||||
@staticmethod
|
||||
def create(customer_no, head={}, items=[], web_user_name=None):
|
||||
def create(customer_no, head={}, items=[], web_user_name=None, pers_sign='biz'):
|
||||
head['CompanyNumber'] = str(customer_no)
|
||||
head['PersSign'] = str(pers_sign)
|
||||
|
||||
# Create order from head dict to get an order number
|
||||
order, invoice_possible = OrderModel(head).create(web_user_name)
|
||||
|
|
@ -53,7 +54,7 @@ class Order():
|
|||
raise
|
||||
|
||||
# Go through order items, if any, and save them to DB.
|
||||
order['OrderItems'] = Order.create_rows(order['FtgNr'], order['OrderNr'], items)
|
||||
order['OrderItems'] = Order.create_rows(order, items)
|
||||
|
||||
# Save the information in the order object
|
||||
# Boolean argument deceides if order has contact person, and should be set 'registered'
|
||||
|
|
@ -62,14 +63,20 @@ class Order():
|
|||
return order
|
||||
|
||||
@staticmethod
|
||||
def create_rows(company_no, order_no, items=[]):
|
||||
def create_rows(order, items=[], pers_sign='biz'):
|
||||
rv = []
|
||||
|
||||
for item in items:
|
||||
if not isinstance(item, OrderItemModel):
|
||||
item = OrderItemModel(item)
|
||||
item['OrderNr'] = order_no
|
||||
item['FtgNr'] = company_no
|
||||
|
||||
# Set RequestedDeliveryDate from order head if not specified for items.
|
||||
if order['OrdBerLevDat'] and not item['OrdBegLevDat']:
|
||||
item['OrdBegLevDat'] = order['OrdBerLevDat']
|
||||
|
||||
item['OrderNr'] = order['OrderNr']
|
||||
item['FtgNr'] = order['FtgNr']
|
||||
item['PersSign'] = pers_sign
|
||||
rv.append(item.save())
|
||||
|
||||
return rv
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue