// SD01 - Inteface de cliente - Comunicação // funcao - ZFXI_SD01C //[RfcServerFunction(Name = "ZFXI_SD01C")] public static void StfcInterfaceCliente(RfcServerContext context, IRfcFunction function) { // // CLIENTE // // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Implementa repositorio antes do Foreach para evitar duplicações ClienteRepository clienteRepository = new ClienteRepository(); Cliente cliente = new Cliente(); ClienteVendasRepository clienteVendasRepository = new ClienteVendasRepository(); ClienteVendas clienteVendas = new ClienteVendas(); ClienteCondicaoLiberadaRepository clienteCondicaoLiberadaRepository = new ClienteCondicaoLiberadaRepository(); ClienteCondicaoLiberada clienteCondicaoLiberada = new ClienteCondicaoLiberada(); ClienteTransportadoraLiberadaRepository clienteTransportadoraLiberadaRepository = new ClienteTransportadoraLiberadaRepository(); ClienteTransportadoraLiberada clienteTransportadoraLiberada = new ClienteTransportadoraLiberada(); // ZTBSD056 - ZTBXI_101 IRfcTable it_cliente = function.GetTable("IT_CLIENTE"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); // ZTBSD057 - ZTBXI_101 IRfcTable it_cliente_vendas = function.GetTable("IT_CLIENTE_AV"); // Implementa Repositorio Rfc de resposta RfcRepository repVendas = context.Repository; // RETORNO RfcStructureMetadata bapiret2Vendas = repVendas.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_vendas = bapiret2Vendas.CreateStructure(); // ZTBSD058 - ZTBXI_101 IRfcTable it_cliente_condicao = function.GetTable("IT_CLIENTE_CP"); // Implementa Repositorio Rfc de resposta RfcRepository repcondicao = context.Repository; // RETORNO RfcStructureMetadata bapiret2Condicao = repcondicao.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_condicao = bapiret2Condicao.CreateStructure(); // ZTBSD085 - ZTBXI_101 IRfcTable it_cliente_trans_lib = function.GetTable("IT_CLIENTE_TL"); // Implementa Repositorio Rfc de resposta RfcRepository repclienteTrans = context.Repository; // RETORNO RfcStructureMetadata bapiret2Trans = repclienteTrans.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_trans = bapiret2Trans.CreateStructure(); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { int count = 0; // Se a interface de cliente estiver marcada para Reiniciar "X" marca os registros das 3 tabebas como Eliminados. IList<Cliente> fromDBcliente = clienteRepository.ObterTodos(); IList<ClienteVendas> fromDBclienteV = clienteVendasRepository.ObterTodos(); IList<ClienteCondicaoLiberada> fromDBclienteCond = clienteCondicaoLiberadaRepository.ObterTodos(); foreach (Cliente dados in fromDBcliente) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_cliente) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; clienteRepository.Alterar(dados); } count = 0; foreach (ClienteVendas dados in fromDBclienteV) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_cliente_vendas) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; clienteVendasRepository.Alterar(dados); } count = 0; foreach (ClienteCondicaoLiberada dados in fromDBclienteCond) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_cliente_condicao) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; clienteCondicaoLiberadaRepository.Alterar(dados); } } int v_cont = 0; foreach (IRfcStructure row in it_cliente) { cliente.Id_cliente = row.GetString("KUNNR"); cliente.Nome = row.GetString("NAME1"); cliente.Cpf = row.GetString("STCD2"); cliente.Cnpj = row.GetString("STCD1"); cliente.Nr_ie_cli = row.GetString("STCD3"); cliente.Cep = row.GetString("POST_CODE"); cliente.Endereco = row.GetString("STREET"); cliente.Numero = row.GetString("HOUSE_NUM1"); cliente.Complemento = row.GetString("HOUSE_NUM2"); cliente.Municipio = row.GetString("CITY1"); cliente.Bairro = row.GetString("CITY2"); cliente.Uf = row.GetString("UF"); cliente.Pais = row.GetString("COUNTRY"); cliente.Tel_res = row.GetString("TELF1"); cliente.Tel_cel = row.GetString("TELF2"); cliente.Fax = row.GetString("TELFX"); cliente.Email = row.GetString("EMAIL"); cliente.Pacote = row.GetString("PACOTE"); cliente.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); cliente.Hora_criacao = row.GetString("ERZET"); cliente.Eliminacao = row.GetString("LOEVM"); // Obtem todas as condicoes do banco para o cliente que esta sendo processado IList<ClienteCondicaoLiberada> fromCondicao = clienteCondicaoLiberadaRepository.ObterRegistrosUmCampo("Id_cliente", cliente.Id_cliente); // Atualiza para Eliminado todas as condicoes do cliente foreach (ClienteCondicaoLiberada dados in fromCondicao) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); dados.Eliminacao = "X"; clienteCondicaoLiberadaRepository.Alterar(dados); } v_cont = v_cont + 1; try { // Se o registro existir, ele é atualizado, se não ele é inserido. IList<Cliente> fromDB = clienteRepository.ObterRegistrosUmCampo("Id_cliente", cliente.Id_cliente); if (fromDB.Count == 0) { clienteRepository.Salvar(cliente); } else { clienteRepository.Alterar(cliente); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir o Cliente, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir o Cliente Dados Gerais: " + cliente.Nome + " - Id: " + cliente.Id_cliente); retorno.Insert(linha_retorno); } } // FIM CLIENTE // // CLIENTE VENDAS // int v_cont_vendas = 0; foreach (IRfcStructure row in it_cliente_vendas) { clienteVendas.Id_cliente = row.GetString("KUNNR"); clienteVendas.Org_vendas = row.GetString("VKORG"); clienteVendas.Can_dist = row.GetString("VTWEG"); clienteVendas.Set_ativ = row.GetString("SPART"); clienteVendas.Grupo_cli = row.GetString("KDGRP"); clienteVendas.Id_fornecedor = row.GetString("LIFNR"); clienteVendas.Denominacao = row.GetString("VKORG_TXT"); clienteVendas.Pacote = row.GetString("PACOTE"); clienteVendas.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); clienteVendas.Hora_criacao = row.GetString("ERZET"); clienteVendas.Eliminacao = row.GetString("LOEVM"); v_cont_vendas = v_cont_vendas + 1; try { IList<ClienteVendas> fromDB = clienteVendasRepository.ObterRegistrosQuatroCampos("Id_cliente", clienteVendas.Id_cliente, "Org_vendas", clienteVendas.Org_vendas, "Can_dist", clienteVendas.Can_dist, "Set_ativ", clienteVendas.Set_ativ); if (fromDB.Count == 0) { clienteVendasRepository.Salvar(clienteVendas); } else { foreach (ClienteVendas dados in fromDB) { clienteVendas.pro_id_cliente_vendas = dados.pro_id_cliente_vendas; } clienteVendasRepository.Alterar(clienteVendas); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir o Cliente Vendas, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_vendas.SetValue("TYPE", "E"); linha_retorno_vendas.SetValue("MESSAGE", ex.Message); linha_retorno_vendas.SetValue("MESSAGE", "Erro ao inserir o Cliente Área de Vendas: " + cliente.Nome + " - Id: " + cliente.Id_cliente); retorno.Insert(linha_retorno_vendas); } } // FIM CLIENTE VENDAS // // CLIENTE CONDICAO // int v_cont_condicao = 0; foreach (IRfcStructure row in it_cliente_condicao) { clienteCondicaoLiberada.Id_cliente = row.GetString("KUNNR"); clienteCondicaoLiberada.Chave_condicao = row.GetString("ZTERM"); clienteCondicaoLiberada.Data_fim_condicao = Convert.ToDateTime(row.GetString("DATBI")); clienteCondicaoLiberada.Pacote = row.GetString("PACOTE"); clienteCondicaoLiberada.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); clienteCondicaoLiberada.Hora_criacao = row.GetString("ERZET"); v_cont_condicao = v_cont_condicao + 1; try { IList<ClienteCondicaoLiberada> fromDB = clienteCondicaoLiberadaRepository.ObterRegistrosDoisCampos("Id_cliente", clienteCondicaoLiberada.Id_cliente, "Chave_condicao", clienteCondicaoLiberada.Chave_condicao); if (fromDB.Count == 0) { clienteCondicaoLiberadaRepository.Salvar(clienteCondicaoLiberada); } else { clienteCondicaoLiberadaRepository.Alterar(clienteCondicaoLiberada); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir a Condicao do Cliente, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_condicao.SetValue("TYPE", "E"); linha_retorno_condicao.SetValue("MESSAGE", ex.Message); linha_retorno_condicao.SetValue("MESSAGE", "Erro ao inserir o Cliente Condições Pagto " + clienteCondicaoLiberada.Id_cliente + " - Condicao: " + clienteCondicaoLiberada.Chave_condicao); retorno.Insert(linha_retorno_condicao); } } // FIM CLIENTE CONDICAO // // CLIENTE TRANSPORTADORAS LIBERADAS // int v_cont_tras_lib = 0; foreach (IRfcStructure row in it_cliente_trans_lib) { clienteTransportadoraLiberada.Id_cliente = row.GetString("KUNNR"); clienteTransportadoraLiberada.Funcao_parceiro = row.GetString("PARVW"); clienteTransportadoraLiberada.Numero_agente_frete = row.GetString("TDLNR"); String v_padrao = row.GetString("PADRAO"); if (v_padrao != "") { clienteTransportadoraLiberada.Padrao = Convert.ToBoolean(1); } clienteTransportadoraLiberada.Pacote = row.GetString("PACOTE"); clienteTransportadoraLiberada.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); clienteTransportadoraLiberada.Hora_criacao = row.GetString("ERZET"); v_cont_tras_lib = v_cont_tras_lib + 1; try { IList<ClienteTransportadoraLiberada> fromDB = clienteTransportadoraLiberadaRepository.ObterRegistrosDoisCampos("Id_cliente", clienteTransportadoraLiberada.Id_cliente, "Numero_agente_frete", clienteTransportadoraLiberada.Numero_agente_frete); if (fromDB.Count == 0) { clienteTransportadoraLiberadaRepository.Salvar(clienteTransportadoraLiberada); } else { foreach (ClienteTransportadoraLiberada dados in fromDB) { clienteTransportadoraLiberada.Id = dados.Id; } clienteTransportadoraLiberadaRepository.Alterar(clienteTransportadoraLiberada); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir a Tranpostadora do Cliente, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_trans.SetValue("TYPE", "E"); linha_retorno_trans.SetValue("MESSAGE", ex.Message); linha_retorno_trans.SetValue("MESSAGE", "Erro ao inserir a Tranpostadora do Cliente " + clienteTransportadoraLiberada.Id_cliente + " - Numero Agente Frete: " + clienteTransportadoraLiberada.Numero_agente_frete); retorno.Insert(linha_retorno_trans); } } // FIM CLIENTE TRANSPORTADORAS LIBERADAS // Envia o retorno dos registros inseridos com sucesso Cliente Transportadoras IRfcTable retornoSucessoTrans = function.GetTable("IT_RETURN"); linha_retorno_trans.SetValue("TYPE", "S"); linha_retorno_trans.SetValue("MESSAGE", "Registros com Sucesso Tranpostadora Cliente: " + v_cont_tras_lib); retornoSucessoTrans.Insert(linha_retorno_trans); // Envia o retorno dos registros inseridos com sucesso Condicoes Pagto IRfcTable retornoSucessoCondicao = function.GetTable("IT_RETURN"); linha_retorno_condicao.SetValue("TYPE", "S"); linha_retorno_condicao.SetValue("MESSAGE", "Registros com Sucesso Condições Pagto: " + v_cont_condicao); retornoSucessoCondicao.Insert(linha_retorno_condicao); // Envia o retorno dos registros inseridos com sucesso Area de Vendas IRfcTable retornoSucessoVendas = function.GetTable("IT_RETURN"); linha_retorno_vendas.SetValue("TYPE", "S"); linha_retorno_vendas.SetValue("MESSAGE", "Registros com Sucesso Área de Vendas: " + v_cont_vendas); retornoSucessoVendas.Insert(linha_retorno_vendas); // Envia o retorno dos registros inseridos com sucesso Geral IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso Dados Gerais: " + v_cont); retornoSucesso.Insert(linha_retorno); }
// SD01 - Inteface de cliente - Comunicação // funcao - ZFXI_SD01C //[RfcServerFunction(Name = "ZFXI_SD01C")] public static void StfcInterfaceCliente(RfcServerContext context, IRfcFunction function) { // // CLIENTE // // Exibe no console a interface que será executada Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID); // Implementa repositorio antes do Foreach para evitar duplicações ClienteRepository clienteRepository = new ClienteRepository(); // Implementa repositorio antes do Foreach para evitar duplicações Cliente cliente = new Cliente(); // Flag da interface que de Limpar tabela de dados Char deletar = function.GetChar("I_REFRESH"); // exibe se o mesmo foi flegado Console.WriteLine(deletar); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<Cliente> fromDB = clienteRepository.ObterTodos(); foreach (Cliente dados in fromDB) { clienteRepository.Excluir(dados); } } // ZTBSD056 - ZTBXI_101 IRfcTable it_cliente = function.GetTable("IT_CLIENTE"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); int v_cont = 0; foreach (IRfcStructure row in it_cliente) { cliente.id_cliente = row.GetString("KUNNR"); cliente.nome = row.GetString("NAME1"); cliente.cpf = row.GetString("STCD2"); cliente.cnpj = row.GetString("STCD1"); cliente.nr_ie_cli = row.GetString("STCD3"); cliente.cep = row.GetString("POST_CODE"); cliente.endereco = row.GetString("STREET"); cliente.numero = row.GetString("HOUSE_NUM1"); cliente.complemento = row.GetString("HOUSE_NUM2"); cliente.municipio = row.GetString("CITY1"); cliente.bairro = row.GetString("CITY2"); cliente.uf = row.GetString("UF"); cliente.pais = row.GetString("COUNTRY"); cliente.tel_res = row.GetString("TELF1"); cliente.tel_cel = row.GetString("TELF2"); cliente.fax = row.GetString("TELFX"); cliente.email = row.GetString("EMAIL"); // Pacote cliente.pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); cliente.data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao cliente.hora_criacao = row.GetString("ERZET"); try { v_cont = v_cont + 1; if (deletar == ' ') { IList<Cliente> fromDB = clienteRepository.ObterTodosComCampo("id_cliente", cliente.id_cliente); foreach (Cliente dados in fromDB) { clienteRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("entrou no exception"); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao inserir o Cliente: " + cliente.nome + " - Id: " + cliente.id_cliente); retorno.Insert(linha_retorno); } clienteRepository.Salvar(cliente); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso: " + v_cont); retornoSucesso.Insert(linha_retorno); // FIM CLIENTE // // CLIENTE VENDAS // // Implementa repositorio antes do Foreach para evitar duplicações ClienteVendasRepository clienteVendasRepository = new ClienteVendasRepository(); // Implementa repositorio antes do Foreach para evitar duplicações ClienteVendas clienteVendas = new ClienteVendas(); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_fornecedor IList<ClienteVendas> fromDB = clienteVendasRepository.ObterTodos(); foreach (ClienteVendas dados in fromDB) { clienteVendasRepository.Excluir(dados); } } // ZTBSD056 - ZTBXI_101 IRfcTable it_cliente_vendas = function.GetTable("IT_CLIENTE_AV"); // Implementa Repositorio Rfc de resposta RfcRepository repVendas = context.Repository; // RETORNO RfcStructureMetadata bapiret2Vendas = repVendas.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_vendas = bapiret2Vendas.CreateStructure(); int v_cont_vendas = 0; foreach (IRfcStructure row in it_cliente_vendas) { clienteVendas.id_cliente = row.GetString("KUNNR"); clienteVendas.org_vendas = row.GetString("VKORG"); clienteVendas.can_dist = row.GetString("VTWEG"); clienteVendas.can_dist = row.GetString("VTWEG"); clienteVendas.set_ativ = row.GetString("SPART"); clienteVendas.set_ativ = row.GetString("SPART"); clienteVendas.grupo_cli = row.GetString("KDGRP"); clienteVendas.id_fornecedor = row.GetString("LIFNR"); // Pacote clienteVendas.pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); clienteVendas.data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao clienteVendas.hora_criacao = row.GetString("ERZET"); try { v_cont_vendas = v_cont_vendas + 1; if (deletar == ' ') { IList<ClienteVendas> fromDB = clienteVendasRepository.PesquisaClienteVendas("id_cliente", clienteVendas.id_cliente, "org_vendas", clienteVendas.org_vendas); foreach (ClienteVendas dados in fromDB) { clienteVendasRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("entrou no exception"); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_vendas.SetValue("TYPE", "E"); linha_retorno_vendas.SetValue("MESSAGE", ex.Message); linha_retorno_vendas.SetValue("MESSAGE", "Erro ao inserir o Cliente: " + cliente.nome + " - Id: " + cliente.id_cliente); retorno.Insert(linha_retorno_vendas); } clienteVendasRepository.Salvar(clienteVendas); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucessoVendas = function.GetTable("IT_RETURN"); linha_retorno_vendas.SetValue("TYPE", "S"); linha_retorno_vendas.SetValue("MESSAGE", "Registros com Sucesso Grupo de Vendas: " + v_cont_vendas); retornoSucessoVendas.Insert(linha_retorno_vendas); // FIM CLIENTE VENDAS }