1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-06-05 22:09:38 +02:00

Merge branch 'master' into 2.4.2

This commit is contained in:
Thomas Zilio
2018-09-03 16:49:43 +02:00
17 changed files with 75 additions and 90 deletions

View File

@ -22,7 +22,7 @@ include_once __DIR__.'/../../core.php';
{[ "type": "text", "label": "<?php echo tr('Filiale'); ?>", "name": "filiale", "value": "$filiale$" ]} {[ "type": "text", "label": "<?php echo tr('Filiale'); ?>", "name": "filiale", "value": "$filiale$" ]}
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Conto predefinito'); ?>", "name": "id_pianodeiconti3", "value": "$id_pianodeiconti3$", "values": "query=SELECT id, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2 = 1 AND ( id NOT IN (SELECT id_pianodeiconti3 FROM co_banche WHERE id != '<?php echo $record['id'] ?>' ) )" ]} {[ "type": "select", "label": "<?php echo tr('Conto predefinito'); ?>", "name": "id_pianodeiconti3", "value": "$id_pianodeiconti3$", "values": "query=SELECT id, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2 = 1 AND ( id NOT IN (SELECT id_pianodeiconti3 FROM co_banche WHERE id != '<?php echo $record['id']; ?>' ) )" ]}
</div> </div>
</div> </div>

View File

@ -16,11 +16,11 @@ if (sizeof($rs_documento) > 0) {
} }
if ($record['rinnovabile']) { if ($record['rinnovabile']) {
$rinnova = !empty($record['data_accettazione']) && !empty($record['data_conclusione']) && $record['data_accettazione'] != '0000-00-00'&& $record['data_conclusione'] != '0000-00-00'; $rinnova = !empty($record['data_accettazione']) && !empty($record['data_conclusione']) && $record['data_accettazione'] != '0000-00-00' && $record['data_conclusione'] != '0000-00-00';
echo ' echo '
<div class="tip" data-toggle="tooltip" title="'.tr('Il contratto è rinnovabile se sono definite le date di accettazione e conclusione').'" style="display:inline;"> <div class="tip" data-toggle="tooltip" title="'.tr('Il contratto è rinnovabile se sono definite le date di accettazione e conclusione').'" style="display:inline;">
<button type="button" class="btn btn-warning ask '.($rinnova ? '' : 'disabled').'" data-backto="record-edit" data-op="renew" data-msg="'.tr("Rinnovare questo contratto?").'" data-button="Rinnova" data-class="btn btn-lg btn-warning" '.($rinnova ? '' : 'disabled').'> <button type="button" class="btn btn-warning ask '.($rinnova ? '' : 'disabled').'" data-backto="record-edit" data-op="renew" data-msg="'.tr('Rinnovare questo contratto?').'" data-button="Rinnova" data-class="btn btn-lg btn-warning" '.($rinnova ? '' : 'disabled').'>
<i class="fa fa-refresh"></i> '.tr('Rinnova').'... <i class="fa fa-refresh"></i> '.tr('Rinnova').'...
</button> </button>
</div>'; </div>';

View File

@ -160,7 +160,7 @@ $operations = [
'class' => 'btn btn-lg btn-warning', 'class' => 'btn btn-lg btn-warning',
'blank' => false, 'blank' => false,
], ],
] ],
]; ];
return $operations; return $operations;

View File

