diff --git a/svc/queries/production_product_costing.go b/svc/queries/production_product_costing.go index 20ada8f..0ea4ab3 100644 --- a/svc/queries/production_product_costing.go +++ b/svc/queries/production_product_costing.go @@ -908,6 +908,7 @@ func GetProductionHasCostProducts( search string, offset int, limit int, + nFirmaID int, ) (*sql.Rows, error) { search = strings.TrimSpace(search) @@ -998,6 +999,7 @@ OUTER APPLY ( ) ) CM WHERE OM.rn = 1 + AND (@p4 <= 0 OR ISNULL(OM.nFirmaID, 0) = @p4) AND ( @p1 = '' OR RTRIM(CONVERT(VARCHAR(32), ISNULL(OM.nOnMLNo, 0))) LIKE '%' + @p1 + '%' @@ -1012,7 +1014,7 @@ OFFSET @p2 ROWS FETCH NEXT @p3 ROWS ONLY ` - return uretimDB.QueryContext(ctx, sqlText, search, offset, limit) + return uretimDB.QueryContext(ctx, sqlText, search, offset, limit, nFirmaID) } func GetProductionHasCostHistoryByProductCode( diff --git a/svc/routes/production_product_costing.go b/svc/routes/production_product_costing.go index 55e596a..6594533 100644 --- a/svc/routes/production_product_costing.go +++ b/svc/routes/production_product_costing.go @@ -197,11 +197,12 @@ func GetProductionHasCostProductsHandler(w http.ResponseWriter, r *http.Request) search := strings.TrimSpace(r.URL.Query().Get("search")) offset := parsePositiveIntOrDefault(r.URL.Query().Get("offset"), 0) limit := parsePositiveIntOrDefault(r.URL.Query().Get("limit"), 300) + nFirmaID, _ := strconv.Atoi(strings.TrimSpace(r.URL.Query().Get("n_firma_id"))) if limit > 1000 { limit = 1000 } - rows, err := queries.GetProductionHasCostProducts(r.Context(), uretimDB, search, offset, limit) + rows, err := queries.GetProductionHasCostProducts(r.Context(), uretimDB, search, offset, limit, nFirmaID) if err != nil { log.Printf("❌ [ProductionHasCost] query error: %v", err) http.Error(w, "Veritabanı hatası", http.StatusInternalServerError) diff --git a/ui/src/pages/ProductionProductCostingHasCostDetail.vue b/ui/src/pages/ProductionProductCostingHasCostDetail.vue index 808d7c5..f719e86 100644 --- a/ui/src/pages/ProductionProductCostingHasCostDetail.vue +++ b/ui/src/pages/ProductionProductCostingHasCostDetail.vue @@ -142,9 +142,11 @@ outline class="pcd-toolbar-btn" :loading="firmCostHistoryLoading" - :disable="!detailHeader || detailLoading || saveLoading || bulkPriceLoading" + :disable="!detailHeader || detailLoading || saveLoading || bulkPriceLoading || !currentFirmaID" @click="openFirmCostHistoryDialog" - /> + > + Uretimi yapan firma bilgisi bulunamadi + @@ -707,7 +709,7 @@
Malzemeleri Onceki Maliyetlerden Kopyala
- HasCost listesinden bir maliyet secin. Yalnizca bos olan TP/DT gruplari aktarilir. + Uretimi yapan firmaya ait HasCost listesinden bir maliyet secin. Yalnizca bos olan TP/DT gruplari aktarilir.
@@ -1447,6 +1449,7 @@ const isNoCostDetail = computed(() => detailSource.value === 'no-cost') const generatedTraceId = ref(createTraceId('pcd-detail')) const traceId = computed(() => String(route.query?.trace_id || generatedTraceId.value).trim()) const pageMode = computed(() => (isNoCostDetail.value ? 'new' : 'edit')) +const currentFirmaID = computed(() => parseInt(String(detailHeader.value?.nFirmaID || detailHeader.value?.NFirmaID || '0').trim(), 10) || 0) const pageVars = computed(() => ({ '--pcd-subheader-top': `${subHeaderTop.value}px` })) @@ -5036,6 +5039,11 @@ function isTPDTGroupName (value) { } async function openFirmCostHistoryDialog () { + if (!currentFirmaID.value) { + $q.notify({ type: 'warning', message: 'Uretimi yapan firma bilgisi bulunamadi.', position: 'top-right' }) + return + } + firmCostHistoryDialogOpen.value = true firmCostHistoryLoading.value = true firmCostHistoryError.value = '' @@ -5047,6 +5055,7 @@ async function openFirmCostHistoryDialog () { search: '', offset: 0, limit: 1000, + n_firma_id: currentFirmaID.value, trace_id: traceId.value }) const currentNo = parseInt(String(onMLNo.value || detailHeader.value?.nOnMLNo || '0'), 10) || 0