protected void btnSalvarICMS_Click(object sender, EventArgs e) { //será incluido no grid de ICMS manualmente (não incluirá no banco ainda) //pois só deverá ser incluido no banco quando salvar o produto ICMSVO[] lstICMS = (ICMSVO[])ViewState["lstICMS"]; List<ICMSVO> newlstICMS = new List<ICMSVO>(lstICMS); //se for edição de ICMS, atualizar o list if (hdfTipoAcaoICMS.Value.Equals("Incluir")) { /************************************************************************ Se a ação for inclusão, simplesmente verifica se o ítem já foi cadastrado se já for, exibe mensagem e não inclui o ítem /***********************************************************************/ ICMSVO result = newlstICMS.Find( delegate(ICMSVO bk) { return bk.CodTipoTributacao == ddlTipoTributacao.SelectedValue; } ); if (result != null) { MensagemCliente("ICMS Já cadastrado!"); return; } /************************************************************************/ /************************************************************************/ //senão, incluir novo ítem no list ICMSVO lstICMSAux = new ICMSVO(); lstICMSAux.CodTipoTributacao = ddlTipoTributacao.SelectedValue; lstICMSAux.CodOrigem = Convert.ToInt32(ddlOrigem.SelectedValue); lstICMSAux.CodBaseCalculo = Convert.ToInt32(ddlModalidadeBaseCalculo.SelectedValue); lstICMSAux.CodBaseCalculoICMSST = Convert.ToInt32(ddlModalidadeBaseCalculoICMSST.SelectedValue); if (!txtAliquota.Text.Trim().Equals("")) lstICMSAux.Aliquota = Convert.ToDecimal(txtAliquota.Text.Trim()); if (!txtPercentualBaseCalculo.Text.Trim().Equals("")) lstICMSAux.PercentualReducao = Convert.ToDecimal(txtPercentualBaseCalculo.Text.Trim()); if (!txtAliquotaST.Text.Trim().Equals("")) lstICMSAux.AliquotaST = Convert.ToDecimal(txtAliquotaST.Text.Trim()); if (!txtPercentualICMSST.Text.Trim().Equals("")) lstICMSAux.PercentualReducaoST = Convert.ToDecimal(txtPercentualICMSST.Text.Trim()); if (!txtPercentualValorAdicionado.Text.Trim().Equals("")) lstICMSAux.PercentualMargemST = Convert.ToDecimal(txtPercentualValorAdicionado.Text.Trim()); newlstICMS.Add(lstICMSAux); } else { int linha = Convert.ToInt32(ViewState["LinhaSelecionadaICMS"]); int iLinhaFor = 0; foreach (ICMSVO item in newlstICMS) { if (iLinhaFor == linha) { /************************************************************************ Se a ação for alteração, verifica se o ítem já está cadastrado, se já estiver será impedido, desde que não seja ele mesmo /***********************************************************************/ int iLinhaSelecionada = 0; foreach (ICMSVO item2 in newlstICMS) { if ((item2.CodTipoTributacao == ddlTipoTributacao.SelectedValue) && (iLinhaSelecionada != linha)) { MensagemCliente("ICMS Já cadastrado!"); return; } iLinhaSelecionada++; } /************************************************************************ /***********************************************************************/ item.CodTipoTributacao = ddlTipoTributacao.SelectedValue; item.CodOrigem = Convert.ToInt32(ddlOrigem.SelectedValue); item.CodBaseCalculo = Convert.ToInt32(ddlModalidadeBaseCalculo.SelectedValue); item.CodBaseCalculoICMSST = Convert.ToInt32(ddlModalidadeBaseCalculoICMSST.SelectedValue); if (!txtAliquota.Text.Trim().Equals("")) item.Aliquota = Convert.ToDecimal(txtAliquota.Text.Trim()); if (!txtPercentualBaseCalculo.Text.Trim().Equals("")) item.PercentualReducao = Convert.ToDecimal(txtPercentualBaseCalculo.Text.Trim()); if (!txtAliquotaST.Text.Trim().Equals("")) item.AliquotaST = Convert.ToDecimal(txtAliquotaST.Text.Trim()); if (!txtPercentualICMSST.Text.Trim().Equals("")) item.PercentualReducaoST = Convert.ToDecimal(txtPercentualICMSST.Text.Trim()); if (!txtPercentualValorAdicionado.Text.Trim().Equals("")) item.PercentualMargemST = Convert.ToDecimal(txtPercentualValorAdicionado.Text.Trim()); //sai do for break; } iLinhaFor++; } } ICMSGrid.DataSource = newlstICMS; ICMSGrid.DataBind(); updICMS.Update(); //atualiza viewstate ViewState["lstICMS"] = newlstICMS.ToArray(); LimparCamposICMS(); divCadastroICMS.Visible = false; }
/// <summary> /// Método para listar os icms dos produtos /// </summary> /// <returns></returns> private void ListaICMS(ref ProdutoVO tempProduto, int? CodProduto) { OpenCommand("pr_selecionar_produtoicms"); try { if (CodProduto > 0) AddInParameter("CodProduto", DbType.Int32, CodProduto); IDataReader dr2 = ExecuteReader(); try { while (dr2.Read()) { ICMSVO tempICMS = new ICMSVO(); tempICMS.CodProduto = GetReaderValue<int?>(dr2, "CodProduto"); tempICMS.CodTipoTributacao = GetReaderValue<string>(dr2, "CodTipoTributacao"); tempICMS.CodOrigem = GetReaderValue<int?>(dr2, "CodOrigem"); tempICMS.CodBaseCalculo = GetReaderValue<int?>(dr2, "CodBaseCalculo"); tempICMS.CodBaseCalculoICMSST = GetReaderValue<int?>(dr2, "CodBaseCalculoICMSST"); tempICMS.Aliquota = GetReaderValue<decimal?>(dr2, "Aliquota"); tempICMS.PercentualReducao = GetReaderValue<decimal?>(dr2, "PercentualReducao"); tempICMS.AliquotaST = GetReaderValue<decimal?>(dr2, "AliquotaST"); tempICMS.PercentualReducaoST = GetReaderValue<decimal?>(dr2, "PercentualReducaoST"); tempICMS.PercentualMargemST = GetReaderValue<decimal?>(dr2, "PercentualMargemST"); tempProduto.ICMS.Add(tempICMS); } } finally { dr2.Close(); } } finally { CloseCommand(); } }