feat: add invoice and alternative_componen management functionality

This commit is contained in:
Tran Anh Tuan
2026-05-12 11:57:11 +07:00
parent c39b010e5e
commit e81a248a61
23 changed files with 3325 additions and 2 deletions

View File

@@ -0,0 +1,11 @@
package models
type AlternativeComponent struct {
ID int64 `json:"id"`
InvoiceConfigItemID int64 `json:"invoiceConfigItemId"`
AlternativeComponentID int64 `json:"alternativeComponentId"`
ConversionRatio string `json:"conversionRatio"`
Priority int32 `json:"priority"`
Note string `json:"note"`
Metadata []byte `json:"metadata"`
}

View File

@@ -0,0 +1,19 @@
package models
import "time"
type Invoice struct {
ID int64 `json:"id"`
InvoiceCode string `json:"invoiceCode"`
Type string `json:"type"`
Status string `json:"status"`
InvoiceConfigID int64 `json:"invoiceConfigId"`
TotalItems int32 `json:"totalItems"`
Note string `json:"note"`
CreatedBy string `json:"createdBy"`
ApprovedBy string `json:"approvedBy"`
CompletedAt time.Time `json:"completedAt"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
Metadata []byte `json:"metadata"`
}

View File

@@ -0,0 +1,17 @@
package requests
type CreateAlternativeComponentRequest struct {
InvoiceConfigItemID int64 `json:"invoiceConfigItemId" binding:"required"`
AlternativeComponentID int64 `json:"alternativeComponentId" binding:"required"`
ConversionRatio string `json:"conversionRatio" binding:"required"`
Priority int32 `json:"priority" binding:"required"`
Note string `json:"note"`
}
type UpdateAlternativeComponentRequest struct {
InvoiceConfigItemID *int64 `json:"invoiceConfigItemId"`
AlternativeComponentID *int64 `json:"alternativeComponentId"`
ConversionRatio *string `json:"conversionRatio"`
Priority *int32 `json:"priority"`
Note string `json:"note"`
}

View File

@@ -0,0 +1,19 @@
package requests
type CreateInvoiceRequest struct {
Type string `json:"type" binding:"required"`
Status string `json:"status" binding:"required"`
InvoiceConfigID int64 `json:"invoiceConfigId"`
TotalItems int32 `json:"totalItems"`
Note string `json:"note"`
CreatedBy string `json:"createdBy"`
ApprovedBy string `json:"approvedBy"`
}
type UpdateInvoiceRequest struct {
Type *string `json:"type"`
Status *string `json:"status"`
InvoiceConfigID *int64 `json:"invoiceConfigId"`
TotalItems *int32 `json:"totalItems"`
Note string `json:"note"`
}

View File

@@ -0,0 +1,14 @@
package responses
type CreateAlternativeComponentResponse struct {
ID int64 `json:"id"`
}
type UpdateAlternativeComponentResponse struct {
ID int64 `json:"id"`
InvoiceConfigItemID int64 `json:"invoiceConfigItemId"`
AlternativeComponentID int64 `json:"alternativeComponentId"`
ConversionRatio string `json:"conversionRatio"`
Priority int32 `json:"priority"`
Note string `json:"note"`
}

View File

@@ -0,0 +1,16 @@
package responses
type CreateInvoiceResponse struct {
ID int64 `json:"id"`
InvoiceCode string `json:"invoiceCode"`
}
type UpdateInvoiceResponse struct {
ID int64 `json:"id"`
InvoiceCode string `json:"invoiceCode"`
Type string `json:"type"`
Status string `json:"status"`
InvoiceConfigID int64 `json:"invoiceConfigId"`
TotalItems int32 `json:"totalItems"`
Note string `json:"note"`
}