xiaoding721
2024-09-30 46f580350af9ee2bbccfa88fea8532b129564ce0
修复一些bug
已重命名5个文件
已修改20个文件
已添加10个文件
已删除5个文件
745 ■■■■■ 文件已修改
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_AsyncExport.qbl 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_Compared.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_GetColumnXML.qbl 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_GetTableName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_AsyncExport.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetColumnXML.qbl 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetTableName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelDemandComparison.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon504#801.def 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhTable_OnDataChanged.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_bComparison_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_bExport_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_dhMacroPlans_OnCreated#57.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_dhOfflinePlanTables_OnCreated#57.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_dhXMLDataListener_OnDataChanged#648.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/_ROOT_Component_FormOfflinePlanChanges#701.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_MatrixEditor#988.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison#634.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhTable_OnDataChanged.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bComparison_OnClick#613.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bExport_OnClick#891.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_dhXMLDataListener_OnDataChanged.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon206#478.def 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon322#88.def 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon504.def 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon206_478_bExportTemplate_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon206_478_bImportOutput_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_ButtonRibbon820_OnClick#71.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_ButtonRibbon_OnClick#88.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_bExportTemplate_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_npYear_OnCreated.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction#633.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bDownload_OnClick.def 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_dhXMLDataListener_OnDataChanged.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
@@ -10,14 +10,18 @@
  [*
    // rislai Jun-21-2024 (created)
    manager := select( owner,ExportXMLManager,manager,manager.Name() = tableName );
    if( isnull( manager )){
      manager := owner.ExportXMLManager( relnew,Name := tableName,SheetName := tableName );
    }else{
      manager.ExportXMLData( relflush );
    if( not isnull( manager )){
      manager.Delete();
    }
    manager := owner.ExportXMLManager( relnew,Name := tableName,SheetName := tableName );
    traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
       data := manager.ExportXMLData( relnew, XML := element);
       data.Priority( data.CalculatePriority( ));
       try{
         data.Priority( data.CalculatePriority( ));
       }onerror{
         info( element );
       }
    }
  *]
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_AsyncExport.qbl
@@ -12,21 +12,21 @@
    // rislai Jun-20-2024 (created)
    sortColumns := selectsortedset( columns,Elements,column,true,column.Index());
    
    attributeNames := LocalCell_DemandComparison::GetAttributeNames();
    attributeNames := LocalCell_OfflinePlanComparison::GetAttributeNames();
    
    columnstring := emit( "" );
    flag := true;
    traverse( sortColumns,Elements,sortColumn ){
      if( flag ){
        attributeXML := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames,"attribute",macroPlan );
        attributeXML := rows -> LocalCell_OfflinePlanComparison::GetColumnXML( sortColumn,attributeNames,"attribute",macroPlan );
        columnstring := columnstring.Merge( attributeXML )
        flag := false;
      }
      
      cellxml := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames ,"data",macroPlan );
      cellxml := rows -> LocalCell_OfflinePlanComparison::GetColumnXML( sortColumn,attributeNames ,"data",macroPlan );
      columnstring := columnstring.Merge( cellxml);
    }
     
    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,guard( rows.Element(0).LocalTable().Name(),"Sheet1") );
    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,LocalCell_OfflinePlanComparison::GetTableName() );
  *]
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_Compared.qbl
@@ -9,7 +9,7 @@
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    table := recycleBin.LocalTable( relnew,Name := "下线计划报表对比");
    table := recycleBin.LocalTable( relnew,Name := LocalCell_OfflinePlanComparison::GetTableName());
    
    localColumns := construct( LocalColumns );
    localColumnIndexTree := NamedValueTree::Create();
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_GetColumnXML.qbl
@@ -13,14 +13,14 @@
    // rislai Jun-21-2024 (created)
    // rislai Jun-20-2024 (created)
    columnXML := "";
    cells := selectsortedset( column, LocalCell.astype( LocalCell_DemandComparison ), cell,
    cells := selectsortedset( column, LocalCell.astype( LocalCell_OfflinePlanComparison ), cell,
                                  exists( rows,Elements,element,element = cell.LocalRow()), cell.LocalRow().Index());
    if( type = "data" ){
      columnXML := "";
      if( column.IsAttrbuteColumn() ){
        columnXML := "<column><name>" + column.Name() + "</name><type>String</type>"; 
      }else{
        columnXML := "<column><name>" + column.Name() + "</name><type>Number</type>";
        columnXML := "<column><name>" + column.Date().Format( "Y/M2/D2") + "</name><type>Number</type>";
      }
      traverse ( cells, Elements, cell ) {
        traverse( attributeNames ,Elements,e ){
@@ -31,12 +31,12 @@
      columnXML := columnXML + "</column>";
    }
    if( type = "attribute" ){
      columnXML0_1 := "<column><name>Sales Segment</name><type>String</type>";
      columnXML0_2 := "<column><name>Generation</name><type>String</type>";
      columnXML0_3 := "<column><name>MQB/MLB</name><type>String</type>";
      columnXML0_4 := "<column><name>功率</name><type>String</type>";
    //  columnXML0_1 := "<column><name>Sales Segment</name><type>String</type>";
    //  columnXML0_2 := "<column><name>Generation</name><type>String</type>";
    //  columnXML0_3 := "<column><name>MQB/MLB</name><type>String</type>";
    //  columnXML0_4 := "<column><name>功率</name><type>String</type>";
      
      columnXML1 := "<column><name>Product ID</name><type>String</type>";
      columnXML1 := "<column><name>Line</name><type>String</type>";
      columnXML2 := "<column><name>Attribute</name><type>String</type>";
      
      traverse ( cells, Elements, cell ) {
@@ -46,50 +46,16 @@
            cellXML := '<cell value="' + cell.LocalRow().Name() + '"/>'
            columnXML1 := columnXML1 + cellXML;
            
            salesSegment := select( cell.LocalRow().LocalTable(),LocalColumn.LocalCell.astype( LocalCell_DemandComparison ),temp_cell,temp_cell.LocalRow() = cell.LocalRow() and temp_cell.LocalColumn().Name() = "产地");
            if( not isnull( salesSegment )){
              cellXML0_1 := '<cell value="' + ifexpr( salesSegment.BaseVersionValue() <> "空",salesSegment.BaseVersionValue(),salesSegment.CompareVersionValue()) + '"/>';
              columnXML0_1 := columnXML0_1 + cellXML0_1;
            }else{
              cellXML0_1 := '<cell value="  "/>'
              columnXML0_1 := columnXML0_1 + cellXML0_1;
            }
            product := select( macroPlan,Product_MP,product,product.ID() = cell.LocalRow().Name() );
            if( not isnull( product )){
              cellXML0_2 := '<cell value="' + product.Generation() + '"/>';
              cellXML0_3 := '<cell value="' + product.MQBMLB() + '"/>';
              cellXML0_4 := '<cell value="' + product.Power() + '"/>';
              columnXML0_2 := columnXML0_2 + cellXML0_2;
              columnXML0_3 := columnXML0_3 + cellXML0_3;
              columnXML0_4 := columnXML0_4 + cellXML0_4;
            }else{
              cellXML0_2 := '<cell value="  "/>';
              cellXML0_3 := '<cell value="  "/>';
              cellXML0_4 := '<cell value="  "/>';
              columnXML0_2 := columnXML0_2 + cellXML0_2;
              columnXML0_3 := columnXML0_3 + cellXML0_3;
              columnXML0_4 := columnXML0_4 + cellXML0_4;
            }
            flag := false;
          }else{
            cellXML := '<cell value="  "/>'
            columnXML1 := columnXML1 + cellXML;
            cellXML0_1 := '<cell value="  "/>'
            cellXML0_2 := '<cell value="  "/>';
            cellXML0_3 := '<cell value="  "/>';
            cellXML0_4 := '<cell value="  "/>';
            columnXML0_1 := columnXML0_1 + cellXML0_1;
            columnXML0_2 := columnXML0_2 + cellXML0_2;
            columnXML0_3 := columnXML0_3 + cellXML0_3;
            columnXML0_4 := columnXML0_4 + cellXML0_4;
          }
          cellXML := '<cell value="' + e + '"/>'
          columnXML2 := columnXML2 + cellXML;
        }
      }
      columnXML := columnXML0_1 + "</column>" + columnXML0_2 + "</column>" + columnXML0_3 + "</column>" + columnXML0_4 + "</column>" + columnXML1 + "</column>" + columnXML2 + "</column>";
      columnXML := columnXML1 + "</column>" + columnXML2 + "</column>";
    }
     
    return columnXML;
_Main/BL/Type_LocalCell_OfflinePlanComparison/StaticMethod_GetTableName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetTableName () const declarative remote as String
{
  TextBody:
  [*
    // Akari Sep-30-2024 (created)
    return "下线计划报表对比";
  *]
}
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_AsyncExport.qbl
@@ -12,21 +12,21 @@
    // rislai Jun-20-2024 (created)
    sortColumns := selectsortedset( columns,Elements,column,true,column.Index());
    
    attributeNames := LocalCell_DemandComparison::GetAttributeNames();
    attributeNames := LocalCell_ProductionComparison::GetAttributeNames();
    
    columnstring := emit( "" );
    flag := true;
    traverse( sortColumns,Elements,sortColumn ){
      if( flag ){
        attributeXML := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames,"attribute",macroPlan );
        attributeXML := rows -> LocalCell_ProductionComparison::GetColumnXML( sortColumn,attributeNames,"attribute",macroPlan );
        columnstring := columnstring.Merge( attributeXML )
        flag := false;
      }
      
      cellxml := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames ,"data",macroPlan );
      cellxml := rows -> LocalCell_ProductionComparison::GetColumnXML( sortColumn,attributeNames ,"data",macroPlan );
      columnstring := columnstring.Merge( cellxml);
    }
    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,guard( rows.Element(0).LocalTable().Name(),"Sheet1") );
    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,LocalCell_ProductionComparison::GetTableName() );
  *]
}
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetColumnXML.qbl
@@ -10,17 +10,16 @@
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    // rislai Jun-20-2024 (created)
     // rislai Jun-21-2024 (created)
    columnXML := "";
    cells := selectsortedset( column, LocalCell.astype( LocalCell_DemandComparison ), cell,
    cells := selectsortedset( column, LocalCell.astype( LocalCell_ProductionComparison ), cell,
                                  exists( rows,Elements,element,element = cell.LocalRow()), cell.LocalRow().Index());
    if( type = "data" ){
      columnXML := "";
      if( column.IsAttrbuteColumn() ){
        columnXML := "<column><name>" + column.Name() + "</name><type>String</type>"; 
      }else{
        columnXML := "<column><name>" + column.Name() + "</name><type>Number</type>";
        columnXML := "<column><name>" + column.Date().Format( "Y/M2/D2") + "</name><type>Number</type>";
      }
      traverse ( cells, Elements, cell ) {
        traverse( attributeNames ,Elements,e ){
@@ -31,12 +30,12 @@
      columnXML := columnXML + "</column>";
    }
    if( type = "attribute" ){
      columnXML0_1 := "<column><name>Sales Segment</name><type>String</type>";
      columnXML0_2 := "<column><name>Generation</name><type>String</type>";
      columnXML0_3 := "<column><name>MQB/MLB</name><type>String</type>";
      columnXML0_4 := "<column><name>功率</name><type>String</type>";
    //  columnXML0_2 := "<column><name>Generation</name><type>String</type>";
    //  columnXML0_3 := "<column><name>MQB/MLB</name><type>String</type>";
    //  columnXML0_4 := "<column><name>功率</name><type>String</type>";
      
      columnXML1 := "<column><name>Product ID</name><type>String</type>";
      columnXML1 := "<column><name>Line</name><type>String</type>";
      columnXML2 := "<column><name>Attribute</name><type>String</type>";
      
      traverse ( cells, Elements, cell ) {
@@ -45,51 +44,41 @@
          if( flag ){
            cellXML := '<cell value="' + cell.LocalRow().Name() + '"/>'
            columnXML1 := columnXML1 + cellXML;
            salesSegment := select( cell.LocalRow().LocalTable(),LocalColumn.LocalCell.astype( LocalCell_DemandComparison ),temp_cell,temp_cell.LocalRow() = cell.LocalRow() and temp_cell.LocalColumn().Name() = "产地");
            if( not isnull( salesSegment )){
              cellXML0_1 := '<cell value="' + ifexpr( salesSegment.BaseVersionValue() <> "空",salesSegment.BaseVersionValue(),salesSegment.CompareVersionValue()) + '"/>';
              columnXML0_1 := columnXML0_1 + cellXML0_1;
            }else{
              cellXML0_1 := '<cell value="  "/>'
              columnXML0_1 := columnXML0_1 + cellXML0_1;
            }
            product := select( macroPlan,Product_MP,product,product.ID() = cell.LocalRow().Name() );
            if( not isnull( product )){
              cellXML0_2 := '<cell value="' + product.Generation() + '"/>';
              cellXML0_3 := '<cell value="' + product.MQBMLB() + '"/>';
              cellXML0_4 := '<cell value="' + product.Power() + '"/>';
              columnXML0_2 := columnXML0_2 + cellXML0_2;
              columnXML0_3 := columnXML0_3 + cellXML0_3;
              columnXML0_4 := columnXML0_4 + cellXML0_4;
            }else{
              cellXML0_2 := '<cell value="  "/>';
              cellXML0_3 := '<cell value="  "/>';
              cellXML0_4 := '<cell value="  "/>';
              columnXML0_2 := columnXML0_2 + cellXML0_2;
              columnXML0_3 := columnXML0_3 + cellXML0_3;
              columnXML0_4 := columnXML0_4 + cellXML0_4;
            }
    //        product := select( macroPlan,Product_MP,product,product.ID() = cell.LocalRow().Name() );
    //        if( not isnull( product )){
    //          cellXML0_2 := '<cell value="' + product.Generation() + '"/>';
    //          cellXML0_3 := '<cell value="' + product.MQBMLB() + '"/>';
    //          cellXML0_4 := '<cell value="' + product.Power() + '"/>';
    //          columnXML0_2 := columnXML0_2 + cellXML0_2;
    //          columnXML0_3 := columnXML0_3 + cellXML0_3;
    //          columnXML0_4 := columnXML0_4 + cellXML0_4;
    //        }else{
    //          cellXML0_2 := '<cell value="  "/>';
    //          cellXML0_3 := '<cell value="  "/>';
    //          cellXML0_4 := '<cell value="  "/>';
    //          columnXML0_2 := columnXML0_2 + cellXML0_2;
    //          columnXML0_3 := columnXML0_3 + cellXML0_3;
    //          columnXML0_4 := columnXML0_4 + cellXML0_4;
    //        }
            
            flag := false;
          }else{
            cellXML := '<cell value="  "/>'
            columnXML1 := columnXML1 + cellXML;
            cellXML0_1 := '<cell value="  "/>'
            cellXML0_2 := '<cell value="  "/>';
            cellXML0_3 := '<cell value="  "/>';
            cellXML0_4 := '<cell value="  "/>';
            columnXML0_1 := columnXML0_1 + cellXML0_1;
            columnXML0_2 := columnXML0_2 + cellXML0_2;
            columnXML0_3 := columnXML0_3 + cellXML0_3;
            columnXML0_4 := columnXML0_4 + cellXML0_4;
    //        cellXML0_2 := '<cell value="  "/>';
    //        cellXML0_3 := '<cell value="  "/>';
    //        cellXML0_4 := '<cell value="  "/>';
    //        columnXML0_2 := columnXML0_2 + cellXML0_2;
    //        columnXML0_3 := columnXML0_3 + cellXML0_3;
    //        columnXML0_4 := columnXML0_4 + cellXML0_4;
          }
          cellXML := '<cell value="' + e + '"/>'
          columnXML2 := columnXML2 + cellXML;
        }
      }
      columnXML := columnXML0_1 + "</column>" + columnXML0_2 + "</column>" + columnXML0_3 + "</column>" + columnXML0_4 + "</column>" + columnXML1 + "</column>" + columnXML2 + "</column>";
      // columnXML0_2 + "</column>" + columnXML0_3 + "</column>" + columnXML0_4 + "</column>" +
      columnXML :=  columnXML1 + "</column>" + columnXML2 + "</column>";
    }
     
    return columnXML;
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetTableName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetTableName () const declarative remote as String
{
  TextBody:
  [*
    // Akari Sep-30-2024 (created)
    return "产量对比报表";
  *]
}
_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl
@@ -9,7 +9,7 @@
  [*
    // rislai Jul-17-2024 (created)
    macroPlan := this.MacroPlan();
    table := recycleBin.LocalTable( relnew,Name := "产量对比报表");
    table := recycleBin.LocalTable( relnew,Name := LocalCell_ProductionComparison::GetTableName());
    
    actualDailyProductionDatas := selectset( archive,ActualDailyProductionData,data,true );
    actualDailyProductionDataIndexTree := NamedValueTree::Create();
@@ -31,7 +31,7 @@
    
    traverse( this,OfflinePlanRow,row,row.Type() = "1" ){
      productID := row.ProductID();
      productLine := row.ProductionLine();
      // productLine := row.ProductionLine();
      localRow := table.LocalRow( relnew,Index := table.GetRowIndexCache(),CustomName := productID );
      traverse( row,OfflinePlanCell,cell,cell.OfflinePlanColumn().ColumnDate() >= macroPlan.StartOfPlanning().Date() ){
        localColumnHandle := localColumnIndexTree.GetHandle( cell.OfflinePlanColumn().ColumnDate().AsQUILL() );
@@ -57,6 +57,43 @@
        column.Delete(); 
      } 
    }
    // maxCellCount := table.LocalRow( relsize );
    //traverse( table,LocalColumn,column ){
    //  cellIndexTree := NamedValueTree::Create();
    //  columnKey := column.CustomDate().AsQUILL();
    //  count := 0;
    //  traverse( column,LocalCell,cell ){
    //    rowKey := cell.LocalRow().CustomName();
    //    cellHandle := cellIndexTree.GetHandle( rowKey + columnKey );
    //    cellIndexTree.Root().AddChild( cellHandle,count );
    //    count++;
    //  }
    //  traverse( table,LocalRow,row ){
    //    rowKey := row.CustomName();
    //    cellHandle := cellIndexTree.GetHandle( rowKey + columnKey );
    //    cellCount := guard( cellIndexTree.Root().Child( cellHandle ),null( NamedValue ));
    //    if( isnull( cellCount )){
    //      row.LocalCell( relnew,LocalCell_ProductionComparison ,LocalColumn := column,
    //                     Plan := 0,Actual := 0 );
    //    }
    //  }
    //}
    traverse( table,LocalRow,row ){
      cellCountTree := NamedValueTree::Create();
      traverse( row,LocalCell,cell ){
        cellHandle := cellCountTree.GetHandle( cell.LocalColumn().CustomDate().AsQUILL());
        cellCountTree.Root().AddChild( cellHandle,0 );
      }
      traverse( table,LocalColumn,column ){
        cellHandle := cellCountTree.GetHandle( column.CustomDate().AsQUILL());
        cell := guard( cellCountTree.Root().Child( cellHandle ),null( NamedValue ));
        if( isnull( cell )){
          row.LocalCell( relnew,LocalCell_ProductionComparison ,LocalColumn := column,Plan := 0,Actual := 0 );
        }
      }
    }
    
    return table;
  *]
_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def
@@ -18,7 +18,7 @@
          Properties:
          [
            DataType: 'LocalTable'
            Source: 'dhComparisonData'
            Source: 'dhTable'
            Taborder: 0
            Transformation: 'LocalRow.LocalCell.astype(LocalCell_OfflinePlanComparison)'
          ]
@@ -47,7 +47,7 @@
            DataType: 'LocalTable'
            FilterArguments: 'checkedProduct:QMacroPlanner::FormOfflinePlanChanges.dhFinelProduct'
            FixedFilter: 'exists( checkedProduct,Elements,product,product.ID() = object.Name() )'
            Source: 'dhComparisonData'
            Source: 'dhTable'
            Taborder: 0
            Transformation: 'LocalRow'
          ]
@@ -75,7 +75,7 @@
            DataType: 'LocalTable'
            FilterArguments: 'startDate:QMacroPlanner::FormOfflinePlanChanges.dhStartDate;endDate:QMacroPlanner::FormOfflinePlanChanges.dhEndDate'
            FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date() '
            Source: 'dhComparisonData'
            Source: 'dhTable'
            Taborder: 0
            Transformation: 'LocalColumn'
          ]
_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelDemandComparison.def
@@ -5,7 +5,7 @@
  BaseType: 'WebPanel'
  Children:
  [
    Component dhComparisonData
    Component dhTable
    {
      #keys: '[412672.1.78210541]'
      BaseType: 'WebDataHolder'
_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon504#801.def
@@ -18,10 +18,10 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[MacroPlan]'
            Source: 'dhMacroPlans'
            DataType: 'structured[OfflinePlanTable]'
            Source: 'dhOfflinePlanTables'
            Taborder: 0
            Transformation: 'Elements.OfflinePlanTable'
            Transformation: 'Elements'
          ]
        }
      ]
@@ -55,10 +55,10 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[MacroPlan]'
            Source: 'dhMacroPlans'
            DataType: 'structured[OfflinePlanTable]'
            Source: 'dhOfflinePlanTables'
            Taborder: 0
            Transformation: 'Elements.OfflinePlanTable'
            Transformation: 'Elements'
          ]
        }
      ]
@@ -69,16 +69,52 @@
        Taborder: 1
      ]
    }
    Component dhMacroPlans id:dhMacroPlans_891
    Component dhOfflinePlanTables
    {
      #keys: '[414996.1.103241339]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[MacroPlan]*'
      Databinding: 'structured[OfflinePlanTable]*'
      Properties:
      [
        Taborder: 3
      ]
    }
    Component bExport
    {
      #keys: '[414996.1.104721685]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Taborder: 4
      ]
    }
    Component dhXMLDataListener
    {
      #keys: '[414996.1.104721708]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[ExportXMLManager]*'
      Children:
      [
        Component DataExtractor510
        {
          #keys: '[414996.1.104721709]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'RecycleBin'
            FixedFilter: 'object.Name() = LocalCell_OfflinePlanComparison::GetTableName()'
            Source: 'RecycleBin'
            Taborder: 0
            Transformation: 'ExportXMLManager'
          ]
        }
      ]
      Properties:
      [
        Taborder: 5
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhTable_OnDataChanged.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhComparisonData_OnDataChanged.def ÐÞ¸Ä
@@ -1,6 +1,6 @@
Quintiq file version 2.0
#parent: PanelDemandComparison/dhComparisonData
Response OnDataChanged () id:Response_PanelDemandComparison_dhComparisonData_OnDataChanged
#parent: PanelDemandComparison/dhTable
Response OnDataChanged () id:Response_PanelDemandComparison_dhTable_OnDataChanged
{
  #keys: '[412672.1.78210528]'
  CanBindMultiple: false
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_bComparison_OnClick.def
@@ -12,7 +12,7 @@
      baseVersion := ddlBaseOfflinePlanTable.Data();
      compareVersion := ddlCompareOfflinePlanTable.Data();
      
      dhComparisonData.Data( LocalCell_OfflinePlanComparison::Compared( RecycleBin,baseVersion,compareVersion ));
      dhTable.Data( LocalCell_OfflinePlanComparison::Compared( RecycleBin,baseVersion,compareVersion ));
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_bExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: PanelRibbon504_801/bExport
Response OnClick () id:Response_PanelRibbon504_bExport_OnClick
{
  #keys: '[414996.1.104721684]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      rows := selectset( dhTable.Data(),LocalRow,row,exists( dhFinelProduct.Data(),Elements,product,product.ID() = row.Name()) );
      columns := selectset( dhTable.Data( ),LocalColumn,column,true );
      LocalCell_OfflinePlanComparison::AsyncExport( RecycleBin, rows, columns, MacroPlan );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_dhMacroPlans_OnCreated#57.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_dhOfflinePlanTables_OnCreated#57.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: PanelRibbon504_801/dhOfflinePlanTables
Response OnCreated () id:Response_PanelRibbon504_801_dhOfflinePlanTables_OnCreated_57
{
  #keys: '[414996.1.103241337]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      macroPlans := ApplicationMacroPlanner.GetMacroPlans();
      offlinePlanTables := selectset( macroPlans,Elements.OfflinePlanTable,table,true );
      traverse( macroPlans,Elements,element ){
        info( element.MDSID() );
      }
      this.Data( &offlinePlanTables );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelRibbon504_801_dhXMLDataListener_OnDataChanged#648.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: PanelRibbon504_801/dhXMLDataListener
Response OnDataChanged () id:Response_PanelRibbon504_dhXMLDataListener_OnDataChanged_648
{
  #keys: '[414996.1.104721706]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  QuillAction
  {
    Body:
    [*
      traverse( dhXMLDataListener.Data(),Elements,element ){
        binaryValue := element.Export();
        Application.Download( element.Name() + "_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
        element.Delete();
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_Form701/_ROOT_Component_FormOfflinePlanChanges#701.def
@@ -12,6 +12,7 @@
  ]
  Properties:
  [
    Description: '生产计划变更报表'
    Image: 'DOCUMENT_CENTER'
    Title: '生产计划变更报表'
  ]
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_MatrixEditor#988.def
@@ -18,7 +18,7 @@
          Properties:
          [
            DataType: 'LocalTable'
            Source: 'dhComparisonData'
            Source: 'dhTable'
            Taborder: 0
            Transformation: 'LocalRow.LocalCell.astype(LocalCell_ProductionComparison)'
          ]
@@ -47,7 +47,7 @@
            DataType: 'LocalTable'
            FilterArguments: 'checkedProduct:QMacroPlanner::FormOfflinePlanComparison.dhFinelProduct'
            FixedFilter: 'exists( checkedProduct,Elements,product,product.ID() = object.Name() )'
            Source: 'dhComparisonData'
            Source: 'dhTable'
            Taborder: 0
            Transformation: 'LocalRow'
          ]
@@ -75,7 +75,7 @@
            DataType: 'LocalTable'
            FilterArguments: 'startDate:QMacroPlanner::FormOfflinePlanComparison.dhStartDate;endDate:QMacroPlanner::FormOfflinePlanComparison.dhEndDate'
            FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date()'
            Source: 'dhComparisonData'
            Source: 'dhTable'
            Taborder: 0
            Transformation: 'LocalColumn'
          ]
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison#634.def
@@ -6,7 +6,7 @@
  Children:
  [
    #child: MatrixEditor_988
    Component dhComparisonData
    Component dhTable
    {
      #keys: '[412672.1.61940683]'
      BaseType: 'WebDataHolder'
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def
@@ -52,6 +52,42 @@
        Taborder: 2
      ]
    }
    Component bExport id:bExport_298
    {
      #keys: '[414996.1.108480376]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Taborder: 3
      ]
    }
    Component dhXMLDataListener id:dhXMLDataListener_273
    {
      #keys: '[414996.1.108480431]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[ExportXMLManager]*'
      Children:
      [
        Component DataExtractor510 id:DataExtractor510_384
        {
          #keys: '[414996.1.108480432]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'RecycleBin'
            FixedFilter: 'object.Name() = LocalCell_ProductionComparison::GetTableName()'
            Source: 'RecycleBin'
            Taborder: 0
            Transformation: 'ExportXMLManager'
          ]
        }
      ]
      Properties:
      [
        Taborder: 4
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhTable_OnDataChanged.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhComparisonData_OnDataChanged.def ÐÞ¸Ä
@@ -1,6 +1,6 @@
Quintiq file version 2.0
#parent: PanelDemandComparison_634/dhComparisonData
Response OnDataChanged () id:Response_PanelDemandComparison_634_dhComparisonData_OnDataChanged
#parent: PanelDemandComparison_634/dhTable
Response OnDataChanged () id:Response_PanelDemandComparison_634_dhTable_OnDataChanged
{
  #keys: '[412672.1.61940670]'
  CanBindMultiple: false
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bComparison_OnClick#613.def
@@ -11,7 +11,7 @@
    [*
      opt := ddlOfflinePlanTable.Data();
      
      dhComparisonData.Data( opt.Comparison( RecycleBin,Archive ));
      dhTable.Data( opt.Comparison( RecycleBin,Archive ));
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bExport_OnClick#891.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: PanelRibbon504/bExport_298
Response OnClick () id:Response_pOperaction_bExport_OnClick_891
{
  #keys: '[414996.1.108480375]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      rows := selectset( dhTable.Data(),LocalRow,row,exists( dhFinelProduct.Data(),Elements,product,product.ID() = row.Name()) );
      columns := selectset( dhTable.Data( ),LocalColumn,column,true );
      LocalCell_ProductionComparison::AsyncExport( RecycleBin, rows, columns, MacroPlan );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_dhXMLDataListener_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: PanelRibbon504/dhXMLDataListener_273
Response OnDataChanged () id:Response_PanelRibbon504_dhXMLDataListener_OnDataChanged
{
  #keys: '[414996.1.106110528]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  QuillAction
  {
    Body:
    [*
      traverse( dhXMLDataListener.Data(),Elements,element ){
        binaryValue := element.Export();
        Application.Download( element.Name() + "_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
        element.Delete();
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def
@@ -12,6 +12,7 @@
  ]
  Properties:
  [
    Description: '产量对比报表'
    Image: 'DOCUMENT_INFO'
    Title: '产量对比报表'
  ]
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon.def
@@ -5,8 +5,8 @@
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelRibbon504
    #child: PanelRibbon322_88
    #child: PanelRibbon206_478
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon206#478.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
Quintiq file version 2.0
Component PanelRibbon206 id:PanelRibbon206_478
{
  #keys: '[414996.1.108919103]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bExportTemplate
    {
      #keys: '[414996.1.108919104]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出模板'
        Taborder: 0
      ]
    }
    Component bImportOutput
    {
      #keys: '[414996.1.108919105]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Label: '导入'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Orientation: 'horizontal'
    Taborder: 1
    Title: 'output'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon322#88.def
@@ -14,7 +14,7 @@
        Checked: true
        Description: '班次'
        Label: '班次'
        Taborder: 0
        Taborder: 2
      ]
    }
    Component cbWorkday
@@ -26,7 +26,7 @@
        Checked: true
        Description: '工作日'
        Label: '工作日'
        Taborder: 1
        Taborder: 3
      ]
    }
    Component cbCapacity
@@ -38,7 +38,7 @@
        Checked: true
        Description: '产能'
        Label: '产能'
        Taborder: 2
        Taborder: 4
      ]
    }
    Component cbOutput
@@ -50,7 +50,7 @@
        Checked: true
        Description: '产量'
        Label: '产量'
        Taborder: 3
        Taborder: 5
      ]
    }
    Component dsStartDate id:dsStartDate_438
@@ -60,7 +60,7 @@
      Properties:
      [
        Label: 'Start Date'
        Taborder: 4
        Taborder: 6
      ]
    }
    Component dhStartDate id:dhStartDate_891
@@ -70,7 +70,7 @@
      Databinding: 'Date*'
      Properties:
      [
        Taborder: 5
        Taborder: 7
      ]
    }
    Component dsEndDate id:dsEndDate_963
@@ -81,7 +81,7 @@
      [
        Date: 9999-12-31
        Label: 'End Date'
        Taborder: 6
        Taborder: 8
      ]
    }
    Component dhEndDate id:dhEndDate_384
@@ -91,7 +91,7 @@
      Databinding: 'Date*'
      Properties:
      [
        Taborder: 7
        Taborder: 9
      ]
    }
    Component bExport
@@ -101,7 +101,7 @@
      Properties:
      [
        Image: 'EXPORT1'
        Taborder: 8
        Taborder: 10
      ]
    }
    Component dhXMLDataListener
@@ -127,7 +127,28 @@
      ]
      Properties:
      [
        Taborder: 9
        Taborder: 11
      ]
    }
    Component ButtonRibbon820 id:ButtonRibbon820_836
    {
      #keys: '[414996.1.104721255]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'CreateFullTable'
        Taborder: 1
      ]
    }
    Component ButtonRibbon id:ButtonRibbon_338
    {
      #keys: '[414996.1.104721297]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Create'
        Taborder: 0
        Visible: false
      ]
    }
  ]
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon504.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon206_478_bExportTemplate_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: PanelRibbon206_478/bExportTemplate
Response OnClick () id:Response_PanelRibbon206_478_bExportTemplate_OnClick
{
  #keys: '[414996.1.108919102]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      data := MP_Cell_ScheduleSummary::ExportOutputTemplate( Date::ActualDate().Year() );
      Application.Download( "产出导入模板.xlsx",data.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon206_478_bImportOutput_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_bImportOutput_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelRibbon504/bImportOutput
Response OnClick () id:Response_PanelRibbon504_bImportOutput_OnClick
#parent: PanelRibbon206_478/bImportOutput
Response OnClick () id:Response_PanelRibbon206_478_bImportOutput_OnClick
{
  #keys: '[412672.1.96362099]'
  #keys: '[414996.1.108919101]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_ButtonRibbon820_OnClick#71.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_ButtonRibbon820_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelRibbon504/ButtonRibbon820
Response OnClick () id:Response_PanelRibbon504_ButtonRibbon820_OnClick
#parent: PanelRibbon322_88/ButtonRibbon820_836
Response OnClick () id:Response_PanelRibbon504_ButtonRibbon820_OnClick_71
{
  #keys: '[412672.1.97441221]'
  #keys: '[414996.1.104721254]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_ButtonRibbon_OnClick#88.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_ButtonRibbon_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelRibbon504/ButtonRibbon
Response OnClick () id:Response_PanelRibbon504_ButtonRibbon_OnClick
#parent: PanelRibbon322_88/ButtonRibbon_338
Response OnClick () id:Response_PanelRibbon504_ButtonRibbon_OnClick_88
{
  #keys: '[412672.1.94151032]'
  #keys: '[414996.1.104721296]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_bExportTemplate_OnClick.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_npYear_OnCreated.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction#633.def
@@ -67,16 +67,6 @@
        Taborder: 5
      ]
    }
    Component bDownload
    {
      #keys: '[412672.1.106502003]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'DOWNLOAD'
        Taborder: 6
      ]
    }
    Component dhXMLDataListener
    {
      #keys: '[412672.1.106502023]'
@@ -100,7 +90,7 @@
      ]
      Properties:
      [
        Taborder: 7
        Taborder: 6
      ]
    }
  ]
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bDownload_OnClick.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_dhXMLDataListener_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pOperaction/dhXMLDataListener
Response OnDataChanged () id:Response_pOperaction_dhXMLDataListener_OnDataChanged
{
  #keys: '[414996.1.108480536]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  QuillAction
  {
    Body:
    [*
      traverse( dhXMLDataListener.Data(),Elements,element ){
        binaryValue := element.Export();
        Application.Download( element.Name() + "_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
        element.Delete();
      }
    *]
    GroupServerCalls: false
  }
}