private void Salvar() { Formas_pagamento fp = (int.Parse(txCod.Text) == 0 ? new Formas_pagamento() : controller.Find(int.Parse(txCod.Text))); fp.Id = int.Parse(txCod.Text); fp.Descricao = txDescricao.Text; fp.Tipo_pagamento = cbTipo_pagamento.SelectedIndex; fp.Tipo_intervalo = cbTipo_intervalo.SelectedIndex; switch (fp.Tipo_intervalo) { case (int)Tipo_intervalo.DATA_BASE: fp.Dia_base = int.Parse(txInterv_diaBase.Text); break; case (int)Tipo_intervalo.INTERVALO: fp.Intervalo = int.Parse(txInterv_diaBase.Text); break; } fp.Parcelas = int.Parse(txParcelas.Text); fp.Operadora_cartao_id = int.Parse(txCod_operadora.Text); fp.Conta_id = int.Parse(txCod_conta.Text); if (controller.Save(fp)) { LimparCampos(); } }
public bool Save(Formas_pagamento pg) { try { if (!Valid(pg)) { return(false); } if (db.Find(pg.Id) == null) { pg.Id = db.NextId(e => e.Id); db.Save(pg); } else { db.Update(pg); } db.Commit(); BStatus.Success("Forma de pagamento salva"); return(true); } catch { return(false); } }
public EntradaValorCaixa(Tipo_movimentacao_caixa tipo) { InitializeComponent(); txValor_movimentacao.ToMoney(); txCod_usuario.Text = UsuariosController.UsuarioAtual.Id.ToString(); txNome_usuario.Text = UsuariosController.UsuarioAtual.Nome; formaPagController = new Formas_pagamentoController(); int tpDinheiro = (int)Tipo_pagamento.DINHEIRO; Formas_pagamento formaPg = formaPagController.Get(e => e.Tipo_pagamento == tpDinheiro); txCod_forma_pagamento.Text = formaPg.Id.ToString(); txDescricao_forma_pagamento.Text = formaPg.Descricao; txDescricao_movimento.Focus(); Tipo_movimentacao = tipo; if (tipo == Tipo_movimentacao_caixa.ENTRADA) { lbTitulo.Content = "Entrada de valor no caixa"; } if (tipo == Tipo_movimentacao_caixa.SAIDA) { lbTitulo.Content = "Retirada de valor no caixa"; } }
public bool Remove(int id) { try { Formas_pagamento fp = Find(id); if (fp.Movimentos_caixas.Count > 0) { BStatus.Alert("Não é possível excluir esta condição de pagamento. Ela está presente em uma ou mais movimentações de caixa"); return(false); } if (fp.Itens_pagamento.Count > 0) { BStatus.Alert("Não é possível excluir esta condição de pagamento. Ela está presente em um ou mais movimentos"); return(false); } if (fp.Pagamentos_lancamentos.Count > 0) { BStatus.Alert("Não é possível excluir esta condição de pagamento. Ela está presente em um ou mais lançamentos financeiros"); return(false); } db.Remove(fp); db.Commit(); BStatus.Success("Forma de pagamento removida"); return(true); } catch { return(false); } }
private bool Valid(Formas_pagamento pg) { if (string.IsNullOrWhiteSpace(pg.Descricao)) { BStatus.Alert("A descrição da forma de pagamento é obrigatória"); return(false); } if (pg.Tipo_pagamento == (int)Tipo_pagamento.CREDITO) { if (pg.Tipo_intervalo == (int)Tipo_intervalo.DATA_BASE) { if ((pg.Dia_base > 31) || (pg.Dia_base < 1)) { BStatus.Alert("O dia base não pode ser menor que 1 ou passar de 31 "); return(false); } } if (pg.Tipo_intervalo == (int)Tipo_intervalo.INTERVALO) { if (pg.Intervalo < 1) { BStatus.Alert("O intervalo não pode ser inferior a 1"); return(false); } } } if (pg.Tipo_pagamento == (int)Tipo_pagamento.CARTAO) { if (pg.Operadora_cartao_id == 0) { BStatus.Alert("Informe a operadora de cartão"); return(false); } } if (pg.Tipo_pagamento == (int)Tipo_pagamento.CHEQUE) { if (pg.Conta_id == 0) { BStatus.Alert("Uma conta do tipo BANCÁRIA é necessária para o tipo pagamento CHEQUE"); return(false); } Contas conta = new ContasController().Find(pg.Conta_id); if (conta.Tipo != (int)Tipo_conta.CONTA_BANCARIA) { BStatus.Alert("Uma conta do tipo BANCÁRIA é necessária para o tipo pagamento CHEQUE"); return(false); } } return(true); }
public ItemFpgFechamentoCaixa(Formas_pagamento fpg, decimal valor) { InitializeComponent(); lbForma_pagamento.Content = fpg.Descricao; Valor_esperado = valor; Forma_pagamento = fpg; txValor.ToMoney(); }
private void prev_Click(object sender, RoutedEventArgs e) { int id = int.Parse(txCod.Text); if ((id - 1) <= 0) { LimparCampos(); return; } Formas_pagamento fpg = controller.Prev(id); FillFpg(fpg); }
private void Selecionar() { Formas_pagamento f = (Formas_pagamento)dataGrid.SelectedItem; if (f == null) { return; } if (f.Id == 0) { return; } Selecionado = f; Close(); }
public List <KeyValuePair <Formas_pagamento, decimal> > GetTotaisPorFormaPagamentoCaixaAtual() { int ultmaAbertura = GetUltimoMovimentoAbertura().Id; int caixa_id = Get_ID_CaixaAtualUsuario(); int tipoMov_abertura = (int)Tipo_movimentacao_caixa.ABERTURA; List <Movimentos_caixas> movimentos = GetMovimentosCaixaAtual(); List <Movimentos_caixas> distinctFormaPg = movimentos.GroupBy(e => e.Forma_pagamento_id).Select(mov => mov.First()).ToList(); List <KeyValuePair <Formas_pagamento, decimal> > result = new List <KeyValuePair <Formas_pagamento, decimal> >(); Formas_pagamentoController fpgController = new Formas_pagamentoController(); foreach (Movimentos_caixas mov in distinctFormaPg) { Formas_pagamento fpg = fpgController.Find(mov.Forma_pagamento_id); result.Add(new KeyValuePair <Formas_pagamento, decimal>(fpg, movimentos.Where(e => e.Forma_pagamento_id == mov.Forma_pagamento_id).Sum(e => e.Valor))); } return(result); }
private void FillFpg(Formas_pagamento fpg) { if (fpg == null) { return; } LimparCampos(); txCod.Text = fpg.Id.ToString(); txDescricao.Text = fpg.Descricao; cbTipo_intervalo.SelectedIndex = fpg.Tipo_intervalo; cbTipo_pagamento.SelectedIndex = fpg.Tipo_pagamento; txParcelas.Text = fpg.Parcelas.ToString(); if (fpg.Conta_id > 0) { Contas conta = new ContasController().Find(fpg.Conta_id); txCod_conta.Text = conta.Id.ToString(); txConta.Text = conta.Nome; } if (fpg.Tipo_intervalo == (int)Tipo_intervalo.DATA_BASE) { lbIntervalo_diaBase.Content = "Dia base"; txInterv_diaBase.Text = fpg.Dia_base.ToString(); } else { lbIntervalo_diaBase.Content = "Intervalo (dias)"; txInterv_diaBase.Text = fpg.Intervalo.ToString(); } if (fpg.Operadora_cartao_id > 0) { Operadoras_cartao op = new Operadoras_cartaoController().Find(fpg.Operadora_cartao_id); txCod_operadora.Text = op.Id.ToString(); txNome_operadora.Text = op.Nome; } if (fpg.Tipo_pagamento == (int)Tipo_pagamento.DINHEIRO) { cbTipo_intervalo.IsEnabled = false; txInterv_diaBase.IsEnabled = false; txParcelas.IsEnabled = false; btSelecionarOperadora.IsEnabled = false; } if (fpg.Tipo_pagamento == (int)Tipo_pagamento.CREDITO) { cbTipo_intervalo.IsEnabled = false; txInterv_diaBase.IsEnabled = false; txParcelas.IsEnabled = false; btSelecionarOperadora.IsEnabled = false; btSelecionarConta.IsEnabled = false; } if (fpg.Tipo_pagamento == (int)Tipo_pagamento.CHEQUE) { cbTipo_intervalo.IsEnabled = true; txInterv_diaBase.IsEnabled = true; txParcelas.IsEnabled = true; btSelecionarOperadora.IsEnabled = false; btSelecionarConta.IsEnabled = true; } if (fpg.Tipo_pagamento == (int)Tipo_pagamento.PRAZO) { cbTipo_intervalo.IsEnabled = true; txInterv_diaBase.IsEnabled = true; txParcelas.IsEnabled = true; btSelecionarOperadora.IsEnabled = false; btSelecionarConta.IsEnabled = true; } if (fpg.Tipo_intervalo == (int)Tipo_pagamento.CARTAO) { cbTipo_intervalo.IsEnabled = false; txInterv_diaBase.IsEnabled = false; txParcelas.IsEnabled = false; btSelecionarOperadora.IsEnabled = true; btSelecionarConta.IsEnabled = true; } txDescricao.Focus(); }
private void next_Click(object sender, RoutedEventArgs e) { Formas_pagamento fpg = controller.Next(int.Parse(txCod.Text)); FillFpg(fpg); }
private void Setup() { Movimentos_caixasController mc_controller = new Movimentos_caixasController(); if (!mc_controller.CaixaAberto(UsuariosController.UsuarioAtual.Id)) { AberturaCaixa ac = new AberturaCaixa(); ac.ShowDialog(); if (!ac.CaixaAberto) { Close(); } } txProduto.Focus(); Pago = false; txQuant.ToMoney(); txQuant.IsEnabled = false; btPagamento.IsEnabled = false; btCliente.IsEnabled = false; string parametroAtual = ""; try { ParametrosController parametros = new ParametrosController(); Tipos_movimentoController tmvController = new Tipos_movimentoController(); Formas_pagamentoController fpgController = new Formas_pagamentoController(); #region Parametro TP_PDV Parametros paramTipoPdv = parametros.FindParametroLojaAtual("TP_PDV", true); if (paramTipoPdv == null) { paramTipoPdv = parametros.FindParametroLojaAtual("TP_PDV", false); } if (paramTipoPdv == null) { MessageBox.Show("Não é possível iniciar o PDV por que o parâmetro de sistema 'TP_PDV' não foi atribuido.", "TP_PDV", MessageBoxButton.OK, MessageBoxImage.Exclamation); Close(); } if (string.IsNullOrEmpty(paramTipoPdv.Valor)) { MessageBox.Show("Não é possível iniciar o PDV por que o parâmetro de sistema 'TP_PDV' não foi atribuido.", "TP_PDV", MessageBoxButton.OK, MessageBoxImage.Exclamation); Close(); } if (paramTipoPdv.Valor != "PDV" && paramTipoPdv.Valor != "PDP") { MessageBox.Show("Não é possível iniciar o PDV por que o valor do parâmetro de sistema 'TP_PDV' não pôde ser reconhecido.", "TP_PDV", MessageBoxButton.OK, MessageBoxImage.Exclamation); Close(); } Tipo_pdv = (paramTipoPdv.Valor == "PDV" ? Tipo_PDV.PDV : Tipo_PDV.PDP); #endregion #region PAGAMENTOS List <Parametros> parametrosPagamentos = parametros.ParametrosPagamentoPDV(); foreach (Parametros param in parametrosPagamentos) { if (param.Valor == null || param.Valor == "0" || param.Valor == "" || param.Valor == "NA") { continue; } Formas_pagamento fpg = fpgController.Find(int.Parse(param.Valor)); if (fpg == null) { continue; } Atalhos_pagamentos.Add(new KeyValuePair <int, Formas_pagamento>(int.Parse(param.Nome.Replace("PDV_F", string.Empty)), fpg)); } #endregion #region TMV VENDA Parametros pTmvVenda = parametros.FindParametroLojaAtual("TMV_VNDPDV", true); parametroAtual = "TMV_VNDPDV"; if (pTmvVenda == null) { pTmvVenda = parametros.FindParametroLojaAtual("TMV_VNDPDV", false); if (pTmvVenda == null) { MessageBox.Show("Não é possível iniciar o PDV porque o parâmetro de sistema 'TMV_VNDPDV' não foi atribuido para este computador. \nAcione o suporte Doware.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error); Close(); } } if (pTmvVenda.Valor == null || pTmvVenda.Valor == "0" || pTmvVenda.Valor == "") { MessageBox.Show("O parâmetro de sistema 'TMV_VNDPDV' não foi informado corretamente ou não foi reconhecido. \nAcione o suporte Doware.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error); Close();; } Tipos_movimento tmvVenda = tmvController.Find(int.Parse(pTmvVenda.Valor)); if (tmvVenda == null) { MessageBox.Show("O tipo de movimento para VENDA informado no parâmetro 'TMV_VNDPDV' não existe. \nAcione o suporte Doware.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error); Close(); } if (tmvVenda.Movimentacao_itens != (int)Tipo_movimentacao.SAIDA) { MessageBox.Show(@"Não é possível iniciar o PDV por que o Tipo de Movimento designado para operações de de VENDA no parâmetro 'TMV_VNDPDV' não é compatível. A operação de VENDA requer um Tipo de Movimento cujo a movimentação de produtos é SAIDA. Acione o suporte Doware.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error); Close(); } Tipo_movimento_id_venda = tmvVenda; #endregion #region TMV DEVOLUCAO Parametros pDevolucao = parametros.FindParametroLojaAtual("TMV_DEVPDV", true); parametroAtual = "TMV_DEVPDV"; if (pDevolucao == null) { pDevolucao = parametros.FindParametroLojaAtual("TMV_DEVPDV", false); if (pDevolucao == null) { MessageBox.Show("Não é possivel iniciar o PDV porque o parâmetro de sistema 'TMV_DEVPDV' não foi atribuido para este computador. \nAcione o suporte Doware.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error); Close(); } } if (pDevolucao.Valor == null || pDevolucao.Valor == "0" || pDevolucao.Valor == "") { MessageBox.Show("Não é possível iniciar o PDV porque o parâmetro de sistema 'TMV_DEVPDV' não foi atribuido ou seu valor não foi reconhecido. \nAcione o suporte Doware.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error); Close(); } Tipos_movimento tmvDevolucao = tmvController.Find(int.Parse(pDevolucao.Valor)); if (tmvDevolucao == null) { MessageBox.Show("Não é possível iniciar o PDV porque o Tipo de Movimento informado no parâmetro de sistema 'TMV_DEVPDV' não existe. \nAcione o suporte Doware.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error); Close(); } if (tmvDevolucao.Movimentacao_itens != (int)Tipo_movimentacao.ENTRADA) { MessageBox.Show(@"Não é possível iniciar o PDV por que o Tipo de Movimento designado para operações de de DEVOLUÇÃO no parâmetro 'TMV_DEVPDV' não é compatível. A operação de DEVOLUÇÃO requer um Tipo de Movimento cujo a movimentação de produtos é ENTRADA. Acione o suporte Doware.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error); Close(); } Tipo_movimento_id_devolucao = tmvDevolucao; #endregion } catch (Exception ex) { MessageBox.Show("Não é possível iniciar o PDV porque o parâmetro de sistema '" + parametroAtual + "' não foi informado corretamente ou seu valor não pôde ser reconhecido. \nAcione o suporte Doware.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error); Close(); } }
/// <summary> /// /// </summary> /// <returns>Código do movimento caso seja efetuado com sucesso. Caso haja erros, retornará 0.</returns> public int FechaMovimento(decimal troco) { UnitOfWork unit = new UnitOfWork(true); try { unit.BeginTransaction(); db.Context = unit.Context; if (itens_mov == null) { itens_mov = Movimento.Itens_movimento.ToList(); } Movimento.Itens_movimento.Clear(); if (itens_pag == null) { itens_pag = Movimento.Itens_pagamento.ToList(); } Movimento.Itens_pagamento.Clear(); Movimentos_caixasController movimentos_caixaController = new Movimentos_caixasController(); movimentos_caixaController.SetContext(unit.Context); Formas_pagamentoController fpg_controller = new Formas_pagamentoController(); fpg_controller.SetContext(unit.Context); Tipos_movimentoController tmc = new Tipos_movimentoController(); tmc.SetContext(unit.Context); Tipos_movimento tipo_mov = tmc.Find(Movimento.Tipo_movimento_id); Movimento.Id = db.NextId(e => e.Id); Movimento.Data = DateTime.Now; Movimento.Usuario_id = UsuariosController.UsuarioAtual.Id; Movimento.Loja_id = UsuariosController.LojaAtual.Id; db.Save(Movimento); db.Commit(); if (troco > 0) { int tipo_pg_dinheiro = (int)Tipo_pagamento.DINHEIRO; Formas_pagamento fpgTroco = fpg_controller.Get(e => e.Tipo_pagamento == tipo_pg_dinheiro); Movimentos_caixas mcTroco = new Movimentos_caixas(); mcTroco.Descricao = $"Movimento {Movimento.Id} (TROCO)"; mcTroco.Caixa_id = movimentos_caixaController.Get_ID_CaixaAtualUsuario(); mcTroco.Data = Movimento.Data; mcTroco.Movimento_id = Movimento.Id; mcTroco.Usuario_id = Movimento.Usuario_id; mcTroco.Forma_pagamento_id = fpgTroco.Id; mcTroco.Loja_id = UsuariosController.LojaAtual.Id; mcTroco.Tipo_mov = (int)Tipo_movimentacao_caixa.TROCO; mcTroco.Valor = (troco * (-1)); if (!movimentos_caixaController.Save(mcTroco)) { unit.RollBack(); return(0); } } Itens_movimentoController imc = new Itens_movimentoController(); imc.SetContext(unit.Context); EstoqueController estoque_controller = new EstoqueController(); estoque_controller.SetContext(unit.Context); string lote = imc.GetLastLote(false); lote = estoque_controller.GeraProximoLote(lote); int sublote = 1; #region Itens do movimento foreach (Itens_movimento item in itens_mov) { item.Produtos = null; item.Unidades = null; item.Movimento_id = Movimento.Id; Estoque e = new Estoque(); e.Produto_id = item.Produto_id; e.Loja_id = UsuariosController.LojaAtual.Id; e.Quant = item.Quant; e.Lote = (string.IsNullOrEmpty(item.Lote) ? null : (item.Lote + "SL" + item.Sublote)); e.Grade_id = item.Grade_id; ProdutosController pc = new ProdutosController(); pc.SetContext(unit.Context); Produtos prod = pc.Find(item.Produto_id); Produtos_fornecedoresController pForn_c = new Produtos_fornecedoresController(); pForn_c.SetContext(unit.Context); switch (tipo_mov.Movimentacao_itens) { case (int)Tipo_movimentacao.ENTRADA: /* * O produto controla Lote, e a sua entrada é vinda de um Fornecedor. * Neste caso é gerado o seu Lote e inserido no estoque da * loja em questão */ #region tipo_mov.Utiliza_fornecedor && prod.Controla_lote if (tipo_mov.Utiliza_fornecedor && prod.Controla_lote) { e.Lote = lote; e.Sublote = sublote.ToString(); e.Data_entrada = DateTime.Now; Produtos_fornecedores pf = pForn_c.Find(item.Produto_id, Movimento.Fornecedor_id); if (pf != null) { item.Quant = (item.Quant * pf.Fator_conversao); } estoque_controller.Save(e); sublote++; break; } #endregion #region tipo_mov.Utiliza_fornecedor && !prod.Controla_lote if (tipo_mov.Utiliza_fornecedor && !prod.Controla_lote) { Produtos_fornecedores pf = pForn_c.Find(item.Produto_id, Movimento.Fornecedor_id); if (pf != null) { item.Quant = (item.Quant * pf.Fator_conversao); } if (!estoque_controller.InsereEstoque(item.Quant, item.Produto_id, Movimento.Loja_id, (item.Lote + "SL" + item.Sublote))) { unit.RollBack(); return(0); } break; } #endregion /* * O produto controla Lote, porém sua entrada NÃO é proveniennte de um fornecedor. * Pode ser uma devolução, troca ou entrada por transferencia de loja. * * Neste caso, é verificado se existe o lote em questão. * Caso não exista, será criado, * Caso exista, o Saldo em Estoque do mesmo será atualizado */ #region (!tipo_mov.Utiliza_fornecedor) && prod.Controla_lote if ((!tipo_mov.Utiliza_fornecedor) && prod.Controla_lote) { if (!estoque_controller.ExisteLote(item.Lote, item.Sublote)) { estoque_controller.CriaLote(item.Produto_id, Movimento.Loja_id, item.Lote, item.Sublote); } if (!estoque_controller.InsereEstoque(item.Quant, item.Produto_id, Movimento.Loja_id, (item.Lote + "SL" + item.Sublote))) { unit.RollBack(); return(0); } break; } #endregion #region prod.Controla_grade if (prod.Controla_grade) { if (!estoque_controller.InsereEstoque(item.Quant, item.Produto_id, Movimento.Loja_id, null, item.Grade_id)) { unit.RollBack(); return(0); } break; } #endregion /* * O produto NÃO controla lote, e sua entrada NÃO é proveniente de um fornecedor. * Neste caso, o estoque será inserido levando em consideração o produto pelo seu código. * * OBS.: Quando um produto NÃO possui lotes em estoque, a tabela de Estoque só pode * conter um unico registro referente ao produto em questão, considerando a Loja. * * Quando o produto POSSUI lotes em estoque, a tabela de estoque pode conter varios * registros referente ao produto em questão, levando em consideração o Lote, Sub-Lote * e respectiva Loja. */ #region !tipo_mov.Utiliza_fornecedor && !prod.Controla_lote if (!tipo_mov.Utiliza_fornecedor && !prod.Controla_lote) { if (!estoque_controller.InsereEstoque(item.Quant, item.Produto_id, Movimento.Loja_id)) { unit.RollBack(); return(0); } break; } #endregion break; case (int)Tipo_movimentacao.SAIDA: string loteEst = (string.IsNullOrEmpty(e.Lote) ? null : e.Lote); if (!estoque_controller.RetiraEstoque(e.Quant, e.Produto_id, e.Loja_id, loteEst, item.Grade_id)) { unit.RollBack(); return(0); } break; } if (e.Lote != null) { if (e.Lote.Contains("SL")) { item.Lote = e.Lote.Substring(0, e.Lote.IndexOf("SL")); item.Sublote = e.Lote.Substring(e.Lote.IndexOf("SL") + 2); } else { item.Lote = e.Lote; item.Sublote = e.Sublote; } } if (!imc.Save(item)) { unit.RollBack(); return(0); } } #endregion int numero_parcela = 1; #region Itens do Pagamento foreach (Itens_pagamento item_pg in itens_pag) { if (tipo_mov.Movimentacao_valores == (int)Tipo_movimentacao.NENHUM) { continue; } item_pg.Movimento_id = Movimento.Id; ContasController contas_controller = new ContasController(); contas_controller.SetContext(unit.Context); Itens_pagamentoController ipc = new Itens_pagamentoController(); ipc.SetContext(unit.Context); if (!ipc.Save(item_pg)) { unit.RollBack(); return(0); } Formas_pagamento forma_pagamento = fpg_controller.Find(item_pg.Forma_pagamento_id); Movimentos_caixas movimento_caixa = new Movimentos_caixas(); movimento_caixa.Descricao = $"Movimento {Movimento.Id} ({(tipo_mov.Movimentacao_valores == (int)Tipo_movimentacao.ENTRADA ? "ENTRADA" : "SAIDA")})"; movimento_caixa.Caixa_id = movimentos_caixaController.Get_ID_CaixaAtualUsuario(); movimento_caixa.Data = Movimento.Data; movimento_caixa.Movimento_id = Movimento.Id; movimento_caixa.Usuario_id = Movimento.Usuario_id; movimento_caixa.Forma_pagamento_id = item_pg.Forma_pagamento_id; movimento_caixa.Loja_id = UsuariosController.LojaAtual.Id; ParcelasController parcController = new ParcelasController(); parcController.SetContext(unit.Context); switch (forma_pagamento.Tipo_pagamento) { #region DINHEIRO case (int)Tipo_pagamento.DINHEIRO: switch (tipo_mov.Movimentacao_valores) { case (int)Tipo_movimentacao.ENTRADA: movimento_caixa.Tipo_mov = (int)Tipo_movimentacao_caixa.ENTRADA; movimento_caixa.Valor = item_pg.Valor; break; case (int)Tipo_movimentacao.SAIDA: movimento_caixa.Tipo_mov = (int)Tipo_movimentacao_caixa.SAIDA; movimento_caixa.Valor = (item_pg.Valor * (-1)); break; } break; #endregion #region CARTAO case (int)Tipo_pagamento.CARTAO: movimento_caixa.Valor = 0; Operadoras_cartaoController opController = new Operadoras_cartaoController(); opController.SetContext(unit.Context); Operadoras_cartao operadora = opController.Find(forma_pagamento.Operadora_cartao_id); Parcelas parcela_cartao = new Parcelas(); parcela_cartao.Item_pagamento_id = item_pg.Id; parcela_cartao.Valor = item_pg.Valor; parcela_cartao.Situacao = (int)Situacao_parcela.EM_ABERTO; parcela_cartao.Data_lancamento = Movimento.Data; parcela_cartao.Data_vencimento = (operadora.Tipo_recebimento == (int)Tipo_prazo_operadora.DIAS ? Movimento.Data.AddDays(operadora.Prazo_recebimento) : Movimento.Data.AddHours(operadora.Prazo_recebimento)); parcela_cartao.Portador = forma_pagamento.Conta_id; if (tipo_mov.Movimentacao_valores == (int)Tipo_movimentacao.ENTRADA) { parcela_cartao.Tipo_parcela = (int)Tipo_parcela.RECEBER; parcela_cartao.Cliente_id = Movimento.Cliente_id; movimento_caixa.Tipo_mov = (int)Tipo_movimentacao_caixa.ENTRADA; movimento_caixa.Valor = item_pg.Valor; } if (tipo_mov.Movimentacao_valores == (int)Tipo_movimentacao.SAIDA) { parcela_cartao.Tipo_parcela = (int)Tipo_parcela.PAGAR; parcela_cartao.Fornecedor_id = Movimento.Cliente_id; movimento_caixa.Tipo_mov = (int)Tipo_movimentacao_caixa.SAIDA; movimento_caixa.Valor = item_pg.Valor * (-1); } parcela_cartao.Num_documento = Movimento.Id.ToString().PadLeft(8 - Movimento.Id.ToString().Length, '0') + "-" + numero_parcela; parcela_cartao.Parcela_descricao = $"REFERENTE AO MOVIMENTO {Movimento.Id} ({tipo_mov.Descricao})"; parcela_cartao.Numero_cheque = string.Empty; parcela_cartao.Banco = string.Empty; parcela_cartao.Agencia = string.Empty; parcela_cartao.Dias_compensacao = 0; parcela_cartao.Conta = string.Empty; if (!parcController.Save(parcela_cartao)) { unit.RollBack(); return(0); } numero_parcela++; break; #endregion #region CHEQUE case (int)Tipo_pagamento.CHEQUE: movimento_caixa.Valor = 0; IRegistroCheques registroCheques; if (tipo_mov.Movimentacao_valores == (int)Tipo_movimentacao.ENTRADA) { registroCheques = new RecebimentoCheques(); movimento_caixa.Tipo_mov = (int)Tipo_movimentacao_caixa.ENTRADA; movimento_caixa.Valor = item_pg.Valor; } else { registroCheques = new LancamentoCheque(); registroCheques.SetConta(contas_controller.Find(forma_pagamento.Conta_id)); movimento_caixa.Tipo_mov = (int)Tipo_movimentacao_caixa.SAIDA; movimento_caixa.Valor = item_pg.Valor * (-1); } registroCheques.Exibir(item_pg.Valor); foreach (Cheque cheque in registroCheques.Cheques) { Parcelas parcela_cheque = new Parcelas(); parcela_cheque.Item_pagamento_id = item_pg.Id; parcela_cheque.Valor = cheque.Valor; parcela_cheque.Situacao = (int)Situacao_parcela.EM_ABERTO; parcela_cheque.Data_lancamento = Movimento.Data; parcela_cheque.Num_documento = Movimento.Id.ToString().PadLeft(8 - Movimento.Id.ToString().Length, '0') + "-" + numero_parcela; parcela_cheque.Parcela_descricao = $"REFERENTE AO MOVIMENTO {Movimento.Id} ({tipo_mov.Descricao})"; parcela_cheque.Data_vencimento = cheque.Data_deposito; if (tipo_mov.Movimentacao_valores == (int)Tipo_movimentacao.ENTRADA) { parcela_cheque.Tipo_parcela = (int)Tipo_parcela.RECEBER; parcela_cheque.Cliente_id = Movimento.Cliente_id; parcela_cheque.Numero_cheque = cheque.Numero_cheque; parcela_cheque.Banco = cheque.Banco; parcela_cheque.Agencia = cheque.Agencia; parcela_cheque.Dias_compensacao = cheque.Dias_compensacao; parcela_cheque.Conta = cheque.Conta; } if (tipo_mov.Movimentacao_valores == (int)Tipo_movimentacao.SAIDA) { parcela_cheque.Tipo_parcela = (int)Tipo_parcela.PAGAR; parcela_cheque.Fornecedor_id = Movimento.Fornecedor_id; parcela_cheque.Portador = forma_pagamento.Conta_id; parcela_cheque.Numero_cheque = cheque.Numero_cheque; parcela_cheque.Banco = string.Empty; parcela_cheque.Agencia = string.Empty; parcela_cheque.Dias_compensacao = 0; parcela_cheque.Conta = string.Empty; } if (!parcController.Save(parcela_cheque)) { unit.RollBack(); return(0); } numero_parcela++; } break; #endregion #region PRAZO case (int)Tipo_pagamento.PRAZO: DateTime data_base = (forma_pagamento.Tipo_intervalo == (int)Tipo_intervalo.DATA_BASE ? DateTime.Now.AddMonths(1) : DateTime.Now.AddDays(forma_pagamento.Intervalo)); //baseando a data para o mes sequente ao atual for (int i = 0; i < forma_pagamento.Parcelas; i++) { Parcelas parcela_prazo = new Parcelas(); parcela_prazo.Item_pagamento_id = item_pg.Id; parcela_prazo.Valor = (item_pg.Valor / forma_pagamento.Parcelas); parcela_prazo.Situacao = (int)Situacao_parcela.EM_ABERTO; parcela_prazo.Data_lancamento = Movimento.Data; parcela_prazo.Parcela_descricao = $"REFERENTE AO MOVIMENTO {Movimento.Id} ({tipo_mov.Descricao})"; parcela_prazo.Num_documento = Movimento.Id.ToString().PadLeft(8 - Movimento.Id.ToString().Length, '0') + "-" + numero_parcela; parcela_prazo.Numero_cheque = string.Empty; parcela_prazo.Banco = string.Empty; parcela_prazo.Agencia = string.Empty; parcela_prazo.Dias_compensacao = 0; parcela_prazo.Conta = string.Empty; if (forma_pagamento.Tipo_intervalo == (int)Tipo_intervalo.DATA_BASE) { data_base = new DateTime(data_base.Year, data_base.Month, forma_pagamento.Dia_base); parcela_prazo.Data_vencimento = data_base; data_base = data_base.AddMonths(1); } if (forma_pagamento.Tipo_intervalo == (int)Tipo_intervalo.INTERVALO) { parcela_prazo.Data_vencimento = data_base; data_base = data_base.AddDays(forma_pagamento.Intervalo); } if (tipo_mov.Movimentacao_valores == (int)Tipo_movimentacao.ENTRADA) { parcela_prazo.Tipo_parcela = (int)Tipo_parcela.RECEBER; parcela_prazo.Cliente_id = Movimento.Cliente_id; movimento_caixa.Tipo_mov = (int)Tipo_movimentacao_caixa.ENTRADA; movimento_caixa.Valor = item_pg.Valor; } if (tipo_mov.Movimentacao_valores == (int)Tipo_movimentacao.SAIDA) { parcela_prazo.Tipo_parcela = (int)Tipo_parcela.PAGAR; parcela_prazo.Fornecedor_id = Movimento.Fornecedor_id; movimento_caixa.Tipo_mov = (int)Tipo_movimentacao_caixa.SAIDA; movimento_caixa.Valor = item_pg.Valor * (-1); } if (!parcController.Save(parcela_prazo)) { unit.RollBack(); return(0); } numero_parcela++; } break; #endregion } if (!movimentos_caixaController.Save(movimento_caixa)) { unit.RollBack(); return(0); } } #endregion if (Pedido_venda != null) { Pedidos_vendaController pedidosController = new Pedidos_vendaController(); pedidosController.SetContext(unit.Context); pedidosController.RemovePedido(Pedido_venda.Id); } unit.Commit(); BStatus.Success("Movimento salvo"); return(Movimento.Id); } catch (Exception ex) { unit.RollBack(); return(0); } }
public bool Save(Lancamentos_financeiros lancamento_financeiro) { if (!Valid(lancamento_financeiro)) { return(false); } List <Pagamentos_lancamentos> pagamentos = lancamento_financeiro.Pagamentos_lancamentos.ToList(); lancamento_financeiro.Pagamentos_lancamentos = null; UnitOfWork unit = new UnitOfWork(); try { unit.BeginTransaction(); db.Context = unit.Context; lancamento_financeiro.Id = db.NextId(e => e.Id); db.Save(lancamento_financeiro); db.Commit(); pagamentos.ForEach(e => e.Lancamento_id = lancamento_financeiro.Id); pagamentos.ForEach(e => e.Formas_pagamento = null); Pagamentos_lancamentosController pl_controller = new Pagamentos_lancamentosController(); pl_controller.SetContext(unit.Context); Formas_pagamentoController fpg_controller = new Formas_pagamentoController(); fpg_controller.SetContext(unit.Context); ParcelasController parcController = new ParcelasController(); parcController.SetContext(unit.Context); ContasController contasController = new ContasController(); contasController.SetContext(unit.Context); Planos_contasController planoContasController = new Planos_contasController(); planoContasController.SetContext(unit.Context); Contas conta = contasController.Find(lancamento_financeiro.Conta_id); Planos_contas plano_conta = planoContasController.Find(lancamento_financeiro.Plano_conta_id); int numero_parcela = 1; foreach (Pagamentos_lancamentos pagamento in pagamentos) { if (!pl_controller.Save(pagamento)) { unit.RollBack(); return(false); } Formas_pagamento forma_pg = fpg_controller.Find(pagamento.Forma_pagamento_id); #region DINHEIRO if (forma_pg.Tipo_pagamento == (int)Tipo_pagamento.DINHEIRO) { if (lancamento_financeiro.Tipo == (int)Tipo_lancamento.ENTRADA) { conta.Saldo += pagamento.Valor; } else { conta.Saldo -= pagamento.Valor; } contasController.Save(conta); } #endregion #region CHEQUE if (forma_pg.Tipo_pagamento == (int)Tipo_pagamento.CHEQUE) { IRegistroCheques registroCheques; if (lancamento_financeiro.Tipo == (int)Tipo_lancamento.ENTRADA) { registroCheques = new RecebimentoCheques(); } else { registroCheques = new LancamentoCheque(); registroCheques.SetConta(conta); } registroCheques.Exibir(pagamento.Valor); foreach (Cheque cheque in registroCheques.Cheques) { Parcelas parcela_cheque = new Parcelas(); parcela_cheque.Pagamento_lancamento_id = pagamento.Id; parcela_cheque.Valor = cheque.Valor; parcela_cheque.Situacao = (int)Situacao_parcela.EM_ABERTO; parcela_cheque.Data_lancamento = lancamento_financeiro.Data; parcela_cheque.Num_documento = lancamento_financeiro.Num_documento.PadLeft(8 - lancamento_financeiro.Num_documento.Length, '0') + "-" + numero_parcela; parcela_cheque.Parcela_descricao = $"REFERENTE AO LANÇAMENTO FINANCEIRO {lancamento_financeiro.Id} ({plano_conta.Descricao})"; parcela_cheque.Data_vencimento = cheque.Data_deposito; if (lancamento_financeiro.Tipo == (int)Tipo_lancamento.ENTRADA) { parcela_cheque.Tipo_parcela = (int)Tipo_parcela.RECEBER; parcela_cheque.Cliente_id = lancamento_financeiro.Cliente_id; parcela_cheque.Numero_cheque = cheque.Numero_cheque; parcela_cheque.Banco = cheque.Banco; parcela_cheque.Agencia = cheque.Agencia; parcela_cheque.Dias_compensacao = cheque.Dias_compensacao; parcela_cheque.Conta = cheque.Conta; } if (lancamento_financeiro.Tipo == (int)Tipo_lancamento.SAIDA) { parcela_cheque.Tipo_parcela = (int)Tipo_parcela.PAGAR; parcela_cheque.Fornecedor_id = lancamento_financeiro.Fornecedor_id; parcela_cheque.Portador = forma_pg.Conta_id; parcela_cheque.Numero_cheque = cheque.Numero_cheque; parcela_cheque.Banco = string.Empty; parcela_cheque.Agencia = string.Empty; parcela_cheque.Dias_compensacao = 0; parcela_cheque.Conta = string.Empty; } if (!parcController.Save(parcela_cheque)) { unit.RollBack(); return(false); } numero_parcela++; } } #endregion #region CARTAO if (forma_pg.Tipo_pagamento == (int)Tipo_pagamento.CARTAO) { Operadoras_cartaoController opController = new Operadoras_cartaoController(); opController.SetContext(unit.Context); Operadoras_cartao operadora = opController.Find(forma_pg.Operadora_cartao_id); Parcelas parcela_cartao = new Parcelas(); parcela_cartao.Pagamento_lancamento_id = pagamento.Id; parcela_cartao.Valor = pagamento.Valor; parcela_cartao.Situacao = (int)Situacao_parcela.EM_ABERTO; parcela_cartao.Data_lancamento = lancamento_financeiro.Data; parcela_cartao.Data_vencimento = (operadora.Tipo_recebimento == (int)Tipo_prazo_operadora.DIAS ? lancamento_financeiro.Data.AddDays(operadora.Prazo_recebimento) : lancamento_financeiro.Data.AddHours(operadora.Prazo_recebimento)); parcela_cartao.Portador = forma_pg.Conta_id; if (lancamento_financeiro.Tipo == (int)Tipo_lancamento.ENTRADA) { parcela_cartao.Tipo_parcela = (int)Tipo_parcela.RECEBER; parcela_cartao.Cliente_id = lancamento_financeiro.Cliente_id; } if (lancamento_financeiro.Tipo == (int)Tipo_lancamento.SAIDA) { parcela_cartao.Tipo_parcela = (int)Tipo_parcela.PAGAR; parcela_cartao.Fornecedor_id = lancamento_financeiro.Cliente_id; } parcela_cartao.Num_documento = lancamento_financeiro.Num_documento.PadLeft(8 - lancamento_financeiro.Num_documento.Length, '0') + "-" + numero_parcela; parcela_cartao.Parcela_descricao = $"REFERENTE AO LANÇAMENTO FINANCEIRO {lancamento_financeiro.Id} ({plano_conta.Descricao})"; parcela_cartao.Numero_cheque = string.Empty; parcela_cartao.Banco = string.Empty; parcela_cartao.Agencia = string.Empty; parcela_cartao.Dias_compensacao = 0; parcela_cartao.Conta = string.Empty; if (!parcController.Save(parcela_cartao)) { unit.RollBack(); return(false); } numero_parcela++; } #endregion #region PRAZO if (forma_pg.Tipo_pagamento == (int)Tipo_pagamento.PRAZO) { DateTime data_base = (forma_pg.Tipo_intervalo == (int)Tipo_intervalo.DATA_BASE ? DateTime.Now.AddMonths(1) : DateTime.Now.AddDays(forma_pg.Intervalo)); //baseando a data para o mes sequente ao atual for (int i = 0; i < forma_pg.Parcelas; i++) { Parcelas parcela_prazo = new Parcelas(); parcela_prazo.Pagamento_lancamento_id = pagamento.Id; parcela_prazo.Valor = (pagamento.Valor / forma_pg.Parcelas); parcela_prazo.Situacao = (int)Situacao_parcela.EM_ABERTO; parcela_prazo.Data_lancamento = lancamento_financeiro.Data; parcela_prazo.Parcela_descricao = $"REFERENTE AO LANÇAMENTO FINANCEIRO {lancamento_financeiro.Id} ({plano_conta.Descricao})"; parcela_prazo.Num_documento = lancamento_financeiro.Num_documento.PadLeft(8 - lancamento_financeiro.Num_documento.Length, '0') + "-" + numero_parcela; parcela_prazo.Numero_cheque = string.Empty; parcela_prazo.Banco = string.Empty; parcela_prazo.Agencia = string.Empty; parcela_prazo.Dias_compensacao = 0; parcela_prazo.Conta = string.Empty; parcela_prazo.Portador = lancamento_financeiro.Conta_id; if (forma_pg.Tipo_intervalo == (int)Tipo_intervalo.DATA_BASE) { data_base = new DateTime(data_base.Year, data_base.Month, forma_pg.Dia_base); parcela_prazo.Data_vencimento = data_base; data_base = data_base.AddMonths(1); } if (forma_pg.Tipo_intervalo == (int)Tipo_intervalo.INTERVALO) { parcela_prazo.Data_vencimento = data_base; data_base = data_base.AddDays(forma_pg.Intervalo); } if (lancamento_financeiro.Tipo == (int)Tipo_lancamento.ENTRADA) { parcela_prazo.Tipo_parcela = (int)Tipo_parcela.RECEBER; parcela_prazo.Cliente_id = lancamento_financeiro.Cliente_id; } if (lancamento_financeiro.Tipo == (int)Tipo_lancamento.SAIDA) { parcela_prazo.Tipo_parcela = (int)Tipo_parcela.PAGAR; parcela_prazo.Fornecedor_id = lancamento_financeiro.Fornecedor_id; } if (!parcController.Save(parcela_prazo)) { unit.RollBack(); return(false); } numero_parcela++; } #endregion } } unit.Commit(); BStatus.Success("Lançamento financeiro efetuado com sucesso"); return(true); } catch (Exception ex) { unit.RollBack(); return(false); } }