package contract import ( "github.com/google/uuid" ) type CreateAccountRequest struct { ChartOfAccountID uuid.UUID `json:"chart_of_account_id" validate:"required"` Name string `json:"name" validate:"required,min=1,max=255"` Number string `json:"number" validate:"required,min=1,max=50"` AccountType string `json:"account_type" validate:"required,oneof=cash wallet bank credit debit asset liability equity revenue expense"` OpeningBalance float64 `json:"opening_balance"` Description *string `json:"description"` } type UpdateAccountRequest struct { ChartOfAccountID *uuid.UUID `json:"chart_of_account_id"` Name *string `json:"name" validate:"omitempty,min=1,max=255"` Number *string `json:"number" validate:"omitempty,min=1,max=50"` AccountType *string `json:"account_type" validate:"omitempty,oneof=cash wallet bank credit debit asset liability equity revenue expense"` OpeningBalance *float64 `json:"opening_balance"` Description *string `json:"description"` IsActive *bool `json:"is_active"` } type AccountResponse struct { ID uuid.UUID `json:"id"` OrganizationID uuid.UUID `json:"organization_id"` OutletID *uuid.UUID `json:"outlet_id"` ChartOfAccountID uuid.UUID `json:"chart_of_account_id"` Name string `json:"name"` Number string `json:"number"` AccountType string `json:"account_type"` OpeningBalance float64 `json:"opening_balance"` CurrentBalance float64 `json:"current_balance"` Description *string `json:"description"` IsActive bool `json:"is_active"` IsSystem bool `json:"is_system"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` ChartOfAccount *ChartOfAccountResponse `json:"chart_of_account,omitempty"` } type ListAccountsRequest struct { OrganizationID *uuid.UUID `form:"organization_id"` OutletID *uuid.UUID `form:"outlet_id"` ChartOfAccountID *uuid.UUID `form:"chart_of_account_id"` AccountType *string `form:"account_type"` IsActive *bool `form:"is_active"` IsSystem *bool `form:"is_system"` Page int `form:"page,default=1"` Limit int `form:"limit,default=10"` } type UpdateAccountBalanceRequest struct { Amount float64 `json:"amount" binding:"required"` }