/// <summary>
        ///
        /// </summary>
        /// <param name="cashreceipt"></param>
        /// <param name="DOCNUMBR"></param>
        /// <returns></returns>
        private taRMCashReceiptInsert SetReceiptValues(RMCashReceipt cashreceipt, string DOCNUMBR)
        {
            try
            {
                var rmcashreceipt = new taRMCashReceiptInsert
                {
                    CUSTNMBR      = cashreceipt.CUSTNMBR,
                    DOCNUMBR      = DOCNUMBR,
                    DOCDATE       = cashreceipt.DOCDATE.ToString("yyyy-MM-dd"),
                    ORTRXAMT      = cashreceipt.ORTRXAMT,
                    GLPOSTDT      = cashreceipt.GLPOSTDT.ToString("yyyy-MM-dd"),
                    BACHNUMB      = cashreceipt.BACHNUMB,
                    CSHRCTYP      = cashreceipt.CSHRCTYP,
                    CHEKBKID      = cashreceipt.CHEKBKID,
                    CHEKNMBR      = cashreceipt.CHEKNMBR,
                    CRCARDID      = cashreceipt.CRCARDID,
                    TRXDSCRN      = cashreceipt.TRXDSCRN,
                    LSTUSRED      = cashreceipt.LSTUSRED,
                    BatchCHEKBKID = cashreceipt.BatchCHEKBKID,
                    CURNCYID      = cashreceipt.CURNCYID,
                    XCHGRATE      = cashreceipt.XCHGRATE.GetValueOrDefault(),
                    RATETPID      = cashreceipt.RATETPID,
                    //EXPNDATE = cashreceipt.EXPNDATE
                    //EXCHDATE = cashreceipt.EXCHDATE
                    EXGTBDSC     = cashreceipt.EXGTBDSC,
                    EXTBLSRC     = cashreceipt.EXTBLSRC,
                    RATEEXPR     = cashreceipt.RATEEXPR.GetValueOrDefault(),
                    DYSTINCR     = cashreceipt.DYSTINCR.GetValueOrDefault(),
                    RATEVARC     = cashreceipt.RATEVARC.GetValueOrDefault(),
                    TRXDTDEF     = cashreceipt.TRXDTDEF.GetValueOrDefault(),
                    RTCLCMTD     = cashreceipt.RTCLCMTD.GetValueOrDefault(),
                    PRVDSLMT     = cashreceipt.PRVDSLMT.GetValueOrDefault(),
                    DATELMTS     = cashreceipt.DATELMTS.GetValueOrDefault(),
                    CREATEDIST   = cashreceipt.CREATEDIST.GetValueOrDefault(),
                    RequesterTrx = cashreceipt.RequesterTrx.GetValueOrDefault()
                };



                if (cashreceipt.EXPNDATE != null)
                {
                    rmcashreceipt.EXPNDATE = cashreceipt.EXPNDATE.GetValueOrDefault().ToString("yyyy-MM-dd");
                }

                if (cashreceipt.EXCHDATE != null)
                {
                    rmcashreceipt.EXCHDATE = cashreceipt.EXCHDATE.GetValueOrDefault().ToString("yyyy-MM-dd");
                }

                if (cashreceipt.TIME1 != null)
                {
                    rmcashreceipt.TIME1 = cashreceipt.TIME1.GetValueOrDefault().ToString("yyyy-MM-dd");
                }


                return(rmcashreceipt);
            }
            catch (Exception)
            {
                throw;
            }
        }
        /// <summary>
        /// Integra recibos de cobro y aplica a facturas
        /// </summary>
        /// <param name="worker"></param>
        /// <param name="e"></param>
        private void IntegraRMCobrosYAplicaciones(BackgroundWorker worker, DoWorkEventArgs e)
        {
            string mensajeOk    = "";
            string mensajeError = "";

            Model.RMFactura docGP = null;

            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
            string nroLote = DateTime.Now.ToString("yyyyMMdd.HHmmss");

            worker.ReportProgress(0, new string[] { "Collection receipt batch " + nroLote, "Collection receipt batch " + nroLote });
            cantidad = 0;
            foreach (var dato in _cobros.LBoletosBrasil)
            {
                mensajeOk    = "";
                mensajeError = "";
                DateTime fechaCobro = dato.FechaTotalLiquidado.AddDays(parametrosCobrosXL.FechaTotalLiquidadoAddDays);
                using (eConnectMethods eConnectMethods = new eConnectMethods())
                {
                    eConnectMethods.RequireProxyService = true;
                    List <RMCashReceiptsType> masterRMCashReceiptsType = new List <RMCashReceiptsType>();
                    List <RMApplyType>        masterRMApplyType        = new List <RMApplyType>();

                    try
                    {
                        bool error = false;

                        RMCashReceiptsType RMCashReceiptsTypeEntry = new RMCashReceiptsType();

                        taRMCashReceiptInsert CashReceiptItem = new taRMCashReceiptInsert();
                        //el número de la planilla puede venir así: B-10201, B-10201., B-10201 01, B-10201. 01
                        //string numFactura = dato.NumeroFactura.Trim().Length > 7 ? Model.Utiles.Izquierda(dato.NumeroFactura, 8) : Model.Utiles.Izquierda(dato.NumeroFactura, 7);
                        docGP = this.getCustnmbrDocnumbr(dato.NumeroFactura.Trim(), dato.FechaVencimientoPago);
                        decimal valorBoleto = decimal.Round(dato.ValorBoleto, 2);
                        decimal valorPago   = decimal.Round(dato.ValorPago, 2);

                        CashReceiptItem.CUSTNMBR = docGP.Custnmbr;                                       // custData["custnmbr"].ToString(); //_custnmbr;
                        CashReceiptItem.DOCNUMBR = "RB" + dato.NumeroCobro;
                        CashReceiptItem.DOCDATE  = fechaCobro.ToString(parametrosCobrosXL.FormatoFecha); //System.Configuration.ConfigurationManager.AppSettings[_pre + "_FormatoFecha"]);
                        CashReceiptItem.ORTRXAMT = valorPago;
                        CashReceiptItem.GLPOSTDT = CashReceiptItem.DOCDATE;
                        CashReceiptItem.BACHNUMB = nroLote;
                        CashReceiptItem.CSHRCTYP = 0;
                        CashReceiptItem.CHEKBKID = parametrosCobrosXL.ChekbkidDefault;                         //System.Configuration.ConfigurationManager.AppSettings[_pre + "_CHEKBKID"];
                        CashReceiptItem.CHEKNMBR = dato.NumeroCobro.ToString();
                        CashReceiptItem.TRXDSCRN = dato.NumeroFacturaYCuota;
                        RMApplyType RMApplyTypeEntry = new RMApplyType();

                        taRMApply ApplyItem = new taRMApply();
                        ApplyItem.APTODCNM  = docGP.Docnmbr; // custData["docnumbr"].ToString();   // _docnmbr.Trim();
                        ApplyItem.APFRDCNM  = "RB" + dato.NumeroCobro;
                        ApplyItem.APPTOAMT  = valorPago - Convert.ToDecimal(docGP.Amount) > 0 ? Convert.ToDecimal(docGP.Amount) : valorPago;
                        ApplyItem.APFRDCTY  = 9;
                        ApplyItem.APTODCTY  = 1;
                        ApplyItem.APPLYDATE = fechaCobro.ToString(parametrosCobrosXL.FormatoFecha);     // System.Configuration.ConfigurationManager.AppSettings[_pre + "_FormatoFecha"]);
                        ApplyItem.GLPOSTDT  = fechaCobro.ToString(parametrosCobrosXL.FormatoFecha);     // System.Configuration.ConfigurationManager.AppSettings[_pre + "_FormatoFecha"]);

                        cantidad++;

                        if (!error)
                        {
                            eConnectType eConnDoc = new eConnectType();
                            RMCashReceiptsTypeEntry.taRMCashReceiptInsert = CashReceiptItem;
                            masterRMCashReceiptsType.Add(RMCashReceiptsTypeEntry);
                            eConnDoc.RMCashReceiptsType = masterRMCashReceiptsType.ToArray();

                            RMApplyTypeEntry.taRMApply = ApplyItem;
                            masterRMApplyType.Add(RMApplyTypeEntry);
                            eConnDoc.RMApplyType = masterRMApplyType.ToArray();

                            XmlDocument xmlDoc = Serializa(eConnDoc);
                            eConnectMethods.CreateEntity(parametrosCobrosXL.ConnStringTarget, xmlDoc.OuterXml);

                            mensajeOk = dato.NumeroFactura + " - " + dato.NumeroCobro + ": Collection receipt OK" + Environment.NewLine;
                        }
                        else
                        {
                            mensajeError = dato.NumeroFactura + " - " + dato.NumeroCobro + ": Error" + Environment.NewLine;
                        }

                        System.Threading.Thread.Sleep(100);
                    }
                    catch (eConnectException ec)
                    {
                        mensajeError = dato.NumeroFactura + " - " + dato.NumeroCobro + " eConn: " + ec.Message + Environment.NewLine + ec.StackTrace;
                    }
                    catch (Exception ex)
                    {
                        mensajeError = dato.NumeroFactura + " - " + dato.NumeroCobro + ": " + ex.Message + Environment.NewLine + ex.StackTrace;
                    }
                    finally
                    {
                        eConnectMethods.Dispose();

                        worker.ReportProgress(0, new string[] { mensajeError, mensajeOk });
                    }
                }
            }
            worker.ReportProgress(0, new string[] { "Collection receipt uploading finished.", "Collection receipt uploading finished." });
        }