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;
        }
Esempio n. 2
0
        /// <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();
            }

        }