public void SubmitChanges(CommodityTransferNote document)
        {
            int sequence = 0;
            var envelope = new CommandEnvelope();
            envelope.Initialize(document);
            var commandsToExecute = document.GetDocumentCommandsToExecute();

            var createCommand = commandsToExecute.OfType<CreateCommand>().FirstOrDefault();
            if (createCommand != null)
                envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, createCommand));
            var lineItemCommands = commandsToExecute.OfType<AfterCreateCommand>().ToList();
            foreach (var item in lineItemCommands)
            {
                envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, item));
            }

            var confirmCommodityDeliveryCommand = commandsToExecute.OfType<ConfirmCommodityTransferCommand>().FirstOrDefault();
            if (confirmCommodityDeliveryCommand != null)
                envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, confirmCommodityDeliveryCommand));
            var approveCommodityTransferCommand = commandsToExecute.OfType<ApproveCommodityTransferCommand>().FirstOrDefault();
            if (approveCommodityTransferCommand != null)
                envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, approveCommodityTransferCommand));


            var transferedCommodityStorageCommand = commandsToExecute.OfType<TransferedCommodityStorageLineItemCommand>().FirstOrDefault();
            if (transferedCommodityStorageCommand != null)
                envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, transferedCommodityStorageCommand));
            _commandEnvelopeRouter.RouteCommandEnvelope(envelope);

        }
        private SourcingDocument Map(tblSourcingDocument tbldoc)
        {
            SourcingDocument doc = null;
            doc = new CommodityTransferNote(tbldoc.Id);
            _Map(tbldoc, doc);
            var transferNote = doc as CommodityTransferNote;
            if (tbldoc.DocumentTypeId2 != null )
                transferNote.TransferNoteTypeId = (CommodityTransferNote.CommodityTransferNoteTypeId) tbldoc.DocumentTypeId2;
            transferNote.WareHouseToStore = tbldoc.DocumentOnBehalfOfCostCentreId.HasValue ? _storeRepository.GetById(tbldoc.DocumentOnBehalfOfCostCentreId.Value) : null;
            transferNote._SetLineItems(tbldoc.tblSourcingLineItem.Select(MapCommodityStorageLineItem).ToList());
            doc = transferNote;
            return doc;

        }