/// <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 }
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 } } } }