private void GerarFaturamento(int ano, int mes, Contrato contrato, IEnumerable <ItemDeContrato> itensDoContrato, IEnumerable <Movimento> movimentoDoContrato) { int TODO_SERIE = 1; int TODO_NUMERO_FATURA = contrato.Numero; int numeroItemDeFatura = 0; double valorTotal = 0; var repositorioDeFaturas = new RepositorioDeFaturas(); var repositorioDeItensDeFatura = new RepositorioDeItensDeFatura(); // incluir itens de contrato foreach (ItemDeContrato itemDeContrato in itensDoContrato) { numeroItemDeFatura++; var itemDeFatura = new ItemDeFatura { PartitionKey = ItemDeFatura.ObterPartitionKey(ano, mes), RowKey = ItemDeFatura.ObterRowKey(TODO_SERIE, TODO_NUMERO_FATURA, numeroItemDeFatura), Produto = itemDeContrato.Produto, Quantidade = 1, ValorUnitario = itemDeContrato.Valor, ValorTotal = itemDeContrato.Valor }; valorTotal += itemDeFatura.ValorTotal; repositorioDeItensDeFatura.AdicionarObjeto(itemDeFatura); } // incluir itens de movimento foreach (Movimento movimento in movimentoDoContrato) { numeroItemDeFatura++; var itemDeFatura = new ItemDeFatura { PartitionKey = ItemDeFatura.ObterPartitionKey(ano, mes), RowKey = ItemDeFatura.ObterRowKey(TODO_SERIE, TODO_NUMERO_FATURA, numeroItemDeFatura), Produto = movimento.Produto, Quantidade = movimento.Quantidade, ValorUnitario = movimento.ValorUnitario, ValorTotal = movimento.ValorTotal }; valorTotal += itemDeFatura.ValorTotal; repositorioDeItensDeFatura.AdicionarObjeto(itemDeFatura); } // incluir registro mestre da fatura var fatura = new Fatura { PartitionKey = Fatura.ObterPartitionKey(ano, mes), RowKey = Fatura.ObterRowKey(TODO_SERIE, TODO_NUMERO_FATURA), DataDeEmissao = DateTime.UtcNow, NumeroDoContrato = contrato.Numero, CnpjDoCliente = contrato.CnpjDoCliente, RazaoSocialDoCliente = contrato.RazaoSocialDoCliente, MunicipioDoCliente = contrato.MunicipioDoCliente, UfDoCliente = contrato.UfDoCliente, ValorTotal = valorTotal }; repositorioDeFaturas.AdicionarObjeto(fatura); // salvar repositorioDeItensDeFatura.SalvarLote(); repositorioDeFaturas.SalvarLote(); }
private void GerarFaturamento(int ano, int mes, Contrato contrato, IEnumerable<ItemDeContrato> itensDoContrato, IEnumerable<Movimento> movimentoDoContrato) { int TODO_SERIE = 1; int TODO_NUMERO_FATURA = contrato.Numero; int numeroItemDeFatura = 0; double valorTotal = 0; var repositorioDeFaturas = new RepositorioDeFaturas(); var repositorioDeItensDeFatura = new RepositorioDeItensDeFatura(); // incluir itens de contrato foreach (ItemDeContrato itemDeContrato in itensDoContrato) { numeroItemDeFatura++; var itemDeFatura = new ItemDeFatura { PartitionKey = ItemDeFatura.ObterPartitionKey(ano, mes), RowKey = ItemDeFatura.ObterRowKey(TODO_SERIE, TODO_NUMERO_FATURA, numeroItemDeFatura), Produto = itemDeContrato.Produto, Quantidade = 1, ValorUnitario = itemDeContrato.Valor, ValorTotal = itemDeContrato.Valor }; valorTotal += itemDeFatura.ValorTotal; repositorioDeItensDeFatura.AdicionarObjeto(itemDeFatura); } // incluir itens de movimento foreach (Movimento movimento in movimentoDoContrato) { numeroItemDeFatura++; var itemDeFatura = new ItemDeFatura { PartitionKey = ItemDeFatura.ObterPartitionKey(ano, mes), RowKey = ItemDeFatura.ObterRowKey(TODO_SERIE, TODO_NUMERO_FATURA, numeroItemDeFatura), Produto = movimento.Produto, Quantidade = movimento.Quantidade, ValorUnitario = movimento.ValorUnitario, ValorTotal = movimento.ValorTotal }; valorTotal += itemDeFatura.ValorTotal; repositorioDeItensDeFatura.AdicionarObjeto(itemDeFatura); } // incluir registro mestre da fatura var fatura = new Fatura { PartitionKey = Fatura.ObterPartitionKey(ano, mes), RowKey = Fatura.ObterRowKey(TODO_SERIE, TODO_NUMERO_FATURA), DataDeEmissao = DateTime.UtcNow, NumeroDoContrato = contrato.Numero, CnpjDoCliente = contrato.CnpjDoCliente, RazaoSocialDoCliente = contrato.RazaoSocialDoCliente, MunicipioDoCliente = contrato.MunicipioDoCliente, UfDoCliente = contrato.UfDoCliente, ValorTotal = valorTotal }; repositorioDeFaturas.AdicionarObjeto(fatura); // salvar repositorioDeItensDeFatura.SalvarLote(); repositorioDeFaturas.SalvarLote(); }