Beispiel #1
0
        public override void Guardar()
        {
            try
            {
                txtCentinela.Focus();//Para rebindeeen los campos
                var falloCentinela = new Fallo();
                falloCentinela.Anexo = AnexoSelect;
                falloCentinela.FechaFallo = FalloService.AnexoDao.FechaServidor();

                //Se usa un fallo centinela para las validaciones
                if (!Util.DatosValidos(falloCentinela, lblNumErrors, listaError))
                    return;

                if (FalloService.CotizacionDao.ExisteAnexoFallo(AnexoSelect))
                {
                   XtraMessageBox.Show(@"El anexo ya tiene fallo eliminelo antes",
                                                 @"Adquisiciones", MessageBoxButtons.OK,
                                                 MessageBoxIcon.Information);
                  return;
                }

                var lista = FalloService.GuardarFallo(AnexoSelect, falloCentinela.FechaFallo.Value);

                if (lista.Count > 0)
                {
                    XtraMessageBox.Show(@"Fallo realizado Exitosamente Anexo " + AnexoSelect.NumeroAnexo,
                                    @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    base.EntityActual = lista[0];
                }
                else
                {
                    XtraMessageBox.Show(@"El anexo no tiene ni una cotizacion",
                    @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception ee)
            {
                XtraMessageBox.Show(@"Ocurrio un error en el fallo " + ee.Message,
                    @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Error);

                Log.Error("Generado por:" + FrmModuloAcceso.UsuarioLog, ee);
            }
        }
        public List<Fallo> GuardarFallo(Anexo anexo, DateTime fechaFallo)
        {
            var result = new List<Fallo>();

            var anexosDetalle = AnexoDao.CargarAnexoDetalle(anexo);

            double index = 1.0;

            foreach (var anexoDetalle in anexosDetalle)
            {
                //Evento
                var porcentaje = (int)((index++ / anexosDetalle.Count) * 100.0);
                OnFalloProceso(new FalloProcesoEvento(porcentaje));

                var cotizacionesDetalle =
                    CotizacionDao.CargarCotizacionDetalle(anexo,
                    anexoDetalle.Articulo,
                    anexo.Almacen);

                if (cotizacionesDetalle.Count == 0)
                    continue;

                var cotizacionDetalle = cotizacionesDetalle[0];

                var falloFound =
                    FalloDao.ExisteProvCotiz(cotizacionDetalle.Cotizacion,
                    cotizacionDetalle.Cotizacion.Proveedor);

                var fechaActual = FalloDao.FechaServidor();

                Fallo falloActual = null;

                if (falloFound == null)
                {
                    falloActual = new Fallo
                                      {
                        IdFallo = FalloDao.MaximoId().Value,
                        Anexo = anexo,
                        Cotizacion = cotizacionDetalle.Cotizacion,
                        Proveedor = cotizacionDetalle.Cotizacion.Proveedor,
                        Estado = "A",
                        Usuario = anexo.Usuario,
                        Almacen = anexo.Almacen,
                        FechaFallo = fechaFallo,
                        FechaModificacion = fechaActual,
                        FechaCaptura = fechaActual,
                        IpTerminal = Util.IpTerminal(),
                        Modificacion = 0
                    };

                    FalloDao.Insert(falloActual);

                }
                else
                    falloActual = falloFound;

                falloActual.FalloDetalle = new List<FalloDetalle>();
                result.Add(falloActual);

                var falloDetalle = new FalloDetalle()
                {
                    IdFalloDetalle = FalloDetalleDao.MaximoId().Value,
                    Fallo = falloActual,
                    RenglonAnexo = cotizacionDetalle.RenglonAnexo,
                    CantidadMax = 0,
                    CantidadMin = 0,
                    CantidadPed = 0,
                    PrecioFallo = cotizacionDetalle.Precio,
                    Articulo = cotizacionDetalle.Articulo
                };

                if (anexo.TipoContrato == Contrato.ABIERTO)
                {
                    falloDetalle.CantidadMin = anexoDetalle.CantidadMinimo;
                    falloDetalle.CantidadMax = anexoDetalle.CantidadMaximo;
                }
                else if (anexo.TipoContrato == Contrato.CERRADO)
                {
                    falloDetalle.CantidadMin = anexoDetalle.CantidadMaximo;
                    falloDetalle.CantidadMax = anexoDetalle.CantidadMaximo;
                }

                FalloDetalleDao.Insert(falloDetalle);

                falloActual.FalloDetalle.Add(falloDetalle);

            }

            return result;
        }
        /// <summary>
        /// Reporte Final de la adjudicacion por proveedor
        /// </summary>
        /// <param name="fallo"></param>
        private void ReporteFallo(Fallo fallo)
        {
            var listaFalloRep = new List<FalloRep>();

            var fallosConsulta  = FalloService.ConsultarFallo(fallo.Anexo);

            foreach (var falloConsulta in fallosConsulta) {

                var falloRep = new FalloRep{
                    FechaFallo = falloConsulta.FechaFallo.Value,
                    TipoLicitacion = "LICITACION PUBLICA " + fallo.Anexo.TipoLicitacion + " O INVITACION RESTRINGIDA",
                    Anexo = fallo.Anexo.ToString(),
                    Proveedor = falloConsulta.Proveedor.NombreFiscal
                };

                falloConsulta.FalloDetalle = FalloService.FalloDao.
                    ConsultarFalloDetalle(falloConsulta);

                foreach (var falloDetalleConsulta in falloConsulta.FalloDetalle) {
                    falloRep.Renglones += falloDetalleConsulta.RenglonAnexo + ",";
                    falloRep.TotalAdjudicado += falloDetalleConsulta.CantidadMin.Value
                        *falloDetalleConsulta.PrecioFallo.Value;
                }

                //Quitar la utima coma
                falloRep.Renglones = falloRep.Renglones.Substring(0, falloRep.Renglones.Length - 1);
                listaFalloRep.Add(falloRep);
            }

            ReporteFallo1.SetDataSource(listaFalloRep);
            crystalReportViewer.ReportSource = ReporteFallo1;
            crystalReportViewer.Refresh();

            Text = @"ReporteFallo";
        }