rislai
2024-07-09 6f8dc7c5b3a0d7801802d8795ba6a30c5f05b8f4
添加人力成本报表主数据维护功能
已添加74个文件
已修改1个文件
1860 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_EmployeeCost_EmployeeType_EmployeeType_EmployeeCost.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EmployeeCost_Unit_Unit_EmployeeCost.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EmployeeType_MacroPlan_MacroPlan_EmployeeType.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OvertimeMultiplier_MacroPlan_MacroPlan_OvertimeMultiplier.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/Attribute_BaseSalary.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/Attribute_EmployeeNumber.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/Attribute_TimeUnit.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/DefaultValue_TimeUnit.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/StaticMethod_Export.qbl 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/StaticMethod_Import.qbl 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeCost/_ROOT_Type_EmployeeCost.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeType/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EmployeeType/_ROOT_Type_EmployeeType.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/Attribute_RealValue.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/_ROOT_Type_LocalCell_Default.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Attribute_StandardWorkingDay.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OvertimeMultiplier/Attribute_Multiplier.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OvertimeMultiplier/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OvertimeMultiplier/_ROOT_Type_OvertimeMultiplier.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuFinances.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuFinances_MenuLaborCost_OnClick.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlContent.def 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlUnit.def 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_Edit.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_New.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnOk_OnClick.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlUnit_Button671_OnClick#570.def 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/_ROOT_Component_DialogEditEmployeeCost.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeCost#289.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeType.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListOvertimeMultiplier.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel189.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel700.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel972.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelAction.def 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions.def 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions526.def 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditEmployeeType.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditOvertimeMultiplier.def 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeCost#154.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeType.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelOvertimeMultiplier.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelStandardWorkingDay#687.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage216.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage392.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage989.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu134.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu191.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu383.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuCreate187_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuDelete300_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuEdit854_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_OnDoubleClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuCreate583_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuDelete195_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuEdit782_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuCreate_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuDelete_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuEdit_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonExport1_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonImport_OnClick.def 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonCalcel267_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonOK338_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonCalcel_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonOK_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_Button671_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_NumberPicker287_OnChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/_ROOT_Component_FormEmployeeCost.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_EmployeeCost_EmployeeType_EmployeeType_EmployeeCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EmployeeCost_EmployeeType_EmployeeType_EmployeeCost
{
  #keys: '1[412672.1.2854689]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide EmployeeType
  {
    #keys: '3[412672.1.2854691][412672.1.2854690][412672.1.2854692]'
    Cardinality: '0to1'
    ObjectDefinition: EmployeeCost
    OwningSide: 'Reference'
  }
  RelationSide.RightSide EmployeeCost
  {
    #keys: '3[412672.1.2854694][412672.1.2854693][412672.1.2854695]'
    Cardinality: '1toN'
    ObjectDefinition: EmployeeType
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_EmployeeCost_Unit_Unit_EmployeeCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EmployeeCost_Unit_Unit_EmployeeCost
{
  #keys: '1[412672.1.2854611]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Unit
  {
    #keys: '3[412672.1.2854613][412672.1.2854612][412672.1.2854614]'
    Cardinality: '0to1'
    ObjectDefinition: EmployeeCost
    OwningSide: 'Reference'
  }
  RelationSide.RightSide EmployeeCost
  {
    #keys: '3[412672.1.2854616][412672.1.2854615][412672.1.2854617]'
    Cardinality: '1toN'
    ObjectDefinition: Unit
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_EmployeeType_MacroPlan_MacroPlan_EmployeeType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation EmployeeType_MacroPlan_MacroPlan_EmployeeType
{
  #keys: '1[412672.1.2880055]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[412672.1.2880057][412672.1.2880056][412672.1.2880058]'
    Cardinality: '0to1'
    ObjectDefinition: EmployeeType
    OwningSide: 'Reference'
  }
  RelationSide.RightSide EmployeeType
  {
    #keys: '3[412672.1.2880060][412672.1.2880059][412672.1.2880061]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_OvertimeMultiplier_MacroPlan_MacroPlan_OvertimeMultiplier.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation OvertimeMultiplier_MacroPlan_MacroPlan_OvertimeMultiplier
{
  #keys: '1[412672.1.2880092]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[412672.1.2880094][412672.1.2880093][412672.1.2880095]'
    Cardinality: '0to1'
    ObjectDefinition: OvertimeMultiplier
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OvertimeMultiplier
  {
    #keys: '3[412672.1.2880097][412672.1.2880096][412672.1.2880098]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_EmployeeCost/Attribute_BaseSalary.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BaseSalary
{
  #keys: '3[412672.1.2854665][412672.1.2854664][412672.1.2854666]'
  Description: 'BaseSalary'
  ValueType: Real
}
_Main/BL/Type_EmployeeCost/Attribute_EmployeeNumber.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EmployeeNumber
{
  #keys: '3[412672.1.2854635][412672.1.2854634][412672.1.2854636]'
  ValueType: Number
}
_Main/BL/Type_EmployeeCost/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[412672.1.2854645][412672.1.2854644][412672.1.2854646]'
  ValueType: Date
}
_Main/BL/Type_EmployeeCost/Attribute_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TimeUnit
{
  #keys: '3[412672.1.2854655][412672.1.2854654][412672.1.2854656]'
  ValueType: String
}
_Main/BL/Type_EmployeeCost/DefaultValue_TimeUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: '月'
  TargetAttribute: TimeUnit
}
_Main/BL/Type_EmployeeCost/StaticMethod_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
  const constcontent Units owner
) as BinaryValue
{
  TextBody:
  [*
    // rislai Jul-3-2024 (created)
    xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?><table><name>人员成本</name>';
    columnXML1 := "<column><name>人员类别</name><type>String</type>";
    columnXML2 := "<column><name>人数</name><type>Number</type>";
    columnXML3 := "<column><name>产线</name><type>String</type>";
    columnXML4 := "<column><name>开始时间</name><type>String</type>";
    columnXML5 := "<column><name>时间单位</name><type>String</type>";
    columnXML6 := "<column><name>基本工资</name><type>Number</type>";
    costs := selectsortedset( owner,Elements.EmployeeCost,cost,cost.Unit().Name() );
    traverse( costs,Elements,cost ){
      columnXML1 := columnXML1 + '<cell value="' + cost.EmployeeType().Name() + '"/>'
      columnXML2 := columnXML2 + '<cell value="' + [String]cost.EmployeeNumber() + '"/>'
      columnXML3 := columnXML3 + '<cell value="' + cost.Unit().Name() + '"/>'
      columnXML4 := columnXML4 + '<cell value="' + cost.StartDate().Format( "Y-M2-D2" ) + '"/>'
      columnXML5 := columnXML5 + '<cell value="' + cost.TimeUnit() + '"/>'
      columnXML6 := columnXML6 + '<cell value="' + cost.BaseSalary().Format( "N(Dec())" ) + '"/>'
    }
    columnXML1 := columnXML1 + "</column>";
    columnXML2 := columnXML2 + "</column>";
    columnXML3 := columnXML3 + "</column>";
    columnXML4 := columnXML4 + "</column>";
    columnXML5 := columnXML5 + "</column>";
    columnXML6 := columnXML6 + "</column>";
    xmlTemplate := xmlTemplate + columnXML1 + columnXML2 + columnXML3 + columnXML4 + columnXML5 + columnXML6 + "</table>";
    tableGroupHandle := TableGroupHandle::Create( "tableGroupHandle" );
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ));
    tableGroupHandle.Add( tableHandle );
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    return binaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_EmployeeCost/StaticMethod_Import.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Import (
  MacroPlan owner,
  const GeneralExcelImportAndExportDataTable table
)
{
  TextBody:
  [*
    // rislai Jul-3-2024 (created)
    units := construct( Units );
    unitIndexTree := NamedValueTree::Create();
    employeeTypes := construct( EmployeeTypes );
    employeeTypeIndexTree := NamedValueTree::Create();
    costs := selectset( owner,Unit.EmployeeCost,cost,true );
    traverse( costs,Elements,element ){
      element.Delete();
    }
    cnv2 := StringToDate::StandardConverter();
    cnv2.SetCustomConversion();
    cnv2.CustomFormatString( 'yyyy-MM-dd' );//2024-07-03
    traverse( table,GeneralExcelImportAndExportDataRow,row ){
      employeeType := null( EmployeeType );
      employeeNumber := 0;
      unit := null( Unit );
      startDate := Date::MinDate();
      timeUnit := "";
      baseSalary := 0.0;
      traverse( row,GeneralExcelImportAndExportDataCell,cell ){
         if( cell.GeneralExcelImportAndExportDataColumn().Name() = "人员类别" ){
           employeeTypeHandle := employeeTypeIndexTree.GetHandle( cell.Value() );
           index := guard( employeeTypeIndexTree.Root().Child( employeeTypeHandle ),null( NamedValue ));
           if( not isnull( index )){
              employeeType := employeeTypes.Element( index.GetValueAsNumber() );
           }else{
              employeeType := select( owner,EmployeeType,type,type.Name() = cell.Value() );
              if( not isnull( employeeType )){
                employeeTypes.Add( employeeType );
                employeeTypeIndexTree.Root().AddChild( employeeTypeHandle,employeeTypes.Size() - 1 );
              }
           }
         }
         if( cell.GeneralExcelImportAndExportDataColumn().Name() = "人数" ){
           employeeNumber := [Number]cell.Value();
         }
         if( cell.GeneralExcelImportAndExportDataColumn().Name() = "产线" ){
           unitHandle := unitIndexTree.GetHandle( cell.Value() );
           index := guard( unitIndexTree.Root().Child( unitHandle ),null( NamedValue ));
           if( not isnull( index )){
              unit := units.Element( index.GetValueAsNumber() );
           }else{
              unit := select( owner,Unit,temp_unit,temp_unit.ID() = cell.Value() );
              if( not isnull( unit )){
                units.Add( unit );
                unitIndexTree.Root().AddChild( unitHandle,units.Size() - 1 );
              }
           }
         }
         if( cell.GeneralExcelImportAndExportDataColumn().Name() = "开始时间" ){
           startDate := cnv2.Convert( cell.Value() );
         }
         if( cell.GeneralExcelImportAndExportDataColumn().Name() = "时间单位" ){
           timeUnit := cell.Value();
         }
         if( cell.GeneralExcelImportAndExportDataColumn().Name() = "基本工资" ){
           baseSalary := [Real]cell.Value();
         }
      }
      if( not isnull( unit )){
        unit.EmployeeCost( relnew,EmployeeType := employeeType,EmployeeNumber := employeeNumber,StartDate := startDate,TimeUnit := timeUnit,BaseSalary := baseSalary );
      }
    }
  *]
}
_Main/BL/Type_EmployeeCost/_ROOT_Type_EmployeeCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EmployeeCost
{
  #keys: '5[412672.1.2854608][412672.1.2854606][0.0.0][412672.1.2854607][412672.1.2854609]'
  BaseType: Object
  Description: 'EmployeeCost'
  StructuredName: 'EmployeeCosts'
}
_Main/BL/Type_EmployeeType/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[412672.1.2854680][412672.1.2854679][412672.1.2854681]'
  ValueType: String
}
_Main/BL/Type_EmployeeType/_ROOT_Type_EmployeeType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type EmployeeType
{
  #keys: '5[412672.1.2854676][412672.1.2854674][0.0.0][412672.1.2854675][412672.1.2854677]'
  BaseType: Object
  StructuredName: 'EmployeeTypes'
}
_Main/BL/Type_LocalCell_Default/Attribute_RealValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute RealValue
{
  #keys: '3[412672.1.5620867][412672.1.5620866][412672.1.5620868]'
  ValueType: Real
}
_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetCell (
  String cellKey,
  NamedValueTree cellIndexTree,
  LocalCell_Defaults cells,
  LocalRow row,
  LocalColumn column
) as LocalCell_Default
{
  TextBody:
  [*
    // rislai Jul-8-2024 (created)
    cellHandle := cellIndexTree.GetHandle( cellKey );
    cellIndex := guard( cellIndexTree.Root().Child( cellHandle ),null( NamedValue ));
    cell := null( LocalCell_Default );
    if( isnull( cell )){
       cell := row.LocalCell( relnew,LocalCell_Default,LocalColumn := column );
       cells.Add( cell );
       cellIndexTree.Root().AddChild( cellHandle,cells.Size() - 1 );
    }else{
      cell := cells.Element( cellIndex.GetValueAsNumber() );
    }
    return cell;
  *]
}
_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
Quintiq file version 2.0
#parent: #root
StaticMethod NewStaticMethod (
  const constcontent ShiftPlans shiftPlans,
  RecycleBin owner
)
{
  TextBody:
  [*
    // rislai Jul-4-2024 (created)
    table := owner.LocalTable( relnew,Name := "");
    column1 := table.LocalColumn( relnew,Name := "工厂" );
    column2 := table.LocalColumn( relnew,Name := "产线" );
    column3 := table.LocalColumn( relnew,Name := "生产天数" );
    column4 := table.LocalColumn( relnew,Name := "加班时长" );
    column5 := table.LocalColumn( relnew,Name := "欠工时长" );
    column6 := table.LocalColumn( relnew,Name := "节假日加班时长" );
    column7 := table.LocalColumn( relnew,Name := "加班费" );
    column8 := table.LocalColumn( relnew,Name := "欠工费" );
    column9 := table.LocalColumn( relnew,Name := "节假日加班费" );
    unitIDs := selectuniquevalues( shiftPlans,Elements.UnitPeriodTime.Unit,unit,unit.ID() );
    rows := construct( LocalRows );
    rowIndexTree := NamedValueTree::Create();
    cells := construct( LocalCell_Defaults );
    cellIndexTree := NamedValueTree::Create();
    traverse( unitIDs,Elements,element ){
      row := table.LocalRow( relnew,Index := table.GetRowIndexCache() );
      rowHandle := rowIndexTree.GetHandle( element );
      rows.Add( row );
      rowIndexTree.Root().AddChild( rowHandle,rows.Size() - 1 );
    }
    traverse( shiftPlans,Elements,shiftPlan ){
      rowKey := shiftPlan.UnitPeriodTime().Unit().ID();
      row := rows.Element( rowIndexTree.Root().Child( rowIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
      gongchangCell := LocalCell_Default::GetCell(  rowKey + "工厂", cellIndexTree, cells, row, column1 );
      chanxianxCell := LocalCell_Default::GetCell(  rowKey + "产线", cellIndexTree, cells, row, column2 );
      shengchanCell := LocalCell_Default::GetCell(  rowKey + "生产天数", cellIndexTree, cells, row, column3 );
      jiabanCell := LocalCell_Default::GetCell(  rowKey + "加班时长", cellIndexTree, cells, row, column4 );
      qiangongCell := LocalCell_Default::GetCell(  rowKey + "欠工时长", cellIndexTree, cells, row, column5 );
      jiejiariCell := LocalCell_Default::GetCell(  rowKey + "节假日加班时长", cellIndexTree, cells, row, column6 );
      jiabanfeiCell := LocalCell_Default::GetCell(  rowKey + "加班费", cellIndexTree, cells, row, column7 );
      qiangongfeiCell := LocalCell_Default::GetCell(  rowKey + "欠工费", cellIndexTree, cells, row, column8 );
      jiejiarifeiCell := LocalCell_Default::GetCell(  rowKey + "节假日加班费", cellIndexTree, cells, row, column9 );
      if( shiftPlan.Outcome() <> "" ){
      }else{
      }
    }
  *]
}
_Main/BL/Type_LocalCell_Default/_ROOT_Type_LocalCell_Default.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
TypeSpecialization LocalCell_Default
{
  #keys: '2[412672.1.5620864][412672.1.5620859]'
  Parent: LocalCell
  StructuredName: 'LocalCell_Defaults'
}
_Main/BL/Type_MacroPlan/Attribute_StandardWorkingDay.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StandardWorkingDay
{
  #keys: '3[412672.1.2880078][412672.1.2880077][412672.1.2880079]'
  ValueType: Real
}
_Main/BL/Type_OvertimeMultiplier/Attribute_Multiplier.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Multiplier
{
  #keys: '3[412672.1.2880116][412672.1.2880115][412672.1.2880117]'
  ValueType: Real
}
_Main/BL/Type_OvertimeMultiplier/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[412672.1.2880106][412672.1.2880105][412672.1.2880107]'
  ValueType: String
}
_Main/BL/Type_OvertimeMultiplier/_ROOT_Type_OvertimeMultiplier.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type OvertimeMultiplier
{
  #keys: '5[412672.1.2880089][412672.1.2880087][0.0.0][412672.1.2880088][412672.1.2880090]'
  BaseType: Object
  Description: 'OvertimeMultiplier'
  StructuredName: 'OvertimeMultipliers'
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDataViews.def
@@ -10,5 +10,12 @@
        #child: ContextMenuCapacities
      ]
    }
    Component ButtonDataFinances #extension
    {
      Children:
      [
        #child: ContextMenuFinances
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuFinances.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
Component ContextMenuFinances #extension
{
  Children:
  [
    Component MenuLaborCost
    {
      #keys: '[412672.1.7721142]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'MONEY_BILL_FIRE'
        Taborder: 6
        Title: 'Labor cost'
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuFinances_MenuLaborCost_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ContextMenuFinances/MenuLaborCost
Response OnClick () id:Response_MacroPlanner_ContextMenuFinances_MenuLaborCost_OnClick
{
  #keys: '[412672.1.7721201]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  QuillAction
  {
    Body:
    [*
      // Open view
      ApplicationMacroPlanner.OpenView( 'Labor_Costs', ButtonDataFinances );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[412672.1.7045777]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnOk
    {
      #keys: '[412672.1.7045781]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 0
      ]
    }
    Component btnCancel
    {
      #keys: '[412672.1.7045783]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Cancel'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Border: true
    ExcludeFromActiveComponent: true
    FixedSize: true
    Orientation: 'horizontal'
    Padding: 'true'
    Style: 'footer'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,121 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[412672.1.7045775]'
  BaseType: 'WebPanel'
  Children:
  [
    Component dhEmployeeCost
    {
      #keys: '[412672.1.7045839]'
      BaseType: 'WebDataHolder'
      Databinding: 'shadow[EmployeeCost]*'
      Properties:
      [
        Taborder: 0
      ]
    }
    Component ddlEmployeeType
    {
      #keys: '[412672.1.6911529]'
      BaseType: 'WebDropDownList'
      Databinding: 'EmployeeType'
      Children:
      [
        Component deContent
        {
          #keys: '[412672.1.6911531]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'EmployeeType'
          ]
        }
      ]
      Properties:
      [
        DataBinding: 'dhEmployeeCost.Data.EmployeeType'
        DisplayField: 'Name'
        Label: '人员类型'
        Taborder: 1
      ]
    }
    Component npEmployeeNumber
    {
      #keys: '[412672.1.6911553]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'dhEmployeeCost.Data.EmployeeNumber'
        Label: '人数'
        Taborder: 2
      ]
    }
    Component dsStartDate
    {
      #keys: '[412672.1.6911583]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        DataBinding: 'dhEmployeeCost.Data.StartDate'
        Label: '开始时间'
        Taborder: 5
      ]
    }
    Component efStandardWorkingDay
    {
      #keys: '[412672.1.7276727]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'MacroPlan.StandardWorkingDay'
        Enabled: false
        Label: '标准工作天数'
        Taborder: 7
      ]
    }
    Component efTimeUnit
    {
      #keys: '[412672.1.7276817]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'dhEmployeeCost.Data.TimeUnit'
        Enabled: false
        Label: '标准时间单元'
        Taborder: 6
        Text: '月'
      ]
    }
    Component npBaseSalary
    {
      #keys: '[412672.1.7343332]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'dhEmployeeCost.Data.BaseSalary'
        Label: '基本工资'
        Taborder: 8
      ]
    }
    #child: pnlUnit
    Component lblUnit
    {
      #keys: '[412672.1.7796497]'
      BaseType: 'WebLabel'
      Properties:
      [
        DataBinding: 'ddlUnit.Data.ID'
        Taborder: 4
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Component_pnlUnit.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
Quintiq file version 2.0
Component pnlUnit
{
  #keys: '[412672.1.7514476]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddlUnit id:ddlUnit_608
    {
      #keys: '[412672.1.7514540]'
      BaseType: 'WebDropDownList'
      Databinding: 'Unit'
      Children:
      [
        Component deContent655 id:deContent655_364
        {
          #keys: '[412672.1.7514541]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Entity]'
            Source: 'ApplicationMacroPlanner.DataHolderEntities'
            Taborder: 0
            Transformation: 'Elements.astype(Unit)'
          ]
        }
      ]
      Properties:
      [
        DataBinding: 'dhEmployeeCost.Data.Unit'
        DisplayField: 'ID'
        Enabled: false
        Label: '产线'
        Taborder: 0
      ]
    }
    Component Button671 id:Button671_325
    {
      #keys: '[412672.1.7514568]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'LOCK'
        Taborder: 1
      ]
    }
    Component cbUnit
    {
      #keys: '[412672.1.7578755]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Taborder: 2
        Visible: false
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_Edit.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Method Edit (
  EmployeeCost data
) id:Method_DialogEditEmployeeCost_Edit
{
  #keys: '[412672.1.7420837]'
  Body:
  [*
    dhEmployeeCost.Data( shadow(data));
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Method_New.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
Method New () id:Method_DialogEditEmployeeCost_New
{
  #keys: '[412672.1.7277241]'
  Body:
  [*
    ddlEmployeeType.Enabled( false,"" );
    npEmployeeNumber.Enabled( false,"" );
    dsStartDate.Enabled( false,"" );
    npBaseSalary.Enabled( false,"" );
    ddlUnit.Enabled( true,"" );
    cbUnit.Checked( true );
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnCancel_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnCancel
Response OnClick () id:Response_pnlActions_btnCancel_OnClick
{
  #keys: '[412672.1.7045787]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[412672.1.7045786]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.ApplyChanges();
      dhEmployeeCost.Data().Commit();
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/Response_pnlUnit_Button671_OnClick#570.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: pnlUnit/Button671_325
Response OnClick () id:Response_PanelStandardWorkingDay_Button671_OnClick_570
{
  #keys: '[412672.1.7514567]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  Precondition:
  [*
    return cbUnit.Checked();
  *]
  QuillAction
  {
    Body:
    [*
      this.Image( "LOCK" );
      ddlEmployeeType.Enabled( true,"" );
      npEmployeeNumber.Enabled( true,"" );
      dsStartDate.Enabled( true,"" );
      npBaseSalary.Enabled( true,"" );
      ddlUnit.Enabled( false,"" );
      cbUnit.Checked( false );
      unit := ddlUnit.Data();
      dhEmployeeCost.Data( unit.EmployeeCost( relshadow ));
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditEmployeeCost/_ROOT_Component_DialogEditEmployeeCost.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogEditEmployeeCost
{
  #keys: '[412672.1.7045773]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
    Title: 'Edit'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeCost#289.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
Quintiq file version 2.0
Component ListEmployeeCost
{
  #keys: '[412672.1.3030900]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractor422
    {
      #keys: '[412672.1.3030901]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'structured[Entity]'
        Source: 'ApplicationMacroPlanner.DataHolderEntities'
        Taborder: 0
        Transformation: 'Elements.astype(Unit).EmployeeCost'
      ]
    }
    #child: listActionBarPage216
    Component DataSetLevel775
    {
      #keys: '[412672.1.3030906]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenu383
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EmployeeType.Name","title":"人员类别","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EmployeeType.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EmployeeNumber","title":"人数","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EmployeeNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit.Name","title":"产线","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Unit.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"开始时间","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TimeUnit","title":"时间单位","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"TimeUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BaseSalary","title":"基本工资","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BaseSalary"}}]'
        ContextMenu: 'listContextMenu383'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 1
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_ListEmployeeCost_WebMenu_OnClick
    {
      #keys: '[412672.1.5813308]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[33.0.20370560]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListEmployeeType.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
Quintiq file version 2.0
Component ListEmployeeType
{
  #keys: '[412672.1.3032264]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractor670
    {
      #keys: '[412672.1.3032265]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'external[MacroPlan]'
        Source: 'MacroPlan'
        Taborder: 0
        Transformation: 'EmployeeType'
      ]
    }
    #child: listActionBarPage989
    Component DataSetLevel963
    {
      #keys: '[412672.1.3032270]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenu191
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"人员类型","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}}]'
        ContextMenu: 'listContextMenu191'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 1
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_ListEmployeeType_WebMenu_OnClick
    {
      #keys: '[412672.1.6984546]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[33.0.12092751]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_ListOvertimeMultiplier.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
Quintiq file version 2.0
Component ListOvertimeMultiplier
{
  #keys: '[412672.1.3031897]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractor427
    {
      #keys: '[412672.1.3031898]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MacroPlan'
        Source: 'MacroPlan'
        Taborder: 0
        Transformation: 'OvertimeMultiplier'
      ]
    }
    #child: listActionBarPage392
    Component DataSetLevel613
    {
      #keys: '[412672.1.3031903]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenu134
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Multiplier","title":"倍率","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Multiplier"}}]'
        ContextMenu: 'listContextMenu134'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 1
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_ListOvertimeMultiplier_WebMenu_OnClick
    {
      #keys: '[412672.1.3001707]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[29.0.12954279]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel189.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component Panel189
{
  #keys: '[412672.1.3030708]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelEmployeeCost
    #child: Panel972
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel700.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component Panel700
{
  #keys: '[412672.1.3030760]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelEmployeeType
    #child: PanelOvertimeMultiplier
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_Panel972.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component Panel972
{
  #keys: '[412672.1.3030746]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: Panel700
    #child: PanelStandardWorkingDay
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelAction.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
Quintiq file version 2.0
Component PanelAction
{
  #keys: '[412672.1.5890812]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonImport
    {
      #keys: '[412672.1.5890863]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Taborder: 0
      ]
    }
    Component ButtonExport1
    {
      #keys: '[412672.1.5890876]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
Component PanelActions
{
  #keys: '[412672.1.3091200]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonOK id:ButtonOK_780
    {
      #keys: '[412672.1.3091238]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'CHECK2'
        Taborder: 0
      ]
    }
    Component ButtonCalcel
    {
      #keys: '[412672.1.3091262]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelActions526.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
Component PanelActions526
{
  #keys: '[412672.1.6984289]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonOK338
    {
      #keys: '[412672.1.6984290]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'CHECK2'
        Taborder: 0
      ]
    }
    Component ButtonCalcel267
    {
      #keys: '[412672.1.6984291]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditEmployeeType.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
Component PanelEditEmployeeType
{
  #keys: '[412672.1.6984140]'
  BaseType: 'WebPanel'
  Children:
  [
    Component EditFieldEditEmployeeType
    {
      #keys: '[412672.1.6984180]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'dhEditEmployeeType.Data.Name'
        Label: '人员类型'
        Taborder: 0
      ]
    }
    #child: PanelActions526
    Component dhEditEmployeeType
    {
      #keys: '[412672.1.6984295]'
      BaseType: 'WebDataHolder'
      Databinding: 'shadow[EmployeeType]*'
      Properties:
      [
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Taborder: 0
    Visible: false
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEditOvertimeMultiplier.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
Quintiq file version 2.0
Component PanelEditOvertimeMultiplier
{
  #keys: '[412672.1.3001087]'
  BaseType: 'WebPanel'
  Children:
  [
    Component EditFieldEditOvertimeMultiplier
    {
      #keys: '[412672.1.3001163]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'dhEditOvertimeMultiplier.Data.Name'
        Label: '名称'
        Taborder: 0
      ]
    }
    Component NumberPickerEditOvertimeMultiplier
    {
      #keys: '[412672.1.3001177]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'dhEditOvertimeMultiplier.Data.Multiplier'
        Label: '倍率'
        Taborder: 1
      ]
    }
    Component dhEditOvertimeMultiplier
    {
      #keys: '[412672.1.3001190]'
      BaseType: 'WebDataHolder'
      Databinding: 'shadow[OvertimeMultiplier]*'
      Properties:
      [
        Taborder: 2
      ]
    }
    #child: PanelActions
  ]
  Properties:
  [
    FixedSize: true
    Taborder: 0
    Visible: false
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeCost#154.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component PanelEmployeeCost
{
  #keys: '[412672.1.3030727]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListEmployeeCost
    #child: PanelAction
  ]
  Properties:
  [
    Taborder: 0
    Title: '人员成本'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelEmployeeType.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component PanelEmployeeType
{
  #keys: '[412672.1.3030869]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListEmployeeType
    #child: PanelEditEmployeeType
  ]
  Properties:
  [
    Taborder: 1
    Title: '人员类型'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelOvertimeMultiplier.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component PanelOvertimeMultiplier
{
  #keys: '[412672.1.3030850]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListOvertimeMultiplier
    #child: PanelEditOvertimeMultiplier
  ]
  Properties:
  [
    Taborder: 0
    Title: '加班倍率'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_PanelStandardWorkingDay#687.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
Component PanelStandardWorkingDay
{
  #keys: '[412672.1.3030780]'
  BaseType: 'WebPanel'
  Children:
  [
    Component NumberPicker287
    {
      #keys: '[412672.1.3032925]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'MacroPlan.StandardWorkingDay'
        Enabled: false
        Label: '标准工作天数'
        Taborder: 0
      ]
    }
    Component Button671
    {
      #keys: '[412672.1.3032980]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'LOCK'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 1
    Title: '标准工作天数'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage216.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPage216
{
  #keys: '[412672.1.3030903]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage392.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPage392
{
  #keys: '[412672.1.3031900]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listActionBarPage989.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPage989
{
  #keys: '[412672.1.3032267]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu134.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
Quintiq file version 2.0
Component listContextMenu134
{
  #keys: '[412672.1.3031905]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component MenuCreate
    {
      #keys: '[412672.1.3001739]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'ADD2'
        Taborder: 3
        Title: 'Create...'
      ]
    }
    Component MenuEdit
    {
      #keys: '[412672.1.3001760]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'PENCIL'
        Taborder: 4
        Title: 'Edit...'
      ]
    }
    Component MenuDelete
    {
      #keys: '[412672.1.3001781]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 5
        Title: 'Delete...'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu191.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
Quintiq file version 2.0
Component listContextMenu191
{
  #keys: '[412672.1.3032272]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component MenuCreate583
    {
      #keys: '[412672.1.6984223]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'ADD2'
        Taborder: 3
        Title: 'Create...'
      ]
    }
    Component MenuEdit782
    {
      #keys: '[412672.1.6984249]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'PENCIL'
        Taborder: 4
        Title: 'Edit...'
      ]
    }
    Component MenuDelete195
    {
      #keys: '[412672.1.6984266]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 5
        Title: 'Delete...'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Component_listContextMenu383.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
Quintiq file version 2.0
Component listContextMenu383
{
  #keys: '[412672.1.3030908]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component MenuDelete300
    {
      #keys: '[412672.1.5813289]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 5
        Title: 'Delete...'
      ]
    }
    Component MenuCreate187
    {
      #keys: '[412672.1.7546519]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'ADD2'
        Taborder: 3
        Title: 'Create...'
      ]
    }
    Component MenuEdit854
    {
      #keys: '[412672.1.7546633]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'PENCIL'
        Taborder: 4
        Title: 'Edit...'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuCreate187_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: ListEmployeeCost
Response OnClick () id:Response_ListEmployeeCost_MenuCreate187_OnClick
{
  #keys: '[412672.1.7546539]'
  CanBindMultiple: false
  DefinitionID => /ListEmployeeCost/Responsedef_ListEmployeeCost_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuCreate187'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogEditEmployeeCost );
      dlg.New();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuDelete300_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: ListEmployeeCost
Response OnClick (
  structured[EmployeeCost] selection
) id:Response_ListEmployeeCost_MenuDelete300_OnClick
{
  #keys: '[412672.1.5802665]'
  CanBindMultiple: false
  DefinitionID => /ListEmployeeCost/Responsedef_ListEmployeeCost_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuDelete300'
  QuillAction
  {
    Body:
    [*
      traverse( selection,Elements,element ){
        element.Delete();
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_MenuEdit854_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: ListEmployeeCost
Response OnClick (
  EmployeeCost selection
) id:Response_ListEmployeeCost_MenuEdit854_OnClick
{
  #keys: '[412672.1.7546659]'
  CanBindMultiple: false
  DefinitionID => /ListEmployeeCost/Responsedef_ListEmployeeCost_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuEdit854'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogEditEmployeeCost );
      dlg.Edit( selection );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeCost_OnDoubleClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: ListEmployeeCost
Response OnDoubleClick (
  EmployeeCost selection
) id:Response_ListEmployeeCost_OnDoubleClick
{
  #keys: '[412672.1.7422359]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnDoubleClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogEditEmployeeCost );
      dlg.Edit( selection );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuCreate583_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: ListEmployeeType
Response OnClick () id:Response_ListEmployeeType_MenuCreate583_OnClick
{
  #keys: '[412672.1.6984709]'
  CanBindMultiple: false
  DefinitionID => /ListEmployeeType/Responsedef_ListEmployeeType_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuCreate583'
  QuillAction
  {
    Body:
    [*
      PanelEditEmployeeType.Visible( true );
      dhEditEmployeeType.Data( MacroPlan.EmployeeType( relshadow ));
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuDelete195_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: ListEmployeeType
Response OnClick (
  structured[EmployeeType] selection
) id:Response_ListEmployeeType_MenuDelete195_OnClick
{
  #keys: '[412672.1.6984976]'
  CanBindMultiple: false
  DefinitionID => /ListEmployeeType/Responsedef_ListEmployeeType_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuDelete195'
  QuillAction
  {
    Body:
    [*
      traverse( selection,Elements,element ){
        element.Delete();
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListEmployeeType_MenuEdit782_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: ListEmployeeType
Response OnClick (
  EmployeeType selection
) id:Response_ListEmployeeType_MenuEdit782_OnClick
{
  #keys: '[412672.1.6984805]'
  CanBindMultiple: false
  DefinitionID => /ListEmployeeType/Responsedef_ListEmployeeType_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuEdit782'
  QuillAction
  {
    Body:
    [*
      PanelEditEmployeeType.Visible( true );
      dhEditEmployeeType.Data( shadow(selection) );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuCreate_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: ListOvertimeMultiplier
Response OnClick () id:Response_ListOvertimeMultiplier_MenuCreate_OnClick
{
  #keys: '[412672.1.3002215]'
  CanBindMultiple: false
  DefinitionID => /ListOvertimeMultiplier/Responsedef_ListOvertimeMultiplier_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuCreate'
  QuillAction
  {
    Body:
    [*
      PanelEditOvertimeMultiplier.Visible( true );
      dhEditOvertimeMultiplier.Data( MacroPlan.OvertimeMultiplier( relshadow ) );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuDelete_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: ListOvertimeMultiplier
Response OnClick (
  structured[OvertimeMultiplier] selection
) id:Response_ListOvertimeMultiplier_MenuDelete_OnClick
{
  #keys: '[412672.1.3001913]'
  CanBindMultiple: false
  DefinitionID => /ListOvertimeMultiplier/Responsedef_ListOvertimeMultiplier_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuDelete'
  QuillAction
  {
    Body:
    [*
      traverse( selection,Elements,element ){
        element.Delete();
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_ListOvertimeMultiplier_MenuEdit_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: ListOvertimeMultiplier
Response OnClick (
  OvertimeMultiplier selection
) id:Response_ListOvertimeMultiplier_MenuEdit_OnClick
{
  #keys: '[412672.1.3002036]'
  CanBindMultiple: false
  DefinitionID => /ListOvertimeMultiplier/Responsedef_ListOvertimeMultiplier_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuEdit'
  QuillAction
  {
    Body:
    [*
      PanelEditOvertimeMultiplier.Visible( true );
      dhEditOvertimeMultiplier.Data( shadow( selection ) );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonExport1_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: PanelAction/ButtonExport1
Response OnClick () id:Response_PanelAction_ButtonExport1_OnClick
{
  #keys: '[412672.1.5850508]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      units := selectset( DataHolderEntities.Data(),Elements.astype( Unit ),unit,true );
      binaryValue := EmployeeCost::Export( units );
      Application.Download( "人员成本_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelAction_ButtonImport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
Quintiq file version 2.0
#parent: PanelAction/ButtonImport
Response OnClick () id:Response_PanelAction_ButtonImport_OnClick
{
  #keys: '[412672.1.7045119]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          Archive::VerifyTheFileName( uploadJson );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource.ReadStructure();
          selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
          EmployeeCost::Import( MacroPlan, selection );
          // åŽç»­åˆ é™¤
          generalExcelImportAndExportDataSource.Delete();
          WebMessageBox::Success( Translations::A_VWED_Success() );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonCalcel267_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelActions526/ButtonCalcel267
Response OnClick () id:Response_PanelActions526_ButtonCalcel267_OnClick
{
  #keys: '[412672.1.6984287]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      PanelEditEmployeeType.Visible( false );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions526_ButtonOK338_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelActions526/ButtonOK338
Response OnClick () id:Response_PanelActions526_ButtonOK338_OnClick
{
  #keys: '[412672.1.6984288]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      if( not isnull( dhEditEmployeeType.Data())){
        Form.ApplyChanges();
        dhEditEmployeeType.Data().Commit();
      }
      PanelEditEmployeeType.Visible( false );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonCalcel_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelActions/ButtonCalcel
Response OnClick () id:Response_PanelActions_ButtonCalcel_OnClick
{
  #keys: '[412672.1.3091500]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      PanelEditOvertimeMultiplier.Visible( false );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelActions_ButtonOK_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelActions/ButtonOK_780
Response OnClick () id:Response_PanelActions_ButtonOK_OnClick
{
  #keys: '[412672.1.3091237]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      if( not isnull( dhEditOvertimeMultiplier.Data())){
        Form.ApplyChanges();
        dhEditOvertimeMultiplier.Data().Commit();
      }
      PanelEditOvertimeMultiplier.Visible( false );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_Button671_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: PanelStandardWorkingDay/Button671
Response OnClick () id:Response_PanelStandardWorkingDay_Button671_OnClick
{
  #keys: '[412672.1.3033025]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      NumberPicker287.Enabled( not NumberPicker287.Enabled(),"" );
      if( not NumberPicker287.Enabled() ){
        this.Image( "LOCK" );
      }else{
        this.Image( "LOCK_OPEN" );
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/Response_PanelStandardWorkingDay_NumberPicker287_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelStandardWorkingDay/NumberPicker287
Response OnChanged () id:Response_PanelStandardWorkingDay_NumberPicker287_OnChanged
{
  #keys: '[412672.1.6920929]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebNumberPicker_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      MacroPlan.StandardWorkingDay( this.Number() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormEmployeeCost/_ROOT_Component_FormEmployeeCost.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormEmployeeCost
{
  #keys: '[412672.1.5334387]'
  BaseType: 'WebForm'
  Children:
  [
    #child: Panel189
  ]
  Properties:
  [
    Description: 'EmployeeCosts'
    Image: 'MONEY_BILL_FIRE'
    Title: 'Labor Costs'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
{
  viewcontents
  {
    page: ''
    group: ''
    index: 0
    image: 'MONEY_BILL_FIRE'
    description: ''
  }
  formatversion: 2
  id: 'Labor_Costs'
  name: 'Labor_Costs'
  isglobal: false
  isroot: true
}