public Response Crear(TerceroEmpleadoRequest request)
        {
            Tercero tercero = this._unitOfWork.TerceroRepository.
                              FindFirstOrDefault(tercero => tercero.Nit == request.NitTercero);

            if (tercero == null)
            {
                return(new Response
                {
                    Mensaje = $"La identificación {request.NitTercero}," +
                              $" no se encuentra registrada hasta el momento"
                });
            }
            TerceroEmpleado empleado = this._unitOfWork.TerceroEmpleadoRepository.
                                       FindBy(empleado => empleado.Tercero.Nit == request.NitTercero,
                                              includeProperties: "Tercero").FirstOrDefault();

            if (empleado != null)
            {
                return(new Response
                {
                    Mensaje = $"No se pudo registrar el empleado porque ya esta en el sistema"
                });
            }
            empleado = new TerceroEmpleado(tercero);
            this._unitOfWork.TerceroEmpleadoRepository.Add(empleado);
            this._unitOfWork.Commit();
            return(new Response
            {
                Mensaje = "Empleado registrado con éxito",
                Data = new TerceroEmpleadoRequest().Map(empleado)
            });
        }
 public TerceroEmpleadoRequest Map(TerceroEmpleado empleado)
 {
     this.Id         = empleado.Id;
     this.NitTercero = empleado.Tercero.Nit;
     FechaCreacion   = empleado.FechaCreacion;
     Tercero         = new TerceroRequest().Map(empleado.Tercero);
     return(this);
 }
        public Response BuscarEmpleado(int id)
        {
            TerceroEmpleado empleado = this.unitOfWork.TerceroEmpleadoRepository.
                                       FindBy(empleado => empleado.Id == id, includeProperties: "Tercero.Contactos")
                                       .FirstOrDefault();

            if (empleado == null)
            {
                return(new Response
                {
                    Mensaje = "No se encontró al empleado"
                });
            }
            return(new Response
            {
                Data = new TerceroEmpleadoRequest().Map(empleado)
            });
        }
        public void Setup()
        {
            leche = new ProductoMateriaPrima().SetNombre("leche").SetCantidad(15).
                    SetCostoUnitario(2000).SetUnidadDeMedida(UnidadDeMedida.Litros);

            azucar = new ProductoMateriaPrima().SetNombre("Azucar").SetCantidad(10).
                     SetCostoUnitario(1000).SetUnidadDeMedida(UnidadDeMedida.Libras);

            ArinaPan = new ProductoMateriaPrima().SetNombre("Arina Pan").SetCantidad(0.5).
                       SetCostoUnitario(1000).SetUnidadDeMedida(UnidadDeMedida.Litros);

            calderoLeche = new ProductoParaFabricarDuro().SetNombre("Caldero de Leche");
            calderoLeche.PorcentajeDeUtilidad = 30;

            BandejaSelloPlus4Onzas =
                new ProductoMateriaPrima().SetNombre("Bandeja de Sello Plus de 4 Onzas").
                SetCantidad(1).SetCostoUnitario(300).SetUnidadDeMedida(UnidadDeMedida.Litros);
            BandejaSelloPlus4Onzas.SetCantidad(4);

            PresentacionBandejaSelloPlus4Onzas =
                new ProductoParaVenderConEnvoltorio().SetNombre
                    ("Presentacion de Bandeja Sello Plus 4 Onzas");
            PresentacionBandejaSelloPlus4Onzas.SetEnvoltorio(BandejaSelloPlus4Onzas);

            tercero         = new Tercero.TerceroBuilder("Duvan", "1065840833").Build();
            TerceroEmpleado = new TerceroEmpleado(tercero);
            Administrador   = new TerceroPropietario(tercero);
            Administrador.Productos.Add(leche);


            materiasPrimas = new List <ProductoMateriaPrima>();
            materiasPrimas.Add(leche);
            materiasPrimas.Add(ArinaPan);
            materiasPrimas.Add(azucar);
            Administrador.Productos.Add(azucar);
            Administrador.Productos.Add(PresentacionBandejaSelloPlus4Onzas);

            UnidadesDeLeche = new ProductoParaVenderSinEnvoltorio();
        }
        public Response IniciarFabricacion(FabricacionRequest request)
        {
            Producto productoParaFabricar =
                this._unitOfWork.ProductoRepository.
                FindBy(producto => producto.Id == request.IdProducto,
                       includeProperties: "Fabricaciones").FirstOrDefault();

            if (productoParaFabricar == null)
            {
                return(new Response
                {
                    Mensaje = "El producto para fabricar no existe, agréguelo"
                });
            }

            if (productoParaFabricar.Especificacion == Especificacion.MateriaPrima)
            {
                return(new Response
                {
                    Mensaje = $"El {productoParaFabricar.Nombre} no se puede fabricar"
                });
            }

            TerceroEmpleado empleado = this._unitOfWork.TerceroEmpleadoRepository.
                                       FindBy(empleado => empleado.Tercero.Nit == request.NitEmpleado,
                                              includeProperties: "Tercero").FirstOrDefault();

            if (empleado == null)
            {
                return(new Response
                {
                    Mensaje = $"No hay un empleado con identificación {request.NitEmpleado}"
                });
            }
            if (request.Detalles.Count == 0)
            {
                return(new Response
                {
                    Mensaje = $"Por favor, agregue materias primas " +
                              $"para fabricar el {productoParaFabricar.Nombre}"
                });
            }
            Fabricacion fabricacion = new Fabricacion(empleado);

            productoParaFabricar.AgregarFabricacion(fabricacion);



            Producto temp = null;

            temp = ComprobarExistenciasDeEnMateriasPrimas(request, fabricacion, temp);

            if (fabricacion.FabricacionDetalles.Count !=
                request.Detalles.Count)
            {
                if (temp == null)
                {
                    return(new Response
                    {
                        Mensaje = "El " +
                                  $"{request.Detalles[fabricacion.FabricacionDetalles.Count].NombreMateriaPrima}" +
                                  " no se encuentra en el sistema, agréguelo"
                    });
                }
                return(new Response
                {
                    Mensaje = $"No hay cantidades suficientes de {temp.Nombre}, " +
                              $"solo hay {temp.Cantidad}"
                });
            }
            fabricacion.DescontarCantidadesEnMateriasPrimas();
            this._unitOfWork.ProductoRepository.Edit(productoParaFabricar);
            this._unitOfWork.Commit();
            return(new Response
            {
                Mensaje = "Fabricacion realizada con éxito, a espera de definir la cantidad producida",
                Data = request.Map(fabricacion)
            });
        }
Ejemplo n.º 6
0
 public void SetEmpleado(TerceroEmpleado terceroEmpleado)
 {
     this.TerceroEmpleado = terceroEmpleado;
 }
Ejemplo n.º 7
0
 public Fabricacion(TerceroEmpleado terceroEmpleado)
 {
     this.TerceroEmpleado     = terceroEmpleado;
     this.FabricacionDetalles = new List <FabricacionDetalle>();
 }