public ActionResult Guardar(OrdenDePagoViewModel ordenPagoViewModel)
        {
            Mapper.CreateMap <OrdenDePagoViewModel, OrdenDePago>();
            var ordenDePago = Mapper.Map <OrdenDePagoViewModel, OrdenDePago>(ordenPagoViewModel);

            var result = ordenPagoViewModel.Id > 0 ?
                         ordenComponent.Actualizar(ordenDePago) :
                         ordenComponent.Registrar(ordenDePago);

            if (!result)
            {
                ViewBag.Mensaje = "Ocurrio un error al guardar informacion de orden de pago";
                return(View("~/Views/Shared/_Mensajes.cshtml"));
            }

            return(Redirect("~/"));
        }
        private void GenerarOP()
        {
            var selectedrowhandles = gridViewLiquidacion.GetSelectedRows();

            if (selectedrowhandles.Count() == 0)
            {
                return;
            }

            var retenciones = new String[]
            {
                RetencionTypes.RetencionIIBB,
                RetencionTypes.RetencionEEAOC,
                RetencionTypes.RetencionSaludPublica,
                RetencionTypes.RetencionGADM,
                RetencionTypes.RetencionGCIAS,
                RetencionTypes.RetencionRiego,
            };

            var retencionesdeordenvm = new List <RetencionAplicadaViewModel>();

            foreach (var item in retenciones)
            {
                var retencionvm = new RetencionAplicadaViewModel()
                {
                    Nombre  = item,
                    Importe = 0
                };

                retencionesdeordenvm.Add(retencionvm);
            }

            var netodeorden = 0m;
            var itemsvm     = new List <ConceptoDeOrdenDePagoViewModel>();

            foreach (var rowhandle in selectedrowhandles)
            {
                var row = gridViewLiquidacion.GetRow(rowhandle) as RowLiquidacion;

                var retencionesdeconceptovm = new List <RetencionAplicadaViewModel>();

                foreach (var item in retenciones)
                {
                    var importe = (decimal)gridViewLiquidacion.GetRowCellValue(rowhandle, item);

                    var retencionaplicada = new RetencionAplicadaViewModel()
                    {
                        Nombre  = item,
                        Importe = importe
                    };
                    retencionesdeconceptovm.Add(retencionaplicada);

                    var retenciondeorden = retencionesdeordenvm.Where(x => x.Nombre == item).Single();
                    retenciondeorden.Importe += importe;
                }

                var neto  = (decimal)gridViewLiquidacion.GetRowCellValue(rowhandle, "NetoPorPagar");
                var kilos = (decimal)gridViewLiquidacion.GetRowCellValue(rowhandle, "Kilos");

                var conceptovm = new ConceptoDeOrdenDePagoViewModel()
                {
                    PesadaId             = row.ID,
                    ProductorId          = row.PRODUCTORID,
                    KilosAfectados       = Convert.ToDecimal(row.Kilos),
                    ImportePorPagar      = row.ImportePorPagar,
                    RetencionesAplicadas = retencionesdeconceptovm,

                    NetoPorPagar = neto,
                };

                itemsvm.Add(conceptovm);

                netodeorden += neto;
            }

            var fechadepago   = dpFechaPago.Value.Date;
            var observaciones = txtObservaciones.Text.Trim();

            var ordendepagovm = new OrdenDePagoViewModel()
            {
                Id                   = Guid.NewGuid(),
                NumeroDeOrden        = 0,
                NumeroInternoDeOrden = 0,
                FechaDePago          = fechadepago,
                RetencionesAplicadas = retencionesdeordenvm,
                Items                = itemsvm,
                ImporteNeto          = netodeorden,
                Observaciones        = observaciones
            };

            _pagosManager.GenerarOrdenDePago(ordendepagovm);
        }
