Exemplo n.º 1
0
        /// <summary>
        /// Vincula as formas de pagamento da impressora fiscal com as formas de pagamento do sistema
        /// </summary>
        /// <param name="sender">Objeto que disparou o evento</param>
        /// <param name="e">Argumento do evento gerado</param>
        private void btnOK_Click(object sender, System.EventArgs e)
        {
            string formaPagto = string.Empty;

            Connection connection = null;

            #region validar
            foreach (DataGridViewRow item in grdFPECF.Rows)
            {
                if (item.IsNewRow) continue;

                if (String.IsNullOrEmpty(Unimake.Convert.ToString(item.Cells[colDescricao.Index].Value)))
                {
                    MessageBox.RequiredField("Descrição");
                    item.Selected = true;
                    return;
                }
            }
            #endregion

            #region salvar
            IConfiguracao conf = null;
            try
            {
                Wait.Show();
                connection = DbContext.CreateConnection();
                connection.BeginTransaction();
                using (conf = new OpenPOS.ECF.Configuracao(Settings.ECF.ECFAtual.ModeloACBR, Settings.ECF.ECFAtual.Porta))
                {
                    foreach (DataGridViewRow item in grdFPECF.Rows)
                    {
                        if (item.IsNewRow) continue;

                        int indice = Unimake.Convert.ToInt(item.Cells[colIndice.Index].Value);

                        IImpressoraFormaPagto impForma = item.Cells[colGUIDImpressoraForma.Index].Value as IImpressoraFormaPagto
                            ?? new ImpressoraFormaPagto();

                        IFormaPagamento forma = null;

                        formaPagto = item.Cells[colVinculado.Index].Value.ToString();

                        if (!formaPagto.IsNullOrEmpty())
                        {
                            //Pesquisa se tem a forma de pagamento selecionada da coluna "Vinculado" na base de dados na tabela ecf_ImpressoraFormaPagto
                            IList<IImpressoraFormaPagto> formasImp = new ImpressoraFormaPagto().Find<IImpressoraFormaPagto>(new Where
                        {
                            {
                                "ecf_ImpressoraFormaPagto.GUIDImpressora = @guidimp",
                                new Parameter
                                {
                                    ParameterName = "@guidimp",
                                    Value = Settings.ECF.ECFAtual.GUID.ToString()
                                }
                            },
                            {
                                "ecf_ImpressoraFormaPagto.Indice = @indice",
                                new Parameter
                                {
                                    ParameterName = "@indice",
                                    Value = indice
                                }
                            }
                        });

                            //Se já existe formas de pagamentos vinculadas, sabemos que é uma alteração
                            if (formasImp.Count > 0)
                            {
                                //Deletar todas as formas de pagamento vinculada para esse índice da forma de pagamento da impressora fiscal
                                foreach (IImpressoraFormaPagto fi in formasImp)
                                {
                                    impForma = new ImpressoraFormaPagto(fi.GUID);
                                    impForma.Delete();
                                }
                            }

                            //Salvar(Vincular) com a forma de pagamento selecionada
                            forma = new Data.Cadastro.FormaPagamento
                            {
                                GUID = formaPagto,
                                Descricao = item.Cells[colDescricao.Index].Value.ToString()
                            };

                            // verifica se tem forma cadastrada na impressora, se não, cadastra
                            #region cadastraFormImpressora
                            bool temImpForma = false;
                            for (int i = 0; i < conf.FormasPagamento.Length; i++)
                            {
                                if (item.Cells[colDescricao.Index].Value.ToString() == conf.FormasPagamento[i].Descricao)
                                {
                                    temImpForma = true;
                                    break;
                                }
                            }
                            if (!temImpForma)
                            {
                                //Descrição da forma de pagamento
                                string descricao = item.Cells[colDescricao.Index].Value.ToString();
                                //Permite o cupom vinculado
                                bool permiteVinculado = true;
                                //Posição da forma de pagamento
                                string posicao = "";

                                try
                                {
                                    conf.ProgramaFormaPagamento(descricao, permiteVinculado, posicao);
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show(ex.Message);
                                }
                            }
                            #endregion cadastraFormImpressora

                            impForma.Impressora = Settings.ECF.ECFAtual;
                            impForma.FormaPagamento = forma;
                            impForma.Indice = indice;
                            impForma.Save();
                        }
                    }
                }

                connection.CommitTransaction();
                MessageBox.Show("Forma de pagamento vinculado com sucesso.");
                Close();
            }
            catch (Exception ex)
            {
                if (connection != null &&
                   connection.Transaction.State == TransactionState.Begin)
                    connection.BeginTransaction();

                MessageBox.ShowError(ex);
            }
            finally
            {
                connection.Close();
                conf.Dispose();
                Wait.Close();
            }
            #endregion
        }
Exemplo n.º 2
0
        private void grdFPECF_OnToolbarDeleteClick(object sender, DataGridViewCellCancelEventArgs e)
        {
            foreach (DataGridViewRow row in grdFPECF.SelectedRows)
            {
                int indice = Unimake.Convert.ToInt(row.Cells[colIndice.Index].Value);
                string formaPagto = string.Empty;
                formaPagto = row.Cells[colVinculado.Index].Value.ToString();
                IImpressoraFormaPagto impForma = row.Cells[colGUIDImpressoraForma.Index].Value as IImpressoraFormaPagto
                            ?? new ImpressoraFormaPagto();

                if (!formaPagto.IsNullOrEmpty())
                {
                    //Pesquisa se tem a forma de pagamento selecionada da coluna "Vinculado" na base de dados na tabela ecf_ImpressoraFormaPagto
                    IList<IImpressoraFormaPagto> formasImp = new ImpressoraFormaPagto().Find<IImpressoraFormaPagto>(new Where
                    {
                        {
                            "ecf_ImpressoraFormaPagto.GUIDImpressora = @guidimp",
                            new Parameter
                            {
                                ParameterName = "@guidimp",
                                Value = Settings.ECF.ECFAtual.GUID.ToString()
                            }
                        },
                        {
                            "ecf_ImpressoraFormaPagto.Indice = @indice",
                            new Parameter
                            {
                                ParameterName = "@indice",
                                Value = indice
                            }
                        }
                    });

                    //Se já existe formas de pagamentos vinculadas
                    if (formasImp.Count > 0)
                    {
                        //Deletar todas as formas de pagamento vinculada para esse índice da forma de pagamento da impressora fiscal
                        foreach (IImpressoraFormaPagto fi in formasImp)
                        {
                            impForma = new ImpressoraFormaPagto(fi.GUID);
                            impForma.Delete();
                        }
                        row.Cells[colVinculado.Index].Value = "";  // limpa campo
                    }
                }
            }
        }