// SD07 - Inteface de Incoterms - Comunicação // funcao - ZFXI_SD07C //[RfcServerFunction(Name = "ZFXI_SD07C")] public static void StfcInterfaceIncoterms(RfcServerContext context, IRfcFunction function) { // 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 IncotermsCabRepository incotermsCabRepository = new IncotermsCabRepository(); IncotermsCab incotermsCab = new IncotermsCab(); IncotermsLinhaRepository incotermsLinhaRepository = new IncotermsLinhaRepository(); IncotermsLinhas incotermsLinhas = new IncotermsLinhas(); // ZTBSD058 IRfcTable it_incotermCab = function.GetTable("IT_INCO1"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); // ZTBSD059 IRfcTable it_incotermLinhas = function.GetTable("IT_INCO2"); // Implementa Repositorio Rfc de resposta RfcRepository repLinhas = context.Repository; // RETORNO RfcStructureMetadata bapiret2Linha = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_inc_linha = bapiret2Linha.CreateStructure(); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { IList<IncotermsCab> fromDB = incotermsCabRepository.ObterTodos(); IList<IncotermsLinhas> fromDBlinha = incotermsLinhaRepository.ObterTodos(); int count = 0; foreach (IncotermsCab dados in fromDB) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_incotermCab) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; incotermsCabRepository.Alterar(dados); } count = 0; foreach (IncotermsLinhas dados in fromDBlinha) { count = count + 1; if (count == 1) { foreach (IRfcStructure row in it_incotermLinhas) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); break; } } dados.Eliminacao = "X"; incotermsLinhaRepository.Alterar(dados); } } // // INCOTERMS - PARTE 1 - CABECALHO // int v_cont = 0; foreach (IRfcStructure row in it_incotermCab) { incotermsCab.CodigoIncotermCab = row.GetString("INCO1"); incotermsCab.Descricao = row.GetString("BEZEI"); incotermsCab.Pacote = row.GetString("PACOTE"); incotermsCab.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); incotermsCab.Hora_criacao = row.GetString("ERZET"); //incotermsCab.Eliminacao = row.GetString("LOEVM"); row.GetString("LOEVM"); Falta acrescentar esse campo no ABAP // Obtem todas as Incoterms parte 2 do Codigo da Incoterm Parte 1 IList<IncotermsLinhas> fromLinha = incotermsLinhaRepository.ObterRegistrosUmCampo("CodigoIncotermCab", incotermsCab.CodigoIncotermCab); // Atualiza para Eliminado todas as condicoes do cliente foreach (IncotermsLinhas dados in fromLinha) { dados.Pacote = row.GetString("PACOTE"); dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); dados.Hora_criacao = row.GetString("ERZET"); dados.Eliminacao = "X"; incotermsLinhaRepository.Alterar(dados); } v_cont = v_cont + 1; try { IList<IncotermsCab> fromDB = incotermsCabRepository.ObterRegistrosUmCampo("CodigoIncotermCab", incotermsCab.CodigoIncotermCab); if (fromDB.Count == 0) { incotermsCabRepository.Salvar(incotermsCab); } else { foreach (IncotermsCab dados in fromDB) { incotermsCab.pro_id_incotermCab = dados.pro_id_incotermCab; } incotermsCabRepository.Alterar(incotermsCab); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir ao inserir a Incoterm Parte 1, 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 a Incoterm Parte 1: " + incotermsCab.Descricao + " - Id: " + incotermsCab.CodigoIncotermCab); retorno.Insert(linha_retorno); } } IRfcTable retornoSucesso = function.GetTable("IT_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros com Sucesso Incoterm - Parte 1: " + v_cont); retornoSucesso.Insert(linha_retorno); // FIM INCOTERMS - PARTE 1 - CABECALHO // // INCOTERMS - PARTE 2 - LINHAS // int v_cont_linha = 0; foreach (IRfcStructure row in it_incotermLinhas) { incotermsLinhas.CodigoIncotermCab = row.GetString("INCO1"); incotermsLinhas.IncotermLinha = row.GetString("INCO2"); incotermsLinhas.Pacote = row.GetString("PACOTE"); incotermsLinhas.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT")); incotermsLinhas.Hora_criacao = row.GetString("ERZET"); String v_parc_redesp_cif = row.GetString("PARC_REDESP_CIF"); String v_parc_redesp_fob = row.GetString("PARC_REDESP_FOB"); if (v_parc_redesp_cif != "") { incotermsLinhas.parc_redesp_cif = Convert.ToBoolean(1); } if (v_parc_redesp_fob != "") { incotermsLinhas.parc_redesp_fob = Convert.ToBoolean(1); } v_cont_linha = v_cont_linha + 1; try { IList<IncotermsLinhas> fromDB = incotermsLinhaRepository.PesquisaIncotermLinha("CodigoIncotermCab", incotermsLinhas.CodigoIncotermCab, "IncotermLinha", incotermsLinhas.IncotermLinha); if (fromDB.Count == 0) { incotermsLinhaRepository.Salvar(incotermsLinhas); } else { foreach (IncotermsLinhas dados in fromDB) { incotermsLinhas.pro_id_incotermLinha = dados.pro_id_incotermLinha; } incotermsLinhaRepository.Alterar(incotermsLinhas); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir ao inserir a Incoterm Parte 2, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_inc_linha.SetValue("TYPE", "E"); linha_retorno_inc_linha.SetValue("MESSAGE", ex.Message); linha_retorno_inc_linha.SetValue("MESSAGE", "Erro ao inserir a Incoterm Parte 2: " + incotermsLinhas.IncotermLinha + " - Id: " + incotermsLinhas.CodigoIncotermCab); retorno.Insert(linha_retorno_inc_linha); } } IRfcTable retornoSucessoLinha = function.GetTable("IT_RETURN"); linha_retorno_inc_linha.SetValue("TYPE", "S"); linha_retorno_inc_linha.SetValue("MESSAGE", "Registros com Sucesso Incoterm - Parte 2: " + v_cont_linha); retornoSucessoLinha.Insert(linha_retorno_inc_linha); // FIM INCOTERMS }
// SD07 - Inteface de Incoterms - Comunicação // funcao - ZFXI_SD07C //[RfcServerFunction(Name = "ZFXI_SD07C")] public static void StfcInterfaceIncoterms(RfcServerContext context, IRfcFunction function) { // // INCOTERMS - PARTE 1 - CABECALHO // // 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 IncotermsCabRepository incotermsCabRepository = new IncotermsCabRepository(); // Implementa repositorio antes do Foreach para evitar duplicações IncotermsCab incotermsCab = new IncotermsCab(); // 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<IncotermsCab> fromDB = incotermsCabRepository.ObterTodos(); foreach (IncotermsCab dados in fromDB) { incotermsCabRepository.Excluir(dados); } } // ZTBSD058 IRfcTable it_incotermCab = function.GetTable("IT_INCO1"); // 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_incotermCab) { incotermsCab.CodigoIncotermCab = row.GetString("INCO1"); incotermsCab.Descricao = row.GetString("BEZEI"); // Pacote incotermsCab.Pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); incotermsCab.Data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao incotermsCab.Hora_criacao = row.GetString("ERZET"); try { v_cont = v_cont + 1; if (deletar == ' ') { IList<IncotermsCab> fromDB = incotermsCabRepository.ObterTodosComCampo("CodigoIncotermCab", incotermsCab.CodigoIncotermCab); foreach (IncotermsCab dados in fromDB) { incotermsCabRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir ao inserir a Incoterm Parte 1, 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 a Incoterm Parte 1: " + incotermsCab.Descricao + " - Id: " + incotermsCab.CodigoIncotermCab); retorno.Insert(linha_retorno); } incotermsCabRepository.Salvar(incotermsCab); 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 INCOTERMS - PARTE 1 - CABECALHO // // INCOTERMS - PARTE 2 - LINHAS // // Implementa repositorio antes do Foreach para evitar duplicações IncotermsLinhaRepository incotermsLinhaRepository = new IncotermsLinhaRepository(); // Implementa repositorio antes do Foreach para evitar duplicações IncotermsLinhas incotermsLinhas = new IncotermsLinhas(); // Se estiver espaco em branco na variavel, não limpa a tabela da interface. if (deletar != ' ') { // Apaga todos os registros da tabela pro_cliente_vendas IList<IncotermsLinhas> fromDB = incotermsLinhaRepository.ObterTodos(); foreach (IncotermsLinhas dados in fromDB) { incotermsLinhaRepository.Excluir(dados); } } // ZTBSD059 IRfcTable it_incotermLinhas = function.GetTable("IT_INCO2"); // Implementa Repositorio Rfc de resposta RfcRepository repLinhas = context.Repository; // RETORNO RfcStructureMetadata bapiret2Linha = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno_inc_linha = bapiret2Linha.CreateStructure(); int v_cont_linha = 0; foreach (IRfcStructure row in it_incotermLinhas) { incotermsLinhas.CodigoIncotermCab = row.GetString("INCO1"); incotermsLinhas.IncotermLinha = row.GetString("INCO2"); // Pacote incotermsLinhas.Pacote = row.GetString("PACOTE"); // Data Cricao string v_data_Cricao = row.GetString("ERDAT"); incotermsLinhas.Data_criacao = Convert.ToDateTime(v_data_Cricao); // Hora de Criacao incotermsLinhas.Hora_criacao = row.GetString("ERZET"); try { v_cont_linha = v_cont_linha + 1; if (deletar == ' ') { IList<IncotermsLinhas> fromDB = incotermsLinhaRepository.PesquisaIncotermLinha("CodigoIncotermCab", incotermsLinhas.CodigoIncotermCab, "IncotermLinha", incotermsLinhas.IncotermLinha); foreach (IncotermsLinhas dados in fromDB) { incotermsLinhaRepository.Excluir(dados); } } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao inserir ao inserir a Incoterm Parte 2, Mensagem: " + ex); IRfcTable retorno = function.GetTable("IT_RETURN"); linha_retorno_inc_linha.SetValue("TYPE", "E"); linha_retorno_inc_linha.SetValue("MESSAGE", ex.Message); linha_retorno_inc_linha.SetValue("MESSAGE", "Erro ao inserir a Incoterm Parte 2: " + incotermsLinhas.IncotermLinha + " - Id: " + incotermsLinhas.CodigoIncotermCab); retorno.Insert(linha_retorno_inc_linha); } incotermsLinhaRepository.Salvar(incotermsLinhas); String PACOTE = row.GetString("PACOTE"); String ERDAT = row.GetString("ERDAT"); String ERZET = row.GetString("ERZET"); } IRfcTable retornoSucessoLinha = function.GetTable("IT_RETURN"); linha_retorno_inc_linha.SetValue("TYPE", "S"); linha_retorno_inc_linha.SetValue("MESSAGE", "Registros com Sucesso: " + v_cont_linha); retornoSucessoLinha.Insert(linha_retorno_inc_linha); // FIM INCOTERMS }