Пример #1
0
            // 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);
            }