feat(purchasae): added team with category parent and central

This commit is contained in:
efrilm
2026-08-11 21:00:39 +07:00
parent a230199ce0
commit 9ae5be2c33
18 changed files with 566 additions and 32 deletions
+30
View File
@@ -1,10 +1,33 @@
package mappers
import (
"apskel-pos-be/internal/constants"
"apskel-pos-be/internal/entities"
"apskel-pos-be/internal/models"
)
// purchaseTeamFromEntity renders the team a purchase order is charged to. It returns
// nil when no team was chosen, which is distinct from a purchase charged to Pusat.
// The category name is only filled in when TeamCategory was preloaded.
func purchaseTeamFromEntity(entity *entities.PurchaseOrder) *models.PurchaseTeam {
if entity.TeamScope == nil {
return nil
}
team := &models.PurchaseTeam{Scope: *entity.TeamScope}
switch *entity.TeamScope {
case constants.PurchaseTeamScopeCentral:
team.Name = constants.PurchaseTeamCentralName
case constants.PurchaseTeamScopeCategory:
team.CategoryID = entity.TeamCategoryID
if entity.TeamCategory != nil {
team.Name = entity.TeamCategory.Name
}
}
return team
}
func PurchaseOrderEntityToModel(entity *entities.PurchaseOrder) *models.PurchaseOrder {
if entity == nil {
return nil
@@ -22,6 +45,8 @@ func PurchaseOrderEntityToModel(entity *entities.PurchaseOrder) *models.Purchase
Status: entity.Status,
Message: entity.Message,
TotalAmount: entity.TotalAmount,
TeamScope: entity.TeamScope,
TeamCategoryID: entity.TeamCategoryID,
CreatedAt: entity.CreatedAt,
UpdatedAt: entity.UpdatedAt,
}
@@ -44,6 +69,8 @@ func PurchaseOrderModelToEntity(model *models.PurchaseOrder) *entities.PurchaseO
Status: model.Status,
Message: model.Message,
TotalAmount: model.TotalAmount,
TeamScope: model.TeamScope,
TeamCategoryID: model.TeamCategoryID,
CreatedAt: model.CreatedAt,
UpdatedAt: model.UpdatedAt,
}
@@ -66,8 +93,11 @@ func PurchaseOrderEntityToResponse(entity *entities.PurchaseOrder) *models.Purch
Status: entity.Status,
Message: entity.Message,
TotalAmount: entity.TotalAmount,
TeamScope: entity.TeamScope,
TeamCategoryID: entity.TeamCategoryID,
CreatedAt: entity.CreatedAt,
UpdatedAt: entity.UpdatedAt,
Team: purchaseTeamFromEntity(entity),
}
// Map vendor if present