private void GeneraCierre()
        {
            try
            {
                var lstArticulos =
                            CierreService.ArticuloDao.CargaArticulosXAlmacen(FrmAlmacen.AlmacenActual.IdAlmacen);
                var dtCierre = CierreService.CierreDao.CargaUltimaFecha(FrmAlmacen.AlmacenActual.IdAlmacen);
                var intCount = 0;
                foreach (var objArticulo in lstArticulos)
                {
                    intCount++;
                    //Busca Cierre Anterior
                    var objCierre = CierreService.CierreDao.CargaCierrexArticulo(objArticulo.Id.CveArt,
                        FrmAlmacen.AlmacenActual.IdAlmacen, dtCierre.Month, dtCierre.Year);
                    //Busca Entradas Salidas y Calcula
                    decimal[] tm = CierrePaso(objArticulo, dtCierre.AddDays(1),dtFechaCierre.Value,
                        objCierre == null ? 0 : (decimal)objCierre.Existencia, objCierre == null ? 0 : objCierre.Importe, FrmAlmacen.AlmacenActual);

                    var cierreId = new CierreId(dtFechaCierre.Value,objArticulo);
                    var cierre = new Cierre(cierreId)//,tm[1])
                            {
                                Existencia = tm[0],
                                FechaAlta = CierreService.CierreDao.FechaServidor(),
                                Usuario = FrmAcceso.UsuarioLog,
                                Estatus = "A"
                            };
                    CierreService.CierreDao.Update(cierre);
                    double doulst = lstArticulos.Count;
                    double dProgressPercentage = intCount / doulst;
                    var iProgressPercentage = (int)(dProgressPercentage * 100);
                    lblProgress.Text = intCount + @"/" + doulst + @"   " + iProgressPercentage + @"% Completado";
                    lblProgress.Refresh();
                    pbCierre.Value = iProgressPercentage;
                    pbCierre.Refresh();
                }
                btnCancelar.Enabled = true;
                btnGuardar.Enabled = true;
            }
            catch (Exception ee)
            {
                MessageBox.Show(@"Ocurrio un error en la insercion o actualizacion del Cierre "  + ee.Message,
                    @"Almacenes", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #2
0
        private void ImprimeKardex(IList<object []> kardexDetalles)
        {
            if (kardexDetalles.Count != 0)
            {
                var lstKardex = new List<rptDataKardex>();
                var intTmp = 0;
                var intCveArt = 0;
                var douExistencia = 0.0;
                var douSaldo = 0.0;
                foreach (var kardexDetalle in kardexDetalles)
                {
                    intTmp++;
                    var idArticulo = new ArticuloId()
                    {
                        Almacen = FrmAlmacen.AlmacenActual,
                        CveArt = (int)kardexDetalle[3]
                    };
                    var desArticulo = EntradaService.ArticuloDao.Get(idArticulo).DesArticulo;
                    //Inserta Cierre

                    var objCierre = new Cierre();
                    if (intTmp == 1 || (intCveArt != (int)kardexDetalle[3]))
                    {
                        //Consulta Cierre
                        var cierreId = new CierreId()
                        {
                            FechaCierre = dtFechaIni.AddDays(-1),
                            Articulo = EntradaService.ArticuloDao.Get(idArticulo)
                        };
                        objCierre = EntradaService.CierreDao.Get(cierreId);

                        var Cierre = new rptDataKardex()
                        {
                            FechaIni = dtFechaIni,
                            FechaFin = dtFechaFin.Value,
                            DesArticulo = desArticulo,
                            CvePartida = kardexDetalle[1].ToString(),
                            DesPartida = kardexDetalle[2].ToString(),
                            CveArt = (int)kardexDetalle[3],
                            Unidad = kardexDetalle[4].ToString(),
                            Presentacion = kardexDetalle[5] == null ? "" : kardexDetalle[5].ToString(),
                            PresentacionCant = kardexDetalle[6] == null ? "" : kardexDetalle[6].ToString(),
                            PresentacionUnid = kardexDetalle[7] == null ? "" : kardexDetalle[7].ToString(),
                            Fecha = dtFechaIni.AddDays(-1),
                            Folio = -1,
                            //CantEntrada = objCierre == null ? 0 : Convert.ToDouble(objCierre.Existencia),
                            CantSalida = -1,
                            //Existencia = objCierre == null ? 0 : Convert.ToDouble(objCierre.Existencia),
                            //PrecioEntrada = objCierre == null ? 0 : Convert.ToDouble(objCierre.Importe),
                            PrecioSalida = -1,
                            //Debe = objCierre == null ? 0 : Convert.ToDouble(objCierre.Existencia * objCierre.Importe),
                            //Saldo = objCierre == null ? 0 : Convert.ToDouble(objCierre.Existencia * objCierre.Importe),
                            Haber = -1,
                            Area = @"EXISTENCIA AL " + dtFechaIni.AddDays(-1).ToShortDateString()
                        };
                        if(objCierre==null)
                        {
                            Cierre.CantEntrada = 0;
                            Cierre.Existencia = 0;
                            Cierre.PrecioEntrada = 0;
                            Cierre.Debe = 0;
                            Cierre.Saldo = 0;
                        }
                        else
                        {
                            Cierre.CantEntrada = Convert.ToDouble(objCierre.Existencia);
                            Cierre.Existencia = Convert.ToDouble(objCierre.Existencia);
                            Cierre.PrecioEntrada = Convert.ToDouble(objCierre.Importe);
                            Cierre.Debe = Convert.ToDouble(objCierre.Existencia * objCierre.Importe);
                            Cierre.Saldo = Convert.ToDouble(objCierre.Existencia * objCierre.Importe);
                        }
                        lstKardex.Add(Cierre);
                    }

                    var kardex = new rptDataKardex()
                    {
                        FechaIni = dtFechaIni,
                        FechaFin = dtFechaFin.Value,
                        DesArticulo = desArticulo,
                        CvePartida = kardexDetalle[1].ToString(),
                        DesPartida = kardexDetalle[2].ToString(),
                        CveArt = (int)kardexDetalle[3],
                        Unidad = kardexDetalle[4].ToString(),
                        Presentacion = kardexDetalle[5] == null ? "" : kardexDetalle[5].ToString(),
                        PresentacionCant = kardexDetalle[6] == null ? "" : kardexDetalle[6].ToString(),
                        PresentacionUnid = kardexDetalle[7] == null ? "" : kardexDetalle[7].ToString(),
                        Fecha = DateTime.Parse(kardexDetalle[8].ToString()),
                        Pedido = kardexDetalle[9] == null ? 0 : (int)kardexDetalle[9],
                        Folio = (int)kardexDetalle[10],
                        CantEntrada = Convert.ToDouble(kardexDetalle[11]),
                        CantSalida = Convert.ToDouble(kardexDetalle[12]),
                        PrecioEntrada = Convert.ToDouble(kardexDetalle[13]),
                        PrecioSalida = Convert.ToDouble(kardexDetalle[14]),
                        Debe = Convert.ToDouble(kardexDetalle[15]),
                        Haber = Convert.ToDouble(kardexDetalle[16]),
                        Area = kardexDetalle[17].ToString(),
                        TipoPedido = kardexDetalle[18] == null ? -1 : (int)kardexDetalle[18]
                    };
                    if (intTmp == 1 || intCveArt != (int)kardexDetalle[3])
                    {
                        intCveArt = (int)kardexDetalle[3];
                        if(objCierre==null)
                        {
                            douExistencia = 0;
                            douSaldo = 0;
                        }
                        else
                        {
                            douExistencia = Convert.ToDouble(objCierre.Existencia);
                            douSaldo = Convert.ToDouble(objCierre.Existencia * objCierre.Importe);
                        }
                        //douExistencia = objCierre == null ? 0 : Convert.ToDouble(objCierre.Existencia);
                        //douSaldo = objCierre == null ? 0 : Convert.ToDouble(objCierre.Existencia * objCierre.Importe);

                        //douExistencia = kardexDetalle[0].ToString() == "E" ?
                        //            douExistencia + Convert.ToDouble(kardexDetalle[11]) :
                        //            douExistencia - Convert.ToDouble(kardexDetalle[12]);

                    }
                    //else
                    //{
                    //    if(intCveArt!=(int) kardexDetalle[3])
                    //    {
                    //        intCveArt = (int)kardexDetalle[3];
                    //        douExistencia = 0.0;
                    //        douSaldo = 0.0;
                    //douExistencia = kardexDetalle[0].ToString() == "E" ?
                    //       douExistencia + Convert.ToDouble(kardexDetalle[11]) :
                    //       douExistencia - Convert.ToDouble(kardexDetalle[12]);
                    //}
                    //else
                    //{
                    //    intCveArt = (int)kardexDetalle[3];
                    //    douExistencia = 0.0;
                    //    //douExistencia = kardexDetalle[0].ToString() == "E" ?
                    //    //            douExistencia + Convert.ToDouble(kardexDetalle[11]) :
                    //    //            douExistencia - Convert.ToDouble(kardexDetalle[12]);
                    //}
                    //}

                    douExistencia = kardexDetalle[0].ToString() == "E" ?
                                douExistencia + Convert.ToDouble(kardexDetalle[11]) :
                                douExistencia - Convert.ToDouble(kardexDetalle[12]);

                    douSaldo = kardexDetalle[0].ToString() == "E" ?
                                douSaldo + Convert.ToDouble(kardexDetalle[15]) :
                                douSaldo - Convert.ToDouble(kardexDetalle[16]);

                    kardex.Existencia = douExistencia;
                    kardex.Saldo = douSaldo;
                    lstKardex.Add(kardex);
                }
                var formaVisor = new FrmCrVisor
                {
                    ObjList = lstKardex,
                    StrRptName = "rptKardex",
                    StrTitle = "ALMACEN DE " + FrmAlmacen.AlmacenActual.DesAlmacen
                };
                formaVisor.ShowDialog();
            }
            else
            {
                MessageBox.Show(@"No Existen Entradas/Salidas, Verifique . .",
                                @"Almacenes", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }