xiaoding721
2024-08-29 d4240172a64f5582a63946c48782025c1d2f5999
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
已重命名17个文件
已修改15个文件
已添加14个文件
834 ■■■■■ 文件已修改
Calendars/BL/Type_LibCal_CalendarRegistry/Method_InitializeEventCategories.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calendars/BL/Type_LibCal_CommonCalendar/StaticMethod_Create.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/InfoMessages.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanPush/Attribute_ProductFourCode.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_GenerateData.qbl 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_CalendarRegistry/Method_InitializeEventTypes.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_CalendarRegistry/Method_OnCreate.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_EventEvent/StaticMethod_DEFAULT_TYPE.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_WholeShift/Method_CapacityRounding.qbl 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling3.qbl 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_WholeShift/Method_ProcessingTimeIntervalIsEqualToOneDay.qbl 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelDate#21.def 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelDatePeriod.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport#957.def 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelHeader.def 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelOperation.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelPeriods#368.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelDate_21_DateSelectorEndTime_OnChanged.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelDate_21_DateSelectorStartTime_OnChanged.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_957_ButtonHeader_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_957_ButtonInitialize_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_957_ButtonSearch_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Component_pnlEventType.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelCheckAll.def 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelCreate.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDate.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDateAll.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDateEnd.def 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDatePeriod.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDateStart.def 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDescription.def 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelEvent.def 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader#144.def 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlSubscribers.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelCheckAll_ckbIsAllDay_OnChanged.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelCreate_ButtonCreate_OnClick#338.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateEnd_dsEndDate_OnChanged#478.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateEnd_durEndTimeOfDay_OnChanged#480.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateEnd_durEndTimeOfDay_OnInputIdle#529.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateStart_dsStartDate_OnChanged#384.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateStart_durStartTimeOfDay_OnChanged#57.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateStart_durStartTimeOfDay_OnInputIdle#891.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelEvent_ddslType_OnSelectionChanged.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calendars/BL/Type_LibCal_CalendarRegistry/Method_InitializeEventCategories.qbl
@@ -10,5 +10,4 @@
    // Create additional EventCategories.
    LibCal_EventCategory::InitializeEventCategories( this );
  *]
  InterfaceProperties { Accessibility: 'Module' }
}
Calendars/BL/Type_LibCal_CommonCalendar/StaticMethod_Create.qbl
@@ -5,5 +5,4 @@
) as LibCal_CommonCalendar
{
  TextBody: 'return owner_i.CommonCalendar( relnew );'
  InterfaceProperties { Accessibility: 'Module' }
}
_Main/BL/InfoMessages.qbl
@@ -234,6 +234,10 @@
  {
    DefaultText: 'This date is not within the planned cycle!'
  }
  InfoMessage MP_LibCal_Event_ValidDateInterval
  {
    DefaultText: 'The start date is more than one day away from the end date!'
  }
  InfoMessage MP_LibCal_Event_ValidDatePeriod
  {
    DefaultText: 'The start date must be less than the end date!'
_Main/BL/Type_AssemblyOnlinePlanPush/Attribute_ProductFourCode.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductFourCode
{
  #keys: '3[415136.0.1082964677][415136.0.1082964676][415136.0.1082964678]'
  Description: '产品4位码code'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_GenerateData.qbl
@@ -37,14 +37,16 @@
        ordercell          := selectobject( column, AssemblyOnlinePlanCell, ocell, ocell.AssemblyOnlinePlanRow().ProductID() = quantityrow.ProductID() 
                                            and ocell.AssemblyOnlinePlanRow().ProductionLine() = quantityrow.ProductionLine() 
                                            and ocell.AssemblyOnlinePlanRow().Type() = '2' );
        product            := selectobject( macroplan, Product_MP, product, product.ID() = quantityrow.ProductID() );
    
        cd                  :=interfaceDataset.AssemblyOnlinePlanPPPSPush( relnew, Product           := quantityrow.ProductID()
        cd                  :=interfaceDataset.AssemblyOnlinePlanPPPSPush( relnew, Product           := product.ID()
                                                                           , PlanningDate            := column.ColumnDate()
                                                                           , PlanningQty             := [Number]cell.Value()
                                                                           , Sequence                := ordercell.Value()
                                                                           , VersionName             := macroplan.ScenarioName()
                                                                           , InterfaceTime           := nowdate
                                                                           , VersionFlag             := versionflag
                                                                           , ProductFourCode         := product.Notes()
                                                                           );
        loginfo.AssemblyOnlinePlanPPPSPush( relinsert, cd );
      }
_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl
@@ -8,8 +8,11 @@
  TextBody:
  [*
    // ç”„兰鸽 Aug-22-2024 (created)
    traverse( macroplan, ChangeLossSetting, cls ){
      macroplan.ChangeLossSettingExcel( relnew, Product1 := cls.ProductFirst().ID(), Product2 := cls.ProductSecond().ID(), Unit := cls.Unit().ID(), ChangeLossNr := cls.ChangeLossNr() );
    }
    value := macroplan.MP_ExportChangeLossSettingsBroker().ExecuteToXLS( isxlsxformat ).AsBinaryValue();
    macroplan.ChangeLossSettingExcel( relflush );
    return value;
  *]
}
_Main/BL/Type_LibCal_CalendarRegistry/Method_InitializeEventTypes.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Method InitializeEventTypes
{
  TextBody:
  [*
    // Always create a general EventCategory.
    //LibCal_EventCategory::Create( this, LibCal_EventType::DEFAULT_TYPE() );
    this.EventType( relnew,ID := "blank", Name := LibCal_EventType::DEFAULT_TYPE() );
    // Create additional EventCategories.
    //LibCal_EventCategory::InitializeEventCategories( this );
  *]
}
_Main/BL/Type_LibCal_CalendarRegistry/Method_OnCreate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Method OnCreate #extension
{
  TextBody:
  [*
    this.SetTimeZoneID();
    this.InitializeEventCategories();
    this.InitializeEventTypes();
    // Create the CommonCalendar.
    LibCal_CommonCalendar::Create( this );
  *]
}
_Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl
@@ -11,17 +11,24 @@
  [*
    // ç”„兰鸽 Jul-26-2024 (created)
    feedback_o := '';
    if( startdate > endtime ){
      feedback_o := Translations::MP_LibCal_Event_ValidDatePeriod();
    }
    if( startdate.IsFinite() and endtime.IsFinite() ){
      if( startdate > endtime ){
        feedback_o := Translations::MP_LibCal_Event_ValidDatePeriod();
      }
      mindate      := owner.StartOfPlanning().Date();
      maxdate      := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day() , period.StartDate() );
    
    if( not exists( owner, Period_MP, period, not period.IsHistorical()
                and period.TimeUnit() = Translations::MP_GlobalParameters_Day()
                and period.StartDate() = startdate.Date()
                and ( period.EndDate() = endtime.Date() or period.StartDate() = endtime.Date() ) ) ){
      feedback_o := Translations::MP_LibCal_Event_ValidDate();
      if( startdate.Date() < mindate or endtime.Date() > maxdate.StartDate() ){
        feedback_o := Translations::MP_LibCal_Event_ValidDate();
      }
      if( ( endtime - startdate ).Days() > 1 ){
        feedback_o := Translations::MP_LibCal_Event_ValidDateInterval();
      }
    }else{
      feedback_o := "日期非法";
    }
    return feedback_o = '';
    //return true;
  *]
}
_Main/BL/Type_LibCal_EventEvent/StaticMethod_DEFAULT_TYPE.qbl
@@ -3,5 +3,5 @@
StaticMethod DEFAULT_TYPE () const declarative remote as String
{
  Description: 'Can be extended to define the name of the general EventCategory, which will always be created.'
  TextBody: 'return "端午节";'
  TextBody: 'return "   ";'
}
_Main/BL/Type_WholeShift/Method_CapacityRounding.qbl
@@ -90,8 +90,34 @@
    //  }
    //  debuginfo( "。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。" );
    //}
    sourceChangeover := uptb.ChangeoverDuration();
    targetChangeover := Duration::Zero();
    debuginfo( "需要圆整的时间(单位:小时)", timeDifference, "    è€ƒè™‘ChangeOver条件圆整使其达到整班" );
    nextUnitPeriodTimeBase := ifexpr( isnull( uptb.Next().astype( UnitPeriodTimeBase ) ), select( uptbs, Elements, tempUPTB, tempUPTB.Start() = uptb.End() ), uptb.Next().astype( UnitPeriodTimeBase ) );
    while ( timeDifference > 0 and not isnull( nextUnitPeriodTimeBase ) ) {
      debuginfo( "开始向时间为:", nextUnitPeriodTimeBase.StartDate().Format( "Y-M2-D2" ), "的产能周期借" );
      traverse ( nextUnitPeriodTimeBase, PeriodTaskOperation, pto, guard( pto.Operation().RoutingStep().Routing().Start(), uptb.StartDate() ) <= uptb.StartDate() and
                                                                   guard( pto.Operation().RoutingStep().Routing().End(), uptb.End().Date() ) >= uptb.End().Date() and
                                                                   exists( uptb, PeriodTaskOperation.Operation, tempO, tempO = pto.Operation() )                  and
                                                                   timeDifference > 0 ) {
        minimumCapacityThatCanBeBorrowed := pto.Quantity() / pto.Operation().Throughput();
        unifiedProcessingTimeOfRounding := minvalue( timeDifference, minimumCapacityThatCanBeBorrowed );
        debuginfo( "剩余圆整的产能:", timeDifference, "    nextUnitPeriodTimeBase的当前周期任务供应数量:", pto.Quantity(), "    èƒ½å€Ÿçš„产能:", minimumCapacityThatCanBeBorrowed, " ç»Ÿä¸€å€Ÿçš„产能:", unifiedProcessingTimeOfRounding, "    å€Ÿä¹‹å‰changeover时间:", uptb.ChangeoverDuration() );
        this.UnifiedProcessingOfRoundingLogic( unifiedProcessingTimeOfRounding, uptb, pto, macroPlan );
        targetChangeover := uptb.ChangeoverDuration();
        timeDifference   := timeDifference - unifiedProcessingTimeOfRounding;
      }
      if ( isnull( nextUnitPeriodTimeBase.Next() ) ) {
        nextUnitPeriodTimeBase := select( uptbs, Elements, tempUPTB, tempUPTB.Start() = nextUnitPeriodTimeBase.End() );
      } else {
        nextUnitPeriodTimeBase := nextUnitPeriodTimeBase.Next().astype( UnitPeriodTimeBase );
      }
    }
        
    debuginfo( "不考虑任何条件圆整使其到达整班" );
    debuginfo( "需要圆整的时间(单位:小时)", timeDifference, "    ä¸è€ƒè™‘任何条件圆整使其到达整班" );
    nextUnitPeriodTimeBase := ifexpr( isnull( uptb.Next().astype( UnitPeriodTimeBase ) ), select( uptbs, Elements, tempUPTB, tempUPTB.Start() = uptb.End() ), uptb.Next().astype( UnitPeriodTimeBase ) );
    while ( timeDifference > 0 and not isnull( nextUnitPeriodTimeBase ) ) {
      debuginfo( "开始向时间为:", nextUnitPeriodTimeBase.StartDate().Format( "Y-M2-D2" ), "的产能周期借" );
@@ -100,7 +126,7 @@
                                                                   timeDifference > 0 ) {
        minimumCapacityThatCanBeBorrowed := pto.Quantity() / pto.Operation().Throughput();
        unifiedProcessingTimeOfRounding := minvalue( timeDifference, minimumCapacityThatCanBeBorrowed ); 
        debuginfo( "剩余圆整的产能:", timeDifference, "    nextUnitPeriodTimeBase的当前周期任务供应数量:", pto.Quantity(), "    èƒ½å€Ÿçš„产能:", minimumCapacityThatCanBeBorrowed, " ç»Ÿä¸€å€Ÿçš„产能:", unifiedProcessingTimeOfRounding );
        debuginfo( "剩余圆整的产能:", timeDifference, "    nextUnitPeriodTimeBase的当前周期任务供应数量:", pto.Quantity(), "    èƒ½å€Ÿçš„产能:", minimumCapacityThatCanBeBorrowed, " ç»Ÿä¸€å€Ÿçš„产能:", unifiedProcessingTimeOfRounding, "    å½“前changeover时间:", uptb.ChangeoverDuration().HoursAsReal() );
        this.UnifiedProcessingOfRoundingLogic( unifiedProcessingTimeOfRounding, uptb, pto, macroPlan );  
        timeDifference := timeDifference - unifiedProcessingTimeOfRounding;                                                 
      }
