feat: cash advance
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
package transformer
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"apskel-pos-be/internal/contract"
|
||||
"apskel-pos-be/internal/models"
|
||||
)
|
||||
|
||||
func CreateCashAdvanceRequestToModel(req *contract.CreateCashAdvanceRequest) (*models.CreateCashAdvanceRequest, error) {
|
||||
issuedDate, err := time.Parse("2006-01-02", req.IssuedDate)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var dueDate *time.Time
|
||||
if req.DueDate != nil && *req.DueDate != "" {
|
||||
parsed, err := time.Parse("2006-01-02", *req.DueDate)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dueDate = &parsed
|
||||
}
|
||||
|
||||
return &models.CreateCashAdvanceRequest{
|
||||
OutletID: req.OutletID,
|
||||
CodeNumber: req.CodeNumber,
|
||||
TeamScope: req.TeamScope,
|
||||
TeamCategoryID: req.TeamCategoryID,
|
||||
Amount: req.Amount,
|
||||
IssuedDate: issuedDate,
|
||||
DueDate: dueDate,
|
||||
Status: req.Status,
|
||||
Description: req.Description,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func UpdateCashAdvanceRequestToModel(req *contract.UpdateCashAdvanceRequest) (*models.UpdateCashAdvanceRequest, error) {
|
||||
var issuedDate *time.Time
|
||||
if req.IssuedDate != nil && *req.IssuedDate != "" {
|
||||
parsed, err := time.Parse("2006-01-02", *req.IssuedDate)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
issuedDate = &parsed
|
||||
}
|
||||
|
||||
var dueDate *time.Time
|
||||
if req.DueDate != nil && *req.DueDate != "" {
|
||||
parsed, err := time.Parse("2006-01-02", *req.DueDate)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dueDate = &parsed
|
||||
}
|
||||
|
||||
return &models.UpdateCashAdvanceRequest{
|
||||
CodeNumber: req.CodeNumber,
|
||||
TeamScope: req.TeamScope,
|
||||
TeamCategoryID: req.TeamCategoryID,
|
||||
Amount: req.Amount,
|
||||
ReturnedAmount: req.ReturnedAmount,
|
||||
IssuedDate: issuedDate,
|
||||
DueDate: dueDate,
|
||||
Status: req.Status,
|
||||
Description: req.Description,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func ListCashAdvancesRequestToModel(req *contract.ListCashAdvancesRequest) *models.ListCashAdvancesRequest {
|
||||
return &models.ListCashAdvancesRequest{
|
||||
Page: req.Page,
|
||||
Limit: req.Limit,
|
||||
Search: req.Search,
|
||||
Status: req.Status,
|
||||
SettlementStatus: req.SettlementStatus,
|
||||
Team: req.Team,
|
||||
TeamScope: req.TeamScope,
|
||||
TeamCategoryID: req.TeamCategoryID,
|
||||
StartDate: req.StartDate,
|
||||
EndDate: req.EndDate,
|
||||
}
|
||||
}
|
||||
|
||||
func CashAdvanceModelResponseToResponse(cashAdvance *models.CashAdvanceResponse) *contract.CashAdvanceResponse {
|
||||
if cashAdvance == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
response := &contract.CashAdvanceResponse{
|
||||
ID: cashAdvance.ID,
|
||||
OrganizationID: cashAdvance.OrganizationID,
|
||||
OutletID: cashAdvance.OutletID,
|
||||
CodeNumber: cashAdvance.CodeNumber,
|
||||
TeamScope: cashAdvance.TeamScope,
|
||||
TeamCategoryID: cashAdvance.TeamCategoryID,
|
||||
Amount: cashAdvance.Amount,
|
||||
SettledAmount: cashAdvance.SettledAmount,
|
||||
ReturnedAmount: cashAdvance.ReturnedAmount,
|
||||
RemainingAmount: cashAdvance.RemainingAmount,
|
||||
SettlementStatus: cashAdvance.SettlementStatus,
|
||||
IssuedDate: cashAdvance.IssuedDate,
|
||||
DueDate: cashAdvance.DueDate,
|
||||
Status: cashAdvance.Status,
|
||||
Description: cashAdvance.Description,
|
||||
CreatedAt: cashAdvance.CreatedAt,
|
||||
UpdatedAt: cashAdvance.UpdatedAt,
|
||||
Team: PurchaseTeamModelToResponse(cashAdvance.Team),
|
||||
}
|
||||
|
||||
if cashAdvance.Settlements != nil {
|
||||
response.Settlements = make([]contract.CashAdvanceSettlementResponse, len(cashAdvance.Settlements))
|
||||
for i, settlement := range cashAdvance.Settlements {
|
||||
response.Settlements[i] = contract.CashAdvanceSettlementResponse{
|
||||
Type: settlement.Type,
|
||||
ID: settlement.ID,
|
||||
Number: settlement.Number,
|
||||
Date: settlement.Date,
|
||||
Amount: settlement.Amount,
|
||||
Status: settlement.Status,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return response
|
||||
}
|
||||
Reference in New Issue
Block a user