public static void StfcConnection(RfcServerContext context, IRfcFunction function)
            {
                switch (context.FunctionName)
                {
                    case "ZFXI_SD01C":
                        Console.WriteLine("Interface de Cliente");
                        MyServerHandlerExecute.StfcInterfaceCliente(context, function);
                        break;
                }

                switch (context.FunctionName)
                {
                    case "ZFXI_SD02C":
                        Console.WriteLine("Interface de Fornecedor");
                        MyServerHandlerExecute.StfcInterfaceFornecedor(context, function);
                        break;
                }

                switch (context.FunctionName)
                {

                    case "ZFXI_SD03C":
                        Console.WriteLine("Interface de Material");
                        MyServerHandlerExecute.StfcInterfaceMaterial(context, function);
                        break;
                }

                switch (context.FunctionName)
                {
                    case "ZFXI_SD04C":
                        Console.WriteLine("Interface de Condicao de Pagamento");
                        MyServerHandlerExecute.StfcInterfaceCondPag(context, function);
                        break;
                }

                switch (context.FunctionName)
                {
                    case "ZFXI_SD05C":
                        Console.WriteLine("Unidade de Medida");
                        MyServerHandlerExecute.StfcInterfaceUM(context, function);
                        break;
                }

                switch (context.FunctionName)
                {
                    case "ZFXI_SD07C":
                        Console.WriteLine("Incoterms");
                        MyServerHandlerExecute.StfcInterfaceIncoterms(context, function);
                        break;
                }
            }
        public FunctionResult ExecuteInsert(string functionName, List<NTable> parameters, List<string> tableNames)
        {
            try
            {
                _function = _destination.Repository.CreateFunction(functionName);

                for (int i = 0; i < tableNames.Count; i++)
                {
                    RfcStructureMetadata metaData = _destination.Repository.GetStructureMetadata(parameters[i].StructureName);

                    IRfcTable tblInput = _function.GetTable(tableNames[i]);

                    foreach (DataRow row in parameters[i].Parameters.Rows)
                    {
                        IRfcStructure structRow = metaData.CreateStructure();

                        foreach (DataColumn column in parameters[i].Parameters.Columns)
                        {
                            object obj = row[column];
                            structRow.SetValue(column.ToString(), obj);
                        }

                        tblInput.Append(structRow);
                    }
                }

                RfcSessionManager.BeginContext(_destination);
                _function.Invoke(_destination);

                IRfcTable returnTable = _function.GetTable("NOTESRETURN");

                return new FunctionResult
                {
                    IsSuccess = true,
                    Data = new List<object> { returnTable }
                };
            }
            catch (Exception ex)
            {
                return new FunctionResult
                {
                    IsSuccess = false,
                    ErrorMessage = ex.ToString()
                };
            }
        }
        public override RfcPreparedFunction Prepare()
        {
            try
            {
                this.function = this.repository.CreateFunction(this.FunctionName);
                foreach (var parameter in this.Parameters)
                {
                    int idx = this.function.Metadata.TryNameToIndex(parameter.Name);
                    if (idx == -1)
                        throw new UnknownRfcParameterException(parameter.Name, this.FunctionName);

                    RfcDataType pType = this.function.Metadata[idx].DataType;
                    switch (pType)
                    {
                        case RfcDataType.STRUCTURE:
                            RfcStructureMetadata structureMetadata = this.function.GetStructure(idx).Metadata;
                            IRfcStructure structure = this.structureMapper.CreateStructure(structureMetadata, parameter.Value);
                            this.function.SetValue(parameter.Name, structure);
                            break;
                        case RfcDataType.TABLE:
                            RfcTableMetadata tableMetadata = this.function.GetTable(idx).Metadata;
                            IRfcTable table = this.structureMapper.CreateTable(tableMetadata, parameter.Value);
                            this.function.SetValue(parameter.Name, table);
                            break;
                        default:
                            object formattedValue = this.structureMapper.ToRemoteValue(this.function.Metadata[idx].GetAbapDataType(), parameter.Value);
                            this.function.SetValue(parameter.Name, formattedValue);
                            break;
                    }
                }
                return this;
            }
            catch (Exception ex)
            {
                if (ex.GetBaseException() is SharpRfcException)
                    throw ex;

                throw new SharpRfcCallException(ex.Message, function == null ? "null" : function.ToString(), ex);
            }
        }
        public static void IDOC_INBOUND(RfcServerContext context, IRfcFunction function)
        {
            IRfcTable control = function.GetTable("IDOC_CONTROL_REC_40");
            IRfcTable data = function.GetTable("IDOC_DATA_REC_40");

            DataTable dtIdocControlData = GetDataTableFromRfcTable(control);
            DataTable dtIdocData = GetDataTableFromRfcTable(data);

            for (int i = 0; i < control.RowCount; i++)
            {
                IRfcStructure tControl = control[i];
                string client = ConfigFileTool.SAPGlobalSettings.GetDefaultSapCient();
                string TableName = "T" + tControl["DOCNUM"].GetValue().ToString().Trim();
                SapTable idoctable = new SapTable(client, TableName, "EDI_DD40");
                DataTable dt = GetDataTableFromRfcTable(data);
                idoctable.SaveDataTable(dt);
                processSingleIdoc(tControl, data);
            }

            //DataTable dtcontrol = GetDataTableFromRfcTable(control);

            //foreach (DataRow row in dtcontrol.Rows)
            //{
            //    for (int k = 0; k < dtcontrol.Columns.Count; k++)
            //    {
            //        Console.WriteLine(row[k].ToString());

            //    }
            //}
            //DataTable dtdata = GetDataTableFromRfcTable(data);

            //foreach (DataRow row in dtdata.Rows)
            //{
            //    for (int k = 0; k < dtdata.Columns.Count; k++)
            //    {
            //        Console.WriteLine(row[k].ToString());

            //    }
            //}
        }
 public static void StfcConnection(RfcServerContext context, IRfcFunction function)
 {
     Console.WriteLine("Received function call{0} from system{1}.",
         function.Metadata.Name,
         context.SystemAttributes.SystemID);
     String reqtext = function.GetString("REQUTEXT");
     Console.WriteLine("REQUTEXT = {0}\n", reqtext);
     function.SetValue("ECHOTEXT", reqtext);
     function.SetValue("RESPTEXT", "Hello from NCo 3.0!");
 }
 public static void ZARFC_DEST_SHIP(RfcServerContext context, IRfcFunction function)
 {
     IRfcTable DATA = function.GetTable("DATA");
     DataTable dt = GetDataTableFromRfcTable(DATA);
 }
        public static void ZRFC_SRM_PO_DATA(RfcServerContext context, IRfcFunction function)
        {
            String im = function.GetString("IM_PO");
            IRfcTable ITAB_PO = function.GetTable("ITAB_PO");

            DataTable dt = GetDataTableFromRfcTable(ITAB_PO);
        }
Exemple #8
0
        public byte[] Get_Z_RFC_PO(string EBELN)
        {
            string LIFNR = string.Empty;
            string LIFNM = string.Empty;
            string ERNAM = string.Empty;
            string LOEKZ = string.Empty;
            string E_RET = string.Empty;

            System.Data.DataSet   mDs    = new System.Data.DataSet();
            System.Data.DataTable mDt    = new System.Data.DataTable("Z_RFC_PO");
            System.Data.DataTable mtable = new System.Data.DataTable("Header");
            mDt.Columns.Add("EBELP", typeof(string));
            mDt.Columns.Add("LOEKZ", typeof(string));
            mDt.Columns.Add("MATNR", typeof(string));
            mDt.Columns.Add("MAKTX", typeof(string));
            mDt.Columns.Add("MENGE", typeof(string));
            mDt.Columns.Add("MEINS", typeof(string));
            mDt.Columns.Add("MATKL", typeof(string));
            mDt.Columns.Add("WERKS", typeof(string));
            mDt.Columns.Add("LGORT", typeof(string));
            mDt.Columns.Add("RETPO", typeof(string));

            mtable.Columns.Add("EBELN", typeof(string));
            mtable.Columns.Add("LIFNR", typeof(string));
            mtable.Columns.Add("LIFNM", typeof(string));
            mtable.Columns.Add("ERNAM", typeof(string));
            mtable.Columns.Add("LOEKZ", typeof(string));
            mtable.Columns.Add("E_RET", typeof(string));
            RfcDestination destination = RfcDestinationManager.GetDestination(this.GetCfgParameters());
            IRfcFunction   rfcFunction = destination.Repository.CreateFunction("Z_RFC_PO");

            rfcFunction.SetValue("I_EBELN", EBELN);

            rfcFunction.Invoke(destination);

            LIFNR = rfcFunction.GetValue("LIFNR").ToString().TrimStart('0');
            LIFNM = rfcFunction.GetValue("LIFNM").ToString().TrimStart('0');
            ERNAM = rfcFunction.GetValue("ERNAM").ToString().TrimStart('0');
            LOEKZ = rfcFunction.GetValue("LOEKZ").ToString().TrimStart('0');
            E_RET = rfcFunction.GetValue("E_RET").ToString().TrimStart('0');

            IRfcTable table = rfcFunction.GetTable("T_POITEM");

            mtable.Rows.Add(EBELN, LIFNR, LIFNM, ERNAM, LOEKZ, E_RET);
            for (int i = 0; i < table.RowCount; i++)
            {
                mDt.Rows.Add(
                    table[i].GetString("EBELP").TrimStart('0'),
                    table[i].GetString("LOEKZ").TrimStart('0'),
                    table[i].GetString("MATNR").TrimStart('0'),
                    table[i].GetString("MAKTX").TrimStart('0'),
                    table[i].GetString("MENGE").TrimStart('0'),
                    table[i].GetString("MEINS").TrimStart('0'),
                    table[i].GetString("MATKL").TrimStart('0'),
                    table[i].GetString("WERKS").TrimStart('0'),
                    table[i].GetString("LGORT").TrimStart('0'),
                    table[i].GetString("RETPO").TrimStart('0'));
            }
            mDs.Tables.Add(mtable);
            mDs.Tables.Add(mDt);
            return(mlc.GetDataSetSurrogateZipBytes(mDs));
        }
            // 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
            }
Exemple #10
0
            // 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
            }
