private void Update()
        {
            if (CurrentClearance == null)
            {
                throw GenericStateMachineEngine.ActionResult.Exception(null, "Internal error - ClearanceID is null or empty at Update");
            }
            Entities _edc = m_DataContextManagement.DataContext;

            CurrentClearance.UpdateClerance(_edc, m_SelectGroupRadioButtonList.SelectedValue, SelectedClearenceProcedure);
            //remove from clearance
            foreach (Selection.SelectionTableRow _row in m_ControlState.AvailableItems.SelectionTable.OnlyAdded)
            {
                Disposal _dspsl = Element.GetAtIndex <Disposal>(_edc.Disposal, _row.Id);
                RemoveDisposalFromClearance(_edc, _dspsl);
            }
            //add to clearance
            foreach (Selection.SelectionTableRow _row in m_ControlState.AssignedItems.SelectionTable.OnlyAdded)
            {
                if (_row.Disposal)
                {
                    Disposal _dspsl = Element.GetAtIndex <Disposal>(_edc.Disposal, _row.Id);
                    _dspsl.Disposal2ClearenceIndex = CurrentClearance;
                }
                else
                {
                    IPRClass _ipr = Element.GetAtIndex <IPRClass>(_edc.IPR, _row.Id);
                    _ipr.AddDisposal(_edc, Convert.ToDecimal(_row.Quantity), CurrentClearance);
                }
            }
            CurrentClearance.UpdateTitle(_edc);
            m_DataContextManagement.DataContext.SubmitChanges();
        }
        private void QueryAssigned()
        {
            if (CurrentClearance == null)
            {
                return;
            }
            m_ControlState.AssignedItems.SelectionTable.Clear();
            List <Selection.SelectionTableRowWraper> _dsposals = (from _dsx in CurrentClearance.Disposal(m_DataContextManagement.DataContext)
                                                                  select new Selection.SelectionTableRowWraper(_dsx)).ToList();

            m_ControlState.AssignedItems.SelectionTable.Add(_dsposals);
        }
        private void Delete()
        {
            Entities _edc = m_DataContextManagement.DataContext;

            foreach (Disposal _dx in CurrentClearance.Disposal(_edc))
            {
                RemoveDisposalFromClearance(_edc, _dx);
            }
            m_DataContextManagement.DataContext.SubmitChanges();
            m_DataContextManagement.DataContext.Clearence.DeleteOnSubmit(CurrentClearance);
            ClearAssigned();
            _edc.SubmitChanges();
        }
        private GenericStateMachineEngine.ActionResult ClearThroughCustom()
        {
            try
            {
                Entities _edc = m_DataContextManagement.DataContext;
                string   _masterDocumentName             = CurrentClearance.FinishedGoodsExportFormFileName(_edc);
                int      _sadConsignmentIdentifier       = default(int);
                Func <IEnumerable <Disposal> > _dspslLst = () => CurrentClearance.Disposal(_edc);
                switch (ToSelectedGroup(CurrentClearance.ProcedureCode))
                {
                case Group.Tobacco:
                case Group.TobaccoNotAllocated:
                    DocumentContent _newTobaccoDoc =
                        DisposalsFormFactory.GetTobaccoFreeCirculationFormContent(_dspslLst(), CurrentClearance.ClearenceProcedure.Value, _masterDocumentName);
                    _sadConsignmentIdentifier = SPDocumentFactory.Prepare(SPContext.Current.Web, _newTobaccoDoc, _masterDocumentName, CompensatiionGood.Tobacco);
                    break;

                case Group.Waste:
                case Group.Dust:
                    DocumentContent   _newDustWasteDoc   = DisposalsFormFactory.GetDustWasteFormContent(_dspslLst(), CurrentClearance.ClearenceProcedure.Value, _masterDocumentName);
                    CompensatiionGood _compensatiionGood = SelectedGroup == Group.Waste ? CompensatiionGood.Waste : CompensatiionGood.Dust;
                    _sadConsignmentIdentifier = SPDocumentFactory.Prepare(SPContext.Current.Web, _newDustWasteDoc, _masterDocumentName, _compensatiionGood);
                    break;

                case Group.Cartons:
                    DocumentContent _newBoxFormContent = DisposalsFormFactory.GetBoxFormContent(_dspslLst(), CurrentClearance.ClearenceProcedure.Value, _masterDocumentName);
                    _sadConsignmentIdentifier = SPDocumentFactory.Prepare(SPContext.Current.Web, _newBoxFormContent, _masterDocumentName, CompensatiionGood.Cartons);
                    break;
                }
                SADConsignment _sadConsignment = Element.GetAtIndex <SADConsignment>(_edc.SADConsignment, _sadConsignmentIdentifier);
                CurrentClearance.ClearThroughCustom(_edc, _sadConsignment, (x, y, z) => { }); //TODO implement tracing
                _edc.SubmitChanges();
                Response.Redirect(Request.RawUrl);
                return(GenericStateMachineEngine.ActionResult.Success);
            }
            catch (GenericStateMachineEngine.ActionResult _ar)
            {
                return(_ar);
            }
            catch (Exception ex)
            {
                return(GenericStateMachineEngine.ActionResult.Exception(ex, "ClearThroughCustom"));
            }
        }