public int CreateInvoice(Invoice invoice)
        {
            var res = invoicesRepository.Insert(invoice.AutoMapObject <Invoice, DB.Invoice>());

            //Commencing workflow
            var firstWorkflowStage = workflowStagesRepository.GetAll().OrderBy(w => w.StageOrderNumber).FirstOrDefault();

            if (firstWorkflowStage != null)
            {
                var workflowProcessor = new pmcs.Business.WorkflowProcessors.InvoiceWorkflowProcessor();
                workflowProcessor.BeginWorkflowProcess(
                    new Model.Contracts.InvoicesApprovalWorkflow()
                {
                    InvoiceId       = res.InvoiceId,
                    IsFinished      = false,
                    ReferenceNumber = "",
                    Status          = (int)WorkflowLevelStatus.New,
                    IsActive        = true,
                    CreatedDate     = DateTime.Now,
                    CreatedBy       = 0,
                    StageId         = firstWorkflowStage.StageId,
                },
                    firstWorkflowStage.AutoMapObject <DB.InvoiceWorkflowStage, Model.InvoiceWorkflowStage>()
                    );
            }

            return(res.InvoiceId);
        }