Commit 66e4d101 authored by Xiaowu Zhang's avatar Xiaowu Zhang

erp5_trade: display price according to sale trade condition

parent cc87198d
...@@ -14,34 +14,34 @@ check_stock_availability = False ...@@ -14,34 +14,34 @@ check_stock_availability = False
portal = context.getPortalObject() portal = context.getPortalObject()
Base_translateString = portal.Base_translateString Base_translateString = portal.Base_translateString
delivery = context
if delivery.getPortalType() in portal.getPortalContainerTypeList():
delivery = context.getExplanationValue()
# Retrieve lines portal type # Retrieve lines portal type
line_portal_type_list = [x for x in delivery.getTypeInfo().getTypeAllowedContentTypeList() \ line_portal_type_list = [x for x in context.getTypeInfo().getTypeAllowedContentTypeList() \
if x in portal.getPortalMovementTypeList()] if x in portal.getPortalMovementTypeList()]
line_portal_type = line_portal_type_list[0] line_portal_type = line_portal_type_list[0]
if line_portal_type in portal.getPortalSaleTypeList(): if line_portal_type in portal.getPortalSaleTypeList():
section_uid = delivery.getSourceSectionUid() section_uid = context.getSourceSectionUid()
node_uid = context.getSourceUid()
supply_cell_portal_type = "Sale Supply Cell" supply_cell_portal_type = "Sale Supply Cell"
supply_line_id = "default_ssl" supply_line_id = "default_ssl"
use_list = portal.portal_preferences.getPreferredSaleUseList() use_list = portal.portal_preferences.getPreferredSaleUseList()
check_stock_availability = True check_stock_availability = True
elif line_portal_type in portal.getPortalPurchaseTypeList(): elif line_portal_type in portal.getPortalPurchaseTypeList():
section_uid = delivery.getDestinationSectionUid() section_uid = context.getDestinationSectionUid()
node_uid = context.getDestinationUid()
supply_cell_portal_type = "Purchase Supply Cell" supply_cell_portal_type = "Purchase Supply Cell"
supply_line_id = "default_psl" supply_line_id = "default_psl"
use_list = portal.portal_preferences.getPreferredPurchaseUseList() use_list = portal.portal_preferences.getPreferredPurchaseUseList()
elif line_portal_type in portal.getPortalInternalTypeList(): elif line_portal_type in portal.getPortalInternalTypeList():
section_uid = None section_uid = None # XXX ralf hack, we don't care about stock by ownership
node_uid = context.getSourceUid()
supply_line_id = "default_isl" supply_line_id = "default_isl"
supply_cell_portal_type = "Internal Supply Cell" supply_cell_portal_type = "Internal Supply Cell"
use_list = portal.portal_preferences.getPreferredPurchaseUseList() \ use_list = portal.portal_preferences.getPreferredPurchaseUseList() \
+ portal.portal_preferences.getPreferredSaleUseList() + portal.portal_preferences.getPreferredSaleUseList()
elif line_portal_type in portal.getPortalInventoryMovementTypeList(): elif line_portal_type in portal.getPortalInventoryMovementTypeList():
section_uid = None section_uid = None
node_uid = None
no_inventory = True no_inventory = True
use_list = portal.portal_preferences.getPreferredPurchaseUseList() \ use_list = portal.portal_preferences.getPreferredPurchaseUseList() \
+ portal.portal_preferences.getPreferredSaleUseList() + portal.portal_preferences.getPreferredSaleUseList()
...@@ -52,6 +52,10 @@ else: ...@@ -52,6 +52,10 @@ else:
request= context.REQUEST request= context.REQUEST
### XXX ignore owner
section_uid=None
total_price = 0.0 total_price = 0.0
status_message_dict = {} status_message_dict = {}
...@@ -82,10 +86,9 @@ for line in listbox: ...@@ -82,10 +86,9 @@ for line in listbox:
continue continue
else: else:
product = product_list[0].getObject() product = product_list[0].getObject()
# Resource part # Resource part
line["resource_relative_url"] = product.getRelativeUrl() #cell.getResource() line["resource_relative_url"] = product.getRelativeUrl() #cell.getResource()
request.form["field_listbox_resource_relative_url_new_%s"%line_id] = product.getRelativeUrl() request.set("field_listbox_resource_relative_url_new_%s"%line_id, product.getRelativeUrl())
request.form["field_listbox_quantity_unit_new_%s"%line_id] = product.getQuantityUnit() request.form["field_listbox_quantity_unit_new_%s"%line_id] = product.getQuantityUnit()
variation_list = line['variation_category_list'] variation_list = line['variation_category_list']
...@@ -98,32 +101,38 @@ for line in listbox: ...@@ -98,32 +101,38 @@ for line in listbox:
if quantity in (None, ""): if quantity in (None, ""):
line["quantity"] = 0.0 line["quantity"] = 0.0
if line['price'] in (None,""): if line['price'] in (None,""):
if variation_list: if 0: # XXX why not just call getPrice ?????
# Retrieve the price from the cell if variation_list:
# if we have variation defined # Retrieve the price from the cell
try: # if we have variation defined
supply_cell_list = product[supply_line_id].contentValues(portal_type=supply_cell_portal_type) try:
except KeyError: supply_cell_list = product[supply_line_id].contentValues(portal_type=supply_cell_portal_type)
# No price defined except KeyError:
supply_cell_list = [] # No price defined
for supply_cell in supply_cell_list: supply_cell_list = []
if supply_cell.getVariationCategoryList() == variation_list: for supply_cell in supply_cell_list:
line['price'] = supply_cell.getBasePrice() or 0 if supply_cell.getVariationCategoryList() == variation_list:
line['price'] = supply_cell.getBasePrice() or 0
line["total_price"] = line['quantity'] * line['price']
break
else:
# Retrieve the price from the line
# if we have no variation defined
try:
supply_line = product[supply_line_id]
line['price'] = supply_line.getBasePrice() or 0
line["total_price"] = line['quantity'] * line['price'] line["total_price"] = line['quantity'] * line['price']
break except KeyError:
else: # No price defined
# Retrieve the price from the line pass
# if we have no variation defined if variation_list:
try: line['price'] = -1 # not implemented
supply_line = product[supply_line_id] line['price'] = context.newContent(temp_object=True,
line['price'] = supply_line.getBasePrice() or 0 portal_type=line_portal_type,
line["total_price"] = line['quantity'] * line['price'] resource_value=product,
except KeyError: quantity=line['quantity']).getPrice()
# No price defined
pass line["total_price"] = line['quantity'] * (line['price'] or 0)
else:
# Use the price defined by the user
line["total_price"] = line['quantity'] * line['price']
request.form["field_listbox_price_new_%s"%line_id] = line['price'] request.form["field_listbox_price_new_%s"%line_id] = line['price']
request.form["field_listbox_total_price_new_%s"%line_id] = line['total_price'] request.form["field_listbox_total_price_new_%s"%line_id] = line['total_price']
...@@ -136,17 +145,20 @@ for line in listbox: ...@@ -136,17 +145,20 @@ for line in listbox:
if variation_list: if variation_list:
available_inv = request.form["field_listbox_available_quantity_new_%s"%line_id] = product.getAvailableInventory( available_inv = request.form["field_listbox_available_quantity_new_%s"%line_id] = product.getAvailableInventory(
section_uid=section_uid, section_uid=section_uid,
node_uid=node_uid,
variation_text=variation_list) variation_text=variation_list)
request.form['field_listbox_inventory_new_%s'%line_id] = product.getInventory( request.form['field_listbox_inventory_new_%s'%line_id] = product.getFutureInventory(
section_uid=section_uid, section_uid=section_uid,
node_uid=node_uid,
variation_text=variation_list) variation_text=variation_list)
request.form["field_listbox_current_quantity_new_%s"%line_id] = product.getCurrentInventory( request.form["field_listbox_current_quantity_new_%s"%line_id] = product.getCurrentInventory(
section_uid=section_uid, section_uid=section_uid,
node_uid=node_uid,
variation_text=variation_list) variation_text=variation_list)
else: else:
available_inv = request.form["field_listbox_available_quantity_new_%s"%line_id] = product.getAvailableInventory(section_uid=section_uid) available_inv = request.form["field_listbox_available_quantity_new_%s"%line_id] = product.getAvailableInventory(section_uid=section_uid, node_uid=node_uid)
request.form['field_listbox_inventory_new_%s'%line_id] = product.getInventory(section_uid=section_uid) request.form['field_listbox_inventory_new_%s'%line_id] = product.getFutureInventory(section_uid=section_uid, node_uid=node_uid)
request.form["field_listbox_current_quantity_new_%s"%line_id] = product.getCurrentInventory(section_uid=section_uid) request.form["field_listbox_current_quantity_new_%s"%line_id] = product.getCurrentInventory(section_uid=section_uid, node_uid=node_uid)
# Check if quantity is available # Check if quantity is available
if check_stock_availability and available_inv < line["quantity"]: if check_stock_availability and available_inv < line["quantity"]:
...@@ -169,10 +181,14 @@ if status_message_dict: ...@@ -169,10 +181,14 @@ if status_message_dict:
status_message_list.append(Base_translateString(message, mapping=mapping)) status_message_list.append(Base_translateString(message, mapping=mapping))
portal_status_message = ' -- '.join(status_message_list) portal_status_message = ' -- '.join(status_message_list)
request.form["field_my_total_price"] = total_price #request.set('portal_status_message', ' -- '.join(status_message_list))
request.form["field_my_total_price"] = total_price
context.Base_updateDialogForm(listbox=listbox,update=1,kw=kw) context.Base_updateDialogForm(listbox=listbox,update=1,kw=kw)
return context.Base_renderForm( return context.Base_renderForm(
request.form['dialog_id'], request.form['dialog_id'],
message=portal_status_message message=portal_status_message
) )
"""
return getattr(context, request.form['dialog_id'])(listbox=listbox, kw=kw)
"""
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment