yypsybs
2023-09-22 0351af7b382a9daddd709c884bcd96fe2c1fa3ac
年度产销预算复盘对比导出
已修改3个文件
已添加3个文件
114 ■■■■■ 文件已修改
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompareExport.qbl 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScenarioManager/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
@@ -72,7 +72,9 @@
    info( "dealing é¢æ¿åˆ†é…é‡" )
    if( CapacityAndSaleBudgeFilterItem::Contains( items, "面板分配量" ) ) {
      traverse( years, Elements, year ) {
        info( "面板分配量" + [String]year.YearNo() + "å¹´" );
        // åŽ†å²æ•°æ®
        info( "面板分配量" + [String]year.YearNo() + "年历史数据" );
        traverse( months, Elements, month ) {
          columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -87,6 +89,7 @@
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
        }
        info( "面板分配量" + [String]year.YearNo() + "å¹´S&OP数据" );
        // S&OP数据
        traverse( macroPlans, Elements, macroPlan ) {
          traverse( months, Elements, month ) {
@@ -112,7 +115,9 @@
    info( "dealing é”€å”®é¢" )
    if( CapacityAndSaleBudgeFilterItem::Contains( items, "销售额" ) ) {
      traverse( years, Elements, year ) {
        info( "销售额" + [String]year.YearNo() + "å¹´" );
        // åŽ†å²æ•°æ®
        info( "销售额" + [String]year.YearNo() + "年历史数据" );
        traverse( months, Elements, month ) {
          columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -127,6 +132,7 @@
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
        }
        info( "销售额" + [String]year.YearNo() + "年历史数据S&OP数据" );
        // S&OP数据
        traverse( macroPlans, Elements, macroPlan ) {
          traverse( months, Elements, month ) {
@@ -151,7 +157,7 @@
    info( "dealing å¤§å¼ ç›ˆåˆ©é¢" )
    traverse( years, Elements, year ) {
      // åŽ†å²æ•°æ®
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "大张盈利额-年度预算" );
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "大张盈利额-" + [String]year.YearNo() + "å¹´-年度预算" );
      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        // todo 
        // QID 23
@@ -160,7 +166,7 @@
      }
      // S&OP数据
      traverse( macroPlans, Elements, macroPlan ) {
        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "大张盈利额-" + [String]year.YearNo() + "å¹´" );
        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "大张盈利额-" + [String]year.YearNo() + "å¹´-" + macroPlan.ScenarioName() );
        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
@@ -171,16 +177,15 @@
    info( "dealing äº§å“ç›ˆåˆ©é¢" )
    traverse( years, Elements, year ) {
      // åŽ†å²æ•°æ®
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产品盈利额-年度预算" );
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产品盈利额-" + [String]year.YearNo() + "å¹´-年度预算" );
      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        // todo
        // QID 23
        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
      }
      // S&OP数据
      traverse( macroPlans, Elements, macroPlan ) {
        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产品盈利额-" + [String]year.YearNo() + "å¹´" );
        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产品盈利额-" + [String]year.YearNo() + "å¹´-" + macroPlan.ScenarioName() );
        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
          // todo
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompareExport.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
Quintiq file version 2.0
#parent: #root
Method CapacityAndSaleBudgeCompareExport () as BinaryValue
{
  Description: '导出比较结果'
  TextBody:
  [*
    // yypsybs Sep-22-2023 (created)
    tableName := "年度产销预算对比";
    text:= '<?xml version="1.0" encoding="utf-8" standalone="yes"?><table><name>' + tableName + '</name>';
    // å¤„理column <column><name>物料编码</name><type>String</type></column>
    columnXml := ""
    traverse( this, CapacityAndSaleBudgeCompareItemColumn, column ) {
      info( "columnName : " + column.ColumnName() );
      columnXml := columnXml + "<column><name>" + column.ColumnName() + "</name><type>String</type></column>";
    }
    text := text + columnXml + "</table>"
    // å¡žå†…容
    xmlDOMImplementation := XMLDOMImplementation::Create();
    xmlDOMDocument := xmlDOMImplementation.CreateDocumentFromString( text );
    tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
    rows := selectsortedset( this, CapacityAndSaleBudgeCompareItemRow, row, row.PlaceOfProductionOfArray() + "_" + row.BusinessType() );
    traverse ( rows, Elements, row ) {
      info( "rowNo : " + [String]row.RowNo() );
      traverse( row, CapacityAndSaleBudgeCompareItemCell, cell ) {
        ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, cell.CellContent(), cell.CapacityAndSaleBudgeCompareItemColumn().ColumnName() );
      }
    }
    xmlDOMSerializer := xmlDOMImplementation.CreateSerializer();
    xmlTableString := xmlDOMSerializer.WriteToString( xmlDOMDocument );
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTableString ) );
    tableGroupHandle := TableGroupHandle::Create( tableName );
    tableGroupHandle.Add( tableHandle );
    tableBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    return tableBinaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_ScenarioManager/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GeneratesTheSpecifiedXMLColumn (
  XMLDOMDocument xmlDOMDocument,
  XMLDOMElement tableElement,
  String value,
  String columnName
)
{
  TextBody:
  [*
    columnElements := tableElement.GetElementsByTagName( "column" );
    traverse ( columnElements, Elements, ce ) {
      nameElement := ce.GetElementByTagName( "name", 0 );
      if ( nameElement.TextContent() = columnName ) {
        cell := xmlDOMDocument.CreateElement( "cell" );
        cell.SetAttribute( "value", value );
        ce.AppendChild( cell );
      }
    }
  *]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
@@ -93,6 +93,6 @@
    ContextMenu: 'matrixeditorContextMenuCapacityAndSaleBudgeCompare'
    Editable: false
    Rows: 'MatrixEditorRowsCapacityAndSaleBudgeCompare'
    Taborder: 1
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: ButtonExportCompare
Response OnClick () id:Response_FormCapacityAndSaleBudgeCompare_ButtonExportCompare_OnClick
{
  #keys: '[414384.0.881345276]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( GlobalOTDTable );
  *]
  QuillAction
  {
    Body:
    [*
      tableBinaryData := ScenarioManager.CapacityAndSaleBudgeCompareExport().AsBinaryData();
      Application.Download( "年度产销预算对比.xlsx", tableBinaryData );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
@@ -18,6 +18,17 @@
        Taborder: 0
      ]
    }
    Component ButtonExportCompare
    {
      #keys: '[414384.0.881345277]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [