Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method Synchronize ( 
 | 
  Boolean importgeneral, 
 | 
  Boolean importglobalparameters, 
 | 
  Boolean importperiods, 
 | 
  Boolean importinventoryspecifications, 
 | 
  Boolean importinventorysupplies, 
 | 
  Boolean importproducts, 
 | 
  Boolean importsalesdemands, 
 | 
  Boolean importservicelevel, 
 | 
  Boolean importcampaigns, 
 | 
  Boolean importentities, 
 | 
  Boolean importentitycosts, 
 | 
  Boolean importlanes, 
 | 
  Boolean importroutings, 
 | 
  Boolean importcapacities, 
 | 
  Boolean importsupplyspecifications, 
 | 
  Boolean importrecipes, 
 | 
  Boolean importactuals, 
 | 
  Boolean importfeedbacks, 
 | 
  Boolean importoptimizerpuzzles, 
 | 
  Boolean importpostponementandfulfillmentrestriction, 
 | 
  Boolean importcustomerorder, 
 | 
  Boolean isimportbinary, 
 | 
  BinaryValues binaryValues, 
 | 
  Strings brokers, 
 | 
  Boolean is3DDrive, 
 | 
  FileItems fileItems, 
 | 
  Strings fileNames 
 | 
) 
 | 
{ 
 | 
  Description: 'Synchronizes model with external data' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Flag the MP dataset as is importing data 
 | 
    this.IsImporting( true ); 
 | 
    this.ImportMessage( '' ); 
 | 
     
 | 
    // Flush all fixed/non-ignore sanity check message before import 
 | 
    SanityCheckMessage::DeleteAllShownMessages( this ); 
 | 
     
 | 
    periods                 := BinaryValue::Construct(); 
 | 
    uoms                    := BinaryValue::Construct(); 
 | 
    currencies              := BinaryValue::Construct(); 
 | 
    priorities              := BinaryValue::Construct() 
 | 
    shiftpatterns           := BinaryValue::Construct(); 
 | 
    globalparameter         := BinaryValue::Construct(); 
 | 
    salesdemand             := BinaryValue::Construct(); 
 | 
    postponesalesdemandcost := BinaryValue::Construct(); 
 | 
    groups                  := BinaryValue::Construct(); 
 | 
    units                   := BinaryValue::Construct(); 
 | 
    stockingpoints          := BinaryValue::Construct(); 
 | 
    salessegments           := BinaryValue::Construct(); 
 | 
    products                := BinaryValue::Construct(); 
 | 
    lanes                   := BinaryValue::Construct(); 
 | 
    routings                := BinaryValue::Construct(); 
 | 
    campaigns               := BinaryValue::Construct(); 
 | 
    servicelevels           := BinaryValue::Construct(); 
 | 
    inventoryspecifications := BinaryValue::Construct(); 
 | 
    stockingpointcapacities := BinaryValue::Construct(); 
 | 
    supplyspecifications    := BinaryValue::Construct(); 
 | 
    entitiescost            := BinaryValue::Construct(); 
 | 
    unitcapacities          := BinaryValue::Construct();   
 | 
    unitavailabilities      := BinaryValue::Construct();   
 | 
    transportcapacities     := BinaryValue::Construct(); 
 | 
    transportavailabilities := BinaryValue::Construct(); 
 | 
    unitcalendars           := BinaryValue::Construct();   
 | 
    recipes                 := BinaryValue::Construct();   
 | 
    actualpispips           := BinaryValue::Construct();    
 | 
    actualunitperiods       := BinaryValue::Construct();    
 | 
    feedbacks               := BinaryValue::Construct();    
 | 
    inventorysupplies       := BinaryValue::Construct(); 
 | 
    optimizerpuzzles        := BinaryValue::Construct(); 
 | 
    customerorder           := BinaryValue::Construct(); 
 | 
     
 | 
    postponementspecandfulfillment := BinaryValue::Construct(); 
 | 
     
 | 
    if( is3DDrive ) 
 | 
    { 
 | 
       binaryValues := MPSyncUtility::ImportFrom3DDrive( fileNames, fileItems ); 
 | 
    } 
 | 
     
 | 
    this.ImportBinaryData( binaryValues, brokers, periods, uoms, currencies, priorities, shiftpatterns,  
 | 
                           globalparameter, salesdemand, postponesalesdemandcost, groups, units, 
 | 
                           stockingpoints, salessegments, products, lanes, routings, 
 | 
                           campaigns, servicelevels, inventoryspecifications, stockingpointcapacities,  
 | 
                           supplyspecifications, inventorysupplies, entitiescost, 
 | 
                           unitcapacities, unitavailabilities, transportcapacities, transportavailabilities, 
 | 
                           unitcalendars, recipes, actualpispips, feedbacks, actualunitperiods, optimizerpuzzles, postponementspecandfulfillment, customerorder ); 
 | 
     
 | 
    /* ======================================================================================= 
 | 
                      NOTE! The sequence of importing is IMPORTANT 
 | 
    Objects own by MacroPlan and without foreign key reference, therefore will be imported first. 
 | 
    ==========================================================================================*/ 
 | 
    if( importgeneral )               // Currencies, UOMs, Priorities, Shift patterns 
 | 
    { 
 | 
      // info('import general') 
 | 
      this.ImportGeneral( uoms.AsBinaryData(), currencies.AsBinaryData(), priorities.AsBinaryData() ); 
 | 
      // info('import general ok') 
 | 
    } 
 | 
     
 | 
    // The import statements are in the sequence where owners will first be imported 
 | 
    if( importglobalparameters )      // Global Parameters 
 | 
    { 
 | 
      this.ImportGlobalParameters( globalparameter.AsBinaryData() );   
 | 
    } 
 | 
     
 | 
    if( importperiods )               // Period specifications, Period definitions, Period parameters 
 | 
    { 
 | 
      // info('import periods') 
 | 
      this.ImportPeriods( periods.AsBinaryData() ); 
 | 
      // info('import periods ok') 
 | 
    } 
 | 
     
 | 
    if( importentities )              // Groups, Units, Stocking points, Sales segments, Stocking point units 
 | 
    { 
 | 
      // info('import entities') 
 | 
      this.ImportEntities( groups.AsBinaryData(), stockingpoints.AsBinaryData(), units.AsBinaryData(), salessegments.AsBinaryData() ); 
 | 
      // info('import entities ok') 
 | 
    } 
 | 
     
 | 
    if( importproducts )              // Products, Product in stocking points 
 | 
    { 
 | 
      // info('import products') 
 | 
      this.ImportProducts( products.AsBinaryData() ); 
 | 
      // info('import products ok') 
 | 
    } 
 | 
     
 | 
    if( importsalesdemands )            // Sales demands, Postponed sales demand costs. 
 | 
    { 
 | 
      // info('import sales demands') 
 | 
      this.ImportSalesDemands( salesdemand.AsBinaryData(), postponesalesdemandcost.AsBinaryData() ); 
 | 
      // info('import sales demands ok') 
 | 
    }   
 | 
     
 | 
    if( importcustomerorder )            // Customer order 
 | 
    { 
 | 
      // info('import customer orders') 
 | 
      this.ImportCustomerOrder( customerorder.AsBinaryData() ); 
 | 
      // info('import customer orders ok') 
 | 
    }   
 | 
      
 | 
    if ( importpostponementandfulfillmentrestriction ) 
 | 
    {  
 | 
      this.ImportPostponementSpecAndFulfillmentRestriction( postponementspecandfulfillment.AsBinaryData() ); 
 | 
    } 
 | 
     
 | 
    /* ======================================================================================= 
 | 
                      NOTE! The sequence of importing is IMPORTANT 
 | 
    Objects own by entities and with foreign key reference, therefore need to be imported after entities had been imported. 
 | 
    ======================================================================================= */ 
 | 
    if( importlanes )                // Lanes 
 | 
    { 
 | 
      // info('import lanes') 
 | 
      this.ImportLanes( lanes.AsBinaryData() ); 
 | 
      // info('import lanes ok') 
 | 
    } 
 | 
     
 | 
    if( importroutings )             // Routings, Routing steps, Operations 
 | 
    { 
 | 
      // info('import routings') 
 | 
      this.ImportRoutings( routings.AsBinaryData() ); 
 | 
      // info('import routings ok') 
 | 
    } 
 | 
     
 | 
    /* ======================================================================================= 
 | 
                      NOTE! The sequence of importing is IMPORTANT 
 | 
    Objects own by Processes (Routing/Lane/LaneLeg/Operation) and with foreign key reference, therefore need to be imported after processes had been imported. 
 | 
    ======================================================================================= */ 
 | 
    if( importcampaigns )             // Campaign types, Campaigns, Operation in campaign types and Transitions 
 | 
    { 
 | 
      // info('import campaign') 
 | 
      this.ImportCampaigns( campaigns.AsBinaryData() ); 
 | 
      // info('import campaign ok') 
 | 
    } 
 | 
     
 | 
    /* ======================================================================================= 
 | 
                      NOTE! The sequence of importing is IMPORTANT 
 | 
    Objects own by product/stocking point/unit and with foreign key reference, therefore need to be imported after entities had been imported. 
 | 
    ============================================================================================ */ 
 | 
    if( importservicelevel ) 
 | 
    { 
 | 
      this.ImportServiceLevels( servicelevels.AsBinaryData() ); 
 | 
      //This method mainly to convert data from 2016 Q4 to 2017 Q1 service level that with isusedForPlanningFulfillment to fulfillment target,  
 | 
      //once the data converted the method can be removed 
 | 
      ServiceLevel::ConvertToFulfillmentGoal( this, true ); 
 | 
    } 
 | 
     
 | 
    if( importinventoryspecifications )   // Inventory specifications 
 | 
    { 
 | 
      // info('import inventory spec') 
 | 
      this.ImportInventorySpecifications( inventoryspecifications.AsBinaryData() ); 
 | 
      // info('import inventory spec ok') 
 | 
    } 
 | 
     
 | 
    if( importinventorysupplies )         // Inventory supplies and inventory supply cost 
 | 
    { 
 | 
      // info('import supplies') 
 | 
      this.ImportInventorySupplies( inventorysupplies.AsBinaryData() ); 
 | 
      // info('import supplies ok') 
 | 
    } 
 | 
     
 | 
    if( importcapacities )   // Stocking point capacities 
 | 
    { 
 | 
      // info('import sp capacities') 
 | 
      this.ImportStockingPointCapacities( stockingpointcapacities.AsBinaryData() ); 
 | 
      // info('import sp capacities ok') 
 | 
    } 
 | 
     
 | 
    if( importsupplyspecifications )      // Supply specifications 
 | 
    { 
 | 
      // info('import supply specifications') 
 | 
      this.ImportSupplySpecifications( supplyspecifications.AsBinaryData() ); 
 | 
      // info('import supply specifications ok') 
 | 
    } 
 | 
     
 | 
    if( importentitycosts )             // Unit costs, Lane costs, Lane leg costs, Operation costs, Stocking point costs, PISP costs  
 | 
    { 
 | 
      // info('import inventory costs') 
 | 
      this.ImportEntityCosts( entitiescost.AsBinaryData() ); 
 | 
      // info('import inventory costs ok')a 
 | 
    } 
 | 
     
 | 
    if( importcapacities )        // Unit capacities, Unit availabilities, Unit calendar elements. 
 | 
    { 
 | 
      // info('import unit capacities') 
 | 
      this.ImportUnitCapacities( unitcapacities.AsBinaryData(),  
 | 
                                 unitavailabilities.AsBinaryData(),  
 | 
                                 transportcapacities.AsBinaryData(),  
 | 
                                 transportavailabilities.AsBinaryData(), 
 | 
                                 unitcalendars.AsBinaryData(),  
 | 
                                 shiftpatterns.AsBinaryData() ); 
 | 
      // info('import unit capacities ok') 
 | 
    } 
 | 
     
 | 
    if( importrecipes )                   // Recipes 
 | 
    { 
 | 
      // info('import recipes') 
 | 
      this.ImportRecipes( recipes.AsBinaryData() ); 
 | 
      // info('import recipes ok') 
 | 
    } 
 | 
     
 | 
    if( importactuals )          // Actual product in stocking in period and actual unit periods 
 | 
    { 
 | 
      // info('import actual unit periods') 
 | 
      this.ImportActualProductInStockingPointInPeriods( actualpispips.AsBinaryData() ); 
 | 
      // info('import actual unit periods ok') 
 | 
      // info('import actual unit periods') 
 | 
      this.ImportActualUnitPeriods( actualunitperiods.AsBinaryData() ); 
 | 
      // info('import actual unit periods ok') 
 | 
    } 
 | 
     
 | 
    if( importoptimizerpuzzles )         // Optimizer puzzles 
 | 
    { 
 | 
      // info('import optimizer puzzles') 
 | 
      this.ImportOptimizerPuzzles( optimizerpuzzles.AsBinaryData() ); 
 | 
      // info('import optimizer puzzles ok') 
 | 
    } 
 | 
     
 | 
    this.InitializeNonEntitiesDataAfterImport( importsalesdemands, importcustomerorder, importproducts, importentities, importroutings, importperiods ); 
 | 
     
 | 
    if( importglobalparameters ) 
 | 
    { 
 | 
      this.InitializeGlobalParameterAfterImport(); 
 | 
    } 
 | 
     
 | 
    if( importentitycosts ) 
 | 
    { 
 | 
      this.InitializeEntityCostsAfterImport(); 
 | 
    } 
 | 
     
 | 
    if( importfeedbacks )          // Feedbacks 
 | 
    { 
 | 
      // info('import feedbacks') 
 | 
      this.ImportFeedbacks( feedbacks.AsBinaryData() ); 
 | 
      // info('import feedbacks') 
 | 
    } 
 | 
     
 | 
    this.UpdateUnitCalendar(); 
 | 
    // Update changes, Calculate KPI score 
 | 
    this.CalculateKPIScore( false ); 
 | 
     
 | 
    // Flag the MP dataset as not importing 
 | 
    this.IsImporting( false ); 
 | 
    this.IsImportSucceed( this.ImportMessage() = '' ); 
 | 
  *] 
 | 
} 
 |