Ejemplo n.º 1
0
        /// <summary>
        /// Funcion para guardar los tratamientos en almacen movimiento y descontarlos del inventario
        /// </summary>
        /// <param name="listaTratamientos"></param>
        /// <param name="almacenMovimientoInfo"></param>
        internal int GuardarDescontarTratamientos(List <TratamientoInfo> listaTratamientos,
                                                  AlmacenMovimientoInfo almacenMovimientoInfo)
        {
            var info = 0;

            try
            {
                Logger.Info();
                var almacenDAL = new AlmacenDAL();

                var resp = almacenDAL.GuardarAlmacenMovimiento(almacenMovimientoInfo);
                //Almacenar el MovimientoDetalle
                if (resp != null)
                {
                    almacenMovimientoInfo.AlmacenMovimientoID = resp.AlmacenMovimientoID;
                    almacenMovimientoInfo.FolioMovimiento     = resp.FolioMovimiento;
                    almacenMovimientoInfo.FechaCreacion       = resp.FechaCreacion;
                    almacenMovimientoInfo.FechaMovimiento     = resp.FechaMovimiento;
                    //Se obtiene la lista de productos y tratamientos a insertar
                    var listaAlmacenMovimientoDetalle = (
                        from tratamiento in listaTratamientos
                        from producto in tratamiento.Productos
                        select new AlmacenMovimientoDetalle
                    {
                        TratamientoID = tratamiento.TratamientoID,
                        ProductoID = producto.ProductoId,
                        Precio = 0,
                        Cantidad = producto.Dosis,
                        Importe = 0,
                        AlmacenMovimientoID =
                            almacenMovimientoInfo.AlmacenMovimientoID,
                        UsuarioCreacionID =
                            almacenMovimientoInfo.UsuarioCreacionID
                    }).ToList();

                    var lista = new List <AlmacenMovimientoDetalle>();
                    foreach (var almacenMovimintoDetalle in listaAlmacenMovimientoDetalle)
                    {
                        var existe = true;
                        foreach (var almacenMovimintoDetalleInfo in lista)
                        {
                            if (almacenMovimintoDetalle.ProductoID == almacenMovimintoDetalleInfo.ProductoID)
                            {
                                existe = false;
                            }
                        }
                        if (existe)
                        {
                            lista.Add(almacenMovimintoDetalle);
                        }
                    }

                    //Se almacena el detalle del movimiento
                    var costoTotal = almacenDAL.GuardarAlmacenMovimientoDetalle(lista,
                                                                                almacenMovimientoInfo.AlmacenID);

                    var animalCosto = new AnimalCostoInfo
                    {
                        AnimalID          = almacenMovimientoInfo.AnimalID,
                        CostoID           = almacenMovimientoInfo.CostoID,
                        FolioReferencia   = almacenMovimientoInfo.AlmacenMovimientoID,
                        Importe           = costoTotal,
                        UsuarioCreacionID = almacenMovimientoInfo.UsuarioCreacionID
                    };

                    //Almacenr el costo en Animal Costo
                    var animalBL = new AnimalBL();
                    info = animalBL.GuardarAnimalCosto(animalCosto);
                }
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(info);
        }