stock request table created
This commit is contained in:
58
services/stockrequestService.go
Normal file
58
services/stockrequestService.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"nearle/models"
|
||||
"nearle/repositories"
|
||||
"time"
|
||||
)
|
||||
|
||||
type StockRequestService interface {
|
||||
CreateStockRequest(req *models.StockRequest) error
|
||||
GetStockRequests(tenantID int, locationID int, status string, pageNo int, pageSize int) ([]models.StockRequest, error)
|
||||
UpdateStockRequest(requestID int, status string) error
|
||||
}
|
||||
|
||||
type stockRequestService struct {
|
||||
repo repositories.StockRequestRepository
|
||||
productService ProductService
|
||||
}
|
||||
|
||||
func NewStockRequestService(repo repositories.StockRequestRepository, productService ProductService) StockRequestService {
|
||||
return &stockRequestService{repo: repo, productService: productService}
|
||||
}
|
||||
|
||||
func (s *stockRequestService) CreateStockRequest(req *models.StockRequest) error {
|
||||
return s.repo.CreateStockRequest(req)
|
||||
}
|
||||
|
||||
func (s *stockRequestService) GetStockRequests(tenantID int, locationID int, status string, pageNo int, pageSize int) ([]models.StockRequest, error) {
|
||||
return s.repo.GetStockRequests(tenantID, locationID, status, pageNo, pageSize)
|
||||
}
|
||||
|
||||
func (s *stockRequestService) UpdateStockRequest(requestID int, status string) error {
|
||||
// If the request is being marked as Received, we need to update the actual store inventory
|
||||
if status == "Received" {
|
||||
req, err := s.repo.GetStockRequestByID(requestID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if req.Status != "Received" { // prevent double receiving
|
||||
stk := models.Productstock{
|
||||
Tenantid: req.Tenantid,
|
||||
Locationid: req.Locationid,
|
||||
Productid: req.Productid,
|
||||
Quantity: req.Qty,
|
||||
Stocktype: "Credit",
|
||||
Stockdate: time.Now(),
|
||||
}
|
||||
|
||||
err = s.productService.CreateProductStock([]models.Productstock{stk})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return s.repo.UpdateStockRequest(requestID, status)
|
||||
}
|
||||
Reference in New Issue
Block a user