Înapoi la Dashboard
Stoc rămas teoretic
Foaie nouă pentru urmărirea separată a stocului teoretic de oțel, bucăți debitate și piese forjate, și calcule clare pe flux: stoc început de lună, consum în lună și stoc rămas pentru oțel, debitate și piese forjate.
Autentificare
Verificare...
Se citește sesiunea curentă.
Cloud
Pregătire...
rf_documents / surse multiple
Perioadă calcul
-
Calcul până la sfârșitul perioadei selectate.
Ultim sync
-
Se agregă sursele disponibile din cloud.
Tabelul este grupat pe flux: material (diametru + calitate) → reper debitat → reper forjat. Valorile comune sunt unite pe verticală ca în helper, ca să nu mai apară casete goale repetate.
Total oțel rămas
0 kg
Total unic pe combinația diametru + calitate.
Total debitate rămase
0 buc
Total unic pe reperul debitat.
Total forjate rămase
0 buc
Total pe reperele forjate afișate în tabel.
Rânduri afișate
0
Se actualizează după filtrele aplicate.
Tabel stoc rămas teoretic
0 rânduri
Surse: helper, intrări, debitate, forjate, inventare, livrări.
NR. DIAMETRU CALITATE STOC ÎNCEPUT OȚEL (KG) INTRĂRI OȚEL (KG) DEBITAT DIN OȚEL (KG) OȚEL RĂMAS (KG) REPER DEBITAT STOC DEBITAT (BUC) DEBITAT (BUC) DEBITAT (KG) DEBITAT RĂMAS (BUC) REPER FORJAT STOC ÎNCEPUT FORJAT (BUC) FORJAT (BUC) LIVRĂRI (BUC) FORJAT RĂMAS (BUC)
Pregătit.
Actualizare: —
`; const blob=new Blob(['', exportHtml],{type:'application/vnd.ms-excel;charset=utf-8;'}); const url=URL.createObjectURL(blob); const a=document.createElement('a'); a.href=url; a.download='stoc-ramas-teoretic.xls'; a.click(); URL.revokeObjectURL(url); } async function bootstrap(){ try{ setError(''); els.footerStatus.textContent='Se încarcă datele...'; await initAuth(); await loadAllData(); populateYearMonth(); buildRows(); render(); }catch(err){ console.error(err); setError('Pagina a pornit, dar nu a putut încărca toate datele. Verifică sursele din rf_documents și cheile documentelor. Detaliu: '+(err&&err.message?err.message:err)); els.footerStatus.textContent='Eroare la încărcare.'; } } els.btnRefresh.addEventListener('click', bootstrap); els.btnExport.addEventListener('click', exportExcel); els.btnClear.addEventListener('click', ()=>{ els.filterReper.value=''; els.filterDiam.value=''; els.filterCal.value=''; render(); }); ['filterYear','filterMonth','filterReper','filterDiam','filterCal'].forEach(id=>{ const el=els[id]; ['input','change'].forEach(ev=>el.addEventListener(ev,()=>{ updatePeriodCard(); if(id==='filterYear'||id==='filterMonth'){ buildRows(); } render(); })); }); bootstrap(); })();