mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 05:21:57 +00:00
125 lines
2.8 KiB
Go
125 lines
2.8 KiB
Go
package dto
|
|
|
|
import "testing"
|
|
|
|
func TestToSapronakProjectAggregatedFromReportMovesCutOverAdjustmentOutToQtyUsed(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
groupFlag string
|
|
filter string
|
|
productFlag string
|
|
}{
|
|
{
|
|
name: "pakan cut-over",
|
|
groupFlag: "PAKAN",
|
|
filter: "PAKAN",
|
|
productFlag: "PAKAN CUT-OVER",
|
|
},
|
|
{
|
|
name: "ovk cut over",
|
|
groupFlag: "OVK",
|
|
filter: "OVK",
|
|
productFlag: "OVK CUT OVER",
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
report := &SapronakReportDTO{
|
|
Groups: []SapronakGroupDTO{
|
|
{
|
|
Flag: tc.groupFlag,
|
|
Items: []SapronakDetailDTO{
|
|
{
|
|
ProductID: 1,
|
|
ProductName: "CUTOVER ITEM",
|
|
NoReferensi: "ADJ-CUT-01",
|
|
JenisTransaksi: "Adjustment Keluar",
|
|
QtyKeluar: 5,
|
|
Harga: 15000,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
result := ToSapronakProjectAggregatedFromReport(
|
|
report,
|
|
tc.filter,
|
|
map[uint][]string{
|
|
1: {tc.productFlag},
|
|
},
|
|
)
|
|
|
|
var cat *SapronakCategoryDTO
|
|
if tc.groupFlag == "PAKAN" {
|
|
cat = result.Pakan
|
|
} else {
|
|
cat = result.Ovk
|
|
}
|
|
if cat == nil {
|
|
t.Fatalf("expected category payload for %s", tc.groupFlag)
|
|
}
|
|
if len(cat.Rows) != 1 {
|
|
t.Fatalf("expected 1 row, got %d", len(cat.Rows))
|
|
}
|
|
|
|
row := cat.Rows[0]
|
|
if row.QtyOut != 0 {
|
|
t.Fatalf("expected qty_out 0 for cut-over adjustment, got %.2f", row.QtyOut)
|
|
}
|
|
if row.QtyUsed != 5 {
|
|
t.Fatalf("expected qty_used 5 for cut-over adjustment, got %.2f", row.QtyUsed)
|
|
}
|
|
if row.UnitPrice != 15000 {
|
|
t.Fatalf("expected unit_price 15000, got %.2f", row.UnitPrice)
|
|
}
|
|
if row.TotalAmount != 75000 {
|
|
t.Fatalf("expected total_amount 75000, got %.2f", row.TotalAmount)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestToSapronakProjectAggregatedFromReportKeepsNonCutOverAdjustmentOutInQtyOut(t *testing.T) {
|
|
report := &SapronakReportDTO{
|
|
Groups: []SapronakGroupDTO{
|
|
{
|
|
Flag: "PAKAN",
|
|
Items: []SapronakDetailDTO{
|
|
{
|
|
ProductID: 7,
|
|
ProductName: "PAKAN REGULER",
|
|
NoReferensi: "ADJ-REG-01",
|
|
JenisTransaksi: "Adjustment Keluar",
|
|
QtyKeluar: 3,
|
|
Harga: 12000,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
result := ToSapronakProjectAggregatedFromReport(
|
|
report,
|
|
"PAKAN",
|
|
map[uint][]string{
|
|
7: {"PAKAN"},
|
|
},
|
|
)
|
|
if result.Pakan == nil || len(result.Pakan.Rows) != 1 {
|
|
t.Fatalf("expected 1 pakan row, got %+v", result.Pakan)
|
|
}
|
|
|
|
row := result.Pakan.Rows[0]
|
|
if row.QtyOut != 3 {
|
|
t.Fatalf("expected qty_out 3 for non cut-over adjustment, got %.2f", row.QtyOut)
|
|
}
|
|
if row.QtyUsed != 0 {
|
|
t.Fatalf("expected qty_used 0 for non cut-over adjustment, got %.2f", row.QtyUsed)
|
|
}
|
|
if row.TotalAmount != 0 {
|
|
t.Fatalf("expected total_amount 0 for non cut-over adjustment, got %.2f", row.TotalAmount)
|
|
}
|
|
}
|