Ejemplo n.º 1
0
        public InventariosSaldos LlenarObjetoInventartiosSaldos(MovimientosES item, Detalles_ES mov, List <Articulo> ArticuloCompletoServer, List <InventariosSaldos> InventariosSaldosCompletoServer)
        {
            ////////////////////////////////////PARA LA TABLA SALDOS//////////////////////////////////////////////////////
            try
            {
                InventariosSaldos Saldo       = new InventariosSaldos();
                InventariosSaldos SaldoActual = new InventariosSaldos();

                mov.Articulo = ArticuloCompletoServer.Find(b => b._id == mov.Articulo._id);
                SaldoActual  = InventariosSaldosCompletoServer.Find(b => b.ArticuloId == mov.Articulo._id && b.AlmacenId == item.Almacen._id && b.Ano == item.Fecha.Year && b.Mes == item.Fecha.Month);

                if (SaldoActual == null)
                {//SI ES UN NUEVO  REGITRO EN LA TABLA INVENTARIOS SALDOS, ES UNO POR CADA MES DEL AÑO EN LA COMBINACION ARTICULO ALMACEN
                    Saldo.ArticuloId = mov.Articulo._id;
                    Saldo.AlmacenId  = item.Almacen._id;
                    Saldo.Ano        = item.Fecha.Year;
                    Saldo.Mes        = item.Fecha.Month;
                    Saldo.UltimoDia  = item.Fecha.Day;


                    if (item.Concepto.Naturaleza == "ENTRADA")
                    {
                        Saldo.EntradaUnidades = mov.Cantidad;
                        Saldo.EntradasCosto   = mov.Costo * mov.Cantidad;
                    }
                    else if (item.Concepto.Naturaleza == "SALIDA")
                    {
                        Saldo.SalidasUnidades = mov.Cantidad;
                        Saldo.SalidasCosto    = mov.Costo * mov.Cantidad;
                    }

                    return(Saldo);
                }
                else
                {
                    if (item.Fecha.Day > SaldoActual.UltimoDia)
                    {
                        SaldoActual.UltimoDia = item.Fecha.Day;
                    }



                    if (item.Concepto.Naturaleza == "ENTRADA")
                    {
                        SaldoActual.EntradaUnidades += mov.Cantidad;
                        SaldoActual.EntradasCosto   += mov.Costo * mov.Cantidad;
                    }
                    else if (item.Concepto.Naturaleza == "SALIDA")
                    {
                        SaldoActual.SalidasUnidades += mov.Cantidad;
                        SaldoActual.SalidasCosto    += mov.Costo * mov.Cantidad;
                    }
                    return(SaldoActual);
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Ejemplo n.º 2
0
        public KardexArticulos saldoInicial(KardexArticulos articulo, DateTime FechaInicio, List <InventariosSaldos> InventariosSaldosCompletoServer, MovimientosES mov, Detalles_ES detalle, int dia, int mes, int ano, EmpresaContext db)
        {
            try
            {
                //Se declaro asi por un conflico de nombre
                Servicios.Inventarios.Inventarios inventario = new Servicios.Inventarios.Inventarios();

                articulo.Almacen  = mov.Almacen;
                articulo.Folio    = "";
                articulo.Concepto = new Concepto
                {
                    Nombre = "SI - SALDO INICIAL"
                };

                //Caracteristicas del articulo
                articulo.Articulo           = detalle.Articulo;
                articulo.SubgrupoComponente = detalle.Articulo.SubGrupoComponente;
                articulo.GrupoComponente    = detalle.Articulo.SubGrupoComponente.GrupoComponente;

                ExistenciaValorInventario existencia = inventario.ExistenciaArticulo(detalle.Articulo._id, articulo.Almacen.id, FechaInicio, InventariosSaldosCompletoServer, detalle.Articulo, dia, mes, ano, db);

                articulo.EntradaUnidad        = existencia.Existencia;
                articulo.EntradaCostoUnitario = 0.0;
                articulo.EntradaCostoTotal    = existencia.CostoUnitario * existencia.Existencia;

                articulo.ExistenciaUnidades   = existencia.Existencia;
                articulo.ExistenciaCostoTotal = articulo.EntradaCostoTotal;

                return(articulo);
            }
            catch (Exception)
            {
                throw;
            }
        }
Ejemplo n.º 3
0
        public InventariosCostos LlenarObjetoInventartiosCostos(MovimientosES item, Detalles_ES mov, List <Articulo> ArticuloCompletoServer, List <InventariosCostos> InventariosCostosCompletoServer)
        {
            ////////////////////////////////////PARA LA TABLA INVENTARIOSCOSTOS/////////////////////////////////////////////
            /*------------------- PROMEDIO PONDERADO------------------------*/

            InventariosCostos Costo       = new InventariosCostos();
            InventariosCostos CostoActual = new InventariosCostos();

            mov.Articulo     = ArticuloCompletoServer.Find(b => b._id == mov.Articulo._id);
            CostoActual      = InventariosCostosCompletoServer.Find(b => b.ArticuloId == mov.Articulo._id && b.AlmacenId == item.Almacen._id);
            Costo.ArticuloId = mov.Articulo._id;
            Costo.AlmacenId  = item.Almacen._id;
            Costo.Fecha      = item.Fecha;

            if (CostoActual == null)                           // SI ES LA PRIMERA ENTRADA X ARTICULO  Y ALMACEN,SI ES UN NUEVO  REGITRO EN LA TABLA INVENTARIOS COSTOS,
            {
                if (item.Concepto.Naturaleza == "ENTRADA")     //Revisar si es un documento de entrada o de salida
                {
                    if (item.Concepto.CostoAutomatico == "NO") // SI NO ES COSTO AUTOMATICO: ya que es la primera entrada de costo se multiplica la cantidad de entrada del articulo * el costo que viene desde el cliente
                    {
                        mov.CostoTotal   = mov.Cantidad * mov.Costo;
                        Costo.ValorTotal = mov.CostoTotal;
                    }
                    else if (item.Concepto.CostoAutomatico == "SI") // SI ES COSTO AUTOMATICO:  YA QUE ES LA PRIMERA ENTRADA SE LE ASIGNA 0.00 YA QUE NO HAY REGISTRO DE COSTOS
                    {
                        mov.CostoTotal   = 0.00;
                        Costo.ValorTotal = mov.CostoTotal;
                    }
                    Costo.Existencia = mov.Cantidad;
                }
                else if (item.Concepto.Naturaleza == "SALIDA")
                {
                    if (item.Concepto.CostoAutomatico == "NO") // SI NO ES COSTO AUTOMATICO: ya que es la primera entrada de costo se multiplica la cantidad de entrada del articulo * el costo que viene desde el cliente
                    {
                        mov.CostoTotal    = mov.Cantidad * mov.Costo;
                        Costo.ValorTotal -= mov.CostoTotal;
                    }
                    else if (item.Concepto.CostoAutomatico == "SI") // SI ES COSTO AUTOMATICO:  YA QUE ES LA PRIMERA ENTRADA SE LE ASIGNA 0.00 YA QUE NO HAY REGISTRO DE COSTOS
                    {
                        mov.CostoTotal    = 0.00;
                        Costo.ValorTotal -= mov.CostoTotal;
                    }
                    Costo.Existencia -= mov.Cantidad;
                }
                Costo.CapaAgotada = Costo.Existencia <= 0 ? "SI" : "NO";

                return(Costo);
            }
            else     // EN CASO DE QUE NO SEA EL PRIMER MOVIMIENTO EN LA TABLA INVENTARIOSCOSTOS
            {
                if (item.Concepto.Naturaleza == "ENTRADA")
                {
                    if (item.Concepto.CostoAutomatico == "SI")// SI ES COSTO AUTOMATICO
                    {
                        mov.CostoTotal         = CostoActual.ValorTotal > 0 ? (CostoActual.ValorTotal / CostoActual.Existencia) * mov.Cantidad : 0.00;
                        mov.Costo              = CostoActual.ValorTotal > 0 ? (CostoActual.ValorTotal / CostoActual.Existencia) : 0.00;
                        CostoActual.Existencia = CostoActual.Existencia + mov.Cantidad;
                        CostoActual.ValorTotal = CostoActual.ValorTotal + mov.CostoTotal;
                    }
                    else if (item.Concepto.CostoAutomatico == "NO")
                    {
                        mov.CostoTotal         = mov.Cantidad * mov.Costo;
                        CostoActual.Existencia = CostoActual.Existencia + mov.Cantidad;
                        CostoActual.ValorTotal = CostoActual.ValorTotal + mov.CostoTotal;
                    }


                    CostoActual.CapaAgotada = CostoActual.Existencia <= 0 ? "SI" : "NO";
                }
                else if (item.Concepto.Naturaleza == "SALIDA")
                {
                    if (item.Concepto.CostoAutomatico == "SI")                                                                                         // SI ES COSTO AUTOMATICO
                    {
                        mov.CostoTotal         = CostoActual.Existencia > 0 ? (CostoActual.ValorTotal / CostoActual.Existencia) * mov.Cantidad : 0.00; //SI EL VALOR TOTAL DE LA CAPA
                        mov.Costo              = CostoActual.Existencia > 0 ? (CostoActual.ValorTotal / CostoActual.Existencia) : 0.00;
                        CostoActual.Existencia = CostoActual.Existencia > 0 ? CostoActual.Existencia - mov.Cantidad : 0.00;
                        CostoActual.ValorTotal = CostoActual.Existencia > 0 ? CostoActual.ValorTotal - mov.CostoTotal : 0.00;
                    }
                    else if (item.Concepto.CostoAutomatico == "NO")
                    {
                        mov.CostoTotal         = mov.Cantidad * mov.Costo;
                        CostoActual.Existencia = CostoActual.Existencia - mov.Cantidad;
                        CostoActual.ValorTotal = CostoActual.ValorTotal - mov.CostoTotal;
                    }



                    CostoActual.CapaAgotada = CostoActual.Existencia <= 0 ? "SI" : "NO";
                }
                return(CostoActual);
            }
        }