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);
        }
예제 #2
0
        private OrdenesDePagoDetalleViewModel _GetViewModelOrdenesDePagos(List <Vw_OrdenPago> entities)
        {
            var retenciones = new String[]
            {
                RetencionTypes.RetencionIIBB,
                RetencionTypes.RetencionEEAOC,
                RetencionTypes.RetencionSaludPublica,
                RetencionTypes.RetencionGADM,
                RetencionTypes.RetencionGCIAS,
                RetencionTypes.RetencionRiego
            };

            var retencionesvm = new List <RetencionViewModel>();

            foreach (var item in retenciones)
            {
                var retencionvm = new RetencionViewModel()
                {
                    Nombre = item
                };

                retencionesvm.Add(retencionvm);
            }

            var items = new List <OrdenDePagoDetalleViewModel>();

            foreach (var x in entities)
            {
                var aplicadasvm = new List <RetencionAplicadaViewModel>();

                foreach (var ret in retenciones)
                {
                    RetencionAplicadaViewModel aplicadavm;

                    switch (ret)
                    {
                    case RetencionTypes.RetencionIIBB:
                        aplicadavm = new RetencionAplicadaViewModel()
                        {
                            Nombre  = RetencionTypes.RetencionIIBB,
                            Importe = x.IIBB.Value
                        };
                        break;

                    case (RetencionTypes.RetencionEEAOC):
                        aplicadavm = new RetencionAplicadaViewModel()
                        {
                            Nombre  = RetencionTypes.RetencionEEAOC,
                            Importe = x.EEAOC.Value
                        };
                        break;

                    case RetencionTypes.RetencionSaludPublica:
                        aplicadavm = new RetencionAplicadaViewModel()
                        {
                            Nombre  = RetencionTypes.RetencionSaludPublica,
                            Importe = x.SaludPublica.Value
                        };
                        break;

                    case RetencionTypes.RetencionGADM:
                        aplicadavm = new RetencionAplicadaViewModel()
                        {
                            Nombre  = RetencionTypes.RetencionGADM,
                            Importe = x.GADM.Value
                        };
                        break;

                    case RetencionTypes.RetencionGCIAS:
                        aplicadavm = new RetencionAplicadaViewModel()
                        {
                            Nombre  = RetencionTypes.RetencionGCIAS,
                            Importe = x.Ganancias.Value
                        };
                        break;

                    case RetencionTypes.RetencionRiego:
                        aplicadavm = new RetencionAplicadaViewModel()
                        {
                            Nombre  = RetencionTypes.RetencionRiego,
                            Importe = x.Riego.Value
                        };
                        break;

                    default:
                        throw new InvalidOperationException("No se reconoce la retencion asignada: " + ret);
                    }

                    aplicadasvm.Add(aplicadavm);
                }

                var ordenvm = new OrdenDePagoDetalleViewModel()
                {
                    Id                   = x.OrdenPagoId,
                    ProductorId          = x.ProductorId,
                    Fecha                = x.Fecha,
                    Productor            = x.NOMBRE,
                    FET                  = x.nrofet,
                    CUIT                 = x.CUIT,
                    ImportePorPagar      = x.Subtotal.Value,
                    RetencionesAplicadas = aplicadasvm,
                    ImporteNeto          = x.Neto
                };

                items.Add(ordenvm);
            }

            var ordenesvm = new OrdenesDePagoDetalleViewModel()
            {
                Retenciones = retencionesvm,
                Items       = items
            };

            return(ordenesvm);
        }