示例#1
0
 def test_getClosestDate(self):
   target_date = DateTime('2008/08/15 00:00:00 GMT+2')
   self.assertEqual('Aug. 1, 2008 12:00 am GMT+2',
     getClosestDate(target_date=target_date, precision='month', before=True).pCommonZ())
   self.assertEqual('Sep. 1, 2008 12:00 am GMT+2',
     getClosestDate(target_date=target_date, precision='month', before=False).pCommonZ())
   date = DateTime('2008/01/10 00:00:00 GMT-2')
   self.assertEqual('Aug. 10, 2008 12:00 am GMT-2',
     getClosestDate(date=date, target_date=target_date, precision='month', before=True).pCommonZ())
   self.assertEqual('Sep. 10, 2008 12:00 am GMT-2',
     getClosestDate(date=date, target_date=target_date, precision='month', before=False).pCommonZ())
示例#2
0
 def setUpPeriodicity(hosting_subscription):
   from Products.ERP5Type.DateUtils import addToDate, getClosestDate
   start_date = hosting_subscription.getCreationDate()
   start_date = getClosestDate(target_date=start_date, precision='day')
   while start_date.day() >= 29:
     start_date = addToDate(start_date, to_add={'day': -1})
   periodicity_month_day_list = [start_date.day()]
   periodicity_hour_list=[0]
   periodicity_minute_list=[0]
   hosting_subscription.edit(
     periodicity_month_day_list=periodicity_month_day_list,
     periodicity_hour_list=periodicity_hour_list,
     periodicity_minute_list=periodicity_minute_list
   )
  def stepCheckSubscriptionSalePackingListCoverage(self, sequence, **kw):
    hosting_subscription = self.portal.portal_catalog.getResultValue(
      uid=sequence['hosting_subscription_uid'])
    delivery_list = self.portal.portal_catalog(
      portal_type='Sale Packing List',
      causality_relative_url=hosting_subscription.getRelativeUrl(),
      sort_on=(('delivery.start_date', 'desc'),)
    )
    # is next month covered?
    self.assertEqual(1, len(delivery_list))

    instance_setup_delivery = self.portal.portal_catalog.getResultValue(
      portal_type='Sale Packing List Line',
      default_aggregate_uid=sequence['software_instance_uid'],
      resource=self.portal.portal_preferences\
        .getPreferredInstanceSetupResource()).getParentValue()

    self.assertEqual('delivered', instance_setup_delivery.getSimulationState())
    start_date = None
    for item in self.portal.portal_workflow.getInfoFor(
      ob=instance_setup_delivery, name='history', wf_id='packing_list_workflow'):
      if item.get('simulation_state') == 'stopped':
        start_date = item.get('time')
        break
    start_date = getClosestDate(target_date=start_date, precision='day')
    while start_date.day() >= 29:
      start_date = addToDate(start_date, to_add={'day': -1})
    stop_date = addToDate(start_date, to_add={'month': 1})
    idx = 0
    for delivery in delivery_list:
      self.assertEqual(start_date, delivery.getStartDate())
      self.assertEqual(stop_date, delivery.getStopDate())

      self.assertEqual(hosting_subscription.getRelativeUrl(),
        delivery.getCausality())
      delivery_line_list = \
        delivery.contentValues(portal_type="Sale Packing List Line")
      self.assertEquals(1, len(delivery_line_list))
      delivery_line = delivery_line_list[0]
      self.assertEquals("organisation_module/vifib_internet",
        delivery.getSource())
      self.assertEquals("organisation_module/vifib_internet",
        delivery.getSourceSection())
      self.assertEquals("person_module/test_vifib_customer",
        delivery.getDestination())
      self.assertEquals("person_module/test_vifib_customer",
        delivery.getDestinationSection())
      self.assertEquals("currency_module/EUR",
        delivery.getPriceCurrency())

      # check sale packing list line related property
      self.assertEquals("service_module/vifib_instance_subscription",
        delivery_line.getResource())
      self.assertEquals(1,
        delivery_line.getQuantity())
      self.assertEquals("unit/piece",
        delivery_line.getQuantityUnit())
      self.assertEquals(0.83612040133800003,
        delivery_line.getPrice())

      # fetch open order, open order line and subscription
      person = self.portal.person_module['test_vifib_customer']
      open_order = self.portal.portal_catalog.getResultValue(
        default_destination_decision_uid=person.getUid(),
        portal_type="Open Sale Order",
        validation_state='validated')
      open_order_line = \
        open_order.contentValues(portal_type="Open Sale Order Line")[0]

      # check related property
      self.assertEquals(open_order_line.getSpecialise(),
        delivery.getSpecialise())

      idx += 1
 def stepInvoiceSetStartDatePreviousMonth(self, sequence, **kw):
   invoice = self.portal.portal_catalog.getResultValue(
     uid=sequence['invoice_uid'])
   invoice.setStartDate(getClosestDate(target_date=DateTime())-1)
