コード例 #1
0
        public Response Crear(TerceroProveedorRequest request)
        {
            TerceroProveedor provedor = this._unitOfWork.TerceroProvedorRepository.
                                        FindBy(provedor => provedor.Tercero.Nit == request.NitTercero,
                                               includeProperties: "Tercero").FirstOrDefault();

            if (provedor != null)
            {
                return(new Response
                {
                    Mensaje = $"No se pudo registrar el proveedor porque ya está en el sistema"
                });
            }

            Tercero tercero = this._unitOfWork.TerceroRepository.
                              FindFirstOrDefault(tercero => tercero.Nit == request.NitTercero);

            if (tercero == null)
            {
                tercero = request.Tercero.UnMap();
            }

            provedor = new TerceroProveedor(tercero);
            this._unitOfWork.TerceroProvedorRepository.Add(provedor);
            this._unitOfWork.Commit();
            return(new Response
            {
                Mensaje = "Proveedor registrado con éxito",
                Data = new TerceroProveedorRequest().Map(provedor)
            });
        }
コード例 #2
0
        public Response HacerCompraService(CompraRequest request)
        {
            TerceroProveedor proveedor = this._unitOfWork.TerceroProvedorRepository.
                                         FindBy(provedor => provedor.Tercero.Nit == request.NitProveedor,
                                                includeProperties: "Tercero").FirstOrDefault();

            if (proveedor == null)
            {
                return(new Response
                {
                    Mensaje = $"El provedor con identificación {request.NitProveedor}" +
                              $" no fue encontrado en el sistema, agréguelo antes"
                });
            }
            TerceroUsuario usuario = this._unitOfWork.TerceroUsuarioRepository.
                                     FindFirstOrDefault(usuario => usuario.Id == request.UsuarioId);


            if (usuario == null)
            {
                return(new Response
                {
                    Mensaje = $"El usuario con id {request.UsuarioId}" +
                              $" no fue encontrado en el sistema, agréguelo antes"
                });
            }
            var errores = PuedeRegistrarDetalles(request.Detalles);

            if (errores.Any())
            {
                return(new Response
                {
                    Mensaje = string.Join(", ", errores)
                });
            }
            Compra compra = new Compra.CompraBuilder(proveedor, usuario).Build();

            request.Detalles.ForEach((detalle) =>
            {
                Producto producto = this._unitOfWork.ProductoRepository.
                                    FindBy(producto => producto.Id == detalle.ProductoId,
                                           includeProperties: "DetallesCompra.Compra").FirstOrDefault();

                CompraDetalle compraDetalle = new CompraDetalle.CompraDetalleBuilder(producto, compra).
                                              SetCantidad(detalle.Cantidad).SetCostoUnitario(detalle.Valor).Build();

                compra.AddDetalle(compraDetalle);
                producto.AddCompraDetalle(compraDetalle);
            });

            this._unitOfWork.CompraRepository.Add(compra);
            this._unitOfWork.TransaccionRepository.Add(new Transaccion(TipoDeTransaccion.Egreso, Concepto.CompraDeMateriasPrimas, compra.Total));
            this._unitOfWork.Commit();
            return(new Response
            {
                Mensaje = "Compra registrada con éxito",
                Data = new CompraRequest().Map(compra)
            });
        }
コード例 #3
0
 internal TerceroProveedorRequest Map(TerceroProveedor provedor)
 {
     this.Id            = provedor.Id;
     this.FechaCreacion = provedor.FechaCreacion;
     this.NitTercero    = provedor.Tercero.Nit;
     this.Tercero       = new TerceroRequest().Map(provedor.Tercero);
     return(this);
 }
コード例 #4
0
        public void SetUp()
        {
            azucar = new ProductoMateriaPrima().SetNombre("azúcar").SetCantidad(15).
                     SetCostoUnitario(1700).SetUnidadDeMedida(UnidadDeMedida.Kilos);
            leche = new ProductoMateriaPrima().SetNombre("leche").SetCantidad(45).
                    SetCostoUnitario(1500).SetUnidadDeMedida(UnidadDeMedida.Litros);

            terceroDuvan  = new Tercero.TerceroBuilder("1065840833", "Duvan").Build();
            terceroMartin = new Tercero.TerceroBuilder("1010103118", "Martin").Build();

            usuarioDuvan   = new TerceroUsuario(terceroDuvan);
            provedorMartin = new TerceroProveedor(terceroMartin);
        }
コード例 #5
0
 public CompraBuilder(TerceroProveedor provedor, TerceroUsuario usuario)
 {
     this.Proveedor = provedor;
     this.Usuario   = usuario;
 }