void InitPage(CrudAPI crudapi)
 {
     leBaseBudget.api = crudapi;
     layoutControl    = layoutItems;
     if (LoadedRow == null)
     {
         frmRibbon.DisableButtons(new string[] { "Delete" });
         editrow = CreateNew() as GLBudgetClient;
     }
     layoutItems.DataContext  = editrow;
     frmRibbon.OnItemClicked += frmRibbon_OnItemClicked;
 }
 async void SaveAndOpenLines(GLBudgetClient selectedItem)
 {
     if (dgGlBudget.HasUnsavedData)
     {
         var tsk = saveGrid(selectedItem);
         if (tsk != null && selectedItem.RowId == 0)
         {
             await tsk;
         }
     }
     if (selectedItem.RowId != 0)
     {
         AddDockItem(TabControls.GLBudgetLinePage, selectedItem, string.Format("{0}:{1}", Uniconta.ClientTools.Localization.lookup("BudgetLines"), selectedItem._Name));
     }
 }
        private void localMenu_OnItemClicked(string ActionType)
        {
            var selectedItem = dgGlBudget.SelectedItem as GLBudgetClient;

            switch (ActionType)
            {
            case "AddRow":
                AddDockItem(TabControls.GLBudgetPage2, api, Uniconta.ClientTools.Localization.lookup("BudgetModel"), "Add_16x16.png");
                break;

            case "EditRow":
                if (selectedItem != null)
                {
                    AddDockItem(TabControls.GLBudgetPage2, selectedItem);
                }
                break;

            case "SaveGrid":
                saveGrid(selectedItem);
                break;

            case "CopyRow":
                if (selectedItem == null)
                {
                    return;
                }
                CWCopyBudget cwCopyBudget = new CWCopyBudget(selectedItem._Name);
                cwCopyBudget.Closing += async delegate
                {
                    if (cwCopyBudget.DialogResult == true)
                    {
                        int    AddMonth  = cwCopyBudget.Months;
                        double PctFactor = cwCopyBudget.Pct;

                        double Factor = PctFactor != 0d ? (PctFactor + 100d) / 100d : 0d;

                        ErrorCodes     err        = ErrorCodes.NoSucces;
                        GLBudgetClient copyBudget = new GLBudgetClient();
                        copyBudget.Name       = cwCopyBudget.BudgetName;
                        copyBudget.FromDate   = AddMonth2Date(selectedItem._FromDate, AddMonth);
                        copyBudget.ToDate     = AddMonth2Date(selectedItem._ToDate, AddMonth);
                        copyBudget.Comment    = selectedItem._Comment;
                        copyBudget.BaseBudget = selectedItem._BaseBudget;
                        copyBudget._Active    = selectedItem._Active;
                        busyIndicator.IsBusy  = true;
                        err = await api.Insert(copyBudget);

                        if (err == ErrorCodes.Succes)
                        {
                            var budgetLines = await api.Query <Uniconta.DataModel.GLBudgetLine>(selectedItem);

                            if (budgetLines != null && budgetLines.Length > 0)
                            {
                                foreach (var line in budgetLines)
                                {
                                    line._Date   = AddMonth2Date(line._Date, AddMonth);
                                    line._ToDate = AddMonth2Date(line._ToDate, AddMonth);
                                    if (Factor != 0)
                                    {
                                        line._Amount = Math.Round(line._Amount * Factor);
                                    }
                                    line.SetMaster(copyBudget);
                                }
                                err = await api.Insert(budgetLines);
                            }
                            dgGlBudget.UpdateItemSource(1, copyBudget);
                        }
                        busyIndicator.IsBusy = false;
                        if (err != ErrorCodes.Succes)
                        {
                            UtilDisplay.ShowErrorCode(err);
                        }
                    }
                };
                cwCopyBudget.Show();
                break;

            case "BudgetLines":
                if (selectedItem != null)
                {
                    SaveAndOpenLines(selectedItem);
                }
                break;

            case "IncludeSubModels":
                if (selectedItem != null)
                {
                    AddDockItem(TabControls.GLBudgetBudgetPage, selectedItem, string.Format("{0}:{1}", Uniconta.ClientTools.Localization.lookup("SubModels"), selectedItem._Name));
                }
                break;

            case "AddNote":
                if (selectedItem != null)
                {
                    AddDockItem(TabControls.UserNotesPage, dgGlBudget.syncEntity, string.Format("{0}: {1}", Uniconta.ClientTools.Localization.lookup("Notes"), selectedItem._Name));
                }
                break;

            case "AddDoc":
                if (selectedItem != null)
                {
                    AddDockItem(TabControls.UserDocsPage, dgGlBudget.syncEntity, string.Format("{0}: {1}", Uniconta.ClientTools.Localization.lookup("Documents"), selectedItem._Name));
                }
                break;

            default:
                gridRibbon_BaseActions(ActionType);
                break;
            }
        }