mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-06-09 15:07:49 +00:00
adjust response depretitation v2
This commit is contained in:
@@ -2,6 +2,7 @@ package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
commonRepo "gitlab.com/mbugroup/lti-api.git/internal/common/repository"
|
||||
@@ -1472,6 +1473,18 @@ func (s *hppV2Service) buildFarmSnapshotDepreciationPart(
|
||||
depreciationPercent = (appliedDepreciation / appliedPulletCostDayN) * 100
|
||||
}
|
||||
|
||||
details := map[string]any{
|
||||
"basis_total": snapshot.DepreciationValue,
|
||||
"pullet_cost_day_n": appliedPulletCostDayN,
|
||||
"depreciation_percent": depreciationPercent,
|
||||
"snapshot_id": snapshot.ID,
|
||||
"snapshot_period_date": formatDateOnly(snapshot.PeriodDate),
|
||||
"snapshot_project_flock": snapshot.ProjectFlockID,
|
||||
}
|
||||
for key, value := range farmDepreciationSnapshotMetadata(snapshot.Components, projectFlockKandangId) {
|
||||
details[key] = value
|
||||
}
|
||||
|
||||
return &HppV2ComponentPart{
|
||||
Code: hppV2PartDepreciationFarmSnapshot,
|
||||
Title: "Farm Snapshot",
|
||||
@@ -1483,14 +1496,7 @@ func (s *hppV2Service) buildFarmSnapshotDepreciationPart(
|
||||
Denominator: denominator,
|
||||
Ratio: ratio,
|
||||
},
|
||||
Details: map[string]any{
|
||||
"basis_total": snapshot.DepreciationValue,
|
||||
"pullet_cost_day_n": appliedPulletCostDayN,
|
||||
"depreciation_percent": depreciationPercent,
|
||||
"snapshot_id": snapshot.ID,
|
||||
"snapshot_period_date": formatDateOnly(snapshot.PeriodDate),
|
||||
"snapshot_project_flock": snapshot.ProjectFlockID,
|
||||
},
|
||||
Details: details,
|
||||
References: []HppV2Reference{
|
||||
{
|
||||
Type: "farm_depreciation_snapshot",
|
||||
@@ -1504,6 +1510,84 @@ func (s *hppV2Service) buildFarmSnapshotDepreciationPart(
|
||||
}, nil
|
||||
}
|
||||
|
||||
type farmDepreciationSnapshotComponents struct {
|
||||
Kandang []farmDepreciationSnapshotKandangComponent `json:"kandang"`
|
||||
}
|
||||
|
||||
type farmDepreciationSnapshotKandangComponent struct {
|
||||
ProjectFlockKandangID uint `json:"project_flock_kandang_id"`
|
||||
DayN int `json:"day_n"`
|
||||
MultiplicationPercent float64 `json:"multiplication_percentage"`
|
||||
ChickinDate string `json:"chickin_date"`
|
||||
OriginDate string `json:"origin_date"`
|
||||
StandardEffectiveDate string `json:"standard_effective_date"`
|
||||
Population float64 `json:"population"`
|
||||
}
|
||||
|
||||
func farmDepreciationSnapshotMetadata(raw []byte, projectFlockKandangID uint) map[string]any {
|
||||
result := make(map[string]any)
|
||||
if len(raw) == 0 {
|
||||
return result
|
||||
}
|
||||
|
||||
var components farmDepreciationSnapshotComponents
|
||||
if err := json.Unmarshal(raw, &components); err != nil {
|
||||
return result
|
||||
}
|
||||
|
||||
var fallback *farmDepreciationSnapshotKandangComponent
|
||||
for i := range components.Kandang {
|
||||
component := &components.Kandang[i]
|
||||
if !component.hasDepreciationMetadata() {
|
||||
continue
|
||||
}
|
||||
if component.ProjectFlockKandangID == projectFlockKandangID {
|
||||
return component.snapshotDetails()
|
||||
}
|
||||
if fallback == nil {
|
||||
fallback = component
|
||||
}
|
||||
}
|
||||
if fallback != nil {
|
||||
return fallback.snapshotDetails()
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
func (c farmDepreciationSnapshotKandangComponent) hasDepreciationMetadata() bool {
|
||||
return c.DayN > 0 ||
|
||||
c.MultiplicationPercent > 0 ||
|
||||
c.ChickinDate != "" ||
|
||||
c.OriginDate != "" ||
|
||||
c.StandardEffectiveDate != "" ||
|
||||
c.Population > 0
|
||||
}
|
||||
|
||||
func (c farmDepreciationSnapshotKandangComponent) snapshotDetails() map[string]any {
|
||||
chickinDate := c.ChickinDate
|
||||
if chickinDate == "" {
|
||||
chickinDate = c.OriginDate
|
||||
}
|
||||
|
||||
details := map[string]any{
|
||||
"schedule_day": c.DayN,
|
||||
"multiplication_percentage": c.MultiplicationPercent,
|
||||
}
|
||||
if chickinDate != "" {
|
||||
details["origin_date"] = chickinDate
|
||||
details["chickin_date"] = chickinDate
|
||||
}
|
||||
if c.StandardEffectiveDate != "" {
|
||||
details["standard_effective_date"] = c.StandardEffectiveDate
|
||||
}
|
||||
if c.Population > 0 {
|
||||
details["kandang_population"] = c.Population
|
||||
}
|
||||
|
||||
return details
|
||||
}
|
||||
|
||||
func (s *hppV2Service) buildNormalTransferDepreciationPart(
|
||||
contextRow *commonRepo.HppV2ProjectFlockKandangContext,
|
||||
transferInput *commonRepo.HppV2LatestTransferInputRow,
|
||||
|
||||
Reference in New Issue
Block a user