devcode-it / openstamanager

Il software gestionale open source per l'assistenza tecnica e la fatturazione
https://www.openstamanager.com
GNU General Public License v3.0
104 stars 69 forks source link

Unificazione dei form di aggiunta per modulo #156

Closed Dasc3er closed 6 years ago

Dasc3er commented 6 years ago

Al momento, molti moduli (e in particolare Fatture, DDT, Ordini, Preventivi e Contratti) presentano molte strutture per l'inserimento e la modifica di elementi al proprio interno comuni se non per qualche dettaglio. Per esempio, ognuno di questi moduli ha file differenti per eseguire le azioni di inserimento/modifica righe, articoli e descrizioni.

Propongo di unificare la parte principale HTML di queste sezioni per rendere più semplice gestirle in futuro. In particolare, si potrebbe creare la cartella include/common/ al cui interno inserire la gestione HTML, delegando ai file del modulo la sola richiesta dei dati al database.


Esempio File _modules/contratti/addriga.php:

<?php

include_once __DIR__.'/../../core.php';

// Info contratto
$rs = $dbo->fetchArray('SELECT * FROM co_contratti WHERE id='.prepare($id_record));
$idanagrafica = $rs[0]['idanagrafica'];

$result = [
    'descrizione' => '',
    'qta' => 1,
    'um' => '',
    'prezzo' => 0,
    'sconto' => 0,
    'tipo_sconto' => '',
    'iva' => '',
];

$options = [
    'op' => '',
    'button' => '',
];

if (empty($get['idriga'])) {
    $options['op'] = 'addriga';
    $options['button'] = tr('Aggiungi');

    // Leggo l'iva predefinita per l'anagrafica e se non c'è leggo quella predefinita generica
    $iva = $dbo->fetchArray('SELECT idiva_vendite AS idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica));
    $result['iva'] = $iva[0]['idiva'] ?: get_var('Iva predefinita');

    // Sconto unitario
    $rss = $dbo->fetchArray('SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica).')');
    if (!empty($rss)) {
        $result['sconto'] = $rss[0]['prc_guadagno'];
        $result['tipo_sconto'] = 'PRC';
    }
} else {
    $options['op'] = 'editriga';
    $options['button'] = tr('Modifica');

    $rsr = $dbo->fetchArray('SELECT * FROM co_righe2_contratti WHERE idcontratto='.prepare($id_record).' AND id='.prepare($get['idriga']));

    $result['descrizione'] = $rsr[0]['descrizione'];
    $result['qt'] = $rsr[0]['qta'];
    $result['um'] = $rsr[0]['um'];
    $result['idiva'] = $rsr[0]['idiva'];
    $result['prezzo'] = $rsr[0]['subtotale'] / $rsr[0]['qta'];
    $result['sconto'] = $rsr[0]['sconto_unitario'];
    $result['tipo_sconto'] = $rsr[0]['tipo_sconto'];
}

require $docroot.'/include/common/riga.php';

File include/common/riga.php:

<?php

echo '
<form action="'.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'" method="post">
...
loviuz commented 6 years ago

Un po' come la cartella "base/" nei templates di stampa. Ottima idea!

Dasc3er commented 6 years ago

Per il momento la funzionalità è stata completata per Righe, Articoli e Descrizioni.