@ -130,7 +130,7 @@ switch (post('op')) {
} elseif ($rs[0]['descrizione'] == 'Emessa') { } elseif ($rs[0]['descrizione'] == 'Emessa') {
elimina_scadenza($id_record); elimina_scadenza($id_record);
elimina_movimento($id_record, 0); elimina_movimento($id_record, 0);
} elseif (($rs[0]['descrizione'] == 'Pagato' or $rs[0]['descrizione'] == 'Parzialmente pagato') and ($dbo->fetchNum("SELECT id FROM co_scadenziario WHERE iddocumento = ".prepare($id_record)) == 0)) { } elseif (($rs[0]['descrizione'] == 'Pagato' or $rs[0]['descrizione'] == 'Parzialmente pagato') and ($dbo->fetchNum('SELECT id FROM co_scadenziario WHERE iddocumento = '.prepare($id_record)) == 0)) {
// aggiungo la scadenza come già pagata // aggiungo la scadenza come già pagata
aggiungi_scadenza($id_record, $pagamento, 1); aggiungi_scadenza($id_record, $pagamento, 1);
aggiungi_movimento($id_record, $dir); aggiungi_movimento($id_record, $dir);
@ -1145,7 +1145,7 @@ switch (post('op')) {
} }
// Riporto a magazzino gli articoli nelle righe del contratto // Riporto a magazzino gli articoli nelle righe del contratto
$rsa = $dbo->fetchArray("SELECT idarticolo, qta FROM co_righe_contratti WHERE idcontratto=".prepare($idcontratto)); $rsa = $dbo->fetchArray('SELECT idarticolo, qta FROM co_righe_contratti WHERE idcontratto='.prepare($idcontratto));
for ($i = 0; $i < sizeof($rsa); ++$i) { for ($i = 0; $i < sizeof($rsa); ++$i) {
if (!empty($rsa[$i]['idarticolo'])) { if (!empty($rsa[$i]['idarticolo'])) {
add_movimento_magazzino($rsa[$i]['idarticolo'], $rsa[$i]['qta'], ['iddocumento' => $id_record]); add_movimento_magazzino($rsa[$i]['idarticolo'], $rsa[$i]['qta'], ['iddocumento' => $id_record]);

View File

@ -113,10 +113,10 @@ if (!empty($rs)) {
<div class="col-md-6"> <div class="col-md-6">
{[ "type": "date", "label": "'.tr('Data del documento').'", "name": "data", "required": 1, "value": "-now-" ]} {[ "type": "date", "label": "'.tr('Data del documento').'", "name": "data", "required": 1, "value": "-now-" ]}
</div>'; </div>';
if ($module_name == 'Fatture di vendita' || $module_name == 'Fatture di acquisto') { if ($module_name == 'Fatture di vendita' || $module_name == 'Fatture di acquisto') {
$rs_segment = $dbo->fetchArray("SELECT * FROM zz_segments WHERE predefined_accredito='1'"); $rs_segment = $dbo->fetchArray("SELECT * FROM zz_segments WHERE predefined_accredito='1'");
if($op=='nota_accredito' && sizeof($rs_segment)>0){ if ($op == 'nota_accredito' && sizeof($rs_segment) > 0) {
echo ' echo '
<div class="col-md-6"> <div class="col-md-6">
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.prepare(Modules::get($module_name)['id']).' ORDER BY name", "value": "'.$rs_segment[0]['id'].'" ]} {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.prepare(Modules::get($module_name)['id']).' ORDER BY name", "value": "'.$rs_segment[0]['id'].'" ]}

View File

@ -39,7 +39,7 @@ function elimina_scadenza($iddocumento)
* Funzione per ricalcolare lo scadenzario di una determinata fattura * Funzione per ricalcolare lo scadenzario di una determinata fattura
* $iddocumento string E' l'id del documento di cui ricalcolare lo scadenzario * $iddocumento string E' l'id del documento di cui ricalcolare lo scadenzario
* $pagamento string Nome del tipo di pagamento. Se è vuoto lo leggo da co_pagamenti_documenti, perché significa che devo solo aggiornare gli importi. * $pagamento string Nome del tipo di pagamento. Se è vuoto lo leggo da co_pagamenti_documenti, perché significa che devo solo aggiornare gli importi.
* $pagato boolean Indica se devo segnare l'importo come pagato * $pagato boolean Indica se devo segnare l'importo come pagato.
*/ */
function aggiungi_scadenza($iddocumento, $pagamento = '', $pagato = 0) function aggiungi_scadenza($iddocumento, $pagamento = '', $pagato = 0)
{ {
@ -122,28 +122,26 @@ function aggiungi_scadenza($iddocumento, $pagamento = '', $pagato = 0)
$dbo->query('INSERT INTO co_scadenziario(iddocumento, data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('.prepare($iddocumento).', '.prepare($data).', '.prepare($scadenza).', '.prepare($da_pagare).", 0, 'fattura')"); $dbo->query('INSERT INTO co_scadenziario(iddocumento, data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('.prepare($iddocumento).', '.prepare($data).', '.prepare($scadenza).', '.prepare($da_pagare).", 0, 'fattura')");
if ($pagato){ if ($pagato) {
$id_scadenza = $dbo->lastInsertedID(); $id_scadenza = $dbo->lastInsertedID();
$dbo->update('co_scadenziario', [ $dbo->update('co_scadenziario', [
'pagato' => $da_pagare, 'pagato' => $da_pagare,
'data_pagamento' => $data, 'data_pagamento' => $data,
], ['id' => $id_scadenza]); ], ['id' => $id_scadenza]);
} }
} }
// Se c'è una ritenuta d'acconto, la aggiungo allo scadenzario // Se c'è una ritenuta d'acconto, la aggiungo allo scadenzario
if ($dir == 'uscita' && $ritenutaacconto > 0) { if ($dir == 'uscita' && $ritenutaacconto > 0) {
$dbo->query('INSERT INTO co_scadenziario(iddocumento, data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('.prepare($iddocumento).', '.prepare($data).', '.prepare(date('Y-m', strtotime($data.' +1 month')).'-15').', '.prepare(-$ritenutaacconto).", 0, 'ritenutaacconto')"); $dbo->query('INSERT INTO co_scadenziario(iddocumento, data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('.prepare($iddocumento).', '.prepare($data).', '.prepare(date('Y-m', strtotime($data.' +1 month')).'-15').', '.prepare(-$ritenutaacconto).", 0, 'ritenutaacconto')");
if ($pagato){ if ($pagato) {
$id_scadenza = $dbo->lastInsertedID(); $id_scadenza = $dbo->lastInsertedID();
$dbo->update('co_scadenziario', [ $dbo->update('co_scadenziario', [
'pagato' => -$ritenutaacconto, 'pagato' => -$ritenutaacconto,
'data_pagamento' => $data, 'data_pagamento' => $data,
], ['id' => $id_scadenza]); ], ['id' => $id_scadenza]);
} }
} }
return true; return true;

View File

@ -137,7 +137,7 @@ switch (post('op')) {
]); ]);
aggiungi_intervento_in_fattura($intervento['id'], $id_documento, $descrizione, $id_iva, $id_conto); aggiungi_intervento_in_fattura($intervento['id'], $id_documento, $descrizione, $id_iva, $id_conto);
$n_interventi++; ++$n_interventi;
} }
if ($n_interventi > 0) { if ($n_interventi > 0) {

View File

@ -55,7 +55,7 @@ function add_tecnico($idintervento, $idtecnico, $inizio, $fine, $idcontratto = n
$dbo = Database::getConnection(); $dbo = Database::getConnection();
// Controllo sull'identità del tecnico // Controllo sull'identità del tecnico
$tecnico = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica FROM an_anagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica INNER JOIN an_tipianagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE an_anagrafiche.idanagrafica = ".prepare($idtecnico)." AND an_tipianagrafiche.descrizione = 'Tecnico'"); $tecnico = $dbo->fetchArray('SELECT an_anagrafiche.idanagrafica FROM an_anagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica INNER JOIN an_tipianagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE an_anagrafiche.idanagrafica = '.prepare($idtecnico)." AND an_tipianagrafiche.descrizione = 'Tecnico'");
if (empty($tecnico)) { if (empty($tecnico)) {
return false; return false;
} }

View File

@ -44,8 +44,8 @@ if (!empty($record['immagine'])) {
<div class="col-md-12"> <div class="col-md-12">
<?php <?php
echo Modules::link('Anagrafiche', $record['idanagrafica'], null, null, 'class="pull-right"'); echo Modules::link('Anagrafiche', $record['idanagrafica'], null, null, 'class="pull-right"');
?> ?>
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "$idanagrafica$", "extra": "", "ajax-source": "clienti" ]} {[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "$idanagrafica$", "extra": "", "ajax-source": "clienti" ]}
</div> </div>
</div> </div>

View File

@ -257,26 +257,21 @@ if (!empty($rs2)) {
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> '.tr('Salva modifiche').'</button>'; <button type="submit" class="btn btn-success"><i class="fa fa-check"></i> '.tr('Salva modifiche').'</button>';
// Sostituisci componente con un altro dello stesso tipo, posso sostituire solo i componenti installati
if (empty($rs2[$j]['data_sostituzione'])) {
// Sostituisci componente con un altro dello stesso tipo, posso sostituire solo i componenti installati echo "
if (empty($rs2[$j]['data_sostituzione'])) {
echo "
<button class=\"btn btn-warning\" onclick=\"if( confirm('".tr('Vuoi sostituire questo componente con un altro dello stesso tipo?')."') ){ location.href='".$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'&op=sostituiscicomponente&backto=record-edit&filename='.$filename.'&id='.$rs2[$j]['id']."'; }\"><i class='fa fa-refresh'></i> ".tr('Sostituisci questo componente').'</button>'; <button class=\"btn btn-warning\" onclick=\"if( confirm('".tr('Vuoi sostituire questo componente con un altro dello stesso tipo?')."') ){ location.href='".$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'&op=sostituiscicomponente&backto=record-edit&filename='.$filename.'&id='.$rs2[$j]['id']."'; }\"><i class='fa fa-refresh'></i> ".tr('Sostituisci questo componente').'</button>';
} else { } else {
echo ' echo '
<button class="btn btn-warning disabled" disabled>'.tr('Componente già sostituito').'</button>'; <button class="btn btn-warning disabled" disabled>'.tr('Componente già sostituito').'</button>';
} }
echo '
echo '
<a class="btn btn-danger ask" data-backto="record-edit" data-op="unlinkcomponente" data-id="'.$rs2[$j]['id'].'"> <a class="btn btn-danger ask" data-backto="record-edit" data-op="unlinkcomponente" data-id="'.$rs2[$j]['id'].'">
<i class="fa fa-trash"></i> '.tr('Elimina').' <i class="fa fa-trash"></i> '.tr('Elimina').'
</a>'; </a>';
echo '
echo '
</div> </div>
</form> </form>
</div> </div>

View File

@ -14,12 +14,12 @@ switch (post('op')) {
if ($predefined) { if ($predefined) {
$dbo->query('UPDATE zz_segments SET predefined = 0 WHERE id_module = '.prepare($id_module)); $dbo->query('UPDATE zz_segments SET predefined = 0 WHERE id_module = '.prepare($id_module));
} }
$predefined_accredito = post('predefined_accredito'); $predefined_accredito = post('predefined_accredito');
if ($predefined_accredito) { if ($predefined_accredito) {
$dbo->query('UPDATE zz_segments SET predefined_accredito = 0 WHERE id_module = '.prepare($id_module)); $dbo->query('UPDATE zz_segments SET predefined_accredito = 0 WHERE id_module = '.prepare($id_module));
} }
$predefined_addebito = post('predefined_addebito'); $predefined_addebito = post('predefined_addebito');
if ($predefined_addebito) { if ($predefined_addebito) {
$dbo->query('UPDATE zz_segments SET predefined_addebito = 0 WHERE id_module = '.prepare($id_module)); $dbo->query('UPDATE zz_segments SET predefined_addebito = 0 WHERE id_module = '.prepare($id_module));

View File

@ -9,9 +9,9 @@ switch ($resource) {
foreach ($elements as $element) { foreach ($elements as $element) {
$filter[] = 'id = '.prepare($element); $filter[] = 'id = '.prepare($element);
} }
if (empty($filter)) { if (empty($filter)) {
$where[] = 'deleted_at IS NULL'; $where[] = 'deleted_at IS NULL';
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'name LIKE '.prepare('%'.$search.'%'); $search_fields[] = 'name LIKE '.prepare('%'.$search.'%');
} }

View File

@ -123,14 +123,14 @@ switch (filter('op')) {
break; break;
// Abilita API utente // Abilita API utente
case 'token_enable': case 'token_enable':
if ($dbo->query('UPDATE zz_tokens SET enabled = 1 WHERE id_utente = '.prepare($id_utente))) { if ($dbo->query('UPDATE zz_tokens SET enabled = 1 WHERE id_utente = '.prepare($id_utente))) {
flash()->info(tr('Token abilitato!')); flash()->info(tr('Token abilitato!'));
} }
break; break;
// Disabilita API utente // Disabilita API utente
case 'token_disable': case 'token_disable':
if ($dbo->query('UPDATE zz_tokens SET enabled = 0 WHERE id_utente = '.prepare($id_utente))) { if ($dbo->query('UPDATE zz_tokens SET enabled = 0 WHERE id_utente = '.prepare($id_utente))) {
flash()->info(tr('Token disabilitato!')); flash()->info(tr('Token disabilitato!'));
} }
@ -154,38 +154,34 @@ switch (filter('op')) {
break; break;
// Impostazione/reimpostazione dei permessi di accesso di default // Impostazione/reimpostazione dei permessi di accesso di default
case 'restore_permission': case 'restore_permission':
//Gruppo Tecnici //Gruppo Tecnici
if ($dbo->fetchArray('SELECT `nome` FROM `zz_groups` WHERE `id` = '.prepare($id_record))[0]['nome']=='Tecnici'){ if ($dbo->fetchArray('SELECT `nome` FROM `zz_groups` WHERE `id` = '.prepare($id_record))[0]['nome'] == 'Tecnici') {
$permessi = [];
$permessi['Dashboard'] = 'rw';
$permessi['Anagrafiche'] = 'rw';
$permessi['Interventi'] = 'rw';
$permessi['Magazzino'] = 'rw';
$permessi['Articoli'] = 'rw';
$permessi = array (); $dbo->query('DELETE FROM zz_permissions WHERE idgruppo='.prepare($id_record));
$permessi['Dashboard'] = 'rw';
$permessi['Anagrafiche'] = 'rw';
$permessi['Interventi'] = 'rw';
$permessi['Magazzino'] = 'rw';
$permessi['Articoli'] = 'rw';
$dbo->query('DELETE FROM zz_permissions WHERE idgruppo='.prepare($id_record)); foreach ($permessi as $module_name => $permesso) {
$module_id = $dbo->fetchArray('SELECT `id` FROM `zz_modules` WHERE `name` = "'.$module_name.'"')[0]['id'];
foreach ($permessi as $module_name => $permesso) { $dbo->insert('zz_permissions', [
'idgruppo' => $id_record,
'idmodule' => $module_id,
'permessi' => $permesso,
]);
}
$module_id = $dbo->fetchArray('SELECT `id` FROM `zz_modules` WHERE `name` = "'.$module_name.'"')[0]['id']; $_SESSION['infos'][] = tr('Permessi reimpostati.');
}
$dbo->insert('zz_permissions', [ break;
'idgruppo' => $id_record,
'idmodule' => $module_id,
'permessi' => $permesso,
]);
}
$_SESSION['infos'][] = tr('Permessi reimpostati.');
}
break;
// Aggiornamento dei permessi di accesso // Aggiornamento dei permessi di accesso
case 'update_permission': case 'update_permission':

View File

@ -36,7 +36,7 @@ trait PathTrait
$filepath = App::filepath($this->getPath().'|custom|', $file); $filepath = App::filepath($this->getPath().'|custom|', $file);
$result = str_replace(DOCROOT, ROOTDIR, $filepath); $result = str_replace(DOCROOT, ROOTDIR, $filepath);
$result = str_replace('\\','/', $result); $result = str_replace('\\', '/', $result);
return $result; return $result;
} }

View File

@ -56,7 +56,8 @@ class Uploads
* Individua il nome fisico per il file indicato. * Individua il nome fisico per il file indicato.
* *
* @param string $source * @param string $source
* @param array $data * @param array $data
*
* @return string * @return string
*/ */
protected static function getName($source, $data) protected static function getName($source, $data)
@ -283,6 +284,7 @@ class Uploads
* *
* @param array $from * @param array $from
* @param array $to * @param array $to
*
* @return bool * @return bool
*/ */
public static function copy($from, $to) public static function copy($from, $to)

View File

@ -382,12 +382,8 @@ echo '
</tr> </tr>
</table>'; </table>';
if ($options['hide_footer']) { if ($options['hide_footer']) {
echo '
echo '
<table style="color:#aaa; font-size:10px;"> <table style="color:#aaa; font-size:10px;">
<tr> <tr>
<td align="left" style="width:97mm; height:5mm;"> <td align="left" style="width:97mm; height:5mm;">
@ -398,8 +394,6 @@ if ($options['hide_footer']) {
</td> </td>
</tr> </tr>
</table>'; </table>';
} else {
echo '$default_footer$';
} }
else{
echo '$default_footer$';
}

View File

@ -1,7 +1,7 @@
<?php <?php
if ($options['hide_header']) { if ($options['hide_header']) {
echo ' echo '
<!-- Intestazione vuota fornitore --> <!-- Intestazione vuota fornitore -->
<div class="row" style="height:111px;"> <div class="row" style="height:111px;">
<div class="col-xs-6"> <div class="col-xs-6">
@ -9,12 +9,12 @@ if ($options['hide_header']) {
<div class="col-xs-6 text-right"> <div class="col-xs-6 text-right">
</div> </div>
</div>'; </div>';
}else{ } else {
echo ' echo '
<!-- Intestazione fornitore --> <!-- Intestazione fornitore -->
$default_header$'; $default_header$';
} }
echo ' echo '
<br> <br>
<div class="row"> <div class="row">