mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
FIX[BE]: fixing closing penjualan add sumary
This commit is contained in:
@@ -160,7 +160,7 @@ func (u *ClosingController) GetPenjualan(c *fiber.Ctx) error {
|
|||||||
Code: fiber.StatusOK,
|
Code: fiber.StatusOK,
|
||||||
Status: "success",
|
Status: "success",
|
||||||
Message: "Get closing penjualan successfully",
|
Message: "Get closing penjualan successfully",
|
||||||
Data: dto.ToPenjualanRealisasiResponseDTO(uint(projectFlockID), result),
|
Data: dto.ToPenjualanRealisasiResponseDTO(result),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@ func (u *ClosingController) GetPenjualanByProjectFlockKandang(c *fiber.Ctx) erro
|
|||||||
Code: fiber.StatusOK,
|
Code: fiber.StatusOK,
|
||||||
Status: "success",
|
Status: "success",
|
||||||
Message: "Get closing penjualan by project flock kandang successfully",
|
Message: "Get closing penjualan by project flock kandang successfully",
|
||||||
Data: dto.ToPenjualanRealisasiResponseDTO(uint(projectFlockID), result),
|
Data: dto.ToPenjualanRealisasiResponseDTO(result),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,23 +12,31 @@ import (
|
|||||||
|
|
||||||
// === Response DTO ===
|
// === Response DTO ===
|
||||||
type SalesDTO struct {
|
type SalesDTO struct {
|
||||||
Id uint `json:"id"`
|
Id uint `json:"id"`
|
||||||
RealizationDate time.Time `json:"realization_date"`
|
RealizationDate time.Time `json:"realization_date"`
|
||||||
Age int `json:"age"`
|
Age int `json:"age"`
|
||||||
DoNumber string `json:"do_number"`
|
DoNumber string `json:"do_number"`
|
||||||
Product *productDTO.ProductRelationDTO `json:"product,omitempty"`
|
Product *productDTO.ProductRelationDTO `json:"product,omitempty"`
|
||||||
Customer *customerDTO.CustomerRelationDTO `json:"customer,omitempty"`
|
Customer *customerDTO.CustomerRelationDTO `json:"customer,omitempty"`
|
||||||
Qty float64 `json:"qty"`
|
Qty float64 `json:"qty"`
|
||||||
Weight float64 `json:"weight"`
|
Weight float64 `json:"weight"`
|
||||||
AvgWeight float64 `json:"avg_weight"`
|
AvgWeight float64 `json:"avg_weight"`
|
||||||
Price float64 `json:"price"`
|
SalesPrice float64 `json:"sales_price"`
|
||||||
TotalPrice float64 `json:"total_price"`
|
TotalSalesPrice float64 `json:"total_sales_price"`
|
||||||
Kandang *kandangDTO.KandangRelationDTO `json:"kandang,omitempty"`
|
ActualPrice float64 `json:"actual_price"`
|
||||||
PaymentStatus string `json:"payment_status"`
|
TotalActualPrice float64 `json:"total_actual_price"`
|
||||||
|
Kandang *kandangDTO.KandangRelationDTO `json:"kandang,omitempty"`
|
||||||
|
}
|
||||||
|
type SummaryDTO struct {
|
||||||
|
TotalSalesPrice float64 `json:"total_sales_price"`
|
||||||
|
AvgSalesPrice float64 `json:"avg_sales_price"`
|
||||||
|
TotalActualPrice float64 `json:"total_actual_price"`
|
||||||
|
AvgActualPrice float64 `json:"avg_actual_price"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type PenjualanRealisasiResponseDTO struct {
|
type PenjualanRealisasiResponseDTO struct {
|
||||||
Sales []SalesDTO `json:"sales"`
|
Sales []SalesDTO `json:"sales"`
|
||||||
|
Summary SummaryDTO `json:"summary"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// === Mapper Functions ===
|
// === Mapper Functions ===
|
||||||
@@ -63,19 +71,38 @@ func ToSalesDTO(e entity.MarketingDeliveryProduct) SalesDTO {
|
|||||||
doNumber := deliveryOrdersDTO.GenerateDeliveryOrderNumber(e.MarketingProduct.Marketing.SoNumber, e.DeliveryDate, e.MarketingProduct.ProductWarehouse.Warehouse.Id)
|
doNumber := deliveryOrdersDTO.GenerateDeliveryOrderNumber(e.MarketingProduct.Marketing.SoNumber, e.DeliveryDate, e.MarketingProduct.ProductWarehouse.Warehouse.Id)
|
||||||
|
|
||||||
return SalesDTO{
|
return SalesDTO{
|
||||||
Id: e.Id,
|
Id: e.Id,
|
||||||
RealizationDate: realizationDate,
|
RealizationDate: realizationDate,
|
||||||
Age: age,
|
Age: age,
|
||||||
DoNumber: doNumber,
|
DoNumber: doNumber,
|
||||||
Product: product,
|
Product: product,
|
||||||
Customer: customer,
|
Customer: customer,
|
||||||
Qty: e.UsageQty,
|
Qty: e.UsageQty,
|
||||||
Weight: e.TotalWeight,
|
Weight: e.TotalWeight,
|
||||||
AvgWeight: e.AvgWeight,
|
AvgWeight: e.AvgWeight,
|
||||||
Price: e.UnitPrice,
|
SalesPrice: e.MarketingProduct.UnitPrice,
|
||||||
TotalPrice: e.TotalPrice,
|
TotalSalesPrice: e.MarketingProduct.TotalPrice,
|
||||||
Kandang: kandang,
|
ActualPrice: e.UnitPrice,
|
||||||
PaymentStatus: "Paid",
|
TotalActualPrice: e.TotalPrice,
|
||||||
|
Kandang: kandang,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ToSummaryDto(e []entity.MarketingDeliveryProduct) SummaryDTO {
|
||||||
|
|
||||||
|
var totalSalesPrice, totalActualPrice float64
|
||||||
|
count := len(e)
|
||||||
|
|
||||||
|
for _, item := range e {
|
||||||
|
totalSalesPrice += item.MarketingProduct.TotalPrice
|
||||||
|
totalActualPrice += item.TotalPrice
|
||||||
|
}
|
||||||
|
|
||||||
|
return SummaryDTO{
|
||||||
|
TotalSalesPrice: totalSalesPrice,
|
||||||
|
TotalActualPrice: totalActualPrice,
|
||||||
|
AvgSalesPrice: totalSalesPrice / float64(count),
|
||||||
|
AvgActualPrice: totalActualPrice / float64(count),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,25 +114,13 @@ func ToSalesDTOs(e []entity.MarketingDeliveryProduct) []SalesDTO {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
func ToPenjualanRealisasiResponseDTO(projectFlockID uint, e []entity.MarketingDeliveryProduct) PenjualanRealisasiResponseDTO {
|
func ToPenjualanRealisasiResponseDTO(e []entity.MarketingDeliveryProduct) PenjualanRealisasiResponseDTO {
|
||||||
|
|
||||||
return PenjualanRealisasiResponseDTO{
|
return PenjualanRealisasiResponseDTO{
|
||||||
|
Sales: ToSalesDTOs(e),
|
||||||
Sales: ToSalesDTOs(e),
|
Summary: ToSummaryDto(e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func extractPeriodFromRealisasi(realisasi []entity.MarketingDeliveryProduct) int {
|
|
||||||
if len(realisasi) > 0 {
|
|
||||||
for _, item := range realisasi {
|
|
||||||
if item.MarketingProduct.ProductWarehouse.ProjectFlockKandang != nil {
|
|
||||||
return item.MarketingProduct.ProductWarehouse.ProjectFlockKandang.Period
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func calculateAgeFromChickin(projectFlockKandang *entity.ProjectFlockKandang, deliveryDate *time.Time) int {
|
func calculateAgeFromChickin(projectFlockKandang *entity.ProjectFlockKandang, deliveryDate *time.Time) int {
|
||||||
if projectFlockKandang == nil || deliveryDate == nil || len(projectFlockKandang.Chickins) == 0 {
|
if projectFlockKandang == nil || deliveryDate == nil || len(projectFlockKandang.Chickins) == 0 {
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
Reference in New Issue
Block a user