74 lines
2.1 KiB
Go
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
|
|
}
|
|
}
|