Kevin Kok Khah Whey
2023-11-07 5ae534ab606e6f2ba5ea60914224d665b0447d5a
_Main/BL/Type_MacroPlan/Method_DoASyncMappingOperationBOMData.qbl
@@ -13,7 +13,7 @@
    // yypsybs Aug-21-2023 (created)
    keyProductList := construct( Strings );
    if( isKeyProduct ) {
        keyProductList := selectuniquevalues( globalOTDTable, Global_MappingProduct_MP, item, item.ProductMajorType()="成品" or item.ProductMajorType()="半成品", item.ID() );
       keyProductList := selectuniquevalues( globalOTDTable, Global_MappingProduct_MP, item, item.ProductMajorType()="成品" or item.ProductMajorType()="半成品", item.ID() );
    }
    bomList := selectsortedset(  globalOTDTable, Global_MappingOperationBOM, item,
                                 ifexpr( isnull( businessTypes ) or businessTypes.Size() = 0, 
@@ -75,12 +75,33 @@
        }
    }
    if( createPurchaseSupplyMaterial ) {
        toCreateBomList := selectuniquevalues( bomList, Elements, item,
      toCreateBomList := construct( Strings );
      alterCodes := construct( Strings );
      if( isKeyProduct){
          toCreateBomList := selectuniquevalues( bomList, Elements, item,
                                               item.ComponentType() = "P" and keyProductList.Find( item.ComponentCode())>=0, item.OrganCode() + item.ComponentCode());
          alterCodes := selectuniquevalues( bomList, Elements, item,
                                               not item.AlternativeMaterialCode() = "" and item.AlternativeMaterialType() = "P" and keyProductList.Find( item.ComponentCode())>=0, item.OrganCode() + item.AlternativeMaterialCode());
        }else{
          toCreateBomList := selectuniquevalues( bomList, Elements, item,
                                               item.ComponentType() = "P" , item.OrganCode() + item.ComponentCode());
          alterCodes := selectuniquevalues( bomList, Elements, item,
                                               not item.AlternativeMaterialCode() = "" and item.AlternativeMaterialType() = "P", item.OrganCode() + item.AlternativeMaterialCode());
        }
        toCreateBomList := toCreateBomList.Union( alterCodes);
        traverse( toCreateBomList, Elements, key ) {
            boms := selectset( bomList, Elements, item, item.ComponentType() = "P" and item.OrganCode() + item.ComponentCode() = key );
            bom := boms.First();
            this.MappingOperationBOMDataSupplyPurchase( bom.OrganCode(), bom.ComponentCode(), bom.ComponentType());
            if( boms.Size()=0){
              boms := selectset( bomList, Elements, item, item.ComponentType() = "P" and item.OrganCode() + item.AlternativeMaterialCode() = key );
            }
            if( boms.Size()>0){
              bom := boms.First();
              this.MappingOperationBOMDataSupplyPurchase( bom.OrganCode(), bom.ComponentCode(), bom.ComponentType());
            }
        }
    }