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
|
||||
}
|
||||
@@ -21,6 +21,7 @@ func CreateExpenseRequestToModel(req *contract.CreateExpenseRequest) *models.Cre
|
||||
Description: req.Description,
|
||||
Tax: req.Tax,
|
||||
Total: req.Total,
|
||||
CashAdvanceID: req.CashAdvanceID,
|
||||
Items: items,
|
||||
}
|
||||
}
|
||||
@@ -46,6 +47,7 @@ func UpdateExpenseRequestToModel(req *contract.UpdateExpenseRequest) *models.Upd
|
||||
Tax: req.Tax,
|
||||
Total: req.Total,
|
||||
Reserved1: req.Reserved1,
|
||||
CashAdvanceID: req.CashAdvanceID,
|
||||
}
|
||||
|
||||
if req.Items != nil {
|
||||
@@ -103,6 +105,7 @@ func ExpenseModelResponseToResponse(expense *models.ExpenseResponse) *contract.E
|
||||
Tax: expense.Tax,
|
||||
Total: expense.Total,
|
||||
Reserved1: expense.Reserved1,
|
||||
CashAdvanceID: expense.CashAdvanceID,
|
||||
CreatedAt: expense.CreatedAt,
|
||||
UpdatedAt: expense.UpdatedAt,
|
||||
Items: items,
|
||||
|
||||
@@ -46,6 +46,7 @@ func CreatePurchaseOrderRequestToModel(req *contract.CreatePurchaseOrderRequest)
|
||||
Message: req.Message,
|
||||
TeamScope: req.TeamScope,
|
||||
TeamCategoryID: req.TeamCategoryID,
|
||||
CashAdvanceID: req.CashAdvanceID,
|
||||
Items: items,
|
||||
AttachmentFileIDs: req.AttachmentFileIDs,
|
||||
}, nil
|
||||
@@ -98,6 +99,7 @@ func UpdatePurchaseOrderRequestToModel(req *contract.UpdatePurchaseOrderRequest)
|
||||
Message: req.Message,
|
||||
TeamScope: req.TeamScope,
|
||||
TeamCategoryID: req.TeamCategoryID,
|
||||
CashAdvanceID: req.CashAdvanceID,
|
||||
Items: items,
|
||||
AttachmentFileIDs: req.AttachmentFileIDs,
|
||||
}, nil
|
||||
@@ -159,6 +161,7 @@ func PurchaseOrderModelResponseToResponse(po *models.PurchaseOrderResponse) *con
|
||||
TotalAmount: po.TotalAmount,
|
||||
TeamScope: po.TeamScope,
|
||||
TeamCategoryID: po.TeamCategoryID,
|
||||
CashAdvanceID: po.CashAdvanceID,
|
||||
CreatedAt: po.CreatedAt,
|
||||
UpdatedAt: po.UpdatedAt,
|
||||
Team: PurchaseTeamModelToResponse(po.Team),
|
||||
|
||||
Reference in New Issue
Block a user