예제 #1
0
        private void btnIncluirTransferência_Click(object sender, EventArgs e)
        {
            if (lstboxMateriaisDestino.Items.Count > 0)
            {
                int     codigoObraOrigem        = codigoObra;
                int     codigoLocalOrigem       = int.Parse(cmbObraOrigem.SelectedValue.ToString());
                string  dataTransferencia       = mskDataTransferencia.Text.ToString();
                Boolean statusDataTransferencia = validar.Data(dataTransferencia);

                if (statusDataTransferencia == true)
                {
                    //Obtendo a data da obra - Caso retorne "0", é que ocorreu algum erro no processo
                    string dataObra = camadaNegocios.ConsultaDataTransferencia(codigoObraOrigem);

                    if (dataObra != "0")
                    {
                        //Formatando a data - Caso retorne "0", é que ocorreu algum erro no processo
                        dataObra = validar.AjustarData(dataObra);

                        if (dataObra != "0")
                        {
                            //Comparando a data da Obra com a data da transferência
                            //dataMenor, dataMaior
                            Boolean statusComparaData = validar.DataMenorDataMaior(dataObra, dataTransferencia);

                            if (statusComparaData == true)
                            {
                                Boolean statusAtualizacaoObra = true;
                                int     codigoMaterialObra;
                                int     quantidadeMaterialObra;

                                //Atualizando os materiais da obra
                                for (int i = (lstboxMateriaisObra.Items.Count) - 1; i >= 0; i--)
                                {
                                    var array = ((lstboxMateriaisObra.Items[i]).ToString()).Split('-');

                                    codigoMaterialObra     = int.Parse(array[0]);
                                    quantidadeMaterialObra = int.Parse(array[2]);

                                    statusAtualizacaoObra = camadaNegocios.AlteraMateriaisTransferencia(codigoMaterialObra, codigoObra, quantidadeMaterialObra);
                                    if (statusAtualizacaoObra == false)
                                    {
                                        break;
                                    }
                                }

                                if (statusAtualizacaoObra == true)
                                {
                                    //Incluindo uma nova transferência, tendo como origem a obra, e como destino o local

                                    int codigoMaterialDestino;
                                    int quantidadeMaterialDestino;

                                    int codigoLocalObra         = int.Parse(cmbObraOrigem.SelectedValue.ToString());
                                    int codigoLocalDestino      = int.Parse(cmbLocalDestino.SelectedValue.ToString());
                                    int codigoTipoTransferencia = int.Parse(cmbTipoTransferencia.SelectedValue.ToString());

                                    Boolean statusInsercaoMaterial = true;

                                    //Criando a requisição e obtendo o código da mesma - Caso retorne 0, indica que não foi possível criar a requisição
                                    int codigoTransferecia = camadaNegocios.InserirTransferencia(codigoLocalObra, codigoLocalDestino, codigoTipoTransferencia, dataTransferencia);

                                    if (codigoTransferecia != 0)
                                    {
                                        //Inserindo todos os materiais, um a um
                                        for (int index = (lstboxMateriaisDestino.Items.Count) - 1; index >= 0; index--)
                                        {
                                            var array = ((lstboxMateriaisDestino.Items[index]).ToString()).Split('-');

                                            codigoMaterialDestino     = int.Parse(array[0]);
                                            quantidadeMaterialDestino = int.Parse(array[2]);

                                            statusInsercaoMaterial = camadaNegocios.InserirMateriaisTransferenciaSaida(codigoTransferecia, codigoMaterialDestino, quantidadeMaterialDestino);
                                            if (statusInsercaoMaterial == false)
                                            {
                                                MessageBox.Show("Erro inesperado ao inserir a transferencia. Contate o suporte");
                                                break;
                                            }
                                        }

                                        if (statusInsercaoMaterial == true)
                                        {
                                            //Retirando do estoque
                                            DataSet oDsMateriais = new DataSet();

                                            oDsMateriais = camadaNegocios.ConsultaCodigoMateriaisTransferencia(codigoTransferecia);

                                            int tamanhoDataSet = 0;

                                            //Obtendo o tamanho do dataset para alocar o vetor
                                            foreach (DataRow rows in oDsMateriais.Tables[0].Rows)
                                            {
                                                tamanhoDataSet++;
                                            }

                                            //Vetores onde ficarão os ids de material e a quantidade
                                            int[] codigoMateriais   = new int[tamanhoDataSet + 1];
                                            int[] codigoQuantidades = new int[tamanhoDataSet + 1];

                                            int contador = 0;
                                            foreach (DataRow rows in oDsMateriais.Tables[0].Rows)
                                            {
                                                codigoMateriais[contador]   = int.Parse((rows["Material"]).ToString());
                                                codigoQuantidades[contador] = int.Parse((rows["Quantidade"]).ToString());
                                                contador++;
                                            }

                                            Boolean statusAtualizarEstoque = true;

                                            //Diminuindo o estoque da obra de origem
                                            for (int i = 0; i < tamanhoDataSet; i++)
                                            {
                                                statusAtualizarEstoque = camadaNegocios.DiminuiEstoque(codigoMateriais[i], codigoLocalOrigem, codigoQuantidades[i]);
                                                if (statusAtualizarEstoque == false)
                                                {
                                                    break;
                                                }
                                            }

                                            if (statusAtualizarEstoque == true)
                                            {
                                                DataSet oDsMateriaisDestino = new DataSet();

                                                oDsMateriaisDestino = camadaNegocios.ConsultaCodigoMateriaisTransferencia(codigoTransferecia);

                                                int tamanhoDataSetDestino = 0;

                                                //Obtendo o tamanho do dataset para alocar o vetor
                                                foreach (DataRow rows in oDsMateriaisDestino.Tables[0].Rows)
                                                {
                                                    tamanhoDataSetDestino++;
                                                }

                                                //Vetores onde ficarão os ids de material e a quantidade
                                                int[] codigoMateriaisDestino   = new int[tamanhoDataSetDestino + 1];
                                                int[] codigoQuantidadesDestino = new int[tamanhoDataSetDestino + 1];

                                                int contadorDestino = 0;
                                                foreach (DataRow rows in oDsMateriaisDestino.Tables[0].Rows)
                                                {
                                                    codigoMateriaisDestino[contadorDestino]   = int.Parse((rows["Material"]).ToString());
                                                    codigoQuantidadesDestino[contadorDestino] = int.Parse((rows["Quantidade"]).ToString());
                                                    contadorDestino++;
                                                }

                                                Boolean statusAtualizarEstoqueDestino = true;

                                                //Aumentando o estoque do local destino
                                                for (int i = 0; i < tamanhoDataSetDestino; i++)
                                                {
                                                    statusAtualizarEstoque = camadaNegocios.AumentaEstoque(codigoMateriaisDestino[i], codigoLocalDestino, codigoQuantidadesDestino[i]);
                                                    if (statusAtualizarEstoqueDestino == false)
                                                    {
                                                        break;
                                                    }
                                                }


                                                if (statusAtualizarEstoqueDestino == true)
                                                {
                                                    Boolean statusValidarObra = camadaNegocios.ValidarObra(codigoLocalDestino);

                                                    if (statusValidarObra == true)
                                                    {
                                                        MessageBox.Show("Transferência incluída com sucesso");
                                                    }
                                                    else
                                                    {
                                                        MessageBox.Show("Transferência incluída com sucesso. No entanto, não foi possível atualizar o status da obra");
                                                    }

                                                    //Recarregando a página
                                                    Point posicaoForm = new Point(100, 100);
                                                    posicaoForm = this.Location;

                                                    Form formIncluirRequisicaoSaida = new IncluirTransferenciaSaida(formAnterior, posicaoForm.X, posicaoForm.Y, permissaoUsuario);
                                                    xClicked = false;
                                                    this.Close();
                                                    formIncluirRequisicaoSaida.Show();
                                                }

                                                else
                                                {
                                                    MessageBox.Show("Erro ao incluir a transferência");
                                                }
                                            }

                                            else
                                            {
                                                MessageBox.Show("Erro ao incluir a transferência");
                                            }
                                        }
                                    }

                                    else
                                    {
                                        MessageBox.Show("Não foi possível criar a transferência");
                                    }
                                }

                                else
                                {
                                    MessageBox.Show("Não foi possível atualizar os materiais da obra. Contate o suporte");
                                }
                            }

                            else
                            {
                                MessageBox.Show("A data de transferência não pode ser menor do que a data da obra");
                            }
                        }

                        else
                        {
                            MessageBox.Show("Erro ao converter a data da obra");
                        }
                    }

                    else
                    {
                        MessageBox.Show("Erro ao consultar a data da obra");
                    }
                }

                else
                {
                    MessageBox.Show("Data de transferência inválida");
                }
            }

            else
            {
                MessageBox.Show("Transfira pelo menos um material para o local destino");
            }
        }