已重命名2个文件
	
		
		已添加83个文件
	
		
		已修改27个文件
	
	
 
	
	
	
	
	
	
	
	
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Relation CapacityAndSaleBudgeFilterBusinessType_MPSync_MPSync_CapacityAndSaleBudgeFilterBusinessType | 
 |  |  | { | 
 |  |  |   #keys: '1[414384.0.873958122]' | 
 |  |  |   DefaultRelationStrategy | 
 |  |  |   { | 
 |  |  |   } | 
 |  |  |   RelationSide.LeftSide MPSync | 
 |  |  |   { | 
 |  |  |     #keys: '3[414384.0.873958124][414384.0.873958123][414384.0.873958125]' | 
 |  |  |     Cardinality: '0to1' | 
 |  |  |     ObjectDefinition: CapacityAndSaleBudgeFilterBusinessType | 
 |  |  |     OwningSide: 'Reference' | 
 |  |  |   } | 
 |  |  |   RelationSide.RightSide CapacityAndSaleBudgeFilterBusinessType | 
 |  |  |   { | 
 |  |  |     #keys: '3[414384.0.873958127][414384.0.873958126][414384.0.873958128]' | 
 |  |  |     Cardinality: '1toN' | 
 |  |  |     ObjectDefinition: MPSync | 
 |  |  |     OwningSide: 'Owned' | 
 |  |  |   } | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Relation CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_MPSync_MPSync_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  | { | 
 |  |  |   #keys: '1[414384.0.873958138]' | 
 |  |  |   DefaultRelationStrategy | 
 |  |  |   { | 
 |  |  |   } | 
 |  |  |   RelationSide.LeftSide MPSync | 
 |  |  |   { | 
 |  |  |     #keys: '3[414384.0.873958140][414384.0.873958139][414384.0.873958141]' | 
 |  |  |     Cardinality: '0to1' | 
 |  |  |     ObjectDefinition: CapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  |     OwningSide: 'Reference' | 
 |  |  |   } | 
 |  |  |   RelationSide.RightSide CapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  |   { | 
 |  |  |     #keys: '3[414384.0.873958143][414384.0.873958142][414384.0.873958144]' | 
 |  |  |     Cardinality: '1toN' | 
 |  |  |     ObjectDefinition: MPSync | 
 |  |  |     OwningSide: 'Owned' | 
 |  |  |   } | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Relation MappingAnnualBudget_MPSync_MPSync_MappingAnnualBudget | 
 |  |  | { | 
 |  |  |   #keys: '1[414384.0.874289921]' | 
 |  |  |   DefaultRelationStrategy | 
 |  |  |   { | 
 |  |  |   } | 
 |  |  |   RelationSide.LeftSide MPSync | 
 |  |  |   { | 
 |  |  |     #keys: '3[414384.0.874289923][414384.0.874289922][414384.0.874289924]' | 
 |  |  |     Cardinality: '0to1' | 
 |  |  |     ObjectDefinition: MappingAnnualBudget | 
 |  |  |     OwningSide: 'Reference' | 
 |  |  |   } | 
 |  |  |   RelationSide.RightSide MappingAnnualBudget | 
 |  |  |   { | 
 |  |  |     #keys: '3[414384.0.874289926][414384.0.874289925][414384.0.874289927]' | 
 |  |  |     Cardinality: '1toN' | 
 |  |  |     ObjectDefinition: MPSync | 
 |  |  |     OwningSide: 'Owned' | 
 |  |  |   } | 
 |  |  | } | 
 
 |  |  | 
 |  |  | Attribute BusinessType | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.810464687][414384.0.810464686][414384.0.810464688]' | 
 |  |  |   Description: 'ä¸å¡ç±»å' | 
 |  |  |   Description: 'ä¸å¡ç±»å(äºä¸é¨)' | 
 |  |  |   ValueType: String | 
 |  |  | } | 
 
