| Quintiq file version 2.0 | 
| #parent: #root | 
| Method SynchronizeFromMPSync ( | 
|   MPSync mpsync, | 
|   Boolean isoverwritemanualconfig, | 
|   Boolean importgeneral, | 
|   Boolean importglobalparameters, | 
|   Boolean importperiods, | 
|   Boolean importdisaggregationfactor, | 
|   Boolean importinventoryspecifications, | 
|   Boolean importinventorysupplies, | 
|   Boolean importproducts, | 
|   Boolean importforecasts, | 
|   Boolean importcampaigns, | 
|   Boolean importentities, | 
|   Boolean importentitycosts, | 
|   Boolean importlanes, | 
|   Boolean importroutings, | 
|   Boolean importstockingpointcapacities, | 
|   Boolean importsupplyspecifications, | 
|   Boolean importunitcapacities, | 
|   Boolean importrecipes, | 
|   Boolean importactualpispip, | 
|   Boolean importfeedbacks, | 
|   Boolean importactualunitperiod, | 
|   Boolean importservicelevels, | 
|   Boolean importoptimizerpuzzles, | 
|   Boolean importpostponementspecandfulfillmentrestriction, | 
|   Boolean importcustomerorder | 
| ) | 
| { | 
|   Description: 'Synchronize data from MPSync dataset' | 
|   TextBody: | 
|   [* | 
|     progress( 'Synchronizing from MPSync...', DateTime::ActualTime() ); | 
|     /* ======================================================================================= | 
|                       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 | 
|     { | 
|       this.MPSync_ImportGeneral( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importperiods )               // Period specifications, Period definitions, Period parameters | 
|     { | 
|       this.MPSync_ImportPeriods( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importentities )              // Groups, Units, Stocking points, Sales segments, Stocking point units | 
|     { | 
|       this.MPSync_ImportEntities( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importproducts )              // Products, Product in stocking points | 
|     { | 
|       this.MPSync_ImportProducts( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importforecasts )            // Forecasts | 
|     { | 
|       this.MPSync_ImportForecasts( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importservicelevels ) | 
|     { | 
|       this.MPSync_ImportServiceLevels( mpsync, isoverwritemanualconfig ); | 
|     }  | 
|      | 
|     if( importoptimizerpuzzles )      // Optimizer puzzles | 
|     { | 
|       this.MPSync_ImportOptimizerPuzzles( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importpostponementspecandfulfillmentrestriction )      // Postponement specification and Fulfillment restriction | 
|     { | 
|       this.MPSync_ImportPostponementSpecificationAndFulfillmentRestriction( mpsync, isoverwritemanualconfig ); | 
|     } | 
|     /* ======================================================================================= | 
|                       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 | 
|     { | 
|       this.MPSync_ImportLanes( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importroutings )             // Routings, Routing steps, Operations | 
|     { | 
|       this.MPSync_ImportRoutings( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     /* ======================================================================================= | 
|                       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 | 
|     { | 
|       this.MPSync_ImportCampaigns( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     /* ======================================================================================= | 
|                       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( importdisaggregationfactor )   // Disaggregation factor | 
|     { | 
|       this.MPSync_ImportDisaggregationFactor( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importinventoryspecifications )   // Inventory specifications | 
|     { | 
|       this.MPSync_ImportInventorySpecifications( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importinventorysupplies )         // Inventory supplies and inventory supply cost | 
|     { | 
|       this.MPSync_ImportInventorySupplies( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importstockingpointcapacities )   // Stocking point capacities | 
|     { | 
|       this.MPSync_ImportStockingpointCapacities( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importsupplyspecifications )      // Supply specifications | 
|     { | 
|       this.MPSync_ImportSupplySpecifications( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importentitycosts )             /* Unit costs, Lane costs, Lane leg costs, Operation costs, | 
|                                            Stocking point costs, inventory costs , product costs*/ | 
|     { | 
|       this.MPSync_ImportEntityCosts( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importunitcapacities )        // Unit capacities, Unit availabilities, Unit calendar elements. | 
|     { | 
|       this.MPSync_ImportUnitCapacities( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importrecipes )                   // Recipes | 
|     { | 
|       this.MPSync_ImportRecipes( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importactualpispip )          // Actual product in stocking in period | 
|     { | 
|       this.MPSync_ImportActualPISPIP( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importactualunitperiod )          // Actual unit periods | 
|     { | 
|       this.MPSync_ImportActualUnitPeriod( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importcustomerorder )          // customer order | 
|     { | 
|       this.MPSync_ImportCustomerOrder( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     this.InitializeNonEntitiesDataAfterImport( importforecasts, importcustomerorder, importproducts, importentities, importroutings, importperiods ); | 
|      | 
|     if( importglobalparameters ) | 
|     { | 
|       this.MPSync_ImportGlobalParameters( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     if( importentitycosts ) | 
|     { | 
|      this.InitializeEntityCostsAfterImport(); | 
|     } | 
|      | 
|     if( importfeedbacks )          // Feedbacks | 
|     { | 
|      this.MPSync_ImportFeedbacks( mpsync, isoverwritemanualconfig ); | 
|     } | 
|      | 
|     // Update changes, Calculate KPI score | 
|     this.CalculateKPIScore( false ); | 
|      | 
|     // Create MPSync sanity check objects | 
|     databaseerrors := selectset( mpsync, DatabaseSyncErrorMPSync, err, true, true  ); | 
|     this.MPSyncDatabaseSyncError( databaseerrors ); | 
|      | 
|     //post processing | 
|     if( importunitcapacities ) | 
|     { | 
|       this.InitializeShiftPatternsAfterImport(); | 
|     } | 
|      | 
|     if( importperiods ) | 
|     { | 
|       this.InitializePeriodsAfterImport(); | 
|     } | 
|      | 
|     if( importroutings ) | 
|     { | 
|       this.InitializeRoutingsAfterImport(); | 
|     } | 
|      | 
|     if( importinventorysupplies ) | 
|     { | 
|       this.InitializeInventorySuppliesAfterImport(); | 
|     } | 
|                   | 
|     if( importfeedbacks ) | 
|     { | 
|       this.InitializeFeedbackAfterImport(); | 
|     } | 
|      | 
|     if( importentities or importunitcapacities or importperiods ) | 
|     { | 
|       this.UpdateUnitCalendar(); | 
|     } | 
|      | 
|     // Set indicator values | 
|     this.SynchronizationStatus( Translations::MPSync_Synchronization_Complete() ); | 
|     this.IsImporting( false ); | 
|   *] | 
| } |