Commit 033a5651 authored by Romain Courteaud's avatar Romain Courteaud

slapos_subscription_request: create discount when closing the open sale order

parent 5e620d50
...@@ -10,11 +10,16 @@ open_sale_order = open_sale_order_cell.getParentValue() ...@@ -10,11 +10,16 @@ open_sale_order = open_sale_order_cell.getParentValue()
if open_sale_order_cell.getPortalType() == 'Open Sale Order Cell': if open_sale_order_cell.getPortalType() == 'Open Sale Order Cell':
open_sale_order = open_sale_order.getParentValue() open_sale_order = open_sale_order.getParentValue()
assert open_sale_order.getValidationState() == 'validated'
start_date = open_sale_order.getStartDate() start_date = open_sale_order.getStartDate()
next_period_date = hosting_subscription.getNextPeriodicalDate(current_date) next_period_date = hosting_subscription.getNextPeriodicalDate(current_date)
if open_sale_order.getValidationState() == 'validated':
unused_day_count = current_date - start_date
elif open_sale_order.getValidationState() == 'archived':
unused_day_count = next_period_date - current_date
else:
raise NotImplementedError('Unhandled open order state: %s' % open_sale_order.getValidationState())
sale_packing_list_edit_kw = dict( sale_packing_list_edit_kw = dict(
title="discount for %s" % open_sale_order.getReference(), title="discount for %s" % open_sale_order.getReference(),
start_date=start_date, start_date=start_date,
...@@ -36,7 +41,7 @@ sale_packing_list_edit_kw = dict( ...@@ -36,7 +41,7 @@ sale_packing_list_edit_kw = dict(
) )
unused_day_count = current_date - start_date
if (0 < unused_day_count):#(subscription_request.getPrice() != 0) and (0 < unused_day_count): if (0 < unused_day_count):#(subscription_request.getPrice() != 0) and (0 < unused_day_count):
# If the open order starts before today, # If the open order starts before today,
# generate a discount to the user on his next invoice # generate a discount to the user on his next invoice
......
from erp5.component.module.DateUtils import getClosestDate, addToDate
from zExceptions import Unauthorized from zExceptions import Unauthorized
if REQUEST is not None: if REQUEST is not None:
raise Unauthorized raise Unauthorized
...@@ -56,11 +58,13 @@ subscribed_item = open_order_movement.getAggregateValue(portal_type=['Instance T ...@@ -56,11 +58,13 @@ subscribed_item = open_order_movement.getAggregateValue(portal_type=['Instance T
if subscription_change_request.getAggregateUid() != subscribed_item.getUid(): if subscription_change_request.getAggregateUid() != subscribed_item.getUid():
return invalidate(subscription_change_request, 'Unhandled requested changes on: aggregate') return invalidate(subscription_change_request, 'Unhandled requested changes on: aggregate')
# Create new Open Sale Order
next_open_sale_order = subscription_change_request.SubscriptionRequest_createOpenSaleOrder()
current_date = getClosestDate(target_date=next_open_sale_order.getCreationDate(), precision='day')
# XXX Compensation # XXX Compensation
open_sale_order.OpenSaleOrder_archiveIfUnusedItem(check_unused_item=False) open_sale_order.OpenSaleOrder_archiveIfUnusedItem(check_unused_item=False)
open_order_movement.OpenSaleOrderCell_createDiscountSalePackingList(current_date)#, activate_kw=activate_kw)
# Create new Open Sale Order
subscription_change_request.SubscriptionRequest_createOpenSaleOrder()
# Change Subscripted Item user if needed # Change Subscripted Item user if needed
subscribed_item = open_order_movement.getAggregateValue(portal_type=['Instance Tree', 'Compute Node', 'Project']) subscribed_item = open_order_movement.getAggregateValue(portal_type=['Instance Tree', 'Compute Node', 'Project'])
......
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