2025-09-12 01:12:11 +07:00

74 lines
2.1 KiB
Go

package mappers
import (
"apskel-pos-be/internal/entities"
"apskel-pos-be/internal/models"
"github.com/google/uuid"
)
func AccountEntityToResponse(entity *entities.Account) *models.AccountResponse {
response := &models.AccountResponse{
ID: entity.ID,
OrganizationID: entity.OrganizationID,
OutletID: entity.OutletID,
ChartOfAccountID: entity.ChartOfAccountID,
Name: entity.Name,
Number: entity.Number,
AccountType: string(entity.AccountType),
OpeningBalance: entity.OpeningBalance,
CurrentBalance: entity.CurrentBalance,
Description: entity.Description,
IsActive: entity.IsActive,
IsSystem: entity.IsSystem,
CreatedAt: entity.CreatedAt,
UpdatedAt: entity.UpdatedAt,
}
if entity.ChartOfAccount.ID != uuid.Nil {
response.ChartOfAccount = ChartOfAccountEntityToResponse(&entity.ChartOfAccount)
}
return response
}
func AccountCreateRequestToEntity(req *models.CreateAccountRequest, organizationID uuid.UUID, outletID *uuid.UUID) *entities.Account {
return &entities.Account{
OrganizationID: organizationID,
OutletID: outletID,
ChartOfAccountID: req.ChartOfAccountID,
Name: req.Name,
Number: req.Number,
AccountType: entities.AccountType(req.AccountType),
OpeningBalance: req.OpeningBalance,
CurrentBalance: req.OpeningBalance, // Initialize current balance with opening balance
Description: req.Description,
IsActive: true,
IsSystem: false,
}
}
func AccountUpdateRequestToEntity(entity *entities.Account, req *models.UpdateAccountRequest) {
if req.ChartOfAccountID != nil {
entity.ChartOfAccountID = *req.ChartOfAccountID
}
if req.Name != nil {
entity.Name = *req.Name
}
if req.Number != nil {
entity.Number = *req.Number
}
if req.AccountType != nil {
entity.AccountType = entities.AccountType(*req.AccountType)
}
if req.OpeningBalance != nil {
entity.OpeningBalance = *req.OpeningBalance
}
if req.Description != nil {
entity.Description = req.Description
}
if req.IsActive != nil {
entity.IsActive = *req.IsActive
}
}