Example #1
0
        // GET: Comprobantes/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Comprobante comprobante = comprobantesManager.GetComprobante(id.Value);

            if (comprobante == null)
            {
                return(HttpNotFound());
            }
            return(View(comprobante));
        }
Example #2
0
        // GET: CuentasAsientos
        public ActionResult Index(int id = 0)
        {
            if (id == 0)
            {
                return(RedirectToAction("Index", "Comprobantes"));
            }

            var comprobante = comprobantesManager.GetComprobante(id);

            if (comprobante != null)
            {
                ViewBag.ComprobanteId     = comprobante.Id;
                ViewBag.FechaComprobante  = comprobante.FechaComprobante.ToString("dd'/'MM'/'yyyy");
                ViewBag.NumeroComprobante = comprobante.NumeroComprobante;
                ViewBag.Facility          = string.Format("{0} - {1}", comprobante.Facility.Codigo, comprobante.Facility.Nombre); // "R0031514 - PAF CV";
                ViewBag.FacilityId        = comprobante.FacilityId;
                ViewBag.TipoComprobanteId = comprobante.TipoComprobanteId;
                ViewBag.TipoComprobante   = comprobante.TiposComprobante.Nombre;
                ViewBag.FichaBanco        = comprobante.CuentaBanco != null ? comprobante.CuentaBanco.FichaBanco : string.Empty; // "4020BK1177-C1108001-MAESTRO CARE EL ALTO";
                ViewBag.TipoMoneda        = comprobante.TiposMoneda.Moneda;
                var tipoCambioActual = tiposCambioManager.GetTiposCambioByFecha(DateTime.Now.Date).FirstOrDefault(tc => tc.TipoMonedaId == 2);
                ViewBag.TipoCambio = tipoCambioActual != null?tipoCambioActual.Valor.ToString("N2") : "0";

                ViewBag.TotalDebe  = comprobante.CuentasAsientos.Where(c => c.Activo).Sum(c => c.Debe);
                ViewBag.TotalHaber = comprobante.CuentasAsientos.Where(c => c.Activo).Sum(c => c.Haber);

                ViewBag.FacilityActual      = comprobante.Facility;
                ViewBag.EstadoComprobante   = comprobante.EstadosComprobante.Nombre;
                ViewBag.CiudadIdComprobante = comprobante.CiudadId;
            }

            ViewBag.PlanProgramaticoId = new SelectList(planProgramaticoManager.GetAllPlan(), "Id", "NombreDespliegue");
            ViewBag.CuentaContableId   = new SelectList(cuentasContablesManager.GetAllCuentasContables(), "Id", "NombreDespliegue");

            // Parametricas
            ViewBag.TerritorioId      = new SelectList(new TerritoriosManager().GetAllTerritorios(), "Id", "NombreDespliegue");
            ViewBag.ContraparteId     = new SelectList(new ContrapartesManager().GetAllContrapartes(), "Id", "Nombre");
            ViewBag.AnexoTributarioId = new SelectList(new AnexosTributariosManager().GetAllAnexosTributarios(), "Id", "Descripcion");
            ViewBag.CodigoAuditoriaId = new SelectList(new CodigosAuditoriasManager().GetAllCodigosAuditoria(), "Id", "Descripcion");
            ViewBag.AccionNacionalId  = new SelectList(new AccionesNacionalesManager().GetAllAccionesNacionales(), "Id", "NombreDespliegue");
            ViewBag.MarcoLogicoId     = new SelectList(new CodigosAuditoriasManager().GetAllCodigosMarcoLogico(), "Id", "Codigo");

            //////Transferencias
            ////var comprobantesANIds = traspasosProgramasManager.GetAllTraspasosProgramas().Where(c => c.CuentaTransitoriaNumero == "88110" && c.ComprobanteProgramaId == null).Select(c => c.ComprobanteProgramaId).ToList();

            ////var comprobantesPendientesANIds = comprobantesManager.GetComprobantesPorFacility(comprobante.FacilityId).Where(c => comprobantesANIds.Contains(c.Id)).Select(c => c.Id).ToList();

            ////var cuentasTraspasosManutencion = cuentasAsientosManager.GetAllCuentasAsientos().Where(c => comprobantesPendientesANIds.Contains(c.ComprobanteId) && c.CuentaContable.Numero == "88110").ToList();

            ////ViewBag.TransfManutencion = cuentasTraspasosManutencion;
            ////ViewBag.TransfManutencionTotalDebe = cuentasTraspasosManutencion.Sum(c => c.Debe);
            ////ViewBag.TransfManutencionTotalHaber = cuentasTraspasosManutencion.Sum(c => c.Haber);

            //Plantillas de Asientos del Usuario Actual
            var usuarioActual      = HttpContext.User.Identity.Name;
            var plantillasAsientos = plantillasAsientosManager.GetPlantillasAsientosPorUsuario(usuarioActual);

            ViewBag.PlantillasAsientos = plantillasAsientos;

            //Observaciones
            var observaciones = observacionesManager.GetObservacionesPorEntidadFacility(2, comprobante.Id, comprobante.Facility.Id);

            if (HttpContext.User.IsInRole("ADMN-PRG"))
            {
                observaciones             = observaciones.Where(o => !o.Aprobado).ToList();
                ViewBag.ExisteObservacion = observaciones.Any();
            }

            var historialObservaciones = observaciones.Aggregate(string.Empty, (current, observacion) => current + string.Format("{0} - {1} : {2}\n", observacion.UsuarioCreacion, observacion.FechaCreacion.ToString("dd'/'MM'/'yyyy", null), observacion.Descripcion));

            ViewBag.HistorialObservaciones = historialObservaciones;

            //Cuentas del Asiento Actual
            var cuentasAsientos      = new List <CuentaAsiento>();
            var cuentasAsientosDebe  = comprobante.CuentasAsientos.Where(c => c.Debe > 0 && c.Activo).OrderBy(c => c.CuentaContable.Numero);
            var cuentasAsientosHaber = comprobante.CuentasAsientos.Where(c => c.Haber > 0 && c.Activo).OrderBy(c => c.CuentaContable.Numero);

            cuentasAsientos = cuentasAsientosDebe.Union(cuentasAsientosHaber).ToList();

            return(View(cuentasAsientos));
        }
        /// <summary>
        /// Genera asiento con retenciĆ³n IUE
        /// </summary>
        /// <param name="retencion"></param>
        private void GenerarRetenido(RetencionVista retencion)
        {
            var usuarioActual     = HttpContext.User.Identity.Name;
            var comprobanteActual = comprobantesManager.GetComprobante(retencion.ComprobanteId);

            var retencionIt    = (retencion.Importe * 0.03M);
            var retencionIue   = retencion.TipoRetencionId == 1 ? (retencion.Importe * 0.125M) : (retencion.Importe * 0.05M);
            var retencionRcIva = retencion.Importe * 0.13M;
            var retencionIueBe = retencion.Importe * 0.125M;

            var anexoTributarioId  = 0;
            var importeRetencion   = 0M;
            var importeRetencionIt = 0M;
            var importeCajaBancos  = 0M;

            switch (retencion.TipoRetencionId)
            {
            case 1:
            case 2:
                anexoTributarioId  = 10;
                importeRetencion   = retencionIue;
                importeRetencionIt = retencionIt;
                importeCajaBancos  = retencion.Importe - retencionIt - retencionIue;
                break;

            case 3:
                anexoTributarioId  = 8;
                importeRetencion   = retencionRcIva;
                importeRetencionIt = retencionIt;
                importeCajaBancos  = retencion.Importe - retencionIt - retencionRcIva;
                break;

            case 4:
                anexoTributarioId = 8;
                importeRetencion  = retencionRcIva;
                importeCajaBancos = retencion.Importe - retencionRcIva;
                break;

            case 5:
                anexoTributarioId = 11;
                importeRetencion  = retencionIueBe;
                importeCajaBancos = retencion.Importe - retencionIueBe;
                break;
            }

            var cuentaAsientoPersonalizada = new CuentaAsiento
            {
                ComprobanteId       = retencion.ComprobanteId,
                CuentaContableId    = retencion.CuentaContableId,
                Glosa               = retencion.Glosa,
                Debe                = retencion.Importe,
                Haber               = 0,
                TerritorioId        = 1,
                PlanProgramaticoId  = 6,
                ContraparteId       = 1,
                AnexoTributarioId   = anexoTributarioId,
                EsDebe              = true,
                EsAjuste            = false,
                UsuarioCreacion     = usuarioActual,
                UsuarioModificacion = usuarioActual
            };

            cuentasAsientosManager.InsertCuentaAsiento(cuentaAsientoPersonalizada);

            if (retencion.TipoRetencionId == 1 || retencion.TipoRetencionId == 2 || retencion.TipoRetencionId == 3)
            {
                var cuentaAsientoIt = new CuentaAsiento
                {
                    ComprobanteId       = retencion.ComprobanteId,
                    CuentaContableId    = 1280,
                    Glosa               = retencion.Glosa,
                    Debe                = 0,
                    Haber               = retencionIt,
                    TerritorioId        = 1,
                    PlanProgramaticoId  = 6,
                    ContraparteId       = 1,
                    AnexoTributarioId   = 9, //RetenciĆ³n IT
                    EsDebe              = false,
                    EsAjuste            = false,
                    UsuarioCreacion     = usuarioActual,
                    UsuarioModificacion = usuarioActual
                };

                cuentasAsientosManager.InsertCuentaAsiento(cuentaAsientoIt);
            }

            if (retencion.TipoRetencionId == 1 || retencion.TipoRetencionId == 2)
            {
                var cuentaAsientoIue = new CuentaAsiento
                {
                    ComprobanteId       = retencion.ComprobanteId,
                    CuentaContableId    = 1281,
                    Glosa               = retencion.Glosa,
                    Debe                = 0,
                    Haber               = retencionIue,
                    TerritorioId        = 1,
                    PlanProgramaticoId  = 6,
                    ContraparteId       = 1,
                    AnexoTributarioId   = anexoTributarioId,
                    EsDebe              = false,
                    EsAjuste            = false,
                    UsuarioCreacion     = usuarioActual,
                    UsuarioModificacion = usuarioActual
                };

                cuentasAsientosManager.InsertCuentaAsiento(cuentaAsientoIue);
            }


            if (retencion.TipoRetencionId == 3 || retencion.TipoRetencionId == 4)
            {
                var cuentaAsientoRcIva = new CuentaAsiento
                {
                    ComprobanteId       = retencion.ComprobanteId,
                    CuentaContableId    = 1283,
                    Glosa               = retencion.Glosa,
                    Debe                = 0,
                    Haber               = retencionRcIva,
                    TerritorioId        = 1,
                    PlanProgramaticoId  = 6,
                    ContraparteId       = 1,
                    AnexoTributarioId   = anexoTributarioId,
                    EsDebe              = false,
                    EsAjuste            = false,
                    UsuarioCreacion     = usuarioActual,
                    UsuarioModificacion = usuarioActual
                };

                cuentasAsientosManager.InsertCuentaAsiento(cuentaAsientoRcIva);
            }

            if (retencion.TipoRetencionId == 5)
            {
                var cuentaAsientoIueBe = new CuentaAsiento
                {
                    ComprobanteId       = retencion.ComprobanteId,
                    CuentaContableId    = 1282,
                    Glosa               = retencion.Glosa,
                    Debe                = 0,
                    Haber               = retencionIueBe,
                    TerritorioId        = 1,
                    PlanProgramaticoId  = 6,
                    ContraparteId       = 1,
                    AnexoTributarioId   = anexoTributarioId,
                    EsDebe              = false,
                    EsAjuste            = false,
                    UsuarioCreacion     = usuarioActual,
                    UsuarioModificacion = usuarioActual
                };

                cuentasAsientosManager.InsertCuentaAsiento(cuentaAsientoIueBe);
            }

            var cuentaAsientoCaja = new CuentaAsiento
            {
                ComprobanteId       = retencion.ComprobanteId,
                CuentaContableId    = 775,
                Glosa               = retencion.Glosa,
                Debe                = 0,
                Haber               = importeCajaBancos,
                TerritorioId        = 1,
                PlanProgramaticoId  = 6,
                ContraparteId       = 1,
                AnexoTributarioId   = anexoTributarioId,
                EsDebe              = false,
                EsAjuste            = false,
                UsuarioCreacion     = usuarioActual,
                UsuarioModificacion = usuarioActual
            };

            cuentasAsientosManager.InsertCuentaAsiento(cuentaAsientoCaja);

            // Insertar Objeto Retencion
            var retencionEntidad = new Retencion
            {
                ComprobanteId       = retencion.ComprobanteId,
                FechaComprobante    = comprobanteActual.FechaComprobante,
                TipoRetencionId     = (short)retencion.TipoRetencionId,
                ImporteRetencion    = importeRetencion,
                ImporteRetencionIT  = importeRetencionIt,
                Retenido            = true,
                UsuarioCreacion     = usuarioActual,
                UsuarioModificacion = usuarioActual
            };

            retencionesManager.InsertRetencion(retencionEntidad);
        }