/// <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; }
/// <summary> /// Método para vincular DAVOS com outro DAVOS /// </summary> /// <param name="dav">objeto do tipo DAV-OS</param> public IDAV VinculaDAVOS() { if(IsVinculado) throw new OpenPOS.Exceptions.Faturamento.Lancamento.Movimento.MovimentoIsReadOnly(); IDAV dav = new OpenPOS.Data.Faturamento.Lancamento.Movimento.DAV.OS.DAV(GUID); // Atualiza o objeto dav para a cópia this.New = true; this.GUID = GUID.Create(); // Adiciona os vinculos foreach(IItem item in this.Itens) { IItem itemPai = dav.Itens.Contains(item) ? dav.Itens.First(i => i.GUID.Equals(item.GUID)) : null; if(itemPai != null) itemPai.ItensParent.Add(item); } ((List<IItem>)Itens).ForEach(k => k.New = true); // salva o vinculo na lanSK ILanSK sk = new LanSK(); sk.GUIDSK = dav.GUID; sk.Pai = dav.GUID; sk.Filho = GUID; sk.TableHash = dav.GetTableHash(); foreach(IItem item in dav.Itens) foreach(Model.Faturamento.Lancamento.Movimento.Item.IItem p in Itens) if(item.ItensParent.Contains(p)) sk.SKItens.Add(new LanSKItem() { ItemPai = item.GUID, ItemFilho = p.GUID, SKPai = dav.GUID, SKFilho = GUID, TableHash = item.GetTableHash() }); sk.Save(); dav.IsVinculado = true; dav.Save(); return this; }