Beispiel #1
0
 public static string ObterRowKey(int serie, int numeroFatura, int numeroItemDeFatura)
 {
     return(Fatura.ObterRowKey(serie, numeroFatura) + "-" + numeroItemDeFatura.ToString().PadLeft(10, '0'));
 }
        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();
        }