示例#5
0
from Products.ERP5Type.DateUtils import getClosestDate

portal = context.getPortalObject()

delivery_portal_type = "Sale Order"
delivery_id = "erp5_trade_renderjs_ui_test_order"

source_value = portal.restrictedTraverse(
    'organisation_module/erp5_trade_renderjs_ui_test_source_node')
destination_value = portal.restrictedTraverse(
    'organisation_module/erp5_trade_renderjs_ui_test_destination_node')
specialise_value = portal.restrictedTraverse(
    'business_process_module/erp5_trade_renderjs_ui_test_business_process')
resource_value = portal.restrictedTraverse(
    'product_module/erp5_trade_renderjs_ui_test_product')

module = portal.getDefaultModule(delivery_portal_type)
delivery = module.newContent(portal_type=delivery_portal_type,
                             id=delivery_id,
                             title='%s_title' % delivery_id,
                             start_date=getClosestDate(precision='day'),
                             source_value=source_value,
                             source_section_value=source_value,
                             destination_value=destination_value,
                             destination_section_value=destination_value,
                             specialise_value=specialise_value)

return "Sale Order Created."
from zExceptions import Unauthorized
if REQUEST is not None:
  raise Unauthorized

from Products.ERP5Type.DateUtils import addToDate, getClosestDate

hosting_subscription = context
portal = context.getPortalObject()

start_date = context.HostingSubscription_calculateSubscriptionStartDate()

workflow_item_list = portal.portal_workflow.getInfoFor(
  ob=hosting_subscription,
  name='history',
  wf_id='instance_slap_interface_workflow')
result_date = None
for item in workflow_item_list:
  if item.get('slap_state') == 'destroy_requested':
    end_date = item.get('time')
    result_date = getClosestDate(target_date=end_date, precision='day')
    if result_date <= end_date:
      result_date = addToDate(result_date, to_add={'day': 1})
    break

return result_date
from Products.ERP5Type.DateUtils import addToDate, getClosestDate
hosting_subscription = state_change['object']

edit_kw = {}

if hosting_subscription.getPeriodicityHour() is None:
  edit_kw['periodicity_hour_list'] = [0]
if hosting_subscription.getPeriodicityMinute() is None:
  edit_kw['periodicity_minute_list'] = [0]
if hosting_subscription.getPeriodicityMonthDay() is None:
  start_date = hosting_subscription.HostingSubscription_calculateSubscriptionStartDate()
  start_date = getClosestDate(target_date=start_date, precision='day')
  while start_date.day() >= 29:
    start_date = addToDate(start_date, to_add={'day': -1})
  edit_kw['periodicity_month_day_list'] = [start_date.day()]

