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);
        }
Пример #2
0
        private void ProcesarPago()
        {
            var ficha = new OOB.CtxCobrar.Pago.Ficha();

            ficha.Vendedor = FichaVendedor;
            ficha.Cobrador = (OOB.Empresa.Cobradores.Ficha)CB_COBRADORES.SelectedItem;
            ficha.Usuario  = FichaUsuario;

            ficha.ClienteId          = DocumentoCxC.IdAutCliente;
            ficha.ClienteCiRif       = DocumentoCxC.ClienteCiRif;
            ficha.ClienteCodigo      = DocumentoCxC.ClienteCodigo;
            ficha.ClienteRazonSocial = DocumentoCxC.ClienteNombre;
            ficha.ClienteDirFiscal   = FichaCliente.DirFiscal;
            ficha.ClienteTelefono    = FichaCliente.Telefonos;

            ficha.FechaRecibo      = DTP_FECHA_RELACION.Value.Date;
            ficha.MontoRecibo      = _montoRecibo;
            ficha.MontoRecibido    = _montoPagado;
            ficha.MontoAnticipos   = _montoAnticipos;
            ficha.MontoDescuentos  = _montoDsctos;
            ficha.MontoRetenciones = _montoRetenciones;
            ficha.Notas            = TB_NOTAS.Text;

            ficha.MontoFavorCliente = _montoFavorCliente;
            ficha.GenerarNotaCreditoMontoFavorCliente = true;

            ficha.DocLiquidar = new List <OOB.CtxCobrar.Pago.DocLiquida>();
            foreach (var doc in Doc.Where(d => d.IsSelected))
            {
                var it = new OOB.CtxCobrar.Pago.DocLiquida()
                {
                    IdDoc          = doc.Ficha.IdAuto,
                    NumeroDoc      = doc.Ficha.DocumentoNro,
                    FechaDoc       = doc.Ficha.FechaEmision,
                    MontoDoc       = (doc.Ficha.Total * doc.Ficha.Signo),
                    TipoDoc        = doc.Ficha.DocumentoTipo,
                    fechaRecepcion = doc.FechaRecepcionMercancia,
                    ToleranciaDias = doc.Ficha.DiasTolerancia,
                    ComisionPorc   = doc.Ficha.ComisionCobranzaP,
                    CastigoPorc    = doc.Ficha.CastigoP,
                    TipoOeracion   = doc.MontoAbonado == doc.Ficha.Saldo ?
                                     OOB.CtxCobrar.Enumerados.PorTipoOpreacion.Pago:
                                     OOB.CtxCobrar.Enumerados.PorTipoOpreacion.Abono,
                    MontoAbonado = (doc.MontoAbonado * doc.Ficha.Signo),
                };
                ficha.DocLiquidar.Add(it);
            }

            ficha.MediosPago = new List <OOB.CtxCobrar.Pago.MedioPago>();
            foreach (var mp in ListaMedios)
            {
                var it = new OOB.CtxCobrar.Pago.MedioPago()
                {
                    IdClave          = mp.ClaveId,
                    MedioId          = mp.Medio.IdAuto,
                    MedioCodigo      = mp.Medio.Codigo,
                    MedioDescripcion = mp.Medio.Nombre,
                    BancoId          = mp.Banco.Id,
                    BancoCodigo      = mp.Banco.Codigo,
                    BancoDescripcion = mp.Banco.Nombre,
                    BancoNroCta      = mp.Banco.Numero,
                    MontoRecibido    = mp.Importe,
                    FechaMovimiento  = mp.Fecha,
                    NroReferencia    = mp.Referencia,
                };
                ficha.MediosPago.Add(it);
            }

            ficha.Retenciones = new List <OOB.CtxCobrar.Pago.RetencionIva>();
            foreach (var doc in Doc.Where(d => d.IsSelected && d.MontoPorRetencionIva > 0))
            {
                var VentaId           = "";
                var VentaControl      = "";
                var VentaNumero       = "";
                var VentaFechaEmision = new DateTime();
                var VentaTipo         = OOB.Venta.Enumerados.TipoDocumento.SinDefinir;
                var VentaTasaIva_1    = 0.0m;

                VentaId           = doc.Ficha.IdAutoDocumentoVenta;
                VentaControl      = doc.RetencionPorIva.NroControl;
                VentaNumero       = doc.RetencionPorIva.DocumentoNro;
                VentaFechaEmision = doc.RetencionPorIva.FechaEmision;
                VentaTasaIva_1    = doc.RetencionPorIva.TasaIva;
                switch (doc.Ficha.DocumentoTipo)
                {
                case OOB.CtxCobrar.Enumerados.PorTipoDocumento.Factura:
                    VentaTipo = OOB.Venta.Enumerados.TipoDocumento.Factura;
                    break;

                case OOB.CtxCobrar.Enumerados.PorTipoDocumento.NtDebito:
                    VentaTipo = OOB.Venta.Enumerados.TipoDocumento.NDebito;
                    break;

                case OOB.CtxCobrar.Enumerados.PorTipoDocumento.NtCredito:
                    VentaTipo = OOB.Venta.Enumerados.TipoDocumento.NCredito;
                    break;
                }

                var it = new OOB.CtxCobrar.Pago.RetencionIva()
                {
                    DocumentoId      = VentaId,
                    DocumentoControl = VentaControl,
                    DocumentoNro     = VentaNumero,
                    DocumentoFecha   = VentaFechaEmision,
                    DocumentoTasaIva = VentaTasaIva_1,
                    DocumentoTipo    = VentaTipo,
                    ComprobanteNro   = doc.RetencionPorIva.ComprobanteNro,
                    DeFecha          = doc.RetencionPorIva.FechaRetencion,
                    MontoBase        = doc.RetencionPorIva.MontoBase,
                    MontoExcento     = doc.RetencionPorIva.MontoExcento,
                    MontoImpuesto    = doc.RetencionPorIva.MontoImpuesto,
                    MontoRetencion   = doc.RetencionPorIva.MontoRetencion,
                    MontoTotal       = doc.RetencionPorIva.MontoTotal,
                    TasaRetencion    = doc.RetencionPorIva.TasaRetencion,
                };
                ficha.Retenciones.Add(it);
            }

            ficha.Comisiones = new List <OOB.CtxCobrar.Pago.Comision>();
            foreach (var doc in ComisionesVend.Comision)
            {
                var it = new OOB.CtxCobrar.Pago.Comision()
                {
                    ClaveIdRelMedioPago      = doc.Pago.ClaveId,
                    IdDocCxc                 = doc.DocLiquidar.Ficha.IdAuto,
                    FechaDocCxc              = doc.DocLiquidar.FechaEmi,
                    FechaRecepcionMercDocCxc = doc.FechaRecepcionMercancia,
                    MontoDocCxc              = doc.DocLiquidar.Ficha.Total,
                    ComisionPorc             = doc.DocLiquidar.Ficha.ComisionCobranzaP,
                    CastigoPorc              = doc.DocLiquidar.Ficha.CastigoP,
                    BaseCalculo              = doc.BaseCalculo,
                    MontoRecibido            = doc.SobreEsteMontoRecibido,
                    ToleranciaDias           = doc.DocLiquidar.Ficha.DiasTolerancia,
                    TotalComision            = doc.ComisionMonto,
                    IsCastigado              = doc.AplicaCastigo,
                    DiasTranscurridos        = doc.DiasTranscurridos,
                };
                ficha.Comisiones.Add(it);
            }

            var r01 = Globals.MyData.CtaxCobrar_Pago_Procesar(ficha);

            if (r01.Result == OOB.Resultado.EnumResult.isError)
            {
                Helpers.Msg.Error(r01.Mensaje);
                return;
            }

            Helpers.Msg.AgregarOk();
            this.Close();
        }