@@ -111,5 +137,9 @@
        nextUnitPeriodTimeBase := nextUnitPeriodTimeBase.Next().astype( UnitPeriodTimeBase );
      }
    }
    if ( ( targetChangeover - sourceChangeover ).HoursAsReal() > 0.0 ) {
      this.ZeroCapacityReplenishment( macroPlan, ( targetChangeover - sourceChangeover ).HoursAsReal(), uptb, uptbs );
    }
  *]
}
_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling3.qbl
@@ -7,7 +7,10 @@
{
  TextBody:
  [*
    traverse ( uptbs, Elements, uptb, true/*uptb.StartDate() <= Date::Construct( 2024, 4, 23 )*/ ) {
    traverse ( uptbs, Elements, uptb,
               true
    //           uptb.StartDate() <= Date::Construct( 2024, 5, 8 )
               ) {
      if ( ( uptb.End().Date() - uptb.StartDate() ) > 1 ) {  
    //    debuginfo( "开始时间:", uptb.StartDate().Format( "Y-M2-D2" ), "    ç»“束时间:", uptb.End().Date().Format( "Y-M2-D2" ), "    æ—¶é—´åŒºé—´ï¼š", ( uptb.End().Date() - uptb.StartDate() ) );
    //    this.ProcessingTimeIntervalIsGreaterThanOneDay( macroPlan, uptb, uptbs );
_Main/BL/Type_WholeShift/Method_IsRoundingOrZeroFilling4.qbl
@@ -10,17 +10,18 @@
  [*
    traverse ( unit, Lane.LaneLeg.Trip, t ) {
      traverse ( t, ProductInTrip, pit, pit.Quantity() > 0.0 ) {
        info( pit.Product_MP().ParentID() );
        // èŽ·å–äº§å“lotsize倍数
        lotsize := 1;
        if ( pit.Product_MP().ParentID().Regex( "缸体" ) ) {
        if ( pit.Product_MP().ParentID().Regex( "ZKG" ) ) {
          lotsize := macroPlan.CylinderBlock();
        } else if ( pit.Product_MP().ParentID().Regex( "缸盖" ) ) {
        } else if ( pit.Product_MP().ParentID().Regex( "ZKM" ) ) {
          lotsize := macroPlan.CylinderHead();
        } else if ( pit.Product_MP().ParentID().Regex( "连杆" ) ) {
        } else if ( pit.Product_MP().ParentID().Regex( "PL" ) ) {
          lotsize := macroPlan.ConnectingRod();
        } else if ( pit.Product_MP().ParentID().Regex( "曲轴" ) ) {
        } else if ( pit.Product_MP().ParentID().Regex( "KW" ) ) {
          lotsize := macroPlan.Crankshaft();
        } else if ( pit.Product_MP().ParentID().Regex( "曲轴" ) ) {
        } else if ( pit.Product_MP().ParentID().Regex( "AGW" ) ) {
          lotsize := macroPlan.BalanceAxis();
        }
        
_Main/BL/Type_WholeShift/Method_ProcessingTimeIntervalIsEqualToOneDay.qbl
@@ -9,7 +9,7 @@
  Description: '处理时间区间等于1天'
  TextBody:
  [*
    if ( uptb.UsedCapacity() = uptb.TotalAvailableCapacity() or ( uptb.UtilizationPercentage() * uptb.MaximumLoadPercentage() / 100 ) = 100 or uptb.FreeCapacity().HoursAsReal() = 0 ) {
    if ( uptb.UsedCapacity() = uptb.TotalAvailableCapacity() or [Number]( uptb.UtilizationPercentage() * uptb.MaximumLoadPercentage() / 100 ) = 100 or uptb.FreeCapacity().HoursAsReal() = 0 ) {
      debuginfo( "天已经是整班,无需处理(使用产能等于可用产能)" );
    } else if ( uptb.UsedCapacity().HoursAsReal() = 0 ) {
      debuginfo( "天已经是整班,无需处理(使用产能等于0)" );
@@ -27,12 +27,12 @@
        }
        debuginfo( ".........." );             
      }
      //  whetherToFillInZero := false;
      whetherToFillInZero := false;
      if ( whetherToFillInZero ) {
        debuginfo( "执行补零" );
        debuginfo( "开始执行补零------------" );
        this.ZeroCapacityReplenishment( macroPlan, uptb.UsedCapacity().HoursAsReal(), uptb, uptbs ); 
      } else {
        debuginfo( "执行圆整" );
        debuginfo( "开始执行圆整------------" );
        this.CapacityRounding( macroPlan, uptb.TotalAvailableCapacity().HoursAsReal() - ( uptb.UsedCapacity() + uptb.ChangeoverDuration() ).HoursAsReal(), uptb, uptbs );
      }
    } else {
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelDate#21.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelDate.def ÐÞ¸Ä
@@ -1,13 +1,13 @@
Quintiq file version 2.0
Component PanelDate
Component PanelDate id:PanelDate_21
{
  #keys: '[415136.0.668311160]'
  #keys: '[415136.0.1066488447]'
  BaseType: 'WebPanel'
  Children:
  [
    Component DateSelectorStartTime id:DateSelectorStartTime_806
    Component DateSelectorStartTime
    {
      #keys: '[415136.0.668311203]'
      #keys: '[415136.0.1066488448]'
      BaseType: 'WebDateSelector'
      Properties:
      [
@@ -15,9 +15,9 @@
        Taborder: 0
      ]
    }
    Component DateSelectorEndTime id:DateSelectorEndTime_819
    Component DateSelectorEndTime
    {
      #keys: '[415136.0.668311223]'
      #keys: '[415136.0.1066488449]'
      BaseType: 'WebDateSelector'
      Properties:
      [
@@ -28,7 +28,7 @@
    }
    Component dhDate
    {
      #keys: '[415136.0.701820404]'
      #keys: '[415136.0.1066488450]'
      BaseType: 'WebDataHolder'
      Databinding: 'LibCal_SubscriberEventSearch'
      Properties:
@@ -39,7 +39,6 @@
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelDatePeriod.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelDatePeriod
{
  #keys: '[415136.0.1066488401]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelDate_21
    #child: PanelPeriods_368
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport#957.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport.def ÐÞ¸Ä
@@ -1,13 +1,13 @@
Quintiq file version 2.0
Component PanelExport
Component PanelExport id:PanelExport_957
{
  #keys: '[415136.0.668311240]'
  #keys: '[415136.0.1066488539]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonHeader id:ButtonHeader_763
    Component ButtonHeader
    {
      #keys: '[415136.0.668311275]'
      #keys: '[415136.0.1066488540]'
      BaseType: 'WebButton'
      Properties:
      [
@@ -17,7 +17,7 @@
    }
    Component ButtonInitialize
    {
      #keys: '[415136.0.670072471]'
      #keys: '[415136.0.1066488541]'
      BaseType: 'WebButton'
      Properties:
      [
@@ -27,7 +27,7 @@
    }
    Component ButtonSearch
    {
      #keys: '[415136.0.922435407]'
      #keys: '[415136.0.1066488542]'
      BaseType: 'WebButton'
      Properties:
      [
@@ -40,6 +40,6 @@
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 2
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelHeader.def
@@ -5,9 +5,8 @@
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelPeriods
    #child: PanelDate
    #child: PanelExport
    #child: PanelOperation
    #child: PanelDatePeriod
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelOperation.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelOperation
{
  #keys: '[415136.0.1066488485]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelExport_957
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelPeriods#368.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelPeriods.def ÐÞ¸Ä
@@ -1,13 +1,13 @@
Quintiq file version 2.0
Component PanelPeriods
Component PanelPeriods id:PanelPeriods_368
{
  #keys: '[415136.0.667550798]'
  #keys: '[415136.0.1066488470]'
  BaseType: 'WebPanel'
  Children:
  [
    Component RadioButtonGroupUseForPlanning
    {
      #keys: '[415136.0.667550833]'
      #keys: '[415136.0.1066488471]'
      BaseType: 'WebRadioButtonGroup'
      Properties:
      [
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelDate_21_DateSelectorEndTime_OnChanged.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelDate_DateSelectorEndTime_OnChanged.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelDate/DateSelectorEndTime_819
Response OnChanged () id:Response_PanelDate_DateSelectorEndTime_OnChanged
#parent: PanelDate_21/DateSelectorEndTime
Response OnChanged () id:Response_PanelDate_21_DateSelectorEndTime_OnChanged
{
  #keys: '[415136.0.701820524]'
  #keys: '[415136.0.1066488445]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelDate_21_DateSelectorStartTime_OnChanged.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelDate_DateSelectorStartTime_OnChanged.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelDate/DateSelectorStartTime_806
Response OnChanged () id:Response_PanelDate_DateSelectorStartTime_OnChanged
#parent: PanelDate_21/DateSelectorStartTime
Response OnChanged () id:Response_PanelDate_21_DateSelectorStartTime_OnChanged
{
  #keys: '[415136.0.701820445]'
  #keys: '[415136.0.1066488446]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_957_ButtonHeader_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonHeader_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelExport/ButtonHeader_763
Response OnClick () id:Response_PanelExport_ButtonHeader_OnClick
#parent: PanelExport_957/ButtonHeader
Response OnClick () id:Response_PanelExport_957_ButtonHeader_OnClick
{
  #keys: '[415136.0.676930317]'
  #keys: '[415136.0.1066488538]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_957_ButtonInitialize_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonInitialize_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelExport/ButtonInitialize
Response OnClick () id:Response_PanelExport_ButtonInitialize_OnClick
#parent: PanelExport_957/ButtonInitialize
Response OnClick () id:Response_PanelExport_957_ButtonInitialize_OnClick
{
  #keys: '[415136.0.670072520]'
  #keys: '[415136.0.1066488537]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_957_ButtonSearch_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonSearch_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelExport/ButtonSearch
Response OnClick () id:Response_PanelExport_ButtonSearch_OnClick
#parent: PanelExport_957/ButtonSearch
Response OnClick () id:Response_PanelExport_957_ButtonSearch_OnClick
{
  #keys: '[415136.0.922435443]'
  #keys: '[415136.0.1066488536]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Component_pnlEventType.def
@@ -48,7 +48,6 @@
      ]
      Properties:
      [
        AllowEmpty: true
        Description: 'dhEvent.Data.EventType'
        DisplayField: 'Name'
        NumberOfColumns: 15
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelCheckAll.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
Component PanelCheckAll
{
  #keys: '[415136.0.1066371294]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ckbIsAllDay
    {
      #keys: '[415136.0.1066371441]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        CheckboxType: 'toggle'
        Label: 'All day'
        NumberOfColumns: 0
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    MinimumColumns: 5
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelCreate.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
Component PanelCreate
{
  #keys: '[415136.0.1066371797]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonCreate id:ButtonCreate_71
    {
      #keys: '[415136.0.1066371837]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: '新增'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    MinimumColumns: 3
    Taborder: 5
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDate.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelDate
{
  #keys: '[415136.0.1066371216]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelDateAll
  ]
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDateAll.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component PanelDateAll
{
  #keys: '[415136.0.1066371244]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelCheckAll
    #child: PanelDatePeriod
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDateEnd.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
Quintiq file version 2.0
Component PanelDateEnd
{
  #keys: '[415136.0.1066371591]'
  BaseType: 'WebPanel'
  Children:
  [
    Component dsEndDate id:dsEndDate_384
    {
      #keys: '[415136.0.1066371629]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        DateFormat: 'DMMY'
        Label: '结束日期'
        Taborder: 0
      ]
    }
    Component dhEndDate id:dhEndDate_791
    {
      #keys: '[415136.0.1066371658]'
      BaseType: 'WebDataHolder'
      Databinding: 'Date'
      Properties:
      [
        Taborder: 1
      ]
    }
    Component durEndTimeOfDay id:durEndTimeOfDay_812
    {
      #keys: '[415136.0.1066371684]'
      BaseType: 'WebDurationSelector'
      Properties:
      [
        CanBeNegative: false
        DurationFormat: 'h:m'
        Label: '结束日期'
        MaxDuration: P0DT23H59M0S
        MinDuration: P0DT0H0M0S
        ShowLabel: false
        Taborder: 2
      ]
    }
    Component dhEndTimeOfDay id:dhEndTimeOfDay_568
    {
      #keys: '[415136.0.1066371713]'
      BaseType: 'WebDataHolder'
      Databinding: 'Duration'
      Properties:
      [
        Taborder: 3
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDatePeriod.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelDatePeriod
{
  #keys: '[415136.0.1066371451]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelDateStart
    #child: PanelDateEnd
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDateStart.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
Quintiq file version 2.0
Component PanelDateStart
{
  #keys: '[415136.0.1066371470]'
  BaseType: 'WebPanel'
  Children:
  [
    Component dsStartDate id:dsStartDate_646
    {
      #keys: '[415136.0.1066371508]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        DateFormat: 'DMMY'
        Label: '开始日期'
        Taborder: 0
      ]
    }
    Component dhStartDate id:dhStartDate_438
    {
      #keys: '[415136.0.1066371532]'
      BaseType: 'WebDataHolder'
      Databinding: 'Date'
      Properties:
      [
        Taborder: 1
      ]
    }
    Component durStartTimeOfDay id:durStartTimeOfDay_298
    {
      #keys: '[415136.0.1066371558]'
      BaseType: 'WebDurationSelector'
      Properties:
      [
        CanBeNegative: false
        DurationFormat: 'h:m'
        Label: '开始日期'
        MaxDuration: P0DT23H59M0S
        MinDuration: P0DT0H0M0S
        ShowLabel: false
        Taborder: 2
      ]
    }
    Component dhStartTimeOfDay id:dhStartTimeOfDay_963
    {
      #keys: '[415136.0.1066371582]'
      BaseType: 'WebDataHolder'
      Databinding: 'Duration'
      Properties:
      [
        Taborder: 3
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelDescription.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
Quintiq file version 2.0
Component PanelDescription
{
  #keys: '[415136.0.1066371732]'
  BaseType: 'WebPanel'
  Children:
  [
    Component edtDescription id:edtDescription_925
    {
      #keys: '[415136.0.1066371769]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'dhEvent.Data.Description'
        Label: '备注'
        MaxRows: 3
        Multiline: true
        NumberOfColumns: 15
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    MinimumColumns: 10
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelEvent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
Quintiq file version 2.0
Component PanelEvent
{
  #keys: '[415136.0.1066371130]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddslType
    {
      #keys: '[415136.0.1066371167]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        InitialValue: 'Unavailable'
        NumberOfColumns: 15
        ShowLabel: false
        Sorting: 'none'
        Strings: 'Available;Unavailable'
        Taborder: 1
        Visible: false
      ]
    }
    Component edtName id:edtName_593
    {
      #keys: '[415136.0.1066371192]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'dhEvent.Data.Subject'
        Label: '事件'
        PlaceHolder: '<Enter a name>'
        Taborder: 0
      ]
    }
    Component ddlEventType
    {
      #keys: '[415136.0.1066371393]'
      BaseType: 'WebDropDownList'
      Databinding: 'LibCal_EventType'
      Children:
      [
        Component deEventType
        {
          #keys: '[415136.0.1066371394]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[LibCal_EventType]'
            Source: 'dhEventTypes'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        DisplayField: 'Name'
        Label: '事件类型'
        NumberOfColumns: 15
        Taborder: 2
      ]
    }
    Component dhEventTypes
    {
      #keys: '[415136.0.1066371418]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[LibCal_EventType]*'
      Properties:
      [
        Taborder: 3
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    MinimumColumns: 10
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader#144.def
@@ -5,140 +5,6 @@
  BaseType: 'WebPanel'
  Children:
  [
    Component edtName
    {
      #keys: '[415136.0.647401496]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'dhEvent.Data.Subject'
        Label: '事件'
        PlaceHolder: '<Enter a name>'
        Taborder: 0
      ]
    }
    Component durStartTimeOfDay
    {
      #keys: '[415136.0.647401500]'
      BaseType: 'WebDurationSelector'
      Properties:
      [
        CanBeNegative: false
        DurationFormat: 'h:m'
        Label: '开始日期'
        MaxDuration: P0DT23H59M0S
        MinDuration: P0DT0H0M0S
        ShowLabel: false
        Taborder: 9
      ]
    }
    Component dhStartTimeOfDay
    {
      #keys: '[415136.0.647401501]'
      BaseType: 'WebDataHolder'
      Databinding: 'Duration'
      Properties:
      [
        Taborder: 10
      ]
    }
    Component durEndTimeOfDay
    {
      #keys: '[415136.0.647401506]'
      BaseType: 'WebDurationSelector'
      Properties:
      [
        CanBeNegative: false
        DurationFormat: 'h:m'
        Label: '结束日期'
        MaxDuration: P0DT23H59M0S
        MinDuration: P0DT0H0M0S
        ShowLabel: false
        Taborder: 13
      ]
    }
    Component dhEndTimeOfDay
    {
      #keys: '[415136.0.647401507]'
      BaseType: 'WebDataHolder'
      Databinding: 'Duration'
      Properties:
      [
        Taborder: 14
      ]
    }
    Component edtDescription
    {
      #keys: '[415136.0.647401509]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'dhEvent.Data.Description'
        Label: 'Description'
        MaxRows: 1
        Multiline: true
        NumberOfColumns: 29
        ShowLabel: false
        Taborder: 16
      ]
    }
    Component dsStartDate
    {
      #keys: '[415136.0.647401510]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        DateFormat: 'DMMY'
        Label: '开始日期'
        Taborder: 7
      ]
    }
    Component dhStartDate
    {
      #keys: '[415136.0.647401511]'
      BaseType: 'WebDataHolder'
      Databinding: 'Date'
      Properties:
      [
        Taborder: 8
      ]
    }
    Component lblDescription id:lblDescription_456
    {
      #keys: '[415136.0.647492310]'
      BaseType: 'WebLabel'
      Properties:
      [
        Label: '备注'
        NumberOfColumns: 0
        Taborder: 15
      ]
    }
    Component ButtonCreate
    {
      #keys: '[415136.0.647262469]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: '新增'
        Taborder: 17
      ]
    }
    Component ddslType id:ddslType_360
    {
      #keys: '[415136.0.646711730]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        InitialValue: 'Unavailable'
        NumberOfColumns: 15
        ShowLabel: false
        Sorting: 'none'
        Strings: 'Available;Unavailable'
        Taborder: 1
        Visible: false
      ]
    }
    Component ckbApplyToNewResources id:ckbApplyToNewResources_667
    {
      #keys: '[415136.0.646712077]'
@@ -148,7 +14,7 @@
        DataBinding: 'dhEvent.Data.IsDefault'
        Label: 'Apply to new resources'
        NumberOfColumns: 0
        Taborder: 4
        Taborder: 0
        Tooltip: 'If checked, calendars of new resources will automatically subscribe to the event.'
        Visible: false
      ]
@@ -163,83 +29,15 @@
        NumberOfColumns: 0
        ShowLabel: false
        SizeRatio: 0
        Taborder: 5
        Taborder: 1
        Text: '<Timezone>'
        Visible: false
      ]
    }
    Component dhEventTypes id:dhEventTypes_836
    {
      #keys: '[415136.0.706740648]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[LibCal_EventType]*'
      Properties:
      [
        Taborder: 2
      ]
    }
    Component ddlEventType id:ddlEventType_568
    {
      #keys: '[415136.0.706740548]'
      BaseType: 'WebDropDownList'
      Databinding: 'LibCal_EventType'
      Children:
      [
        Component deEventType id:deEventType_393
        {
          #keys: '[415136.0.706740549]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[LibCal_EventType]'
            Source: 'dhEventTypes'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        AllowEmpty: true
        DisplayField: 'Name'
        Label: '事件类型'
        NumberOfColumns: 15
        Taborder: 3
      ]
    }
    Component dsEndDate
    {
      #keys: '[415136.0.923680588]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        DateFormat: 'DMMY'
        Label: '结束日期'
        Taborder: 11
      ]
    }
    Component dhEndDate
    {
      #keys: '[415136.0.923671132]'
      BaseType: 'WebDataHolder'
      Databinding: 'Date'
      Properties:
      [
        Taborder: 12
      ]
    }
    Component ckbIsAllDay id:ckbIsAllDay_812
    {
      #keys: '[415136.0.926885762]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        CheckboxType: 'toggle'
        Label: 'All day'
        NumberOfColumns: 0
        Taborder: 6
      ]
    }
    #child: PanelCreate
    #child: PanelDate
    #child: PanelEvent
    #child: PanelDescription
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_pnlSubscribers.def
@@ -53,7 +53,7 @@
  [
    Border: true
    FixedSize: true
    MinimumColumns: 49
    MinimumColumns: 40
    Taborder: 1
    Title: 'Subscribers'
  ]
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelCheckAll_ckbIsAllDay_OnChanged.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ckbIsAllDay_OnChanged.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelHeader_144/ckbIsAllDay_812
Response OnChanged () id:Response_MacroPlanner_pnlStartTime_ckbIsAllDay_OnChanged
#parent: PanelCheckAll/ckbIsAllDay
Response OnChanged () id:Response_PanelHeader_144_ckbIsAllDay_OnChanged
{
  #keys: '[415136.0.926885761]'
  #keys: '[415136.0.1066371440]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebCheckbox_OnChanged'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelCreate_ButtonCreate_OnClick#338.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ButtonCreate_OnClick.def ÐÞ¸Ä
@@ -1,11 +1,10 @@
Quintiq file version 2.0
#parent: PanelHeader_144/ButtonCreate
Response OnClick () id:Response_PanelHeader_144_ButtonCreate_OnClick
#parent: PanelCreate/ButtonCreate_71
Response OnClick () id:Response_PanelHeader_144_ButtonCreate_OnClick_338
{
  #keys: '[415136.0.654000146]'
  #keys: '[415136.0.1066371836]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  Precondition:
  [*
    return LibCal_Event::ValidDate( feedback, MacroPlan, dhStartDate.Data() + durStartTimeOfDay.Duration(), dhEndDate.Data() + durEndTimeOfDay.Duration() );
@@ -16,5 +15,6 @@
    [*
      Form.OnOK();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateEnd_dsEndDate_OnChanged#478.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsEndDate_OnChanged.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelHeader_144/dsEndDate
Response OnChanged () id:Response_PanelHeader_144_dsEndDate_OnChanged
#parent: PanelDateEnd/dsEndDate_384
Response OnChanged () id:Response_PanelHeader_144_dsEndDate_OnChanged_478
{
  #keys: '[415136.0.923680587]'
  #keys: '[415136.0.1066371628]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateEnd_durEndTimeOfDay_OnChanged#480.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durEndTimeOfDay_OnChanged.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelHeader_144/durEndTimeOfDay
Response OnChanged () id:Response_PanelHeader_144_durEndTimeOfDay_OnChanged
#parent: PanelDateEnd/durEndTimeOfDay_812
Response OnChanged () id:Response_PanelHeader_144_durEndTimeOfDay_OnChanged_480
{
  #keys: '[415136.0.647401489]'
  #keys: '[415136.0.1066371682]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateEnd_durEndTimeOfDay_OnInputIdle#529.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durEndTimeOfDay_OnInputIdle.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelHeader_144/durEndTimeOfDay
Response OnInputIdle () id:Response_PanelHeader_144_durEndTimeOfDay_OnInputIdle
#parent: PanelDateEnd/durEndTimeOfDay_812
Response OnInputIdle () id:Response_PanelHeader_144_durEndTimeOfDay_OnInputIdle_529
{
  #keys: '[415136.0.647401488]'
  #keys: '[415136.0.1066371683]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnInputIdle'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateStart_dsStartDate_OnChanged#384.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsStartDate_OnChanged.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelHeader_144/dsStartDate
Response OnChanged () id:Response_PanelHeader_144_dsStartDate_OnChanged
#parent: PanelDateStart/dsStartDate_646
Response OnChanged () id:Response_PanelHeader_144_dsStartDate_OnChanged_384
{
  #keys: '[415136.0.647401487]'
  #keys: '[415136.0.1066371507]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateStart_durStartTimeOfDay_OnChanged#57.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durStartTimeOfDay_OnChanged.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelHeader_144/durStartTimeOfDay
Response OnChanged () id:Response_PanelHeader_144_durStartTimeOfDay_OnChanged
#parent: PanelDateStart/durStartTimeOfDay_298
Response OnChanged () id:Response_PanelHeader_144_durStartTimeOfDay_OnChanged_57
{
  #keys: '[415136.0.647401492]'
  #keys: '[415136.0.1066371556]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelDateStart_durStartTimeOfDay_OnInputIdle#891.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_durStartTimeOfDay_OnInputIdle.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelHeader_144/durStartTimeOfDay
Response OnInputIdle () id:Response_PanelHeader_144_durStartTimeOfDay_OnInputIdle
#parent: PanelDateStart/durStartTimeOfDay_298
Response OnInputIdle () id:Response_PanelHeader_144_durStartTimeOfDay_OnInputIdle_891
{
  #keys: '[415136.0.647401491]'
  #keys: '[415136.0.1066371557]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnInputIdle'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelEvent_ddslType_OnSelectionChanged.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ddslType_OnSelectionChanged#613.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelHeader_144/ddslType_360
Response OnSelectionChanged () id:Response_pnlType_ddslType_OnSelectionChanged_613
#parent: PanelEvent/ddslType
Response OnSelectionChanged () id:Response_PanelHeader_144_ddslType_OnSelectionChanged
{
  #keys: '[415136.0.646711729]'
  #keys: '[415136.0.1066371166]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
  QuillAction