private void Valida_RUC() { object obj = new TCD_CadClifor().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "<>", vVL_Busca = "'" + cd_clifor.Text.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.nr_cgc", vOperador = "=", vVL_Busca = "'" + NR_CGC.Text.Trim() + "'" } }, "a.cd_clifor + a.nm_clifor"); if (obj == null ? false : obj.ToString().Trim() != string.Empty) { MessageBox.Show("El número de RUC: " + NR_CGC.Text + " es registrado en sistema, \r\n com o CLIFOR: " + obj.ToString().Trim() + "\r\n Búsqueda, !", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); NR_CGC.Clear(); NR_CGC.Focus(); } }
private void Valida_RG() { if (NR_RG.Text.Trim() != string.Empty) { object obj = new TCD_CadClifor().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "<>", vVL_Busca = "'" + cd_clifor.Text.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.nr_rg", vOperador = "=", vVL_Busca = "'" + NR_CGC.Text.Trim() + "'" } }, "a.cd_clifor + a.nm_clifor"); if (obj == null ? false : obj.ToString().Trim() != string.Empty) { MessageBox.Show("O número do RG: " + NR_RG.Text + " já está cadastrado no sistema, \r\n com o CLIFOR: " + obj.ToString().Trim() + "\r\n Por Favor, Verifique!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); NR_RG.Clear(); NR_RG.Focus(); } } }
private void Valida_CNPJ() { if ((NR_CGC.Text.Trim() != string.Empty) && (NR_CGC.Text.Trim() != ". . / -")) { CNPJ_Valido.nr_CNPJ = NR_CGC.Text; if (!string.IsNullOrEmpty(CNPJ_Valido.nr_CNPJ)) { if (Convert.ToDecimal(CNPJ_Valido.nr_CNPJ.SoNumero()) != 0) { //Verificar se o cnpj ja existe no sistema object obj = new TCD_CadClifor().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "<>", vVL_Busca = "'" + cd_clifor.Text.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.nr_cgc", vOperador = "=", vVL_Busca = "'" + NR_CGC.Text.Trim() + "'" } }, "a.cd_clifor + a.nm_clifor"); if (obj == null ? false : obj.ToString().Trim() != string.Empty) { MessageBox.Show("O número do CNPJ: " + NR_CGC.Text + " já está cadastrado no sistema, \r\n com o CLIFOR: " + obj.ToString().Trim() + "!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); NR_CGC.Clear(); NR_CGC.Focus(); St_bloquear = true; } else { St_bloquear = false; } } } else { MessageBox.Show("Por Favor! Entre com um CNPJ Válido!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); NR_CGC.Clear(); NR_CGC.Focus(); } } }
public static string Excluir(TRegistro_CadClifor val, TObjetoBanco banco) { bool st_transacao = false; TCD_CadClifor qtb_clifor = new TCD_CadClifor(); try { if (banco == null) { st_transacao = qtb_clifor.CriarBanco_Dados(true); } else { qtb_clifor.Banco_Dados = banco; } try { qtb_clifor.Excluir(val); } catch { val.St_registro = "C"; Gravar(val, qtb_clifor.Banco_Dados); } if (st_transacao) { qtb_clifor.Banco_Dados.Commit_Tran(); } return(val.Cd_clifor); } catch (Exception ex) { if (st_transacao) { qtb_clifor.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro excluir clifor: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_clifor.deletarBanco_Dados(); } } }
private void Valida_CPF() { if ((NR_CPF.Text.Trim() != string.Empty) && (NR_CPF.Text.Trim() != ". . -")) { CPF_Valido.nr_CPF = NR_CPF.Text; if (CPF_Valido.nr_CPF.Trim() != string.Empty) { if (Convert.ToDecimal(CPF_Valido.nr_CPF.SoNumero()) != 0) { object obj = new TCD_CadClifor().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "<>", vVL_Busca = "'" + cd_clifor.Text.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.nr_cpf", vOperador = "=", vVL_Busca = "'" + NR_CPF.Text.Trim() + "'" } }, "a.cd_clifor + a.nm_clifor"); if (obj == null ? false : obj.ToString().Trim() != string.Empty) { MessageBox.Show("O número do CPF: " + NR_CPF.Text + " já está cadastrado no sistema, \r\n com o CLIFOR: " + obj.ToString().Trim() + "\r\n Por Favor, Verifique!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); NR_CPF.Clear(); NR_CPF.Focus(); } } } else { MessageBox.Show("Por Favor! Entre com um CPF Válido!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); NR_CPF.Clear(); NR_CPF.Focus(); } } }
public static string Excluir(TRegistro_Clifor val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_CadClifor qtb_clifor = new TCD_CadClifor(); try { if (banco == null) { st_transacao = qtb_clifor.CriarBanco_Dados(true); } else { qtb_clifor.Banco_Dados = banco; } TRegistro_CadClifor rClifor = new TRegistro_CadClifor(); rClifor.Cd_clifor = val.Cd_clifor; TCN_CadClifor.Excluir(rClifor, qtb_clifor.Banco_Dados); if (st_transacao) { qtb_clifor.Banco_Dados.Commit_Tran(); } return("OK"); } catch (Exception ex) { if (st_transacao) { qtb_clifor.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar clifor: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_clifor.deletarBanco_Dados(); } } }
private void afterGravar() { if (pnDadosClifor.validarCampoObrigatorio()) { if (!string.IsNullOrEmpty(edtCartaoFidelidade.Text.Trim())) { TpBusca[] tpBuscas = new TpBusca[0]; Estruturas.CriarParametro(ref tpBuscas, "a.ident_frentista", "'" + edtCartaoFidelidade.Text + "'"); Estruturas.CriarParametro(ref tpBuscas, "a.st_registro", "'A'"); TList_CadClifor _CadClifors = new TCD_CadClifor().Select(tpBuscas, 1, string.Empty); if (_CadClifors.Count > 0) { edtCartaoFidelidade.Focus(); MessageBox.Show("Cartão fidelidade informado já é cadastrado!", "mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } (bsClifor.Current as TRegistro_Clifor).Tp_pessoa = "F"; DialogResult = DialogResult.OK; } }
public static string Gravar(TRegistro_CadClifor val, TObjetoBanco banco) { bool st_transacao = false; TCD_CadClifor qtb_clifor = new TCD_CadClifor(); try { if (banco == null) { st_transacao = qtb_clifor.CriarBanco_Dados(true); } else { qtb_clifor.Banco_Dados = banco; } //testa se cliente e novo para bloquear credito a prazo if (string.IsNullOrEmpty(val.Cd_clifor) && CamadaNegocio.ConfigGer.TCN_CadParamGer.BuscaVL_Bool("ST_BLOQ_CLIENTE", "", qtb_clifor.Banco_Dados).Trim().Equals("S")) { val.St_bloqcreditoavulso = "S"; } else if (qtb_clifor.BuscarEscalar(new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + val.Cd_clifor.Trim() + "'" } }, "1") == null && CamadaNegocio.ConfigGer.TCN_CadParamGer.BuscaVL_Bool("ST_BLOQ_CLIENTE", "", qtb_clifor.Banco_Dados).Trim().Equals("S")) { val.St_bloqcreditoavulso = "S"; } //Gravar Clifor val.Cd_clifor = CamadaDados.TDataQuery.getPubVariavel(qtb_clifor.Gravar(val), "@P_CD_CLIFOR"); //Excluir Enderecos val.lEndDel.ForEach(p => TCN_CadEndereco.Excluir(p, qtb_clifor.Banco_Dados)); //Gravar Enderecos val.lEndereco.ForEach(p => { p.Cd_clifor = val.Cd_clifor; TCN_CadEndereco.Gravar(p, qtb_clifor.Banco_Dados); }); //Excluir Dados bancarios val.lDadosBancDel.ForEach(p => TCN_CadDados_Bancarios_Clifor.Excluir(p, qtb_clifor.Banco_Dados)); //Gravar Dados Bancarios val.lDadosBanc.ForEach(p => { p.CD_Clifor = val.Cd_clifor; TCN_CadDados_Bancarios_Clifor.Gravar(p, qtb_clifor.Banco_Dados); }); //Excluir Contatos val.lContatoDel.ForEach(p => TCN_CadContatoCliFor.Excluir(p, qtb_clifor.Banco_Dados)); //Gravar Contatos val.lContato.ForEach(p => { p.Cd_CliFor = val.Cd_clifor; TCN_CadContatoCliFor.Gravar(p, qtb_clifor.Banco_Dados); }); //Excluir Referencias val.lReferenciaDel.ForEach(p => TCN_CadReferenciaClifor.Excluir(p, qtb_clifor.Banco_Dados)); //Gravar Referencias val.lReferencia.ForEach(p => { p.Cd_CliFor = val.Cd_clifor; TCN_CadReferenciaClifor.Gravar(p, qtb_clifor.Banco_Dados); }); //Exluir Data Clifor val.lDataCliforDel.ForEach(p => TCN_DataClifor.Excluir(p, qtb_clifor.Banco_Dados)); //Gravar Data Clifor val.lDataClifor.ForEach(p => { p.Cd_clifor = val.Cd_clifor; TCN_DataClifor.Gravar(p, qtb_clifor.Banco_Dados); }); //Gravar Pessoas Autorizadas val.lPessoas.ForEach(p => { p.Cd_clifor = val.Cd_clifor; TCN_PessoasAutorizadas.Gravar(p, qtb_clifor.Banco_Dados); }); //Excluir Anexos val.lAnexoDel.ForEach(p => TCN_AnexoClifor.Excluir(p, qtb_clifor.Banco_Dados)); //Gravar Anexos val.lAnexo.ForEach(p => { p.Cd_clifor = val.Cd_clifor; TCN_AnexoClifor.Gravar(p, qtb_clifor.Banco_Dados); }); //Excluir Tab Preco val.lTabPrecoDel.ForEach(p => TCN_Clifor_X_TabPreco.Excluir(p, qtb_clifor.Banco_Dados)); //Gravar Tab Preco val.lTabPreco.ForEach(p => { p.Cd_clifor = val.Cd_clifor; TCN_Clifor_X_TabPreco.Gravar(p, qtb_clifor.Banco_Dados); }); if (st_transacao) { qtb_clifor.Banco_Dados.Commit_Tran(); } return(val.Cd_clifor); } catch (Exception ex) { if (st_transacao) { qtb_clifor.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar clifor: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_clifor.deletarBanco_Dados(); } } }
private void bbImportar_Click(object sender, EventArgs e) { //071.548.686-19 if (bsPedLoja.Current != null) { if ((bsPedLoja.Current as TRegistro_Pedido).Nr_pedido.ToString().Trim() != "0") { MessageBox.Show("Não é permitido IMPORTAR pedido novamente.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if ((bsPedLoja.Current as TRegistro_Pedido).StatusMagento.Trim().ToUpper().Equals("CANCELADO")) { MessageBox.Show("Não é permitido IMPORTAR pedido CANCELADO.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (rCfg == null) { MessageBox.Show("Não existe configuração E-commerce para loja selecionada.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } MagentoService api = new MagentoService(); string sessao = string.Empty; try { sessao = api.login((cbLoja.SelectedItem as TRegistro_LojaVirtual).UserName, (cbLoja.SelectedItem as TRegistro_LojaVirtual).ApiKey); salesOrderEntity ePed = api.salesOrderInfo(sessao, (bsPedLoja.Current as TRegistro_Pedido).Nr_PedidoOrigem); if (ePed != null) { TRegistro_Pedido rPedido = new TRegistro_Pedido(); //Buscar Cliente customerCustomerEntity eCliente = api.customerCustomerInfo(sessao, int.Parse(ePed.customer_id), null); //Verificar se cliente existe no Aliance TList_CadClifor lCliente = new TCD_CadClifor().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = string.Empty, vVL_Busca = "dbo.FVALIDA_NUMEROS(a.nr_cgc) = '" + eCliente.taxvat.Trim() + "' " + "or dbo.FVALIDA_NUMEROS(a.nr_cpf) = '" + eCliente.taxvat.Trim() + "'" } }, 1, string.Empty); if (lCliente.Count > 0) { rPedido.CD_Clifor = lCliente[0].Cd_clifor; rPedido.NM_Clifor = lCliente[0].Nm_clifor; //Buscar endereco cliente TList_CadEndereco lEnd = new TCD_CadEndereco().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + lCliente[0].Cd_clifor.Trim() + "'" } }, 1, string.Empty); if (lEnd.Count > 0) { rPedido.CD_Endereco = lEnd[0].Cd_endereco; rPedido.DS_Endereco = lEnd[0].Ds_endereco; numero.Text = lEnd[0].Numero; bairro.Text = lEnd[0].Bairro; ds_cidade.Text = lEnd[0].DS_Cidade; uf.Text = lEnd[0].UF; } } else { TRegistro_CadClifor rClifor = new TRegistro_CadClifor(); rClifor.Nm_clifor = eCliente.firstname.Trim().ToUpper() + " " + eCliente.lastname.Trim().ToUpper(); rClifor.Email = eCliente.email.Trim(); rClifor.Tp_pessoa = eCliente.taxvat.Trim().Length.Equals(14) ? "J" : "F"; rClifor.Nr_cgc = eCliente.taxvat.Trim().Length.Equals(14) ? eCliente.taxvat.Trim() : string.Empty; rClifor.Nr_cpf = !eCliente.taxvat.Trim().Length.Equals(14) ? eCliente.taxvat.Trim() : string.Empty; rClifor.Id_categoriaclifor = rCfg.Id_categoriaclifor; rClifor.Cd_condfiscal_clifor = rCfg.Cd_condfiscal_clifor; TRegistro_CadEndereco rEndereco = new TRegistro_CadEndereco(); rEndereco.Cep = ePed.billing_address.postcode; //Buscar Endereco Rest TEndereco_CEPRest eRest = ServiceRest.DataService.BuscarEndCEPRest(rEndereco.Cep); if (eRest != null) { rEndereco.Ds_endereco = eRest.logradouro; rEndereco.Ds_complemento = eRest.complemento; rEndereco.Bairro = eRest.bairro; rEndereco.Cd_cidade = eRest.ibge; string[] str = ePed.billing_address.street.Split(new char[] { '\n' }); if (str.Length >= 2) { rEndereco.Numero = str[1]; } } else { string[] str = ePed.billing_address.street.Split(new char[] { '\n' }); if (str.Length >= 4) { rEndereco.Ds_endereco = str[0]; rEndereco.Bairro = str[3]; rEndereco.Numero = str[1]; } } rClifor.lEndereco.Add(rEndereco); using (Financeiro.Cadastros.TFCadCliforResumido fClifor = new Financeiro.Cadastros.TFCadCliforResumido()) { fClifor.rClifor = rClifor; if (fClifor.ShowDialog() == DialogResult.OK) { try { TCN_CadClifor.Gravar(fClifor.rClifor, null); MessageBox.Show("Cliente cadastrado com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); rPedido.CD_Clifor = fClifor.rClifor.Cd_clifor; rPedido.NM_Clifor = fClifor.rClifor.Nm_clifor; rPedido.CD_Endereco = fClifor.rClifor.lEndereco[0].Cd_endereco; rPedido.DS_Endereco = fClifor.rClifor.lEndereco[0].Ds_endereco; numero.Text = fClifor.rClifor.lEndereco[0].Numero; bairro.Text = fClifor.rClifor.lEndereco[0].Bairro; ds_cidade.Text = fClifor.rClifor.lEndereco[0].DS_Cidade; uf.Text = fClifor.rClifor.lEndereco[0].UF; } catch (Exception ex) { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } else { MessageBox.Show("Obrigatório cadastrar cliente para importar pedido.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } } rPedido.cd_empresa = (cbLoja.SelectedItem as TRegistro_LojaVirtual).Cd_empresa; rPedido.Nm_Empresa = (cbLoja.SelectedItem as TRegistro_LojaVirtual).Nm_empresa; rPedido.Nr_PedidoOrigem = (bsPedLoja.Current as TRegistro_Pedido).Nr_PedidoOrigem; rPedido.CFG_Pedido = rCfg.Cfg_pedido; rPedido.TP_Movimento = "S";//Venda rPedido.DT_Pedido = CamadaDados.UtilData.Data_Servidor(); rPedido.ST_Pedido = "F"; rPedido.St_registro = "F"; rPedido.Cd_moeda = rCfg.Cd_moeda; rPedido.Tp_frete = decimal.Divide(decimal.Parse(ePed.shipping_amount.SoNumero()), 10000) > 0 ? "1" : "9"; rPedido.QUANTIDADENF = decimal.Divide(decimal.Parse(ePed.total_qty_ordered.SoNumero()), 10000); //Endereco Entrega TEndereco_CEPRest endRest = ServiceRest.DataService.BuscarEndCEPRest(ePed.shipping_address.postcode.Trim()); if (endRest != null) { rPedido.Logradouroent = endRest.logradouro; rPedido.Complementoent = endRest.complemento; rPedido.Bairroent = endRest.bairro; rPedido.Cd_cidadeent = endRest.ibge; } string[] eEnt = ePed.shipping_address.street.Split(new char[] { '\n' }); if (eEnt.Length >= 4) { rPedido.Logradouroent = eEnt[0]; rPedido.Numeroent = eEnt[1]; rPedido.Complementoent = eEnt[2]; rPedido.Bairroent = eEnt[3]; } //Itens do pedido foreach (salesOrderItemEntity item in ePed.items) { foreach (salesOrderItemEntity nitem in ePed.items) { if (item.sku.ToString().Equals(nitem.sku.ToString()) && decimal.Divide(decimal.Parse(nitem.price.SoNumero()), 10000) == decimal.Zero) { item.name = nitem.name; item.product_id = nitem.product_id; break; } } if (decimal.Divide(decimal.Parse(item.price.SoNumero()), 10000) > decimal.Zero) { TRegistro_LanPedido_Item rItem = new TRegistro_LanPedido_Item(); rItem.Cd_referencia = item.product_id; //Buscar Produto CamadaDados.Estoque.Cadastros.TList_CadProduto lProd = new CamadaDados.Estoque.Cadastros.TCD_CadProduto().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.codigo_alternativo", vOperador = "=", vVL_Busca = "'" + item.product_id.Trim() + "'" }, new TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "<>", vVL_Busca = "'C'" } }, 1, string.Empty, string.Empty, string.Empty); if (lProd.Count > 0) { rItem.Cd_produto = lProd[0].CD_Produto; rItem.Ds_produto = lProd[0].DS_Produto; rItem.Cd_unidade_est = lProd[0].CD_Unidade; rItem.Ds_unidade_est = lProd[0].DS_Unidade; rItem.Sg_unidade_est = lProd[0].Sigla_unidade; rItem.Cd_unidade_valor = lProd[0].CD_Unidade; rItem.Ds_unidade_valor = lProd[0].DS_Unidade; rItem.Sg_unidade_valor = lProd[0].Sigla_unidade; } else { rItem.Ds_produto = item.name.Trim().ToUpper(); } rItem.Quantidade = decimal.Divide(decimal.Parse(item.qty_ordered.SoNumero()), 10000); rItem.Vl_unitario = decimal.Divide(decimal.Parse(item.price.SoNumero()), 10000); rItem.Vl_subtotal = decimal.Divide(decimal.Parse(item.row_total.SoNumero()), 10000); rItem.Vl_desc = decimal.Divide(decimal.Parse(item.discount_amount.SoNumero()), 10000); rItem.Cd_local = rCfg.Cd_local; rPedido.Pedido_Itens.Add(rItem); } //Ratear Frete rPedido.Vl_frete = decimal.Divide(decimal.Parse(ePed.shipping_amount.SoNumero()), 10000); if (rPedido.Vl_frete > decimal.Zero) { CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Rateia_Frete(rPedido); } bsPedido.DataSource = new TList_Pedido { rPedido }; } } gPedido.Enabled = false; bbImportar.Enabled = false; tlpPedido.ColumnStyles[1].Width = 623; } catch (Exception ex) { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { api.endSession(sessao); } } }
public static string Gravar(TRegistro_Clifor val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_CadClifor qtb_clifor = new TCD_CadClifor(); try { if (banco == null) { st_transacao = qtb_clifor.CriarBanco_Dados(true); } else { qtb_clifor.Banco_Dados = banco; } //cria objeto cliente do financeiro TRegistro_CadEndereco cendereco = new TRegistro_CadEndereco(); cendereco.Cd_clifor = val.Cd_clifor; cendereco.Cd_endereco = val.Cd_Endereco; cendereco.Celular = val.celular.SoNumero(); cendereco.Ds_endereco = val.endereco; cendereco.Bairro = val.bairro; cendereco.Cep = val.cep; cendereco.Numero = val.numero; cendereco.Proximo = val.obs; cendereco.Cd_cidade = val.cd_cidade; val.lEndereco.Add(cendereco); //Gravar Clifor val.Cd_clifor = CamadaDados.TDataQuery.getPubVariavel(qtb_clifor.Gravar(val), "@P_CD_CLIFOR"); //Excluir Enderecos val.lEndDel.ForEach(p => TCN_CadEndereco.Excluir(p, qtb_clifor.Banco_Dados)); //Gravar Enderecos val.lEndereco.ForEach(p => { p.Cd_clifor = val.Cd_clifor; TCN_CadEndereco.Gravar(p, qtb_clifor.Banco_Dados); }); if (st_transacao) { qtb_clifor.Banco_Dados.Commit_Tran(); } return(val.Cd_clifor); } catch (Exception ex) { if (st_transacao) { qtb_clifor.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar clifor: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_clifor.deletarBanco_Dados(); } } }