| ÎļþÃû´Ó _Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_BusinessTypeOrOrgCode.qbl ÐÞ¸Ä | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute BusinessTypeOrOrgCode | 
 |  |  | Attribute BusinessTypeOrPlaceOfProductionOfArray | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.852466562][414384.0.852466561][414384.0.852466563]' | 
 |  |  |   Description: 'äºä¸é¨/颿¿åºå°' | 
 
 |  |  | 
 |  |  |         for( j := 1; j <= 12; j := j + 1 ) { | 
 |  |  |           monthString := "MONTH" + ifexpr( j < 10, "0" + [String]j, [String]j ); | 
 |  |  |           scenarioManager.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                             BusinessTypeOrOrgCode := businessTypeString,  | 
 |  |  |                                                             BusinessTypeOrPlaceOfProductionOfArray := businessTypeString,  | 
 |  |  |                                                             TimeStringAndScenarioName := monthString + " - " + scenarioName,  | 
 |  |  |                                                             Quantity := Real::Random( 20.0, 30.0 ) ); | 
 |  |  |         } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute BusinessType | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874249290][414384.0.874249289][414384.0.874249291]' | 
 |  |  |   ValueType: String | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod CreateIfNotExist ( | 
 |  |  |   MPSync parent, | 
 |  |  |   String value | 
 |  |  | ) | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-15-2023 (created) | 
 |  |  |     old := select( parent, CapacityAndSaleBudgeFilterBusinessType, item, item.BusinessType() = value ); | 
 |  |  |     if( isnull( old ) ) { | 
 |  |  |       parent.CapacityAndSaleBudgeFilterBusinessType( relnew,  | 
 |  |  |                                                      BusinessType := value ); | 
 |  |  |     } | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #root | 
 |  |  | #parent: #DomainModel | 
 |  |  | Type CapacityAndSaleBudgeFilterBusinessType | 
 |  |  | { | 
 |  |  |   #keys: '5[414384.0.874249287][414384.0.874249285][0.0.0][414384.0.874249286][414384.0.874249288]' | 
 |  |  |   BaseType: Object | 
 |  |  |   Description: '对æ¯äºä¸é¨' | 
 |  |  |   StructuredName: 'CapacityAndSaleBudgeFilterBusinessTypes' | 
 |  |  | } | 
 
 |  |  | 
 |  |  |   ScenarioManager parent | 
 |  |  | ) | 
 |  |  | { | 
 |  |  |   Description: 'åå§åæä»½' | 
 |  |  |   Description: 'åå§å年份' | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-15-2023 (created) | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute PlaceOfProductionOfArray | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.873958113][414384.0.873958112][414384.0.873958114]' | 
 |  |  |   ValueType: String | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod CreateIfNotExist ( | 
 |  |  |   MPSync parent, | 
 |  |  |   String value | 
 |  |  | ) | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-15-2023 (created) | 
 |  |  |     old := select( parent, CapacityAndSaleBudgeFilterPlaceOfProductionOfArray, item, item.PlaceOfProductionOfArray() = value ); | 
 |  |  |     if( isnull( old ) ) { | 
 |  |  |       parent.CapacityAndSaleBudgeFilterPlaceOfProductionOfArray( relnew,  | 
 |  |  |                                                                  PlaceOfProductionOfArray := value ); | 
 |  |  |     } | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #root | 
 |  |  | #parent: #DomainModel | 
 |  |  | Type CapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  | { | 
 |  |  |   #keys: '5[414384.0.873958110][414384.0.873958108][0.0.0][414384.0.873958109][414384.0.873958111]' | 
 |  |  |   BaseType: Object | 
 |  |  |   Description: '对æ¯äºä¸é¨' | 
 |  |  |   StructuredName: 'CapacityAndSaleBudgeFilterPlaceOfProductionOfArrays' | 
 |  |  | } | 
 
 |  |  | 
 |  |  |     // yypsybs Sep-15-2023 (created) | 
 |  |  |     existList := selectuniquevalues( parent, CapacityAndSaleBudgeFilterYear, item, item.YearNo() ); | 
 |  |  |     nowYear := Date::Today().Year(); | 
 |  |  |     for( i := nowYear; i <= nowYear + 10; i++ ) { | 
 |  |  |     for( i := nowYear - 10; i <= nowYear; i++ ) { | 
 |  |  |       if( existList.Find( i ) = -1 ) { | 
 |  |  |         parent.CapacityAndSaleBudgeFilterYear( relnew,  | 
 |  |  |                                                YearNo := i ); | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Method RefreshCapacityAndSaleBudgeFilter | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-21-2023 (created) | 
 |  |  |     info( "=====RefreshCapacityAndSaleBudgeFilter====" ); | 
 |  |  |     businessTypes := selectuniquevalues( this, MappingCapacityAndSaleBudge, item, item.BusinessType() ); | 
 |  |  |     info( [String]businessTypes.Size() ); | 
 |  |  |     traverse( businessTypes, Elements, businessType ) { | 
 |  |  |       CapacityAndSaleBudgeFilterBusinessType::CreateIfNotExist( this, businessType ); | 
 |  |  |     } | 
 |  |  |     placeOfProductionOfArrays := selectuniquevalues( this, MappingCapacityAndSaleBudge, item, item.PlaceOfProductionOfArray() ); | 
 |  |  |     info( [String]placeOfProductionOfArrays.Size() ); | 
 |  |  |     traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) { | 
 |  |  |       CapacityAndSaleBudgeFilterPlaceOfProductionOfArray::CreateIfNotExist( this, placeOfProductionOfArray ); | 
 |  |  |     } | 
 |  |  |   *] | 
 |  |  | } | 
 
 |  |  | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-19-2023 (created) | 
 |  |  |     years := construct( Strings );; | 
 |  |  |     for( i := Date::ActualDate().Year(); i < Date::ActualDate().Year() + 10; i := i + 1 ) { | 
 |  |  |     for( i := Date::ActualDate().Year() - 10; i <= Date::ActualDate().Year(); i := i + 1 ) { | 
 |  |  |       years.Add( [String]i ); | 
 |  |  |     } | 
 |  |  |     return ifexpr( years.Size() > 0, years.Concatenate( ";" ), "" ); | 
 
 |  |  | 
 |  |  |     info( "MPSync::TestData" ); | 
 |  |  |      | 
 |  |  |     productCodeList := selectuniquevalues( macroPlan, Product_MP, item, item.ID() ); | 
 |  |  |      | 
 |  |  |     info( "productCodeList : " + [String]productCodeList.Size() ); | 
 |  |  |      | 
 |  |  |     mpSync.MappingCapacityAndSaleBudge( relflush ); | 
 |  |  |     for( year := Date::ActualDate().Year() - 10; year <= Date::ActualDate().Year(); year := year + 1 ) { | 
 |  |  |     for( i := 1; i <= productCodeList.Size(); i := i + 1 ) { | 
 |  |  |       productCode := productCodeList.Element( i - 1 ); | 
 |  |  |       mappingCapacityAndSaleBudge := mpSync.MappingCapacityAndSaleBudge( relnew,  | 
 |  |  |                                                                            YearNo := year, | 
 |  |  |                                                                          ProductCode := productCode, | 
 |  |  |                                                                          BusinessType := "äºä¸é¨" + [String](productCode.Length() mod 3 + 1),  | 
 |  |  |                                                                          PlaceOfProductionOfArray := "颿¿åºå°" + [String](productCode.Length() mod 4 + 1) | 
 |  |  |                                                                           ); | 
 |  |  |       for( month := 1; month <= 12; month := month + 1 ) { | 
 |  |  |         field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInPCSInMonth" + [String]month ); | 
 |  |  |         field.Set( mappingCapacityAndSaleBudge, Real::Random( 20.0, 30.0 ) ); | 
 |  |  |           field.Set( mappingCapacityAndSaleBudge, Real::Random( 20000.0, 30000.0 ) ); | 
 |  |  |         field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]month ); | 
 |  |  |         field.Set( mappingCapacityAndSaleBudge, Real::Random( 20.0, 30.0 ) ); | 
 |  |  |           field.Set( mappingCapacityAndSaleBudge, Real::Random( 20000.0, 30000.0 ) ); | 
 |  |  |         field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "SaleAmountInMonth" + [String]month ); | 
 |  |  |         field.Set( mappingCapacityAndSaleBudge, Real::Random( 20.0, 30.0 ) ); | 
 |  |  |           field.Set( mappingCapacityAndSaleBudge, Real::Random( 20000.0, 30000.0 ) ); | 
 |  |  |       } | 
 |  |  |       mappingCapacityAndSaleBudge.CapacityInPCSTotal( mappingCapacityAndSaleBudge.GetCapacityInPCSInYear() ); | 
 |  |  |       mappingCapacityAndSaleBudge.CapacityInSheetTotal( mappingCapacityAndSaleBudge.GetCapacityInSheetInYear() ); | 
 |  |  |       mappingCapacityAndSaleBudge.SaleAmountTotal( mappingCapacityAndSaleBudge.GetSaleAmountInYear() ); | 
 |  |  |     } | 
 |  |  |     } | 
 |  |  |     result1 := selectset( mpSync, MappingCapacityAndSaleBudge, item, true ); | 
 |  |  |     info( "test MappingCapacityAndSaleBudge size : " + [String]result1.Size() ); | 
 |  |  |      | 
 |  |  |     result := selectset( mpSync, MappingCapacityAndSaleBudge, item, true ); | 
 |  |  |      | 
 |  |  |     info( "MappingCapacityAndSaleBudge size : " + [String]result.Size() ); | 
 |  |  |     mpSync.MappingAnnualBudget( relflush ); | 
 |  |  |     for( year := Date::ActualDate().Year() - 10; year <= Date::ActualDate().Year(); year := year + 1 ) { | 
 |  |  |       for( i := 1; i <= productCodeList.Size(); i := i + 1 ) { | 
 |  |  |         productCode := productCodeList.Element( i - 1 ); | 
 |  |  |         mappingAnnualBudget := mpSync.MappingAnnualBudget( relnew,  | 
 |  |  |                                                            YearNo := year, | 
 |  |  |                                                            ProductId := productCode | 
 |  |  |                                                             ); | 
 |  |  |         for( month := 1; month <= 12; month := month + 1 ) { | 
 |  |  |           field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlyModCapacity" + [String]month ); | 
 |  |  |           field.Set( mappingAnnualBudget, Real::Random( 20000.0, 30000.0 ) ); | 
 |  |  |           field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySheetCapacity" + [String]month ); | 
 |  |  |           field.Set( mappingAnnualBudget, Real::Random( 20000.0, 30000.0 ) ); | 
 |  |  |           field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySales" + [String]month ); | 
 |  |  |           field.Set( mappingAnnualBudget, Real::Random( 20000.0, 30000.0 ) ); | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |     result2 := selectset( mpSync, MappingAnnualBudget, item, true ); | 
 |  |  |     info( "test MappingAnnualBudget size : " + [String]result2.Size() ); | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute BusinessType | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874289974][414384.0.874289973][414384.0.874289975]' | 
 |  |  |   Description: 'ä¸å¡ç±»å' | 
 |  |  |   ValueType: String | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity1 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874289977][414384.0.874289976][414384.0.874289978]' | 
 |  |  |   Description: '1ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity10 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290004][414384.0.874290003][414384.0.874290005]' | 
 |  |  |   Description: '10ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity11 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290007][414384.0.874290006][414384.0.874290008]' | 
 |  |  |   Description: '11ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity12 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290010][414384.0.874290009][414384.0.874290011]' | 
 |  |  |   Description: '12ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity2 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874289980][414384.0.874289979][414384.0.874289981]' | 
 |  |  |   Description: '2ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity3 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874289983][414384.0.874289982][414384.0.874289984]' | 
 |  |  |   Description: '3ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity4 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874289986][414384.0.874289985][414384.0.874289987]' | 
 |  |  |   Description: '4ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity5 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874289989][414384.0.874289988][414384.0.874289990]' | 
 |  |  |   Description: '5ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity6 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874289992][414384.0.874289991][414384.0.874289993]' | 
 |  |  |   Description: '6ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity7 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874289995][414384.0.874289994][414384.0.874289996]' | 
 |  |  |   Description: '7ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity8 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874289998][414384.0.874289997][414384.0.874289999]' | 
 |  |  |   Description: '8ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlyModCapacity9 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290001][414384.0.874290000][414384.0.874290002]' | 
 |  |  |   Description: '9ææ¨¡ç»äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales1 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290049][414384.0.874290048][414384.0.874290050]' | 
 |  |  |   Description: '1æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales10 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290076][414384.0.874290075][414384.0.874290077]' | 
 |  |  |   Description: '10æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales11 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290079][414384.0.874290078][414384.0.874290080]' | 
 |  |  |   Description: '11æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales12 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290082][414384.0.874290081][414384.0.874290083]' | 
 |  |  |   Description: '12æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales2 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290052][414384.0.874290051][414384.0.874290053]' | 
 |  |  |   Description: '2æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales3 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290055][414384.0.874290054][414384.0.874290056]' | 
 |  |  |   Description: '3æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales4 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290058][414384.0.874290057][414384.0.874290059]' | 
 |  |  |   Description: '4æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales5 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290061][414384.0.874290060][414384.0.874290062]' | 
 |  |  |   Description: '5æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales6 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290064][414384.0.874290063][414384.0.874290065]' | 
 |  |  |   Description: '6æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales7 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290067][414384.0.874290066][414384.0.874290068]' | 
 |  |  |   Description: '7æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales8 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290070][414384.0.874290069][414384.0.874290071]' | 
 |  |  |   Description: '8æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySales9 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290073][414384.0.874290072][414384.0.874290074]' | 
 |  |  |   Description: '9æéå®é¢' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity1 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290013][414384.0.874290012][414384.0.874290014]' | 
 |  |  |   Description: '1æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity10 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290040][414384.0.874290039][414384.0.874290041]' | 
 |  |  |   Description: '10æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity11 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290043][414384.0.874290042][414384.0.874290044]' | 
 |  |  |   Description: '11æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity12 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290046][414384.0.874290045][414384.0.874290047]' | 
 |  |  |   Description: '12æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity2 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290016][414384.0.874290015][414384.0.874290017]' | 
 |  |  |   Description: '2æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity3 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290019][414384.0.874290018][414384.0.874290020]' | 
 |  |  |   Description: '3æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity4 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290022][414384.0.874290021][414384.0.874290023]' | 
 |  |  |   Description: '4æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity5 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290025][414384.0.874290024][414384.0.874290026]' | 
 |  |  |   Description: '5æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity6 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290028][414384.0.874290027][414384.0.874290029]' | 
 |  |  |   Description: '6æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity7 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290031][414384.0.874290030][414384.0.874290032]' | 
 |  |  |   Description: '7æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity8 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290034][414384.0.874290033][414384.0.874290035]' | 
 |  |  |   Description: '8æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute MonthlySheetCapacity9 | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290037][414384.0.874290036][414384.0.874290038]' | 
 |  |  |   Description: '9æå®æ°å¤§å¼ äº§è½' | 
 |  |  |   ValueType: Real | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute ProductId | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874289946][414384.0.874289945][414384.0.874289947]' | 
 |  |  |   ValueType: String | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute YearNo | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874290125][414384.0.874290124][414384.0.874290126]' | 
 |  |  |   ValueType: Number | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Method GetCapacityInPCSInYear () as Real | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     result := 0.0; | 
 |  |  |     for( i := 1; i <= 12; i := i + 1 ) { | 
 |  |  |       field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlyModCapacity" + [String]i ); | 
 |  |  |       result := result + field.GetReal( this ); | 
 |  |  |     } | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Method GetCapacityInSheetInHalfYear ( | 
 |  |  |   Number halfNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     result := 0.0; | 
 |  |  |     fromMonth := 1 + ( halfNo - 1 ) * 6; | 
 |  |  |     toMonth := 6 + ( halfNo - 1 ) * 6; | 
 |  |  |     for( i := fromMonth; i <= toMonth; i := i + 1 ) { | 
 |  |  |       field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySheetCapacity" + [String]i ); | 
 |  |  |       result := result + field.GetReal( this ); | 
 |  |  |     } | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Method GetCapacityInSheetInSeason ( | 
 |  |  |   Number seasonNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     result := 0.0; | 
 |  |  |     fromMonth := 1 + ( seasonNo - 1 ) * 3; | 
 |  |  |     toMonth := 3 + ( seasonNo - 1 ) * 3; | 
 |  |  |     for( i := fromMonth; i <= toMonth; i := i + 1 ) { | 
 |  |  |       field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySheetCapacity" + [String]i ); | 
 |  |  |       result := result + field.GetReal( this ); | 
 |  |  |     } | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Method GetCapacityInSheetInYear () as Real | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     result := 0.0; | 
 |  |  |     for( i := 1; i <= 12; i := i + 1 ) { | 
 |  |  |       field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySheetCapacity" + [String]i ); | 
 |  |  |       result := result + field.GetReal( this ); | 
 |  |  |     } | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Method GetSaleAmountInYear () as Real | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     result := 0.0; | 
 |  |  |     for( i := 1; i <= 12; i := i + 1 ) { | 
 |  |  |       field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySales" + [String]i ); | 
 |  |  |       result := result + field.GetReal( this ); | 
 |  |  |     } | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod GetSaleByMonth ( | 
 |  |  |   Strings productNo, | 
 |  |  |   MPSync parent, | 
 |  |  |   Number yearNo, | 
 |  |  |   Number monthNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   Description: 'éå®é¢ï¼Wï¼' | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySales" + [String]monthNo ); | 
 |  |  |     value := sum( parent,  | 
 |  |  |                   MappingAnnualBudget,  | 
 |  |  |                   item,  | 
 |  |  |                   item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1, | 
 |  |  |                   field.GetReal( item ) ); | 
 |  |  |     return value; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod GetSaleByYear ( | 
 |  |  |   Strings productNo, | 
 |  |  |   MPSync parent, | 
 |  |  |   Number yearNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   Description: 'éå®é¢ï¼Wï¼' | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     result := sum( parent,  | 
 |  |  |                    MappingAnnualBudget,  | 
 |  |  |                    item,  | 
 |  |  |                    item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1, | 
 |  |  |                    item.GetSaleAmountInYear() ); | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod GetSheetByHalfYear ( | 
 |  |  |   Strings productNo, | 
 |  |  |   MPSync parent, | 
 |  |  |   Number yearNo, | 
 |  |  |   Number halfNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   Description: '产轠- å®æ°å¤§å¼ ' | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     result := sum( parent,  | 
 |  |  |                    MappingAnnualBudget,  | 
 |  |  |                    item,  | 
 |  |  |                    item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1, | 
 |  |  |                    item.GetCapacityInSheetInHalfYear( halfNo ) ); | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod GetSheetByMonth ( | 
 |  |  |   Strings productNo, | 
 |  |  |   MPSync parent, | 
 |  |  |   Number yearNo, | 
 |  |  |   Number monthNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   Description: '产è½-宿°å¤§å¼ ' | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySheetCapacity" + [String]monthNo ); | 
 |  |  |     value := sum( parent,  | 
 |  |  |                   MappingAnnualBudget,  | 
 |  |  |                   item,  | 
 |  |  |                   item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1, | 
 |  |  |                   field.GetReal( item ) ); | 
 |  |  |     return value; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod GetSheetBySeason ( | 
 |  |  |   Strings productNo, | 
 |  |  |   MPSync parent, | 
 |  |  |   Number yearNo, | 
 |  |  |   Number seasonNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   Description: '产轠- å®æ°å¤§å¼ ' | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     result := sum( parent,  | 
 |  |  |                    MappingAnnualBudget,  | 
 |  |  |                    item,  | 
 |  |  |                    item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1, | 
 |  |  |                    item.GetCapacityInSheetInSeason( seasonNo ) ); | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod GetSheetByYear ( | 
 |  |  |   Strings productNo, | 
 |  |  |   MPSync parent, | 
 |  |  |   Number yearNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   Description: '产轠- å®æ°å¤§å¼ ' | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     result := sum( parent,  | 
 |  |  |                    MappingAnnualBudget,  | 
 |  |  |                    item,  | 
 |  |  |                    item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1, | 
 |  |  |                    item.GetCapacityInSheetInYear() ); | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #root | 
 |  |  | #parent: #DomainModel | 
 |  |  | Type MappingAnnualBudget | 
 |  |  | { | 
 |  |  |   #keys: '5[414384.0.874289918][414384.0.874289916][0.0.0][414384.0.874289917][414384.0.874289919]' | 
 |  |  |   BaseType: Object | 
 |  |  |   Description: '年度é¢ç®æ°æ®' | 
 |  |  |   StructuredName: 'MappingAnnualBudgets' | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod GetNewSupplyByHalfYear ( | 
 |  |  |   Strings productNo, | 
 |  |  |   MacroPlan macroPlan, | 
 |  |  |   Number yearNo, | 
 |  |  |   Number halfNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     fromMonth := 1 + ( halfNo - 1 ) * 6; | 
 |  |  |     toMonth := 6 + ( halfNo - 1 ) * 6; | 
 |  |  |     result := 0.0; | 
 |  |  |     for( i := fromMonth; i <= toMonth; i := i + 1 ) { | 
 |  |  |       result := result + MappingCustomerOrder::GetNewSupplyByMonth( productNo, macroPlan, yearNo, i ); | 
 |  |  |     } | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod GetNewSupplyByMonth ( | 
 |  |  |   Strings productNo, | 
 |  |  |   MacroPlan macroPlan, | 
 |  |  |   Number yearNo, | 
 |  |  |   Number monthNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     result := sum( macroPlan,  | 
 |  |  |                    MappingCustomerOrder,  | 
 |  |  |                    item,  | 
 |  |  |                    productNo.Find( item.ProductID() ) > -1  | 
 |  |  |                    and item.OrderDate().Year() = yearNo | 
 |  |  |                    and item.OrderDate().Month() = monthNo, | 
 |  |  |                    item.Quantity() * item.Price() ); | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod GetNewSupplyBySeason ( | 
 |  |  |   Strings productNo, | 
 |  |  |   MacroPlan macroPlan, | 
 |  |  |   Number yearNo, | 
 |  |  |   Number seasonNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |     fromMonth := 1 + ( seasonNo - 1 ) * 3; | 
 |  |  |     toMonth := 3 + ( seasonNo - 1 ) * 3; | 
 |  |  |     result := 0.0; | 
 |  |  |     for( i := fromMonth; i <= toMonth; i := i + 1 ) { | 
 |  |  |       result := result + MappingCustomerOrder::GetNewSupplyByMonth( productNo, macroPlan, yearNo, i ); | 
 |  |  |     } | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | StaticMethod GetNewSupplyByYear ( | 
 |  |  |   Strings productNo, | 
 |  |  |   MacroPlan macroPlan, | 
 |  |  |   Number yearNo | 
 |  |  | ) as Real | 
 |  |  | { | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-21-2023 (created) | 
 |  |  |     result := 0.0; | 
 |  |  |     for( i := 1; i <= 12; i := i + 1 ) { | 
 |  |  |       result := result + MappingCustomerOrder::GetNewSupplyByMonth( productNo, macroPlan, yearNo, i ); | 
 |  |  |     } | 
 |  |  |     return result; | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Attribute YearNo | 
 |  |  | { | 
 |  |  |   #keys: '3[414384.0.874271421][414384.0.874271420][414384.0.874271422]' | 
 |  |  |   ValueType: Number | 
 |  |  | } | 
 
 |  |  | 
 |  |  |     value := sum( parent,  | 
 |  |  |                   MappingCapacityAndSaleBudge,  | 
 |  |  |                   item,  | 
 |  |  |                   productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                   item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                   field.GetReal( item ) ); | 
 |  |  |     return value; | 
 |  |  |   *] | 
 
 |  |  | 
 |  |  |     result := sum( parent,  | 
 |  |  |                    MappingCapacityAndSaleBudge,  | 
 |  |  |                    item,  | 
 |  |  |                    productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                    item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                    item.GetSaleAmountInYear() ); | 
 |  |  |     return result; | 
 |  |  |   *] | 
 
 |  |  | 
 |  |  |     result := sum( parent,  | 
 |  |  |                    MappingCapacityAndSaleBudge,  | 
 |  |  |                    item,  | 
 |  |  |                    productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                    item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                    item.GetCapacityInSheetInHalfYear( halfNo ) ); | 
 |  |  |     return result; | 
 |  |  |   *] | 
 
 |  |  | 
 |  |  |     value := sum( parent,  | 
 |  |  |                   MappingCapacityAndSaleBudge,  | 
 |  |  |                   item,  | 
 |  |  |                   productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                   item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                   field.GetReal( item ) ); | 
 |  |  |     return value; | 
 |  |  |   *] | 
 
 |  |  | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-18-2023 (created) | 
 |  |  |      | 
 |  |  |     list := selectset( parent,  | 
 |  |  |                        MappingCapacityAndSaleBudge,  | 
 |  |  |                        item,  | 
 |  |  |                        productNo.Find( item.ProductCode() ) > -1 ); | 
 |  |  |     result := sum( parent,  | 
 |  |  |                    MappingCapacityAndSaleBudge,  | 
 |  |  |                    item,  | 
 |  |  |                    productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                    item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                    item.GetCapacityInSheetInSeason( seasonNo ) ); | 
 |  |  |     return result; | 
 |  |  |   *] | 
 
 |  |  | 
 |  |  |     result := sum( parent,  | 
 |  |  |                    MappingCapacityAndSaleBudge,  | 
 |  |  |                    item,  | 
 |  |  |                    productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                    item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1, | 
 |  |  |                    item.GetCapacityInSheetInYear() ); | 
 |  |  |     return result; | 
 |  |  |   *] | 
 
 |  |  | 
 |  |  |     tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 ); | 
 |  |  |      | 
 |  |  |     traverse ( toExportList, Elements, toExport ) { | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductID(), "ç©æç¼ç " ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductName(), "ç©æåç§°" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsPanelMaterial(), "颿¿ç©ææ è¯" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.ProduceRequiredDate() = Date::MinDate(), "", dateToString.Convert( toExport.ProduceRequiredDate() ) ), "äº¤è´§æ¥æ" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.PRSuggestionDate() = Date::MinDate(), "", dateToString.Convert( toExport.PRSuggestionDate() ) ), "PRå»ºè®®æ¥æ" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.Quantity(), "交货æ°é" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MRPCalverNo(), "MRP计ç®çæ¬å·" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "ä¸å¡ç±»å" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrganCode(), "ç»ç»ç¼ç " ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsLongLeadItem(), "æ¯å¦é¿å¨æ" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsGenericMaterial(), "æ¯å¦ä¸ç¨æ" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MaterialMRPType(), "ç©æè®¡åçç¥" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.LeadTime(), "æåæ" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderCode(), "ä¾åºå代ç " ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderName(), "ä¾åºååç§°" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.StockingPointID(), "æ¶è´§åºåç¹" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.UnitOfMeasure(), "计éåä½" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendStatus(), "PRæ°æ®åéç¶æ" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendTimeString(), "åéæ¶é´" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendBy(), "åé人" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductID(), "ç©æç¼ç " ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductName(), "ç©æåç§°" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsPanelMaterial(), "颿¿ç©ææ è¯" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.ProduceRequiredDate() = Date::MinDate(), "", dateToString.Convert( toExport.ProduceRequiredDate() ) ), "äº¤è´§æ¥æ" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.PRSuggestionDate() = Date::MinDate(), "", dateToString.Convert( toExport.PRSuggestionDate() ) ), "PRå»ºè®®æ¥æ" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.Quantity(), "交货æ°é" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MRPCalverNo(), "MRP计ç®çæ¬å·" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "ä¸å¡ç±»å" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrganCode(), "ç»ç»ç¼ç " ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsLongLeadItem(), "æ¯å¦é¿å¨æ" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsGenericMaterial(), "æ¯å¦ä¸ç¨æ" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MaterialMRPType(), "ç©æè®¡åçç¥" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.LeadTime(), "æåæ" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderCode(), "ä¾åºå代ç " ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderName(), "ä¾åºååç§°" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.StockingPointID(), "æ¶è´§åºåç¹" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.UnitOfMeasure(), "计éåä½" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendStatus(), "PRæ°æ®åéç¶æ" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendTimeString(), "åéæ¶é´" ); | 
 |  |  |       PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendBy(), "åé人" ); | 
 |  |  |     } | 
 |  |  |      | 
 |  |  |     xmlDOMSerializer := xmlDOMImplementation.CreateSerializer(); | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | 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 ); | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   *] | 
 |  |  | } | 
 
 |  |  | 
 |  |  |     tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 ); | 
 |  |  |      | 
 |  |  |     traverse ( toExportList, Elements, toExport ) { | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductID(), "é¶ä»¶å·" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductName(), "é¶ä»¶åç§°" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.ProduceRequiredDate() = Date::MinDate(), "", dateToString.Convert( toExport.ProduceRequiredDate() ) ), "äº¤è´§æ¥æ" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.Quantity(), "éæ±æ°é" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MRPCalverNo(), "MRP计ç®çæ¬å·" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "äºä¸é¨" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrganCode(), "ç»ç»ç¼ç " ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderCode(), "ä¾åºå代ç " ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderName(), "ä¾åºååç§°" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.StockingPointID(), "æ¶è´§åºåç¹" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.UnitOfMeasure(), "计éåä½" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendStatus(), "PRæ°æ®åéç¶æ" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendTimeString(), "åéæ¶é´" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReleaseBy(), "åé人" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveTimeString(), "ERPæ¥æ¶æ¶é´" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveStatus(), "ERPæ¥æ¶ç¶æ" ); | 
 |  |  |       MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveError(), "éè¯¯ä¿¡æ¯æè¿°" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductID(), "é¶ä»¶å·" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductName(), "é¶ä»¶åç§°" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.ProduceRequiredDate() = Date::MinDate(), "", dateToString.Convert( toExport.ProduceRequiredDate() ) ), "äº¤è´§æ¥æ" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.Quantity(), "éæ±æ°é" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MRPCalverNo(), "MRP计ç®çæ¬å·" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "äºä¸é¨" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrganCode(), "ç»ç»ç¼ç " ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderCode(), "ä¾åºå代ç " ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderName(), "ä¾åºååç§°" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.StockingPointID(), "æ¶è´§åºåç¹" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.UnitOfMeasure(), "计éåä½" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendStatus(), "PRæ°æ®åéç¶æ" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendTimeString(), "åéæ¶é´" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReleaseBy(), "åé人" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveTimeString(), "ERPæ¥æ¶æ¶é´" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveStatus(), "ERPæ¥æ¶ç¶æ" ); | 
 |  |  |       PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveError(), "éè¯¯ä¿¡æ¯æè¿°" ); | 
 |  |  |     } | 
 |  |  |      | 
 |  |  |     xmlDOMSerializer := xmlDOMImplementation.CreateSerializer(); | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | 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 ); | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   *] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: #root | 
 |  |  | Method CapacityAndSaleBudgeChart ( | 
 |  |  |   MacroPlans macroPlans, | 
 |  |  |   Boolean isCapacity, | 
 |  |  |   String groupBy, | 
 |  |  |   String byBusinessTypeOrByOrgCode, | 
 |  |  |   CapacityAndSaleBudgeFilterBusinessTypes businessTypes, | 
 |  |  |   CapacityAndSaleBudgeFilterPlaceOfProductionOfArrays placeOfProductionOfArrays, | 
 |  |  |   CapacityAndSaleBudgeFilterYears years, | 
 |  |  |   CapacityAndSaleBudgeFilterMonths months, | 
 |  |  |   MPSync mpSync, | 
 |  |  |   GlobalOTDTable otdTable, | 
 |  |  |   MacroPlan mappingParent | 
 |  |  | ) | 
 |  |  | { | 
 |  |  |   Description: 'æå
¥åå¤çæ°æ®ï¼äº§çéè¦çCapacityAndSaleBudgeChartElement' | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-19-2023 (created) | 
 |  |  |     // true, false | 
 |  |  |     info( isCapacity ); | 
 |  |  |     // æ;å£åº¦;åå¹´;å¹´ | 
 |  |  |     info( groupBy ); | 
 |  |  |     // é¢æ¿åºå°;äºä¸é¨ | 
 |  |  |     info( byBusinessTypeOrByOrgCode ); | 
 |  |  |     traverse( businessTypes, Elements, businessType ) { | 
 |  |  |       info( "businessType : " + businessType.BusinessType() ); | 
 |  |  |     } | 
 |  |  |     traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) { | 
 |  |  |       info( "placeOfProductionOfArray : " + placeOfProductionOfArray.PlaceOfProductionOfArray() ); | 
 |  |  |     } | 
 |  |  |     traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |       info( "macroPlan : " + macroPlan.ScenarioName() );   | 
 |  |  |     } | 
 |  |  |     // å¹´ä»½ä¸éæ¶å
