//Função que avança ao próximo formulário private void goForward() { Globals.step += 1; if (Globals.step == 1) { if (Globals.clientStep.cbb_clientName.SelectedIndex == -1) { MessageBox.Show("Selecione um cliente antes de avançar!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning); Globals.step -= 1; } else { //Cadastro de orçamento Globals.numeroOrcamento = 0; //Usuário não passou pelo formulário de orçamentos Globals.budgetStep = new BudgetStep(this, null) { Dock = DockStyle.Fill, TopLevel = false, TopMost = true }; //Todos os dados do cliente this.displayOnPanel(); } } else if (Globals.step == 2) { //Todos os dados do orçamento do cliente Globals.budgetStepDataTable = Database.query("SELECT * FROM orcamento WHERE orcamento.numeroOrcamento = " + Globals.numeroOrcamento); if (Globals.budgetStepDataTable.Rows.Count > 0) { //Cliente já tem orçamento cadastrado Globals.idCliente = Convert.ToInt32(Globals.budgetStepDataTable.Rows[0].ItemArray[1]); Globals.productStep = new ProductStep(this) { Dock = DockStyle.Fill, TopLevel = false, TopMost = true }; this.panel_steps.Controls.Remove(Globals.budgetStep); this.panel_steps.Controls.Add(Globals.productStep); Globals.productStep.Show(); this.lbl_btnGoBackTag.Visible = true; this.pcb_btnGoBack.Visible = true; this.lbl_btnGoForwardTag.Visible = false; this.pcb_btnGoForward.Visible = false; this.lbl_btnEndBudgetTag.Visible = true; this.pcb_btnEndBudget.Visible = true; this.lbl_btnEndBudgetTag.Location = new Point(925, 445); this.pcb_btnEndBudget.Location = new Point(845, 417); } else { if (String.IsNullOrEmpty(Globals.budgetStep.mtb_budgetDate.Text.Trim()) || String.IsNullOrEmpty(Globals.budgetStep.txt_laborValue.Text.Trim()) || Globals.budgetStep.cbb_incomeAccount.SelectedIndex == -1 || Globals.budgetStep.cbb_paymentCondition.SelectedIndex == -1) { MessageBox.Show("Preencha todos os campos antes de avançar!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning); Globals.step -= 1; } else { //Cliente ainda não cadastrou orçamento if ((Globals.budgetStep.ckb_parcelValue.Checked) && ((String.IsNullOrEmpty(Globals.budgetStep.txt_parcels.Text.Trim())) || (Globals.budgetStep.cbb_period.SelectedIndex == -1))) { MessageBox.Show("Informe o número de parcelas da receita e o período em que elas se repetem!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { Account account = new Account(); Budget budget = new Budget(); Income income = new Income(); account.IdConta = income.IdConta; budget.IdCliente = Convert.ToInt32(Globals.clientStepDataTable.Rows[0].ItemArray[0]); Globals.idCliente = Convert.ToInt32(Globals.clientStepDataTable.Rows[0].ItemArray[0]); budget.DataOrcamento = Convert.ToDateTime(Globals.budgetStep.mtb_budgetDate.Text.Trim()); income.DataTransacao = Convert.ToDateTime(Globals.budgetStep.mtb_budgetDate.Text.Trim()); Regex regexValor = new Regex(@"[R$ ]?[R$]?\d{1,3}(\.\d{3})*,\d{2}"); string valorTrabalho = Globals.budgetStep.txt_laborValue.Text.Trim(); if (regexValor.IsMatch(valorTrabalho)) { if (valorTrabalho.Contains("R$ ")) { budget.ValorTrabalho = Convert.ToDecimal(valorTrabalho.Substring(3).Trim()); budget.ValorTotal = Convert.ToDecimal(valorTrabalho.Substring(3).Trim()); income.ValorReceita = Convert.ToDecimal(valorTrabalho.Substring(3).Trim()); } else if (valorTrabalho.Contains("R$")) { budget.ValorTrabalho = Convert.ToDecimal(valorTrabalho.Substring(2).Trim()); budget.ValorTotal = Convert.ToDecimal(valorTrabalho.Substring(2).Trim()); income.ValorReceita = Convert.ToDecimal(valorTrabalho.Substring(2).Trim()); } else { budget.ValorTrabalho = Convert.ToDecimal(Globals.budgetStep.txt_laborValue.Text.Trim()); budget.ValorTotal = Convert.ToDecimal(Globals.budgetStep.txt_laborValue.Text.Trim()); income.ValorReceita = Convert.ToDecimal(Globals.budgetStep.txt_laborValue.Text.Trim()); } } else { MessageBox.Show("Formato monetário incorreto!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning); Globals.budgetStep.txt_laborValue.Clear(); Globals.budgetStep.txt_laborValue.PlaceholderText = ""; Globals.budgetStep.txt_laborValue.Focus(); return; } budget.CondicaoPagamento = Globals.budgetStep.cbb_paymentCondition.SelectedItem.ToString().Trim(); if (Globals.budgetStep.ckb_confirmedBudget.Checked) { budget.OrcamentoConfirmado = true; } else { budget.OrcamentoConfirmado = false; } income.DescricaoReceita = Globals.budgetStep.txt_incomeDescription.Text.Trim(); income.IdConta = Convert.ToInt32(Database.query("SELECT idConta FROM conta WHERE nomeConta = '" + Globals.budgetStep.cbb_incomeAccount.SelectedItem.ToString().Trim() + "';").Rows[0].ItemArray[0]); income.IdCategoria = Convert.ToInt32(Database.query("SELECT idCategoria FROM categoria WHERE nomeCategoria = 'Orçamentos';").Rows[0].ItemArray[0]); income.ObservacoesReceita = Globals.budgetStep.txt_incomeObservations.Text.Trim(); if (Globals.budgetStep.ckb_incomeReceived.Checked) { income.RecebimentoConfirmado = true; } else { income.RecebimentoConfirmado = false; } if (Globals.budgetStep.ckb_parcelValue.Checked) { if (Globals.budgetStep.ckb_parcelValue.Checked) { income.RepetirParcelarReceita = true; income.ParcelarValorReceita = true; income.ParcelasReceita = Convert.ToInt32(Globals.budgetStep.txt_parcels.Text.Trim()); income.PeriodoRepetirParcelarReceita = Globals.budgetStep.cbb_period.SelectedItem.ToString().Trim(); income.ValorReceita = income.ValorReceita / income.ParcelasReceita; if (Database.newBudget(budget)) { income.NumeroOrcamento = Convert.ToInt32(Database.query("SELECT numeroOrcamento FROM orcamento ORDER BY numeroOrcamento DESC LIMIT 1;").Rows[0].ItemArray[0]); Globals.numeroOrcamento = income.NumeroOrcamento; if (Database.newIncome(income)) { Globals.idReceita = Convert.ToInt32(Database.query("SELECT idReceita FROM receita ORDER BY idReceita DESC LIMIT 1;").Rows[0].ItemArray[0]); List <Parcel> parcels = new List <Parcel>(); int success = 1; for (int i = 0; i < (income.ParcelasReceita - 1); i++) { parcels.Add(new Parcel()); parcels[i].IdReceita = Convert.ToInt32(Database.query("SELECT idReceita FROM receita ORDER BY idReceita DESC LIMIT 1;").Rows[0].ItemArray[0]); parcels[i].IdConta = income.IdConta; parcels[i].IdCategoria = income.IdCategoria; parcels[i].ValorParcela = income.ValorReceita; parcels[i].DescricaoParcela = income.DescricaoReceita; this.periodSelection(i, income, parcels); parcels[i].ObservacoesParcela = income.ObservacoesReceita; parcels[i].RecebimentoConfirmado = false; if (Database.newParcel(parcels[i])) { continue; } else { success = 0; break; } } if (success == 0) { MessageBox.Show("[ERRO] Não foi possível cadastrar todas as parcelas!", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } this.selectClientLastBudget(); Globals.idCliente = Convert.ToInt32(Globals.budgetStepDataTable.Rows[0].ItemArray[1]); Globals.productStep = new ProductStep(this) { Dock = DockStyle.Fill, TopLevel = false, TopMost = true }; this.panel_steps.Controls.Remove(Globals.budgetStep); this.panel_steps.Controls.Add(Globals.productStep); Globals.productStep.Show(); this.lbl_btnGoBackTag.Visible = true; this.pcb_btnGoBack.Visible = true; this.lbl_btnGoForwardTag.Visible = false; this.pcb_btnGoForward.Visible = false; this.lbl_btnEndBudgetTag.Visible = true; this.pcb_btnEndBudget.Visible = true; this.lbl_btnEndBudgetTag.Location = new Point(925, 445); this.pcb_btnEndBudget.Location = new Point(845, 417); } else { MessageBox.Show("[ERRO] Não foi possível cadastrar receita!", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("[ERRO] Não foi possível cadastrar orçamento!", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { income.ParcelarValorReceita = false; } } else { income.RepetirParcelarReceita = false; if (Database.newBudget(budget)) { income.NumeroOrcamento = Convert.ToInt32(Database.query("SELECT numeroOrcamento FROM orcamento ORDER BY numeroOrcamento DESC LIMIT 1;").Rows[0].ItemArray[0]); Globals.numeroOrcamento = income.NumeroOrcamento; if (Database.newIncome(income)) { Globals.idReceita = Convert.ToInt32(Database.query("SELECT idReceita FROM receita ORDER BY idReceita DESC LIMIT 1;").Rows[0].ItemArray[0]); Globals.productStep = new ProductStep(this) { Dock = DockStyle.Fill, TopLevel = false, TopMost = true }; this.panel_steps.Controls.Remove(Globals.budgetStep); this.panel_steps.Controls.Add(Globals.productStep); Globals.productStep.Show(); this.lbl_btnGoBackTag.Visible = true; this.pcb_btnGoBack.Visible = true; this.lbl_btnGoForwardTag.Visible = false; this.pcb_btnGoForward.Visible = false; this.lbl_btnEndBudgetTag.Visible = true; this.pcb_btnEndBudget.Visible = true; this.lbl_btnEndBudgetTag.Location = new Point(925, 445); this.pcb_btnEndBudget.Location = new Point(845, 417); } else { MessageBox.Show("[ERRO] Não foi possível cadastrar receita!", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("[ERRO] Não foi possível cadastrar orçamento!", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } } } }
//Função que seleciona a data de transação da parcela de acordo com o período escolhido pelo usuário private void periodSelection(int i, Income income, List <Parcel> parcels) { if (i == 0) { switch (income.PeriodoRepetirParcelarReceita) { case "Diário": parcels[i].DataTransacao = income.DataTransacao.AddDays(1); break; case "Semanal": parcels[i].DataTransacao = income.DataTransacao.AddDays(7); break; case "A cada 2 semanas": parcels[i].DataTransacao = income.DataTransacao.AddDays(14); break; case "Mensal": parcels[i].DataTransacao = income.DataTransacao.AddMonths(1); break; case "Bimestral": parcels[i].DataTransacao = income.DataTransacao.AddMonths(2); break; case "Trimestral": parcels[i].DataTransacao = income.DataTransacao.AddMonths(3); break; case "Semestral": parcels[i].DataTransacao = income.DataTransacao.AddMonths(6); break; case "Anual": parcels[i].DataTransacao = income.DataTransacao.AddYears(1); break; } } else { switch (income.PeriodoRepetirParcelarReceita) { case "Diário": parcels[i].DataTransacao = parcels[i - 1].DataTransacao.AddDays(1); break; case "Semanal": parcels[i].DataTransacao = parcels[i - 1].DataTransacao.AddDays(7); break; case "A cada 2 semanas": parcels[i].DataTransacao = parcels[i - 1].DataTransacao.AddDays(14); break; case "Mensal": parcels[i].DataTransacao = parcels[i - 1].DataTransacao.AddMonths(1); break; case "Bimestral": parcels[i].DataTransacao = parcels[i - 1].DataTransacao.AddMonths(2); break; case "Trimestral": parcels[i].DataTransacao = parcels[i - 1].DataTransacao.AddMonths(3); break; case "Semestral": parcels[i].DataTransacao = parcels[i - 1].DataTransacao.AddMonths(6); break; case "Anual": parcels[i].DataTransacao = parcels[i - 1].DataTransacao.AddYears(1); break; } } }