fix: first push implementation fifo v2 to all stockable and useable

This commit is contained in:
Hafizh A. Y
2026-02-27 15:21:55 +07:00
parent a2de21e351
commit e7e065c320
28 changed files with 1469 additions and 164 deletions
@@ -26,12 +26,49 @@ func NewConstantRepository(db *gorm.DB) ConstantRepository {
}
func (r *ConstantRepositoryImpl) GetConstants() (map[string]interface{}, error) {
flagList := make([]string, 0)
for f := range utils.AllFlagTypes() {
flagList = append(flagList, string(f))
flagSet := make(map[string]struct{})
for _, f := range utils.AllowedFlagTypes(utils.FlagGroupProduct) {
flagSet[string(f)] = struct{}{}
}
for _, f := range utils.AllowedFlagTypes(utils.FlagGroupNonstock) {
flagSet[string(f)] = struct{}{}
}
flagSet[string(utils.FlagIsActive)] = struct{}{}
flagList := make([]string, 0, len(flagSet))
for f := range flagSet {
flagList = append(flagList, f)
}
sort.Strings(flagList)
legacyFlagAliasesRaw := utils.LegacyFlagTypeAliases()
legacyFlagAliases := make(map[string]string, len(legacyFlagAliasesRaw))
for legacy, canonical := range legacyFlagAliasesRaw {
legacyFlagAliases[string(legacy)] = string(canonical)
}
productFlagOptionsRaw := utils.ProductFlagOptions()
productFlagOptions := make([]map[string]interface{}, 0, len(productFlagOptionsRaw))
productMainFlags := make([]string, 0, len(productFlagOptionsRaw))
productSubFlagToFlag := make(map[string]string)
for _, option := range productFlagOptionsRaw {
flag := string(option.Flag)
productMainFlags = append(productMainFlags, flag)
subFlags := make([]string, len(option.SubFlags))
for i, subFlag := range option.SubFlags {
subFlagStr := string(subFlag)
subFlags[i] = subFlagStr
productSubFlagToFlag[subFlagStr] = flag
}
productFlagOptions = append(productFlagOptions, map[string]interface{}{
"flag": flag,
"sub_flags": subFlags,
"allow_without_sub_flag": option.AllowWithoutSubFlag,
})
}
type approvalStepConstant struct {
StepNumber uint16 `json:"step_number"`
StepName string `json:"step_name"`
@@ -78,7 +115,13 @@ func (r *ConstantRepositoryImpl) GetConstants() (map[string]interface{}, error)
adjustmentSubtypesByType := utils.AdjustmentTransactionSubtypesByTypeForFrontend()
return map[string]interface{}{
"flags": flagList,
"flags": flagList,
"legacy_flag_aliases": legacyFlagAliases,
"product_flag_mapping": map[string]interface{}{
"flags": productMainFlags,
"options": productFlagOptions,
"sub_flag_to_flag": productSubFlagToFlag,
},
"warehouse_types": []string{
"AREA",
"LOKASI",