private void onCreateMessageTemplates(object sender, EventArgs e)
 {
     TraceEvent("Entering ClearThroughCustoms.onCreateMessageTemplates", 46, TraceSeverity.Monitorable);
     try
     {
         string _MasterDocumentName = String.Empty;
         using (Entities _entities = new Entities(workflowProperties.WebUrl))
         {
             DisposalRequestLib _Dr = Element.GetAtIndex <DisposalRequestLib>(_entities.DisposalRequestLibrary, workflowProperties.ItemId);
             foreach (CustomsWarehouseDisposal _cwdx in _Dr.CustomsWarehouseDisposal(_entities, false))
             {
                 if (_cwdx.CustomsStatus.Value != CustomsStatus.NotStarted)
                 {
                     continue;
                 }
                 Clearence _newClearance = Clearence.CreataClearence(_entities, "Customs Warehouse Withdraw", _Dr.ClearenceProcedure.Value, TraceEvent);
                 _cwdx.CWL_CWDisposal2ClearanceID = _newClearance;
                 _cwdx.CustomsStatus = CustomsStatus.Started;
                 if (_cwdx.CWL_CWDisposal2CustomsWarehouseID.TobaccoNotAllocated.Value > 0 ||
                     _cwdx.CWL_CWDisposal2CustomsWarehouseID.CustomsWarehouseDisposal(_entities, false).Where <CustomsWarehouseDisposal>(x => x.CustomsStatus.Value == CustomsStatus.NotStarted).Any <CustomsWarehouseDisposal>())
                 {
                     _cwdx.ClearingType = ClearingType.PartialWindingUp;
                 }
                 else
                 {
                     _cwdx.ClearingType         = ClearingType.TotalWindingUp;
                     _cwdx.TobaccoValue        += _cwdx.CWL_CWDisposal2CustomsWarehouseID.Value.Value - _cwdx.CWL_CWDisposal2CustomsWarehouseID.CustomsWarehouseDisposal(_entities, false).Sum <CustomsWarehouseDisposal>(x => x.TobaccoValue.Value);
                     _cwdx.TobaccoValue         = _cwdx.TobaccoValue.Value.RoundValue();
                     _cwdx.CW_SettledNetMass   += _cwdx.CWL_CWDisposal2CustomsWarehouseID.CW_Quantity.Value - _cwdx.CWL_CWDisposal2CustomsWarehouseID.CustomsWarehouseDisposal(_entities, false).Sum <CustomsWarehouseDisposal>(x => x.CW_SettledNetMass.Value);
                     _cwdx.CW_SettledNetMass    = _cwdx.CW_SettledNetMass.Value.RoundValue();
                     _cwdx.CW_SettledGrossMass += _cwdx.CWL_CWDisposal2CustomsWarehouseID.GrossMass.Value - _cwdx.CWL_CWDisposal2CustomsWarehouseID.CustomsWarehouseDisposal(_entities, false).Sum <CustomsWarehouseDisposal>(x => x.CW_SettledGrossMass.Value);
                     _cwdx.CW_SettledGrossMass  = _cwdx.CW_SettledGrossMass.Value.RoundValue();
                 }
                 _MasterDocumentName = _newClearance.SADTemplateDocumentNameFileName(_entities);
                 SAD _sad = CraeteSAD(_entities, _cwdx, _MasterDocumentName);
                 TraceEvent(" ClearThroughCustoms.onCreateMessageTemplates at File.CreateXmlFile", 4756, TraceSeverity.Monitorable);
                 SPFile         _newFile        = File.CreateXmlFile <SAD>(workflowProperties.Web, _sad, _MasterDocumentName, SADConsignment.IPRSADConsignmentLibraryTitle, SAD.StylesheetNmane);
                 SADConsignment _sadConsignment = Element.GetAtIndex <SADConsignment>(_entities.SADConsignment, _newFile.Item.ID);
                 _sadConsignment.Archival = true;
                 _newClearance.SADConsignmentLibraryIndex = _sadConsignment;
                 TraceEvent(" ClearThroughCustoms.onCreateMessageTemplates at SubmitChanges", 80, TraceSeverity.Monitorable);
                 _entities.SubmitChanges();
             }
         }
         logToHistoryListActivity_HistoryOutcome     = "Success";
         logToHistoryListActivity_HistoryDescription = String.Format("Document {0} created successfully", _MasterDocumentName);
     }
     catch (Exception _ex)
     {
         logToHistoryListActivity_HistoryOutcome     = "Exception";
         logToHistoryListActivity_HistoryDescription = _ex.Message;
         TraceEvent(String.Format("Exception {0} at ClearThroughCustoms.onCreateMessageTemplates: {1}; StackTrace: {2}", _ex.GetType().Name, _ex.Message, _ex.StackTrace), 46, TraceSeverity.High);
     }
     TraceEvent("Finishing ClearThroughCustoms.onCreateMessageTemplates", 98, TraceSeverity.Monitorable);
 }
        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"));
            }
        }
        private GenericStateMachineEngine.ActionResult Export()
        {
            TraceEvent("Entering ExportWebPartUserControl.Export", 578, TraceSeverity.Monitorable);
            foreach (InvoiceContent item in m_ControlState.Invoice.InvoiceContent(m_DataContextManagement.DataContext))
            {
                //TODO ExportIsPossible - improve for many invoice content with the same FG batch groups by batch must be checked against possible export
                string _checkResult = item.ExportIsPossible(m_DataContextManagement.DataContext, item.Quantity);
                if (_checkResult.IsNullOrEmpty())
                {
                    TraceEvent(String.Format("Checked Item {0}", item.Title), 585, TraceSeverity.Verbose);
                    continue;
                }
                Controls.Add(ControlExtensions.CreateMessage(_checkResult));
                m_ControlState.InvoiceContent = item;
                string _ms = "CannotProceedWithExportBecauseTheInvoiceItemContainsErrors".GetLocalizedString();
                _ms = String.Format(_ms, item.Title);
                TraceEvent(_ms, 592, TraceSeverity.Verbose);
                return(GenericStateMachineEngine.ActionResult.NotValidated(_ms));
            }
            m_ControlState.Invoice.InvoiceLibraryStatus = true;
            Clearence _newClearance       = Clearence.CreateClearance(m_DataContextManagement.DataContext, "FinishedGoodsExport", ClearenceProcedure._3151, (x, y, z) => TraceEvent(x, y, z));
            string    _masterDocumentName = _newClearance.FinishedGoodsExportFormFileName(m_DataContextManagement.DataContext);

            TraceEvent(String.Format("ExportWebPartUserControl.Export - generated document name: {0}", _masterDocumentName), 578, TraceSeverity.Verbose);
            CigaretteExportFormCollection _cefc = FinishedGoodsFormFactory.GetFormContent
                                                      (m_DataContextManagement.DataContext, m_ControlState.Invoice, _newClearance, _masterDocumentName, _newClearance.SADDocumentNumber, (x, y, z) => TraceEvent(x, y, z));

            TraceEvent(String.Format("ExportWebPartUserControl.Export - at SPDocumentFactory.Prepare", _masterDocumentName), 578, TraceSeverity.Verbose);
            int            _sadConsignmentIdentifier = SPDocumentFactory.Prepare(SPContext.Current.Web, _cefc, _masterDocumentName, (x, y, z) => TraceEvent(x, y, z));
            SADConsignment _sadConsignment           = Element.GetAtIndex <SADConsignment>(m_DataContextManagement.DataContext.SADConsignment, _sadConsignmentIdentifier);

            _newClearance.SADConsignmentLibraryIndex = _sadConsignment;
            TraceEvent("ExportWebPartUserControl.Export at SubmitChanges", 605, TraceSeverity.Verbose);
            m_DataContextManagement.DataContext.SubmitChanges();
            TraceEvent("Finished ExportWebPartUserControl.Export", 607, TraceSeverity.Verbose);
            return(GenericStateMachineEngine.ActionResult.Success);
        }