// export const mmQuery = ` // SELECT lot.ProductionLotHumanReadableId, // case when SourcingState in (1, 2) then 1 // when x.ProvidedAmount > 0 then 1 // when x.EffectiveConsumption > 0 then 1 // else 0 end as Staged, // x.ProvidedAmount as Provided, // x.EffectiveConsumption as consumption, // x.TotalDemand as totalNeeded, // /* remaining needed to complete the lot */ // x.TotalDemand - x.EffectiveConsumption as remainingNeeded, // /* do we have enough staged or scanned to the lot? */ // case when (case when x.ProvidedAmount <> 0 then x.ProvidedAmount else x.EffectiveConsumption end) > x.TotalDemand then 'good' else 'bad' end as noShortage , // x.IsManualProcess as isManual, // MaterialHumanReadableId // FROM [test1_AlplaPROD2.0_Read].[issueMaterial].[MaterialDemand] x (nolock) // left join // [test1_AlplaPROD2.0_Read].[issueMaterial].[ProductionLot] as lot on // x.ProductionLotId = lot.Id // where lot.ProductionLotHumanReadableId = [lotNumber] // and IsMainMaterial = 1 // `; export const mmQuery = ` use [test1_AlplaPROD2.0_Read] declare @lot as NVARCHAR(max) = [lotNumber] /* Material demands for this lot */ select MaterialHumanReadableId ,MaterialDescription -- check box is staged so we could book in even if we used preprint. ,case when SourcingState in (1, 2) then 1 when x.ProvidedAmount > 0 then 1 when x.EffectiveConsumption > 0 then 1 else 0 end as Staged ,x.IsManualProcess as isManual ,IsMainMaterial -- lot stuff ,lot.TotalPlannedLoadingUnits ,lot.TotalProducedLoadingUnits ,lot.TotalPlannedLoadingUnits - lot.TotalProducedLoadingUnits as remainingPallets ,x.ProvidedAmount as Provided -- this is what has been provided most of the time this is due to a silo attachment ,x.EffectiveConsumption as consumption -- this is how much was consummed via cmd 112 ,x.TotalDemand as totalDemand -- the total demand needed to finish the lot out ,case when pkg.QuantityPosition >= 0.001 then ((lot.TotalProducedLoadingUnits+1) * pkg.QuantityPosition) else (a.Weight *(cp.Percentage / 100) * ((lot.TotalProducedLoadingUnits+1) * p.LoadingUnitPieces)) / 1000 end totalNeeded ,case when IsMainMaterial = 1 then case when (case when x.ProvidedAmount <> 0 then x.ProvidedAmount else x.EffectiveConsumption end) > (case when pkg.QuantityPosition >= 0.001 then (lot.TotalProducedLoadingUnits+1) * pkg.QuantityPosition else (a.Weight *(cp.Percentage / 100) * ((lot.TotalProducedLoadingUnits+1) * p.LoadingUnitPieces)) / 1000 end) then 'mmGood' else 'noMM' end else null end as noMaterialShortage -- pkg check ,case when pkg.QuantityPosition is null then null else (case when l.qty > ((lot.TotalProducedLoadingUnits+1) * pkg.QuantityPosition) then 'pkgGood' else 'noPkg' end) end as noPKGShortage -- autoconsume ,case when cp.Percentage is null then case when l.qty > ((lot.TotalProducedLoadingUnits +1) * pkg.QuantityPosition) then 'autoConsumeOk' else 'autoConsumeNOK' end else (case when l.qty > (a.Weight *(cp.Percentage / 100) * ((lot.TotalProducedLoadingUnits+1) * p.LoadingUnitPieces)) / 1000 and IsManualProcess = 0 then 'autoConsumeOk' else 'autoConsumeNOK' end) end as autoConsumeCheck -- stock amounts ,l.qty as invForAutoConsume ,x.IsManualProcess as isManual ,IsMainMaterial ,case when cp.Percentage is null then 0 else cp.Percentage end as Percentage ,pkg.QuantityPosition from [issueMaterial].[MaterialDemand] x (nolock) /* production lot info */ left join [productionControlling].[ProducedLot] as lot on lot.Id = x.ProductionLotId /* packagaing */ left join [masterData].[PackagingInstructionPosition] as pkg on pkg.PackagingInstructionId = lot.PackagingId and pkg.ArticleId = x.MaterialId -- get the pkg stuff so we have the total amount per pallet. left join [masterData].[PackagingInstruction] as p on p.id = lot.PackagingId /* av data */ left join [masterData].[Article] as a on a.id = lot.ArticleId /* compound*/ left join [masterData].[CompoundPosition] as cp on cp.CompoundId = a.CompoundId and cp.ArticleId = x.MaterialId /* current stock info for auto consumption*/ left join (select IdArtikelVarianten ,ArtikelVariantenBez ,sum(VerfuegbareMengeSum) as qty from AlplaPROD_usweb1.dbo.V_LagerPositionenBarcodes as i (nolock) left join AlplaPROD_usweb1.dbo.V_LagerAbteilungen as l (nolock) on l.IdLagerAbteilung = i.IdLagerAbteilung where autoverbrauch = 1 and aktiv = 1 group by IdArtikelVarianten,ArtikelVariantenBez ) as l on l.IdArtikelVarianten = MaterialHumanReadableId where lot.ProductionLotHumanReadableId = @lot `;