public OOB.Resultado.ResultadoEntidad <string> CtaxCobrar_Pago_Procesar(OOB.CtxCobrar.Pago.Ficha pago)
        {
            var rt = new OOB.Resultado.ResultadoEntidad <string>();

            try
            {
                var pagoDTO = new DTO.CtaxCobrar.Pago.Ficha()
                {
                    ClienteId        = pago.ClienteId,
                    ClienteCodigo    = pago.ClienteCodigo,
                    ClienteRif       = pago.ClienteCiRif,
                    ClienteNombre    = pago.ClienteRazonSocial,
                    ClienteDireccion = pago.ClienteDirFiscal,
                    ClienteTelefono  = pago.ClienteTelefono,

                    VendedorId     = pago.Vendedor.IdAuto,
                    VendedorCodigo = pago.Vendedor.Codigo,
                    VendedorNombre = pago.Vendedor.Nombre,
                    VendedorCiRif  = pago.Vendedor.CiRif,

                    CobradorId     = pago.Cobrador.IdAuto,
                    CobradorCodigo = pago.Cobrador.Codigo,
                    CobradorNombre = pago.Cobrador.Nombre,

                    UsuarioId     = pago.Usuario.IdAuto,
                    UsuarioNombre = pago.Usuario.Nombre,

                    FechaRecibo           = pago.FechaRecibo,
                    TotalMontoRecibo      = pago.MontoRecibo,
                    TotalMontoRecibido    = pago.MontoRecibido,
                    TotalMontoAnticipos   = pago.MontoAnticipos,
                    TotalMontoDescuentos  = pago.MontoDescuentos,
                    TotalMontoRetenciones = pago.MontoRetenciones,
                    Notas             = pago.Notas,
                    MontoFavorCliente = pago.MontoFavorCliente,
                    GenerarNotaCreditoMontoFavorCliente = pago.GenerarNotaCreditoMontoFavorCliente,
                };

                var Comisiones = new List <DTO.CtaxCobrar.Pago.Comision>();
                if (pago.Comisiones != null)
                {
                    foreach (var com in pago.Comisiones)
                    {
                        var it = new DTO.CtaxCobrar.Pago.Comision()
                        {
                            IdClaveRelMedioPago   = com.ClaveIdRelMedioPago,
                            DocCxc_Id             = com.IdDocCxc,
                            DocCxc_Fecha          = com.FechaDocCxc,
                            DocCxc_FechaRecepcion = com.FechaRecepcionMercDocCxc,
                            ComisionPorc          = com.ComisionPorc,
                            CastigoPorc           = com.CastigoPorc,
                            BaseCalculo           = com.BaseCalculo,
                            MontoRecibido         = com.MontoRecibido,
                            ToleranciaDias        = com.ToleranciaDias,
                            TotalComision         = com.TotalComision,
                            IsCastigado           = com.IsCastigado,
                            DiasTranscurridos     = com.DiasTranscurridos,
                        };
                        Comisiones.Add(it);
                    }
                }
                pagoDTO.Comisiones = Comisiones;

                var retenciones = new List <DTO.CtaxCobrar.Pago.RetencionIva>();
                if (pago.Retenciones != null)
                {
                    foreach (var _rt in pago.Retenciones)
                    {
                        var it = new DTO.CtaxCobrar.Pago.RetencionIva()
                        {
                            DocumentoId      = _rt.DocumentoId,
                            DocumentoNro     = _rt.DocumentoNro,
                            DocumentoFecha   = _rt.DocumentoFecha,
                            DocumentoControl = _rt.DocumentoControl,
                            DocumentoTasaIva = _rt.DocumentoTasaIva,
                            DocumentoTipo    = (DTO.CtaxCobrar.Pago.Enumerados.TipoDoc)_rt.DocumentoTipo,
                            ComprobanteNro   = _rt.ComprobanteNro,
                            DeFecha          = _rt.DeFecha,
                            MontoExcento     = _rt.MontoExcento,
                            MontoBase        = _rt.MontoBase,
                            MontoImpuesto    = _rt.MontoImpuesto,
                            MontoTotal       = _rt.MontoTotal,
                            TasaRetencion    = _rt.TasaRetencion,
                            MontoRetencion   = _rt.MontoRetencion,
                        };
                        retenciones.Add(it);
                    }
                }
                pagoDTO.RetencionesIva = retenciones;

                var mediosPago = new List <DTO.CtaxCobrar.Pago.MedioPago>();
                if (pago.MediosPago != null)
                {
                    foreach (var _mp in pago.MediosPago)
                    {
                        var it = new DTO.CtaxCobrar.Pago.MedioPago()
                        {
                            IdClave          = _mp.IdClave,
                            autoMedioId      = _mp.MedioId,
                            autoBancoId      = _mp.BancoId,
                            CodigoMedio      = _mp.MedioCodigo,
                            DescripcionMedio = _mp.MedioDescripcion,
                            MontoRecibido    = _mp.MontoRecibido,
                            FechaMovimiento  = _mp.FechaMovimiento,
                            Referencia       = _mp.NroReferencia,
                            BancoCodigo      = _mp.BancoCodigo,
                            BancoDescripcion = _mp.BancoDescripcion,
                            BancoNroCta      = _mp.BancoNroCta,
                        };
                        mediosPago.Add(it);
                    }
                }
                pagoDTO.MediosPago = mediosPago;

                var doc = new List <DTO.CtaxCobrar.Pago.DocumentoCxC>();
                if (pago.DocLiquidar != null)
                {
                    foreach (var _doc in pago.DocLiquidar)
                    {
                        var it = new DTO.CtaxCobrar.Pago.DocumentoCxC()
                        {
                            autoId          = _doc.IdDoc,
                            DocumentoNumero = _doc.NumeroDoc,
                            DocumentoFecha  = _doc.FechaDoc,
                            DocumentoTipo   = (DTO.CtaxCobrar.Pago.Enumerados.TipoDoc)_doc.TipoDoc,
                            DocumentoTotal  = _doc.MontoDoc,
                            fechaRecepcion  = _doc.fechaRecepcion,
                            ComisionPorc    = _doc.ComisionPorc,
                            CastigoPorc     = _doc.CastigoPorc,
                            TipoOeracion    = (DTO.CtaxCobrar.Pago.Enumerados.Operacion)_doc.TipoOeracion,
                            MontoAbonado    = _doc.MontoAbonado,
                            ToleranciaDias  = _doc.ToleranciaDias,
                        };
                        doc.Add(it);
                    }
                }
                pagoDTO.DocumentosCxcPagar = doc;

                var resultDTO = _servicio.CtaxCobrar_Pago_Procesar(pagoDTO);
                if (resultDTO.Result == DTO.EnumResult.isError)
                {
                    rt.Mensaje = resultDTO.Mensaje;
                    rt.Result  = OOB.Resultado.EnumResult.isError;
                    return(rt);
                }

                rt.Entidad = resultDTO.Entidad;
            }
            catch (Exception e)
            {
                rt.Mensaje = e.Message;
                rt.Result  = OOB.Resultado.EnumResult.isError;
            }

            return(rt);
        }
 //CTAxCOBRAR/PAGO
 public DTO.ResultadoEntidad <string> CtaxCobrar_Pago_Procesar(DTO.CtaxCobrar.Pago.Ficha pago)
 {
     return(provider.CtaxCobrar_Pago_Procesar(pago));
 }