¨é | 
 |  |  |     if( years.Size() = 0 ) { | 
 |  |  |       years := selectsortedset( this, CapacityAndSaleBudgeFilterYear, item, true, item.YearNo() ); | 
 |  |  |     } | 
 |  |  |     traverse( years, Elements, year ) { | 
 |  |  |       info( "yearNo : " + [String]year.YearNo() ); | 
 |  |  |     } | 
 |  |  |     // æä»½ä¸éæ¶å
¨é | 
 |  |  |     if( months.Size() = 0 ) { | 
 |  |  |       months := selectsortedset( this, CapacityAndSaleBudgeFilterMonth, item, true, item.MonthNo() ); | 
 |  |  |     } | 
 |  |  |     traverse( months, Elements, month ) { | 
 |  |  |       info( "monthNo : " + [String]month.MonthNo() ); | 
 |  |  |     } | 
 |  |  |      | 
 |  |  |     // ====æ¸
çæ§æ°æ®==== | 
 |  |  |     this.CapacityAndSaleBudgeChartRow( relflush ); | 
 |  |  |     this.CapacityAndSaleBudgeChartElement( relflush ); | 
 |  |  |      | 
 |  |  |     // ====æé¢æ¿åºå°åäºä¸é¨å¯¹äº§åè¿è¡çéåç»==== | 
 |  |  |     historyData := selectset( mpSync, MappingCapacityAndSaleBudge, item, true ); | 
 |  |  |     if( businessTypes.Size() > 0 ) { | 
 |  |  |       businessTypeStrings := selectuniquevalues( businessTypes, Elements, item, true, item.BusinessType() ); | 
 |  |  |       historyData := selectset( historyData, Elements, item, businessTypeStrings.Find( item.BusinessType() ) > -1 ); | 
 |  |  |     } | 
 |  |  |     if( placeOfProductionOfArrays.Size() > 0 ) { | 
 |  |  |       placeOfProductionOfArrayStrings := selectuniquevalues( placeOfProductionOfArrays, Elements, item, true, item.PlaceOfProductionOfArray() ); | 
 |  |  |       historyData := selectset( historyData, Elements, item, placeOfProductionOfArrayStrings.Find( item.PlaceOfProductionOfArray() ) > -1 ); | 
 |  |  |     } | 
 |  |  |     //info( "historyData : " + [String]historyData.Size() ); | 
 |  |  |     traverse( historyData, Elements, item ) { | 
 |  |  |       row := CapacityAndSaleBudgeChartRow::CreateIfNotExist( this, item.BusinessType(), item.PlaceOfProductionOfArray() ); | 
 |  |  |       // è®°å½æ¯è¡å
å«åªäºproduct | 
 |  |  |       CapacityAndSaleBudgeChartRowProduct::CreateIfNotExist( row, item.ProductCode() ); | 
 |  |  |     } | 
 |  |  |     rows := selectset( this, CapacityAndSaleBudgeChartRow, item, true ); | 
 |  |  |     //info( "rows : " + [String]rows.Size() ); | 
 |  |  |     placeOfProductionOfArrayList := selectuniquevalues( historyData, Elements, item, item.PlaceOfProductionOfArray() ); | 
 |  |  |     businessTypeList := selectuniquevalues( historyData, Elements, item, item.BusinessType() ); | 
 |  |  |     // çæå¾è¡¨å
