← back to depelo__bobine

Function bodies 262 total

All specs Real LLM only Function bodies
buildGeneraleTotaleRow function · javascript · L945-L978 (34 LOC)
routes/gb2Routes.js
function buildGeneraleTotaleRow(combinatoRighe) {
    const cross = combinatoRighe.find((r) => r.tipo === 'totale-cross-fase');
    let src = cross;
    if (!src) {
        const totali = combinatoRighe.filter((r) => r.tipo === 'totale');
        src = totali.length ? totali[totali.length - 1] : null;
    }
    if (!src) {
        return {
            tipo: 'generale-totale',
            livello: 0,
            esistenza: 0,
            ordinato: 0,
            impegnato: 0,
            disponibilita: 0,
            opc: 0,
            op: 0,
            ipc: 0,
            ip: 0
        };
    }
    return {
        tipo: 'generale-totale',
        livello: 0,
        esistenza: src.esistenza,
        ordinato: src.ordinato,
        impegnato: src.impegnato,
        disponibilita: src.disponibilita,
        opc: src.opc,
        op: src.op,
        ipc: src.ipc,
        ip: src.ip
    };
}
getPoliticaRiordino function · javascript · L1794-L1813 (20 LOC)
routes/gb2Routes.js
function getPoliticaRiordino(art) {
    const pol = (art.ar_polriord || '').trim().toUpperCase();
    const map = {
        'M': 'a punto di riordino',
        'F': 'fabbisogno puro',
        'L': 'a lotto fisso',
        'N': 'nessuna politica'
    };
    let descr = map[pol] || pol;

    // Aggiungi dettagli scorta minima e lotto se presenti
    if (pol === 'M' && art.ar_scomin) {
        descr += ` (scorta min. ${art.ar_scomin}, lotto ${art.ar_ggrior || 0}, s.lotto 0)`;
    }
    if (pol === 'F') {
        const desint = (art.ar_desint || '').trim();
        if (desint) descr += ` (${desint})`;
    }
    return descr;
}
checkSpExists function · javascript · L1914-L1919 (6 LOC)
routes/gb2Routes.js
async function checkSpExists(pool, spName) {
    const r = await pool.request()
        .input('name', sql.NVarChar, spName)
        .query("SELECT 1 AS ok FROM sys.objects WHERE name=@name AND type='P'");
    return r.recordset.length > 0;
}
run function · javascript · L17-L156 (140 LOC)
setup-gb2.js
async function run() {
    let pool;
    try {
        // Connessione al server (senza database specifico per CREATE DATABASE)
        pool = await new sql.ConnectionPool({ ...config, database: 'master' }).connect();
        console.log('[1/6] Connesso a master');

        // 1. Creare database GB2
        const dbExists = await pool.request().query(`SELECT DB_ID('GB2') AS id`);
        if (dbExists.recordset[0].id === null) {
            await pool.request().query(`CREATE DATABASE [GB2]`);
            console.log('[2/6] Database GB2 creato');
        } else {
            console.log('[2/6] Database GB2 esiste gia, skip');
        }
        await pool.close();

        // 2. Connettersi a GB2 per creare la tabella Operators
        pool = await new sql.ConnectionPool({ ...config, database: 'GB2' }).connect();

        const tableExists = await pool.request().query(`
            SELECT OBJECT_ID('dbo.Operators') AS id
        `);
        if (tableExists.recordset[0].id === null) {
     
initSecurity function · javascript · L3-L129 (127 LOC)
sicurezza.js
async function initSecurity() {
  try {
    const res = await fetch('/api/me', { credentials: 'include' });
    if (res.status === 401) {
      window.location.href = '/'; // Kick to Layer 1
      return false;
    }
    
    const data = await res.json();
    
    // Aggiorna la memoria locale con le regole fresche appena ricevute dal server
    if (data.pwdRules) {
        localStorage.setItem('pwdRules', JSON.stringify(data.pwdRules));
    }

    if (res.status === 403 && data.requiresPasswordChange) {
      showPasswordCurtain();
      return false; // Ferma l'inizializzazione dell'app
    }
    
    if (res.ok) {
      // --- CONTROLLO ACCESSO AI MODULI (RBAC) ---
      const user = data.user || data;
      const currentPath = window.location.pathname.toLowerCase();

      // Escludiamo il root e il gateway dal controllo
      if (currentPath !== '/' && currentPath !== '/index.html') {
        if (user && !user.isSuperuser) {
          // Se tenta di accedere alla captain console
showPasswordCurtain function · javascript · L131-L265 (135 LOC)
sicurezza.js
function showPasswordCurtain(customMessage) {
  if (document.getElementById('securityCurtain')) return;
  
  const curtain = document.createElement('div');
  curtain.id = 'securityCurtain';
  curtain.style.cssText = 'position:fixed; top:0; left:0; width:100vw; height:100vh; background:rgba(0,0,0,0.95); z-index:99999; display:flex; flex-direction:column; justify-content:center; align-items:center; color:white; font-family:sans-serif;';
  
  const displayMessage = customMessage || 'I tuoi dati attuali sono salvi, ma devi cambiare la password per continuare.';
  const rules = JSON.parse(localStorage.getItem('pwdRules') || '{"minLength":6,"requireNum":true,"requireUpp":false,"requireSpec":false}');

  // Genera la checklist in base alle regole attive
  let rulesHtml = `<ul style="list-style: none; padding: 0; margin: 0 0 20px 0; text-align: left; font-size: 0.95rem; color: #ccc;" id="pwdChecklist">`;
  rulesHtml += `<li id="rule-len" style="margin-bottom: 6px;">❌ Almeno ${rules.minLength} 
fmtData function · javascript · L36-L41 (6 LOC)
utils/pdfOrdine.js
function fmtData(d) {
    if (!d) return '';
    const dt = new Date(d);
    if (isNaN(dt.getTime())) return '';
    return dt.toLocaleDateString('it-IT', { day: '2-digit', month: '2-digit', year: 'numeric' });
}
Repobility — the code-quality scanner for AI-generated software · https://repobility.com
fmtNum function · javascript · L43-L51 (9 LOC)
utils/pdfOrdine.js
function fmtNum(n, decimali) {
    if (n === null || n === undefined) return '';
    const num = Number(n);
    if (isNaN(num)) return '';
    return num.toLocaleString('it-IT', {
        minimumFractionDigits: decimali,
        maximumFractionDigits: decimali
    });
}
fmtPrezzo function · javascript · L53-L57 (5 LOC)
utils/pdfOrdine.js
function fmtPrezzo(n) {
    const num = Number(n);
    if (!num && num !== 0) return '';
    return num.toLocaleString('it-IT', { minimumFractionDigits: 4, maximumFractionDigits: 4 });
}
generaPdfOrdine function · javascript · L87-L119 (33 LOC)
utils/pdfOrdine.js
async function generaPdfOrdine(ordine, righe, options = {}) {
    return new Promise((resolve, reject) => {
        try {
            const isProva = options.ambiente === 'prova';
            const doc = new PDFDocument({
                size: 'A4',
                margins: MARGIN,
                info: {
                    Title: `${isProva ? '[PROVA] ' : ''}Ordine ${ordine.numord}/${ordine.serie} - ${ordine.fornitore_nome || ''}`,
                    Author: 'U.Jet s.r.l. - MRP Web',
                    Subject: 'Ordine d\'Acquisto Fornitore'
                }
            });

            const chunks = [];
            doc.on('data', chunk => chunks.push(chunk));
            doc.on('end', () => resolve(Buffer.concat(chunks)));
            doc.on('error', err => reject(err));

            // Watermark PROVA su ogni pagina
            if (isProva) {
                addWatermark(doc);
                doc.on('pageAdded', () => addWatermark(doc));
            }

            renderPdf(doc
addWatermark function · javascript · L124-L135 (12 LOC)
utils/pdfOrdine.js
function addWatermark(doc) {
    doc.save();
    doc.opacity(0.10);
    doc.fontSize(100).font('Helvetica-Bold').fillColor('#ff0000');
    // Centro pagina A4: 297.5, 420.5
    doc.translate(297, 420);
    doc.rotate(-45, { origin: [0, 0] });
    doc.text('PROVA', -200, -50, { width: 400, align: 'center' });
    doc.restore();
    // Reset opacity per il contenuto che segue
    doc.opacity(1);
}
renderPdf function · javascript · L137-L344 (208 LOC)
utils/pdfOrdine.js
function renderPdf(doc, ordine, righe) {
    const x0 = MARGIN.left;
    const xMid = x0 + PAGE_W / 2 + 10;
    let y = MARGIN.top;

    // ============================================================
    // INTESTAZIONE — due colonne
    // ============================================================

    // Colonna SX: destinatario
    doc.fontSize(7).fillColor(C.grigio).text('Destinatario :', x0, y);
    y += 12;
    doc.fontSize(10).fillColor(C.nero).font('Helvetica-Bold')
        .text((ordine.fornitore_nome || '').toUpperCase(), x0, y);
    y += 14;
    doc.fontSize(8).font('Helvetica')
        .text(ordine.fornitore_indirizzo || '', x0, y);
    y += 11;

    const cittaStr = [
        ordine.fornitore_cap || '',
        (ordine.fornitore_citta || '').toUpperCase(),
        ordine.fornitore_prov ? `(${ordine.fornitore_prov})` : ''
    ].filter(Boolean).join(' ');
    doc.text(cittaStr, x0, y);
    y += 11;

    if (ordine.fornitore_fax) {
        doc.fontSize(7).fillColor(C.grigi
‹ prevpage 6 / 6