diff --git a/svc/routes/production_product_costing.go b/svc/routes/production_product_costing.go index 1811035..1128dbf 100644 --- a/svc/routes/production_product_costing.go +++ b/svc/routes/production_product_costing.go @@ -374,9 +374,10 @@ func GetProductionHasCostDetailGroupsHandler(w http.ResponseWriter, r *http.Requ } scannedRows += 1 - item.NOnMLNo, _ = strconv.Atoi(nOnMLNoStr) - item.NOnMLDetNo, _ = strconv.Atoi(nOnMLDetNoStr) - item.NHammaddeTuruNo, _ = strconv.Atoi(hNoStr) + // Model fields are strings; keep as-is to avoid type mismatches. + item.NOnMLNo = strings.TrimSpace(nOnMLNoStr) + item.NOnMLDetNo = strings.TrimSpace(nOnMLDetNoStr) + item.NHammaddeTuruNo = strings.TrimSpace(hNoStr) if fiyatGirilen.Valid { item.FiyatGirilen = new(float64) @@ -496,9 +497,10 @@ func GetProductionHasCostDetailGroupsHandler(w http.ResponseWriter, r *http.Requ } scannedRows++ - item.NOnMLNo, _ = strconv.Atoi(nOnMLNoStr) - item.NOnMLDetNo, _ = strconv.Atoi(nOnMLDetNoStr) - item.NHammaddeTuruNo, _ = strconv.Atoi(hNoStr) + // Model fields are strings; keep as-is to avoid type mismatches. + item.NOnMLNo = strings.TrimSpace(nOnMLNoStr) + item.NOnMLDetNo = strings.TrimSpace(nOnMLDetNoStr) + item.NHammaddeTuruNo = strings.TrimSpace(hNoStr) if fiyatGirilen.Valid { item.FiyatGirilen = new(float64) @@ -1756,6 +1758,22 @@ WHERE RMik.nUrtReceteID = @p1 AND RMik.nUrtMBolumID = @p2 AND LTRIM(RTRIM(RMik.nHStokID_G)) = @p3 `, receteID, hNo, rawSKodu).Scan(&exists); err == nil && exists > 0 { + // Compute TRY unit price for recipe mirror columns. + cur := strings.ToUpper(strings.TrimSpace(row.FiyatDoviz)) + in := row.FiyatGirilen + unitTRYRec := in + switch cur { + case "USD": + unitTRYRec = in * usdRate + case "EUR": + unitTRYRec = in * eurRate + case "GBP": + unitTRYRec = in * gbpRate + case "TRY", "TL", "": + unitTRYRec = in + default: + unitTRYRec = in + } _, _ = tx.ExecContext(ctx, ` UPDATE dbo.spUrtRecMBolumMik SET lHMiktar_G = @p4, @@ -1766,11 +1784,27 @@ SET lHMiktar_G = @p4, WHERE nUrtReceteID = @p1 AND nUrtMBolumID = @p2 AND LTRIM(RTRIM(nHStokID_G)) = @p3 -`, receteID, hNo, rawSKodu, row.LMiktar, unitTRY, user, row.MaliyeteDahil) +`, receteID, hNo, rawSKodu, row.LMiktar, unitTRYRec, user, row.MaliyeteDahil) continue } // Insert missing: using _G columns and storing code in nHStokID_G. + // Compute TRY unit price for recipe mirror columns. + cur := strings.ToUpper(strings.TrimSpace(row.FiyatDoviz)) + in := row.FiyatGirilen + unitTRYRec := in + switch cur { + case "USD": + unitTRYRec = in * usdRate + case "EUR": + unitTRYRec = in * eurRate + case "GBP": + unitTRYRec = in * gbpRate + case "TRY", "TL", "": + unitTRYRec = in + default: + unitTRYRec = in + } _, insertErr := tx.ExecContext(ctx, ` INSERT INTO dbo.spUrtRecMBolumMik ( nUrtReceteID, @@ -1816,7 +1850,7 @@ VALUES ( GETDATE(), 1 ) - `, receteID, nextRecDetID, rawSKodu, row.LMiktar, unitTRY, hNo, row.NUrtMTBolumID, row.MaliyeteDahil, user) + `, receteID, nextRecDetID, rawSKodu, row.LMiktar, unitTRYRec, hNo, row.NUrtMTBolumID, row.MaliyeteDahil, user) if insertErr == nil { nextRecDetID += 1 }