ç´  | 
 |  |  |     traverse( years, Elements, year ) { | 
 |  |  |       info( "process year start : " + [String]year.YearNo() ); | 
 |  |  |       if( byBusinessTypeOrByOrgCode = "颿¿åºå°" and groupBy = "å¹´" ) { | 
 |  |  |         // ç®æ  | 
 |  |  |         traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) { | 
 |  |  |           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray ); | 
 |  |  |           this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-ç®æ ", | 
 |  |  |                                                  BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                  Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                      MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, year.YearNo() ), | 
 |  |  |                                                                      MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, year.YearNo() ) ) | 
 |  |  |                                                  );   | 
 |  |  |           // S&OP | 
 |  |  |           traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + macroPlan.ScenarioName(), | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() ), | 
 |  |  |                                                                        MappingCustomerOrder::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() )  | 
 |  |  |                                                                        ) | 
 |  |  |                                                    );  | 
 |  |  |           }                     | 
 |  |  |         } | 
 |  |  |       }  | 
 |  |  |       if ( byBusinessTypeOrByOrgCode = "颿¿åºå°" and groupBy = "åå¹´" ) { | 
 |  |  |         for( halfNo := 1; halfNo <= 2; halfNo := halfNo + 1 ) { | 
 |  |  |           traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) { | 
 |  |  |             productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray ); | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + ifexpr( halfNo = 1, "ä¸", "ä¸" ) + "åå¹´-ç®æ ", | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ), | 
 |  |  |                                                                        MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ) ) | 
 |  |  |                                                    );   | 
 |  |  |             // S&OP | 
 |  |  |             traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |               this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                      TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + ifexpr( halfNo = 1, "ä¸", "ä¸" ) + "åå¹´-" + macroPlan.ScenarioName(), | 
 |  |  |                                                      BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                      Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                          Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo ), | 
 |  |  |                                                                          MappingCustomerOrder::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo )  | 
 |  |  |                                                                          ) | 
 |  |  |                                                      );  | 
 |  |  |             }                     | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |       if ( byBusinessTypeOrByOrgCode = "颿¿åºå°" and groupBy = "å£åº¦" ) { | 
 |  |  |         for( seasonNo := 1; seasonNo <= 4; seasonNo := seasonNo + 1 ) { | 
 |  |  |           traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) { | 
 |  |  |             productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray ); | 
 |  |  |       //      info( "productCodeList : " + [String]productCodeList.Size() ); | 
 |  |  |       //      info( "MappingCapacityAndSaleBudge::GetSheetBySeason : " + [String]MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) ); | 
 |  |  |       //      info( "seasonNo : " + [String]seasonNo ); | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + [String]seasonNo + "å£åº¦-ç®æ ", | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ), | 
 |  |  |                                                                        MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ) ) | 
 |  |  |                                                    );   | 
 |  |  |       //      info( "productCodeList : " + [String]productCodeList.Size() ); | 
 |  |  |             // S&OP | 
 |  |  |             traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |               this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                      TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + [String]seasonNo + "å£åº¦-" + macroPlan.ScenarioName(), | 
 |  |  |                                                      BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                      Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                          Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo ), | 
 |  |  |                                                                          MappingCustomerOrder::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo )  | 
 |  |  |                                                                          ) | 
 |  |  |                                                      );  | 
 |  |  |             }                     | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |       if ( byBusinessTypeOrByOrgCode = "颿¿åºå°" and groupBy = "æ" ) { | 
 |  |  |         traverse( months, Elements, month ) { | 
 |  |  |           info( "process month start : " + [String]month.MonthNo() ); | 
 |  |  |           monthNoString := ifexpr( month.MonthNo() <= 9, "0" + [String]month.MonthNo(), [String]month.MonthNo() ); | 
 |  |  |           traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) { | 
 |  |  |             productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray ); | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + monthNoString + "æ-ç®æ ", | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ), | 
 |  |  |                                                                        MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ) ) | 
 |  |  |                                                    );   | 
 |  |  |             // S&OP | 
 |  |  |             traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |               this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                      TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + monthNoString + "æ-" + macroPlan.ScenarioName(), | 
 |  |  |                                                      BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                      Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                          Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() ), | 
 |  |  |                                                                          MappingCustomerOrder::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() )  | 
 |  |  |                                                                          ) | 
 |  |  |                                                      );  | 
 |  |  |             } | 
 |  |  |           } | 
 |  |  |           info( "process month end : " + [String]month.MonthNo() ); | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |       if( byBusinessTypeOrByOrgCode = "äºä¸é¨" and groupBy = "å¹´" ) { | 
 |  |  |         // ç®æ  | 
 |  |  |         traverse( businessTypeList, Elements, businessType ) { | 
 |  |  |           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType ); | 
 |  |  |           this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-ç®æ ", | 
 |  |  |                                                  BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                  Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                      MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, year.YearNo() ), | 
 |  |  |                                                                      MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, year.YearNo() ) ) | 
 |  |  |                                                  );   | 
 |  |  |           // S&OP | 
 |  |  |           traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + macroPlan.ScenarioName(), | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() ), | 
 |  |  |                                                                        MappingCustomerOrder::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() )  | 
 |  |  |                                                                        ) | 
 |  |  |                                                    );  | 
 |  |  |           }                     | 
 |  |  |         } | 
 |  |  |       }  | 
 |  |  |       if ( byBusinessTypeOrByOrgCode = "äºä¸é¨" and groupBy = "åå¹´" ) { | 
 |  |  |         for( halfNo := 1; halfNo <= 2; halfNo := halfNo + 1 ) { | 
 |  |  |           traverse( businessTypeList, Elements, businessType ) { | 
 |  |  |             productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType ); | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + ifexpr( halfNo = 1, "ä¸", "ä¸" ) + "åå¹´-ç®æ ", | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ), | 
 |  |  |                                                                        MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ) ) | 
 |  |  |                                                    );   | 
 |  |  |             // S&OP | 
 |  |  |             traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |               this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                      TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + ifexpr( halfNo = 1, "ä¸", "ä¸" ) + "åå¹´-" + macroPlan.ScenarioName(), | 
 |  |  |                                                      BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                      Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                          Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo ), | 
 |  |  |                                                                          MappingCustomerOrder::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo )  | 
 |  |  |                                                                          ) | 
 |  |  |                                                      );  | 
 |  |  |             }                     | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |       if ( byBusinessTypeOrByOrgCode = "äºä¸é¨" and groupBy = "å£åº¦" ) { | 
 |  |  |         for( seasonNo := 1; seasonNo <= 4; seasonNo := seasonNo + 1 ) { | 
 |  |  |           info( "process season start : " + [String]seasonNo ); | 
 |  |  |           traverse( businessTypeList, Elements, businessType ) { | 
 |  |  |             productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType ); | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + [String]seasonNo + "å£åº¦-ç®æ ", | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ), | 
 |  |  |                                                                        MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ) ) | 
 |  |  |                                                    );   | 
 |  |  |             // S&OP | 
 |  |  |             traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |               this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                      TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + [String]seasonNo + "å£åº¦-" + macroPlan.ScenarioName(), | 
 |  |  |                                                      BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                      Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                          Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo ), | 
 |  |  |                                                                          MappingCustomerOrder::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo )  | 
 |  |  |                                                                          ) | 
 |  |  |                                                      );  | 
 |  |  |             }                     | 
 |  |  |           } | 
 |  |  |           info( "process season end : " + [String]seasonNo ); | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |       if ( byBusinessTypeOrByOrgCode = "äºä¸é¨" and groupBy = "æ" ) { | 
 |  |  |         traverse( months, Elements, month ) { | 
 |  |  |           info( "process month start : " + [String]month.MonthNo() ); | 
 |  |  |           monthNoString := ifexpr( month.MonthNo() <= 9, "0" + [String]month.MonthNo(), [String]month.MonthNo() ); | 
 |  |  |           traverse( businessTypeList, Elements, businessType ) { | 
 |  |  |             productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType ); | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + monthNoString + "æ-ç®æ ", | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ), | 
 |  |  |                                                                        MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ) ) | 
 |  |  |                                                    );   | 
 |  |  |             // S&OP | 
 |  |  |             traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |               this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                      TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + monthNoString + "æ-" + macroPlan.ScenarioName(), | 
 |  |  |                                                      BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                      Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                          Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() ), | 
 |  |  |                                                                          MappingCustomerOrder::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() )  | 
 |  |  |                                                                          ) | 
 |  |  |                                                      );  | 
 |  |  |             }             | 
 |  |  |           } | 
 |  |  |           info( "process month end : " + [String]month.MonthNo() ); | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |       info( "process year end : " + [String]year.YearNo() ) | 
 |  |  |     } | 
 |  |  |     //info( "CapacityAndSaleBudgeChartElement : " + [String]selectset( this, CapacityAndSaleBudgeChartElement, item, true ).Size() ); | 
 |  |  |     //traverse( this, CapacityAndSaleBudgeChartRow, row ) { | 
 |  |  |     //  info( "==â==" ); | 
 |  |  |     //  info( row.BusinessType() ); | 
 |  |  |     //  info( row.PlaceOfProductionOfArray() ); | 
 |  |  |     //  elements := selectset( row, CapacityAndSaleBudgeChartRowProduct, cell, true ); | 
 |  |  |     //  info( elements.Size() ); | 
 |  |  |     //  info( row.GetProductCodes().Concatenate( " | " ) ); | 
 |  |  |     //  info( "==â==" ); | 
 |  |  |     //} | 
 |  |  |   *] | 
 |  |  | } | 
 
 |  |  | 
 |  |  |   MacroPlan mappingParent | 
 |  |  | ) | 
 |  |  | { | 
 |  |  |   Description: 'æå
¥åå¤çæ°æ®ï¼äº§çéè¦çCapacityAndSaleBudgeChartElement' | 
 |  |  |   Description: | 
 |  |  |   [* | 
 |  |  |     æå
¥åå¤çæ°æ®ï¼äº§çéè¦çCapacityAndSaleBudgeChartElement | 
 |  |  |     ï¼ï¼ï¼ï¼åºå¼ï¼ï¼ï¼ï¼ | 
 |  |  |   *] | 
 |  |  |   TextBody: | 
 |  |  |   [* | 
 |  |  |     // yypsybs Sep-19-2023 (created) | 
 |  |  | 
 |  |  |         productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray ); | 
 |  |  |         this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                TimeStringAndScenarioName := [String]year + "å¹´-ç®æ ", | 
 |  |  |                                                BusinessTypeOrOrgCode := placeOfProductionOfArray,  | 
 |  |  |                                                BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                    MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ), | 
 |  |  |                                                                    MappingForecast::GetQuantityByYear( productCodeList, mappingParent, [Number]year ) ) | 
 |  |  |                                                                    // todo QID 23 | 
 |  |  |                                                                    MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, [Number]year ) ) | 
 |  |  |                                                );   | 
 |  |  |         // S&OP | 
 |  |  |         traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |           this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year + "å¹´-" + macroPlan.ScenarioName(), | 
 |  |  |                                                  BusinessTypeOrOrgCode := placeOfProductionOfArray,  | 
 |  |  |                                                  BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                  Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                      Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ), | 
 |  |  |                                                                      // todo | 
 |  |  |                                                                      0.0 ) | 
 |  |  |                                                  );  | 
 |  |  |         }                     | 
 |  |  | 
 |  |  |           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray ); | 
 |  |  |           this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year + "å¹´-" + ifexpr( halfNo = 1, "ä¸", "ä¸" ) + "åå¹´-ç®æ ", | 
 |  |  |                                                  BusinessTypeOrOrgCode := placeOfProductionOfArray,  | 
 |  |  |                                                  BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                  Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                      MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ), | 
 |  |  |                                                                      MappingForecast::GetQuantityByHalfYear( productCodeList, mappingParent, [Number]year, halfNo ) ) | 
 |  |  |                                                                      MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ) ) | 
 |  |  |                                                  );   | 
 |  |  |           // S&OP | 
 |  |  |           traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year + "å¹´-" + ifexpr( halfNo = 1, "ä¸", "ä¸" ) + "åå¹´-" + macroPlan.ScenarioName(), | 
 |  |  |                                                    BusinessTypeOrOrgCode := placeOfProductionOfArray,  | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ), | 
 |  |  |                                                                        0.0 ) | 
 |  |  | 
 |  |  |     //      info( "seasonNo : " + [String]seasonNo ); | 
 |  |  |           this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]seasonNo + "å£åº¦-ç®æ ", | 
 |  |  |                                                  BusinessTypeOrOrgCode := placeOfProductionOfArray,  | 
 |  |  |                                                  BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                  Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                      MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ), | 
 |  |  |                                                                      MappingForecast::GetQuantityBySeason( productCodeList, mappingParent, [Number]year, seasonNo ) ) | 
 |  |  |                                                                      MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) ) | 
 |  |  |                                                  );   | 
 |  |  |     //      info( "productCodeList : " + [String]productCodeList.Size() ); | 
 |  |  |           // S&OP | 
 |  |  |           traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]seasonNo + "å£åº¦-" + macroPlan.ScenarioName(), | 
 |  |  |                                                    BusinessTypeOrOrgCode := placeOfProductionOfArray,  | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ), | 
 |  |  |                                                                        0.0 ) | 
 |  |  | 
 |  |  |     } | 
 |  |  |     if ( byBusinessTypeOrByOrgCode = "颿¿åºå°" and groupBy = "æ" ) { | 
 |  |  |       for( monthNo := 1; monthNo <= 12; monthNo := monthNo + 1 ) { | 
 |  |  |         monthNoString := ifexpr( monthNo <= 9, "0" + [String]monthNo, [String]monthNo ); | 
 |  |  |         traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) { | 
 |  |  |           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray ); | 
 |  |  |           this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]monthNo + "æ-ç®æ ", | 
 |  |  |                                                  BusinessTypeOrOrgCode := placeOfProductionOfArray,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year + "å¹´-第" + monthNoString + "æ-ç®æ ", | 
 |  |  |                                                  BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                  Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                      MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ), | 
 |  |  |                                                                      MappingForecast::GetQuantityByMonth( productCodeList, mappingParent, [Number]year, monthNo ) ) | 
 |  |  |                                                                      MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ) ) | 
 |  |  |                                                  );   | 
 |  |  |           // S&OP | 
 |  |  |           traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]monthNo + "æ-" + macroPlan.ScenarioName(), | 
 |  |  |                                                    BusinessTypeOrOrgCode := placeOfProductionOfArray,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year + "å¹´-第" + monthNoString + "æ-" + macroPlan.ScenarioName(), | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ), | 
 |  |  |                                                                        0.0 ) | 
 |  |  | 
 |  |  |         productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType ); | 
 |  |  |         this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                TimeStringAndScenarioName := [String]year + "å¹´-ç®æ ", | 
 |  |  |                                                BusinessTypeOrOrgCode := businessType,  | 
 |  |  |                                                BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                    MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ), | 
 |  |  |                                                                    MappingForecast::GetQuantityByYear( productCodeList, mappingParent, [Number]year ) ) | 
 |  |  |                                                                    MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, [Number]year ) ) | 
 |  |  |                                                );   | 
 |  |  |         // S&OP | 
 |  |  |         traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |           this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year + "å¹´-" + macroPlan.ScenarioName(), | 
 |  |  |                                                  BusinessTypeOrOrgCode := businessType,  | 
 |  |  |                                                  BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                  Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                      Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ), | 
 |  |  |                                                                      0.0 ) | 
 |  |  | 
 |  |  |           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType ); | 
 |  |  |           this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year + "å¹´-" + ifexpr( halfNo = 1, "ä¸", "ä¸" ) + "åå¹´-ç®æ ", | 
 |  |  |                                                  BusinessTypeOrOrgCode := businessType,  | 
 |  |  |                                                  BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                  Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                      MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ), | 
 |  |  |                                                                      MappingForecast::GetQuantityByHalfYear( productCodeList, mappingParent, [Number]year, halfNo ) ) | 
 |  |  |                                                                      MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ) ) | 
 |  |  |                                                  );   | 
 |  |  |           // S&OP | 
 |  |  |           traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year + "å¹´-" + ifexpr( halfNo = 1, "ä¸", "ä¸" ) + "åå¹´-" + macroPlan.ScenarioName(), | 
 |  |  |                                                    BusinessTypeOrOrgCode := businessType,  | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ), | 
 |  |  |                                                                        0.0 ) | 
 |  |  | 
 |  |  |           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType ); | 
 |  |  |           this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]seasonNo + "å£åº¦-ç®æ ", | 
 |  |  |                                                  BusinessTypeOrOrgCode := businessType,  | 
 |  |  |                                                  BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                  Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                      MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ), | 
 |  |  |                                                                      MappingForecast::GetQuantityBySeason( productCodeList, mappingParent, [Number]year, seasonNo ) ) | 
 |  |  |                                                                      MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) ) | 
 |  |  |                                                  );   | 
 |  |  |           // S&OP | 
 |  |  |           traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]seasonNo + "å£åº¦-" + macroPlan.ScenarioName(), | 
 |  |  |                                                    BusinessTypeOrOrgCode := businessType,  | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ), | 
 |  |  |                                                                        0.0 ) | 
 |  |  | 
 |  |  |     } | 
 |  |  |     if ( byBusinessTypeOrByOrgCode = "äºä¸é¨" and groupBy = "æ" ) { | 
 |  |  |       for( monthNo := 1; monthNo <= 12; monthNo := monthNo + 1 ) { | 
 |  |  |         monthNoString := ifexpr( monthNo <= 9, "0" + [String]monthNo, [String]monthNo ); | 
 |  |  |         traverse( businessTypeList, Elements, businessType ) { | 
 |  |  |           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType ); | 
 |  |  |           this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]monthNo + "æ-ç®æ ", | 
 |  |  |                                                  BusinessTypeOrOrgCode := businessType,  | 
 |  |  |                                                  TimeStringAndScenarioName := [String]year + "å¹´-第" + monthNoString + "æ-ç®æ ", | 
 |  |  |                                                  BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                  Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                      MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ), | 
 |  |  |                                                                      MappingForecast::GetQuantityByMonth( productCodeList, mappingParent, [Number]year, monthNo ) ) | 
 |  |  |                                                                      MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ) ) | 
 |  |  |                                                  );   | 
 |  |  |           // S&OP | 
 |  |  |           traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |             this.CapacityAndSaleBudgeChartElement( relnew,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]monthNo + "æ-" + macroPlan.ScenarioName(), | 
 |  |  |                                                    BusinessTypeOrOrgCode := businessType,  | 
 |  |  |                                                    TimeStringAndScenarioName := [String]year + "å¹´-第" + monthNoString + "æ-" + macroPlan.ScenarioName(), | 
 |  |  |                                                    BusinessTypeOrPlaceOfProductionOfArray := businessType,  | 
 |  |  |                                                    Quantity := ifexpr( isCapacity, | 
 |  |  |                                                                        Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ), | 
 |  |  |                                                                        0.0 ) | 
 
 |  |  | 
 |  |  |         // è®°å½æ¯è¡å
