private void CarregarDados() { var source = new BindingSource(); var pedidos = PedidoVendaRepository.GetPedidosVenda(); source.DataSource = pedidos; dtVendas.DataSource = source; }
// SD08 - Inteface de Pedido - Comunicação // funcao - ZFXI_SD08C //[RfcServerFunction(Name = "ZFXI_SD08C")] public static void StfcInterfacePedido(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); Char teste = function.GetChar("E_STATUS"); string status = function.GetString("E_STATUS"); // Implementa repositorio antes do Foreach para evitar duplicações PedidoVendaRepository pedidoVendaRepository = new PedidoVendaRepository(); PedidoVenda pedidoCabecalho = new PedidoVenda(); PedidoVendaLinhaRepository pedidoVendaLinhaRepository = new PedidoVendaLinhaRepository(); PedidoVendaLinha pedidoLinha = new PedidoVendaLinha(); // ZSTSD011 IRfcTable it_pedidoLinhas = function.GetTable("TE_ITEM"); // Implementa Repositorio Rfc de resposta RfcRepository rep = context.Repository; // RETORNO RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2"); IRfcStructure linha_retorno = bapiret2.CreateStructure(); if (status != "") { // // PEDIDO LINHAS // int v_cont = 0; foreach (IRfcStructure row in it_pedidoLinhas) { pedidoLinha.Id_cotacao = row.GetString("COTACAO"); pedidoLinha.Id_item = row.GetString("POSNR"); pedidoLinha.MotivoDeRecusa = row.GetString("ABGRU"); // Atualiza o Status do Cabecalho do Pedido v_cont = v_cont + 1; try { // Obtem a Linha do Pedido que será atualizada IList<PedidoVenda> fromCabecalho = pedidoVendaRepository.ObterRegistrosUmCampo("Id_cotacao", pedidoLinha.Id_cotacao); // Atualiza o status da Linha foreach (PedidoVenda dados in fromCabecalho) { dados.Status = Convert.ToString(function.GetChar("E_STATUS")); pedidoVendaRepository.Alterar(dados); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao Atualizar o Status do Cabecalho do Pedido: " + ex); IRfcTable retorno = function.GetTable("TI_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao Atualizar o Status do Cabecalho do Pedido: " + pedidoLinha.Id_cotacao); retorno.Insert(linha_retorno); } //Atualiza o Status e o Motivo Recusa da Linha do Pedido try { // Obtem a Linha do Pedido que será atualizada IList<PedidoVendaLinha> fromLinha = pedidoVendaLinhaRepository.ObterRegistrosDoisCampos("Id_cotacao", pedidoLinha.Id_cotacao, "Id_item", pedidoLinha.Id_item); // Atualiza o status da Linha foreach (PedidoVendaLinha dados in fromLinha) { //dados.Status = pedidoLinha.Status; if (pedidoLinha.MotivoDeRecusa != "") { dados.MotivoDeRecusa = pedidoLinha.MotivoDeRecusa; } else { dados.MotivoDeRecusa = null; } pedidoVendaLinhaRepository.Alterar(dados); } } catch (Exception ex) { // Em caso de erro retorna o erro Console.Write("Erro ao atualizar o Status da Linha do Pedido: " + ex); IRfcTable retorno = function.GetTable("TI_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", ex.Message); linha_retorno.SetValue("MESSAGE", "Erro ao Atualizar o Status da Linha do Pedido: " + pedidoLinha.Id_cotacao + " - Na linha: " + pedidoLinha.Id_item); retorno.Insert(linha_retorno); } } IRfcTable retornoSucesso = function.GetTable("TI_RETURN"); linha_retorno.SetValue("TYPE", "S"); linha_retorno.SetValue("MESSAGE", "Registros atualizados com Sucesso Pedido Vendas: " + v_cont); retornoSucesso.Insert(linha_retorno); // FIM PEDIDO LINHAS } else { IRfcTable retornoErro = function.GetTable("TI_RETURN"); linha_retorno.SetValue("TYPE", "E"); linha_retorno.SetValue("MESSAGE", "Status recebido inválido"); retornoErro.Insert(linha_retorno); return; } }