Example #3
0
        public void GenerarOrdenDePago(OrdenDePagoViewModel ordenvm)
        {
            var ordenid           = Guid.NewGuid();
            var idspesadasdeorden = new List <Guid>();

            //var conceptosdepesadas = new Dictionary<Guid, Guid>();

            using (var context = new CooperativaProduccionEntities())
            {
                var conceptos = new List <ConceptoDeOrdenDePago>();

                foreach (var item in ordenvm.Items)
                {
                    var concepto = new ConceptoDeOrdenDePago();

                    concepto.Id          = Guid.NewGuid();
                    concepto.PesadaId    = item.PesadaId;
                    concepto.ProductorId = item.ProductorId;

                    concepto.Kilos    = item.KilosAfectados;
                    concepto.Subtotal = item.ImportePorPagar;

                    var retencionIIBB         = item.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionIIBB).Single();
                    var retencionEEAOC        = item.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionEEAOC).Single();
                    var retencionSaludPublica = item.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionSaludPublica).Single();
                    var retencionGADM         = item.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionGADM).Single();
                    var retencionGCIAS        = item.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionGCIAS).Single();
                    var retencionRiego        = item.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionRiego).Single();

                    concepto.RetencionIIBB         = retencionIIBB.Importe;
                    concepto.RetencionEEAOC        = retencionEEAOC.Importe;
                    concepto.RetencionSaludPublica = retencionSaludPublica.Importe;
                    concepto.RetencionGADM         = retencionGADM.Importe;
                    concepto.RetencionGanancias    = retencionGCIAS.Importe;
                    concepto.RetencionRiego        = retencionRiego.Importe;

                    concepto.Neto = item.NetoPorPagar;

                    idspesadasdeorden.Add(item.PesadaId);
                    //conceptosdepesadas.Add(concepto.Id, item.PesadaId);
                    conceptos.Add(concepto);
                }

                var numerodeorden        = this.GetNumeroDeOrden();
                var numerointernodeorden = this.GetNumeroInternoDeOrden();

                var orden = new OrdenPago();

                orden.Id              = ordenid;
                orden.NumOrdenPago    = numerodeorden;
                orden.NumIntOrdenPago = numerointernodeorden;
                orden.Fecha           = ordenvm.FechaDePago;
                orden.Detalle         = ordenvm.Observaciones;

                var retenciondeordenIIBB         = ordenvm.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionIIBB).Single();
                var retenciondeordenEEAOC        = ordenvm.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionEEAOC).Single();
                var retenciondeordenSaludPublica = ordenvm.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionSaludPublica).Single();
                var retenciondeordenGADM         = ordenvm.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionGADM).Single();
                var retenciondeordenGCIAS        = ordenvm.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionGCIAS).Single();
                var retenciondeordenRiego        = ordenvm.RetencionesAplicadas.Where(x => x.Nombre == RetencionTypes.RetencionRiego).Single();

                orden.IIBB         = retenciondeordenIIBB.Importe;
                orden.EEAOC        = retenciondeordenEEAOC.Importe;
                orden.SaludPublica = retenciondeordenSaludPublica.Importe;
                orden.GADM         = retenciondeordenGADM.Importe;
                orden.Ganancias    = retenciondeordenGCIAS.Importe;
                orden.Riego        = retenciondeordenRiego.Importe;

                orden.ConceptoDeOrdenDePago = conceptos;

                orden.Neto = ordenvm.ImporteNeto;

                context.OrdenPago.Add(orden);
                context.SaveChanges();
            }

            // UNA LIQUIDACION PUEDE TENER MUCHAS ORDENES

            //using (var context = new CooperativaProduccionEntities())
            //{
            //    var liquidaciones = context.Pesada
            //        .Where(x => idspesadasdeorden.ContainsKey(x.Id))
            //        //.Where(x => conceptosdepesadas.ContainsKey(x.Id))
            //        .ToList();
            //
            //    foreach (var item in liquidaciones)
            //    {
            //        item.OrdenPagoId = ordenid;
            //        //item.OrdenPagoId = conceptosdepesadas[item.Id];
            //
            //        context.Entry(item).State = System.Data.Entity.EntityState.Modified;
            //    }
            //
            //    context.SaveChanges();
            //}
        }