å«åªäºproduct | 
 |  |  |         CapacityAndSaleBudgeCompareItemRowProduct::CreateIfNotExist( row, productCode ); | 
 |  |  |       } else { | 
 |  |  |     //    info( "111111" ); | 
 |  |  |         info( "no boms for product : " + productCode ); | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |     info( "CapacityAndSaleBudgeCompareItemRow : " + [String]selectset( this, CapacityAndSaleBudgeCompareItemRow, item, true ).Size() ); | 
 |  |  | 
 |  |  |     // æ ¼å¼ï¼ é¢æ¿åé
é - å¹´ - æï¼1-12 & totalï¼ - å¹´åº¦é¢ç®/scenarioName | 
 |  |  |     info( "dealing é¢æ¿åé
é" ) | 
 |  |  |     if( CapacityAndSaleBudgeFilterItem::Contains( items, "颿¿åé
é" ) ) { | 
 |  |  |       traverse( years, Elements, year ) { | 
 |  |  |       // å岿°æ® | 
 |  |  |       traverse( months, Elements, month ) { | 
 |  |  |         columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "颿¿åé
é-" + [String]month.MonthNo() + "æ-年度é¢ç®" ); | 
 |  |  |           columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "颿¿åé
é-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "æ-年度é¢ç®" ); | 
 |  |  |         traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { | 
 |  |  |           cellReal := MappingCapacityAndSaleBudge::GetSheetByMonth( row.GetProductCodes(), mpSync, DateTime::Now().Year(), month.MonthNo() ); | 
 |  |  |     //      cellReal := Real::Random( 1.0, 999.0 ); | 
 |  |  |           cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal ); | 
 |  |  |           cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |       columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "颿¿åé
é-total-年度é¢ç®" ); | 
 |  |  |         columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "颿¿åé
é-" + [String]year.YearNo() + "å¹´-total-年度é¢ç®" ); | 
 |  |  |       traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { | 
 |  |  |         cellReal := MappingCapacityAndSaleBudge::GetSheetByYear( row.GetProductCodes(), mpSync, DateTime::Now().Year() ); | 
 |  |  |     //    cellReal := Real::Random( 1.0, 999.0 ); | 
 |  |  |           cellReal := MappingCapacityAndSaleBudge::GetSheetByYear( row.GetProductCodes(), mpSync, year.YearNo() ); | 
 |  |  |         cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal ); | 
 |  |  |         cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); | 
 |  |  |       } | 
 |  |  |       // S&OPæ°æ® | 
 |  |  |       traverse( years, Elements, year ) { | 
 |  |  |         traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |           traverse( months, Elements, month ) { | 
 |  |  |             columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this,  | 
 |  |  |                                                                                     "颿¿åé
é-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "æ-" + macroPlan.ScenarioName() ); | 
 |  |  |             traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { | 
 |  |  |               cellReal := Product_MP::GetNewSupplyByMonth( row.GetProductCodes(), macroPlan, year.YearNo(), month.MonthNo() ); | 
 |  |  |     //          cellReal := Real::Random( 1.0, 999.0 ); | 
 |  |  |               cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal ); | 
 |  |  |               cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); | 
 |  |  |             } | 
 |  |  | 
 |  |  |                                                                                  "颿¿åé
é-" + [String]year.YearNo() + "å¹´-total-" + macroPlan.ScenarioName() ); | 
 |  |  |           traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { | 
 |  |  |             cellReal := Product_MP::GetNewSupplyByYear( row.GetProductCodes(), macroPlan, year.YearNo() ); | 
 |  |  |     //        cellReal := Real::Random( 1.0, 999.0 ); | 
 |  |  |             cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal ); | 
 |  |  |             cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); | 
 |  |  |           } | 
 |  |  | 
 |  |  |     // å¹´åº¦éå®é¢ | 
 |  |  |     info( "dealing éå®é¢" ) | 
 |  |  |     if( CapacityAndSaleBudgeFilterItem::Contains( items, "éå®é¢" ) ) { | 
 |  |  |       traverse( years, Elements, year ) { | 
 |  |  |       // å岿°æ® | 
 |  |  |       traverse( months, Elements, month ) { | 
 |  |  |         columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对å¤éå®é¢-" + "-" + [String]month.MonthNo() + "æ-年度é¢ç®" ); | 
 |  |  |           columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对å¤éå®é¢-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "æ-年度é¢ç®" ); | 
 |  |  |         traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { | 
 |  |  |           cellReal := MappingCapacityAndSaleBudge::GetSaleByMonth( row.GetProductCodes(), mpSync, DateTime::Now().Year(), month.MonthNo() ); | 
 |  |  |     //      cellReal := Real::Random( 1.0, 999.0 ); | 
 |  |  |             cellReal := MappingCapacityAndSaleBudge::GetSaleByMonth( row.GetProductCodes(), mpSync, year.YearNo(), month.MonthNo() ); | 
 |  |  |           cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal ); | 
 |  |  |           cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |       columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对å¤éå®é¢-total-年度é¢ç®" ); | 
 |  |  |         columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对å¤éå®é¢-" + [String]year.YearNo() + "å¹´-年度é¢ç®" ); | 
 |  |  |       traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { | 
 |  |  |         cellReal := MappingCapacityAndSaleBudge::GetSaleByYear( row.GetProductCodes(), mpSync, DateTime::Now().Year() ); | 
 |  |  |     //    cellReal := Real::Random( 1.0, 999.0 ); | 
 |  |  |           cellReal := MappingCapacityAndSaleBudge::GetSaleByYear( row.GetProductCodes(), mpSync, year.YearNo() ); | 
 |  |  |         cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal ); | 
 |  |  |         cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); | 
 |  |  |       } | 
 |  |  |       // S&OPæ°æ® | 
 |  |  |       traverse( years, Elements, year ) { | 
 |  |  |         traverse( macroPlans, Elements, macroPlan ) { | 
 |  |  |           traverse( months, Elements, month ) { | 
 |  |  |             columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对å¤éå®é¢-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "æ-" + macroPlan.ScenarioName() ); | 
 |  |  |             traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { | 
 |  |  |               cellReal := MappingForecast::GetBalanceByMonth( row.GetProductCodes(), mappingParent, year.YearNo(), month.MonthNo() ); | 
 |  |  |               cellReal := MappingAnnualBudget::GetSaleByMonth( row.GetProductCodes(), mpSync, year.YearNo(), month.MonthNo() ); | 
 |  |  |               cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal ); | 
 |  |  |               cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); | 
 |  |  |             } | 
 |  |  |           } | 
 |  |  |           columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对å¤éå®é¢-" + [String]year.YearNo() + "å¹´-total-" + macroPlan.ScenarioName() ); | 
 |  |  |           traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { | 
 |  |  |             cellReal := MappingForecast::GetBalanceByYear( row.GetProductCodes(), mappingParent, year.YearNo() ); | 
 |  |  |             // QID 23 | 
 |  |  |             cellReal := MappingAnnualBudget::GetSaleByYear( row.GetProductCodes(), mpSync, year.YearNo() ); | 
 |  |  |             cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal ); | 
 |  |  |             cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); | 
 |  |  |           } | 
 |  |  | 
 |  |  |       columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "大张çå©é¢-年度é¢ç®" ); | 
 |  |  |       traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { | 
 |  |  |         // todo | 
 |  |  |         // QID 23 | 
 |  |  |         cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) ); | 
 |  |  |         cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); | 
 |  |  |       } | 
 |  |  | 
 |  |  |       columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产åçå©é¢-年度é¢ç®" ); | 
 |  |  |       traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { | 
 |  |  |         // todo | 
 |  |  |         // QID 23 | 
 |  |  |         cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) ); | 
 |  |  |         cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); | 
 |  |  |       } | 
 
 |  |  | 
 |  |  |         Taborder: 42 | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |     Component DataHolderCapacityAndSaleBudgeFilterBusinessType | 
 |  |  |     { | 
 |  |  |       #keys: '[414384.0.874472860]' | 
 |  |  |       BaseType: 'WebDataHolder' | 
 |  |  |       Databinding: 'structured[CapacityAndSaleBudgeFilterBusinessType]*' | 
 |  |  |       Properties: | 
 |  |  |       [ | 
 |  |  |         Taborder: 43 | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |     Component DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  |     { | 
 |  |  |       #keys: '[414384.0.874472866]' | 
 |  |  |       BaseType: 'WebDataHolder' | 
 |  |  |       Databinding: 'structured[CapacityAndSaleBudgeFilterPlaceOfProductionOfArray]*' | 
 |  |  |       Properties: | 
 |  |  |       [ | 
 |  |  |         Taborder: 44 | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |   ] | 
 |  |  | } | 
 
 |  |  | 
 |  |  |       Properties: | 
 |  |  |       [ | 
 |  |  |         DataType: 'MPSync' | 
 |  |  |         FixedFilter: 'object.YearNo() = Date::ActualDate().Year()' | 
 |  |  |         Source: 'MPSync' | 
 |  |  |         Taborder: 0 | 
 |  |  |         Transformation: 'MappingCapacityAndSaleBudge' | 
 |  |  | 
 |  |  |       ] | 
 |  |  |       Properties: | 
 |  |  |       [ | 
 |  |  |         Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Deleted","title":"Deleted","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Deleted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrgCode","title":"OrgCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrgCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayTechnology","title":"DisplayTechnology","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DisplayTechnology"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LineAndSpecification","title":"LineAndSpecification","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineAndSpecification"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductCode","title":"ProductCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfArray","title":"PlaceOfProductionOfArray","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfArray"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfEvaporation","title":"PlaceOfProductionOfEvaporation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfEvaporation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Resolution","title":"Resolution","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Resolution"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShippingForm","title":"ShippingForm","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShippingForm"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfCut","title":"NumberOfCut","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfCut"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityEquivalent","title":"CapacityEquivalent","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityEquivalent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfMask","title":"NumberOfMask","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfMask"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth1","title":"CapacityInPCSInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth2","title":"CapacityInPCSInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth3","title":"CapacityInPCSInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth4","title":"CapacityInPCSInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth5","title":"CapacityInPCSInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth6","title":"CapacityInPCSInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth7","title":"CapacityInPCSInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth8","title":"CapacityInPCSInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth9","title":"CapacityInPCSInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth10","title":"CapacityInPCSInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth11","title":"CapacityInPCSInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth12","title":"CapacityInPCSInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSTotal","title":"CapacityInPCSTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth1","title":"CapacityInSheetInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth2","title":"CapacityInSheetInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth3","title":"CapacityInSheetInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth4","title":"CapacityInSheetInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth5","title":"CapacityInSheetInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth6","title":"CapacityInSheetInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth7","title":"CapacityInSheetInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth8","title":"CapacityInSheetInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth9","title":"CapacityInSheetInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth10","title":"CapacityInSheetInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth11","title":"CapacityInSheetInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth12","title":"CapacityInSheetInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetTotal","title":"CapacityInSheetTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth1","title":"SaleAmountInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth2","title":"SaleAmountInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth3","title":"SaleAmountInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth5","title":"SaleAmountInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth4","title":"SaleAmountInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth6","title":"SaleAmountInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth7","title":"SaleAmountInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth8","title":"SaleAmountInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth9","title":"SaleAmountInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth10","title":"SaleAmountInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth11","title":"SaleAmountInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth12","title":"SaleAmountInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountTotal","title":"SaleAmountTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountTotal"}}]' | 
 |  |  |         Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Deleted","title":"Deleted","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Deleted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"YearNo","title":"YearNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"YearNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrgCode","title":"OrgCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrgCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayTechnology","title":"DisplayTechnology","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DisplayTechnology"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LineAndSpecification","title":"LineAndSpecification","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineAndSpecification"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductCode","title":"ProductCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfArray","title":"PlaceOfProductionOfArray","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfArray"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfEvaporation","title":"PlaceOfProductionOfEvaporation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfEvaporation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Resolution","title":"Resolution","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Resolution"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShippingForm","title":"ShippingForm","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShippingForm"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfCut","title":"NumberOfCut","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfCut"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityEquivalent","title":"CapacityEquivalent","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityEquivalent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfMask","title":"NumberOfMask","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfMask"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth1","title":"CapacityInPCSInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth2","title":"CapacityInPCSInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth3","title":"CapacityInPCSInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth4","title":"CapacityInPCSInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth5","title":"CapacityInPCSInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth6","title":"CapacityInPCSInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth7","title":"CapacityInPCSInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth8","title":"CapacityInPCSInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth9","title":"CapacityInPCSInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth10","title":"CapacityInPCSInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth11","title":"CapacityInPCSInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth12","title":"CapacityInPCSInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSTotal","title":"CapacityInPCSTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth1","title":"CapacityInSheetInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth2","title":"CapacityInSheetInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth3","title":"CapacityInSheetInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth4","title":"CapacityInSheetInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth5","title":"CapacityInSheetInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth6","title":"CapacityInSheetInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth7","title":"CapacityInSheetInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth8","title":"CapacityInSheetInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth9","title":"CapacityInSheetInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth10","title":"CapacityInSheetInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth11","title":"CapacityInSheetInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth12","title":"CapacityInSheetInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetTotal","title":"CapacityInSheetTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth1","title":"SaleAmountInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth2","title":"SaleAmountInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth3","title":"SaleAmountInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth5","title":"SaleAmountInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth4","title":"SaleAmountInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth6","title":"SaleAmountInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth7","title":"SaleAmountInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth8","title":"SaleAmountInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth9","title":"SaleAmountInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth10","title":"SaleAmountInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth11","title":"SaleAmountInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth12","title":"SaleAmountInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountTotal","title":"SaleAmountTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountTotal"}}]' | 
 |  |  |         ContextMenu: 'listContextMenuCapacityAndSaleBudge' | 
 |  |  |         SortCriteria: 'BusinessType;OrgCode;ProductCode' | 
 |  |  |         Taborder: 2 | 
 
 |  |  | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Title: '产éé¢ç®' | 
 |  |  |     Description: '年度产éé¢ç®' | 
 |  |  |     Title: '年度产éé¢ç®' | 
 |  |  |   ] | 
 |  |  | } | 
 
 |  |  | 
 |  |  |             } | 
 |  |  |             WebChartConfigGroup | 
 |  |  |             { | 
 |  |  |               Label: 'BusinessTypeOrOrgCode' | 
 |  |  |               Label: 'BusinessTypeOrPlaceOfProductionOfArray' | 
 |  |  |               SequenceNr: 1 | 
 |  |  |             } | 
 |  |  |           } | 
 |  |  | 
 |  |  |             } | 
 |  |  |             WebChartConfigGroup | 
 |  |  |             { | 
 |  |  |               Label: 'BusinessTypeOrOrgCode' | 
 |  |  |               Label: 'BusinessTypeOrPlaceOfProductionOfArray' | 
 |  |  |               SequenceNr: 1 | 
 |  |  |             } | 
 |  |  |             Default: 'Stacked bar' | 
 |  |  | 
 |  |  |             MergeStackedBars: true | 
 |  |  |           } | 
 |  |  |         *] | 
 |  |  |         Groups: 'TimeStringAndScenarioName,BusinessTypeOrOrgCode' | 
 |  |  |         Groups: 'TimeStringAndScenarioName,BusinessTypeOrPlaceOfProductionOfArray' | 
 |  |  |         Taborder: 0 | 
 |  |  |       ] | 
 |  |  |     } | 
 
 |  |  | 
 |  |  |                                                  CheckboxIsCapacity.Checked(), | 
 |  |  |                                                  DropDownTimeGroup.Text(), | 
 |  |  |                                                  DropDownByBusinessTypeOrByOrgCode.Text(), | 
 |  |  |                                                  DropDownBusinessTypes.Text(), | 
 |  |  |                                                  DropDownPlaceOfProductionOfArrays.Text(), | 
 |  |  |                                                  DropDownYears.Text(), | 
 |  |  |                                                  DataHolderCapacityAndSaleBudgeFilterBusinessType.Data(), | 
 |  |  |                                                  DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.Data(), | 
 |  |  |                                                  DataHolderCapacityAndSaleBudgeFilterYear.Data(), | 
 |  |  |                                                  DataHolderCapacityAndSaleBudgeFilterMonth.Data(), | 
 |  |  |                                                  MPSync,  | 
 |  |  |                                                  GlobalOTDTable,  | 
 |  |  |                                                  MacroPlan ); | 
 
 |  |  | 
 |  |  |   { | 
 |  |  |     Body: | 
 |  |  |     [* | 
 |  |  |       CapacityAndSaleBudgeChartElement::TestData( ScenarioManager ); | 
 |  |  |        | 
 |  |  |       DropDownBusinessTypes.Strings( MPSync.CapacityAndSaleBudgeBusinessTypeString() ); | 
 |  |  |       DropDownPlaceOfProductionOfArrays.Strings( MPSync.CapacityAndSaleBudgePlaceOfProductionOfArrayString() ); | 
 |  |  |       DropDownYears.Strings( MPSync::CapacityAndSaleBudgeYearsString() ); | 
 |  |  |       //CapacityAndSaleBudgeChartElement::TestData( ScenarioManager ); | 
 |  |  |     *] | 
 |  |  |     GroupServerCalls: false | 
 |  |  |   } | 
 
 |  |  | 
 |  |  |       [ | 
 |  |  |         Label: '年份' | 
 |  |  |         Taborder: 2 | 
 |  |  |         Visible: false | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |     Component DropDownBusinessTypes | 
 |  |  | 
 |  |  |         AllowEmpty: true | 
 |  |  |         Label: 'äºä¸é¨' | 
 |  |  |         Taborder: 3 | 
 |  |  |         Visible: false | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |     Component DropDownPlaceOfProductionOfArrays | 
 |  |  | 
 |  |  |         AllowEmpty: true | 
 |  |  |         Label: '颿¿åºå°' | 
 |  |  |         Taborder: 4 | 
 |  |  |         Visible: false | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |     Component CheckboxIsCapacity | 
 
 |  |  | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Title: '产éé¢ç®å¯¹æ¯' | 
 |  |  |     Description: '年度产éé¢ç®å¯¹æ¯' | 
 |  |  |     Title: '年度产éé¢ç®å¯¹æ¯' | 
 |  |  |   ] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | Component ListCapacityAndSaleBudgeFilterBusinessType | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704540]' | 
 |  |  |   BaseType: 'WebList' | 
 |  |  |   Children: | 
 |  |  |   [ | 
 |  |  |     Component DataExtractorCapacityAndSaleBudgeFilterBusinessType | 
 |  |  |     { | 
 |  |  |       #keys: '[414384.0.875704541]' | 
 |  |  |       BaseType: 'WebDataExtractor' | 
 |  |  |       Properties: | 
 |  |  |       [ | 
 |  |  |         DataType: 'MPSync' | 
 |  |  |         Source: 'MPSync' | 
 |  |  |         Taborder: 0 | 
 |  |  |         Transformation: 'CapacityAndSaleBudgeFilterBusinessType' | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |     #child: listActionBarPageCapacityAndSaleBudgeFilterBusinessType | 
 |  |  |     Component DataSetLevelCapacityAndSaleBudgeFilterBusinessType | 
 |  |  |     { | 
 |  |  |       #keys: '[414384.0.875704543]' | 
 |  |  |       BaseType: 'WebDataSetLevel' | 
 |  |  |       Children: | 
 |  |  |       [ | 
 |  |  |         #child: listContextMenuCapacityAndSaleBudgeFilterYear_1 | 
 |  |  |       ] | 
 |  |  |       Properties: | 
 |  |  |       [ | 
 |  |  |         Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}}]' | 
 |  |  |         ContextMenu: 'listContextMenuCapacityAndSaleBudgeFilterYear' | 
 |  |  |         SortCriteria: 'YearNo' | 
 |  |  |         Taborder: 2 | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     SelectionCheckboxes: true | 
 |  |  |     Taborder: 0 | 
 |  |  |   ] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | Component listActionBarPageCapacityAndSaleBudgeFilterBusinessType | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704542]' | 
 |  |  |   BaseType: 'listActionBarPage' | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Taborder: 1 | 
 |  |  |   ] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | Component listContextMenuCapacityAndSaleBudgeFilterYear id:listContextMenuCapacityAndSaleBudgeFilterYear_1 | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704544]' | 
 |  |  |   BaseType: 'listContextMenu' | 
 |  |  |   Children: | 
 |  |  |   [ | 
 |  |  |     Component MenuRefresh | 
 |  |  |     { | 
 |  |  |       #keys: '[414384.0.875575024]' | 
 |  |  |       BaseType: 'WebMenu' | 
 |  |  |       Properties: | 
 |  |  |       [ | 
 |  |  |         Description: 'Refresh' | 
 |  |  |         Image: 'ARROW_CIRCLE2' | 
 |  |  |         Taborder: 3 | 
 |  |  |         Title: 'Refresh' | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Taborder: 0 | 
 |  |  |   ] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: ListCapacityAndSaleBudgeFilterBusinessType | 
 |  |  | Response OnUserCheckedChanged () id:Response_ListCapacityAndSaleBudgeFilterBusinessType_OnUserCheckedChanged_670 | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704537]' | 
 |  |  |   CanBindMultiple: false | 
 |  |  |   DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged' | 
 |  |  |   GroupServerCalls: true | 
 |  |  |   QuillAction | 
 |  |  |   { | 
 |  |  |     Body: | 
 |  |  |     [* | 
 |  |  |       DataHolderCapacityAndSaleBudgeFilterBusinessType.Data().Flush(); | 
 |  |  |     *] | 
 |  |  |   } | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: ListCapacityAndSaleBudgeFilterBusinessType | 
 |  |  | Response OnUserCheckedChanged ( | 
 |  |  |   structured[CapacityAndSaleBudgeFilterBusinessType] checkeditems | 
 |  |  | ) id:Response_ListCapacityAndSaleBudgeFilterBusinessType_OnUserCheckedChanged | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704536]' | 
 |  |  |   CanBindMultiple: false | 
 |  |  |   DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged' | 
 |  |  |   GroupServerCalls: true | 
 |  |  |   QuillAction | 
 |  |  |   { | 
 |  |  |     Body: | 
 |  |  |     [* | 
 |  |  |       DataHolderCapacityAndSaleBudgeFilterBusinessType.Data( checkeditems.Copy() ); | 
 |  |  |     *] | 
 |  |  |   } | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: listContextMenuCapacityAndSaleBudgeFilterYear_1/MenuRefresh | 
 |  |  | Response OnClick () id:Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875575116]' | 
 |  |  |   CanBindMultiple: false | 
 |  |  |   DefinitionID: 'Responsedef_WebMenu_OnClick' | 
 |  |  |   GroupServerCalls: true | 
 |  |  |   QuillAction | 
 |  |  |   { | 
 |  |  |     Body: | 
 |  |  |     [* | 
 |  |  |       MPSync.RefreshCapacityAndSaleBudgeFilter(); | 
 |  |  |     *] | 
 |  |  |   } | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #root | 
 |  |  | #parent: MacroPlannerWebApp | 
 |  |  | OrphanComponent FormCapacityAndSaleBudgeFilterBusinessType | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704417]' | 
 |  |  |   BaseType: 'WebForm' | 
 |  |  |   Children: | 
 |  |  |   [ | 
 |  |  |     #child: ListCapacityAndSaleBudgeFilterBusinessType | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Description: '年度产éé¢ç®äºä¸é¨çé' | 
 |  |  |     Title: '年度产éé¢ç®äºä¸é¨çé' | 
 |  |  |   ] | 
 |  |  | } | 
 
 |  |  | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Title: '产éé¢ç®å¯¹æ¯é¡¹çé' | 
 |  |  |     Description: '年度产éé¢ç®å¯¹æ¯é¡¹' | 
 |  |  |     Title: '年度产éé¢ç®å¯¹æ¯é¡¹' | 
 |  |  |   ] | 
 |  |  | } | 
 
 |  |  | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Title: '产éé¢ç®å¯¹æ¯æä»½çé' | 
 |  |  |     Description: '年度产éé¢ç®æä»½çé' | 
 |  |  |     Title: '年度产éé¢ç®æä»½çé' | 
 |  |  |   ] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | Component ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704517]' | 
 |  |  |   BaseType: 'WebList' | 
 |  |  |   Children: | 
 |  |  |   [ | 
 |  |  |     Component DataExtractorCapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  |     { | 
 |  |  |       #keys: '[414384.0.875704518]' | 
 |  |  |       BaseType: 'WebDataExtractor' | 
 |  |  |       Properties: | 
 |  |  |       [ | 
 |  |  |         DataType: 'MPSync' | 
 |  |  |         Source: 'MPSync' | 
 |  |  |         Taborder: 0 | 
 |  |  |         Transformation: 'CapacityAndSaleBudgeFilterPlaceOfProductionOfArray' | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |     #child: listActionBarPageCapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  |     Component DataSetLevelCapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  |     { | 
 |  |  |       #keys: '[414384.0.875704520]' | 
 |  |  |       BaseType: 'WebDataSetLevel' | 
 |  |  |       Children: | 
 |  |  |       [ | 
 |  |  |         #child: listContextMenuCapacityAndSaleBudgeFilterYear_1 | 
 |  |  |       ] | 
 |  |  |       Properties: | 
 |  |  |       [ | 
 |  |  |         Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfArray","title":"PlaceOfProductionOfArray","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfArray"}}]' | 
 |  |  |         ContextMenu: 'listContextMenuCapacityAndSaleBudgeFilterYear' | 
 |  |  |         SortCriteria: 'YearNo' | 
 |  |  |         Taborder: 2 | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     SelectionCheckboxes: true | 
 |  |  |     Taborder: 0 | 
 |  |  |   ] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | Component listActionBarPageCapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704519]' | 
 |  |  |   BaseType: 'listActionBarPage' | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Taborder: 1 | 
 |  |  |   ] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | Component listContextMenuCapacityAndSaleBudgeFilterYear id:listContextMenuCapacityAndSaleBudgeFilterYear_1 | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704521]' | 
 |  |  |   BaseType: 'listContextMenu' | 
 |  |  |   Children: | 
 |  |  |   [ | 
 |  |  |     Component MenuRefresh id:MenuRefresh_332 | 
 |  |  |     { | 
 |  |  |       #keys: '[414384.0.875925487]' | 
 |  |  |       BaseType: 'WebMenu' | 
 |  |  |       Properties: | 
 |  |  |       [ | 
 |  |  |         Description: 'Refresh' | 
 |  |  |         Image: 'ARROW_CIRCLE2' | 
 |  |  |         Taborder: 3 | 
 |  |  |         Title: 'Refresh' | 
 |  |  |       ] | 
 |  |  |     } | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Taborder: 0 | 
 |  |  |   ] | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  | Response OnUserCheckedChanged () id:Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserCheckedChanged_171 | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704514]' | 
 |  |  |   CanBindMultiple: false | 
 |  |  |   DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged' | 
 |  |  |   GroupServerCalls: true | 
 |  |  |   QuillAction | 
 |  |  |   { | 
 |  |  |     Body: | 
 |  |  |     [* | 
 |  |  |       DataHolderCapacityAndSaleBudgeFilterYear.Data().Flush(); | 
 |  |  |     *] | 
 |  |  |   } | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  | Response OnUserCheckedChanged ( | 
 |  |  |   structured[CapacityAndSaleBudgeFilterYear] checkeditems | 
 |  |  | ) id:Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserCheckedChanged | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704513]' | 
 |  |  |   CanBindMultiple: false | 
 |  |  |   DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged' | 
 |  |  |   GroupServerCalls: true | 
 |  |  |   QuillAction | 
 |  |  |   { | 
 |  |  |     Body: | 
 |  |  |     [* | 
 |  |  |       DataHolderCapacityAndSaleBudgeFilterYear.Data( checkeditems.Copy() ); | 
 |  |  |     *] | 
 |  |  |   } | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #parent: listContextMenuCapacityAndSaleBudgeFilterYear_1/MenuRefresh_332 | 
 |  |  | Response OnClick () id:Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick_663 | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875925486]' | 
 |  |  |   CanBindMultiple: false | 
 |  |  |   DefinitionID: 'Responsedef_WebMenu_OnClick' | 
 |  |  |   GroupServerCalls: true | 
 |  |  |   QuillAction | 
 |  |  |   { | 
 |  |  |     Body: | 
 |  |  |     [* | 
 |  |  |       MPSync.RefreshCapacityAndSaleBudgeFilter(); | 
 |  |  |     *] | 
 |  |  |   } | 
 |  |  | } | 
 
| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | Quintiq file version 2.0 | 
 |  |  | #root | 
 |  |  | #parent: MacroPlannerWebApp | 
 |  |  | OrphanComponent FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  | { | 
 |  |  |   #keys: '[414384.0.875704457]' | 
 |  |  |   BaseType: 'WebForm' | 
 |  |  |   Children: | 
 |  |  |   [ | 
 |  |  |     #child: ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Description: '年度产éé¢ç®é¢æ¿åºå°çé' | 
 |  |  |     Title: '年度产éé¢ç®é¢æ¿åºå°çé' | 
 |  |  |   ] | 
 |  |  | } | 
 
 |  |  | 
 |  |  |   ] | 
 |  |  |   Properties: | 
 |  |  |   [ | 
 |  |  |     Title: '产éé¢ç®å¯¹æ¯å¹´ä»½çé' | 
 |  |  |     Description: '年度产éé¢ç®å¹´ä»½çé' | 
 |  |  |     Title: '年度产éé¢ç®å¹´ä»½çé' | 
 |  |  |   ] | 
 |  |  | } |