Exemple #11
0
            // SD02 - Inteface de fornecedor - Comunicação
            // funcao - ZFXI_SD02C
            //[RfcServerFunction(Name = "ZGXI_SD02")]
            public static void StfcInterfaceFornecedor(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 Repositório dos dados
                FornecedorRepository fornecedorRepository = new FornecedorRepository();
                Fornecedor fornecedor = new Fornecedor();
                FornecedorEmpresaRepository fornecedorEmpresaRepository = new FornecedorEmpresaRepository();
                FornecedorEmpresa fornecedorEmpresa = new FornecedorEmpresa();

                FornecedorTransportadoraLiberadaRepository fornecedorTransportadoraLiberadaRepository = new FornecedorTransportadoraLiberadaRepository();
                FornecedorTransportadoraLiberada fornecedorTransportadoraLiberada = new FornecedorTransportadoraLiberada();


                // ZTBSD060
                IRfcTable it_fornecedor = function.GetTable("IT_FORNECEDOR");

                // Implementa Repositorio Rfc de resposta
                RfcRepository rep = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno = bapiret2.CreateStructure();

                // ZTBSD079
                IRfcTable it_fornecedor_emp = function.GetTable("IT_FORNECEDOR_EMP");

                // Implementa Repositorio Rfc de resposta
                RfcRepository repEmp = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2emp = repEmp.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno_emp = bapiret2emp.CreateStructure();

                // ZTBSD086 - ZTBXI_101
                IRfcTable it_fornecedor_trans_lib = function.GetTable("IT_FORNECEDOR_TL");

                // Implementa Repositorio Rfc de resposta
                RfcRepository repfornecedorTrans = context.Repository;

                // RETORNO
                RfcStructureMetadata bapiret2Trans = repfornecedorTrans.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno_trans = bapiret2Trans.CreateStructure();

                // Se a interface de Fornecedor estiver marcada para Reiniciar "X" marca os registros das 2 tabebas como Eliminados.
                if (deletar != ' ')
                {
                    // Apaga todos os registros da tabela pro_fornecedor
                    IList<Fornecedor> fromDB = fornecedorRepository.ObterTodos();
                    IList<FornecedorEmpresa> fromDBemp = fornecedorEmpresaRepository.ObterTodos();
                    foreach (Fornecedor dados in fromDB)
                    {
                        foreach (IRfcStructure row in it_fornecedor)
                        {
                            dados.Pacote = row.GetString("PACOTE");
                            dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                            dados.Hora_criacao = row.GetString("ERZET");
                        }
                        dados.Eliminacao = "X";
                        fornecedorRepository.Alterar(dados);
                    }

                    foreach (FornecedorEmpresa dados in fromDBemp)
                    {
                        foreach (IRfcStructure row in it_fornecedor_emp)
                        {
                            dados.Pacote = row.GetString("PACOTE");
                            dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                            dados.Hora_criacao = row.GetString("ERZET");
                        }
                        dados.Eliminacao = "X";
                        fornecedorEmpresaRepository.Alterar(dados);
                    }
                }

                //
                // FORNECEDOR
                //                 

                //Char deletar = function.GetChar("I_REFRESH");                              

                int v_cont = 0;
                foreach (IRfcStructure row in it_fornecedor)
                {
                    fornecedor.Codigo = row.GetString("LIFNR");
                    fornecedor.Nome = row.GetString("NAME1");
                    fornecedor.Cpf = row.GetString("STCD2");
                    fornecedor.Cnpj = row.GetString("STCD1");
                    fornecedor.Nr_ie_for = row.GetString("STCD3");
                    fornecedor.Cep = row.GetString("POST_CODE");
                    fornecedor.Endereco = row.GetString("STREET");
                    fornecedor.Numero = row.GetString("HOUSE_NUM1");
                    fornecedor.Municipio = row.GetString("CITY1");
                    fornecedor.Bairro = row.GetString("CITY2");
                    fornecedor.Uf = row.GetString("UF");
                    fornecedor.Pais = row.GetString("COUNTRY");
                    fornecedor.Tel_res = row.GetString("TELF1");
                    fornecedor.Tel_res = row.GetString("TELF2");
                    fornecedor.Tel_cel = row.GetString("TELF1");
                    fornecedor.Fax = row.GetString("TELFX");
                    fornecedor.Email = row.GetString("EMAIL");
                    fornecedor.Grupo_contas = row.GetString("KTOKK");
                    fornecedor.Pacote = row.GetString("PACOTE");
                    fornecedor.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    fornecedor.Hora_criacao = row.GetString("ERZET");
                    fornecedor.Eliminacao = row.GetString("LOEVM");

                    v_cont = v_cont + 1;
                    try
                    {
                        IList<Fornecedor> fromDB = fornecedorRepository.ObterRegistrosUmCampo("Codigo", fornecedor.Codigo);
                        if (fromDB.Count == 0)
                        {
                            fornecedorRepository.Salvar(fornecedor);
                        }
                        else
                        {
                            fornecedorRepository.Alterar(fornecedor);
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro e a descricao do material
                        Console.Write("Erro ao inserir o Fornecedor, 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 Fornecedor: " + fornecedor.Nome);
                        retorno.Insert(linha_retorno);
                    }
                }
               
                //
                // FIM FORNECEDOR

                //
                // FORNECEDOR EMPRESA
                //                 

                int v_cont_emp = 0;
                foreach (IRfcStructure row in it_fornecedor_emp)
                {
                    fornecedorEmpresa.Empresa = row.GetString("BUKRS");
                    fornecedorEmpresa.Codigo = row.GetString("LIFNR");
                    fornecedorEmpresa.Pacote = row.GetString("PACOTE");
                    fornecedorEmpresa.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    fornecedorEmpresa.Hora_criacao = row.GetString("ERZET");
                    fornecedorEmpresa.Eliminacao = row.GetString("LOEVM");

                    v_cont_emp = v_cont_emp + 1;
                    try
                    {
                        IList<FornecedorEmpresa> fromDB = fornecedorEmpresaRepository.ObterRegistrosDoisCampos("Empresa", fornecedorEmpresa.Empresa, "Codigo", fornecedorEmpresa.Codigo);
                        if (fromDB.Count == 0)
                        {
                            fornecedorEmpresaRepository.Salvar(fornecedorEmpresa);
                        }
                        else
                        {
                            fornecedorEmpresaRepository.Alterar(fornecedorEmpresa);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.Write("Erro ao inserir o Fornecedor Empresa, Mensagem:" + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retorno_emp.SetValue("TYPE", "E");
                        linha_retorno_emp.SetValue("MESSAGE", ex.Message);
                        linha_retorno_emp.SetValue("MESSAGE", "Erro ao inserir o Forn. Empresa: " + fornecedorEmpresa.Empresa + "Fornecedor: " + fornecedorEmpresa.Codigo);
                        retorno.Insert(linha_retorno_emp);
                    }
                }

                //
                // FIM FORNECEDOR EMPRESA

                //
                // FORNECEDOR TRANSPORTADORAS LIBERADAS
                //                                

                int v_cont_tras_lib = 0;
                foreach (IRfcStructure row in it_fornecedor_trans_lib)
                {
                    fornecedorTransportadoraLiberada.Codigo = row.GetString("LIFNR");
                    fornecedorTransportadoraLiberada.Funcao_parceiro = row.GetString("PARVW");
                    fornecedorTransportadoraLiberada.Numero_agente_frete = row.GetString("TDLNR");
                    String v_padrao = row.GetString("PADRAO");
                    if (v_padrao != "")
                    {
                        fornecedorTransportadoraLiberada.Padrao = Convert.ToBoolean(1);
                    }
                    fornecedorTransportadoraLiberada.Pacote = row.GetString("PACOTE");
                    fornecedorTransportadoraLiberada.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    fornecedorTransportadoraLiberada.Hora_criacao = row.GetString("ERZET");

                    v_cont_tras_lib = v_cont_tras_lib + 1;
                    try
                    {
                        IList<FornecedorTransportadoraLiberada> fromDB = fornecedorTransportadoraLiberadaRepository.ObterRegistrosDoisCampos("Codigo", fornecedorTransportadoraLiberada.Codigo, "Numero_agente_frete", fornecedorTransportadoraLiberada.Numero_agente_frete);
                        if (fromDB.Count == 0)
                        {
                            fornecedorTransportadoraLiberadaRepository.Salvar(fornecedorTransportadoraLiberada);
                        }
                        else
                        {
                            foreach (FornecedorTransportadoraLiberada dados in fromDB)
                            {
                                fornecedorTransportadoraLiberada.Id = dados.Id;
                            }
                            fornecedorTransportadoraLiberadaRepository.Alterar(fornecedorTransportadoraLiberada);
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro
                        Console.Write("Erro ao inserir a Tranpostadora do Fornecedor, 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 Fornecedor " + fornecedorTransportadoraLiberada.Codigo + " - Numero Agente Frete: " + fornecedorTransportadoraLiberada.Numero_agente_frete);
                        retorno.Insert(linha_retorno_trans);
                    }
                }
                // FIM FORNECEDOR TRANSPORTADORAS LIBERADAS


                IRfcTable retornoSucesso = function.GetTable("IT_RETURN");
                linha_retorno.SetValue("TYPE", "S");
                linha_retorno.SetValue("MESSAGE", "Registros com Sucesso Fornecedor: " + v_cont);
                retornoSucesso.Insert(linha_retorno);

                IRfcTable retornoSucessoEmp = function.GetTable("IT_RETURN");
                linha_retorno_emp.SetValue("TYPE", "S");
                linha_retorno_emp.SetValue("MESSAGE", "Registros com Sucesso Forn. Empresa: " + v_cont_emp);
                retornoSucessoEmp.Insert(linha_retorno_emp);
            }
        /// <summary>
        /// Get teh response from SAP and dynamically generate DataTables based on the responses metadata
        /// </summary>
        /// <param name="function"></param>
        /// <param name="meta"></param>
        /// <param name="rfc"></param>
        private void ProcessResults(SAPFunction function, RfcFunctionMetadata meta, IRfcFunction rfc)
        {
            foreach (var output in function.OutputParameters)
            {
                String paramName = output;
                String secondLevelStructure = string.Empty;
                int index = -1;

                string[] paramDetail = paramName.Split(':');
                if (paramDetail.Length == 1)
                {
                    index = meta.TryNameToIndex(paramName);
                }
                else if (paramDetail.Length == 2)
                {
                    secondLevelStructure = paramDetail[0];
                    paramName = paramDetail[1];
                    index = meta.TryNameToIndex(secondLevelStructure);
                }

                if (index != -1)
                {
                    RfcElementMetadata elementMeta = rfc.GetElementMetadata(index);
                    RfcDataType type = elementMeta.DataType;
                    String dataType = type.ToString();
                    if (dataType.Equals(SAPFunction.STRUCTURE))
                    {
                        DataTable table = null;
                        if (function.Results.Tables[secondLevelStructure] == null)
                        {
                            table = function.Results.Tables.Add(secondLevelStructure);

                            IRfcStructure rfcStructure = rfc.GetStructure(secondLevelStructure);
                            RfcStructureMetadata structureMetaData = rfcStructure.Metadata;
                            for (int x = 0; x < rfcStructure.ElementCount; x++)
                            {
                                DataColumn dc = table.Columns.Add(structureMetaData[x].Name, typeof(String));
                                dc.DataType = ConvertDataType(type);
                            }

                            DataRow dr = table.NewRow();
                            foreach (var column in table.Columns)
                            {
                                dr[column.ToString()] = rfcStructure.GetValue(column.ToString());
                            }
                            table.Rows.Add(dr);
                        }
                    }
                    else if (dataType.Equals(SAPFunction.TABLE))
                    {
                        DataTable table = null;
                        if (function.Results.Tables[secondLevelStructure] == null)
                        {
                            table = function.Results.Tables.Add(secondLevelStructure);

                            IRfcTable rfcTable = rfc.GetTable(secondLevelStructure);
                            RfcTableMetadata tableMetaData = rfcTable.Metadata;
                            for (int x = 0; x < tableMetaData.LineType.FieldCount; x++)
                            {
                                DataColumn dc = table.Columns.Add(tableMetaData.LineType[x].Name, typeof(String));
                                dc.DataType = ConvertDataType( type );
                            }

                            foreach(var row in rfcTable)
                            {
                                DataRow dr = table.NewRow();
                                foreach(var column in table.Columns)
                                {
                                    dr[column.ToString()] = row.GetValue(column.ToString());
                                }
                                table.Rows.Add(dr);
                            }
                        }
                    }
                    else
                    {
                        DataTable table = null;
                        if (function.Results.Tables["Root"] == null)
                        {
                            table = function.Results.Tables.Add("Root");
                            function.Results.Tables["Root"].NewRow();
                        }
                        else
                        {
                            table = function.Results.Tables[paramName];
                        }

                        table.Columns.Add(paramName);
                        table.Rows[0][paramName] = rfc;
                    }
                }
            }
        }
 public static IRfcFunction handleOnAfterCall(HeContext heContext, Action <HeContext> onAfterCall, String actionName, IRfcFunction func)
 {
     using (var sapInternalContext = new OutSystems.Internal.SAP.SAPInternalContext(actionName)) {
         sapInternalContext.SetIRfcFunction(func);
         onAfterCall(heContext);
         func = sapInternalContext.GetIRfcFunction();
     }
     return(func);
 }
        /// <summary>
        /// Pass input parameters to SAP remote function call
        /// </summary>
        /// <param name="function"></param>
        /// <param name="meta"></param>
        /// <param name="rfc"></param>
        private void PrepareInputParameters( SAPFunction function, RfcFunctionMetadata meta, IRfcFunction rfc)
        {
            Dictionary<String,IRfcTable> _table = new Dictionary<String,IRfcTable>();
            Dictionary<String,IRfcStructure> _structure = new Dictionary<String,IRfcStructure>();
            foreach (var iin in function.InputParameters)
            {
                String paramName = iin.Key;
                String paramValue = iin.Value;
                String secondLevelStructure = string.Empty;
                int sapFieldIndex = -1;
                int tableRowIndex = -1;

                string[] paramDetail = paramName.Split(':');
                if(paramDetail.Length == 1) {
                    sapFieldIndex = meta.TryNameToIndex(paramName);
                } else if (paramDetail.Length == 2) {
                    secondLevelStructure = paramDetail[0];
                    paramName = paramDetail[1];

                    if (secondLevelStructure.Contains('[') && secondLevelStructure.Contains(']'))
                    {
                        sapFieldIndex = meta.TryNameToIndex(secondLevelStructure.Split('[')[0]);
                        string arrayIndex = secondLevelStructure.Split('[')[1].Split(']')[0];
                        Int32.TryParse(arrayIndex, out tableRowIndex);
                    }
                    else
                    {
                        sapFieldIndex = meta.TryNameToIndex(secondLevelStructure);
                    }
                }

                if (sapFieldIndex != -1)
                {
                    RfcElementMetadata elementMeta = rfc.GetElementMetadata(sapFieldIndex);
                    RfcDataType type = elementMeta.DataType;
                    String dataType = type.ToString();
                    function.DataType.Add(secondLevelStructure + ":" + paramName, ConvertDataType(type));
                    if (dataType.Equals(SAPFunction.STRUCTURE))
                    {
                        IRfcStructure structure;
                        if (!_structure.TryGetValue(secondLevelStructure, out structure))
                        {
                            structure = rfc.GetStructure(secondLevelStructure);
                            _structure.Add(secondLevelStructure, structure);
                        }
                        structure.SetValue(paramName, paramValue);
                        function.Length.Add(paramName + ":" + secondLevelStructure, structure.GetElementMetadata(paramName).NucLength);
                    }
                    else if (dataType.Equals(SAPFunction.TABLE))
                    {
                        if (secondLevelStructure.Contains('[') && secondLevelStructure.Contains(']'))
                        {
                            IRfcTable table;
                            if (!_table.TryGetValue(secondLevelStructure.Split('[')[0], out table))
                            {
                                table = rfc.GetTable(secondLevelStructure.Split('[')[0]);
                                _table.Add(secondLevelStructure.Split('[')[0], table);
                            }

                            try
                            {
                                table.ElementAt(tableRowIndex);
                            }
                            catch (ArgumentOutOfRangeException)
                            {
                                table.Insert(1, tableRowIndex);
                            }
                            table.CurrentIndex = tableRowIndex;

                            //rfc.Invoke(this.Destination);

                            RfcElementMetadata em = table.GetElementMetadata(paramName);

                            string s = String.Format("{0, " + table.GetElementMetadata(paramName).NucLength + "}", paramValue);

                            table.SetValue(paramName, s.Trim());
                            function.Length.Add(paramName + ":" + secondLevelStructure, table.GetElementMetadata(paramName).NucLength);
                        }
                    }
                    else
                    {
                        rfc.SetValue(paramName, paramValue);
                        function.Length.Add(paramName, rfc.GetElementMetadata( paramName ).NucLength);
                    }
                }
            }
        }
        /// <summary>
        /// Notify SAP which output parameters are required i.e. SAP will only respond with the data that has been requested
        /// </summary>
        /// <param name="function"></param>
        /// <param name="meta"></param>
        /// <param name="rfc"></param>
        private void PrepareOutputParameters(SAPFunction function, RfcFunctionMetadata meta, IRfcFunction rfc)
        {
            foreach (var iout in function.OutputParameters)
            {
                String paramName = iout;
                String secondLevelStructure = string.Empty;
                int index = -1;

                string[] paramDetail = paramName.Split(':');
                if (paramDetail.Length == 1)
                {
                    index = meta.TryNameToIndex(paramName);
                }
                else if (paramDetail.Length == 2)
                {
                    secondLevelStructure = paramDetail[0];
                    paramName = paramDetail[1];
                    index = meta.TryNameToIndex(secondLevelStructure);
                }

                if (index != -1)
                {
                    RfcElementMetadata elementMeta = rfc.GetElementMetadata(index);
                    RfcDataType type = elementMeta.DataType;
                    String dataType = type.ToString();
                    function.DataType.Add(paramName + ":" + secondLevelStructure, ConvertDataType(type));

                    IRfcDataContainer container = null;
                    if (dataType.Equals(SAPFunction.STRUCTURE))
                    {
                        RfcStructureMetadata structureMeta = elementMeta.ValueMetadataAsStructureMetadata;
                        container = rfc.GetStructure(secondLevelStructure);
                    }
                    else if (dataType.Equals(SAPFunction.TABLE))
                    {
                        RfcTableMetadata tableMeta = elementMeta.ValueMetadataAsTableMetadata;
                        container = rfc.GetTable(secondLevelStructure);

                        if (tableMeta.Name.Equals(String.Empty))
                        {
                            String lineType = tableMeta.LineType.ContainerType.ToString();
                            if (lineType.Equals("STRUCTURE"))
                            {
                                container = tableMeta.LineType.CreateStructure();
                            }
                        }
                    }
                    else
                    {
                        rfc.GetString(secondLevelStructure);
                    }
                }
            }
        }
 /// <summary>
 /// Call the SAP remote function
 /// </summary>
 /// <param name="function"></param>
 /// <param name="rfc"></param>
 private void InvokeSAP( SAPFunction function, IRfcFunction rfc)
 {
     try
     {
         DateTime start = DateTime.Now;
         rfc.Invoke(this.Destination);
         DateTime end = DateTime.Now;
         TimeSpan total = end.Subtract(start);
         double seconds = total.TotalSeconds;
         double milliseconds = total.TotalMilliseconds;
     }
     catch (Exception ex)
     {
         LogException(ex, function);
     }
 }
        public FunctionResult ExecuteSelect(string functionName, List<NParameter> parameters, List<string> tableNames)
        {
            try
            {
                _function = _destination.Repository.CreateFunction(functionName);

                foreach (NParameter param in parameters)
                    _function.SetValue(param.Name, param.Value);

                _function.Invoke(_destination);

                List<object> tables = tableNames.Select(table => _function.GetTable(table)).Cast<object>().ToList();

                return new FunctionResult()
                {
                    IsSuccess = true,
                    Data = tables
                };
            }
            catch (Exception ex)
            {
                return new FunctionResult
                {
                    IsSuccess = false,
                    ErrorMessage = ex.ToString()
                };
            }
        }
Exemple #18
0
 /// <summary>
 /// Invoca a la RFC para que prepare la tabla de retorno
 /// y luego la devuelve
 /// </summary>
 /// <param name="rfcDestination"></param>
 /// <param name="rfcFunction"></param>
 /// <returns></returns>
 private static IRfcTable getReturnTable(RfcDestination rfcDestination, IRfcFunction rfcFunction)
 {
     rfcFunction.Invoke(rfcDestination);
     return rfcFunction.GetTable(RFC_FUNCTION_RETURN_TABLE_NAME);
 }
Exemple #19
0
        // mgv llamado por medio de SAPconn
        public List <PEntidades.PAbiertasYPago> getPagosConn(string date1, string date2, List <string[]> listaDiferentesInstancias)   //llamada con nva conexion
        {
            List <PEntidades.PAbiertasYPago> list = new List <PEntidades.PAbiertasYPago>();

            PEntidades.SrvSAPUProv.ZWS_UPROVEEDORESClient srv;
            PEntidades.SrvSAPUProv.Z_UPAGOS pagos = new PEntidades.SrvSAPUProv.Z_UPAGOS();
            status = new string[listaDiferentesInstancias.Count];
            for (int j = 0; j < listaDiferentesInstancias.Count; j++) // listaDiferentesInstancias contiene idInstacia, endpoint, y las sociedades separadas por "," ;
            {
                try
                {
                    srv = new PPersistencia.WebServices().getZWS_UPROVEEDORESInstanceNew(
                        listaDiferentesInstancias[j][1].ToString().Trim(),
                        listaDiferentesInstancias[j][4].Split(new Char[] { ',' })
                        );
                    srv.Open();
                    srv.InnerChannel.OperationTimeout = new TimeSpan(0, 10, 0);
                    // PEntidades.SrvSAPUProv.ZEPLANT_PROV[] objetoSoc;
                    // PEntidades.SrvSAPUProv.ZELIFNR_PROV[] objLifnr;
                    //  pagos.SOCIEDAD = PEntidades.Utiles.objetoSociedad(splitSoc);
                    //  pagos.PROVEEDOR = PEntidades.Utiles.objetoLifnr(splitLifnr);
                    PPersistencia.SAPConn psc    = new PPersistencia.SAPConn();             //cambio llamado hacia SAP
                    List <ParamsCallSAP>  listPA = new List <ParamsCallSAP>();
                    ParamsCallSAP         pr     = new ParamsCallSAP();

                    pr         = new ParamsCallSAP(); //pagos.DATE1 = Gen.Util.CS.Gen.convertirFecha_SAP(date1);
                    pr.NameVar = "DATE1";
                    pr.ValVar  = Gen.Util.CS.Gen.convertirFecha_SAP(date1);
                    pr.TipVar  = "S";
                    listPA.Add(pr);

                    pr         = new ParamsCallSAP(); //pagos.DATE2 = Gen.Util.CS.Gen.convertirFecha_SAP(date2);
                    pr.NameVar = "DATE2";
                    pr.ValVar  = Gen.Util.CS.Gen.convertirFecha_SAP(date2);
                    pr.TipVar  = "S";
                    listPA.Add(pr);

                    List <TablasCallSAP> listT      = new List <TablasCallSAP>();
                    TablasCallSAP        tr         = new TablasCallSAP();
                    List <ParamsCallSAP> listTb     = new List <ParamsCallSAP>();
                    string[]             splitLifnr = listaDiferentesInstancias[j][3].Split(new Char[] { ',' });
                    for (int i = 1; i <= splitLifnr.Length; i++)
                    {
                        pr         = new ParamsCallSAP();
                        pr.NameVar = "LIFNR";
                        pr.ValVar  = splitLifnr[i - 1].ToString().Trim();
                        pr.TipVar  = "S";
                        listTb.Add(pr);
                    }
                    tr.TablaVar  = "PROVEEDOR_TB";
                    tr.CamposVar = listTb;
                    listT.Add(tr);

                    string[]             splitSoc = listaDiferentesInstancias[j][2].Split(new Char[] { ',' });
                    List <TablasCallSAP> listTC   = new List <TablasCallSAP>();
                    TablasCallSAP        trC      = new TablasCallSAP();
                    List <ParamsCallSAP> listTc   = new List <ParamsCallSAP>();
                    for (int i = 1; i <= splitSoc.Length; i++)
                    {
                        pr         = new ParamsCallSAP();
                        pr.NameVar = "WERKS";
                        pr.ValVar  = splitSoc[i - 1].ToString().Trim();
                        pr.TipVar  = "S";
                        listTc.Add(pr);
                    }
                    trC.TablaVar  = "SOCIEDAD_TB";
                    trC.CamposVar = listTc;
                    listT.Add(trC);

                    IRfcFunction rescon = psc.conSAP("Z_DPAGOS", listPA, listT);
                    // var resultado = srv.Z_UPAGOS(pagos);
                    // int cantidad = resultado.PAGOS.Length;

                    PEntidades.PAbiertasYPago objPabYPag;
                    IRfcTable tb = rescon.GetTable(0);
                    for (int o = 0; o < tb.Count; o++)
                    {
                        tb.CurrentIndex = o;
                        objPabYPag      = new PEntidades.PAbiertasYPago();
                        float DMSHB = float.Parse(tb.CurrentRow.GetString("DMSHB"));
                        objPabYPag.ZUONR1 = tb.CurrentRow.GetString("ZUONR");
                        objPabYPag.BELNR1 = tb.CurrentRow.GetString("BELNR");
                        objPabYPag.BLART1 = tb.CurrentRow.GetString("BLART");
                        objPabYPag.BLDAT1 = tb.CurrentRow.GetString("BLDAT");
                        objPabYPag.DMSHB1 = DMSHB;
                        objPabYPag.HWAER1 = tb.CurrentRow.GetString("HWAER");
                        objPabYPag.XBLNR  = tb.CurrentRow.GetString("XBLNR");
                        objPabYPag.NAME1  = tb.CurrentRow.GetString("NAME1");
                        objPabYPag.SGTXT  = tb.CurrentRow.GetString("SGTXT");
                        objPabYPag.EBELN  = tb.CurrentRow.GetString("EBELN");
                        objPabYPag.AUGBL1 = tb.CurrentRow.GetString("AUGBL");
                        objPabYPag.KONTO  = tb.CurrentRow.GetString("KONTO");
                        objPabYPag.indice = o;
                        list.Add(objPabYPag);
                    }
                    srv.Close();
                }
                catch (Exception)
                {
                    status[j] = "Error al cargar en la instancia: " + listaDiferentesInstancias[j][6];
                }
            }
            return(list);
        }
Exemple #20
0
 public static void ZARFC_DEST_SHIP(RfcServerContext context, IRfcFunction function)
 {
     IRfcTable DATA = function.GetTable("DATA");
     DataTable dt   = GetDataTableFromRfcTable(DATA);
 }
        //类型赋值
        private List<CParams> Get_Params_list(IRfcFunction pFunction)
        {
            List<CParams> _Params_list = new List<CParams>();
            IRfcTable rfctable_Params = pFunction.GetTable("Params");

            // C${rfctable.Name} _C${rfctable.Name};
            for (int i = 0; i < rfctable_Params.RowCount; i++)
            {
                var _Params = new CParams();
                _Params.paramclass = rfctable_Params[i].GetString("PARAMCLASS"); // 参数类型
                _Params.parameter = rfctable_Params[i].GetString("PARAMETER"); // 参数名称
                _Params.tabname = rfctable_Params[i].GetString("TABNAME"); // 表名
                _Params.fieldname = rfctable_Params[i].GetString("FIELDNAME"); // 字段名
                _Params.exid = rfctable_Params[i].GetString("EXID"); // Typ
                _Params.position = rfctable_Params[i].GetInt("POSITION"); //
                _Params.offset = rfctable_Params[i].GetInt("OFFSET"); //
                _Params.intlength = rfctable_Params[i].GetInt("INTLENGTH"); //
                _Params.decimals = rfctable_Params[i].GetInt("DECIMALS"); //
                _Params.defaultv = rfctable_Params[i].GetString("DEFAULT"); // 输入参数的缺省值
                _Params.paramtext = rfctable_Params[i].GetString("PARAMTEXT"); // 短文本
                _Params.optional = rfctable_Params[i].GetString("OPTIONAL"); // 可选参数
                _Params_list.Add(_Params);
            }
            return _Params_list;
        }
Exemple #22
0
            // SD03 - Inteface de materiais - Comunicação
            // funcao - ZFXI_SD03C
            //[RfcServerFunction(Name = "ZFXI_SD03C")]
            public static void StfcInterfaceMaterial(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);

                // Implementa Repositório dos dados
                MaterialRepository materialRepository = new MaterialRepository();

                // Implementa repositorio antes do Foreach para evitar duplicações
                Material material = new Material();

                // 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<Material> fromDB = materialRepository.ObterTodos();
                    foreach (Material dados in fromDB)
                    {
                        materialRepository.Excluir(dados);       
                    }
                }

                IRfcTable it_material = function.GetTable("IT_MATERIAL");

                // Implementa Repositorio Rfc de resposta
                RfcRepository rep = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno = bapiret2.CreateStructure();   

                int v_cont = 0;
                foreach (IRfcStructure row in it_material)
                {

                    material.id_material = row.GetString("MATNR");
                    material.descricao   = row.GetString("MAKTX");
                    material.id_centro   = row.GetString("WERKS");
                    material.tip_mat     = row.GetString("MTART");
                    material.status_mat  = row.GetString("MSTAE");
                    material.uni_med     = row.GetString("MEINS");
                    material.status_mat = row.GetString("MSTAE");
                    // Pacote
                    material.pacote = row.GetString("PACOTE");
                    // Data Cricao
                    string v_data_Cricao = row.GetString("ERDAT");
                    material.data_criacao = Convert.ToDateTime(v_data_Cricao);
                    // Hora de Criacao
                    material.hora_criacao = row.GetString("ERZET");            
                    
                    try
                    {                        
                        v_cont = v_cont + 1;
                        if (deletar == ' ')
                        {
                            IList<Material> fromDB = materialRepository.ObterTodosComCampo("id_material", material.id_material);
                            foreach (Material dados in fromDB)
                            {       
                                materialRepository.Excluir(dados);                                
                            }                            
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro e a descricao do material
                        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 Material: " + material.descricao);
                        retorno.Insert(linha_retorno);
                    }

                    materialRepository.Salvar(material);
                    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);
            }
Exemple #23
0
            // SD09 - Inteface de Preco- Comunicação
            // Funcao - ZFXI_SD09C
            //[RfcServerFunction(Name = "ZGXI_SD09")]
            public static void StfcInterfacePreco(RfcServerContext context, IRfcFunction function)
            {
                //
                // PRECOS CLIENTE
                //

                // Exibe no console a interface que será executada
                Console.WriteLine("Received function call {0} from system {1}.", function.Metadata.Name, context.SystemAttributes.SystemID);

                // Mandar salvar o Preco do Cliente
                CondicaoDePrecoClienteRepository condicaoDePrecoClienteRepository = new CondicaoDePrecoClienteRepository();

                // Implementa repositorio antes do Foreach para evitar duplicações
                CondicaoDePrecoCliente condicaoDePrecoCliente = new CondicaoDePrecoCliente();

                // 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<CondicaoDePrecoCliente> fromDB = condicaoDePrecoClienteRepository.ObterTodos();
                    foreach (CondicaoDePrecoCliente dados in fromDB)
                    {
                        condicaoDePrecoClienteRepository.Excluir(dados);
                    }
                }

                // ZTBSD074
                IRfcTable it_condicaoDePrecoCliente = function.GetTable("IT_PRECO_CLIENTE");

                // Implementa Repositorio Rfc de resposta
                RfcRepository repCliente = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2 = repCliente.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retornoCliente = bapiret2.CreateStructure();

                int v_contCliente = 0;
                foreach (IRfcStructure row in it_condicaoDePrecoCliente)
                {
                    condicaoDePrecoCliente.Org_vendas = row.GetString("VKORG");
                    condicaoDePrecoCliente.Can_dist = row.GetString("VTWEG");
                    condicaoDePrecoCliente.Id_cliente = row.GetString("KUNNR");
                    condicaoDePrecoCliente.Id_material = row.GetString("MATNR");
                    condicaoDePrecoCliente.NumeroRegistroCondicao = row.GetString("KNUMH");
                    condicaoDePrecoCliente.Montante = Convert.ToDecimal(row.GetString("KBETR"));
                    condicaoDePrecoCliente.UnidadeCondicao = row.GetString("KONWA");
                    condicaoDePrecoCliente.Pacote = row.GetString("PACOTE");
                    condicaoDePrecoCliente.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    condicaoDePrecoCliente.Hora_criacao = row.GetString("ERZET");
                    try
                    {
                        v_contCliente = v_contCliente + 1;
                        if (deletar == ' ')
                        {
                            IList<CondicaoDePrecoCliente> fromDB = condicaoDePrecoClienteRepository.ObterRegistrosQuatroCampos("Org_vendas", condicaoDePrecoCliente.Org_vendas, "Can_dist", condicaoDePrecoCliente.Can_dist, "Id_cliente", condicaoDePrecoCliente.Id_cliente, "Id_material", condicaoDePrecoCliente.Id_material);
                            foreach (CondicaoDePrecoCliente dados in fromDB)
                            {
                                condicaoDePrecoClienteRepository.Excluir(dados);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.Write("Erro ao Inserir o Preco do Cliente, Mensagem: " + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retornoCliente.SetValue("TYPE", "E");
                        linha_retornoCliente.SetValue("MESSAGE", ex.Message);
                        linha_retornoCliente.SetValue("MESSAGE", "Erro ao inserir o Preco do Cliente: " + condicaoDePrecoCliente.Id_cliente + " - Material: " + condicaoDePrecoCliente.Id_material + " - Org.: " + condicaoDePrecoCliente.Org_vendas + " - Canal:" + condicaoDePrecoCliente.Can_dist);
                        retorno.Insert(linha_retornoCliente);
                    }
                    condicaoDePrecoClienteRepository.Salvar(condicaoDePrecoCliente);
                    String PACOTE = row.GetString("PACOTE");
                    String ERDAT = row.GetString("ERDAT");
                    String ERZET = row.GetString("ERZET");
                }

                IRfcTable retornoSucessoCliente = function.GetTable("IT_RETURN");
                linha_retornoCliente.SetValue("TYPE", "S");
                linha_retornoCliente.SetValue("MESSAGE", "Registros com Sucesso(CLIENTE): " + v_contCliente);
                retornoSucessoCliente.Insert(linha_retornoCliente);

                //
                // PRECOS REGIAO
                //

                // Mandar salvar o Preco da Regiao
                CondicaoDePrecoRegiaoRepository condicaoDePrecoRegiaoRepository = new CondicaoDePrecoRegiaoRepository();

                // Implementa repositorio antes do Foreach para evitar duplicações
                CondicaoDePrecoRegiao condicaoDePrecoRegiao = new CondicaoDePrecoRegiao();

                // 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<CondicaoDePrecoRegiao> fromDB = condicaoDePrecoRegiaoRepository.ObterTodos();
                    foreach (CondicaoDePrecoRegiao dados in fromDB)
                    {
                        condicaoDePrecoRegiaoRepository.Excluir(dados);
                    }
                }

                // ZTBSD075
                IRfcTable it_condicaoDePrecoRegiao = function.GetTable("IT_PRECO_REGIAO");

                // Implementa Repositorio Rfc de resposta
                RfcRepository repRegiao = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2Regiao = repRegiao.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retornoRegiao = bapiret2Regiao.CreateStructure();

                int v_contRegiao = 0;
                foreach (IRfcStructure row in it_condicaoDePrecoRegiao)
                {
                    condicaoDePrecoRegiao.Regiao = row.GetString("REGIO");
                    condicaoDePrecoRegiao.Id_material = row.GetString("MATNR");
                    condicaoDePrecoRegiao.NumeroRegistroCondicao = row.GetString("KNUMH");
                    condicaoDePrecoRegiao.Id_material = row.GetString("MATNR");
                    condicaoDePrecoRegiao.NumeroRegistroCondicao = row.GetString("KNUMH");
                    condicaoDePrecoRegiao.Montante = Convert.ToDecimal(row.GetString("KBETR"));
                    condicaoDePrecoRegiao.UnidadeCondicao = row.GetString("KONWA");
                    condicaoDePrecoRegiao.Pacote = row.GetString("PACOTE");
                    condicaoDePrecoRegiao.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    condicaoDePrecoRegiao.Hora_criacao = row.GetString("ERZET");
                    try
                    {
                        v_contRegiao = v_contRegiao + 1;
                        if (deletar == ' ')
                        {
                            IList<CondicaoDePrecoRegiao> fromDB = condicaoDePrecoRegiaoRepository.ObterRegistrosDoisCampos("Regiao", condicaoDePrecoRegiao.Regiao, "Id_material", condicaoDePrecoRegiao.Id_material);
                            foreach (CondicaoDePrecoRegiao dados in fromDB)
                            {
                                condicaoDePrecoRegiaoRepository.Excluir(dados);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro e a descricao do material
                        Console.Write("Erro ao Inserir a Condicao de Preco Regiao, Mensagem: " + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retornoRegiao.SetValue("TYPE", "E");
                        linha_retornoRegiao.SetValue("MESSAGE", ex.Message);
                        linha_retornoRegiao.SetValue("MESSAGE", "Erro ao inserir a Condicao de Preco Regiao: " + condicaoDePrecoRegiao.Regiao + " - Material: " + condicaoDePrecoRegiao.Id_material);
                        retorno.Insert(linha_retornoRegiao);
                    }

                    condicaoDePrecoRegiaoRepository.Salvar(condicaoDePrecoRegiao);
                    String PACOTE = row.GetString("PACOTE");
                    String ERDAT = row.GetString("ERDAT");
                    String ERZET = row.GetString("ERZET");
                }

                IRfcTable retornoSucessoRegiao = function.GetTable("IT_RETURN");
                linha_retornoRegiao.SetValue("TYPE", "S");
                linha_retornoRegiao.SetValue("MESSAGE", "Registros com Sucesso(REGIAO): " + v_contRegiao);
                retornoSucessoRegiao.Insert(linha_retornoRegiao);

                //
                // PRECOS GERAL
                //

                // Mandar salvar o Preco da Regiao
                CondicaoDePrecoGeralRepository condicaoDePrecoGeralRepository = new CondicaoDePrecoGeralRepository();

                // Implementa repositorio antes do Foreach para evitar duplicações
                CondicaoDePrecoGeral condicaoDePrecoGeral = new CondicaoDePrecoGeral();

                // 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<CondicaoDePrecoGeral> fromDB = condicaoDePrecoGeralRepository.ObterTodos();
                    foreach (CondicaoDePrecoGeral dados in fromDB)
                    {
                        condicaoDePrecoGeralRepository.Excluir(dados);
                    }
                }

                // ZTBSD076
                IRfcTable it_condicaoDePrecoGeral = function.GetTable("IT_PRECO_GERAL");

                // Implementa Repositorio Rfc de resposta
                RfcRepository repGeral = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2Geral = repGeral.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retornoGeral = bapiret2Geral.CreateStructure();

                int v_contGeral = 0;
                foreach (IRfcStructure row in it_condicaoDePrecoGeral)
                {
                    condicaoDePrecoGeral.Org_vendas = row.GetString("VKORG");
                    condicaoDePrecoGeral.Can_dist = row.GetString("VTWEG");
                    condicaoDePrecoGeral.Id_material = row.GetString("MATNR");
                    condicaoDePrecoGeral.NumeroRegistroCondicao = row.GetString("KNUMH");
                    condicaoDePrecoGeral.Id_material = row.GetString("MATNR");
                    condicaoDePrecoGeral.NumeroRegistroCondicao = row.GetString("KNUMH");
                    condicaoDePrecoGeral.Montante = Convert.ToDecimal(row.GetString("KBETR"));
                    condicaoDePrecoGeral.UnidadeCondicao = row.GetString("KONWA");
                    condicaoDePrecoGeral.Pacote = row.GetString("PACOTE");
                    condicaoDePrecoGeral.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    condicaoDePrecoGeral.Hora_criacao = row.GetString("ERZET");
                    try
                    {
                        v_contGeral = v_contGeral + 1;
                        if (deletar == ' ')
                        {
                            IList<CondicaoDePrecoGeral> fromDB = condicaoDePrecoGeralRepository.ObterRegistrosTresCampos("Org_vendas", condicaoDePrecoGeral.Org_vendas, "Can_dist", condicaoDePrecoGeral.Can_dist, "Id_material", condicaoDePrecoGeral.Id_material);
                            foreach (CondicaoDePrecoGeral dados in fromDB)
                            {
                                condicaoDePrecoGeralRepository.Excluir(dados);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro e a descricao do material
                        Console.Write("Erro ao Inserir a Condicao de Preco Geral, Mensagem: " + ex);
                        IRfcTable retorno = function.GetTable("IT_RETURN");
                        linha_retornoRegiao.SetValue("TYPE", "E");
                        linha_retornoRegiao.SetValue("MESSAGE", ex.Message);
                        linha_retornoRegiao.SetValue("MESSAGE", "Erro ao inserir a Condicao de Preco Geral para o Material: " + condicaoDePrecoGeral.Id_material + " - Organização: " + condicaoDePrecoGeral.Org_vendas + " - Canal: " + condicaoDePrecoGeral.Can_dist);
                        retorno.Insert(linha_retornoRegiao);
                    }

                    condicaoDePrecoGeralRepository.Salvar(condicaoDePrecoGeral);
                    String PACOTE = row.GetString("PACOTE");
                    String ERDAT = row.GetString("ERDAT");
                    String ERZET = row.GetString("ERZET");
                }

                IRfcTable retornoSucessoGeral = function.GetTable("IT_RETURN");
                linha_retornoGeral.SetValue("TYPE", "S");
                linha_retornoGeral.SetValue("MESSAGE", "Registros com Sucesso(GERAL): " + v_contGeral);
                retornoSucessoGeral.Insert(linha_retornoGeral);
            }
        private void ProcessRetrievdData(ref DataTable t, IRfcFunction f)
        {
            SendMessage("开始解析数据");
            //this.con.Log("Enter ProcessRetrievdData; LastPrimaryKey=" + this._LastPrimaryKey);
            string str = "";
            IRfcTable table = f.GetTable("FIELDS");
            var lines = f.GetTable("DATA").RowCount;
            for (int i = 0; i < lines; i++)
            {

                string str2 = (string)f.GetTable("DATA")[i].GetValue(0);
                var ii = str2.Length;
                var iii = ii > 20 ? 20 : ii;

                SendMessage(string.Format("行:{0} 内容:{1}", i, str2.Substring(0, iii)));

                str2 = str2.PadRight(f.GetTable("DATA").Metadata.LineType[0].NucLength);
                string[] strArray = null;
                if (this.UsePrimaryKeyPackaging)
                {
                    str = str2.Substring(0, this._PrimaryKeys.GetOverallLength());
                    if (i >= (f.GetTable("DATA").RowCount - 1))
                    {
                        int startIndex = 0;
                        foreach (ReadTableField field in this._PrimaryKeys)
                        {
                            field.LastKeyValue = str.Substring(startIndex, field.Length);
                            startIndex += field.Length;
                        }
                    }
                }
                if (!this.UsePrimaryKeyPackaging || (this._LastPrimaryKey != str))
                {
                    DataRow row = t.NewRow();
                    if (!this._Delimiter.Equals(""))
                    {
                        //strArray = str2.Split(this._Delimiter.ToCharArray());
                        strArray = Regex.Split(str2, this._Delimiter, RegexOptions.IgnoreCase);

                    }
                    if (this._UsePrimaryKeyPackaging)
                    {
                        for (int j = this._PrimaryKeys.Count; j < table.RowCount; j++)
                        {
                            if (this._Delimiter.Equals(""))
                            {
                                String value = str2.Substring(Convert.ToInt32(table[j].GetValue("OFFSET").ToString()), Convert.ToInt32(table[j].GetValue("LENGTH").ToString()));
                                value = value.TrimEnd(' ');
                                String type = table[j].GetValue("TYPE").ToString();
                                row[table[j].GetValue(0).ToString()] = Converts.RfcValueToObject(value, type);
                            }
                            else if (strArray.Length > j)
                            {
                                String value = strArray[j];
                                // value = value.TrimStart(' ').TrimEnd(' ');//去除前导零。
                                value = value.TrimEnd(' ');
                                row[table[j].GetValue(0).ToString()] = value;
                            }
                        }
                    }
                    else
                    {
                        for (int k = 0; k < table.RowCount; k++)
                        {
                            if (this._Delimiter.Equals(""))
                            {
                                //// Console.WriteLine(str2.Length);
                                // Console.WriteLine("OFFSET:" + table[k]["OFFSET"].GetValue().ToString());
                                // Console.WriteLine("LENGTH:" + table[k]["LENGTH"].GetValue().ToString());
                                String value = str2.Substring(Convert.ToInt32(table[k]["OFFSET"].GetValue().ToString()), Convert.ToInt32(table[k]["LENGTH"].GetValue().ToString()));
                                value = value.TrimEnd(' ');
                                //Console.WriteLine(value);
                                String type = table[k].GetValue("TYPE").ToString();
                                //Console.WriteLine("TYPE:" + type);

                                row[table[k][0].GetValue().ToString()] = Converts.RfcValueToObject(value, type);
                            }
                            else if (strArray.Length > k)
                            {
                                String value = strArray[k];
                                //value = value.TrimStart(' ').TrimEnd(' ');//去除前导零。
                                //value.Trim();
                                value = value.TrimEnd(' ');
                                row[table[k][0].GetValue().ToString()] = value;
                            }
                        }
                    }
                    t.Rows.Add(row);
                }
                this._LastPrimaryKey = str;
            }
            this._FetchedRows += f.GetTable("DATA").RowCount;
            if (this._RaiseIncomingPackageEvent)
            {
                if (this.IncomingPackage != null)
                {
                    this.IncomingPackage(this, t);
                    t.Rows.Clear();
                    t.AcceptChanges();
                }
            }
            else if (this.PackageProgress != null)
            {
                this.PackageProgress(this, t.Rows.Count);
            }
            SendMessage("解析数据完成");
        }
Exemple #25
0
        public string LoadNomenclature(string organizationId, string sessionId)
        {
            string        error  = "";
            List <AM_SAP> amSaps = new List <AM_SAP>();
            var           conn   = getSqlConnection();

            if (conn == null)
            {
                conn = createSQLConnection();
                setSqlConnection(conn);
            }
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            try
            {
                Dictionary <string, string> openWith = new Dictionary <string, string>();
                string IM_WERKS = getOrganizationBurks(int.Parse(organizationId));
                openWith.Add("IM_WERKS", IM_WERKS);
                //openWith.Add("IM_MATNR", "2100657");

                try
                {
                    RfcDestinationManager.RegisterDestinationConfiguration(new ER_SAP_Config());
                }
                catch (Exception e)
                {
                    System.Diagnostics.Debug.WriteLine(e.Message);
                }
                String         NOMENCLATURE_RFC = ConfigurationManager.AppSettings["SAP_ERP_" + organizationId];
                RfcDestination destination      = RfcDestinationManager.GetDestination(NOMENCLATURE_RFC);
                IRfcFunction   function         = null;


                try
                {
                    function = destination.Repository.CreateFunction("ZM_RFC_MATNR_OVERALL");
                    foreach (KeyValuePair <string, string> kvp in openWith)
                    {
                        function.SetValue(kvp.Key, kvp.Value);
                    }
                    //function.SetValue("IM_MATNR", "2100657");
                    function.Invoke(destination);
                }
                catch (RfcBaseException e)
                {
                    System.Diagnostics.Debug.WriteLine(e.ToString());
                }

                if (function != null)
                {
                    //Get the function table parameter COMPANYCODE_LIST
                    IRfcTable codeses = function.GetTable("PIT_OBJECTS");
                    if (codeses.RowCount == 0)
                    {
                        System.Diagnostics.Debug.WriteLine("Данные не выбраны");
                    }

                    else
                    {
                        using (var transaction = conn.BeginTransaction())
                        {
                            OracleCommand cmd = new OracleCommand();
                            cmd.Connection = conn;
                            foreach (var codes in codeses)
                            {
                                cmd.CommandText = "Insert into NOMENCLATURE_SAPS (organizationid,  sessionid,  matnr,  maktx,  extwg,  ewbez,  zzvngm,  meins,  msehl3,  " +
                                                  "msehl,  lv_m,  bz_m,  mtstb,  ersda,  laeda,  lw_w," +
                                                  "bz_w,  class, kschl,  atnam, ATKLA, atklt,  atbez,  val,  okei_code,  okei_name) " +
                                                  "VALUES (" + organizationId + ","
                                                  + "'" + sessionId + "',"
                                                  + "'" + codes.GetString("MATNR") + "',"
                                                  + "'" + codes.GetString("MAKTX") + "',"
                                                  + "'" + codes.GetString("EXTWG") + "',"
                                                  + "'" + codes.GetString("EWBEZ") + "',"
                                                  + "'" + codes.GetString("ZZVNGM") + "',"
                                                  + "'" + codes.GetString("MEINS") + "',"
                                                  + "'" + codes.GetString("MSEHL3") + "',"
                                                  + "'" + codes.GetString("MSEHL") + "',"
                                                  + "'" + codes.GetString("LV_M") + "',"
                                                  + "'" + codes.GetString("BZ_M") + "',"
                                                  + "'" + codes.GetString("MTSTB") + "',"
                                                  + "to_date('" + codes.GetString("ERSDA") + "','yyyy-mm-dd' ),"
                                                  + "to_date('" + codes.GetString("LAEDA") + "','yyyy-mm-dd' ),"
                                                  + "'" + codes.GetString("LW_W") + "',"
                                                  + "'" + codes.GetString("BZ_W") + "',"
                                                  + "'" + codes.GetString("CLASS") + "',"
                                                  + "'" + codes.GetString("KLSCHL") + "',"
                                                  + "'" + codes.GetString("ATNAM") + "',"
                                                  + "'" + codes.GetString("ATKLA") + "',"
                                                  + "'" + codes.GetString("ATKLT") + "',"
                                                  + "'" + codes.GetString("ATBEZ") + "',"
                                                  + "'" + codes.GetString("VAL") + "',"
                                                  + "'" + codes.GetString("OKEI_CODE") + "',"
                                                  + "'" + codes.GetString("OKEI_NAME")
                                                  + "')";
                                cmd.ExecuteNonQuery();
                            }
                            transaction.Commit();
                            // Запускаем процедуру разбора данных RFC в структуру данных АС
                            try
                            {
                                cmd             = new OracleCommand("PCK_STORE.nomenclature_rfc_SAP", conn);
                                cmd.CommandType = CommandType.StoredProcedure;

                                OracleParameter inval = new OracleParameter("organization_Id", OracleDbType.Int32);
                                inval.Direction = ParameterDirection.Input;
                                inval.Value     = int.Parse(organizationId);
                                cmd.Parameters.Add(inval);

                                inval           = new OracleParameter("session_id", OracleDbType.Varchar2);
                                inval.Direction = ParameterDirection.Input;
                                inval.Value     = sessionId;
                                cmd.Parameters.Add(inval);

                                cmd.ExecuteNonQuery();
                            }
                            catch (Exception e)
                            {
                                error = error + e.Message;
                                System.Diagnostics.Debug.WriteLine(error);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                error = e.Message;
                System.Diagnostics.Debug.WriteLine(error);
            }
            finally
            {
                if (conn.State != ConnectionState.Closed)
                {
                    conn.Close();
                }
            }
            return(error);
        }
Exemple #26
0
        public void IDOC_INBOUND_ASYNCHRONOUS(RfcServerContext context, IRfcFunction function)
        {
            List <string> IdocNumberList = new List <string>();

            string IDocNumber = string.Empty;
            string field      = string.Empty;

            IRfcTable     IdocControlRec40;
            IRfcStructure structureIdocControlRec40;
            IRfcTable     IdocDataRec40;
            IRfcStructure structureIdocDataRec40;

            SAPIDocStream sapIDocWriter = new SAPIDocStream();

            // notify any subscribed clients that we are about to receive an IDoc
            SAPIDocReceiveEventArgs e = new SAPIDocReceiveEventArgs();

            e.SessionId = context.SessionID;

            if (IDocBeginReceiveCompleteEvent != null)
            {
                IDocBeginReceiveCompleteEvent(e);
            }



            try
            {
                // Process the IDoc DC40 header segment
                IdocControlRec40 = function.GetTable("IDOC_CONTROL_REC_40");

                // Build DC40 Control record string
                foreach (IRfcStructure rfcControlRecord in IdocControlRec40)
                {
                    structureIdocControlRec40 = IdocControlRec40.Metadata.LineType.CreateStructure();

                    sapIDocWriter.Write(rfcControlRecord.GetValue("TABNAM").ToString().PadRight(structureIdocControlRec40["TABNAM"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("MANDT").ToString().PadRight(structureIdocControlRec40["MANDT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);

                    IDocNumber = rfcControlRecord.GetValue("DOCNUM").ToString().PadRight(structureIdocControlRec40["DOCNUM"].Metadata.NucLength, ' ');
                    sapIDocWriter.Write(IDocNumber, SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    IdocNumberList.Add(IDocNumber);


                    sapIDocWriter.Write(rfcControlRecord.GetValue("DOCREL").ToString().PadRight(structureIdocControlRec40["DOCREL"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("STATUS").ToString().PadRight(structureIdocControlRec40["STATUS"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("DIRECT").ToString().PadRight(structureIdocControlRec40["DIRECT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("OUTMOD").ToString().PadRight(structureIdocControlRec40["OUTMOD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("EXPRSS").ToString().PadRight(structureIdocControlRec40["EXPRSS"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);

                    sapIDocWriter.Write(rfcControlRecord.GetValue("TEST").ToString().PadRight(structureIdocControlRec40["TEST"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("IDOCTYP").ToString().PadRight(structureIdocControlRec40["IDOCTYP"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("CIMTYP").ToString().PadRight(structureIdocControlRec40["CIMTYP"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("MESTYP").ToString().PadRight(structureIdocControlRec40["MESTYP"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("MESCOD").ToString().PadRight(structureIdocControlRec40["MESCOD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("MESFCT").ToString().PadRight(structureIdocControlRec40["MESFCT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);

                    sapIDocWriter.Write(rfcControlRecord.GetValue("STD").ToString().PadRight(structureIdocControlRec40["STD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("STDVRS").ToString().PadRight(structureIdocControlRec40["STDVRS"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("STDMES").ToString().PadRight(structureIdocControlRec40["STDMES"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);

                    sapIDocWriter.Write(rfcControlRecord.GetValue("SNDPOR").ToString().PadRight(structureIdocControlRec40["SNDPOR"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("SNDPRT").ToString().PadRight(structureIdocControlRec40["SNDPRT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("SNDPFC").ToString().PadRight(structureIdocControlRec40["SNDPFC"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("SNDPRN").ToString().PadRight(structureIdocControlRec40["SNDPRN"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("SNDSAD").ToString().PadRight(structureIdocControlRec40["SNDSAD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("SNDLAD").ToString().PadRight(structureIdocControlRec40["SNDLAD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);

                    sapIDocWriter.Write(rfcControlRecord.GetValue("RCVPOR").ToString().PadRight(structureIdocControlRec40["RCVPOR"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("RCVPRT").ToString().PadRight(structureIdocControlRec40["RCVPRT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("RCVPFC").ToString().PadRight(structureIdocControlRec40["RCVPFC"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("RCVPRN").ToString().PadRight(structureIdocControlRec40["RCVPRN"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("RCVSAD").ToString().PadRight(structureIdocControlRec40["RCVSAD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("RCVLAD").ToString().PadRight(structureIdocControlRec40["RCVLAD"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);

                    string dateField = rfcControlRecord.GetValue("CREDAT").ToString().PadRight(structureIdocControlRec40["CREDAT"].Metadata.NucLength, ' ');
                    dateField = dateField.Replace("-", "");
                    sapIDocWriter.Write(dateField, SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);

                    string timeField = rfcControlRecord.GetValue("CRETIM").ToString().PadRight(structureIdocControlRec40["CRETIM"].Metadata.NucLength, ' ');
                    timeField = timeField.Replace(":", "");
                    sapIDocWriter.Write(timeField, SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);

                    sapIDocWriter.Write(rfcControlRecord.GetValue("REFINT").ToString().PadRight(structureIdocControlRec40["REFINT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("REFGRP").ToString().PadRight(structureIdocControlRec40["REFGRP"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("REFMES").ToString().PadRight(structureIdocControlRec40["REFMES"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("ARCKEY").ToString().PadRight(structureIdocControlRec40["ARCKEY"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcControlRecord.GetValue("SERIAL").ToString().PadRight(structureIdocControlRec40["SERIAL"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write("\r\n", SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                }


                // Process the IDoc DDR40 data segment
                IdocDataRec40 = function.GetTable("IDOC_DATA_REC_40");


                //for (int i = 0; i < IdocDataRec40.RowCount; i++)
                foreach (IRfcStructure rfcDataRecord in IdocDataRec40)
                {
                    // Get the record
                    structureIdocDataRec40 = IdocDataRec40.Metadata.LineType.CreateStructure();

                    // Build the data segment
                    sapIDocWriter.Write(rfcDataRecord.GetValue("SEGNAM").ToString().PadRight(structureIdocDataRec40["SEGNAM"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcDataRecord.GetValue("MANDT").ToString().PadRight(structureIdocDataRec40["MANDT"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcDataRecord.GetValue("DOCNUM").ToString().PadRight(structureIdocDataRec40["DOCNUM"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcDataRecord.GetValue("SEGNUM").ToString().PadRight(structureIdocDataRec40["SEGNUM"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcDataRecord.GetValue("PSGNUM").ToString().PadRight(structureIdocDataRec40["PSGNUM"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcDataRecord.GetValue("HLEVEL").ToString().PadRight(structureIdocDataRec40["HLEVEL"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                    sapIDocWriter.Write(rfcDataRecord.GetValue("SDATA").ToString().PadRight(structureIdocDataRec40["SDATA"].Metadata.NucLength, ' '), SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);

                    sapIDocWriter.Write("\r\n", SAPIDocStream.SAPEncodingTypeEnum.SAPEncodingUnicode);
                }


                sapIDocWriter.UnderlyingStream.Seek(0, SeekOrigin.Begin);

                StreamReader iDocReader = new StreamReader(sapIDocWriter.UnderlyingStream);
                string       Idoc       = iDocReader.ReadToEnd();

                byte[] buffer = Encoding.UTF8.GetBytes(Idoc);

                // Pass the IDoc back in the EventArgs parameter
                e.IDocBuffer = buffer;
                e.IDocStream = sapIDocWriter.UnderlyingStream;


                // Pass back current session Id
                e.SessionId = context.SessionID;

                // Pas back IDOcnumbers
                e.IDocNumberList = IdocNumberList;

                // Set IDocs are batched flag
                e.IsBatched = (IdocControlRec40.RowCount > 1);

                if (IDocEndReceiveCompleteEvent != null)
                {
                    IDocEndReceiveCompleteEvent(e);
                }
            }
            catch (Exception ex)
            {
                // raise exception up
                System.Diagnostics.Trace.WriteLine(string.Format("Exception raised in IDOC_INBOUND_ASYNCHRONOUS of type:{0}", ex.Message));
            }
        }
Exemple #27
0
        public void ReipresionFiscal2(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_DOCUMENTO)
        {
            IRfcTable lt_DTE_SII;
            DTE_SII   DTE_SII_resp;

            connectorSap.idioma    = P_IDIOMA;
            connectorSap.idSistema = P_IDSISTEMA;
            connectorSap.instancia = P_INSTANCIA;
            connectorSap.mandante  = P_MANDANTE;
            connectorSap.paswr     = P_PASSWORD;
            connectorSap.sapRouter = P_SAPROUTER;
            connectorSap.user      = P_UNAME;
            connectorSap.server    = P_SERVER;

            string retval = connectorSap.connectionsSAP();

            //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
            if (string.IsNullOrEmpty(retval))
            {
                try
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_REIMPRESION");
                    BapiGetUser.SetValue("XBLNR", P_DOCUMENTO);

                    BapiGetUser.Invoke(SapRfcDestination);


                    lt_DTE_SII = BapiGetUser.GetTable("DTE_SII");

                    for (int i = 0; i < lt_DTE_SII.RowCount; i++)
                    {
                        lt_DTE_SII.CurrentIndex = i;
                        DTE_SII_resp            = new DTE_SII();
                        DTE_SII_resp.VBELN      = lt_DTE_SII[i].GetString("VBELN");
                        DTE_SII_resp.BUKRS      = lt_DTE_SII[i].GetString("BUKRS");
                        DTE_SII_resp.FECIMP     = lt_DTE_SII[i].GetString("FECIMP");
                        DTE_SII_resp.FODOC      = lt_DTE_SII[i].GetString("FODOC");
                        DTE_SII_resp.HORIM      = lt_DTE_SII[i].GetString("HORIM");
                        DTE_SII_resp.KONDA      = lt_DTE_SII[i].GetString("KONDA");
                        DTE_SII_resp.TDSII      = lt_DTE_SII[i].GetString("TDSII");
                        DTE_SII_resp.URLSII     = lt_DTE_SII[i].GetString("URLSII");
                        DTE_SII_resp.WAERS      = lt_DTE_SII[i].GetString("WAERS");
                        DTE_SII_resp.XBLNR      = lt_DTE_SII[i].GetString("XBLNR");
                        DTE_SII_resp.ZUONR      = lt_DTE_SII[i].GetString("ZUONR");
                        reimprFiscal2.Add(DTE_SII_resp);
                    }
                    //url = BapiGetUser.GetString("URL");
                    //GC.Collect();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message + ex.StackTrace);
                    System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                }
            }
            else
            {
                errormessage = retval;
                GC.Collect();
            }
        }
Exemple #28
0
 /// <summary>
 /// Realiza commit de los cambios realizados mediante una función RFC
 /// </summary>
 /// <param name="rfcFunction"></param>
 /// <param name="rfcDestination"></param>
 private static void commitDataInsertion(IRfcFunction rfcFunction, RfcDestination rfcDestination)
 {
     RfcTransaction trans = new RfcTransaction();
     trans.AddFunction(rfcFunction);
     trans.Commit(rfcDestination);
 }
Exemple #29
0
            // SD05 - Inteface de UM - Comunicação
            // Funcao - ZFXI_SD05C
            //[RfcServerFunction(Name = "ZGXI_SD05")]
            public static void StfcInterfaceUM(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);

                // Mandar salvar o Condicao de Pagamento
                UnidadeMedidaRepository unidadeMedidaRepository = new UnidadeMedidaRepository();

                // Implementa repositorio antes do Foreach para evitar duplicações
                UnidadeMedida unidadeMedida = new UnidadeMedida();

                // 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<UnidadeMedida> fromDB = unidadeMedidaRepository.ObterTodos();
                    foreach (UnidadeMedida dados in fromDB)
                    {
                        unidadeMedidaRepository.Excluir(dados);
                    }
                }

                // ZTBSD063
                IRfcTable it_unidadeMedida = function.GetTable("IT_UM");

                // Implementa Repositorio Rfc de resposta
                RfcRepository rep = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno = bapiret2.CreateStructure();

                int v_cont = 0;
                foreach (IRfcStructure row in it_unidadeMedida)
                {                    
                                       
                    unidadeMedida.descricao        = row.GetString("MSEHL");
                    unidadeMedida.id_unidademedida = row.GetString("MSEHI");  
                    // Pacote
                    unidadeMedida.pacote           = row.GetString("PACOTE");
                    unidadeMedida.dimensao         = row.GetString("DIMID");
                    unidadeMedida.aprestecnica     = row.GetString("MSEH3");
                    // Data Cricao
                    string v_data_Cricao           = row.GetString("ERDAT");
                    unidadeMedida.data_criacao     = Convert.ToDateTime(v_data_Cricao);
                    // Hora de Criacao
                    unidadeMedida.hora_criacao     = row.GetString("ERZET");

                    //Console.WriteLine("CODIGO: " + unidadeMedida.id_unidademedida + " DESCRICAO: " + unidadeMedida.dimensao);               
                    try
                    {
                        v_cont = v_cont + 1;
                        if (deletar == ' ')
                        {
                            IList<UnidadeMedida> fromDB = unidadeMedidaRepository.ObterTodosComCampo("id_material", unidadeMedida.id_unidademedida);
                            foreach (UnidadeMedida dados in fromDB)
                            {
                                unidadeMedidaRepository.Excluir(dados);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro e a descricao do material
                        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 a Unidade de Medida: " + unidadeMedida.descricao + " - Id: " + unidadeMedida.id_unidademedida);
                        retorno.Insert(linha_retorno);
                    }

                    unidadeMedidaRepository.Salvar(unidadeMedida);
                    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);
            }
Exemple #30
0
        public void gestiondedepositos(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE
                                       , string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_ID_CAJA, string P_USUARIO, string P_PAIS, string P_ID_APERTURA
                                       , string P_ID_CIERRE, string P_ID_ARQUEO)

        {
            try
            {
                RETORNO       retorno;
                VIAS_PAGOGD   vpgestion;
                BCO_DESTINO   banco_destino;
                BCO_DEPOSITOS banco_depositos;

                //DETALLE_REND detallerend;
                vpgestiondepositos.Clear();
                Retorno.Clear();
                BancoDest.Clear();
                BancoDeposito.Clear();
                errormessage = "";
                message      = "";
                IdCaja       = "";
                Efectivo     = "0";

                IRfcTable lt_RETORNO;
                IRfcTable lt_VPGESTIONBANCOS;
                IRfcTable lt_BANCODEST;
                IRfcTable lt_BANCODEPOSITOS;

                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();

                //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_GESTION_DEPOSITOS");

                    BapiGetUser.SetValue("LAND", P_PAIS);
                    BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA);
                    BapiGetUser.SetValue("USUARIO", P_USUARIO);
                    BapiGetUser.SetValue("ID_APERTURA", P_ID_APERTURA);
                    BapiGetUser.SetValue("ID_CIERRE", P_ID_CIERRE);
                    BapiGetUser.SetValue("ID_ARQUEO", P_ID_ARQUEO);

                    BapiGetUser.Invoke(SapRfcDestination);
                    //BapiGetUser.SetValue("I_VBELN",P_NUMDOCSD);
                    //IRfcTable GralDat = BapiGetUser.GetTable("VIAS_PAGO");
                    lt_VPGESTIONBANCOS = BapiGetUser.GetTable("VIAS_PAGO");

                    if (lt_VPGESTIONBANCOS.Count > 0)
                    {
                        //LLenamos la tabla de salida lt_DatGen
                        for (int i = 0; i < lt_VPGESTIONBANCOS.RowCount; i++)
                        {
                            try
                            {
                                lt_VPGESTIONBANCOS.CurrentIndex = i;
                                vpgestion = new VIAS_PAGOGD();

                                vpgestion.SELECCION     = lt_VPGESTIONBANCOS[i].GetString("SELECCION");
                                vpgestion.ID_CAJA       = lt_VPGESTIONBANCOS[i].GetString("ID_CAJA");
                                vpgestion.ID_APERTURA   = lt_VPGESTIONBANCOS[i].GetString("ID_APERTURA");
                                vpgestion.ID_CIERRE     = P_ID_CIERRE;
                                vpgestion.TEXT_VIA_PAGO = lt_VPGESTIONBANCOS[i].GetString("TEXT_VIA_PAGO");
                                vpgestion.FECHA_EMISION = lt_VPGESTIONBANCOS[i].GetString("FECHA_EMISION");
                                vpgestion.NUM_DOC       = lt_VPGESTIONBANCOS[i].GetString("NUM_DOC");
                                vpgestion.TEXT_BANCO    = lt_VPGESTIONBANCOS[i].GetString("TEXT_BANCO");
                                if (lt_VPGESTIONBANCOS[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_VPGESTIONBANCOS[i].GetString("MONTO_DOC").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux    = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2));
                                    string  monedachile = string.Format("{0:0,0}", ValorAux);
                                    vpgestion.MONTO_DOC = monedachile;
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_VPGESTIONBANCOS[i].GetString("MONTO_DOC"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    vpgestion.MONTO_DOC = string.Format("{0:0,0.##}", ValorAux);
                                }
                                vpgestion.ZUONR          = lt_VPGESTIONBANCOS[i].GetString("ZUONR");
                                vpgestion.FECHA_VENC     = lt_VPGESTIONBANCOS[i].GetString("FECHA_VENC");
                                vpgestion.MONEDA         = lt_VPGESTIONBANCOS[i].GetString("MONEDA");
                                vpgestion.ID_BANCO       = lt_VPGESTIONBANCOS[i].GetString("ID_BANCO");
                                vpgestion.VIA_PAGO       = lt_VPGESTIONBANCOS[i].GetString("VIA_PAGO");
                                vpgestion.SOCIEDAD       = lt_VPGESTIONBANCOS[i].GetString("SOCIEDAD");
                                vpgestion.NUM_DEPOSITO   = lt_VPGESTIONBANCOS[i].GetString("NUM_DEPOSITO");
                                vpgestion.USUARIO        = lt_VPGESTIONBANCOS[i].GetString("USUARIO");
                                vpgestion.ID_DEPOSITO    = lt_VPGESTIONBANCOS[i].GetString("ID_DEPOSITO");
                                vpgestion.FEC_DEPOSITO   = lt_VPGESTIONBANCOS[i].GetString("FEC_DEPOSITO");
                                vpgestion.BANCO          = lt_VPGESTIONBANCOS[i].GetString("BANCO");
                                vpgestion.CTA_BANCO      = lt_VPGESTIONBANCOS[i].GetString("CTA_BANCO");
                                vpgestion.BELNR_DEP      = lt_VPGESTIONBANCOS[i].GetString("BELNR_DEP");
                                vpgestion.BELNR          = lt_VPGESTIONBANCOS[i].GetString("BELNR");
                                vpgestion.SOCIEDAD       = lt_VPGESTIONBANCOS[i].GetString("SOCIEDAD");
                                vpgestion.HKONT          = lt_VPGESTIONBANCOS[i].GetString("HKONT");
                                vpgestion.ID_COMPROBANTE = lt_VPGESTIONBANCOS[i].GetString("ID_COMPROBANTE");
                                vpgestion.ID_DETALLE     = lt_VPGESTIONBANCOS[i].GetString("ID_DETALLE");
                                vpgestiondepositos.Add(vpgestion);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message + ex.StackTrace);
                                System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                            }
                        }
                    }
                    else
                    {
                        System.Windows.Forms.MessageBox.Show("No existe(n) registro(s) de vias de pago");
                    }

                    lt_BANCODEST = BapiGetUser.GetTable("BCO_DESTINO");

                    if (lt_BANCODEST.Count > 0)
                    {
                        //LLenamos la tabla de salida lt_DatGen
                        for (int i = 0; i < lt_BANCODEST.RowCount; i++)
                        {
                            try
                            {
                                lt_BANCODEST.CurrentIndex = i;
                                banco_destino             = new BCO_DESTINO();
                                banco_destino.BUKRS       = lt_BANCODEST[i].GetString("BUKRS");
                                banco_destino.HBKID       = lt_BANCODEST[i].GetString("HBKID");
                                banco_destino.HKTID       = lt_BANCODEST[i].GetString("HKTID");
                                banco_destino.BANKN       = lt_BANCODEST[i].GetString("BANKN");
                                banco_destino.BANKL       = lt_BANCODEST[i].GetString("BANKL");
                                banco_destino.BANKA       = lt_BANCODEST[i].GetString("BANKA");
                                banco_destino.WAERS       = lt_BANCODEST[i].GetString("WAERS");
                                banco_destino.TEXT1       = lt_BANCODEST[i].GetString("TEXT1");

                                BancoDest.Add(banco_destino);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message + ex.StackTrace);
                                System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                            }
                        }
                    }
                    else
                    {
                        System.Windows.Forms.MessageBox.Show("No existe(n) registro(s) en banco destino");
                    }

                    lt_BANCODEPOSITOS = BapiGetUser.GetTable("BCO_DEPOSITOS");

                    if (lt_BANCODEPOSITOS.Count > 0)
                    {
                        //LLenamos la tabla de salida lt_DatGen
                        for (int i = 0; i < lt_BANCODEPOSITOS.RowCount; i++)
                        {
                            try
                            {
                                lt_BANCODEPOSITOS.CurrentIndex = i;
                                banco_depositos       = new BCO_DEPOSITOS();
                                banco_depositos.MANDT = lt_BANCODEPOSITOS[i].GetString("MANDT");
                                banco_depositos.BANKS = lt_BANCODEPOSITOS[i].GetString("BANKS");
                                banco_depositos.BUKRS = lt_BANCODEPOSITOS[i].GetString("BUKRS");
                                banco_depositos.WAERS = lt_BANCODEPOSITOS[i].GetString("WAERS");
                                banco_depositos.BANKL = lt_BANCODEPOSITOS[i].GetString("BANKL");
                                banco_depositos.HBKID = lt_BANCODEPOSITOS[i].GetString("HBKID");
                                banco_depositos.BANKN = lt_BANCODEPOSITOS[i].GetString("BANKN");
                                banco_depositos.BANKA = lt_BANCODEPOSITOS[i].GetString("BANKA");
                                banco_depositos.HKONT = lt_BANCODEPOSITOS[i].GetString("HKONT");

                                BancoDeposito.Add(banco_depositos);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message + ex.StackTrace);
                                System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                            }
                        }
                    }
                    else
                    {
                        System.Windows.Forms.MessageBox.Show("No existe(n) registro(s) en depósitos de banco");
                    }
                    lt_RETORNO = BapiGetUser.GetTable("RETORNO");
                    try
                    {
                        for (int i = 0; i < lt_RETORNO.Count(); i++)
                        {
                            lt_RETORNO.CurrentIndex = i;
                            retorno = new RETORNO();
                            if (lt_RETORNO.GetString("TYPE") == "S")
                            {
                                message    = message + " - " + lt_RETORNO.GetString("MESSAGE") + "-" + lt_RETORNO.GetString("MESSAGE_V1").Trim();
                                NumComprob = lt_RETORNO.GetString("MESSAGE_V4").Trim();;
                            }
                            if (lt_RETORNO.GetString("TYPE") == "E")
                            {
                                errormessage = errormessage + " - " + lt_RETORNO.GetString("MESSAGE");
                            }
                            retorno.TYPE       = lt_RETORNO.GetString("TYPE");
                            retorno.ID         = lt_RETORNO.GetString("ID");
                            retorno.NUMBER     = lt_RETORNO.GetString("NUMBER");
                            retorno.MESSAGE    = lt_RETORNO.GetString("MESSAGE");
                            retorno.LOG_NO     = lt_RETORNO.GetString("LOG_NO");
                            retorno.LOG_MSG_NO = lt_RETORNO.GetString("LOG_MSG_NO");
                            retorno.MESSAGE_V1 = lt_RETORNO.GetString("MESSAGE_V1");
                            retorno.MESSAGE_V2 = lt_RETORNO.GetString("MESSAGE_V2");
                            retorno.MESSAGE_V3 = lt_RETORNO.GetString("MESSAGE_V3");
                            if (lt_RETORNO.GetString("MESSAGE_V4") != "")
                            {
                                // comprobante = ls_RETORNO.GetString("MESSAGE_V4");
                            }
                            retorno.MESSAGE_V4 = lt_RETORNO.GetString("MESSAGE_V4");
                            retorno.PARAMETER  = lt_RETORNO.GetString("PARAMETER");
                            retorno.ROW        = lt_RETORNO.GetString("ROW");
                            retorno.FIELD      = lt_RETORNO.GetString("FIELD");
                            retorno.SYSTEM     = lt_RETORNO.GetString("SYSTEM");
                            Retorno.Add(retorno);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                }
                else
                {
                    errormessage = retval;
                    MessageBox.Show("No se pudo conectar a la RFC");
                }
                GC.Collect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message, ex.StackTrace);
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
Exemple #31
0
        /// <summary>
        /// Remote Function Module YBAPI_ACC_DOCUMENT_POST_COMMIT.
        /// YAPBAPIINVOICE
        /// </summary>
        /// <param name="Obj_Key">Reference Key</param>
        /// <param name="Obj_Sys">Logical system of source document</param>
        /// <param name="Obj_Type">Reference procedure</param>
        /// <param name="Contractheader">Add. Contract Accounts Recievable and Payable Header Line</param>
        /// <param name="Customercpd">Posting in accounting: Partner billing doc (load receivable)</param>
        /// <param name="Documentheader">Header</param>
        /// <param name="Accountgl">G/L account item</param>
        /// <param name="Accountpayable">Vendor Item</param>
        /// <param name="Accountreceivable">Customer Item</param>
        /// <param name="Accounttax">Tax item</param>
        /// <param name="Contractitem">Add. Contract Accounts Rec. and Payable Document Line Item</param>
        /// <param name="Criteria">Posting in accounting: CO-PA acct assignment characteristics</param>
        /// <param name="Currencyamount">Currency Items</param>
        /// <param name="Extension1">Container for 'Customer Exit' Parameter</param>
        /// <param name="Extension2">Ref. structure for BAPI parameter ExtensionIn/ExtensionOut</param>
        /// <param name="Paymentcard">Payment Card Information</param>
        /// <param name="Realestate">Real Estate Account Assignment Data</param>
        /// <param name="Return0">Return Parameter</param>
        /// <param name="Valuefield">Posting in accounting: CO-PA acct assignment value fields</param>
        //[RfcMethod(AbapName = "YBAPI_ACC_DOCUMENT_POST_COMMIT")]
        //[SoapDocumentMethodAttribute("http://tempuri.org/YBAPI_ACC_DOCUMENT_POST_COMMIT",
        // RequestNamespace = "urn:sap-com:document:sap:rfc:functions",
        // RequestElementName = "YBAPI_ACC_DOCUMENT_POST_COMMIT",
        // ResponseNamespace = "urn:sap-com:document:sap:rfc:functions",
        // ResponseElementName = "YBAPI_ACC_DOCUMENT_POST_COMMIT.Response")]
        public virtual void Ybapi_Acc_Document_Post_Commit(
            //[RfcParameter(AbapName = "CONTRACTHEADER", RfcType = RFCTYPE.RFCTYPE_STRUCTURE, Optional = true, Direction = RFCINOUT.IN)]
            //[XmlElement("CONTRACTHEADER", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            BAPIACCAHD Contractheader,
            //[RfcParameter(AbapName = "CUSTOMERCPD", RfcType = RFCTYPE.RFCTYPE_STRUCTURE, Optional = true, Direction = RFCINOUT.IN)]
            //[XmlElement("CUSTOMERCPD", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            BAPIACPA09 Customercpd,
            //[RfcParameter(AbapName = "DOCUMENTHEADER", RfcType = RFCTYPE.RFCTYPE_STRUCTURE, Optional = false, Direction = RFCINOUT.IN)]
            //[XmlElement("DOCUMENTHEADER", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            BAPIACHE09 Documentheader,
            //[RfcParameter(AbapName = "OBJ_KEY", RfcType = RFCTYPE.RFCTYPE_CHAR, Optional = true, Direction = RFCINOUT.OUT, Length = 20, Length2 = 40)]
            //[XmlElement("OBJ_KEY", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            out string Obj_Key,
            //[RfcParameter(AbapName = "OBJ_SYS", RfcType = RFCTYPE.RFCTYPE_CHAR, Optional = true, Direction = RFCINOUT.OUT, Length = 10, Length2 = 20)]
            //[XmlElement("OBJ_SYS", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            out string Obj_Sys,
            //[RfcParameter(AbapName = "OBJ_TYPE", RfcType = RFCTYPE.RFCTYPE_CHAR, Optional = true, Direction = RFCINOUT.OUT, Length = 5, Length2 = 10)]
            //[XmlElement("OBJ_TYPE", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            out string Obj_Type,
            //[RfcParameter(AbapName = "ACCOUNTGL", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("ACCOUNTGL", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACGL09Table Accountgl,
            //[RfcParameter(AbapName = "ACCOUNTPAYABLE", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("ACCOUNTPAYABLE", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACAP09Table Accountpayable,
            //[RfcParameter(AbapName = "ACCOUNTRECEIVABLE", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("ACCOUNTRECEIVABLE", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACAR09Table Accountreceivable,
            //[RfcParameter(AbapName = "ACCOUNTTAX", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("ACCOUNTTAX", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACTX09Table Accounttax,
            //[RfcParameter(AbapName = "CONTRACTITEM", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("CONTRACTITEM", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACCAITTable Contractitem,
            //[RfcParameter(AbapName = "CRITERIA", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("CRITERIA", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACKEC9Table Criteria,
            //[RfcParameter(AbapName = "CURRENCYAMOUNT", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = false, Direction = RFCINOUT.INOUT)]
            //[XmlArray("CURRENCYAMOUNT", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACCR09Table Currencyamount,
            //[RfcParameter(AbapName = "EXTENSION1", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("EXTENSION1", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACEXTCTable Extension1,
            //[RfcParameter(AbapName = "EXTENSION2", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("EXTENSION2", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIPAREXTable Extension2,
            //[RfcParameter(AbapName = "PAYMENTCARD", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("PAYMENTCARD", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACPC09Table Paymentcard,
            //[RfcParameter(AbapName = "REALESTATE", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("REALESTATE", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACRE09Table Realestate,
            //[RfcParameter(AbapName = "RETURN", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = false, Direction = RFCINOUT.INOUT)]
            //[XmlArray("RETURN", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIRET2Table Return0,
            //[RfcParameter(AbapName = "VALUEFIELD", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = true, Direction = RFCINOUT.INOUT)]
            //[XmlArray("VALUEFIELD", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            //[XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref BAPIACKEV9Table Valuefield, bool useEcc)
        {
            //object[] results = null;
            //results = this.SAPInvoke("Ybapi_Acc_Document_Post_Commit", new object[] {
            //                Contractheader,Customercpd,Documentheader,Accountgl,Accountpayable,Accountreceivable,Accounttax,Contractitem,Criteria,Currencyamount,Extension1,Extension2,Paymentcard,Realestate,Return0,Valuefield });

            IRfcFunction function = destination.Repository.CreateFunction("YBAPI_ACC_DOCUMENT_POST_COMMIT");

            #region set parameter value

            function.SetValue("CONTRACTHEADER", Contractheader.GetStructure(destination.Repository));
            function.SetValue("CUSTOMERCPD", Customercpd.GetStructure(destination.Repository, useEcc));
            function.SetValue("DOCUMENTHEADER", Documentheader.GetStructure(destination.Repository));
            function.SetValue("ACCOUNTGL", Accountgl.GetTable(destination.Repository, function.GetTable("ACCOUNTGL")));
            function.SetValue("ACCOUNTPAYABLE", Accountpayable.GetTable(destination.Repository, function.GetTable("ACCOUNTPAYABLE")));
            function.SetValue("ACCOUNTRECEIVABLE", Accountreceivable.GetTable(destination.Repository, function.GetTable("ACCOUNTRECEIVABLE")));
            function.SetValue("ACCOUNTTAX", Accounttax.GetTable(destination.Repository, function.GetTable("ACCOUNTTAX")));
            function.SetValue("CONTRACTITEM", Contractitem.GetTable(destination.Repository, function.GetTable("CONTRACTITEM")));
            function.SetValue("CRITERIA", Criteria.GetTable(destination.Repository, function.GetTable("CRITERIA")));
            function.SetValue("CURRENCYAMOUNT", Currencyamount.GetTable(destination.Repository, function.GetTable("CURRENCYAMOUNT")));
            function.SetValue("EXTENSION1", Extension1.GetTable(destination.Repository, function.GetTable("EXTENSION1")));
            function.SetValue("EXTENSION2", Extension2.GetTable(destination.Repository, function.GetTable("EXTENSION2")));
            function.SetValue("PAYMENTCARD", Paymentcard.GetTable(destination.Repository, function.GetTable("PAYMENTCARD")));
            function.SetValue("REALESTATE", Realestate.GetTable(destination.Repository, function.GetTable("REALESTATE")));
            function.SetValue("RETURN", Return0.GetTable(destination.Repository, function.GetTable("RETURN")));
            function.SetValue("VALUEFIELD", Valuefield.GetTable(destination.Repository, function.GetTable("VALUEFIELD")));

            #endregion

            function.Invoke(destination);

            Obj_Key  = function.GetString("OBJ_KEY");                           //(string)results[0];
            Obj_Sys  = function.GetString("OBJ_SYS");                           //(string)results[1];
            Obj_Type = function.GetString("OBJ_TYPE");                          //(string)results[2];
            Accountgl.SetValue(function.GetTable("ACCOUNTGL"));                 //Accountgl = (BAPIACGL09Table)results[3];
            Accountpayable.SetValue(function.GetTable("ACCOUNTPAYABLE"));       //Accountpayable = (BAPIACAP09Table)results[4];
            Accountreceivable.SetValue(function.GetTable("ACCOUNTRECEIVABLE")); //Accountreceivable = (BAPIACAR09Table)results[5];
            Accounttax.SetValue(function.GetTable("ACCOUNTTAX"));               //Accounttax = (BAPIACTX09Table)results[6];
            Contractitem.SetValue(function.GetTable("CONTRACTITEM"));           //Contractitem = (BAPIACCAITTable)results[7];
            Criteria.SetValue(function.GetTable("CRITERIA"));                   //Criteria = (BAPIACKEC9Table)results[8];
            Currencyamount.SetValue(function.GetTable("CURRENCYAMOUNT"));       //Currencyamount = (BAPIACCR09Table)results[9];
            Extension1.SetValue(function.GetTable("EXTENSION1"));               //Extension1 = (BAPIACEXTCTable)results[10];
            Extension2.SetValue(function.GetTable("EXTENSION2"));               //Extension2 = (BAPIPAREXTable)results[11];
            Paymentcard.SetValue(function.GetTable("PAYMENTCARD"));             //Paymentcard = (BAPIACPC09Table)results[12];
            Realestate.SetValue(function.GetTable("REALESTATE"));               //Realestate = (BAPIACRE09Table)results[13];
            Return0.SetValue(function.GetTable("RETURN"));                      //Return0 = (BAPIRET2Table)results[14];
            Valuefield.SetValue(function.GetTable("VALUEFIELD"));               //Valuefield = (BAPIACKEV9Table)results[15];
        }
Exemple #32
0
        public void checkdocsanulacion(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE
                                       , string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_USUARIO, string P_ID_CAJA, string P_LAND, string P_RUT
                                       , string P_ID_COMPROBANTE, string P_SOCIEDAD, string P_TP_DOC, List <CAB_COMP> P_CAB_COM)
        {
            CabeceraDocs.Clear();
            Retorno.Clear();
            IRfcTable lt_h_documentos;
            //IRfcTable lt_d_documentos;
            IRfcStructure lt_retorno;

            //  PART_ABIERTAS  PART_ABIERTAS_resp;
            CAB_COMP DOCS_CABECERA_resp;
            //DET_COMP DOCS_DETALLES_resp;
            RETORNO retorno_resp;

            //Conexion a SAP
            connectorSap.idioma    = P_IDIOMA;
            connectorSap.idSistema = P_IDSISTEMA;
            connectorSap.instancia = P_INSTANCIA;
            connectorSap.mandante  = P_MANDANTE;
            connectorSap.paswr     = P_PASSWORD;
            connectorSap.sapRouter = P_SAPROUTER;
            connectorSap.user      = P_UNAME;
            connectorSap.server    = P_SERVER;

            string retval = connectorSap.connectionsSAP();

            //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
            if (string.IsNullOrEmpty(retval))
            {
                RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_CHECK_JEFE_CAJA");
                //BapiGetUser.SetValue("ID_COMPROBANTE", P_ID_COMPROBANTE);
                //BapiGetUser.SetValue("RUT", P_RUT);
                //BapiGetUser.SetValue("LAND", P_LAND);
                //BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD);
                BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA);
                BapiGetUser.SetValue("USUARIO", P_USUARIO);
                //BapiGetUser.SetValue("TP_DOC", P_TP_DOC);

                IRfcTable GralDat = BapiGetUser.GetTable("CAB_COMP");

                try
                {
                    for (var i = 0; i < P_CAB_COM.Count; i++)
                    {
                        GralDat.Append();
                        GralDat.SetValue("LAND", P_CAB_COM[i].LAND);
                        GralDat.SetValue("ID_CAJA", P_CAB_COM[i].ID_CAJA);
                        GralDat.SetValue("ID_COMPROBANTE", P_CAB_COM[i].ID_COMPROBANTE);
                        GralDat.SetValue("TIPO_DOCUMENTO", P_CAB_COM[i].TIPO_DOCUMENTO);
                        GralDat.SetValue("DESCRIPCION", P_CAB_COM[i].DESCRIPCION);
                        GralDat.SetValue("NRO_REFERENCIA", P_CAB_COM[i].NRO_REFERENCIA);
                        GralDat.SetValue("FECHA_COMP", P_CAB_COM[i].FECHA_COMP);
                        GralDat.SetValue("FECHA_VENC_DOC", P_CAB_COM[i].FECHA_VENC_DOC);
                        GralDat.SetValue("MONTO_DOC", P_CAB_COM[i].MONTO_DOC);
                        GralDat.SetValue("TEXTO_EXCEPCION", P_CAB_COM[i].TEXTO_EXCEPCION);
                        GralDat.SetValue("CLIENTE", Convert.ToDateTime(P_CAB_COM[i].CLIENTE));
                        GralDat.SetValue("MONEDA", P_CAB_COM[i].MONEDA);
                        GralDat.SetValue("CLASE_DOC", P_CAB_COM[i].CLASE_DOC);
                        GralDat.SetValue("TXT_CLASE_DOC", P_CAB_COM[i].TXT_CLASE_DOC);
                        GralDat.SetValue("NUM_CANCELACION", P_CAB_COM[i].NUM_CANCELACION);
                        GralDat.SetValue("AUT_JEF", P_CAB_COM[i].AUT_JEF);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message + ex.StackTrace);
                    //System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                }
                BapiGetUser.SetValue("CAB_COMP", GralDat);

                BapiGetUser.Invoke(SapRfcDestination);

                valido = BapiGetUser.GetString("VALIDO");
                // estado = BapiGetUser.GetString("ESTADO");

                lt_h_documentos = BapiGetUser.GetTable("CAB_COMP");
                lt_retorno      = BapiGetUser.GetStructure("ESTADO");

                if (lt_h_documentos.Count > 0)
                {
                    //LLenamos la tabla de salida lt_DatGen
                    for (int i = 0; i < lt_h_documentos.RowCount; i++)
                    {
                        try
                        {
                            lt_h_documentos.CurrentIndex       = i;
                            DOCS_CABECERA_resp                 = new CAB_COMP();
                            DOCS_CABECERA_resp.LAND            = lt_h_documentos[i].GetString("LAND");
                            DOCS_CABECERA_resp.ID_CAJA         = lt_h_documentos[i].GetString("ID_CAJA");
                            DOCS_CABECERA_resp.ID_COMPROBANTE  = lt_h_documentos[i].GetString("ID_COMPROBANTE");
                            DOCS_CABECERA_resp.TIPO_DOCUMENTO  = lt_h_documentos[i].GetString("TIPO_DOCUMENTO");
                            DOCS_CABECERA_resp.DESCRIPCION     = lt_h_documentos[i].GetString("DESCRIPCION");
                            DOCS_CABECERA_resp.NRO_REFERENCIA  = lt_h_documentos[i].GetString("NRO_REFERENCIA");
                            DOCS_CABECERA_resp.FECHA_COMP      = lt_h_documentos[i].GetString("FECHA_COMP");
                            DOCS_CABECERA_resp.FECHA_VENC_DOC  = lt_h_documentos[i].GetString("FECHA_VENC_DOC");
                            DOCS_CABECERA_resp.MONTO_DOC       = lt_h_documentos[i].GetString("MONTO_DOC");
                            DOCS_CABECERA_resp.TEXTO_EXCEPCION = lt_h_documentos[i].GetString("TEXTO_EXCEPCION");
                            DOCS_CABECERA_resp.CLIENTE         = lt_h_documentos[i].GetString("CLIENTE");
                            DOCS_CABECERA_resp.MONEDA          = lt_h_documentos[i].GetString("MONEDA");
                            DOCS_CABECERA_resp.CLASE_DOC       = lt_h_documentos[i].GetString("CLASE_DOC");
                            DOCS_CABECERA_resp.TXT_CLASE_DOC   = lt_h_documentos[i].GetString("TXT_CLASE_DOC");
                            DOCS_CABECERA_resp.NUM_CANCELACION = lt_h_documentos[i].GetString("NUM_CANCELACION");
                            DOCS_CABECERA_resp.AUT_JEF         = lt_h_documentos[i].GetString("AUT_JEF");
                            CabeceraDocs.Add(DOCS_CABECERA_resp);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message + ex.StackTrace);
                            System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                        }
                    }
                }
                else
                {
                    System.Windows.MessageBox.Show("No existe(n) registro(s)");
                }

                //if (lt_d_documentos.Count > 0)
                //{
                //    //LLenamos la tabla de salida lt_DatGen
                //    for (int i = 0; i < lt_d_documentos.RowCount; i++)
                //    {
                //        try
                //        {
                //            lt_d_documentos.CurrentIndex = i;
                //            DOCS_DETALLES_resp = new DET_COMP();

                //            DOCS_DETALLES_resp.ID_COMPROBANTE = lt_d_documentos[i].GetString("ID_COMPROBANTE");
                //            DOCS_DETALLES_resp.ID_DETALLE = lt_d_documentos[i].GetString("ID_DETALLE");
                //            DOCS_DETALLES_resp.VIA_PAGO = lt_d_documentos[i].GetString("VIA_PAGO");
                //            DOCS_DETALLES_resp.DESCRIP_VP = lt_d_documentos[i].GetString("DESCRIP_VP");
                //            DOCS_DETALLES_resp.NUM_CHEQUE = lt_d_documentos[i].GetString("NUM_CHEQUE");
                //            DOCS_DETALLES_resp.FECHA_VENC = lt_d_documentos[i].GetString("FECHA_VENC");
                //            DOCS_DETALLES_resp.MONTO = lt_d_documentos[i].GetString("MONTO");
                //            DOCS_DETALLES_resp.MONEDA = lt_d_documentos[i].GetString("MONEDA");
                //            DOCS_DETALLES_resp.NUM_CUOTAS = lt_d_documentos[i].GetString("NUM_CUOTAS");
                //            DOCS_DETALLES_resp.EMISOR = lt_d_documentos[i].GetString("EMISOR");
                //            DetalleDocs.Add(DOCS_DETALLES_resp);
                //        }
                //        catch (Exception ex)
                //        {
                //            Console.WriteLine(ex.Message + ex.StackTrace);
                //            System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);

                //        }

                //    }
                //}

                String Mensaje = "";
                if (lt_retorno.Count > 0)
                {
                    for (int i = 0; i < lt_retorno.Count(); i++)
                    {
                        //lt_retorno.CurrentIndex = i;
                        retorno_resp            = new RETORNO();
                        retorno_resp.TYPE       = lt_retorno.GetString("TYPE");
                        retorno_resp.ID         = lt_retorno.GetString("ID");
                        retorno_resp.NUMBER     = lt_retorno.GetString("NUMBER");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.LOG_NO     = lt_retorno.GetString("LOG_NO");
                        retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1");
                        if (i == 0)
                        {
                            Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1");
                        }
                        retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2");
                        retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3");
                        retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4");
                        retorno_resp.PARAMETER  = lt_retorno.GetString("PARAMETER");
                        retorno_resp.ROW        = lt_retorno.GetString("ROW");
                        retorno_resp.FIELD      = lt_retorno.GetString("FIELD");
                        retorno_resp.SYSTEM     = lt_retorno.GetString("SYSTEM");
                        Retorno.Add(retorno_resp);
                    }
                    System.Windows.MessageBox.Show(Mensaje);
                }
                //else
                //{
                //    System.Windows.MessageBox.Show("No existe(n) registro(s)");
                //}
            }
            else
            {
                errormessage = retval;
            }
            GC.Collect();
        }
Exemple #33
0
        public void bloqueardesbloquearcaja(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, List <LOG_APERTURA> P_LOGAPERTURA)
        {
            //IRfcTable lt_t_documentos;
            //IRfcStructure lt_retorno;

            //  PART_ABIERTAS  PART_ABIERTAS_resp;


            //Conexion a SAP
            connectorSap.idioma    = P_IDIOMA;
            connectorSap.idSistema = P_IDSISTEMA;
            connectorSap.instancia = P_INSTANCIA;
            connectorSap.mandante  = P_MANDANTE;
            connectorSap.paswr     = P_PASSWORD;
            connectorSap.sapRouter = P_SAPROUTER;
            connectorSap.user      = P_UNAME;
            connectorSap.server    = P_SERVER;

            string retval = connectorSap.connectionsSAP();

            //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
            if (string.IsNullOrEmpty(retval))
            {
                RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_BLOQ_DES_CAJA");
                //BapiGetUser.SetValue("LOG_APERTURA", P_LOGAPERTURA);
                IRfcStructure GralDat = BapiGetUser.GetStructure("LOG_APERTURA");

                for (var i = 0; i < P_LOGAPERTURA.Count; i++)
                {
                    //GralDat.Append();
                    GralDat.SetValue("MANDT", P_LOGAPERTURA[i].MANDT);
                    GralDat.SetValue("ID_REGISTRO", P_LOGAPERTURA[i].ID_REGISTRO);
                    GralDat.SetValue("LAND", P_LOGAPERTURA[i].LAND);
                    GralDat.SetValue("ID_CAJA", P_LOGAPERTURA[i].ID_CAJA);
                    GralDat.SetValue("USUARIO", P_LOGAPERTURA[i].USUARIO);
                    GralDat.SetValue("FECHA", P_LOGAPERTURA[i].FECHA);
                    GralDat.SetValue("HORA", P_LOGAPERTURA[i].HORA);
                    GralDat.SetValue("MONTO", P_LOGAPERTURA[i].MONTO);
                    GralDat.SetValue("MONEDA", P_LOGAPERTURA[i].MONEDA);
                    GralDat.SetValue("TIPO_REGISTRO", P_LOGAPERTURA[i].TIPO_REGISTRO);
                    GralDat.SetValue("ID_APERTURA", P_LOGAPERTURA[i].ID_APERTURA);
                    GralDat.SetValue("TXT_CIERRE", P_LOGAPERTURA[i].TXT_CIERRE);
                    GralDat.SetValue("BLOQUEO", P_LOGAPERTURA[i].BLOQUEO);
                    GralDat.SetValue("USUARIO_BLOQ", P_LOGAPERTURA[i].USUARIO_BLOQ);
                }
                BapiGetUser.SetValue("LOG_APERTURA", GralDat);
                BapiGetUser.Invoke(SapRfcDestination);


                //lt_t_documentos = BapiGetUser.GetTable("T_DOCUMENTOS");
                //lt_retorno = BapiGetUser.GetStructure("SE_ESTATUS");
                //lt_PART_ABIERTAS = BapiGetUser.GetTable("ZCLSP_TT_LISTA_DOCUMENTOS");
                try
                {
                    String Mensaje = "";
                    //if (lt_retorno.Count > 0)
                    //{
                    //    retorno_resp = new ESTADO();
                    //    for (int i = 0; i < lt_retorno.Count(); i++)
                    //    {
                    //        // lt_retorno.CurrentIndex = i;

                    //        retorno_resp.TYPE = lt_retorno.GetString("TYPE");
                    //        retorno_resp.ID = lt_retorno.GetString("ID");
                    //        retorno_resp.NUMBER = lt_retorno.GetString("NUMBER");
                    //        retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE");
                    //        retorno_resp.LOG_NO = lt_retorno.GetString("LOG_NO");
                    //        retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO");
                    //        retorno_resp.MESSAGE = lt_retorno.GetString("MESSAGE");
                    //        retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1");
                    //        if (i == 0)
                    //        {
                    //            Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1");
                    //        }
                    //        retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2");
                    //        retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3");
                    //        retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4");
                    //        retorno_resp.PARAMETER = lt_retorno.GetString("PARAMETER");
                    //        retorno_resp.ROW = lt_retorno.GetString("ROW");
                    //        retorno_resp.FIELD = lt_retorno.GetString("FIELD");
                    //        retorno_resp.SYSTEM = lt_retorno.GetString("SYSTEM");
                    //        Retorno.Add(retorno_resp);
                    //    }
                    //    System.Windows.MessageBox.Show(Mensaje);
                    //}
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message + ex.StackTrace);
                    System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                }
            }
            else
            {
                errormessage = retval;
            }
            GC.Collect();
        }
Exemple #34
0
        public Attachment_BE VALIDATE_XML(ref Attachment_BE attach, string metodoPago, SharedSettings.Settings settings)
        {
            try
            {
                //Establecemos conexion con SAP
                RfcConfigParameters rfc = SAP_Connection.GetParameters(settings);

                RfcDestination rfcDest = null;
                rfcDest = RfcDestinationManager.GetDestination(rfc);

                //Creamos repositorio para la función
                RfcRepository repo          = rfcDest.Repository;
                IRfcFunction  validate_mail = repo.CreateFunction("Z_MAIL_VALIDATE_DATA");

                validate_mail.SetValue("P_RFC_VENDOR", attach.RFC_VEND);
                validate_mail.SetValue("P_RFC_COMPANY", attach.RFC_COMP);
                validate_mail.SetValue("P_MET_PAGO", metodoPago);
                //Ejecutamos la consulta
                validate_mail.Invoke(rfcDest);

                attach.RFC_COMPANY = validate_mail.GetString("ERFC_COMPANY");
                attach.RFC_VENDOR  = validate_mail.GetString("ERFC_VENDOR");
                attach.LIFNR       = validate_mail.GetString("ELIFNR");
                attach.BUKRS       = validate_mail.GetString("EBUKRS");

                //attach.ECALLECOMP = validate_mail.GetString("ECALLECOMP");
                //attach.E_N_EXTCOMP = validate_mail.GetString("E_N_EXTCOMP");
                //attach.ECOLCOMP = validate_mail.GetString("ECOLCOMP");
                //attach.EMUNI_COMP = validate_mail.GetString("EMUNI_COMP");
                //attach.ECPCOMP = validate_mail.GetString("ECPCOMP");
                //attach.EPAISCOMP = validate_mail.GetString("EPAISCOMP");
                //attach.ECALLEVEND = validate_mail.GetString("ECALLEVEND");
                //attach.E_N_EXTVEND = validate_mail.GetString("E_N_EXTVEND");
                //attach.ECOLVEND = validate_mail.GetString("ECOLVEND");
                //attach.EMUNI_VEND = validate_mail.GetString("EMUNI_VEND");
                //attach.ECPVEND = validate_mail.GetString("ECPVEND");
                //attach.EPAISVEND = validate_mail.GetString("EPAISVEND");
                //attach.EEDO_COMP = validate_mail.GetString("EEDO_COMP");
                //attach.EEDO_VEND = validate_mail.GetString("EEDO_VEND");
                attach.Desc_Error = attach.Desc_Error + validate_mail.GetString("E_MET_PAGO");


                return(attach);
            }
            catch (RfcCommunicationException e)
            {
                throw e;
            }
            catch (RfcLogonException e)
            {
                // user could not logon...
                throw e;
            }
            catch (RfcAbapRuntimeException e)
            {
                // serious problem on ABAP system side...
                throw e;
            }
            catch (RfcAbapBaseException e)
            {
                // The function module returned an ABAP exception, an ABAP message
                // or an ABAP class-based exception...
                throw e;
            }
            catch (Exception e)
            {
                throw e;
            }
        }
 public static void ZRFCFUNCTION01(RfcServerContext context, IRfcFunction function)
 {
     //Console.WriteLine("Received function call{0} from system{1}.",
     //    function.Metadata.Name,
     //    context.SystemAttributes.SystemID);
     String reqtext = function.GetString("ZNAME");
     Console.WriteLine("ZNAME = {0}\n", reqtext);
 }
Exemple #36
0
        public string SAVE_MAIL_DATA(MAIL_DATA_BE mail_data, List <Attachment_BE> attachs, List <Relacionados> relacionados, SharedSettings.Settings settings)
        {
            byte[] pdf;
            try
            {
                //Establecemos conexion con SAP
                RfcConfigParameters rfc = SAP_Connection.GetParameters(settings);

                RfcDestination rfcDest = null;
                rfcDest = RfcDestinationManager.GetDestination(rfc);

                //Creamos repositorio para la función
                RfcRepository repo      = rfcDest.Repository;
                IRfcFunction  save_mail = repo.CreateFunction("Z_MAIL_SAVE");


                IRfcStructure p_maildata     = save_mail.GetStructure("P_MAILDATA");
                IRfcTable     p_attachments  = save_mail.GetTable("P_ATTACHMENTS");
                IRfcTable     p_relacionados = save_mail.GetTable("P_RELACIONADOS");


                get_maildata_sapstr(mail_data, ref p_maildata);

                get_mailattach_saptab(attachs, ref p_attachments);
                get_relacionados_saptab(relacionados, ref p_relacionados);

                //Ejecutamos la consulta
                save_mail.Invoke(rfcDest);

                pdf = save_mail.GetByteArray("FILEPDFGEN");
                IRfcStructure bapiret = save_mail.GetStructure("BAPIRET");

                //string res = save_mail.GetString("MSG");

                //Revisamos que la consulta haya sido exitosa
                if (pdf.Length > 0 && String.IsNullOrEmpty(attachs[0].PATHFILEPDF) == false)
                {
                    if (System.IO.File.Exists(attachs[0].PATHFILEPDF) == false)
                    {
                        System.IO.File.WriteAllBytes(attachs[0].PATHFILEPDF, pdf);
                    }
                }
                if (bapiret.GetString("TYPE") == "E")
                {
                    string mensajeError = bapiret.GetString("MESSAGE");
                    return(mensajeError); //Hubo un error
                }
                else
                {
                    return(""); //Guardado exitoso
                }
            }
            catch (RfcCommunicationException e)
            {
                throw e;
            }
            catch (RfcLogonException e)
            {
                // user could not logon...
                throw e;
            }
            catch (RfcAbapRuntimeException e)
            {
                // serious problem on ABAP system side...
                throw e;
            }
            catch (RfcAbapBaseException e)
            {
                // The function module returned an ABAP exception, an ABAP message
                // or an ABAP class-based exception...
                throw e;
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Exemple #37
0
        public void aperturacaja(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER
                                 , string P_SERVER, string P_IDIOMA, string P_ID_CAJA, string P_MONTO, string P_PAIS, string P_MONEDA, string P_TIPO_REGISTRO, string P_EQUIPO)
        {
            try
            {
                errormessage = "";
                status       = "";
                message      = "";
                stringRfc    = "";
                IRfcStructure ls_APER_CAJA;
                //Conexion a SAP

                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();
                //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_GF_RFC_APER_CAJA");

                    BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA);
                    if (P_MONTO == "")
                    {
                        P_MONTO = "0";
                    }
                    BapiGetUser.SetValue("MONTO", P_MONTO);

                    BapiGetUser.SetValue("MONEDA", P_MONEDA);
                    BapiGetUser.SetValue("TIPO_REGISTRO", P_TIPO_REGISTRO);
                    BapiGetUser.SetValue("LAND", P_PAIS);
                    BapiGetUser.SetValue("USUARIO", P_UNAME);
                    BapiGetUser.SetValue("EQUIPO", P_EQUIPO);

                    BapiGetUser.Invoke(SapRfcDestination);
                    ls_APER_CAJA = BapiGetUser.GetStructure("ESTATUS");

                    stringRfc = Convert.ToString(BapiGetUser.GetValue("ESTATUS"));
                    //LLenamos los datos que retorna la estructura de la RFC
                    status  = ls_APER_CAJA.GetString("TYPE");
                    message = ls_APER_CAJA.GetString("MESSAGE");
                }
                else
                ////Si el valor de retorno es distinto nulo o vacio,se emite el mensaje de error.
                {
                    errormessage = retval;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + ex.StackTrace);
                System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
            }
            GC.Collect();
        }
Exemple #38
0
        static void Main(string[] args)
        {
            string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

            Appconfig.Initialize(path, ConfigurationManager.AppSettings, null);

            #region Logger
            log4net.GlobalContext.Properties["LOG4NET_ERROR"] = Appconfig.LOG4NET_ERROR; //log file path
            log4net.GlobalContext.Properties["LOG4NET_DEBUG"] = Appconfig.LOG4NET_DEBUG; //log file path
            log4net.Config.XmlConfigurator.Configure();
            #endregion
            var      currencyRatioDict = Appconfig.CurrencyRatioDict;
            DateTime programDatetime   = DateTime.Now;
            DateTime runningDate;
            if (programDatetime.Hour > Appconfig.BOTHourUpdate)
            {
                runningDate = new DateTime(programDatetime.Year, programDatetime.Month, programDatetime.Day);
            }
            else
            {
                var programDatetimeYesterday = programDatetime.AddDays(-1);
                runningDate = new DateTime(programDatetimeYesterday.Year, programDatetimeYesterday.Month, programDatetimeYesterday.Day);
            }
            if (args != null && args.Count() > 0)
            {
                DateTime tryResult;
                if (DateTime.TryParseExact(args.First(), "d/MM/yyyy", new CultureInfo("en-US"), DateTimeStyles.None, out tryResult))
                {
                    runningDate = tryResult;
                }
            }

            log.Debug("*******************************************************************");
            log.Debug("PROGRAM RUNS ON " + programDatetime.ToString("dd/MM/yyyy HH:mm:ss"));
            log.Debug("*******************************************************************");
            JsonLogService db        = new JsonLogService(Appconfig.JsonLog);
            var            dateToRun = new List <DateTime>();
            if (!Appconfig.RecoveryMode)
            {
                dateToRun.Add(runningDate);                                                       // we could check last date run is yesterday|| today ? if not we cound add lost day in between
                var lastDataDate = db.GetLastRunningDate();
                if (lastDataDate != default(DateTime) && lastDataDate.CompareTo(runningDate) < 0) // 0 means run second time for the day, 1 is not possible (if we do not force them to run future's day)
                {
                    log.Debug("-----------------------------------------------------------------");
                    log.Debug("CHECKING LAST RUNING DATE FOR SPECIFY DATES TO RUN (IF THERE IS MISSING RUNNING ON SOME DAYS)");
                    log.Debug("-----------------------------------------------------------------");
                    var timeSpanDiff = runningDate.Subtract(lastDataDate);
                    if (timeSpanDiff.TotalDays > 1)
                    {
                        int dayToRecover = Convert.ToInt32(timeSpanDiff.TotalDays) - 1;
                        for (int i = 1; i <= dayToRecover; i++)
                        {
                            dateToRun.Add(runningDate.AddDays(-i));
                        }
                    }
                }
            }
            else
            {
                foreach (var recoveryDate in Appconfig.RecoveryDate)
                {
                    DateTime tryResult;
                    if (DateTime.TryParseExact(recoveryDate, "d/M/yyyy", new CultureInfo("en-US"), DateTimeStyles.None, out tryResult))
                    {
                        dateToRun.Add(tryResult);
                    }
                }
            }

            foreach (var transactionDate in dateToRun)
            {
                #region  BOT API
                log.Debug("-----------------------------------------------------------------");
                log.Debug("API Call Start");
                log.Debug("-----------------------------------------------------------------");

                //var todayLog = db.GetDailyLog(transactionDate);//??
                List <Task> taskList = new List <Task>();
                foreach (var currencyPair in Appconfig.SyncCurrency)
                {
                    var currencyInDb = db.GetOrCreateCurrency(transactionDate, currencyPair);
                    //if sap is sync we will not call api again
                    if (currencyInDb.isSyncSAP == false)
                    {
                        if (currencyInDb.isAPIComplete)
                        {
                            log.Debug(String.Format(@"NOTE : THERE WAS FINISHED API CALL BUT SAP ERROR --> RECALL API AGAIN {0} {1}", currencyInDb.Currency, currencyInDb.Date.ToShortDateString()));
                        }
                        taskList.Add(APIExecute(currencyInDb, transactionDate));
                    }
                }

                var unfinishedAPI = db.GetUnfinishedBOTSync().Where(x => x.Date != transactionDate && Appconfig.SyncCurrency.Contains(x.Currency) && x.isSyncSAP == false);
                foreach (var currencyPair in unfinishedAPI)
                {
                    taskList.Add(APIExecute(currencyPair, currencyPair.Date));
                }
                Task.WhenAll(taskList).Wait();
                log.Debug("-----------------------------------------------------------------");
                log.Debug("API Call Successfully");
                log.Debug("-----------------------------------------------------------------");
                if (!db.SaveChange())
                {
                    log.Debug("-----------------------------------------------------------------");
                    log.Debug("Log Update Error");
                    log.Debug("-----------------------------------------------------------------");
                }
                else
                {
                    log.Debug("-----------------------------------------------------------------");
                    log.Debug("Log Update Successful");
                    log.Debug("-----------------------------------------------------------------");
                }

                #endregion
            }

            #region API Patch for non-value date
            log.Debug("==============================================================================");
            log.Debug("CHECK PATCHING START");
            log.Debug("==============================================================================");
            try
            {
                var patchingNeededDates = db.GetAllLog().Where(x => x.CurrenciesRate.Any(c => Appconfig.SyncCurrency.Contains(c.Currency) && c.isAPIComplete == true && c.isSyncSAP == false && c.Sell_SAP == (decimal)0 && c.Buy_SAP == (decimal)0)).ToList();//REVIEW
                if (patchingNeededDates.Count > 0)
                {
                    log.Debug("PATCHING FOUND");
                    Patching(Appconfig.SyncCurrency, patchingNeededDates);
                    log.Debug("PATCHING END");
                }
            }
            catch (Exception ex)
            {
                log.Debug("==============================================================================");
                log.Debug("CHECK PATCHING ERROR : CHECK THE EXCEPTION BELOW");
                log.Debug("==============================================================================");
                ExceptionHandling.LogException(ex);
            }

            #endregion

            #region SAP Part
            /// we will send sap only isAPIcomplete and if none of Buy and Sell we will use the last known value before that day to be value sent to SAP
            /// send only currency config, only isAPIComplete = true, only isSAPComplete = false
            log.Debug("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
            log.Debug("SAP START");
            log.Debug("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
            bool   isSAPCompleted = true;
            string SAPErrorMsg    = string.Empty;
            try
            {
                var sapSent = db.GetAllLog().Where(x => x.CurrenciesRate.Any(c => Appconfig.SyncCurrency.Contains(c.Currency) && c.isAPIComplete == true && c.isSyncSAP == false && c.Sell_SAP != (decimal)0 && c.Buy_SAP != (decimal)0)).ToList();
                #region  SAP Connection
                DestinationRegister.RegistrationDestination(new SAPDestinationSetting
                {
                    AppServerHost = Appconfig.SAPServerHost,
                    Client        = Appconfig.SAPClient,
                    User          = Appconfig.SAPUser,
                    Password      = Appconfig.SAPPassword,
                    SystemNumber  = Appconfig.SAPSystemNumber,
                    SystemID      = Appconfig.SAPSystemID,
                });
                var          des      = RfcDestinationManager.GetDestination(DestinationRegister.Destination());
                IRfcFunction function = des.Repository.CreateFunction("ZBAPI_EXCHANGERATE_UPDATE");
                #endregion

                #region example for input structure as input bapi

                /*
                 * TABLE :I_EXCHANGE
                 * STRUCTURE BAPI1093_0
                 *  RATE_TYPE	Exchange Rate Type , B = buy // M = sell
                 *  FROM_CURR	From currency
                 *  TO_CURRNCY	To-currency
                 *  VALID_FROM	Date from Which Entry Is Valid (yyyy-MM-dd)
                 *  EXCH_RATE	Direct Quoted Exchange Rate
                 *  FROM_FACTOR	Ratio for the "From" Currency Units, 1 // if JPY this is 100
                 *  TO_FACTOR	Ratio for the "To" Currency Units, 1
                 *  EXCH_RATE_V	Indirect Quoted Exchange Rate ****No input
                 *  FROM_FACTOR_V	Ratio for the "From" Currency Units ****No input
                 *  TO_FACTOR_V	Ratio for the "To" Currency Units ****No input
                 */
                IRfcTable           table   = function["I_EXCHANGE"].GetTable();//table
                List <CurrencyRate> sentSAP = new List <CurrencyRate>();
                foreach (var dailyLog in sapSent)
                {
                    foreach (var cur in dailyLog.CurrenciesRate.Where(c => Appconfig.SyncCurrency.Contains(c.Currency) && c.isAPIComplete == true && c.isSyncSAP == false && c.Sell_SAP != (decimal)0 && c.Buy_SAP != (decimal)0))
                    {
                        table.Append();                                  //create new row
                        IRfcStructure Buy            = table.CurrentRow; //current structure ,row
                        string        structure_name = Buy.Metadata.Name;
                        //Buy
                        Buy.SetValue("RATE_TYPE", "B");
                        Buy.SetValue("FROM_CURR", cur.Currency);
                        Buy.SetValue("TO_CURRNCY", "THB");
                        Buy.SetValue("VALID_FROM", dailyLog.Date.ToString("yyyy-MM-dd", new CultureInfo("en-US")));
                        Buy.SetValue("EXCH_RATE", cur.Buy_SAP.ToString("0.#####"));
                        if (currencyRatioDict.ContainsKey(cur.Currency))
                        {
                            Buy.SetValue("FROM_FACTOR", currencyRatioDict[cur.Currency]);
                        }
                        else
                        {
                            Buy.SetValue("FROM_FACTOR", 1);
                        }
                        Buy.SetValue("TO_FACTOR", 1);
                        log.Debug(String.Format("{0}  {1}  {2}  {3}  {4}", "B", cur.Currency, "THB", dailyLog.Date.ToString("ddMMyyyy", new CultureInfo("en-US")), cur.Buy_SAP.ToString("0.#####")));

                        table.Append();                        //create new row
                        IRfcStructure Sell = table.CurrentRow; //current structure ,row
                                                               //Sell
                        Sell.SetValue("RATE_TYPE", "M");
                        Sell.SetValue("FROM_CURR", cur.Currency);
                        Sell.SetValue("TO_CURRNCY", "THB");
                        Sell.SetValue("VALID_FROM", dailyLog.Date.ToString("yyyy-MM-dd", new CultureInfo("en-US")));
                        Sell.SetValue("EXCH_RATE", cur.Sell_SAP.ToString("0.#####"));
                        if (currencyRatioDict.ContainsKey(cur.Currency))
                        {
                            Sell.SetValue("FROM_FACTOR", currencyRatioDict[cur.Currency]);
                        }
                        else
                        {
                            Sell.SetValue("FROM_FACTOR", 1);
                        }
                        Sell.SetValue("TO_FACTOR", 1);
                        log.Debug(String.Format("{0}  {1}  {2}  {3}  {4}", "M", cur.Currency, "THB", dailyLog.Date.ToString("ddMMyyyy", new CultureInfo("en-US")), cur.Sell_SAP.ToString("0.#####")));
                        sentSAP.Add(cur);
                    }
                }

                var count = table.Count;
                #endregion
                if (count > 0)
                {
                    try
                    {
                        function.Invoke(des);
                        sentSAP.ForEach(x =>
                        {
                            x.isSyncSAP = true;
                        });
                    }
                    catch (SAP.Middleware.Connector.RfcAbapClassicException ex)
                    {
                        if (ex.Key == "SAPSQL_ARRAY_INSERT_DUPREC")
                        {
                            //dublicate record found
                            log.Debug("-----------------------------------------------------------------");
                            log.Debug("SAP BAPI CALL Error : DUBLICATED RECORD FOUND IN SAP.");
                            log.Debug("-----------------------------------------------------------------");
                        }
                        ExceptionHandling.LogException(ex);
                    }
                    catch (Exception ex)
                    {
                        isSAPCompleted = false;
                        SAPErrorMsg   += Environment.NewLine + ex.Message;
                        log.Debug("-----------------------------------------------------------------");
                        log.Debug("SAP BAPI CALL Error : READ THE EXCEPTION DETAIL.");
                        log.Debug("-----------------------------------------------------------------");
                        ExceptionHandling.LogException(ex);
                    }
                }
                //Call bapi

                #region example for fetch structure as object

                /*
                 *  IRfcParameter export = function["PRHEADER"];
                 * IRfcStructure structure = export.GetStructure();
                 * var setting = new PropertiesList<DataContainer>
                 * {
                 *  { "PREQ_NO", x=>x.PREQ_NO},
                 *  { "PREQ_NO", x=>x.PREQ_NO},
                 *  { "PR_TYPE", x=>x.PR_TYPE},
                 *  { "CTRL_IND", x=>x.CTRL_IND},
                 * };
                 * DataContainer output = structure.ToObject(setting);*/
                #endregion

                IRfcParameter returnTable = function["I_EXCHANGE"];
                IRfcTable     table1      = returnTable.GetTable();

                //foreach (IRfcStructure record in table1)
                //{
                //    Console.WriteLine(String.Format("{0}:{1}", record.GetInt("PREQ_ITEM"), record.GetValue("PREQ_ITEM").ToString()));
                //}

                if (!db.SaveChange())
                {
                    log.Debug("-----------------------------------------------------------------");
                    log.Debug("Log Update Error");
                    log.Debug("-----------------------------------------------------------------");
                }
                else
                {
                    log.Debug("-----------------------------------------------------------------");
                    log.Debug("Log Update Successful");
                    log.Debug("-----------------------------------------------------------------");
                }
            }
            catch (Exception ex)
            {
                isSAPCompleted = false;
                SAPErrorMsg   += Environment.NewLine + ex.Message;
                log.Debug("-----------------------------------------------------------------");
                log.Debug("SAP PART Error :  READ THE EXCEPTION DETAIL.");
                log.Debug("-----------------------------------------------------------------");
                ExceptionHandling.LogException(ex);
            }

            #endregion



            #region AlertMsg

            try
            {
                if (!Appconfig.RecoveryMode &&
                    db.GetOrCreateDailyLog(runningDate).CurrenciesRate.Any(x => Appconfig.SyncCurrency.Contains(x.Currency) && x.isSyncSAP == false && x.Sell != (decimal)0 && x.Buy != (decimal)0) &&
                    programDatetime.Date.AddDays(-1) == runningDate.Date &&
                    programDatetime.Hour < Appconfig.BOTHourUpdate && programDatetime.Hour > Appconfig.AlertCutOffTime)
                {
                    //recovery mode is off
                    //there is some sync currency which cannot sent to SAP found and it is not dayoff (sell && buy !=0)
                    //program is running on not today for sure (not after 18.00 of the day) (not before 7.00 of the program date)

                    MailService mailService = new MailService(Appconfig.MailServer, Appconfig.MailServerPort);

                    //send email to user
                    Email userMail = new Email();
                    userMail.Cc          = Appconfig.AlertAdminEmail;
                    userMail.From        = Appconfig.MailAdminAddress;
                    userMail.To          = Appconfig.AlertUserEmail;
                    userMail.Subject     = @"[BOTExchangeRate] ERROR UPDATE TO SAP NOTIFICATION";
                    userMail.SenderName  = @"BOTExchange Automatic Email Alert";
                    userMail.BodyMessage = MailTemplateUser(runningDate, Appconfig.SyncCurrency);

                    mailService.SendMail(userMail);
                    //send email to admin if exception found
                    if (!isSAPCompleted)
                    {
                        Email adminMail = new Email();
                        adminMail.From        = Appconfig.MailAdminAddress;
                        adminMail.To          = Appconfig.AlertAdminEmail;
                        adminMail.Subject     = @"[BOTExchangeRate] ERROR UPDATE TO SAP NOTIFICATION [DEBUG]";
                        adminMail.SenderName  = @"BOTExchange Automatic Email Alert";
                        adminMail.BodyMessage = MailTemplateAdmin(runningDate, Appconfig.SyncCurrency, SAPErrorMsg);
                        mailService.SendMail(adminMail);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Debug("-----------------------------------------------------------------");
                log.Debug("EMAIL ALERT ERROR");
                log.Debug("-----------------------------------------------------------------");
                ExceptionHandling.LogException(ex);
            }

            #endregion


            log.Debug("*******************************************************************");
            log.Debug("PROGRAM RUNS COMPLETED " + programDatetime.ToString("dd/MM/yyyy HH:mm:ss"));
            log.Debug("*******************************************************************");
        }
Exemple #39
0
        public void reimprcomprobantes(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, List <VIAS_PAGO2> P_VIASPAGO, List <DOCUMENTOS> P_DOCSAPAGAR)
        {
            try
            {
                DatosCabecera.Clear();
                DatosDetalle.Clear();
                DatosDocumentos.Clear();
                DatosViaPago.Clear();
                DatosCaja.Clear();
                DatosCliente.Clear();
                DatosEmpresa.Clear();
                IRfcStructure lt_DATOS_CAJA;
                IRfcStructure lt_DATOS_CLIENTES;
                IRfcTable     lt_DATOS_DOCUMENTOS;
                IRfcTable     lt_DATOS_VP;
                IRfcTable     lt_DATOSEMPRESA;
                //DATOS_CAJA DATOS_CAJA_resp;
                DATOS_CLIENTES   datosclientes;
                DATOS_CAJA       datoscaja;
                DATOS_DOCUMENTOS datosdocumentos;
                DATOS_VP         datosvp;
                INFO_SOC         datosempresa;
                //Conexion a SAP
                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();

                //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_FM_REC_IMP_COMPROBANTE");
                    try
                    {
                        IRfcTable GralDat = BapiGetUser.GetTable("VIAS_PAGO");
                        for (var i = 0; i < P_VIASPAGO.Count; i++)
                        {
                            GralDat.Append();
                            GralDat.SetValue("MANDT", P_VIASPAGO[i].MANDT);
                            GralDat.SetValue("LAND", P_VIASPAGO[i].LAND);
                            GralDat.SetValue("ID_COMPROBANTE", P_VIASPAGO[i].ID_COMPROBANTE);
                            GralDat.SetValue("ID_DETALLE", P_VIASPAGO[i].ID_DETALLE);
                            GralDat.SetValue("VIA_PAGO", P_VIASPAGO[i].VIA_PAGO);
                            GralDat.SetValue("MONTO", P_VIASPAGO[i].MONTO);
                            GralDat.SetValue("MONEDA", P_VIASPAGO[i].MONEDA);
                            if (P_VIASPAGO[i].BANCO != "")
                            {
                                GralDat.SetValue("BANCO", P_VIASPAGO[i].BANCO.Substring(0, 3));
                            }
                            else
                            {
                                GralDat.SetValue("BANCO", P_VIASPAGO[i].BANCO);
                            }
                            GralDat.SetValue("EMISOR", P_VIASPAGO[i].EMISOR);
                            GralDat.SetValue("NUM_CHEQUE", P_VIASPAGO[i].NUM_CHEQUE);
                            GralDat.SetValue("COD_AUTORIZACION", P_VIASPAGO[i].COD_AUTORIZACION);
                            GralDat.SetValue("NUM_CUOTAS", P_VIASPAGO[i].NUM_CUOTAS);
                            if (P_VIASPAGO[i].FECHA_VENC != "0000-00-00")
                            {
                                GralDat.SetValue("FECHA_VENC", Convert.ToDateTime(P_VIASPAGO[i].FECHA_VENC));
                            }
                            GralDat.SetValue("TEXTO_POSICION", P_VIASPAGO[i].TEXTO_POSICION);
                            GralDat.SetValue("ANEXO", P_VIASPAGO[i].ANEXO);
                            GralDat.SetValue("SUCURSAL", P_VIASPAGO[i].SUCURSAL);
                            GralDat.SetValue("NUM_CUENTA", P_VIASPAGO[i].NUM_CUENTA);
                            GralDat.SetValue("NUM_TARJETA", P_VIASPAGO[i].NUM_TARJETA);
                            GralDat.SetValue("NUM_VALE_VISTA", P_VIASPAGO[i].NUM_VALE_VISTA);
                            GralDat.SetValue("PATENTE", P_VIASPAGO[i].PATENTE);
                            GralDat.SetValue("NUM_VENTA", P_VIASPAGO[i].NUM_VENTA);
                            GralDat.SetValue("PAGARE", P_VIASPAGO[i].PAGARE);
                            if (P_VIASPAGO[i].FECHA_EMISION != "0000-00-00")
                            {
                                GralDat.SetValue("FECHA_EMISION", Convert.ToDateTime(P_VIASPAGO[i].FECHA_EMISION));
                            }
                            GralDat.SetValue("NOMBRE_GIRADOR", P_VIASPAGO[i].NOMBRE_GIRADOR);
                            GralDat.SetValue("CARTA_CURSE", P_VIASPAGO[i].CARTA_CURSE);
                            GralDat.SetValue("NUM_TRANSFER", P_VIASPAGO[i].NUM_TRANSFER);
                            GralDat.SetValue("NUM_DEPOSITO", P_VIASPAGO[i].NUM_DEPOSITO);
                            GralDat.SetValue("CTA_BANCO", P_VIASPAGO[i].CTA_BANCO);
                            GralDat.SetValue("IFINAN", P_VIASPAGO[i].IFINAN);
                            GralDat.SetValue("CORRE", P_VIASPAGO[i].CORRE);
                            GralDat.SetValue("ZUONR", P_VIASPAGO[i].ZUONR);
                            GralDat.SetValue("HKONT", P_VIASPAGO[i].HKONT);
                            GralDat.SetValue("PRCTR", P_VIASPAGO[i].PRCTR);
                        }
                        BapiGetUser.SetValue("VIAS_PAGO", GralDat);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("{0} Exception caught.", ex);
                        System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                    try
                    {
                        IRfcTable GralDat2 = BapiGetUser.GetTable("DOCUMENTOS");
                        for (var i = 0; i < P_DOCSAPAGAR.Count; i++)
                        {
                            GralDat2.Append();
                            GralDat2.SetValue("MANDT", P_DOCSAPAGAR[i].MANDT);
                            GralDat2.SetValue("LAND", P_DOCSAPAGAR[i].LAND);
                            GralDat2.SetValue("ID_COMPROBANTE", P_DOCSAPAGAR[i].ID_COMPROBANTE);
                            GralDat2.SetValue("POSICION", P_DOCSAPAGAR[i].POSICION);
                            GralDat2.SetValue("CLIENTE", P_DOCSAPAGAR[i].CLIENTE);
                            GralDat2.SetValue("TIPO_DOCUMENTO", P_DOCSAPAGAR[i].CLASE_DOC);
                            GralDat2.SetValue("SOCIEDAD", P_DOCSAPAGAR[i].SOCIEDAD);
                            if (i == 0)
                            {
                                NumDocCont = P_DOCSAPAGAR[i].NRO_DOCUMENTO;
                            }
                            GralDat2.SetValue("NRO_DOCUMENTO", P_DOCSAPAGAR[i].NRO_DOCUMENTO);
                            GralDat2.SetValue("NRO_REFERENCIA", P_DOCSAPAGAR[i].NRO_REFERENCIA);
                            GralDat2.SetValue("CAJERO_RESP", P_DOCSAPAGAR[i].CAJERO_RESP);
                            GralDat2.SetValue("CAJERO_GEN", P_DOCSAPAGAR[i].CAJERO_GEN);
                            GralDat2.SetValue("ID_CAJA", P_DOCSAPAGAR[i].ID_CAJA);
                            GralDat2.SetValue("FECHA_COMP", P_DOCSAPAGAR[i].FECHA_COMP);
                            GralDat2.SetValue("HORA", P_DOCSAPAGAR[i].HORA);
                            GralDat2.SetValue("NRO_COMPENSACION", P_DOCSAPAGAR[i].NRO_COMPENSACION);
                            GralDat2.SetValue("TEXTO_CABECERA", P_DOCSAPAGAR[i].TEXTO_CABECERA);
                            GralDat2.SetValue("NULO", P_DOCSAPAGAR[i].NULO);
                            GralDat2.SetValue("USR_ANULADOR", P_DOCSAPAGAR[i].USR_ANULADOR);
                            GralDat2.SetValue("NRO_ANULACION", P_DOCSAPAGAR[i].NRO_ANULACION);
                            GralDat2.SetValue("APROBADOR_ANULA", P_DOCSAPAGAR[i].APROBADOR_ANULA);
                            GralDat2.SetValue("TXT_ANULACION", P_DOCSAPAGAR[i].TXT_ANULACION);
                            GralDat2.SetValue("EXCEPCION", P_DOCSAPAGAR[i].EXCEPCION);
                            if (P_DOCSAPAGAR[i].FECHA_COMP != "0000-00-00")
                            {
                                GralDat2.SetValue("FECHA_DOC", Convert.ToDateTime(P_DOCSAPAGAR[i].FECHA_COMP));
                            }
                            if (P_DOCSAPAGAR[i].FECHA_VENC_DOC != "0000-00-00")
                            {
                                GralDat2.SetValue("FECHA_VENC_DOC", Convert.ToDateTime(P_DOCSAPAGAR[i].FECHA_VENC_DOC));
                            }
                            GralDat2.SetValue("NUM_CUOTA", P_DOCSAPAGAR[i].NUM_CUOTA);
                            GralDat2.SetValue("MONTO_DOC", P_DOCSAPAGAR[i].MONTO_DOC);
                            GralDat2.SetValue("MONTO_DIFERENCIA", P_DOCSAPAGAR[i].MONTO_DIFERENCIA);
                            GralDat2.SetValue("TEXTO_EXCEPCION", P_DOCSAPAGAR[i].TEXTO_EXCEPCION);
                            GralDat2.SetValue("PARCIAL", P_DOCSAPAGAR[i].PARCIAL);
                            GralDat2.SetValue("TIME", P_DOCSAPAGAR[i].TIME);
                            GralDat2.SetValue("APROBADOR_EX", P_DOCSAPAGAR[i].APROBADOR_EX);
                            GralDat2.SetValue("MONEDA", P_DOCSAPAGAR[i].MONEDA);
                            GralDat2.SetValue("CLASE_CUENTA", P_DOCSAPAGAR[i].CLASE_CUENTA);
                            GralDat2.SetValue("CLASE_DOC", P_DOCSAPAGAR[i].CLASE_DOC);
                            GralDat2.SetValue("NUM_CANCELACION", P_DOCSAPAGAR[i].NUM_CANCELACION);
                            GralDat2.SetValue("CME", P_DOCSAPAGAR[i].CME);
                            GralDat2.SetValue("NOTA_VENTA", P_DOCSAPAGAR[i].NOTA_VENTA);
                            GralDat2.SetValue("CEBE", P_DOCSAPAGAR[i].CEBE);
                            GralDat2.SetValue("ACC", P_DOCSAPAGAR[i].ACC);
                        }
                        BapiGetUser.SetValue("DOCUMENTOS", GralDat2);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("{0} Exception caught.", ex);
                        System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    BapiGetUser.Invoke(SapRfcDestination);
                    //LLenamos los datos que retorna la estructura de la RFC
                    try
                    {
                        lt_DATOS_CAJA = BapiGetUser.GetStructure("DATOS_CAJA");
                        for (int i = 0; i < lt_DATOS_CAJA.Count(); i++)
                        {
                            //lt_DATOS_CAJA.CurrentIndex = i;
                            datoscaja                = new DATOS_CAJA();
                            datoscaja.NAME_CAJERO    = lt_DATOS_CAJA.GetString("NAME_CAJERO");
                            datoscaja.USUARIO        = lt_DATOS_CAJA.GetString("USUARIO");
                            datoscaja.ID_COMPROBANTE = lt_DATOS_CAJA.GetString("ID_COMPROBANTE");
                            datoscaja.NRO_DOCUMENTO  = lt_DATOS_CAJA.GetString("NRO_DOCUMENTO");
                            datoscaja.NOM_SOCIEDAD   = lt_DATOS_CAJA.GetString("NOM_SOCIEDAD");
                            datoscaja.RUT_SOCIEDAD   = lt_DATOS_CAJA.GetString("RUT_SOCIEDAD");
                            datoscaja.NOM_CAJA       = lt_DATOS_CAJA.GetString("NOM_CAJA");
                            DatosCaja.Add(datoscaja);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("{0} Exception caught.", ex);
                        System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                    try
                    {
                        lt_DATOS_CLIENTES = BapiGetUser.GetStructure("DATOS_CLIENTES");
                        for (int i = 0; i < lt_DATOS_CLIENTES.Count(); i++)
                        {
                            //lt_DATOS_CLIENTES.CurrentIndex = i;
                            datosclientes        = new DATOS_CLIENTES();
                            datosclientes.RUT    = lt_DATOS_CLIENTES.GetString("RUT");
                            datosclientes.NOMBRE = lt_DATOS_CLIENTES.GetString("NOMBRE");
                            DatosCliente.Add(datosclientes);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("{0} Exception caught.", ex);
                        System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    try
                    {
                        lt_DATOS_DOCUMENTOS = BapiGetUser.GetTable("DATOS_DOCUMENTOS");
                        for (int i = 0; i < lt_DATOS_DOCUMENTOS.Count(); i++)
                        {
                            lt_DATOS_DOCUMENTOS.CurrentIndex = i;
                            datosdocumentos                = new DATOS_DOCUMENTOS();
                            datosdocumentos.TXT_DOCU       = lt_DATOS_DOCUMENTOS.GetString("TXT_DOCU");
                            datosdocumentos.NRO_DOCUMENTO  = lt_DATOS_DOCUMENTOS.GetString("NRO_DOCUMENTO");
                            datosdocumentos.FECHA_DOC      = lt_DATOS_DOCUMENTOS.GetString("FECHA_DOC");
                            datosdocumentos.FECHA_VENC_DOC = lt_DATOS_DOCUMENTOS.GetString("FECHA_VENC_DOC");
                            datosdocumentos.MONEDA         = lt_DATOS_DOCUMENTOS.GetString("MONEDA");
                            string str = datosdocumentos.MONEDA;
                            switch (str)
                            {
                            case "USD":
                                //string Valor3 = lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_MO").Trim();
                                //Valor3 = Valor3.Replace(".", "");
                                //Valor3 = Valor3.Replace(",", "");
                                //decimal ValorAux3 = Convert.ToDecimal(Valor3.Substring(0, Valor3.Length - 2));
                                //string Cualquiernombre3 = string.Format("{0:0,0}", ValorAux3);
                                datosdocumentos.MONTO_DOC_MO = Formato.FormatoMonedaExtranjera(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_MO").Trim());

                                //string Valor4 = lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_ML").Trim();
                                //Valor4 = Valor4.Replace(".", "");
                                //Valor4 = Valor4.Replace(",", "");
                                //decimal ValorAux4 = Convert.ToDecimal(Valor4.Substring(0, Valor4.Length - 2));
                                //string Cualquiernombre4 = string.Format("{0:0,0}", ValorAux4);
                                datosdocumentos.MONTO_DOC_ML = Formato.FormatoMonedaExtranjera(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_ML").Trim());
                                break;

                            case "EUR":
                                //string Valor6 = lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_MO").Trim();
                                //Valor6 = Valor6.Replace(".", "");
                                //Valor6 = Valor6.Replace(",", "");
                                //decimal ValorAux6 = Convert.ToDecimal(Valor6.Substring(0, Valor6.Length - 2));
                                //string Cualquiernombre6 = string.Format("{0:0,0}", ValorAux6);
                                datosdocumentos.MONTO_DOC_MO = Formato.FormatoMonedaExtranjera(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_MO").Trim());

                                //string Valor7 = lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_ML").Trim();
                                //Valor7 = Valor7.Replace(".", "");
                                //Valor7 = Valor7.Replace(",", "");
                                //decimal ValorAux7 = Convert.ToDecimal(Valor7.Substring(0, Valor7.Length - 2));
                                //string Cualquiernombre7 = string.Format("{0:0,0}", ValorAux7);
                                datosdocumentos.MONTO_DOC_ML = Formato.FormatoMonedaExtranjera(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_ML").Trim());
                                break;

                            case "CLP":
                                datosdocumentos.MONTO_DOC_MO = Formato.FormatoMoneda(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_MO"));
                                datosdocumentos.MONTO_DOC_ML = Formato.FormatoMoneda(lt_DATOS_DOCUMENTOS.GetString("MONTO_DOC_ML"));
                                break;
                            }
                            datosdocumentos.PEDIDO = lt_DATOS_DOCUMENTOS.GetString("PEDIDO");
                            DatosDocumentos.Add(datosdocumentos);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("{0} Exception caught.", ex);
                        System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                    try
                    {
                        lt_DATOSEMPRESA = BapiGetUser.GetTable("INFO_SOC");
                        for (int i = 0; i < lt_DATOSEMPRESA.Count(); i++)
                        {
                            lt_DATOSEMPRESA.CurrentIndex = i;
                            datosempresa       = new INFO_SOC();
                            datosempresa.BUKRS = lt_DATOSEMPRESA.GetString("BUKRS");
                            datosempresa.BUTXT = lt_DATOSEMPRESA.GetString("BUTXT");
                            datosempresa.STCD1 = lt_DATOSEMPRESA.GetString("STCD1");
                            DatosEmpresa.Add(datosempresa);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("{0} Exception caught.", ex);
                        System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                    try
                    {
                        lt_DATOS_VP = BapiGetUser.GetTable("DATOS_VP");
                        for (int i = 0; i < lt_DATOS_VP.Count(); i++)
                        {
                            lt_DATOS_VP.CurrentIndex = i;
                            datosvp               = new DATOS_VP();
                            datosvp.NUM_POS       = lt_DATOS_VP.GetString("NUM_POS");
                            datosvp.DESCRIP_VP    = lt_DATOS_VP.GetString("DESCRIP_VP");
                            datosvp.NUM_VP        = lt_DATOS_VP.GetString("NUM_VP");
                            datosvp.FECHA_EMISION = lt_DATOS_VP.GetString("FECHA_EMISION");
                            datosvp.FECHA_VENC    = lt_DATOS_VP.GetString("FECHA_VENC");
                            datosvp.MONEDA        = lt_DATOS_VP.GetString("MONEDA");
                            string str = datosvp.MONEDA;
                            switch (str)
                            {
                            case "USD":
                                //string Valor = lt_DATOS_VP.GetString("MONTO_MO").Trim();
                                //Valor = Valor.Replace(".", "");
                                //Valor = Valor.Replace(",", "");
                                //decimal ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2));
                                //string Cualquiernombre = string.Format("{0:0,0}", ValorAux);
                                datosvp.MONTO_MO = Formato.FormatoMonedaExtranjera(lt_DATOS_VP.GetString("MONTO_MO").Trim());

                                //string Valor2 = lt_DATOS_VP.GetString("MONTO_ML").Trim();
                                //Valor2 = Valor2.Replace(".", "");
                                //Valor2 = Valor2.Replace(",", "");
                                //decimal ValorAux2 = Convert.ToDecimal(Valor2.Substring(0, Valor2.Length - 2));
                                //string Cualquiernombre2 = string.Format("{0:0,0}", ValorAux2);
                                datosvp.MONTO_ML = Formato.FormatoMonedaExtranjera(lt_DATOS_VP.GetString("MONTO_ML").Trim());
                                break;

                            case "EUR":
                                //string Valor1 = lt_DATOS_VP.GetString("MONTO_MO").Trim();
                                //Valor1 = Valor1.Replace(".", "");
                                //Valor1 = Valor1.Replace(",", "");
                                //decimal ValorAux1 = Convert.ToDecimal(Valor1.Substring(0, Valor1.Length - 2));
                                //string Cualquiernombre1 = string.Format("{0:0,0}", ValorAux1);
                                datosvp.MONTO_MO = Formato.FormatoMonedaExtranjera(lt_DATOS_VP.GetString("MONTO_MO").Trim());

                                //string Valor5 = lt_DATOS_VP.GetString("MONTO_ML").Trim();
                                //Valor5 = Valor5.Replace(".", "");
                                //Valor5 = Valor5.Replace(",", "");
                                //decimal ValorAux5 = Convert.ToDecimal(Valor5.Substring(0, Valor5.Length - 2));
                                //string Cualquiernombre5 = string.Format("{0:0,0}", ValorAux5);
                                datosvp.MONTO_ML = Formato.FormatoMonedaExtranjera(lt_DATOS_VP.GetString("MONTO_ML").Trim());
                                break;

                            case "CLP":
                                datosvp.MONTO_MO = Formato.FormatoMoneda(lt_DATOS_VP.GetString("MONTO_MO"));
                                datosvp.MONTO_ML = Formato.FormatoMoneda(lt_DATOS_VP.GetString("MONTO_ML"));
                                break;
                            }
                            DatosViaPago.Add(datosvp);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("{0} Exception caught.", ex);
                        System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                }
                GC.Collect();
            }

            catch (InvalidCastException ex)
            {
                Console.WriteLine("{0} Exception caught.", ex);
                System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
Exemple #40
0
        private DataSet CallFunction(string functionName, Dictionary <string, object> importParameters, ref Dictionary <string, object> exportParameters)
        {
            IRfcFunction function = null;
            Dictionary <string, IRfcTable> tables  = new Dictionary <string, IRfcTable>();
            Dictionary <string, object>    exports = new Dictionary <string, object>();

            try
            {
                //get metadata repository associated with the destination
                //fetch or get cached function metadata and
                //create a function container based on the function metadata
                function = destination.Repository.CreateFunction(functionName);

                //find import parameter
                //The .Net Connector runtime always trys to find
                //a suitable conversion between C# data types and ABAP data types.
                for (int i = 0; i < function.Metadata.ParameterCount; i++)
                {
                    object parameter = null;
                    if (importParameters != null)
                    {
                        if (importParameters.TryGetValue(function.Metadata[i].Name, out parameter))
                        {
                            function.SetValue(function.Metadata[i].Name, parameter);
                        }
                    }
                    switch (function.Metadata[i].Direction)
                    {
                    case RfcDirection.CHANGING:
                        break;

                    case RfcDirection.EXPORT:
                        exports.Add(function.Metadata[i].Name, function.GetStructure(function.Metadata[i].Name));
                        break;

                    case RfcDirection.IMPORT:
                        break;

                    case RfcDirection.TABLES:
                        tables.Add(function.Metadata[i].Name, function.GetTable(function.Metadata[i].Name));
                        break;

                    default:
                        break;
                    }
                }

                function.Invoke(destination); //make the remote call

                //get dataset
                DataSet dataSet = new DataSet();
                foreach (string key in tables.Keys)
                {
                    DataTable dataTable = ConvertRFCTabletoDataTable(tables[key]);
                    dataTable.TableName = key;
                    dataSet.Tables.Add(dataTable);
                }

                //get export
                if (exportParameters != null)
                {
                    exportParameters = exports;
                }

                return(dataSet);
            }
            catch (RfcCommunicationException e)
            {
                // network problem...
                //throw new Exception("network problem", e);
                throw new Exception(e.Message, e);
            }
            catch (RfcAbapRuntimeException e)
            {
                // serious problem on ABAP system side...
                //throw new Exception("serious problem on ABAP system side", e);
                throw new Exception(e.Message, e);
            }
            catch (RfcAbapBaseException e)
            {
                // The function module returned an ABAP exception, an ABAP message
                // or an ABAP class-based exception...
                //throw new Exception("The function module returned an ABAP exception, an ABAP message or an ABAP class-based exception...",e);
                throw new Exception(e.Message, e);
            }
            catch (RfcBaseException e)
            {
                throw e;
            }
            catch (Exception ex)
            {
                throw new Exception(message + ex.Message);
            }
        }
        private void BuildIdoc(StreamReader txtStream, IRfcFunction function)
        {
            IRfcTable     tableIdocControlRec40 = null;
            IRfcStructure structureIdocControlRec40;

            IRfcTable     tableIdocDataRec40;
            IRfcStructure structureIdocDataRec40;

            String iDocText = txtStream.ReadToEnd();
            int    pos      = 0;

            tableIdocControlRec40     = function.GetTable("IDOC_CONTROL_REC_40");
            structureIdocControlRec40 = tableIdocControlRec40.Metadata.LineType.CreateStructure();

            //  need one row for DC40 control record
            tableIdocControlRec40.Insert();

            // iterate thru fields in structure
            foreach (IRfcField field in structureIdocControlRec40)
            {
                // get value from text
                String fieldValue = iDocText.Substring(pos, field.Metadata.NucLength);

                // insert value into table
                tableIdocControlRec40.SetValue(field.Metadata.Name, fieldValue);
                pos += field.Metadata.NucLength;
            }

            String iDocDataline = string.Empty;

            txtStream.BaseStream.Seek(0, SeekOrigin.Begin);
            // skip DC40 control row
            txtStream.ReadLine();

            // now build Data Table
            tableIdocDataRec40 = function.GetTable("IDOC_DATA_REC_40");

            int lineCount = 0;

            do
            {
                iDocDataline = txtStream.ReadLine();

                if (!string.IsNullOrEmpty(iDocDataline))
                {
                    structureIdocDataRec40 = tableIdocDataRec40.Metadata.LineType.CreateStructure();
                    tableIdocDataRec40.Append(iDocDataline.Length);

                    pos = 0;

                    // iterate thru fields in structure
                    foreach (IRfcField field in structureIdocDataRec40)
                    {
                        // data segment header record
                        if (!string.Equals(field.Metadata.Name, "SDATA"))
                        {
                            // get value from text
                            String fieldValue = iDocDataline.Substring(pos, field.Metadata.NucLength);

                            tableIdocDataRec40[lineCount].SetValue(field.Metadata.Name, fieldValue);
                            pos += field.Metadata.NucLength;
                        }
                        else
                        {
                            // rest of data
                            String fieldValue = iDocDataline.Substring(pos).PadRight(field.Metadata.NucLength);
                            tableIdocDataRec40[lineCount].SetValue(field.Metadata.Name, fieldValue);
                        }
                        // insert value into table
                    }
                }


                lineCount += 1;
            }while (!string.IsNullOrEmpty(iDocDataline));
        }
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                string Rut  = context.Request.QueryString["Rut"];
                string Mes  = context.Request.QueryString["Mes"];
                string Anio = context.Request.QueryString["Anio"];

                string usuario    = context.Request.QueryString["Usuario"];
                string contrasena = context.Request.QueryString["Clave"];

                string retorno = "ERROR";

                ConexionController conexion = new ConexionController();
                try
                {
                    if (!string.IsNullOrEmpty(usuario) && !string.IsNullOrEmpty(contrasena))
                    {
                        retorno = conexion.connectionsSAP(usuario, contrasena);
                    }

                    if (string.IsNullOrEmpty(retorno))
                    {
                        RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(conexion.connectorConfig);
                        RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                        IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZHR_LIQ_SUE");

                        BapiGetUser.SetValue("I_RUT", Rut);
                        BapiGetUser.SetValue("I_MES", Mes);
                        BapiGetUser.SetValue("I_ANO", Anio);


                        BapiGetUser.Invoke(SapRfcDestination);

                        Byte[] bytes = (Byte[])BapiGetUser.GetValue("PDF_LIQUI");

                        using (MemoryStream input = new MemoryStream(bytes))
                        {
                            using (MemoryStream output = new MemoryStream())
                            {
                                string    password = Rut;
                                PdfReader reader   = new PdfReader(input);
                                PdfEncryptor.Encrypt(reader, output, true, password, password, PdfWriter.ALLOW_SCREENREADERS);
                                bytes = output.ToArray();
                            }
                        }
                        context.Response.Buffer  = true;
                        context.Response.Charset = "";
                        context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                        context.Response.ContentType = "application/pdf";
                        context.Response.BinaryWrite(bytes);
                        context.Response.Flush();
                        context.Response.End();
                    }
                }
                catch (Exception e)
                {
                }
                finally
                {
                }
            }
            catch (Exception ex)
            {
            }
        }
Exemple #43
0
        public void viaspago(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_EXCEPCION, string P_CLASE_CUENTA, string P_HAS_CME, string P_LAND, string P_PROTESTO, List <ViasPago> P_CONDICIONES)
        {
            ObjDatosViasPago.Clear();
            ViasPagoTransaccion.Clear();
            errormessage = "";
            IRfcTable lt_VIAS_PAGOS;

            VIAS_PAGO VIAS_PAGOS_resp;

            //Conexion a SAP
            connectorSap.idioma    = P_IDIOMA;
            connectorSap.idSistema = P_IDSISTEMA;
            connectorSap.instancia = P_INSTANCIA;
            connectorSap.mandante  = P_MANDANTE;
            connectorSap.paswr     = P_PASSWORD;
            connectorSap.sapRouter = P_SAPROUTER;
            connectorSap.user      = P_UNAME;
            connectorSap.server    = P_SERVER;

            string retval = connectorSap.connectionsSAP();

            //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
            if (string.IsNullOrEmpty(retval))
            {
                RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_GET_MATRIZ_PAGO");
                BapiGetUser.SetValue("EXCEPCION", P_EXCEPCION);
                IRfcTable GralDat = BapiGetUser.GetTable("CONDICIONES");

                for (var i = 0; i < P_CONDICIONES.Count; i++)
                {
                    GralDat.Append();
                    GralDat.SetValue("ACC", P_CONDICIONES[i].Acc);
                    GralDat.SetValue("COND_PAGO", P_CONDICIONES[i].Cond_Pago);
                    GralDat.SetValue("CAJA", P_CONDICIONES[i].Caja);
                }
                BapiGetUser.SetValue("CONDICIONES", GralDat);
                BapiGetUser.SetValue("CLASE_CUENTA", P_CLASE_CUENTA);
                BapiGetUser.SetValue("HAS_CME", P_HAS_CME);
                BapiGetUser.SetValue("LAND", P_LAND);
                BapiGetUser.SetValue("PROT", P_PROTESTO);
                // IRfcStructure GralDat = BapiGetUser.GetStructure("CONDICIONES");


                // BapiGetUser.SetValue("T_GET_DOC", GralDat);


                BapiGetUser.Invoke(SapRfcDestination);



                lt_VIAS_PAGOS = BapiGetUser.GetTable("VIAS_PAGO");
                //lt_PART_ABIERTAS = BapiGetUser.GetTable("ZCLSP_TT_LISTA_DOCUMENTOS");
                if (lt_VIAS_PAGOS.Count > 0)
                {
                    //LLenamos la tabla de salida lt_DatGen
                    for (int i = 0; i < lt_VIAS_PAGOS.RowCount; i++)
                    {
                        lt_VIAS_PAGOS.CurrentIndex = i;
                        VIAS_PAGOS_resp            = new VIAS_PAGO();

                        VIAS_PAGOS_resp.VIA_PAGO    = lt_VIAS_PAGOS[i].GetString("VIA_PAGO");
                        VIAS_PAGOS_resp.DESCRIPCION = lt_VIAS_PAGOS[i].GetString("DESCRIPCION");
                        // VIAS_PAGOS_resp..Add(lt_VIAS_PAGOS[i].GetString("VIA_PAGO"),lt_VIAS_PAGOS[i].GetString("DESCRIPCION"));
//VIAS_PAGOS_resp = new VIAS_PAGO();
                        ObjDatosViasPago.Add(VIAS_PAGOS_resp);
//ViasPagoTransaccion.Add(VIAS_PAGOS_resp.);
                    }
                }
                else
                {
                    // MessageBox.Show("No existen registros");
                }
                GC.Collect();
            }
            else
            {
                errormessage = retval;
                GC.Collect();
            }
        }
Exemple #44
0
        public void pagosmasivos(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_RUT, string P_SOCIEDAD, List <PagosMasivos> ListaExc)
        {
            ObjDatosPartidasOpen.Clear();
            Retorno.Clear();
            errormessage = "";
            protesto     = "";
            IRfcTable     lt_PAGOS_MASIVOS;
            IRfcStructure lt_retorno;

            ESTADO       retorno_resp;
            T_DOCUMENTOS PAGOS_MASIVOS_resp;

            //Conexion a SAP
            connectorSap.idioma    = P_IDIOMA;
            connectorSap.idSistema = P_IDSISTEMA;
            connectorSap.instancia = P_INSTANCIA;
            connectorSap.mandante  = P_MANDANTE;
            connectorSap.paswr     = P_PASSWORD;
            connectorSap.sapRouter = P_SAPROUTER;
            connectorSap.user      = P_UNAME;
            connectorSap.server    = P_SERVER;

            string retval = connectorSap.connectionsSAP();

            //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
            if (string.IsNullOrEmpty(retval))
            {
                RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_GET_DOC_MASI");
                BapiGetUser.SetValue("STCD1", P_RUT);
                BapiGetUser.SetValue("BUKRS", P_SOCIEDAD);



                IRfcTable GralDat = BapiGetUser.GetTable("T_GET_DOC");

                for (var i = 0; i < ListaExc.Count; i++)
                {
                    GralDat.Append();
                    GralDat.SetValue("XBLNR", ListaExc[i].Referencia);
                    GralDat.SetValue("MONTO", ListaExc[i].Monto);
                    GralDat.SetValue("WAERS", ListaExc[i].Moneda);
                }

                BapiGetUser.SetValue("T_GET_DOC", GralDat);


                BapiGetUser.Invoke(SapRfcDestination);


                protesto         = BapiGetUser.GetString("PE_PROTESTADO");
                lt_PAGOS_MASIVOS = BapiGetUser.GetTable("T_DOCUMENTOS");
                lt_retorno       = BapiGetUser.GetStructure("SE_ESTATUS");
                //lt_PART_ABIERTAS = BapiGetUser.GetTable("ZCLSP_TT_LISTA_DOCUMENTOS");
                if (lt_PAGOS_MASIVOS.Count > 0)
                {
                    //LLenamos la tabla de salida lt_DatGen
                    for (int i = 0; i < lt_PAGOS_MASIVOS.RowCount; i++)
                    {
                        lt_PAGOS_MASIVOS.CurrentIndex = i;
                        PAGOS_MASIVOS_resp            = new T_DOCUMENTOS();

                        PAGOS_MASIVOS_resp.SOCIEDAD        = lt_PAGOS_MASIVOS[i].GetString("SOCIEDAD");
                        PAGOS_MASIVOS_resp.NDOCTO          = lt_PAGOS_MASIVOS[i].GetString("NDOCTO");
                        PAGOS_MASIVOS_resp.NREF            = lt_PAGOS_MASIVOS[i].GetString("NREF");
                        PAGOS_MASIVOS_resp.CLASE_CUENTA    = lt_PAGOS_MASIVOS[i].GetString("CLASE_CUENTA");
                        PAGOS_MASIVOS_resp.CLASE_DOC       = lt_PAGOS_MASIVOS[i].GetString("CLASE_DOC");
                        PAGOS_MASIVOS_resp.COD_CLIENTE     = lt_PAGOS_MASIVOS[i].GetString("COD_CLIENTE");
                        PAGOS_MASIVOS_resp.RUTCLI          = lt_PAGOS_MASIVOS[i].GetString("RUTCLI");
                        PAGOS_MASIVOS_resp.NOMCLI          = lt_PAGOS_MASIVOS[i].GetString("NOMCLI");
                        PAGOS_MASIVOS_resp.CEBE            = lt_PAGOS_MASIVOS[i].GetString("CEBE");
                        PAGOS_MASIVOS_resp.FECHA_DOC       = lt_PAGOS_MASIVOS[i].GetString("FECHA_DOC");
                        PAGOS_MASIVOS_resp.FECVENCI        = lt_PAGOS_MASIVOS[i].GetString("FECVENCI");
                        PAGOS_MASIVOS_resp.DIAS_ATRASO     = lt_PAGOS_MASIVOS[i].GetString("DIAS_ATRASO");
                        PAGOS_MASIVOS_resp.ESTADO          = lt_PAGOS_MASIVOS[i].GetString("ESTADO");
                        PAGOS_MASIVOS_resp.ICONO           = lt_PAGOS_MASIVOS[i].GetString("ICONO");
                        PAGOS_MASIVOS_resp.MONEDA          = lt_PAGOS_MASIVOS[i].GetString("MONEDA");
                        PAGOS_MASIVOS_resp.ACC             = lt_PAGOS_MASIVOS[i].GetString("ACC");
                        PAGOS_MASIVOS_resp.CLASE_CUENTA    = lt_PAGOS_MASIVOS[i].GetString("CLASE_CUENTA");
                        PAGOS_MASIVOS_resp.CLASE_DOC       = lt_PAGOS_MASIVOS[i].GetString("CLASE_DOC");
                        PAGOS_MASIVOS_resp.CME             = lt_PAGOS_MASIVOS[i].GetString("CME");
                        PAGOS_MASIVOS_resp.CONTROL_CREDITO = lt_PAGOS_MASIVOS[i].GetString("CONTROL_CREDITO");
                        //string.Format("{0:0.##}", lvatend)
                        //decimal lvNetoAbo2 = Convert.ToDecimal(t_REPORTE_CONTACTOS[i].GetString("NETO_ABONO2"));
                        //REPORTE_CONTACTOS_resp.NETO_ABONO2 = string.Format("{0:#,0}", lvNetoAbo2);
                        if (lt_PAGOS_MASIVOS[i].GetString("MONTOF") == "")
                        {
                            PAGOS_MASIVOS_resp.MONTOF = "0";
                        }
                        else
                        {
                            decimal Cualquiernombre = Convert.ToDecimal(lt_PAGOS_MASIVOS[i].GetString("MONTOF"));
                            // PAGOS_MASIVOS_resp.MONTOF = lt_PAGOS_MASIVOS[i].GetString("MONTOF");
                            PAGOS_MASIVOS_resp.MONTOF = string.Format("{0:0.##}", Cualquiernombre);
                        }
                        if (lt_PAGOS_MASIVOS[i].GetString("MONTO") == "")
                        {
                            PAGOS_MASIVOS_resp.MONTO = "0";
                        }
                        else
                        {
                            decimal Cualquiernombre = Convert.ToDecimal(lt_PAGOS_MASIVOS[i].GetString("MONTO"));
                            // PAGOS_MASIVOS_resp.MONTOF = lt_PAGOS_MASIVOS[i].GetString("MONTOF");
                            PAGOS_MASIVOS_resp.MONTO = string.Format("{0:0.##}", Cualquiernombre);
                        }
                        if (lt_PAGOS_MASIVOS[i].GetString("MONTOF_ABON") == "")
                        {
                            PAGOS_MASIVOS_resp.MONTOF_ABON = "0";
                        }
                        else
                        {
                            decimal Cualquiernombre = Convert.ToDecimal(lt_PAGOS_MASIVOS[i].GetString("MONTOF_ABON"));
                            PAGOS_MASIVOS_resp.MONTOF_ABON = string.Format("{0:0.##}", Cualquiernombre);
                        }
                        if (lt_PAGOS_MASIVOS[i].GetString("MONTOF_PAGAR") == "")
                        {
                            PAGOS_MASIVOS_resp.MONTOF_PAGAR = "0";
                        }
                        else
                        {
                            // PAGOS_MASIVOS_resp.MONTOF_ABON = lt_PAGOS_MASIVOS[i].GetString("MONTOF_ABON");
                            decimal Cualquiernombre = Convert.ToDecimal(lt_PAGOS_MASIVOS[i].GetString("MONTOF_PAGAR"));
                            PAGOS_MASIVOS_resp.MONTOF_PAGAR = string.Format("{0:0.##}", Cualquiernombre);
                        }
                        // PAGOS_MASIVOS_resp.MONTOF_PAGAR = lt_PAGOS_MASIVOS[i].GetString("MONTOF_PAGAR");


                        ObjDatosPartidasOpen.Add(PAGOS_MASIVOS_resp);
                    }
                }
                else
                {
                    MessageBox.Show("No existen registros para este número de RUT");
                }

                String Mensaje = "";
                if (lt_retorno.Count > 0)
                {
                    retorno_resp = new ESTADO();
                    for (int i = 0; i < lt_retorno.Count(); i++)
                    {
                        // lt_retorno.CurrentIndex = i;

                        retorno_resp.TYPE       = lt_retorno.GetString("TYPE");
                        retorno_resp.ID         = lt_retorno.GetString("ID");
                        retorno_resp.NUMBER     = lt_retorno.GetString("NUMBER");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.LOG_NO     = lt_retorno.GetString("LOG_NO");
                        retorno_resp.LOG_MSG_NO = lt_retorno.GetString("LOG_MSG_NO");
                        retorno_resp.MESSAGE    = lt_retorno.GetString("MESSAGE");
                        retorno_resp.MESSAGE_V1 = lt_retorno.GetString("MESSAGE_V1");
                        if (i == 0)
                        {
                            Mensaje = Mensaje + " - " + lt_retorno.GetString("MESSAGE") + " - " + lt_retorno.GetString("MESSAGE_V1");
                        }
                        retorno_resp.MESSAGE_V2 = lt_retorno.GetString("MESSAGE_V2");
                        retorno_resp.MESSAGE_V3 = lt_retorno.GetString("MESSAGE_V3");
                        retorno_resp.MESSAGE_V4 = lt_retorno.GetString("MESSAGE_V4");
                        retorno_resp.PARAMETER  = lt_retorno.GetString("PARAMETER");
                        retorno_resp.ROW        = lt_retorno.GetString("ROW");
                        retorno_resp.FIELD      = lt_retorno.GetString("FIELD");
                        retorno_resp.SYSTEM     = lt_retorno.GetString("SYSTEM");
                        Retorno.Add(retorno_resp);
                    }
                    System.Windows.MessageBox.Show(Mensaje);
                }
                GC.Collect();
            }
            else
            {
                errormessage = retval;
                GC.Collect();
            }
        }
Exemple #45
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);
            }
Exemple #46
0
        public void precierrecaja(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_ID_CAJA, string P_USUARIO
                                  , string P_PAIS, string P_ID_APERTURA, string P_ID_CIERRE, string P_SOCIEDAD, string P_ID_REPORT, string P_DATUMDESDE, string P_DATUMHASTA)
        {
            try
            {
                RETORNO      retorno;
                CAB_ARQUEO   cabarqueo;
                RESUMEN_VP   resumenvp;
                DET_ARQUEO   detarqueo;
                DETALLE_REND detallerend;
                T_Retorno.Clear();
                det_arqueo.Clear();
                detalle_rend.Clear();
                cab_arqueo.Clear();
                resumen_viapago.Clear();
                errormessage     = "";
                message          = "";
                diferencia       = "";
                id_arqueo        = "";
                MontoIngresos    = 0;
                MontoEfect       = 0;
                MontoChqDia      = 0;
                MontoChqFech     = 0;
                MontoTransf      = 0;
                MontoValeV       = 0;
                MontoDepot       = 0;
                MontoTarj        = 0;
                MontoFinanc      = 0;
                MontoApp         = 0;
                MontoCredit      = 0;
                MontoEgresos     = 0;
                MontoFondosFijos = 0;
                SaldoTotal       = 0;
                id_arqueo        = "";
                idcajaout        = "";
                cajerorespout    = "";
                sucursal         = "";
                nomcaja          = "";
                sociedadout      = "";
                landout          = "";
                IRfcStructure ls_RETORNO;
                IRfcTable     lt_DETALLE_REND;
                IRfcTable     lt_RESUMEN_VP;
                IRfcTable     lt_CAB_ARQUEO;
                IRfcTable     lt_DET_ARQUEO;


                //Conexion a SAP
                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();
                //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_REP_CAJA");

                    BapiGetUser.SetValue("LAND", P_PAIS);
                    BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA);
                    BapiGetUser.SetValue("USUARIO", P_USUARIO);
                    BapiGetUser.SetValue("ID_CIERRE", P_ID_CIERRE);
                    BapiGetUser.SetValue("ID_APERTURA", P_ID_APERTURA);
                    BapiGetUser.SetValue("SOCIEDAD", P_SOCIEDAD);
                    //BapiGetUser.SetValue("IND_ARQUEO", P_IND_ARQUEO);
                    BapiGetUser.SetValue("ID_REPORT", P_ID_REPORT);
                    BapiGetUser.SetValue("DATE_ARQ_FROM", Convert.ToDateTime(P_DATUMDESDE));
                    BapiGetUser.SetValue("DATE_ARQ_TO", Convert.ToDateTime(P_DATUMHASTA));



                    BapiGetUser.Invoke(SapRfcDestination);

                    idcajaout     = BapiGetUser.GetString("ID_CAJA_OUT");
                    cajerorespout = BapiGetUser.GetString("CAJERO_RESP_OUT");
                    sucursal      = BapiGetUser.GetString("SUCURSAL");
                    nomcaja       = BapiGetUser.GetString("NOM_CAJA");
                    sociedadout   = BapiGetUser.GetString("SOCIEDAD_OUT");
                    landout       = BapiGetUser.GetString("LAND_OUT");


                    lt_DETALLE_REND = BapiGetUser.GetTable("DETALLE_REND");
                    try
                    {
                        for (int i = 0; i < lt_DETALLE_REND.Count(); i++)
                        {
                            lt_DETALLE_REND.CurrentIndex = i;
                            detallerend              = new DETALLE_REND();
                            detallerend.N_VENTA      = lt_DETALLE_REND.GetString("N_VENTA");
                            detallerend.FEC_EMI      = lt_DETALLE_REND.GetString("FEC_EMI");
                            detallerend.FEC_VENC     = lt_DETALLE_REND.GetString("FEC_VENC");
                            detallerend.MONTO        = lt_DETALLE_REND.GetString("MONTO");
                            detallerend.NAME1        = lt_DETALLE_REND.GetString("NAME1");
                            detallerend.MONTO_EFEC   = lt_DETALLE_REND.GetString("MONTO_EFEC");
                            MontoEfect               = MontoEfect + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_EFEC"));
                            detallerend.NUM_CHEQUE   = lt_DETALLE_REND.GetString("NUM_CHEQUE");
                            detallerend.MONTO_DIA    = lt_DETALLE_REND.GetString("MONTO_DIA");
                            MontoChqDia              = MontoChqDia + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_DIA"));
                            detallerend.MONTO_FECHA  = lt_DETALLE_REND.GetString("MONTO_FECHA");
                            MontoChqFech             = MontoChqFech + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_FECHA"));
                            detallerend.MONTO_TRANSF = lt_DETALLE_REND.GetString("MONTO_TRANSF");
                            MontoTransf              = MontoTransf + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_TRANSF"));
                            detallerend.MONTO_VALE_V = lt_DETALLE_REND.GetString("MONTO_VALE_V");
                            MontoValeV               = MontoValeV + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_VALE_V"));
                            detallerend.MONTO_DEP    = lt_DETALLE_REND.GetString("MONTO_DEP");
                            MontoDepot               = MontoDepot + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_DEP"));
                            detallerend.MONTO_TARJ   = lt_DETALLE_REND.GetString("MONTO_TARJ");
                            MontoTarj = MontoTarj + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_TARJ"));
                            detallerend.MONTO_FINANC = lt_DETALLE_REND.GetString("MONTO_FINANC");
                            MontoFinanc           = MontoFinanc + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_FINANC"));
                            detallerend.MONTO_APP = lt_DETALLE_REND.GetString("MONTO_APP");
                            MontoApp = MontoApp + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_APP"));
                            detallerend.MONTO_CREDITO = lt_DETALLE_REND.GetString("MONTO_CREDITO");
                            MontoCredit               = MontoCredit + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_CREDITO"));
                            detallerend.PATENTE       = lt_DETALLE_REND.GetString("PATENTE");
                            detallerend.MONTO_C_CURSE = lt_DETALLE_REND.GetString("MONTO_C_CURSE");
                            MontoCCurse               = MontoCCurse + Convert.ToDouble(lt_DETALLE_REND.GetString("MONTO_C_CURSE"));
                            detallerend.DOC_SAP       = lt_DETALLE_REND.GetString("DOC_SAP");
                            detalle_rend.Add(detallerend);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    MontoIngresos = MontoIngresos + MontoEfect + MontoChqDia + MontoChqFech + MontoTransf + MontoValeV +
                                    MontoDepot + MontoTarj + MontoFinanc + MontoApp + MontoCredit + MontoCCurse;
                    SaldoTotal = MontoIngresos - MontoEgresos;


                    lt_RESUMEN_VP = BapiGetUser.GetTable("RESUMEN_VP");
                    try
                    {
                        for (int i = 0; i < lt_RESUMEN_VP.Count(); i++)
                        {
                            lt_RESUMEN_VP.CurrentIndex = i;
                            resumenvp              = new RESUMEN_VP();
                            resumenvp.LAND         = lt_RESUMEN_VP.GetString("LAND");
                            resumenvp.ID_CAJA      = lt_RESUMEN_VP.GetString("ID_CAJA");
                            resumenvp.SOCIEDAD     = lt_RESUMEN_VP.GetString("SOCIEDAD");
                            resumenvp.SOCIEDAD_TXT = lt_RESUMEN_VP.GetString("SOCIEDAD_TXT");
                            resumenvp.VIA_PAGO     = lt_RESUMEN_VP.GetString("VIA_PAGO");
                            resumenvp.TEXT1        = lt_RESUMEN_VP.GetString("TEXT1");
                            resumenvp.MONEDA       = lt_RESUMEN_VP.GetString("MONEDA");
                            resumenvp.MONTO        = lt_RESUMEN_VP.GetString("MONTO");
                            resumenvp.CANT_DOCS    = lt_RESUMEN_VP.GetString("CANT_DOCS");
                            resumen_viapago.Add(resumenvp);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    lt_CAB_ARQUEO = BapiGetUser.GetTable("CAB_ARQUEO");
                    try
                    {
                        for (int i = 0; i < lt_CAB_ARQUEO.Count(); i++)
                        {
                            lt_CAB_ARQUEO.CurrentIndex = i;
                            cabarqueo                = new CAB_ARQUEO();
                            cabarqueo.MANDT          = lt_CAB_ARQUEO.GetString("MANDT");
                            cabarqueo.LAND           = lt_CAB_ARQUEO.GetString("LAND");
                            cabarqueo.ID_ARQUEO      = lt_CAB_ARQUEO.GetString("ID_ARQUEO");
                            cabarqueo.ID_REGISTRO    = lt_CAB_ARQUEO.GetString("ID_DENOMINACION");
                            cabarqueo.ID_CAJA        = lt_CAB_ARQUEO.GetString("CANTIDAD");
                            cabarqueo.MONTO_CIERRE   = lt_CAB_ARQUEO.GetString("MONTO_TOTAL");
                            cabarqueo.MONTO_DIF      = lt_CAB_ARQUEO.GetString("ID_DENOMINACION");
                            cabarqueo.COMENTARIO_DIF = lt_CAB_ARQUEO.GetString("CANTIDAD");
                            cabarqueo.NULO           = lt_CAB_ARQUEO.GetString("MONTO_TOTAL");
                            cab_arqueo.Add(cabarqueo);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    lt_DET_ARQUEO = BapiGetUser.GetTable("DET_ARQUEO");
                    try
                    {
                        for (int i = 0; i < lt_DET_ARQUEO.Count(); i++)
                        {
                            lt_DET_ARQUEO.CurrentIndex = i;
                            detarqueo                 = new DET_ARQUEO();
                            detarqueo.MANDT           = lt_DET_ARQUEO.GetString("MANDT");
                            detarqueo.LAND            = lt_DET_ARQUEO.GetString("LAND");
                            detarqueo.ID_ARQUEO       = lt_DET_ARQUEO.GetString("ID_ARQUEO");
                            detarqueo.ID_DENOMINACION = lt_DET_ARQUEO.GetString("ID_DENOMINACION");
                            detarqueo.CANTIDAD        = lt_DET_ARQUEO.GetString("CANTIDAD");
                            detarqueo.MONTO_TOTAL     = lt_DET_ARQUEO.GetString("MONTO_TOTAL");
                            det_arqueo.Add(detarqueo);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }

                    //lt_INFO_SOC = BapiGetUser.GetTable("INFO_SOC");
                    //try {

                    //    for (int i = 0; i < lt_INFO_SOC.Count(); i++)
                    //    {
                    //        lt_INFO_SOC.CurrentIndex = i;
                    //        infosociedad = new INFO_SOC2();
                    //        infosociedad.BUKRS = lt_INFO_SOC.GetString("BUKRS");
                    //        infosociedad.BUTXT = lt_INFO_SOC.GetString("BUTXT");
                    //        infosociedad.STCD1 = lt_INFO_SOC.GetString("STCD1");
                    //        info_soc(infosociedad);
                    //    }
                    //}
                    //catch(Exception ex)
                    //{
                    //    Console.WriteLine(ex.Message, ex.StackTrace);
                    //    MessageBox.Show(ex.Message + ex.StackTrace);
                    //}

                    ls_RETORNO = BapiGetUser.GetStructure("RETORNO");
                    try
                    {
                        for (int i = 0; i < ls_RETORNO.Count(); i++)
                        {
                            //ls_RETORNO.CurrentIndex = i;
                            retorno = new RETORNO();
                            if (ls_RETORNO.GetString("TYPE") == "S")
                            {
                                message = message + " - " + ls_RETORNO.GetString("MESSAGE");
                            }
                            if (ls_RETORNO.GetString("TYPE") == "E")
                            {
                                errormessage = errormessage + " - " + ls_RETORNO.GetString("MESSAGE");
                            }
                            retorno.TYPE       = ls_RETORNO.GetString("TYPE");
                            retorno.ID         = ls_RETORNO.GetString("ID");
                            retorno.NUMBER     = ls_RETORNO.GetString("NUMBER");
                            retorno.MESSAGE    = ls_RETORNO.GetString("MESSAGE");
                            retorno.LOG_NO     = ls_RETORNO.GetString("LOG_NO");
                            retorno.LOG_MSG_NO = ls_RETORNO.GetString("LOG_MSG_NO");
                            retorno.MESSAGE_V1 = ls_RETORNO.GetString("MESSAGE_V1");
                            retorno.MESSAGE_V2 = ls_RETORNO.GetString("MESSAGE_V2");
                            retorno.MESSAGE_V3 = ls_RETORNO.GetString("MESSAGE_V3");
                            if (ls_RETORNO.GetString("MESSAGE_V4") != "")
                            {
                                // comprobante = ls_RETORNO.GetString("MESSAGE_V4");
                            }
                            retorno.MESSAGE_V4 = ls_RETORNO.GetString("MESSAGE_V4");
                            retorno.PARAMETER  = ls_RETORNO.GetString("PARAMETER");
                            retorno.ROW        = ls_RETORNO.GetString("ROW");
                            retorno.FIELD      = ls_RETORNO.GetString("FIELD");
                            retorno.SYSTEM     = ls_RETORNO.GetString("SYSTEM");
                            T_Retorno.Add(retorno);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                }
                else
                {
                    errormessage = retval;
                    MessageBox.Show("No se pudo conectar a la RFC");
                }
                GC.Collect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message, ex.StackTrace);
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
Exemple #47
0
            // 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;
                }
            }
Exemple #48
0
        /// <summary>
        /// Creates links between document and employees in SAP.
        /// </summary>
        /// <param name="env"></param>
        /// <param name="documentType"></param>
        /// <param name="newSAPObjects"></param>
        private void createLinks(StateEnvironment env, string documentType, string SAPObjectType, IEnumerable <string> newSAPObjects, SAPDataSource source)
        {
            foreach (string employeeID in newSAPObjects)
            {
                // Generate and set SAP properties
                string documentID = GUIDToDocumentID(env);
                env.ObjVerEx.Properties.SetProperty(DocumentIDProperty, MFDataType.MFDatatypeText, documentID);

                // Set properties required by SAP
                env.ObjVerEx.Properties.SetProperty(ComponentPropertiesProperty, MFDataType.MFDatatypeMultiLineText,
                                                    "ComponentID=data|ContentType=application/pdf|FileID=" + GetFileID(env) +
                                                    "|Filename=data.pdf|ADate=" + GetSAPDateFromTS(env.ObjVerEx.GetProperty(20).Value.GetValueAsTimestamp().UtcToLocalTime()) +
                                                    "|ATime=" + GetSAPTimeFromTS(env.ObjVerEx.GetProperty(20).Value.GetValueAsTimestamp().UtcToLocalTime()) +
                                                    "|MDate=" + GetSAPDateFromTS(env.ObjVerEx.GetProperty(21).Value.GetValueAsTimestamp().UtcToLocalTime()) +
                                                    "|MTime=" + GetSAPTimeFromTS(env.ObjVerEx.GetProperty(21).Value.GetValueAsTimestamp().UtcToLocalTime()) +
                                                    "|AppVer=|Charset=");
                env.ObjVerEx.SetProperty(DocumentProtectionProperty, MFDataType.MFDatatypeText, "rud");
                env.ObjVerEx.SetProperty(ArchiveLinkVersionProperty, MFDataType.MFDatatypeText, "0046");

                // Save properties
                env.ObjVerEx.SaveProperties();

                // Get SAP repository
                if (env.ObjVerEx.Properties.GetProperty(ContentRepositoryProperty) == null)
                {
                    throw new Exception("No SAP repository defined.");
                }
                string repository = env.ObjVerEx.Properties.GetProperty(ContentRepositoryProperty).GetValueAsUnlocalizedText();

                // Get filename
                string fileName = env.ObjVerEx.Title;

                // Get description
                string        description = "";
                PropertyValue descProp;
                if (env.ObjVerEx.Properties.TryGetProperty(DocumentDescriptionProperty, out descProp))
                {
                    description = descProp.GetValueAsLocalizedText();
                }

                // Do the link with RFC function
                IRfcFunction rfcFunction = SAPHelper.CreateFunction("ARCHIV_CONNECTION_INSERT", source.getDestination());
                rfcFunction.SetValue("ARCHIV_ID", repository);
                rfcFunction.SetValue("AR_OBJECT", documentType);
                rfcFunction.SetValue("SAP_OBJECT", SAPObjectType);
                rfcFunction.SetValue("ARC_DOC_ID", documentID);
                rfcFunction.SetValue("OBJECT_ID", employeeID);

                // Is the file info in use
                if (config.UseFileInfo == "true")
                {
                    rfcFunction.SetValue("FILENAME", fileName);
                    rfcFunction.SetValue("DESCR", description);
                    rfcFunction.SetValue("CREATOR", employeeID);
                }

                //
                try
                {
                    string result  = SAPHelper.InvokeRFC(rfcFunction, source.getDestination());
                    string message = "Linked document: " + documentID + ", type: " + documentType + "\n" +
                                     "with SAP object: " + employeeID + ", type: " + SAPObjectType + "\n" +
                                     "Filename: " + fileName + ", Description: " + description + "\n" +
                                     result;
                    SysUtils.ReportInfoToEventLog(message);
                }
                catch (Exception ex)
                {
                    // Show failed FRC call in Event viewer.
                    StringBuilder message = new StringBuilder()
                                            .AppendLine("ARCHIV_CONNECTION_INSERT")
                                            .AppendFormat(" - ARCHIV_ID: '{0}'", repository).AppendLine()
                                            .AppendFormat(" - AR_OBJECT: '{0}'", documentType).AppendLine()
                                            .AppendFormat(" - SAP_OBJECT: '{0}'", SAPObjectType).AppendLine()
                                            .AppendFormat(" - ARC_DOC_ID: '{0}'", documentID).AppendLine()
                                            .AppendFormat(" - OBJECT_ID: '{0}'", employeeID).AppendLine();
                    if (config.UseFileInfo == "true")
                    {
                        message
                        .AppendFormat(" - FILENAME: '{0}'", fileName).AppendLine()
                        .AppendFormat(" - DESCR: '{0}'", description).AppendLine()
                        .AppendFormat(" - CREATOR: '{0}'", employeeID).AppendLine();
                    }
                    message.AppendLine().AppendLine(ex.Message);
                    SysUtils.ReportErrorToEventLog("SAPDocumentConnector", message.ToString(), ex);

                    throw new RfcInvalidParameterException(ex.Message);
                }
            }
        }
Exemple #49
0
            // SD03 - Inteface de materiais - Comunicação
            // funcao - ZFXI_SD03C
            //[RfcServerFunction(Name = "ZFXI_SD03C")]
            public static void StfcInterfaceMaterial(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 Repositório dos dados
                MaterialRepository materialRepository = new MaterialRepository();
                Material material = new Material();

                IRfcTable it_material = function.GetTable("IT_MATERIAL");

                // Implementa Repositorio Rfc de resposta
                RfcRepository rep = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno = bapiret2.CreateStructure();

                // Se estiver espaco em branco na variavel, não limpa a tabela da interface.
                if (deletar != ' ')
                {
                    int count = 0;
                    // Apaga todos os registros da tabela pro_fornecedor
                    IList<Material> fromDB = materialRepository.ObterTodos();
                    foreach (Material dados in fromDB)
                    {
                        count = count + 1;
                        if (count == 1)
                        {
                            foreach (IRfcStructure row in it_material)
                            {
                                dados.Pacote = row.GetString("PACOTE");
                                dados.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                                dados.Hora_criacao = row.GetString("ERZET");
                                break;
                            }
                        }
                        dados.Eliminacao = "X";
                        materialRepository.Alterar(dados);
                    }
                }

                int v_cont = 0;
                foreach (IRfcStructure row in it_material)
                {
                    material.Id_material = row.GetString("MATNR");
                    material.Descricao = row.GetString("MAKTX");
                    material.Id_centro = row.GetString("WERKS");
                    material.Tip_mat = row.GetString("MTART");
                    material.Status_mat = row.GetString("MSTAE");
                    material.Uni_med = row.GetString("MEINS");
                    material.Status_mat = row.GetString("MSTAE");
                    material.Pacote = row.GetString("PACOTE");
                    material.Data_criacao = Convert.ToDateTime(row.GetString("ERDAT"));
                    material.Hora_criacao = row.GetString("ERZET");
                    material.Eliminacao = row.GetString("LVORM");

                    v_cont = v_cont + 1;
                    try
                    {
                        IList<Material> fromDB = materialRepository.ObterRegistrosDoisCampos("Id_material", material.Id_material, "Id_centro", material.Id_centro);
                        if (fromDB.Count == 0)
                        {
                            materialRepository.Salvar(material);
                        }
                        else
                        {
                            foreach (Material dados in fromDB)
                            {
                                material.pro_id_material = dados.pro_id_material;
                            }
                            materialRepository.Alterar(material);
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro e a descricao do material
                        Console.Write("Erro ao inserir o Material, Mensagem: ");
                        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 Material: " + material.Descricao);
                        retorno.Insert(linha_retorno);
                    }
                }
                IRfcTable retornoSucesso = function.GetTable("IT_RETURN");
                linha_retorno.SetValue("TYPE", "S");
                linha_retorno.SetValue("MESSAGE", "Registros com Sucesso Material: " + v_cont);
                retornoSucesso.Insert(linha_retorno);
            }
        public void emitirnotasdecredito(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE
                                         , string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string P_ID_CAJA, string P_MONEDA, string P_PAIS
                                         , List <T_DOCUMENTOS> P_DOCSAPAGAR, string P_CHKTRIB)
        {
            try
            {
                RETURN2 retorno;

                T_DOCUMENTOS docs;

                //DETALLE_REND detallerend;
                T_Retorno.Clear();
                documentos.Clear();
                errormessage = "";
                message      = "";
                IdCaja       = "";
                Efectivo     = "0";

                IRfcTable ls_RETORNO;
                IRfcTable lt_DOCS;

                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();

                //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_REC_Y_FAC_NC");

                    BapiGetUser.SetValue("ID_CAJA", P_ID_CAJA);
                    BapiGetUser.SetValue("PAY_CURRENCY", P_MONEDA);
                    BapiGetUser.SetValue("LAND", P_PAIS);
                    IRfcTable GralDat2 = BapiGetUser.GetTable("DOCUMENTOS");
                    try
                    {
                        for (var i = 0; i < P_DOCSAPAGAR.Count; i++)
                        {
                            GralDat2.Append();
                            GralDat2.SetValue("NDOCTO", P_DOCSAPAGAR[i].NDOCTO);
                            GralDat2.SetValue("MONTO", P_DOCSAPAGAR[i].MONTO);
                            GralDat2.SetValue("MONTOF", P_DOCSAPAGAR[i].MONTOF);
                            GralDat2.SetValue("MONEDA", P_DOCSAPAGAR[i].MONEDA);
                            GralDat2.SetValue("LAND", P_DOCSAPAGAR[i].LAND);
                            GralDat2.SetValue("FECVENCI", P_DOCSAPAGAR[i].FECVENCI);
                            GralDat2.SetValue("CONTROL_CREDITO", P_DOCSAPAGAR[i].CONTROL_CREDITO);
                            GralDat2.SetValue("CEBE", P_DOCSAPAGAR[i].CEBE);
                            GralDat2.SetValue("COND_PAGO", P_DOCSAPAGAR[i].COND_PAGO);
                            GralDat2.SetValue("RUTCLI", P_DOCSAPAGAR[i].RUTCLI);
                            GralDat2.SetValue("NOMCLI", P_DOCSAPAGAR[i].NOMCLI);
                            GralDat2.SetValue("ESTADO", P_DOCSAPAGAR[i].ESTADO);
                            GralDat2.SetValue("ICONO", P_CHKTRIB);
                            GralDat2.SetValue("DIAS_ATRASO", P_DOCSAPAGAR[i].DIAS_ATRASO);
                            string MontoAux = "";
                            MontoAux = P_DOCSAPAGAR[i].MONTO_ABONADO;
                            MontoAux = MontoAux.Replace(",", "");
                            MontoAux = MontoAux.Replace(".", "");
                            GralDat2.SetValue("MONTO_ABONADO", MontoAux);
                            MontoAux = P_DOCSAPAGAR[i].MONTOF_ABON;
                            MontoAux = MontoAux.Replace(",", "");
                            MontoAux = MontoAux.Replace(".", "");
                            GralDat2.SetValue("MONTOF_ABON", MontoAux);
                            MontoAux = P_DOCSAPAGAR[i].MONTO_PAGAR;
                            MontoAux = MontoAux.Replace(",", "");
                            MontoAux = MontoAux.Replace(".", "");
                            GralDat2.SetValue("MONTO_PAGAR", MontoAux);
                            MontoAux = P_DOCSAPAGAR[i].MONTOF_PAGAR;
                            MontoAux = MontoAux.Replace(",", "");
                            MontoAux = MontoAux.Replace(".", "");
                            GralDat2.SetValue("MONTOF_PAGAR", MontoAux);
                            GralDat2.SetValue("NREF", P_DOCSAPAGAR[i].NREF);
                            GralDat2.SetValue("FECHA_DOC", P_DOCSAPAGAR[i].FECHA_DOC);
                            GralDat2.SetValue("COD_CLIENTE", P_DOCSAPAGAR[i].COD_CLIENTE);
                            GralDat2.SetValue("SOCIEDAD", P_DOCSAPAGAR[i].SOCIEDAD);
                            GralDat2.SetValue("CLASE_DOC", P_DOCSAPAGAR[i].CLASE_DOC);
                            GralDat2.SetValue("CLASE_CUENTA", P_DOCSAPAGAR[i].CLASE_CUENTA);
                            GralDat2.SetValue("CME", P_DOCSAPAGAR[i].CME);
                            GralDat2.SetValue("ACC", P_DOCSAPAGAR[i].ACC);
                            GralDat2.SetValue("FACT_SD_ORIGEN", P_DOCSAPAGAR[i].FACT_SD_ORIGEN);
                            GralDat2.SetValue("FACT_ELECT", P_DOCSAPAGAR[i].FACT_ELECT);
                            GralDat2.SetValue("ID_COMPROBANTE", P_DOCSAPAGAR[i].ID_COMPROBANTE);
                            GralDat2.SetValue("ID_CAJA", P_DOCSAPAGAR[i].ID_CAJA);
                            GralDat2.SetValue("LAND", P_DOCSAPAGAR[i].LAND);
                            GralDat2.SetValue("BAPI", P_DOCSAPAGAR[i].BAPI);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message + ex.StackTrace);
                        //System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                    BapiGetUser.SetValue("DOCUMENTOS", GralDat2);


                    BapiGetUser.Invoke(SapRfcDestination);
                    //BapiGetUser.SetValue("I_VBELN",P_NUMDOCSD);
                    //IRfcTable GralDat = BapiGetUser.GetTable("VIAS_PAGO");
                    lt_DOCS = BapiGetUser.GetTable("DOCUMENTOS");

                    if (lt_DOCS.Count > 0)
                    {
                        //LLenamos la tabla de salida lt_DatGen
                        for (int i = 0; i < lt_DOCS.RowCount; i++)
                        {
                            try
                            {
                                lt_DOCS.CurrentIndex = i;
                                docs = new T_DOCUMENTOS();

                                docs.NDOCTO = lt_DOCS[i].GetString("NDOCTO");
                                string Monto  = "";
                                int    indice = 0;
                                //*******
                                if (lt_DOCS[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_DOCS[i].GetString("MONTOF").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux = 0;
                                    if ((Valor == "00") | (Valor == "0"))
                                    {
                                        ValorAux = Convert.ToDecimal(Valor);
                                    }
                                    else
                                    {
                                        ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2));
                                    }
                                    string Cualquiernombre = string.Format("{0:0,0}", ValorAux);
                                    docs.MONTOF = Cualquiernombre;
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_DOCS[i].GetString("MONTOF"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    docs.MONTOF = string.Format("{0:0,0.##}", ValorAux);
                                }
                                //if (lt_DOCS[i].GetString("MONTOF") == "")
                                //{
                                //    indice = lt_DOCS[i].GetString("MONTO").IndexOf(',');
                                //    Monto = lt_DOCS[i].GetString("MONTO").Substring(0, indice - 1);
                                //    docs.MONTOF = Monto;
                                //}
                                //else
                                //{
                                //    docs.MONTOF = lt_DOCS[i].GetString("MONTOF");
                                //}
                                if (lt_DOCS[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_DOCS[i].GetString("MONTO").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux = Convert.ToDecimal(Valor);
                                    if ((Valor == "00") | (Valor == "0"))
                                    {
                                        ValorAux = Convert.ToDecimal(Valor);
                                    }
                                    else
                                    {
                                        ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2));
                                    }
                                    docs.MONTO = string.Format("{0:0,0}", ValorAux);
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_DOCS[i].GetString("MONTO"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    docs.MONTO = string.Format("{0:0,0.##}", ValorAux);
                                }
                                //if (lt_DOCS[i].GetString("MONTO") == "")
                                //{
                                //    indice = lt_DOCS[i].GetString("MONTO").IndexOf(',');
                                //    Monto = lt_DOCS[i].GetString("MONTO").Substring(0, indice - 1);
                                //    docs.MONTO = Monto;
                                //}
                                //else
                                //{
                                //    docs.MONTO = lt_DOCS[i].GetString("MONTO");
                                //}

                                docs.MONEDA          = lt_DOCS[i].GetString("MONEDA");
                                docs.FECVENCI        = lt_DOCS[i].GetString("FECVENCI");
                                docs.CONTROL_CREDITO = lt_DOCS[i].GetString("CONTROL_CREDITO");
                                docs.CEBE            = lt_DOCS[i].GetString("CEBE");
                                docs.COND_PAGO       = lt_DOCS[i].GetString("COND_PAGO");
                                docs.RUTCLI          = lt_DOCS[i].GetString("RUTCLI");
                                docs.NOMCLI          = lt_DOCS[i].GetString("NOMCLI");
                                docs.ESTADO          = lt_DOCS[i].GetString("ESTADO");
                                docs.ICONO           = lt_DOCS[i].GetString("ICONO");
                                docs.DIAS_ATRASO     = lt_DOCS[i].GetString("DIAS_ATRASO");
                                if (lt_DOCS[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_DOCS[i].GetString("MONTOF_ABON").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux;
                                    if ((Valor == "00") | (Valor == "0"))
                                    {
                                        ValorAux = Convert.ToDecimal(Valor);
                                    }
                                    else
                                    {
                                        ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2));
                                    }
                                    docs.MONTOF_ABON = string.Format("{0:0,0}", ValorAux);
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_DOCS[i].GetString("MONTOF_ABON"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    docs.MONTOF_ABON = string.Format("{0:0,0.##}", ValorAux);
                                }
                                //if (lt_DOCS[i].GetString("MONTOF_ABON") == "")
                                //{
                                //    indice = lt_DOCS[i].GetString("MONTO_ABONADO").IndexOf(',');
                                //    Monto = lt_DOCS[i].GetString("MONTO_ABONADO").Substring(0, indice - 1);
                                //    docs.MONTOF = Monto;
                                //}
                                //else
                                //{
                                //    docs.MONTOF_ABON = lt_DOCS[i].GetString("MONTOF_ABON");
                                //}
                                if (lt_DOCS[i].GetString("MONEDA") == "CLP")
                                {
                                    string Valor = lt_DOCS[i].GetString("MONTOF_PAGAR").Trim();
                                    if (Valor.Contains("-"))
                                    {
                                        Valor = "-" + Valor.Replace("-", "");
                                    }
                                    Valor = Valor.Replace(".", "");
                                    Valor = Valor.Replace(",", "");
                                    decimal ValorAux = Convert.ToDecimal(Valor);
                                    if ((Valor == "00") | (Valor == "0"))
                                    {
                                        ValorAux = Convert.ToDecimal(Valor);
                                    }
                                    else
                                    {
                                        ValorAux = Convert.ToDecimal(Valor.Substring(0, Valor.Length - 2));
                                    }
                                    docs.MONTOF_PAGAR = string.Format("{0:0,0}", ValorAux);
                                }
                                else
                                {
                                    string  moneda   = Convert.ToString(lt_DOCS[i].GetString("MONTOF_PAGAR"));
                                    decimal ValorAux = Convert.ToDecimal(moneda);
                                    docs.MONTOF_PAGAR = string.Format("{0:0,0.##}", ValorAux);
                                }
                                //if (lt_DOCS[i].GetString("MONTOF_PAGAR") == "")
                                //{
                                //    indice = lt_DOCS[i].GetString("MONTO_PAGAR").IndexOf(',');
                                //    Monto = lt_DOCS[i].GetString("MONTO_PAGAR").Substring(0, indice - 1);
                                //    docs.MONTOF = Monto;
                                //}
                                //else
                                //{
                                //    docs.MONTOF_PAGAR = lt_DOCS[i].GetString("MONTOF_PAGAR");
                                //}
                                docs.NREF           = lt_DOCS[i].GetString("NREF");
                                docs.FECHA_DOC      = lt_DOCS[i].GetString("FECHA_DOC");
                                docs.COD_CLIENTE    = lt_DOCS[i].GetString("COD_CLIENTE");
                                docs.SOCIEDAD       = lt_DOCS[i].GetString("SOCIEDAD");
                                docs.CLASE_DOC      = lt_DOCS[i].GetString("CLASE_DOC");
                                docs.CLASE_CUENTA   = lt_DOCS[i].GetString("CLASE_CUENTA");
                                docs.CME            = lt_DOCS[i].GetString("CME");
                                docs.ACC            = lt_DOCS[i].GetString("ACC");
                                docs.FACT_SD_ORIGEN = lt_DOCS[i].GetString("FACT_SD_ORIGEN");
                                docs.FACT_ELECT     = lt_DOCS[i].GetString("FACT_ELECT");
                                docs.ID_COMPROBANTE = lt_DOCS[i].GetString("ID_COMPROBANTE");
                                docs.ID_CAJA        = lt_DOCS[i].GetString("ID_CAJA");
                                docs.LAND           = lt_DOCS[i].GetString("LAND");
                                documentos.Add(docs);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message + ex.StackTrace);
                                System.Windows.MessageBox.Show(ex.Message + ex.StackTrace);
                            }
                        }
                    }
                    else
                    {
                        System.Windows.Forms.MessageBox.Show("No existe(n) registro(s)");
                    }

                    ls_RETORNO = BapiGetUser.GetTable("RETURN");
                    try
                    {
                        for (int i = 0; i < ls_RETORNO.Count(); i++)
                        {
                            ls_RETORNO.CurrentIndex = i;
                            retorno = new RETURN2();
                            if (ls_RETORNO.GetString("TYPE") == "S")
                            {
                                message    = message + "-" + ls_RETORNO.GetString("MESSAGE") + ":" + ls_RETORNO.GetString("MESSAGE_V1").Trim() + "\n";
                                NumComprob = ls_RETORNO.GetString("MESSAGE_V4").Trim();
                            }
                            if (ls_RETORNO.GetString("TYPE") == "E")
                            {
                                errormessage = errormessage + " - " + ls_RETORNO.GetString("MESSAGE") + "\n";
                            }
                            retorno.TYPE       = ls_RETORNO.GetString("TYPE");
                            retorno.ID         = ls_RETORNO.GetString("ID");
                            retorno.NUMBER     = ls_RETORNO.GetString("NUMBER");
                            retorno.MESSAGE    = ls_RETORNO.GetString("MESSAGE");
                            retorno.LOG_NO     = ls_RETORNO.GetString("LOG_NO");
                            retorno.LOG_MSG_NO = ls_RETORNO.GetString("LOG_MSG_NO");
                            retorno.MESSAGE_V1 = ls_RETORNO.GetString("MESSAGE_V1");
                            retorno.MESSAGE_V2 = ls_RETORNO.GetString("MESSAGE_V2");
                            retorno.MESSAGE_V3 = ls_RETORNO.GetString("MESSAGE_V3");
                            if (ls_RETORNO.GetString("MESSAGE_V4") != "")
                            {
                                // comprobante = ls_RETORNO.GetString("MESSAGE_V4");
                            }
                            retorno.MESSAGE_V4 = ls_RETORNO.GetString("MESSAGE_V4");
                            retorno.PARAMETER  = ls_RETORNO.GetString("PARAMETER");
                            retorno.ROW        = ls_RETORNO.GetString("ROW");
                            retorno.FIELD      = ls_RETORNO.GetString("FIELD");
                            retorno.SYSTEM     = ls_RETORNO.GetString("SYSTEM");
                            T_Retorno.Add(retorno);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message, ex.StackTrace);
                        MessageBox.Show(ex.Message + ex.StackTrace);
                    }
                }
                else
                {
                    errormessage = retval;
                    MessageBox.Show("No se pudo conectar a la RFC");
                }
                GC.Collect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message, ex.StackTrace);
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
Exemple #51
0
        public static void ValidateSAPData(PlanningFunctionGroup activityPlanGroup, int functionCount)
        {
            lock (m_syncObject)
            {
                if (activityPlanGroup.FunctionList.Count > 0)
                {
                    IRfcFunction sapValidateCostPlanFunction = SapConnection.GetObject().CurrentDestination.Repository.CreateFunction("BAPI_ACT_PRICE_CHECK_AND_POST");
                    IRfcTable    returnTable = null;

                    try
                    {
                        ///*** --- IMPORT (SAP TAB) -------------------------------***//

                        IRfcStructure headerInfoStructure = sapValidateCostPlanFunction.GetStructure("HEADER_INFO"); // HEADER_INFO


                        headerInfoStructure.SetValue("CO_AREA", ((ActivityPlan)activityPlanGroup.FunctionList[0]).ControllingArea);           // 3
                        headerInfoStructure.SetValue("FISC_YEAR", ((ActivityPlan)activityPlanGroup.FunctionList[0]).FiscalYear);              // 4
                        headerInfoStructure.SetValue("PERIOD_FROM", ((ActivityPlan)activityPlanGroup.FunctionList[0]).PeriodFrom);            // 5
                        headerInfoStructure.SetValue("PERIOD_TO", ((ActivityPlan)activityPlanGroup.FunctionList[0]).PeriodTo);                // 6
                        headerInfoStructure.SetValue("VERSION", ((ActivityPlan)activityPlanGroup.FunctionList[0]).Version);                   // 8
                        headerInfoStructure.SetValue("DOC_HDR_TX", ((ActivityPlan)activityPlanGroup.FunctionList[0]).DocumentHeaderText);     // 9
                        headerInfoStructure.SetValue("PLAN_CURRTYPE", ((ActivityPlan)activityPlanGroup.FunctionList[0]).PlanningCurrency);    // 10

                        sapValidateCostPlanFunction.SetValue("DELTA", ((ActivityPlan)activityPlanGroup.FunctionList[0]).Delta);               // 11
                        sapValidateCostPlanFunction.SetValue("TESTRUN", "X");                                                                 // "X" - Validate Only, " " - Post

                        foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                        {
                            try
                            {
                                /*** --- IDX_STRUCTURE -- CO Planning: Plan Activity BAPIs -------------- ***/

                                IRfcTable indexTable = sapValidateCostPlanFunction.GetTable("IDX_STRUCTURE");
                                indexTable.Append();

                                indexTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000"));
                                indexTable.SetValue("VALUE_INDEX", ((ActivityPlan)myFunction).ValueIndex.ToString("000000"));
                                indexTable.SetValue("ATTRIB_INDEX", "000000");


                                /*** --- OBJECT -- CO Planning: Objects for Plan Activity BAPIs --------- ***/

                                IRfcTable coObjectTable = sapValidateCostPlanFunction.GetTable("OBJECT");
                                coObjectTable.Append();

                                string objectIndex = ((ActivityPlan)myFunction).ObjectIndex.ToString("000000");
                                string valueIndex  = ((ActivityPlan)myFunction).ValueIndex.ToString("000000");

                                try
                                {
                                    if (coObjectTable.GetValue("OBJECT_INDEX") != null)
                                    {
                                        if (coObjectTable.GetValue("OBJECT_INDEX").ToString() != objectIndex)
                                        {
                                            coObjectTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000"));  // Calculated
                                        }
                                    }
                                    else
                                    {
                                        coObjectTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000"));      // Calculated
                                    }
                                }
                                catch (Exception ex)
                                {
                                    coObjectTable.SetValue("OBJECT_INDEX", ((ActivityPlan)myFunction).ObjectIndex.ToString("000000"));
                                }

                                coObjectTable.SetValue("COSTCENTER", ((ActivityPlan)myFunction).CostCenter);                                    // 12
                                coObjectTable.SetValue("ACTTYPE", ((ActivityPlan)myFunction).ActivityType);                                     // 13


                                /*** --- ACCOUNT_PLAN_TOTVALUE -- CO Planning: Objects for Primary Cost BAPIs --------- ***/

                                IRfcTable totValueTable = sapValidateCostPlanFunction.GetTable("TOT_VALUE");
                                totValueTable.Append();

                                totValueTable.SetValue("VALUE_INDEX", ((ActivityPlan)myFunction).ValueIndex.ToString("000000"));              // Calculated

                                if (((ActivityPlan)myFunction).Price != string.Empty)
                                {
                                    totValueTable.SetValue("PRICE_FIX", ((ActivityPlan)myFunction).Price);                            // 2
                                    totValueTable.SetValue("DIST_KEY_PRICE_FIX", ((ActivityPlan)myFunction).DistributionKey);
                                    totValueTable.SetValue("PRICE_UNIT", "00001");
                                }
                                else
                                {
                                    totValueTable.SetValue("PRICE_FIX", "0");
                                }

                                totValueTable.SetValue("ACTVTY_QTY", ((ActivityPlan)myFunction).Quantity);                            // 1
                                totValueTable.SetValue("DIST_KEY_QUAN", ((ActivityPlan)myFunction).DistributionKey);                  // 7

                                //// ToDo

                                totValueTable.SetValue("CURRENCY", ((ActivityPlan)myFunction).TransactionCurrency);                   // 14


                                myFunction.Updated = true;
                            }
                            catch (Exception ex)
                            {
                                myFunction.ValidationResult = ex.Message;
                            }
                        }
                    }
                    catch (Exception exp)
                    {
                        foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                        {
                            myFunction.ValidationResult = exp.Message;
                        }
                    }

                    try
                    {
                        sapValidateCostPlanFunction.Invoke(SapConnection.GetObject().CurrentDestination);
                    }
                    catch (Exception ex)
                    {
                        DialogResult r = MessageBox.Show("SAP Authorization Error: " + ex.Message, "Error",
                                                         System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                        if (r == DialogResult.OK)
                        {
                        }

                        ReturnProgressDataForm.CancelProcess();

                        return;
                    }


                    returnTable = sapValidateCostPlanFunction.GetTable("RETURN");


                    foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                    {
                        if (!SAPRequest.ReturnValuesList.ContainsKey(myFunction.Signature))
                        {
                            SAPRequest.ReturnValuesList.Add(myFunction.Signature, myFunction);
                        }
                    }

                    if (returnTable.RowCount > 0)
                    {
                        try
                        {
                            string logPath = LogFile.CheckCreateLogFolder() + "\\PWLogValOnly" + DateTime.Now.ToString("(dd-MMM-yyyy-HH-mm-ss-f)") + ".txt";
                            if (!File.Exists(logPath))
                            {
                                using (TextWriter writer = File.CreateText(logPath))
                                {
                                    writer.WriteLine("VALIDATION ONLY: " + DateTime.Now.ToString("(dd-MMM-yyyy-HH-mm-ss-f)"));
                                    writer.WriteLine(" ");
                                    for (int y = 0; y <= (returnTable.RowCount - 1); y += 1)
                                    {
                                        for (int z = 0; z <= (returnTable[y].ElementCount - 1); z += 1)
                                        {
                                            string par = returnTable[y][z].Metadata.Name;
                                            string val = returnTable[y].GetString(z);

                                            string messageLine = par + " : " + val;
                                            writer.WriteLine(messageLine);
                                        }
                                        writer.WriteLine(" ");
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            //MessageBox.Show(ex.Message)
                        }

                        for (int j = 0; j <= (returnTable.RowCount - 1); j++)
                        {
                            int    row     = Convert.ToInt32(returnTable[j].GetString("ROW")) - 1;
                            string message = returnTable[j].GetString("MESSAGE");

                            if (row < 0)
                            {
                                row = 0;
                            }

                            string rType     = string.Empty;
                            string messageV1 = string.Empty;
                            string messageV2 = string.Empty;
                            string messageV3 = string.Empty;
                            string messageV4 = string.Empty;
                            string rNumber   = string.Empty;

                            rType     = returnTable[j].GetString("TYPE");
                            messageV1 = returnTable[j].GetString("MESSAGE_V1");
                            messageV2 = returnTable[j].GetString("MESSAGE_V2");

                            for (int i = 0; i <= (activityPlanGroup.FunctionList.Count - 1); i++)
                            {
                                int elementLocation = SAPRequest.GetObject().TotalProcessedBySAP + i;
                                if (elementLocation < 0)
                                {
                                    elementLocation = 0;
                                }

                                string activityType = ((ActivityPlan)SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation)).ActivityType;
                                string costCenter   = ((ActivityPlan)SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation)).CostCenter;

                                try
                                {
                                    messageV1 = messageV1.TrimStart('0');
                                    messageV2 = messageV2.TrimStart('0');
                                }
                                catch (Exception ex)
                                {
                                }

                                try
                                {
                                    if (i == row && !string.IsNullOrEmpty(message))
                                    {
                                        SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation).Result = message;
                                    }
                                    else if (i != row && rType == "E")
                                    {
                                        try
                                        {
                                            if (messageV1 == activityType || messageV2 == activityType)
                                            {
                                                // account for incrementing batch number
                                                SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation).Result = message;
                                            }
                                            else if (messageV1 != activityType && messageV1 != costCenter && row == 0)
                                            {
                                                rNumber = returnTable[j].GetString("NUMBER");
                                                if (rNumber != string.Empty)
                                                {
                                                    SAPRequest.ReturnValuesList.Values.ElementAt(elementLocation).Result = message;
                                                    if (ReturnProgressDataForm.OperationCancelled)
                                                    {
                                                        break;
                                                    }
                                                }
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                        }
                                    }
                                    else if (rType == "I")
                                    {
                                        foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                                        {
                                            SAPRequest.ReturnValuesList[myFunction.Signature].Result = message;
                                            if (ReturnProgressDataForm.OperationCancelled)
                                            {
                                                break;
                                            }
                                        }
                                        return;
                                    }
                                }
                                catch (Exception ex)
                                {
                                }
                                if (ReturnProgressDataForm.OperationCancelled)
                                {
                                    break;
                                }
                            }
                            if (ReturnProgressDataForm.OperationCancelled)
                            {
                                break;
                            }
                        }


                        foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                        {
                            if ((SAPRequest.ReturnValuesList[myFunction.Signature].Result == null) || (SAPRequest.ReturnValuesList[myFunction.Signature].Result == string.Empty))
                            {
                                SAPRequest.ReturnValuesList[myFunction.Signature].Result = "pwValidated";
                            }
                            if (ReturnProgressDataForm.OperationCancelled)
                            {
                                break;
                            }
                        }
                    }
                    else
                    {
                        foreach (IPlanningFunction myFunction in activityPlanGroup.FunctionList)
                        {
                            SAPRequest.ReturnValuesList[myFunction.Signature].Result = "pwValidated";
                            if (ReturnProgressDataForm.OperationCancelled)
                            {
                                break;
                            }
                        }
                    }
                }
            }
        }
Exemple #52
0
        public string doAction()
        {
            try
            {
                SqlConnection sqlconn = new SqlConnection(__conn);
                string        sqlstr  = @"SELECT ObjectId FROM WF_Object WHERE BaseId='" + __flowId + "'";

                SqlDataAdapter sda = new SqlDataAdapter(sqlstr, sqlconn);
                //获取
                DataSet ds = new DataSet();
                sda.Fill(ds);
                DataTable dt = new DataTable();
                dt = ds.Tables[0];

                // 链接
                RfcConfigParameters rfcPar = new RfcConfigParameters();
                rfcPar.Add(RfcConfigParameters.Name, "DEV");
                rfcPar.Add(RfcConfigParameters.AppServerHost, "10.98.0.22");
                rfcPar.Add(RfcConfigParameters.Client, "400");
                rfcPar.Add(RfcConfigParameters.User, "USER01");
                rfcPar.Add(RfcConfigParameters.Password, "1234567890");
                rfcPar.Add(RfcConfigParameters.SystemNumber, "00");//SAP实例
                rfcPar.Add(RfcConfigParameters.Language, "ZH");
                RfcDestination dest   = RfcDestinationManager.GetDestination(rfcPar);
                RfcRepository  rfcrep = dest.Repository;

                IRfcFunction myfun = dest.Repository.CreateFunction("Z_RFC_PLM_SAP_BOM_CREATE");

                IRfcStructure  import = null;
                IRfcTable      table  = myfun.GetTable("ZT_PP0011");
                IRfcTable      retable;
                SqlDataAdapter sda2;
                DataTable      dt2;
                DataTable      dt3;
                bool           wrong = true;
                string         error = "";
                DataRow        dr;
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    sqlstr = @"exec GETBOM_woo  '" + dt.Rows[i][0] + "'";
                    sda2   = new SqlDataAdapter(sqlstr, sqlconn);

                    dt2 = new DataTable();
                    sda2.Fill(dt2);

                    for (int j = 0; j < dt2.Rows.Count; j++)
                    {
                        import = rfcrep.GetStructureMetadata("ZPP0011").CreateStructure();

                        import.SetValue("MATNR", dt2.Rows[j][0]);   //物料编号
                        import.SetValue("DATUV", dt2.Rows[j][1]);   //有效起始日期
                        import.SetValue("IDNRK", dt2.Rows[j][2]);   //BOM 组件
                        import.SetValue("BMENG", dt2.Rows[j][3]);   //基本数量
                        import.SetValue("STLST", dt2.Rows[j][4]);   //BOM 状态
                        import.SetValue("MENGE", dt2.Rows[j][5]);   //组件数量
                        import.SetValue("MEINS", dt2.Rows[j][6]);   //组件计量单位
                        import.SetValue("DATUV_I", dt2.Rows[j][7]); //有效起始日期
                        import.SetValue("DATUB_I", dt2.Rows[j][8]); //有效截止日期
                        table.Append(import);
                    }
                    myfun.Invoke(dest);
                }
                dt3 = new DataTable();
                dt3.Columns.Add("MATNR", typeof(string));
                dt3.Columns.Add("POSNR", typeof(string));
                dt3.Columns.Add("IDNRK", typeof(string));
                dt3.Columns.Add("FLAG", typeof(string));
                dt3.Columns.Add("ZRESULTS", typeof(string));
                retable = myfun.GetTable("ZT_PP0011_RLT");

                //re1 = re1 + " kmax=" + Convert.ToString(retable.RowCount) + " ; table= " + Convert.ToString(table.RowCount);
                for (int k = 0; k < retable.Count; k++)
                {
                    retable.CurrentIndex = k;
                    dr = dt3.NewRow();

                    dr["MATNR"]    = retable[k].GetValue("MATNR").ToString();
                    dr["POSNR"]    = retable[k].GetValue("POSNR").ToString();
                    dr["IDNRK"]    = retable[k].GetValue("IDNRK").ToString();
                    dr["FLAG"]     = retable[k].GetValue("FLAG").ToString();
                    dr["ZRESULTS"] = retable[k].GetValue("ZRESULTS").ToString();

                    if (Convert.ToString(dr["FLAG"]) == "E")
                    {
                        if (dr["ZRESULTS"].ToString() == "" || dr["ZRESULTS"].ToString().Contains("创建过程中"))
                        {
                            continue;
                        }

                        wrong = false;
                        error = error + "第" + (k + 1) + "行子物料" + retable[k].GetValue("MATNR").ToString() + "<出错原因:" + dr["ZRESULTS"].ToString() + ">;";
                    }
                    dt3.Rows.Add(dr);
                }
                if (wrong == false)
                {
                    return(error);
                }
                else
                {
                    return("");
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
Exemple #53
0
        public List <string> CHK_STOCKIN_Z_RFC_AUFNR_MIGO(string DicRFCAufnrMigo)
        {
            IDictionary <string, object> mst = MapListConverter.JsonToDictionary(DicRFCAufnrMigo);
            List <string> LsMsg = new List <string>();

            try
            {
                #region GM_CODE是和SAP的T-code相关

                /*01 MB01
                *  02 MB31
                *  03 MB1A
                *  04 MB1B
                *  05 MB1C
                *  06 MB11*/
                #endregion


                RfcDestination destination = RfcDestinationManager.GetDestination(this.GetCfgParameters());
                IRfcFunction   rfcFunction = destination.Repository.CreateFunction("Z_RFC_AUFNR_MIGO");

                IRfcStructure IS_HEAD = rfcFunction.GetStructure("IS_HEAD");
                IS_HEAD.SetValue("GM_CODE", "02");
                //IS_HEAD.SetValue("PSTNG_DATE", string.IsNullOrEmpty(RFCAufnrMigo.PSTNG_DATE) ? DateTime.Now.ToString("yyyyMMdd") : RFCAufnrMigo.PSTNG_DATE);
                //IS_HEAD.SetValue("DOC_DATE", string.IsNullOrEmpty(RFCAufnrMigo.DOC_DATE) ? DateTime.Now.ToString("yyyyMMdd") : RFCAufnrMigo.DOC_DATE);
                //IS_HEAD.SetValue("HEADER_TXT", RFCAufnrMigo.EMP_NO + RFCAufnrMigo.EMP_NAME);//人员权限
                IS_HEAD.SetValue("PSTNG_DATE", DateTime.Now.ToString("yyyyMMdd"));
                IS_HEAD.SetValue("DOC_DATE", DateTime.Now.ToString("yyyyMMdd"));
                IS_HEAD.SetValue("HEADER_TXT", mst["EMP_NO"].ToString() + mst["EMP_NAME"].ToString()); //人员权限
                rfcFunction.SetValue("IS_HEAD", IS_HEAD);                                              //设置参数

                IRfcStructure IS_ITEM = rfcFunction.GetStructure("IS_ITEM");
                IS_ITEM.SetValue("MATERIAL", mst["PARTNUMBER"].ToString());

                if (mst.ContainsKey("PLANT"))
                {
                    IS_ITEM.SetValue("PLANT", mst["PLANT"].ToString());
                }
                else
                {
                    IS_ITEM.SetValue("PLANT", "2100");
                }

                IS_ITEM.SetValue("MOVE_TYPE", "101");
                IS_ITEM.SetValue("ENTRY_QNT", Convert.ToInt32(mst["QTY"]));
                IS_ITEM.SetValue("ORDERID", mst["WOID"].ToString());
                IS_ITEM.SetValue("MVT_IND", "F");

                rfcFunction.SetValue("IS_ITEM", IS_ITEM); //设置参数
                rfcFunction.SetValue("I_TYPE", "1");      //1成品入库 2出库
                rfcFunction.SetValue("TESTRUN", "X");     //检查入库,不过账

                rfcFunction.Invoke(destination);

                string        SAP_STOCKNO = rfcFunction.GetValue("E_MBLNR").ToString().TrimStart('0'); //物料凭证号码
                IRfcStructure ES_RETURN   = rfcFunction.GetStructure("ES_RETURN");
                string        SAP_TYPE    = ES_RETURN.GetValue("TYPE").ToString();                     //是否成功 S 表示成功
                string        SAP_E_ID    = ES_RETURN.GetValue("ID").ToString();
                string        SAP_E_NUM   = ES_RETURN.GetValue("NUMBER").ToString();
                string        SAP_MSG     = ES_RETURN.GetValue("MESSAGE").ToString();


                LsMsg.Add(SAP_STOCKNO);
                LsMsg.Add(SAP_TYPE);
                LsMsg.Add(SAP_E_ID);
                LsMsg.Add(SAP_E_NUM);
                LsMsg.Add(SAP_MSG);
                return(LsMsg);
            }
            catch (Exception ex)
            {
                LsMsg.Add(ex.Message);
                return(LsMsg);
            }
        }
Exemple #54
0
        public string doActions()
        {
            try
            {
                SqlConnection sqlconn = new SqlConnection(__conn);
                string        sqlstr  = "SELECT ObjectId FROM WF_Object WHERE BaseId='" + __flowId + "'";


                SqlDataAdapter sda = new SqlDataAdapter(sqlstr, sqlconn);
                //获取
                DataSet ds = new DataSet();
                sda.Fill(ds);
                DataTable dt3 = new DataTable();
                dt3 = ds.Tables[0];

                // 链接
                RfcConfigParameters rfcPar = new RfcConfigParameters();
                rfcPar.Add(RfcConfigParameters.Name, "DEV");
                rfcPar.Add(RfcConfigParameters.AppServerHost, "10.98.0.22");
                rfcPar.Add(RfcConfigParameters.Client, "400");
                rfcPar.Add(RfcConfigParameters.User, "USER01");
                rfcPar.Add(RfcConfigParameters.Password, "1234567890");
                rfcPar.Add(RfcConfigParameters.SystemNumber, "00");//SAP实例
                rfcPar.Add(RfcConfigParameters.Language, "ZH");
                RfcDestination dest   = RfcDestinationManager.GetDestination(rfcPar);
                RfcRepository  rfcrep = dest.Repository;
                IRfcFunction   myfun  = dest.Repository.CreateFunction("ZSET_MATERIEL_MARA");
                myfun.SetValue("P_CODE", "N");//SAP里面的传入参数        // N 新增;M 修改

                IRfcStructure import = null;
                IRfcTable     table;
                bool          wrong = true;
                string        error = "";
                DataRow       dr;

                DataTable dt2 = new DataTable();
                dt2.Columns.Add("DATA1", typeof(string));
                dt2.Columns.Add("DATA2", typeof(string));
                dt2.Columns.Add("DATA3", typeof(string));
                dt2.Columns.Add("DATA4", typeof(string));
                dt2.Columns.Add("DATA5", typeof(string));
                table = myfun.GetTable("T_ZMARA");
                string         strsql2 = "";
                DataTable      dt      = new DataTable();
                SqlDataAdapter sda2;

                if (dt3.Rows.Count <= 0)
                {
                    return("Error:流程行不足1");
                }

                for (int k = 0; k < dt3.Rows.Count; k++)
                {
                    strsql2 = "exec  GETmat_woo  '" + dt3.Rows[k]["ObjectId"] + "'";
                    sda2    = new SqlDataAdapter(strsql2, sqlconn);
                    sqlconn.Open();
                    ds.Clear();
                    dt.Clear();
                    sda2.Fill(ds);
                    dt = ds.Tables[0];
                    sqlconn.Close();

                    if (dt.Rows.Count <= 0)
                    {
                        continue;
                    }
                    else
                    if (k != 0)
                    {
                        loopstr2 = loopstr2 + " union";
                    }

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        import = rfcrep.GetStructureMetadata("ZMARA").CreateStructure();

                        //赋值
                        import.SetValue("MATNR", dt.Rows[i]["物料编码"].ToString()); //物料编码
                        import.SetValue("LTEXT", dt.Rows[i]["物料長描述"]);           //物料描述长文本
                        import.SetValue("MAKTX", dt.Rows[i]["物料短描述"]);           //物料描述
                        import.SetValue("MATKL", dt.Rows[i]["物料组"]);             // dt.Rows[0][2]);   //物料组


                        table.Append(import);
                    }
                }
                myfun.Invoke(dest);

                table = myfun.GetTable("T_ZMARA_RESULT");

                for (int j = 0; j < table.Count; j++)
                {
                    table.CurrentIndex = j;
                    dr = dt2.NewRow();

                    dr["DATA1"] = table[j].GetValue("MANDT").ToString();
                    dr["DATA2"] = table[j].GetValue("MATNR").ToString();
                    dr["DATA3"] = table[j].GetValue("MAKTX").ToString();
                    dr["DATA4"] = table[j].GetValue("ZRESULT").ToString();
                    dr["DATA5"] = table[j].GetValue("ZRESULT_TEXT").ToString();

                    if (Convert.ToString(dr["DATA4"]) == "N" && (!(table[j].GetValue("ZRESULT_TEXT").ToString().Contains("已在创建过程"))) && (table[j].GetValue("ZRESULT_TEXT").ToString() != ""))
                    {
                        wrong = false;
                        error = error + "第" + (j + 1) + "行物料[" + (j + 1) + "]" + table[j].GetValue("MATNR").ToString() + "[" + table[j].GetValue("MAKTX").ToString() + "]" + "<出错原因:" + table[j].GetValue("ZRESULT_TEXT").ToString() + ">;\r\n";
                    }

                    dt2.Rows.Add(dr);
                }

                // dt 包含返回结果
                if (wrong == false)
                {
                    return(error);
                }
                else
                {
                    return("");
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
Exemple #55
0
            // SD02 - Inteface de fornecedor - Comunicação
            // funcao - ZFXI_SD02C
            //[RfcServerFunction(Name = "ZGXI_SD02")]
            public static void StfcInterfaceFornecedor(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);
               
                // Implementa Repositório dos dados
                FornecedorRepository fornecedorRepository = new FornecedorRepository();

                // Implementa repositorio antes do Foreach para evitar duplicações
                Fornecedor fornecedor = new Fornecedor();
                
                // 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<Fornecedor> fromDB = fornecedorRepository.ObterTodos();
                    foreach (Fornecedor dados in fromDB)
                    {
                        fornecedorRepository.Excluir(dados);
                    }                    
                }

                // ZTBSD060
                IRfcTable it_fornecedor = function.GetTable("IT_FORNECEDOR");
                    
                // Implementa Repositorio Rfc de resposta
                RfcRepository rep = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno = bapiret2.CreateStructure();                                                                 

                int v_cont = 0;
                foreach (IRfcStructure row in it_fornecedor)
                {
                    fornecedor.codigo     = row.GetString("LIFNR");
                    fornecedor.nome       = row.GetString("NAME1");
                    fornecedor.cpf        = row.GetString("STCD2");
                    fornecedor.cnpj       = row.GetString("STCD1");
                    fornecedor.nr_ie_for  = row.GetString("STCD3");
                    fornecedor.cep        = row.GetString("POST_CODE");
                    fornecedor.endereco   = row.GetString("STREET");
                    fornecedor.numero     = row.GetString("HOUSE_NUM1");
                    fornecedor.municipio  = row.GetString("CITY1");
                    fornecedor.bairro     = row.GetString("CITY2");
                    fornecedor.uf         = row.GetString("UF");
                    fornecedor.pais       = row.GetString("COUNTRY");
                    fornecedor.tel_res    = row.GetString("TELF1");
                    fornecedor.tel_res    = row.GetString("TELF2");
                    fornecedor.tel_cel    = row.GetString("TELF1");
                    fornecedor.fax        = row.GetString("TELFX");
                    fornecedor.email      = row.GetString("EMAIL");
                    // Pacote
                    fornecedor.pacote = row.GetString("PACOTE");
                    // Data Cricao
                    string v_data_Cricao = row.GetString("ERDAT");
                    fornecedor.data_criacao = Convert.ToDateTime(v_data_Cricao);
                    // Hora de Criacao
                    fornecedor.hora_criacao = row.GetString("ERZET");                                    

                    try
                    {
                        v_cont = v_cont + 1;
                        if (deletar == ' ')
                        {
                            IList<Fornecedor> fromDB = fornecedorRepository.ObterTodosComCampo("codigo", fornecedor.codigo);
                            foreach (Fornecedor dados in fromDB)
                            {
                                fornecedorRepository.Excluir(dados);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro e a descricao do material
                        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 Fornecedor: " + fornecedor.nome);
                        retorno.Insert(linha_retorno);
                    }

                    fornecedorRepository.Salvar(fornecedor);
                    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);
            }
        public void PagaVehicu(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string ID_CAJA, string TOTAL_VENTA, List <VIAS_PAGO_VEHI> ViaPago, List <DOCUMENTO_CAB> DocumPago, List <ACT_FPAGOS> pago, string PAY_CURRENCY, string RUT, string SOCIEDAD, string NOTA_VENTA, string TOTAL_VIAS, string LAND)
        {
            objReturn2.Clear();
            DOCUMENTO  = "";
            DOCUMENTO2 = "";
            IRfcTable lt_VIAS_PAGO_VEHI;

            VIAS_PAGO_VEHI VIAS_PAGO_VEHI_RESP;

            errormessage = "";
            message      = "";
            try
            {
                RETURN p_return;
                TOTAL_VENTA = TOTAL_VENTA.Replace(".", "");
                TOTAL_VENTA = TOTAL_VENTA.Replace(",", "");
                decimal        totalventa_d = Convert.ToDecimal(TOTAL_VENTA);
                FormatoMonedas FM           = new FormatoMonedas();

                //Conexion a SAP
                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();

                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_PAGO_ANT_VEHI");

                    BapiGetUser.SetValue("PAY_CURRENCY", PAY_CURRENCY);
                    BapiGetUser.SetValue("RUT", RUT);
                    BapiGetUser.SetValue("SOCIEDAD", SOCIEDAD);
                    BapiGetUser.SetValue("NOTA_VENTA", NOTA_VENTA);
                    BapiGetUser.SetValue("TOTAL_VIAS", TOTAL_VIAS);
                    BapiGetUser.SetValue("LAND", LAND);
                    BapiGetUser.SetValue("ID_CAJA", ID_CAJA);
                    BapiGetUser.SetValue("TOTAL_VENTA", totalventa_d);

                    // LLENAMOS TABLA DOCUMENTO
                    IRfcTable paramt = BapiGetUser.GetTable("DOCUMENTO_CAB");
                    for (int i = 0; i < DocumPago.Count(); i++)
                    {
                        paramt.Append();
                        paramt.SetValue("MANDT", DocumPago[i].MANDT);
                        paramt.SetValue("LAND", DocumPago[i].LAND);
                        paramt.SetValue("ID_COMPROBANTE", DocumPago[i].ID_COMPROBANTE);
                        paramt.SetValue("POSICION", DocumPago[i].POSICION);
                        paramt.SetValue("ID_CAJA", DocumPago[i].ID_CAJA);
                        paramt.SetValue("ID_APERTURA", DocumPago[i].ID_APERTURA);
                        paramt.SetValue("CLIENTE", DocumPago[i].CLIENTE);
                        paramt.SetValue("TIPO_DOCUMENTO", DocumPago[i].TIPO_DOCUMENTO);
                        paramt.SetValue("SOCIEDAD", DocumPago[i].SOCIEDAD);
                        paramt.SetValue("NRO_DOCUMENTO", DocumPago[i].NRO_DOCUMENTO);
                        paramt.SetValue("NRO_REFERENCIA", DocumPago[i].NRO_REFERENCIA);
                        paramt.SetValue("CAJERO_RESP", DocumPago[i].CAJERO_RESP);
                        paramt.SetValue("CAJERO_GEN", DocumPago[i].CAJERO_GEN);
                        paramt.SetValue("FECHA_COMP", DocumPago[i].FECHA_COMP);
                        paramt.SetValue("HORA", DocumPago[i].HORA);
                        paramt.SetValue("NRO_COMPENSACION", DocumPago[i].NRO_COMPENSACION);
                        paramt.SetValue("TEXTO_CABECERA", DocumPago[i].TEXTO_CABECERA);
                        paramt.SetValue("NULO", DocumPago[i].NULO);
                        paramt.SetValue("USR_ANULADOR", DocumPago[i].USR_ANULADOR);
                        paramt.SetValue("NRO_ANULACION", DocumPago[i].NRO_ANULACION);
                        paramt.SetValue("APROBADOR_ANULA", DocumPago[i].APROBADOR_ANULA);
                        paramt.SetValue("TXT_ANULACION", DocumPago[i].TXT_ANULACION);
                        paramt.SetValue("EXCEPCION", DocumPago[i].EXCEPCION);
                        paramt.SetValue("FECHA_DOC", DocumPago[i].FECHA_DOC);
                        paramt.SetValue("FECHA_VENC_DOC", DocumPago[i].FECHA_VENC_DOC);
                        paramt.SetValue("NUM_CUOTA", DocumPago[i].NUM_CUOTA);
                        //if (DocumPago[i].MONEDA == "CLP")
                        //{
                        //    paramt.SetValue("MONTO_DOC",FM.FormatoMonedaChilena(DocumPago[i].MONTO_DOC, "2"));
                        //}
                        //else
                        //{
                        //    paramt.SetValue("MONTO_DOC", FM.FormatoMonedaExtranjera(DocumPago[i].MONTO_DOC));
                        //}
                        paramt.SetValue("MONTO_DOC", DocumPago[i].MONTO_DOC);
                        //if (DocumPago[i].MONEDA == "CLP")
                        //{
                        //    paramt.SetValue("MONTO_DIFERENCIA", FM.FormatoMonedaChilena(DocumPago[i].MONTO_DIFERENCIA, "2"));
                        //}
                        //else
                        //{
                        //    paramt.SetValue("MONTO_DIFERENCIA", FM.FormatoMonedaExtranjera(DocumPago[i].MONTO_DIFERENCIA));
                        //}
                        paramt.SetValue("MONTO_DIFERENCIA", DocumPago[i].MONTO_DIFERENCIA);
                        paramt.SetValue("TEXTO_EXCEPCION", DocumPago[i].TEXTO_EXCEPCION);
                        paramt.SetValue("PARCIAL", DocumPago[i].PARCIAL);
                        paramt.SetValue("TIME", DocumPago[i].TIME);
                        paramt.SetValue("APROBADOR_EX", DocumPago[i].APROBADOR_EX);
                        paramt.SetValue("MONEDA", DocumPago[i].MONEDA);
                        paramt.SetValue("CLASE_CUENTA", DocumPago[i].CLASE_CUENTA);
                        paramt.SetValue("CLASE_DOC", DocumPago[i].CLASE_DOC);
                        paramt.SetValue("NUM_CANCELACION", DocumPago[i].NUM_CANCELACION);
                        paramt.SetValue("CME", DocumPago[i].CME);
                        paramt.SetValue("NOTA_VENTA", DocumPago[i].NOTA_VENTA);
                        paramt.SetValue("CEBE", DocumPago[i].CEBE);
                        paramt.SetValue("ACC", DocumPago[i].ACC);
                    }

                    //LLENAMOS TABLA VIAS DE PAGO
                    IRfcTable paramt2 = BapiGetUser.GetTable("VIAS_PAGO_VEHI");

                    for (int i = 0; i < ViaPago.Count(); i++)
                    {
                        paramt2.Append();
                        paramt2.SetValue("MANDT", ViaPago[i].MANDT);
                        paramt2.SetValue("LAND", ViaPago[i].LAND);
                        paramt2.SetValue("ID_COMPROBANTE", ViaPago[i].ID_COMPROBANTE);
                        paramt2.SetValue("ID_DETALLE", ViaPago[i].ID_DETALLE);
                        paramt2.SetValue("ID_CAJA", ViaPago[i].ID_CAJA);
                        paramt2.SetValue("VIA_PAGO", ViaPago[i].VIA_PAGO);
                        //if (ViaPago[i].MONEDA == "CLP")
                        //{
                        //    paramt2.SetValue("MONTO", FM.FormatoMonedaChilena(ViaPago[i].MONTO, "1"));
                        //}
                        //else
                        //{
                        //    paramt2.SetValue("MONTO", FM.FormatoMonedaExtranjera(ViaPago[i].MONTO));
                        //}
                        paramt2.SetValue("MONTO", ViaPago[i].MONTO);
                        paramt2.SetValue("MONEDA", ViaPago[i].MONEDA);
                        paramt2.SetValue("BANCO", ViaPago[i].BANCO);
                        paramt2.SetValue("EMISOR", ViaPago[i].EMISOR);
                        paramt2.SetValue("NUM_CHEQUE", ViaPago[i].NUM_CHEQUE);
                        paramt2.SetValue("COD_AUTORIZACION", ViaPago[i].COD_AUTORIZACION);
                        paramt2.SetValue("NUM_CUOTAS", ViaPago[i].NUM_CUOTAS);
                        paramt2.SetValue("FECHA_VENC", ViaPago[i].FECHA_VENC);
                        paramt2.SetValue("TEXTO_POSICION", ViaPago[i].TEXTO_POSICION);
                        paramt2.SetValue("ANEXO", ViaPago[i].ANEXO);
                        paramt2.SetValue("SUCURSAL", ViaPago[i].SUCURSAL);
                        paramt2.SetValue("NUM_CUENTA", ViaPago[i].NUM_CUENTA);
                        paramt2.SetValue("NUM_TARJETA", ViaPago[i].NUM_TARJETA);
                        paramt2.SetValue("NUM_VALE_VISTA", ViaPago[i].NUM_VALE_VISTA);
                        paramt2.SetValue("PATENTE", ViaPago[i].PATENTE);
                        paramt2.SetValue("NUM_VENTA", ViaPago[i].NUM_VENTA);
                        paramt2.SetValue("PAGARE", ViaPago[i].PAGARE);
                        if ((ViaPago[i].VIA_PAGO == "B") | (ViaPago[i].VIA_PAGO == "U"))
                        {
                            paramt2.SetValue("FECHA_EMISION", Convert.ToDateTime(ViaPago[i].FECHA_EMISION));
                        }
                        else
                        {
                            paramt2.SetValue("FECHA_EMISION", ViaPago[i].FECHA_EMISION);
                        }
                        paramt2.SetValue("NOMBRE_GIRADOR", ViaPago[i].NOMBRE_GIRADOR);
                        paramt2.SetValue("CARTA_CURSE", ViaPago[i].CARTA_CURSE);
                        paramt2.SetValue("NUM_TRANSFER", ViaPago[i].NUM_TRANSFER);
                        paramt2.SetValue("NUM_DEPOSITO", ViaPago[i].NUM_DEPOSITO);
                        paramt2.SetValue("CTA_BANCO", ViaPago[i].CTA_BANCO);
                        paramt2.SetValue("IFINAN", ViaPago[i].IFINAN);
                        paramt2.SetValue("ZUONR", ViaPago[i].ZUONR);
                        paramt2.SetValue("CORRE", ViaPago[i].CORRE);
                        paramt2.SetValue("HKONT", ViaPago[i].HKONT);
                        paramt2.SetValue("PRCTR", ViaPago[i].PRCTR);
                        paramt2.SetValue("ZNOP", ViaPago[i].ZNOP);
                    }

                    IRfcTable paramt3 = BapiGetUser.GetTable("ACT_FPAGOS");
                    for (int i = 0; i < pago.Count(); i++)
                    {
                        paramt3.Append();
                        paramt3.SetValue("VBELN", pago[i].VBELN);
                        paramt3.SetValue("CORRE", pago[i].CORRE);
                    }

                    BapiGetUser.SetValue("DOCUMENTO_CAB", paramt);
                    BapiGetUser.SetValue("VIAS_PAGO_VEHI", paramt2);
                    BapiGetUser.SetValue("ACT_FPAGOS", paramt3);

                    BapiGetUser.Invoke(SapRfcDestination);


                    DOCUMENTO  = BapiGetUser.GetValue("DOCUMENTO").ToString();
                    DOCUMENTO2 = BapiGetUser.GetValue("COMPROBANTE").ToString();
                    IRfcTable retorno = BapiGetUser.GetTable("RETORNO");

                    for (var i = 0; i < retorno.RowCount; i++)
                    {
                        retorno.CurrentIndex = i;

                        p_return = new RETURN();

                        p_return.TYPE       = retorno[i].GetString("TYPE");
                        p_return.ID         = retorno[i].GetString("ID");
                        p_return.NUMBER     = retorno[i].GetString("NUMBER");
                        p_return.MESSAGE    = retorno[i].GetString("MESSAGE");
                        p_return.LOG_NO     = retorno[i].GetString("LOG_NO");
                        p_return.LOG_MSG_NO = retorno[i].GetString("LOG_MSG_NO");
                        p_return.MESSAGE_V1 = retorno[i].GetString("MESSAGE_V1");
                        p_return.MESSAGE_V2 = retorno[i].GetString("MESSAGE_V2");
                        p_return.MESSAGE_V3 = retorno[i].GetString("MESSAGE_V3");
                        p_return.MESSAGE_V4 = retorno[i].GetString("MESSAGE_V4");
                        p_return.PARAMETER  = retorno[i].GetString("PARAMETER");
                        p_return.ROW        = retorno[i].GetString("ROW");
                        p_return.FIELD      = retorno[i].GetString("FIELD");
                        p_return.SYSTEM     = retorno[i].GetString("SYSTEM");

                        if (retorno[i].GetString("TYPE") == "E")
                        {
                            if (errormessage.Contains(retorno[i].GetString("MESSAGE")))
                            {
                                ;
                            }
                            else
                            {
                                errormessage = errormessage + " - " + retorno[i].GetString("MESSAGE");
                            }
                        }
                        if (retorno[i].GetString("TYPE") == "S")
                        {
                            if (message.Contains(retorno[i].GetString("MESSAGE")))
                            {
                                ;
                            }
                            else
                            {
                                message = message + " - " + retorno[i].GetString("MESSAGE");
                            }
                        }


                        objReturn2.Add(p_return);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("{0} Exception caught.", ex);
            }
        }
Exemple #57
0
            // SD04 - Inteface de cond. de pag. - Comunicação
            // Funcao - ZFXI_SD04C
            //[RfcServerFunction(Name = "ZGXI_SD04")]
            public static void StfcInterfaceCondPag(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);

                // Mandar salvar o Condicao de Pagamento
                CondicaoPagamentoRepository condicaoPagamentoRepository = new CondicaoPagamentoRepository();

                // Implementa repositorio antes do Foreach para evitar duplicações
                CondicaoPagamento condicaoPagamento = new CondicaoPagamento();

                // 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<CondicaoPagamento> fromDB = condicaoPagamentoRepository.ObterTodos();
                    foreach (CondicaoPagamento dados in fromDB)
                    {
                        condicaoPagamentoRepository.Excluir(dados);
                    }
                }

                // ZTBSD060
                IRfcTable it_condicaoPagamento = function.GetTable("IT_CONDPAG");

                // Implementa Repositorio Rfc de resposta
                RfcRepository rep = context.Repository;

                // RETORNO - BAPIRET2
                RfcStructureMetadata bapiret2 = rep.GetStructureMetadata("BAPIRET2");
                IRfcStructure linha_retorno = bapiret2.CreateStructure();

                int v_cont = 0;
                foreach (IRfcStructure row in it_condicaoPagamento)
                {                    
                    condicaoPagamento.Codigo = row.GetString("ZTERM");
                    condicaoPagamento.Descricao = row.GetString("VTEXT");
                    // Pacote
                    condicaoPagamento.pacote = row.GetString("PACOTE");
                    // Data Cricao
                    string v_data_Cricao = row.GetString("ERDAT");
                    condicaoPagamento.data_criacao = Convert.ToDateTime(v_data_Cricao);
                    // Hora de Criacao
                    //string v_hora_Cricao = row.GetString("ERZET");
                    condicaoPagamento.hora_criacao = row.GetString("ERZET");//Convert.ToDateTime(v_hora_Cricao);                   

                    try
                    {
                        v_cont = v_cont + 1;
                        if (deletar == ' ')
                        {
                            IList<CondicaoPagamento> fromDB = condicaoPagamentoRepository.ObterTodosComCampo("Codigo", condicaoPagamento.Codigo);
                            foreach (CondicaoPagamento dados in fromDB)
                            {
                                condicaoPagamentoRepository.Excluir(dados);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        // Em caso de erro retorna o erro e a descricao do material
                        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 a Condicao de Pagamento: " + condicaoPagamento.Descricao + " - Id: " + condicaoPagamento.Codigo);
                        retorno.Insert(linha_retorno);
                    }

                    condicaoPagamentoRepository.Salvar(condicaoPagamento);
                    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);
            }
        public void recauVehi(string P_UNAME, string P_PASSWORD, string P_IDSISTEMA, string P_INSTANCIA, string P_MANDANTE, string P_SAPROUTER, string P_SERVER, string P_IDIOMA, string VBELN, string STCD1, string SOCIEDAD)
        {
            objPag.Clear();
            objPagCab.Clear();
            objReturn2.Clear();
            errormessage = "";
            message      = "";
            try
            {
                RETURN    p_return;
                IRfcTable lt_IT_PAGOS_CAB;
                IRfcTable lt_IT_PAGOS;

                IT_PAGOS       GET_IT_PAGOS_resp;
                IT_PAGOS_CAB   GET_IT_PAGOS_CAB_resp;
                FormatoMonedas FM = new FormatoMonedas();

                //Conexion a SAP
                connectorSap.idioma    = P_IDIOMA;
                connectorSap.idSistema = P_IDSISTEMA;
                connectorSap.instancia = P_INSTANCIA;
                connectorSap.mandante  = P_MANDANTE;
                connectorSap.paswr     = P_PASSWORD;
                connectorSap.sapRouter = P_SAPROUTER;
                connectorSap.user      = P_UNAME;
                connectorSap.server    = P_SERVER;

                string retval = connectorSap.connectionsSAP();
                //Si el valor de retorno es nulo o vacio, hay conexion a SAP y la RFC trae datos
                if (string.IsNullOrEmpty(retval))
                {
                    RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(connectorSap.connectorConfig);
                    RfcRepository  SapRfcRepository  = SapRfcDestination.Repository;

                    IRfcFunction BapiGetUser = SapRfcRepository.CreateFunction("ZSCP_RFC_RECAU_VEHI");
                    BapiGetUser.SetValue("VBELN", VBELN);
                    BapiGetUser.SetValue("STCD1", STCD1);
                    BapiGetUser.SetValue("SOCIEDAD", SOCIEDAD);

                    BapiGetUser.Invoke(SapRfcDestination);

                    lt_IT_PAGOS_CAB = BapiGetUser.GetTable("IT_PAGOS_CAB");
                    lt_IT_PAGOS     = BapiGetUser.GetTable("IT_PAGOS");

                    if (lt_IT_PAGOS_CAB.RowCount > 0)
                    {
                        for (int i = 0; i < lt_IT_PAGOS_CAB.RowCount; i++)
                        {
                            lt_IT_PAGOS_CAB.CurrentIndex = i;
                            GET_IT_PAGOS_CAB_resp        = new IT_PAGOS_CAB();

                            GET_IT_PAGOS_CAB_resp.VBELN    = lt_IT_PAGOS_CAB[i].GetString("VBELN");
                            GET_IT_PAGOS_CAB_resp.LICPL    = lt_IT_PAGOS_CAB[i].GetString("LICPL");
                            GET_IT_PAGOS_CAB_resp.H_NETWR  = lt_IT_PAGOS_CAB[i].GetString("H_NETWR");
                            GET_IT_PAGOS_CAB_resp.WAERK    = lt_IT_PAGOS_CAB[i].GetString("WAERK");
                            GET_IT_PAGOS_CAB_resp.BUKRS_VF = lt_IT_PAGOS_CAB[i].GetString("BUKRS_VF");
                            GET_IT_PAGOS_CAB_resp.KKBER    = lt_IT_PAGOS_CAB[i].GetString("KKBER");
                            GET_IT_PAGOS_CAB_resp.STCD1    = lt_IT_PAGOS_CAB[i].GetString("STCD1");
                            objPagCab.Add(GET_IT_PAGOS_CAB_resp);
                        }
                    }

                    if (lt_IT_PAGOS.RowCount > 0)
                    {
                        for (int i = 0; i < lt_IT_PAGOS.RowCount; i++)
                        {
                            lt_IT_PAGOS.CurrentIndex = i;
                            GET_IT_PAGOS_resp        = new IT_PAGOS();

                            GET_IT_PAGOS_resp.VBELN      = lt_IT_PAGOS[i].GetString("VBELN");
                            GET_IT_PAGOS_resp.CORRE      = lt_IT_PAGOS[i].GetString("CORRE");
                            GET_IT_PAGOS_resp.VIADP      = lt_IT_PAGOS[i].GetString("VIADP");
                            GET_IT_PAGOS_resp.DESCV      = lt_IT_PAGOS[i].GetString("DESCV");
                            GET_IT_PAGOS_resp.DBM_LICEXT = lt_IT_PAGOS[i].GetString("DBM_LICEXT");
                            GET_IT_PAGOS_resp.NUDOC      = lt_IT_PAGOS[i].GetString("NUDOC");
                            GET_IT_PAGOS_resp.CODBA      = lt_IT_PAGOS[i].GetString("CODBA");
                            GET_IT_PAGOS_resp.NOMBA      = lt_IT_PAGOS[i].GetString("NOMBA");
                            GET_IT_PAGOS_resp.CODIN      = lt_IT_PAGOS[i].GetString("CODIN");
                            GET_IT_PAGOS_resp.NOMIN      = lt_IT_PAGOS[i].GetString("NOMIN");
                            //string VALORUN = Convert.ToString(lt_IT_PAGOS[i].GetString("MONTO"));
                            //VALORUN = VALORUN.Replace(".", "");
                            //VALORUN = VALORUN.Replace(",", "");
                            //decimal monto = Convert.ToDecimal(VALORUN);
                            //GET_IT_PAGOS_resp.MONTO = string.Format("{0:0,0}", monto);
                            GET_IT_PAGOS_resp.KUNNR = lt_IT_PAGOS[i].GetString("KUNNR");
                            if (lt_IT_PAGOS[i].GetString("WAERS") == "CLP")
                            {
                                GET_IT_PAGOS_resp.MONTO = FM.FormatoMonedaChilena(lt_IT_PAGOS[i].GetString("MONTO"), "2");
                                //paramt.SetValue("MONTO_DOC", FM.FormatoMonedaChilena(DocumPago[i].MONTO_DOC, "2"));
                            }
                            else
                            {
                                GET_IT_PAGOS_resp.MONTO = FM.FormatoMonedaExtranjera(lt_IT_PAGOS[i].GetString("MONTO"));
                                //paramt.SetValue("MONTO_DOC", FM.FormatoMonedaExtranjera(DocumPago[i].MONTO_DOC));
                            }
                            //GET_IT_PAGOS_resp.MONTO = lt_IT_PAGOS[i].GetString("MONTO");
                            GET_IT_PAGOS_resp.CTACE = lt_IT_PAGOS[i].GetString("CTACE");
                            GET_IT_PAGOS_resp.FEACT = lt_IT_PAGOS[i].GetString("FEACT");
                            GET_IT_PAGOS_resp.FEVEN = lt_IT_PAGOS[i].GetString("FEVEN");
                            GET_IT_PAGOS_resp.INTER = lt_IT_PAGOS[i].GetString("INTER");
                            GET_IT_PAGOS_resp.TASAI = lt_IT_PAGOS[i].GetString("TASAI");
                            GET_IT_PAGOS_resp.CUOTA = lt_IT_PAGOS[i].GetString("CUOTA");
                            GET_IT_PAGOS_resp.MINTE = lt_IT_PAGOS[i].GetString("MINTE");
                            //string VALORTOTIN = Convert.ToString(lt_IT_PAGOS[i].GetString("TOTIN"));
                            //VALORTOTIN = VALORTOTIN.Replace(".", "");
                            //VALORTOTIN = VALORTOTIN.Replace(",", "");
                            //decimal TOTIN2 = Convert.ToDecimal(VALORTOTIN);
                            if (lt_IT_PAGOS[i].GetString("WAERS") == "CLP")
                            {
                                GET_IT_PAGOS_resp.TOTIN = FM.FormatoMonedaChilena(lt_IT_PAGOS[i].GetString("TOTIN"), "2");
                                //paramt.SetValue("MONTO_DOC", FM.FormatoMonedaChilena(DocumPago[i].MONTO_DOC, "2"));
                            }
                            else
                            {
                                GET_IT_PAGOS_resp.TOTIN = FM.FormatoMonedaExtranjera(lt_IT_PAGOS[i].GetString("TOTIN"));
                                //paramt.SetValue("MONTO_DOC", FM.FormatoMonedaExtranjera(DocumPago[i].MONTO_DOC));
                            }
                            //GET_IT_PAGOS_resp.TOTIN = string.Format("{0:0,0}", TOTIN2);
                            // GET_IT_PAGOS_resp.TOTIN = lt_IT_PAGOS[i].GetString("TOTIN");
                            GET_IT_PAGOS_resp.RUTGI = lt_IT_PAGOS[i].GetString("RUTGI");
                            GET_IT_PAGOS_resp.NOMGI = lt_IT_PAGOS[i].GetString("NOMGI");
                            GET_IT_PAGOS_resp.WAERS = lt_IT_PAGOS[i].GetString("WAERS");
                            GET_IT_PAGOS_resp.STAT  = lt_IT_PAGOS.GetString("STAT");
                            GET_IT_PAGOS_resp.PRCTR = lt_IT_PAGOS[i].GetString("PRCTR");
                            GET_IT_PAGOS_resp.KUNNR = lt_IT_PAGOS[i].GetString("KUNNR");
                            GET_IT_PAGOS_resp.KKBER = lt_IT_PAGOS[i].GetString("KKBER");
                            GET_IT_PAGOS_resp.STCD1 = lt_IT_PAGOS[i].GetString("STCD1");
                            GET_IT_PAGOS_resp.HKONT = lt_IT_PAGOS[i].GetString("HKONT");
                            GET_IT_PAGOS_resp.BANKN = lt_IT_PAGOS[i].GetString("BANKN");
                            objPag.Add(GET_IT_PAGOS_resp);
                        }
                    }
                    else
                    {
                        // MessageBox.Show("No existen datos para este número de documento o RUT");
                    }


                    IRfcTable retorno = BapiGetUser.GetTable("RETURN");

                    for (var i = 0; i < retorno.RowCount; i++)
                    {
                        retorno.CurrentIndex = i;

                        p_return = new RETURN();

                        p_return.TYPE       = retorno[i].GetString("TYPE");
                        p_return.ID         = retorno[i].GetString("ID");
                        p_return.NUMBER     = retorno[i].GetString("NUMBER");
                        p_return.MESSAGE    = retorno[i].GetString("MESSAGE");
                        p_return.LOG_NO     = retorno[i].GetString("LOG_NO");
                        p_return.LOG_MSG_NO = retorno[i].GetString("LOG_MSG_NO");
                        p_return.MESSAGE_V1 = retorno[i].GetString("MESSAGE_V1");
                        p_return.MESSAGE_V2 = retorno[i].GetString("MESSAGE_V2");
                        p_return.MESSAGE_V3 = retorno[i].GetString("MESSAGE_V3");
                        p_return.MESSAGE_V4 = retorno[i].GetString("MESSAGE_V4");
                        p_return.PARAMETER  = retorno[i].GetString("PARAMETER");
                        p_return.ROW        = retorno[i].GetString("ROW");
                        p_return.FIELD      = retorno[i].GetString("FIELD");
                        p_return.SYSTEM     = retorno[i].GetString("SYSTEM");
                        objReturn2.Add(p_return);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("{0} Exception caught.", ex);
            }
        }
Exemple #59
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);                

                // 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();                

                // 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


            }
        private void ExecuteRFC_READ_TABLE(ref IRfcFunction f)
        {
            SendMessage(String.Format("开始调用{0}", f.Metadata.Name));
            if (this.BackgroundExtraction)
            {
                f["ACTIONID"].SetValue("D");
                f["REQUESTID"].SetValue(this.BackgroundRequestID);
                if (!this.BufferLocation.Equals(""))
                {
                    f["LCTN"].SetValue(this.BufferLocation);
                }
            }
            IRfcTable toptions = f.GetTable("OPTIONS");
            this.InitWhereClause(ref toptions);
            this.anzahlaufrufe++;
            if ((this._UsePrimaryKeyPackaging && (this.anzahlaufrufe > 1)) && (((int)f["ROWCOUNT"].GetValue()) > 0))
            {
                f["ROWCOUNT"].SetValue(((int)f["ROWCOUNT"].GetValue()) + 1);
            }
            f["DELIMITER"].SetValue(this.Delimiter);
            //if (this.con.Logging)
            //{
            //    try
            //    {
            //        f.SaveToXML("ReadTableBeforeCall_" + this.anzahlaufrufe.ToString() + ".xml");
            //    }
            //    catch
            //    {
            //    }
            //}
            if (this._UsePrimaryKeyPackaging)
            {
                f["ROWSKIPS"].SetValue("0");
            }
            try
            {
                SendMessage("Invoke开始");
                f.Invoke(_des);
                SendMessage("Invoke结束");
            }
            catch (RfcAbapException e)
            {
                this.fields.Clear();
                this.options.Clear();
                throw new SAPException(e.Key + e.Message);
            }
            catch (RfcAbapRuntimeException ee)
            {
                throw new SAPException(ee.Key + ee.Message);
            }

            SendMessage(String.Format("结束调用{0}", f.Metadata.Name));
        }