init
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type InventoryMovementType string
|
||||
|
||||
const (
|
||||
InventoryMovementTypeSale InventoryMovementType = "sale"
|
||||
InventoryMovementTypePurchase InventoryMovementType = "purchase"
|
||||
InventoryMovementTypeAdjustment InventoryMovementType = "adjustment"
|
||||
InventoryMovementTypeReturn InventoryMovementType = "return"
|
||||
InventoryMovementTypeRefund InventoryMovementType = "refund"
|
||||
InventoryMovementTypeVoid InventoryMovementType = "void"
|
||||
InventoryMovementTypeTransferIn InventoryMovementType = "transfer_in"
|
||||
InventoryMovementTypeTransferOut InventoryMovementType = "transfer_out"
|
||||
InventoryMovementTypeDamage InventoryMovementType = "damage"
|
||||
InventoryMovementTypeExpiry InventoryMovementType = "expiry"
|
||||
)
|
||||
|
||||
type InventoryMovementReferenceType string
|
||||
|
||||
const (
|
||||
InventoryMovementReferenceTypeOrder InventoryMovementReferenceType = "order"
|
||||
InventoryMovementReferenceTypePayment InventoryMovementReferenceType = "payment"
|
||||
InventoryMovementReferenceTypeRefund InventoryMovementReferenceType = "refund"
|
||||
InventoryMovementReferenceTypeVoid InventoryMovementReferenceType = "void"
|
||||
InventoryMovementReferenceTypeManual InventoryMovementReferenceType = "manual"
|
||||
InventoryMovementReferenceTypeTransfer InventoryMovementReferenceType = "transfer"
|
||||
InventoryMovementReferenceTypePurchaseOrder InventoryMovementReferenceType = "purchase_order"
|
||||
)
|
||||
|
||||
type InventoryMovement struct {
|
||||
ID uuid.UUID
|
||||
OrganizationID uuid.UUID
|
||||
OutletID uuid.UUID
|
||||
ProductID uuid.UUID
|
||||
MovementType InventoryMovementType
|
||||
Quantity int
|
||||
PreviousQuantity int
|
||||
NewQuantity int
|
||||
UnitCost float64
|
||||
TotalCost float64
|
||||
ReferenceType *InventoryMovementReferenceType
|
||||
ReferenceID *uuid.UUID
|
||||
OrderID *uuid.UUID
|
||||
PaymentID *uuid.UUID
|
||||
UserID uuid.UUID
|
||||
Reason *string
|
||||
Notes *string
|
||||
Metadata map[string]interface{}
|
||||
CreatedAt time.Time
|
||||
}
|
||||
|
||||
type CreateInventoryMovementRequest struct {
|
||||
OrganizationID uuid.UUID
|
||||
OutletID uuid.UUID
|
||||
ProductID uuid.UUID
|
||||
MovementType InventoryMovementType
|
||||
Quantity int
|
||||
UnitCost float64
|
||||
ReferenceType *InventoryMovementReferenceType
|
||||
ReferenceID *uuid.UUID
|
||||
OrderID *uuid.UUID
|
||||
PaymentID *uuid.UUID
|
||||
UserID uuid.UUID
|
||||
Reason *string
|
||||
Notes *string
|
||||
Metadata map[string]interface{}
|
||||
}
|
||||
|
||||
type InventoryMovementResponse struct {
|
||||
ID uuid.UUID
|
||||
OrganizationID uuid.UUID
|
||||
OutletID uuid.UUID
|
||||
ProductID uuid.UUID
|
||||
MovementType InventoryMovementType
|
||||
Quantity int
|
||||
PreviousQuantity int
|
||||
NewQuantity int
|
||||
UnitCost float64
|
||||
TotalCost float64
|
||||
ReferenceType *InventoryMovementReferenceType
|
||||
ReferenceID *uuid.UUID
|
||||
OrderID *uuid.UUID
|
||||
PaymentID *uuid.UUID
|
||||
UserID uuid.UUID
|
||||
Reason *string
|
||||
Notes *string
|
||||
Metadata map[string]interface{}
|
||||
CreatedAt time.Time
|
||||
MovementDescription string
|
||||
}
|
||||
|
||||
type ListInventoryMovementsRequest struct {
|
||||
OrganizationID *uuid.UUID
|
||||
OutletID *uuid.UUID
|
||||
ProductID *uuid.UUID
|
||||
MovementType *InventoryMovementType
|
||||
ReferenceType *InventoryMovementReferenceType
|
||||
ReferenceID *uuid.UUID
|
||||
OrderID *uuid.UUID
|
||||
PaymentID *uuid.UUID
|
||||
UserID *uuid.UUID
|
||||
DateFrom *time.Time
|
||||
DateTo *time.Time
|
||||
Page int
|
||||
Limit int
|
||||
}
|
||||
|
||||
type ListInventoryMovementsResponse struct {
|
||||
Movements []InventoryMovementResponse
|
||||
TotalCount int
|
||||
Page int
|
||||
Limit int
|
||||
TotalPages int
|
||||
}
|
||||
|
||||
func (im *InventoryMovement) IsPositiveMovement() bool {
|
||||
return im.Quantity > 0
|
||||
}
|
||||
|
||||
func (im *InventoryMovement) IsNegativeMovement() bool {
|
||||
return im.Quantity < 0
|
||||
}
|
||||
|
||||
func (im *InventoryMovement) GetMovementDescription() string {
|
||||
switch im.MovementType {
|
||||
case InventoryMovementTypeSale:
|
||||
return "Sale"
|
||||
case InventoryMovementTypePurchase:
|
||||
return "Purchase"
|
||||
case InventoryMovementTypeAdjustment:
|
||||
return "Manual Adjustment"
|
||||
case InventoryMovementTypeReturn:
|
||||
return "Return"
|
||||
case InventoryMovementTypeRefund:
|
||||
return "Refund"
|
||||
case InventoryMovementTypeVoid:
|
||||
return "Void"
|
||||
case InventoryMovementTypeTransferIn:
|
||||
return "Transfer In"
|
||||
case InventoryMovementTypeTransferOut:
|
||||
return "Transfer Out"
|
||||
case InventoryMovementTypeDamage:
|
||||
return "Damage"
|
||||
case InventoryMovementTypeExpiry:
|
||||
return "Expiry"
|
||||
default:
|
||||
return "Unknown"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user