/// <summary>
 /// Cria uma instancia da classe com o tipo passado como parâmetro
 /// </summary>
 /// <param name="tipo">Tipo de lançamento a ser criado</param>
 /// <returns>Retorna um objeto do tipo ILancamento</returns>
 public static ILancamento Create(Tipo tipo)
 {
     ILancamento lancamento = null;
     if (tipo == Enuns.Faturamento.Lancamento.Tipo.ContasPagar)
         lancamento = new Data.Financeiro.Lancamento.ContaPagar();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.ContasReceber)
         lancamento = new Data.Financeiro.Lancamento.ContaReceber();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.CupomFiscal)
         lancamento = new OpenPOS.Data.Faturamento.Lancamento.Movimento.VendaCF.VendaCF();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.DAV)
         lancamento = new OpenPOS.Data.Faturamento.Lancamento.Movimento.DAV.DAV();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.DAVOS)
         lancamento = new OpenPOS.Data.Faturamento.Lancamento.Movimento.DAV.OS.DAV();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.NotaFiscalEletronica)
         lancamento = new OpenPOS.Data.Faturamento.Lancamento.Movimento.NFe.NFe();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.PreVenda)
         lancamento = new OpenPOS.Data.Faturamento.Lancamento.Movimento.PreVenda.PreVenda();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.Recebimento)
         throw new NotImplementedException("Faturamento.Lancamento.Tipo.Recebimento");
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.Sangria)
         lancamento = new OpenPOS.Data.FrenteCaixa.Lancamento.Sangria();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.Suprimento)
         lancamento = new OpenPOS.Data.FrenteCaixa.Lancamento.Suprimento();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.LancamentoGeral)
         lancamento = new OpenPOS.Data.FrenteCaixa.Lancamento.LancamentoCaixa();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.DevolucaoMercadoria)
         lancamento = new OpenPOS.Data.Faturamento.Lancamento.Movimento.Devolucao.Devolucao();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.NotaFiscalManual)
         lancamento = new OpenPOS.Data.Faturamento.Lancamento.Movimento.NFManual.NFManual();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.NotaFiscalConsumidorEletronica)
         lancamento = new OpenPOS.Data.Faturamento.Lancamento.Movimento.NFCe.NFCe();
     else if (tipo == Enuns.Faturamento.Lancamento.Tipo.ConferenciaMercadoria)
         lancamento = new OpenPOS.Data.Faturamento.Lancamento.Movimento.Conferencia.Conferencia();
     return lancamento;
 }
        public static Model.Financeiro.Lancamento.IPagarReceber Create(Model.Faturamento.Lancamento.Movimento.IMovimento movimento,
            IParcelaResult parcelaResult)
        {
            Model.Financeiro.Lancamento.IPagarReceber result = null;

            if (movimento is Model.Faturamento.Lancamento.Movimento.DAV.IDAV ||
               movimento is Model.Faturamento.Lancamento.Movimento.DAV.OS.IDAV ||
               movimento is Model.Faturamento.Lancamento.Movimento.PreVenda.IPreVenda ||
               movimento is OpenPOS.Model.Faturamento.Lancamento.Movimento.VendaCF.IVendaCF)
                result = new Data.Financeiro.Lancamento.ContaReceber();
            else
                result = new Data.Financeiro.Lancamento.ContaPagar();

            result.Parcela = parcelaResult.Parcela;
            result.Status = StatusPagarReceber.NaoRecebidoPago;
            result.TipoParcela = parcelaResult.TipoParcela;
            result.Valor = parcelaResult.Valor;
            result.Juros = parcelaResult.Juros;
            result.ValorNominalBaixado = parcelaResult.ValorNominalBaixado;
            result.ValorRestante = parcelaResult.ValorRestante;
            result.DataVencimento = parcelaResult.DataVencimento;

            return result;
        }