mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
Merge branch 'FEAT/BE/report-penjualan' into 'development'
[FEAT][BE]: add some filter on report penjualan API and fixing some error See merge request mbugroup/lti-api!167
This commit is contained in:
@@ -137,13 +137,14 @@ func (r *MarketingDeliveryProductRepositoryImpl) GetAllWithFilters(ctx context.C
|
|||||||
Preload("ProductWarehouse.ProjectFlockKandang.ProjectFlock")
|
Preload("ProductWarehouse.ProjectFlockKandang.ProjectFlock")
|
||||||
}).
|
}).
|
||||||
Joins("JOIN marketing_products ON marketing_products.id = marketing_delivery_products.marketing_product_id").
|
Joins("JOIN marketing_products ON marketing_products.id = marketing_delivery_products.marketing_product_id").
|
||||||
Joins("JOIN marketings ON marketings.id = marketing_products.marketing_id")
|
Joins("JOIN marketings ON marketings.id = marketing_products.marketing_id").
|
||||||
|
Where("marketing_delivery_products.delivery_date IS NOT NULL")
|
||||||
|
|
||||||
if filters.ProductId > 0 || filters.WarehouseId > 0 || filters.Search != "" {
|
if filters.ProductId > 0 || filters.WarehouseId > 0 || filters.Search != "" || filters.MarketingType != "" {
|
||||||
db = db.Joins("LEFT JOIN product_warehouses ON product_warehouses.id = marketing_products.product_warehouse_id")
|
db = db.Joins("LEFT JOIN product_warehouses ON product_warehouses.id = marketing_products.product_warehouse_id")
|
||||||
}
|
}
|
||||||
|
|
||||||
if filters.ProductId > 0 || filters.Search != "" {
|
if filters.ProductId > 0 || filters.Search != "" || filters.MarketingType != "" {
|
||||||
db = db.Joins("LEFT JOIN products ON products.id = product_warehouses.product_id")
|
db = db.Joins("LEFT JOIN products ON products.id = product_warehouses.product_id")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,6 +178,29 @@ func (r *MarketingDeliveryProductRepositoryImpl) GetAllWithFilters(ctx context.C
|
|||||||
db = db.Where("product_warehouses.warehouse_id = ?", filters.WarehouseId)
|
db = db.Where("product_warehouses.warehouse_id = ?", filters.WarehouseId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if filters.MarketingType != "" {
|
||||||
|
db = db.Joins("LEFT JOIN flags ON flags.flagable_id = products.id AND flags.flagable_type = 'products'").
|
||||||
|
Group("marketing_delivery_products.id")
|
||||||
|
|
||||||
|
switch filters.MarketingType {
|
||||||
|
case "ayam":
|
||||||
|
db = db.Where("flags.name IN (?)", []string{
|
||||||
|
string(utils.FlagDOC), string(utils.FlagPullet), string(utils.FlagLayer),
|
||||||
|
string(utils.FlagAyamAfkir), string(utils.FlagAyamCulling), string(utils.FlagAyamMati),
|
||||||
|
})
|
||||||
|
case "telur":
|
||||||
|
db = db.Where("flags.name IN (?)", []string{
|
||||||
|
string(utils.FlagTelur), string(utils.FlagTelurUtuh), string(utils.FlagTelurPecah),
|
||||||
|
string(utils.FlagTelurPutih), string(utils.FlagTelurRetak),
|
||||||
|
})
|
||||||
|
case "trading":
|
||||||
|
db = db.Where("flags.name IN (?)", []string{
|
||||||
|
string(utils.FlagOVK), string(utils.FlagObat), string(utils.FlagVitamin), string(utils.FlagKimia),
|
||||||
|
string(utils.FlagPakan), string(utils.FlagPreStarter), string(utils.FlagStarter), string(utils.FlagFinisher),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if filters.FilterBy != "" && (filters.StartDate != "" || filters.EndDate != "") {
|
if filters.FilterBy != "" && (filters.StartDate != "" || filters.EndDate != "") {
|
||||||
if filters.FilterBy == "so_date" {
|
if filters.FilterBy == "so_date" {
|
||||||
if filters.StartDate != "" {
|
if filters.StartDate != "" {
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ func (c *RepportController) GetMarketing(ctx *fiber.Ctx) error {
|
|||||||
ProductId: int64(ctx.QueryInt("product_id", 0)),
|
ProductId: int64(ctx.QueryInt("product_id", 0)),
|
||||||
WarehouseId: int64(ctx.QueryInt("warehouse_id", 0)),
|
WarehouseId: int64(ctx.QueryInt("warehouse_id", 0)),
|
||||||
SalesPersonId: int64(ctx.QueryInt("sales_person_id", 0)),
|
SalesPersonId: int64(ctx.QueryInt("sales_person_id", 0)),
|
||||||
|
MarketingType: ctx.Query("marketing_type", ""),
|
||||||
FilterBy: ctx.Query("filter_by", ""),
|
FilterBy: ctx.Query("filter_by", ""),
|
||||||
StartDate: ctx.Query("start_date", ""),
|
StartDate: ctx.Query("start_date", ""),
|
||||||
EndDate: ctx.Query("end_date", ""),
|
EndDate: ctx.Query("end_date", ""),
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ func ToRepportMarketingItemDTOsWithHppMap(mdps []entity.MarketingDeliveryProduct
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getMarketingType(mdp entity.MarketingDeliveryProduct) string {
|
func getMarketingType(mdp entity.MarketingDeliveryProduct) string {
|
||||||
hasAyam, hasTelur := checkProductFlags(mdp.MarketingProduct.ProductWarehouse.Product.Flags)
|
hasAyam, hasTelur, hasTrading := checkProductFlags(mdp.MarketingProduct.ProductWarehouse.Product.Flags)
|
||||||
|
|
||||||
if hasAyam {
|
if hasAyam {
|
||||||
return "ayam"
|
return "ayam"
|
||||||
@@ -157,12 +157,15 @@ func getMarketingType(mdp entity.MarketingDeliveryProduct) string {
|
|||||||
if hasTelur {
|
if hasTelur {
|
||||||
return "telur"
|
return "telur"
|
||||||
}
|
}
|
||||||
return "trading"
|
if hasTrading {
|
||||||
|
return "trading"
|
||||||
|
}
|
||||||
|
return "trading" // default to trading if no flags found
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkProductFlags(flags []entity.Flag) (hasAyam, hasTelur bool) {
|
func checkProductFlags(flags []entity.Flag) (hasAyam, hasTelur, hasTrading bool) {
|
||||||
if len(flags) == 0 {
|
if len(flags) == 0 {
|
||||||
return false, false
|
return false, false, false
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, flag := range flags {
|
for _, flag := range flags {
|
||||||
@@ -177,13 +180,18 @@ func checkProductFlags(flags []entity.Flag) (hasAyam, hasTelur bool) {
|
|||||||
ft == utils.FlagTelurPutih || ft == utils.FlagTelurRetak {
|
ft == utils.FlagTelurPutih || ft == utils.FlagTelurRetak {
|
||||||
hasTelur = true
|
hasTelur = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ft == utils.FlagOVK || ft == utils.FlagObat || ft == utils.FlagVitamin || ft == utils.FlagKimia ||
|
||||||
|
ft == utils.FlagPakan || ft == utils.FlagPreStarter || ft == utils.FlagStarter || ft == utils.FlagFinisher {
|
||||||
|
hasTrading = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return hasAyam, hasTelur
|
return hasAyam, hasTelur, hasTrading
|
||||||
}
|
}
|
||||||
|
|
||||||
func isProductEligibleForHpp(mdp entity.MarketingDeliveryProduct, category string) bool {
|
func isProductEligibleForHpp(mdp entity.MarketingDeliveryProduct, category string) bool {
|
||||||
hasAyam, hasTelur := checkProductFlags(mdp.MarketingProduct.ProductWarehouse.Product.Flags)
|
hasAyam, hasTelur, _ := checkProductFlags(mdp.MarketingProduct.ProductWarehouse.Product.Flags)
|
||||||
|
|
||||||
if utils.ProjectFlockCategory(category) == utils.ProjectFlockCategoryGrowing {
|
if utils.ProjectFlockCategory(category) == utils.ProjectFlockCategoryGrowing {
|
||||||
return hasAyam
|
return hasAyam
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ type MarketingQuery struct {
|
|||||||
ProductId int64 `query:"product_id" validate:"omitempty"`
|
ProductId int64 `query:"product_id" validate:"omitempty"`
|
||||||
WarehouseId int64 `query:"warehouse_id" validate:"omitempty"`
|
WarehouseId int64 `query:"warehouse_id" validate:"omitempty"`
|
||||||
SalesPersonId int64 `query:"sales_person_id" validate:"omitempty"`
|
SalesPersonId int64 `query:"sales_person_id" validate:"omitempty"`
|
||||||
|
MarketingType string `query:"marketing_type" validate:"omitempty,oneof=ayam telur trading"`
|
||||||
FilterBy string `query:"filter_by" validate:"omitempty,oneof=so_date realization_date"`
|
FilterBy string `query:"filter_by" validate:"omitempty,oneof=so_date realization_date"`
|
||||||
StartDate string `query:"start_date" validate:"omitempty,datetime=2006-01-02"`
|
StartDate string `query:"start_date" validate:"omitempty,datetime=2006-01-02"`
|
||||||
EndDate string `query:"end_date" validate:"omitempty,datetime=2006-01-02"`
|
EndDate string `query:"end_date" validate:"omitempty,datetime=2006-01-02"`
|
||||||
|
|||||||
Reference in New Issue
Block a user