Add coa purchase and vendors
This commit is contained in:
+141
-44
@@ -12,28 +12,34 @@ import (
|
||||
)
|
||||
|
||||
type Router struct {
|
||||
config *config.Config
|
||||
healthHandler *handler.HealthHandler
|
||||
authHandler *handler.AuthHandler
|
||||
userHandler *handler.UserHandler
|
||||
organizationHandler *handler.OrganizationHandler
|
||||
outletHandler *handler.OutletHandler
|
||||
outletSettingHandler *handler.OutletSettingHandlerImpl
|
||||
categoryHandler *handler.CategoryHandler
|
||||
productHandler *handler.ProductHandler
|
||||
productVariantHandler *handler.ProductVariantHandler
|
||||
inventoryHandler *handler.InventoryHandler
|
||||
orderHandler *handler.OrderHandler
|
||||
fileHandler *handler.FileHandler
|
||||
customerHandler *handler.CustomerHandler
|
||||
paymentMethodHandler *handler.PaymentMethodHandler
|
||||
analyticsHandler *handler.AnalyticsHandler
|
||||
reportHandler *handler.ReportHandler
|
||||
tableHandler *handler.TableHandler
|
||||
unitHandler *handler.UnitHandler
|
||||
ingredientHandler *handler.IngredientHandler
|
||||
productRecipeHandler *handler.ProductRecipeHandler
|
||||
authMiddleware *middleware.AuthMiddleware
|
||||
config *config.Config
|
||||
healthHandler *handler.HealthHandler
|
||||
authHandler *handler.AuthHandler
|
||||
userHandler *handler.UserHandler
|
||||
organizationHandler *handler.OrganizationHandler
|
||||
outletHandler *handler.OutletHandler
|
||||
outletSettingHandler *handler.OutletSettingHandlerImpl
|
||||
categoryHandler *handler.CategoryHandler
|
||||
productHandler *handler.ProductHandler
|
||||
productVariantHandler *handler.ProductVariantHandler
|
||||
inventoryHandler *handler.InventoryHandler
|
||||
orderHandler *handler.OrderHandler
|
||||
fileHandler *handler.FileHandler
|
||||
customerHandler *handler.CustomerHandler
|
||||
paymentMethodHandler *handler.PaymentMethodHandler
|
||||
analyticsHandler *handler.AnalyticsHandler
|
||||
reportHandler *handler.ReportHandler
|
||||
tableHandler *handler.TableHandler
|
||||
unitHandler *handler.UnitHandler
|
||||
ingredientHandler *handler.IngredientHandler
|
||||
productRecipeHandler *handler.ProductRecipeHandler
|
||||
vendorHandler *handler.VendorHandler
|
||||
purchaseOrderHandler *handler.PurchaseOrderHandler
|
||||
unitConverterHandler *handler.IngredientUnitConverterHandler
|
||||
chartOfAccountTypeHandler *handler.ChartOfAccountTypeHandler
|
||||
chartOfAccountHandler *handler.ChartOfAccountHandler
|
||||
accountHandler *handler.AccountHandler
|
||||
authMiddleware *middleware.AuthMiddleware
|
||||
}
|
||||
|
||||
func NewRouter(cfg *config.Config,
|
||||
@@ -69,30 +75,48 @@ func NewRouter(cfg *config.Config,
|
||||
tableValidator *validator.TableValidator,
|
||||
unitService handler.UnitService,
|
||||
ingredientService handler.IngredientService,
|
||||
productRecipeService service.ProductRecipeService) *Router {
|
||||
productRecipeService service.ProductRecipeService,
|
||||
vendorService service.VendorService,
|
||||
vendorValidator validator.VendorValidator,
|
||||
purchaseOrderService service.PurchaseOrderService,
|
||||
purchaseOrderValidator validator.PurchaseOrderValidator,
|
||||
unitConverterService service.IngredientUnitConverterService,
|
||||
unitConverterValidator validator.IngredientUnitConverterValidator,
|
||||
chartOfAccountTypeService service.ChartOfAccountTypeService,
|
||||
chartOfAccountTypeValidator validator.ChartOfAccountTypeValidator,
|
||||
chartOfAccountService service.ChartOfAccountService,
|
||||
chartOfAccountValidator validator.ChartOfAccountValidator,
|
||||
accountService service.AccountService,
|
||||
accountValidator validator.AccountValidator) *Router {
|
||||
|
||||
return &Router{
|
||||
config: cfg,
|
||||
healthHandler: healthHandler,
|
||||
authHandler: handler.NewAuthHandler(authService),
|
||||
userHandler: handler.NewUserHandler(userService, userValidator),
|
||||
organizationHandler: handler.NewOrganizationHandler(organizationService, organizationValidator),
|
||||
outletHandler: handler.NewOutletHandler(outletService, outletValidator),
|
||||
outletSettingHandler: handler.NewOutletSettingHandlerImpl(outletSettingService),
|
||||
categoryHandler: handler.NewCategoryHandler(categoryService, categoryValidator),
|
||||
productHandler: handler.NewProductHandler(productService, productValidator),
|
||||
inventoryHandler: handler.NewInventoryHandler(inventoryService, inventoryValidator),
|
||||
orderHandler: handler.NewOrderHandler(orderService, orderValidator, transformer.NewTransformer()),
|
||||
fileHandler: handler.NewFileHandler(fileService, fileValidator, transformer.NewTransformer()),
|
||||
customerHandler: handler.NewCustomerHandler(customerService, customerValidator),
|
||||
paymentMethodHandler: handler.NewPaymentMethodHandler(paymentMethodService, paymentMethodValidator),
|
||||
analyticsHandler: handler.NewAnalyticsHandler(analyticsService, transformer.NewTransformer()),
|
||||
reportHandler: handler.NewReportHandler(reportService, userService),
|
||||
tableHandler: handler.NewTableHandler(tableService, tableValidator),
|
||||
unitHandler: handler.NewUnitHandler(unitService),
|
||||
ingredientHandler: handler.NewIngredientHandler(ingredientService),
|
||||
productRecipeHandler: handler.NewProductRecipeHandler(productRecipeService),
|
||||
authMiddleware: authMiddleware,
|
||||
config: cfg,
|
||||
healthHandler: healthHandler,
|
||||
authHandler: handler.NewAuthHandler(authService),
|
||||
userHandler: handler.NewUserHandler(userService, userValidator),
|
||||
organizationHandler: handler.NewOrganizationHandler(organizationService, organizationValidator),
|
||||
outletHandler: handler.NewOutletHandler(outletService, outletValidator),
|
||||
outletSettingHandler: handler.NewOutletSettingHandlerImpl(outletSettingService),
|
||||
categoryHandler: handler.NewCategoryHandler(categoryService, categoryValidator),
|
||||
productHandler: handler.NewProductHandler(productService, productValidator),
|
||||
inventoryHandler: handler.NewInventoryHandler(inventoryService, inventoryValidator),
|
||||
orderHandler: handler.NewOrderHandler(orderService, orderValidator, transformer.NewTransformer()),
|
||||
fileHandler: handler.NewFileHandler(fileService, fileValidator, transformer.NewTransformer()),
|
||||
customerHandler: handler.NewCustomerHandler(customerService, customerValidator),
|
||||
paymentMethodHandler: handler.NewPaymentMethodHandler(paymentMethodService, paymentMethodValidator),
|
||||
analyticsHandler: handler.NewAnalyticsHandler(analyticsService, transformer.NewTransformer()),
|
||||
reportHandler: handler.NewReportHandler(reportService, userService),
|
||||
tableHandler: handler.NewTableHandler(tableService, tableValidator),
|
||||
unitHandler: handler.NewUnitHandler(unitService),
|
||||
ingredientHandler: handler.NewIngredientHandler(ingredientService),
|
||||
productRecipeHandler: handler.NewProductRecipeHandler(productRecipeService),
|
||||
vendorHandler: handler.NewVendorHandler(vendorService, vendorValidator),
|
||||
purchaseOrderHandler: handler.NewPurchaseOrderHandler(purchaseOrderService, purchaseOrderValidator),
|
||||
unitConverterHandler: handler.NewIngredientUnitConverterHandler(unitConverterService, unitConverterValidator),
|
||||
chartOfAccountTypeHandler: handler.NewChartOfAccountTypeHandler(chartOfAccountTypeService, chartOfAccountTypeValidator),
|
||||
chartOfAccountHandler: handler.NewChartOfAccountHandler(chartOfAccountService, chartOfAccountValidator),
|
||||
accountHandler: handler.NewAccountHandler(accountService, accountValidator),
|
||||
authMiddleware: authMiddleware,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,6 +321,42 @@ func (r *Router) addAppRoutes(rg *gin.Engine) {
|
||||
ingredients.DELETE("/:id", r.ingredientHandler.Delete)
|
||||
}
|
||||
|
||||
vendors := protected.Group("/vendors")
|
||||
vendors.Use(r.authMiddleware.RequireAdminOrManager())
|
||||
{
|
||||
vendors.POST("", r.vendorHandler.CreateVendor)
|
||||
vendors.GET("", r.vendorHandler.ListVendors)
|
||||
vendors.GET("/active", r.vendorHandler.GetActiveVendors)
|
||||
vendors.GET("/:id", r.vendorHandler.GetVendor)
|
||||
vendors.PUT("/:id", r.vendorHandler.UpdateVendor)
|
||||
vendors.DELETE("/:id", r.vendorHandler.DeleteVendor)
|
||||
}
|
||||
|
||||
purchaseOrders := protected.Group("/purchase-orders")
|
||||
purchaseOrders.Use(r.authMiddleware.RequireAdminOrManager())
|
||||
{
|
||||
purchaseOrders.POST("", r.purchaseOrderHandler.CreatePurchaseOrder)
|
||||
purchaseOrders.GET("", r.purchaseOrderHandler.ListPurchaseOrders)
|
||||
purchaseOrders.GET("/status/:status", r.purchaseOrderHandler.GetPurchaseOrdersByStatus)
|
||||
purchaseOrders.GET("/overdue", r.purchaseOrderHandler.GetOverduePurchaseOrders)
|
||||
purchaseOrders.GET("/:id", r.purchaseOrderHandler.GetPurchaseOrder)
|
||||
purchaseOrders.PUT("/:id", r.purchaseOrderHandler.UpdatePurchaseOrder)
|
||||
purchaseOrders.PUT("/:id/status/:status", r.purchaseOrderHandler.UpdatePurchaseOrderStatus)
|
||||
purchaseOrders.DELETE("/:id", r.purchaseOrderHandler.DeletePurchaseOrder)
|
||||
}
|
||||
|
||||
unitConverters := protected.Group("/unit-converters")
|
||||
unitConverters.Use(r.authMiddleware.RequireAdminOrManager())
|
||||
{
|
||||
unitConverters.POST("", r.unitConverterHandler.CreateIngredientUnitConverter)
|
||||
unitConverters.GET("", r.unitConverterHandler.ListIngredientUnitConverters)
|
||||
unitConverters.GET("/ingredient/:ingredient_id", r.unitConverterHandler.GetConvertersForIngredient)
|
||||
unitConverters.POST("/convert", r.unitConverterHandler.ConvertUnit)
|
||||
unitConverters.GET("/:id", r.unitConverterHandler.GetIngredientUnitConverter)
|
||||
unitConverters.PUT("/:id", r.unitConverterHandler.UpdateIngredientUnitConverter)
|
||||
unitConverters.DELETE("/:id", r.unitConverterHandler.DeleteIngredientUnitConverter)
|
||||
}
|
||||
|
||||
productRecipes := protected.Group("/product-recipes")
|
||||
productRecipes.Use(r.authMiddleware.RequireAdminOrManager())
|
||||
{
|
||||
@@ -309,6 +369,43 @@ func (r *Router) addAppRoutes(rg *gin.Engine) {
|
||||
productRecipes.GET("/ingredient/:ingredient_id", r.productRecipeHandler.GetByIngredientID)
|
||||
}
|
||||
|
||||
// Accounting routes
|
||||
chartOfAccountTypes := protected.Group("/chart-of-account-types")
|
||||
chartOfAccountTypes.Use(r.authMiddleware.RequireAdminOrManager())
|
||||
{
|
||||
chartOfAccountTypes.POST("", r.chartOfAccountTypeHandler.CreateChartOfAccountType)
|
||||
chartOfAccountTypes.GET("", r.chartOfAccountTypeHandler.ListChartOfAccountTypes)
|
||||
chartOfAccountTypes.GET("/:id", r.chartOfAccountTypeHandler.GetChartOfAccountTypeByID)
|
||||
chartOfAccountTypes.PUT("/:id", r.chartOfAccountTypeHandler.UpdateChartOfAccountType)
|
||||
chartOfAccountTypes.DELETE("/:id", r.chartOfAccountTypeHandler.DeleteChartOfAccountType)
|
||||
}
|
||||
|
||||
chartOfAccounts := protected.Group("/chart-of-accounts")
|
||||
chartOfAccounts.Use(r.authMiddleware.RequireAdminOrManager())
|
||||
{
|
||||
chartOfAccounts.POST("", r.chartOfAccountHandler.CreateChartOfAccount)
|
||||
chartOfAccounts.GET("", r.chartOfAccountHandler.ListChartOfAccounts)
|
||||
chartOfAccounts.GET("/:id", r.chartOfAccountHandler.GetChartOfAccountByID)
|
||||
chartOfAccounts.PUT("/:id", r.chartOfAccountHandler.UpdateChartOfAccount)
|
||||
chartOfAccounts.DELETE("/:id", r.chartOfAccountHandler.DeleteChartOfAccount)
|
||||
chartOfAccounts.GET("/organization/:organization_id", r.chartOfAccountHandler.GetChartOfAccountsByOrganization)
|
||||
chartOfAccounts.GET("/organization/:organization_id/type/:type_id", r.chartOfAccountHandler.GetChartOfAccountsByType)
|
||||
}
|
||||
|
||||
accounts := protected.Group("/accounts")
|
||||
accounts.Use(r.authMiddleware.RequireAdminOrManager())
|
||||
{
|
||||
accounts.POST("", r.accountHandler.CreateAccount)
|
||||
accounts.GET("", r.accountHandler.ListAccounts)
|
||||
accounts.GET("/:id", r.accountHandler.GetAccountByID)
|
||||
accounts.PUT("/:id", r.accountHandler.UpdateAccount)
|
||||
accounts.DELETE("/:id", r.accountHandler.DeleteAccount)
|
||||
accounts.GET("/organization/:organization_id", r.accountHandler.GetAccountsByOrganization)
|
||||
accounts.GET("/chart-of-account/:chart_of_account_id", r.accountHandler.GetAccountsByChartOfAccount)
|
||||
accounts.PUT("/:id/balance", r.accountHandler.UpdateAccountBalance)
|
||||
accounts.GET("/:id/balance", r.accountHandler.GetAccountBalance)
|
||||
}
|
||||
|
||||
outlets := protected.Group("/outlets")
|
||||
outlets.Use(r.authMiddleware.RequireAdminOrManager())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user