Commit a4a4be02 authored by Romain Courteaud's avatar Romain Courteaud

slapos_subscription_request: create discount when closing the open sale order

parent 53aede91
......@@ -10,11 +10,16 @@ open_sale_order = open_sale_order_cell.getParentValue()
if open_sale_order_cell.getPortalType() == 'Open Sale Order Cell':
open_sale_order = open_sale_order.getParentValue()
assert open_sale_order.getValidationState() == 'validated'
start_date = open_sale_order.getStartDate()
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(
title="discount for %s" % open_sale_order.getReference(),
start_date=start_date,
......@@ -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 the open order starts before today,
# generate a discount to the user on his next invoice
......
from erp5.component.module.DateUtils import getClosestDate, addToDate
from zExceptions import Unauthorized
if REQUEST is not None:
raise Unauthorized
......@@ -56,11 +58,13 @@ subscribed_item = open_order_movement.getAggregateValue(portal_type=['Instance T
if subscription_change_request.getAggregateUid() != subscribed_item.getUid():
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
open_sale_order.OpenSaleOrder_archiveIfUnusedItem(check_unused_item=False)
# Create new Open Sale Order
subscription_change_request.SubscriptionRequest_createOpenSaleOrder()
open_order_movement.OpenSaleOrderCell_createDiscountSalePackingList(current_date)#, activate_kw=activate_kw)
# Change Subscripted Item user if needed
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