if edit_kw:
  hosting_subscription.edit(**edit_kw)
  def stepCheckSimulationMovement(self, sequence, **kw):
    # find related documents: open order, open order line,
    # subscription item, etc.
    person = self.portal.person_module['test_vifib_customer']
    open_order = self.portal.portal_catalog.getResultValue(
      default_destination_decision_uid=person.getUid(),
      validation_state='validated',
      portal_type="Open Sale Order")
    open_order_line_list = \
      open_order.contentValues(portal_type="Open Sale Order Line")
    self.assertEquals(1, len(open_order_line_list))
    open_order_line = open_order_line_list[0]
    hosting_subscription = \
      open_order_line.getAggregateValue(portal_type="Hosting Subscription")
    applied_rule = \
      hosting_subscription.getCausalityRelatedValue(portal_type="Applied Rule")
    self.assertEquals(
      "portal_rules/vifib_subscription_item_rule",
      applied_rule.getSpecialise())

    # check start date and stop date of the subscription item,
    # currently there is 1 month
    instance_setup_delivery = self.portal.portal_catalog.getResultValue(
      portal_type='Sale Packing List Line',
      default_aggregate_uid=sequence['software_instance_uid'],
      resource=self.portal.portal_preferences\
        .getPreferredInstanceSetupResource()).getParentValue()

    self.assertEqual('delivered', instance_setup_delivery.getSimulationState())
    start_date = None
    for item in self.portal.portal_workflow.getInfoFor(
      ob=instance_setup_delivery, name='history', wf_id='packing_list_workflow'):
      if item.get('simulation_state') == 'delivered':
        start_date = item.get('time')
        break

    start_date = getClosestDate(target_date=start_date, precision='day')
    while start_date.day() >= 29:
      start_date = addToDate(start_date, to_add={'day': -1})
    stop_date = addToDate(start_date, to_add={'month': 1})
    # check periodicity, should be first day of each month
    self.assertEquals(
      None, hosting_subscription.getPeriodicityMinuteFrequency())
    self.assertEquals(
      [0], hosting_subscription.getPeriodicityMinuteList())
    self.assertEquals(
      None, hosting_subscription.getPeriodicityHourFrequency())
    self.assertEquals(
      [0], hosting_subscription.getPeriodicityHourList())
    self.assertEquals(
      None, hosting_subscription.getPeriodicityDayFrequency())
    self.assertEquals(
      None, hosting_subscription.getPeriodicityMonthFrequency())
    self.assertEquals(
      [start_date.day()], hosting_subscription.getPeriodicityMonthDayList())
    self.assertEquals(
      None, hosting_subscription.getPeriodicityWeekFrequency())

    self.assertEqual(start_date, open_order_line.getStartDate())
    self.assertEqual(stop_date, open_order_line.getStopDate())

    simulation_movement_list = self.portal.portal_catalog(
      portal_type='Simulation Movement',
      parent_uid=applied_rule.getUid(),
      sort_on=(('movement.start_date', 'desc'),)
    )
    # Check that simulation is created by the periodicity for one month
    self.assertEquals(1,
                      len(simulation_movement_list))

    # Check the list of expected simulation
    idx = 0
    for simulation_movement in simulation_movement_list:
      # Check simulation movement property
      self.assertEquals(1.0,
        simulation_movement.getQuantity())
      self.assertEquals("unit/piece",
        simulation_movement.getQuantityUnit())
      self.assertEquals(0.83612040133800003,
        simulation_movement.getPrice())
      self.assertEquals("currency_module/EUR",
        simulation_movement.getPriceCurrency())
      # XXX supplier
      self.assertEquals("organisation_module/vifib_internet",
        simulation_movement.getSource())
      self.assertEquals("organisation_module/vifib_internet",
        simulation_movement.getSourceSection())
      # XXX customer
      self.assertEquals("person_module/test_vifib_customer",
        simulation_movement.getDestination())
      self.assertEquals("person_module/test_vifib_customer",
        simulation_movement.getDestinationSection())
      self.assertEquals(open_order_line.getSpecialise(),
        simulation_movement.getSpecialise())
      self.assertEquals("service_module/vifib_instance_subscription",
        simulation_movement.getResource())
      self.assertEquals("vifib/delivery",
        simulation_movement.getTradePhase())
      self.assertEquals(None,
                           simulation_movement.getAggregate(
                             portal_type="Computer Partition"))
      self.assertEquals(None,
                           simulation_movement.getAggregate(
                             portal_type="Software Instance"))
      self.assertEquals(hosting_subscription.getRelativeUrl(),
                           simulation_movement.getAggregate(
                             portal_type="Hosting Subscription"))
      self.assertEquals(None,
                           simulation_movement.getAggregate(
                             portal_type="Software Release"))
      self.assertEqual(start_date, simulation_movement.getStartDate())
      self.assertEqual(stop_date, simulation_movement.getStopDate())

      # delivered already...
      self.assertNotEqual(None, simulation_movement.getDelivery())
      self.assertEqual('Sale Packing List Line',
        simulation_movement.getDeliveryValue().getPortalType())
      # ...so no buildable
      self.assertFalse(simulation_movement.isBuildable())

      # delivered...
      self.assertEqual('delivered', simulation_movement.getSimulationState())
      # ...so invoice rule applied
      self.assertEqual(1,
        len(simulation_movement.contentValues(portal_type="Applied Rule")))
      # ...with one simulation movement
      invoice_applied_rule = simulation_movement.contentValues(
        portal_type="Applied Rule")[0]
      self.assertEqual(1, len(invoice_applied_rule.contentValues()))

      # check next simulation movement
      idx += 1
 def stepIncreaseOpenOrderCoverage(self, sequence, **kw):
   self.portal.portal_alarms.vifib_person_update_open_order.\
     Alarm_updatePersonOpenOrder(
     tag='test_tag', fixit=False,
     params={'stop_date': addToDate(getClosestDate(target_date=DateTime(),
       precision='month', before=1), month=3)})