/// <summary> /// /// </summary> public override UtilRetorno validar(MovimentoOperacaoDTO Transacao) { var ValidacaoContas = this.validarContas(Transacao); if (ValidacaoContas.flagError) { return(ValidacaoContas); } if (Transacao.MembroDestino.nroAssociado != 1) { return(UtilRetorno.newInstance(true, "As compras devem ser feitas junto ao usuário SINCTEC.")); } var MovimentoResumo = new MovimentoResumoVW(); MovimentoResumo.idTipoTransacao = (byte)TipoTransacaoEnum.PRODUTOS_LINKEY; MovimentoResumo.descricaoTipoTransacao = "Pagamento Produtos SINCTEC"; MovimentoResumo.captarDados(Transacao); return(UtilRetorno.newInstance(false, "", MovimentoResumo)); }
/// <summary> /// /// </summary> public override UtilRetorno validar(MovimentoOperacaoDTO Transacao) { var ValidacaoContas = this.validarContas(Transacao); if (ValidacaoContas.flagError) { return(ValidacaoContas); } if (Transacao.MembroOrigem.idTipoCadastro == (byte)AssociadoTipoCadastroEnum.CONSUMIDOR && Transacao.MembroDestino.idTipoCadastro == (byte)AssociadoTipoCadastroEnum.COMERCIANTE) { return(UtilRetorno.newInstance(true, "A operação de transferência para estabelecimentos não é permitida.")); } var MovimentoResumo = new MovimentoResumoVW(); MovimentoResumo.idTipoTransacao = (byte)TipoTransacaoEnum.TRANSFERÊNCIA; MovimentoResumo.descricaoTipoTransacao = "Transferência"; MovimentoResumo.captarDados(Transacao); return(UtilRetorno.newInstance(false, "", MovimentoResumo)); }
/// <summary> /// /// </summary> public override UtilRetorno validar(MovimentoOperacaoDTO Transacao) { var ValidacaoContas = this.validarContas(Transacao); if (ValidacaoContas.flagError) { return(ValidacaoContas); } if (Transacao.MembroDestino.idTipoCadastro == (byte)AssociadoTipoCadastroEnum.CONSUMIDOR) { return(UtilRetorno.newInstance(true, "A conta destino não pertence à um estabelecimento comercial.")); } var MovimentoResumo = new MovimentoResumoVW(); MovimentoResumo.idTipoTransacao = (byte)TipoTransacaoEnum.PAGAMENTO; MovimentoResumo.descricaoTipoTransacao = "Pagamento"; MovimentoResumo.captarDados(Transacao); return(UtilRetorno.newInstance(false, "", MovimentoResumo)); }
/// <summary> /// /// </summary> public static MovimentoResumoVW captarDados(this MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao) { MovimentoResumo.valorOperacao = Transacao.valorOperacao; MovimentoResumo.valorOperacaoFormatado = Transacao.valorOperacao.ToString("F2"); MovimentoResumo.idMembroOrigem = Transacao.MembroOrigem.id; MovimentoResumo.idPessoaOrigem = Transacao.MembroOrigem.idPessoa; MovimentoResumo.nroMembroOrigem = Transacao.MembroOrigem.nroAssociado; MovimentoResumo.nomeMembroOrigem = (Transacao.MembroOrigem?.Pessoa?.nome); MovimentoResumo.nroDocumentoMembroOrigem = (Transacao.MembroOrigem?.Pessoa?.nroDocumento); MovimentoResumo.idMembroDestino = Transacao.MembroDestino.id; MovimentoResumo.idPessoaDestino = Transacao.MembroDestino.idPessoa; MovimentoResumo.nroMembroDestino = Transacao.MembroDestino.nroAssociado; MovimentoResumo.nomeMembroDestino = Transacao.MembroDestino.Pessoa.nome; MovimentoResumo.nroDocumentoMembroDestino = Transacao.MembroDestino.Pessoa.nroDocumento; MovimentoResumo.idOrigem = Transacao.idOrigem; return(MovimentoResumo); }
/// <summary> /// /// </summary> public override UtilRetorno validar(MovimentoOperacaoDTO Transacao) { var ValidacaoDestino = this.validarDestino(Transacao); if (ValidacaoDestino.flagError) { return(ValidacaoDestino); } ValidacaoDestino = this.validarSaldoOrigem(Transacao); if (ValidacaoDestino.flagError) { return(ValidacaoDestino); } var MovimentoResumo = new MovimentoResumoVW(); MovimentoResumo.idTipoTransacao = Transacao.idTipoTransacao ?? (byte)TipoTransacaoEnum.LANCAMENTO_DEBITO; MovimentoResumo.descricaoTipoTransacao = "Lançamento de Débito"; MovimentoResumo.captarDados(Transacao); return(UtilRetorno.newInstance(false, "", MovimentoResumo)); }
/// <summary> /// /// </summary> public List <Movimento> criarMovimentos(MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao) { var TransacaoProdutoInterno = this.carregarDistribuicaoRede(Transacao); var MovimentoOrigem = gerarMovimentoOrigem(MovimentoResumo, Transacao); var MovimentoDestino = gerarMovimentoDestino(MovimentoResumo, Transacao, TransacaoProdutoInterno); var MovimentoRede = this.gerarMovimentosRede(MovimentoOrigem, TransacaoProdutoInterno); MovimentoDestino.percentualMovimentoPrincipal = decimal.Subtract(new decimal(100), MovimentoRede.carregarPercentualDistribuido()); MovimentoDestino.valor = decimal.Subtract(Transacao.valorOperacao, MovimentoRede.carregarValorDistribuido()); MovimentoDestino.observacao = $"Recebimento de {MovimentoDestino.percentualMovimentoPrincipal:N2} de {Transacao.valorOperacao:N2} produto SINCTEC"; if (!Transacao.flagPagamentoComBitkink) { MovimentoOrigem.valor = new decimal(0); MovimentoOrigem.observacao = $"Compra de Produto SINCTEC sem usar BTK"; MovimentoDestino.valor = new decimal(0); MovimentoDestino.observacao = $"Pagamento de Produto SINCTEC sem receber BTK"; } MovimentoRede.listaMovimentoRede = MovimentoRede.listaMovimentoRede.Where(x => x.idMembroDestino > 0 && x.valor > 0) .ToList(); var listaItens = new List <Movimento>(); listaItens.Add(MovimentoOrigem); listaItens.Add(MovimentoDestino); listaItens.AddRange(MovimentoRede.listaMovimentoRede); foreach (var item in listaItens) { if (item.flagMovimentoOrigem == true) { continue; } item.flagDebito = false; item.flagCredito = true; item.observacao = item.observacao.abreviar(100); item.setDefaultInsertValues(); } return(listaItens); }
/// <summary> /// /// </summary> private Movimento gerarMovimentoDestino(MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao, TransacaoProdutoInterno TransacaoProdutoInterno) { var MovimentoDestino = new Movimento(); MovimentoDestino.captarDadosDestino(MovimentoResumo); MovimentoDestino.valor = TransacaoProdutoInterno.valorInterno; MovimentoDestino.observacao = $"{TransacaoProdutoInterno.percentualTotalInterno:N4}% de {Transacao.valorOperacao:N4}"; MovimentoDestino.idTipoTransacao = (byte)TipoTransacaoEnum.PRODUTOS_LINKEY; MovimentoDestino.setDefaultInsertValues(); MovimentoDestino.flagMovimentoDestino = true; return(MovimentoDestino); }
/// <summary> /// /// </summary> private Movimento gerarMovimentoOrigem(MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao) { var MovimentoOrigem = new Movimento(); MovimentoOrigem.captarDadosOrigem(MovimentoResumo); MovimentoOrigem.idTipoTransacao = (byte)TipoTransacaoEnum.PRODUTOS_LINKEY; MovimentoOrigem.setDefaultInsertValues(); MovimentoOrigem.flagMovimentoOrigem = true; return(MovimentoOrigem); }
/// <summary> /// /// </summary> public static Movimento captarDadosDestinoDebito(this Movimento Movimento, MovimentoResumoVW MovimentoResumo) { Movimento.idMembroOrigem = null; Movimento.idPessoaOrigem = null; Movimento.idMembroDestino = MovimentoResumo.idMembroDestino; Movimento.idPessoaDestino = MovimentoResumo.idPessoaDestino; Movimento.valor = MovimentoResumo.valorOperacao; Movimento.flagDebito = true; Movimento.flagCredito = false; return(Movimento); }
private string gerarLinhaExcel(MovimentoResumoVW OMovimento) { StringBuilder linha = new StringBuilder(); linha.Append(OMovimento.idMovimento).Append(";") .Append(OMovimento.dtCadastro.exibirData(true)).Append(";") .Append(OMovimento.nroMembroOrigem).Append(";") .Append(OMovimento.nomeMembroOrigem).Append(";") .Append(OMovimento.nroMembroDestino).Append(";") .Append(OMovimento.nomeMembroDestino).Append(";") .Append(OMovimento.descricaoTipoTransacao).Append(";") .Append(OMovimento.flagCredito == true ? "Crédito" : "Débito").Append(";") .Append(OMovimento.valorOperacao.toDecimal().ToString("F4")).Append(";") .Append(OMovimento.dtIntegracaoSaldo.exibirData(true)).Append(";") .Append(OMovimento.observacao).Append(";"); return(linha.ToString()); }
/// <summary> /// /// </summary> public UtilRetorno debitar(MovimentoResumoVW MovimentoResumo) { var MovimentoDestino = new Movimento(); MovimentoDestino.captarDadosDestinoDebito(MovimentoResumo); MovimentoDestino.idTipoTransacao = MovimentoResumo.idTipoTransacao; MovimentoDestino.setDefaultInsertValues(); var listaItens = new List <Movimento>(); listaItens.Add(MovimentoDestino); db.Movimento.AddRange(listaItens); var Retorno = db.validateAndSave(); if (Retorno.flagError) { return(Retorno); } return(UtilRetorno.newInstance(false, "", listaItens)); }
/// <summary> /// /// </summary> public UtilRetorno transferir(MovimentoResumoVW MovimentoResumo) { var MovimentoOrigem = new Movimento(); MovimentoOrigem.captarDadosOrigem(MovimentoResumo); MovimentoOrigem.idTipoTransacao = (byte)TipoTransacaoEnum.TRANSFERÊNCIA; var MovimentoDestino = new Movimento(); MovimentoDestino.captarDadosDestino(MovimentoResumo); MovimentoDestino.idTipoTransacao = (byte)TipoTransacaoEnum.TRANSFERÊNCIA; MovimentoOrigem.setDefaultInsertValues(); MovimentoDestino.setDefaultInsertValues(); var listaItens = new List <Movimento>(); listaItens.Add(MovimentoOrigem); listaItens.Add(MovimentoDestino); db.Movimento.AddRange(listaItens); var Retorno = db.validateAndSave(); if (Retorno.flagError) { return(Retorno); } db.Movimento.Where(x => x.id == MovimentoDestino.id).Update(x => new Movimento { idMovimentoPrincipal = MovimentoOrigem.id }); return(UtilRetorno.newInstance(false, "", listaItens)); }
/// <summary> /// /// </summary> public UtilRetorno pagar(MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao) { var listaMovimentos = this.criarMovimentos(MovimentoResumo, Transacao); var MovimentoOrigem = listaMovimentos.FirstOrDefault(x => x.flagMovimentoOrigem); var MovimentoDestino = listaMovimentos.FirstOrDefault(x => x.flagMovimentoDestino); var listaMovimentoRede = listaMovimentos.Where(x => !x.flagMovimentoDestino && !x.flagMovimentoOrigem).ToList(); if (MovimentoOrigem == null) { return(UtilRetorno.newInstance(true, "O movimento de origem não pôde ser carregado.")); } if (MovimentoDestino == null) { return(UtilRetorno.newInstance(true, "O movimento de destino não pôde ser carregado.")); } using (var context = new DataContext()){ using (var transaction = context.Database.BeginTransaction()){ try{ context.Movimento.Add(MovimentoOrigem); context.SaveChanges(); MovimentoDestino.idMovimentoPrincipal = MovimentoOrigem.id; MovimentoDestino.valorMovimentoPrincipal = MovimentoOrigem.valor; context.Movimento.Add(MovimentoDestino); if (listaMovimentoRede.Any()) { listaMovimentoRede.ForEach(item => { item.idMovimentoPrincipal = MovimentoOrigem.id; item.idOrigem = MovimentoOrigem.idOrigem; item.idMovimentoPrincipal = MovimentoOrigem.id; item.valorMovimentoPrincipal = MovimentoOrigem.valor; }); context.Movimento.AddRange(listaMovimentoRede); } context.SaveChanges(); transaction.Commit(); listaMovimentos.Clear(); listaMovimentos.Add(MovimentoOrigem); listaMovimentos.Add(MovimentoDestino); listaMovimentos.AddRange(listaMovimentoRede); }catch (Exception) { transaction.Rollback(); return(UtilRetorno.newInstance(true, "Houve problemas ao tentar realizar a transação para salvar os movimentos.")); } } } return(UtilRetorno.newInstance(false, "", listaMovimentos)); }
/// <summary> /// /// </summary> public UtilRetorno pagar(MovimentoResumoVW MovimentoResumo, MovimentoOperacaoDTO Transacao) { var MovimentoOrigem = new Movimento(); MovimentoOrigem.captarDadosOrigem(MovimentoResumo); MovimentoOrigem.idTipoTransacao = (byte)TipoTransacaoEnum.PAGAMENTO; MovimentoOrigem.setDefaultInsertValues(); db.Movimento.Add(MovimentoOrigem); db.SaveChanges(); var listaItens = new List <Movimento>(); var ValoresTransacao = this.carregarValores(Transacao); var MovimentoDestino = new Movimento(); MovimentoDestino.captarDadosDestino(MovimentoResumo); MovimentoDestino.valor = ValoresTransacao.valorEstabelecimento; MovimentoDestino.observacao = $"{ValoresTransacao.valorPagamento:N2} com {ValoresTransacao.percentualDescontoEstabelecimento:N2} de desconto."; MovimentoDestino.idTipoTransacao = (byte)TipoTransacaoEnum.PAGAMENTO; MovimentoDestino.setDefaultInsertValues(); listaItens.Add(MovimentoDestino); if (ValoresTransacao.valorCashback > 0) { var MovimentoCashback = new Movimento(); MovimentoCashback.captarDadosOrigem(MovimentoResumo); MovimentoCashback.valor = ValoresTransacao.valorCashback; MovimentoCashback.idTipoTransacao = (byte)TipoTransacaoEnum.CASHBACK; MovimentoCashback.setDefaultInsertValues(); listaItens.Add(MovimentoCashback); } if (ValoresTransacao.valorComissaoCorretor > 0) { var MovimentoCorretor = new Movimento(); MovimentoCorretor.idMembroOrigem = MovimentoDestino.idMembroDestino; MovimentoCorretor.idPessoaOrigem = MovimentoDestino.idPessoaDestino; MovimentoCorretor.idMembroDestino = Transacao.MembroDestino.idIndicador ?? 1; MovimentoCorretor.idPessoaDestino = null; MovimentoCorretor.valor = ValoresTransacao.valorComissaoCorretor; MovimentoCorretor.idTipoTransacao = (byte)TipoTransacaoEnum.COMISSAO_COMPRA_ESTABELECIMENTO; MovimentoCorretor.setDefaultInsertValues(); listaItens.Add(MovimentoCorretor); } if (ValoresTransacao.valorLinkey > 0) { var MovimentoLinkey = new Movimento(); MovimentoLinkey.idMembroOrigem = MovimentoOrigem.idMembroDestino; MovimentoLinkey.idPessoaOrigem = MovimentoOrigem.idPessoaDestino; MovimentoLinkey.idMembroDestino = 1; MovimentoLinkey.idPessoaDestino = null; MovimentoLinkey.valor = ValoresTransacao.valorLinkey; MovimentoLinkey.observacao = "Remuneração da SINCTEC"; MovimentoLinkey.idTipoTransacao = (byte)TipoTransacaoEnum.PAGAMENTO; MovimentoLinkey.setDefaultInsertValues(); listaItens.Add(MovimentoLinkey); } if (ValoresTransacao.valorComissaoIndicador1 > 0) { var MovimentoIndicador1 = new Movimento(); MovimentoIndicador1.idMembroOrigem = MovimentoOrigem.idMembroDestino; MovimentoIndicador1.idPessoaOrigem = MovimentoOrigem.idPessoaDestino; MovimentoIndicador1.idMembroDestino = Transacao.MembroOrigem.idIndicador ?? 1; MovimentoIndicador1.idPessoaDestino = null; MovimentoIndicador1.valor = ValoresTransacao.valorComissaoIndicador1; MovimentoIndicador1.idTipoTransacao = (byte)TipoTransacaoEnum.COMISSAO_COMPRA_USUARIO; MovimentoIndicador1.observacao = "Indicação comprador nível 1"; MovimentoIndicador1.setDefaultInsertValues(); listaItens.Add(MovimentoIndicador1); } if (ValoresTransacao.valorComissaoIndicador2 > 0) { var MovimentoIndicador2 = new Movimento(); MovimentoIndicador2.idMembroOrigem = MovimentoOrigem.idMembroDestino; MovimentoIndicador2.idPessoaOrigem = MovimentoOrigem.idPessoaDestino; MovimentoIndicador2.idMembroDestino = Transacao.MembroOrigem.idIndicadorSegundoNivel ?? 1; MovimentoIndicador2.idPessoaDestino = null; MovimentoIndicador2.valor = ValoresTransacao.valorComissaoIndicador2; MovimentoIndicador2.idTipoTransacao = (byte)TipoTransacaoEnum.COMISSAO_COMPRA_USUARIO; MovimentoIndicador2.observacao = "Indicação comprador nível 2"; MovimentoIndicador2.setDefaultInsertValues(); listaItens.Add(MovimentoIndicador2); } if (ValoresTransacao.valorComissaoIndicador3 > 0) { var MovimentoIndicador3 = new Movimento(); MovimentoIndicador3.idMembroOrigem = MovimentoOrigem.idMembroDestino; MovimentoIndicador3.idPessoaOrigem = MovimentoOrigem.idPessoaDestino; MovimentoIndicador3.idMembroDestino = Transacao.MembroOrigem.idIndicadorTerceiroNivel ?? 1; MovimentoIndicador3.idPessoaDestino = null; MovimentoIndicador3.valor = ValoresTransacao.valorComissaoIndicador3; MovimentoIndicador3.idTipoTransacao = (byte)TipoTransacaoEnum.COMISSAO_COMPRA_USUARIO; MovimentoIndicador3.observacao = "Indicação comprador nível 3"; MovimentoIndicador3.setDefaultInsertValues(); listaItens.Add(MovimentoIndicador3); } listaItens.ForEach(item => { item.flagDebito = false; item.flagCredito = true; item.idOrigem = MovimentoOrigem.idOrigem; item.idMovimentoPrincipal = MovimentoOrigem.id; item.valorMovimentoPrincipal = MovimentoOrigem.valor; item.observacao = item.observacao.abreviar(100); }); db.Movimento.AddRange(listaItens); var Retorno = db.validateAndSave(); if (Retorno.flagError) { return(Retorno); } //Adicionaro primeiro movimento para os próximos processos listaItens.Add(MovimentoOrigem); return(UtilRetorno.newInstance(false, "", listaItens)); }