package purchasing

import (
	"context"
	"github.com/shopspring/decimal"
	"testing"
)

func TestGoodsReceiptRejectsOverReceiptIncludingRepeatedProductLines(t *testing.T) {
	for _, quantities := range [][]int64{{11}, {6, 5}} {
		s := svc()
		po, err := s.Create(context.Background(), POInput{SupplierID: 1, WarehouseID: 1, OrderDate: "2026-10-26", Items: []POItemInput{in2(1, "10", "100")}})
		if err != nil {
			t.Fatal(err)
		}
		if _, err := s.Approve(context.Background(), po.ID, 1); err != nil {
			t.Fatal(err)
		}
		items := make([]GRItemInput, 0, len(quantities))
		for _, q := range quantities {
			items = append(items, GRItemInput{ProductID: 1, QuantityReceived: decimal.NewFromInt(q)})
		}
		if _, err := s.CreateGR(context.Background(), GRInput{PurchaseOrderID: po.ID, WarehouseID: 1, ReceivedDate: "2026-10-26", Items: items}); err == nil {
			t.Fatalf("accepted over-receipt %v", quantities)
		}
	}
}
