1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-06-05 22:09:38 +02:00
This commit is contained in:
MatteoPistorello
2021-02-19 12:43:49 +01:00
114 changed files with 520 additions and 426 deletions

View File

@@ -27,7 +27,7 @@ use Modules\Emails\Template;
use Notifications\EmailNotification;
if (empty($structure) || empty($structure['enabled'])) {
die(tr('Accesso negato'));
exit(tr('Accesso negato'));
}
$upload_dir = base_dir().'/'.Uploads::getDirectory($id_module, $id_plugin);
@@ -286,7 +286,7 @@ elseif (post('op') == 'send-email') {
$dbo->query('UPDATE `zz_views` SET `order` = '.prepare($i).' WHERE id='.prepare($id_riga));
}
} elseif (filter('op') == 'visualizza_righe_riferimenti') {
include_once base_dir().'/include/riferimenti/righe_riferimenti.php';
include_once base_dir().'/include/riferimenti/riferimenti.php';
} elseif (filter('op') == 'visualizza_righe_documento') {
include_once base_dir().'/include/riferimenti/righe_documento.php';
} elseif (filter('op') == 'salva_riferimento_riga') {
@@ -298,10 +298,7 @@ elseif (post('op') == 'send-email') {
]);
} elseif (filter('op') == 'rimuovi_riferimento_riga') {
$database->delete('co_riferimenti_righe', [
'source_type' => filter('source_type'),
'source_id' => filter('source_id'),
'target_type' => filter('target_type'),
'target_id' => filter('target_id'),
'id' => filter('idriferimento'),
]);
}

View File

@@ -214,7 +214,7 @@ echo '
});
}
function rimuoviRiferimento(btn, source_type, source_id) {
function rimuoviRiferimento(btn, source_type, source_id, idriferimento) {
$("#main_loading").show();
let row = $(btn).closest("tr");
@@ -233,6 +233,7 @@ echo '
source_id: source_id,
target_type: target_type,
target_id: target_id,
idriferimento: idriferimento,
},
success: function(data) {
$("#main_loading").fadeOut();

View File

@@ -48,7 +48,7 @@ if (!$riferimenti->isEmpty()) {
echo '
<tr data-id="'.$riga->id.'" data-type="'.$riga_class.'">
<td>
<button type="button" class="btn btn-xs btn-danger pull-right" onclick="rimuoviRiferimento(this, \''.addslashes($source_type).'\',\''.$source_id.'\')">
<button type="button" class="btn btn-xs btn-danger pull-right" onclick="rimuoviRiferimento(this, \''.addslashes($source_type).'\', \''.$source_id.'\', \''.$riferimento->id.'\')">
<i class="fa fa-trash"></i>
</button>

View File

@@ -43,7 +43,6 @@ switch ($op) {
$_SESSION['period_end'] = date('Y').'-12-31';
}
// Rimozione log vecchi
//$dbo->query('DELETE FROM `zz_operations` WHERE DATE_ADD(`created_at`, INTERVAL 30*24*60*60 SECOND) <= NOW()');
} else {

View File

@@ -128,9 +128,9 @@ if (!empty($results)) {
foreach ($errors as $name => $diff) {
if (count($diff) == 1 && array_key_exists('type', $diff) && str_contains($diff['type']['expected'], $diff['type']['current'])) {
$class="info";
$class = 'info';
} else {
$class="warning";
$class = 'warning';
}
echo '
<tr class="bg-'.$class.'" >
@@ -161,11 +161,10 @@ if (!empty($results)) {
<tbody>';
foreach ($foreign_keys as $name => $diff) {
if (count($diff) == 2 && array_key_exists('current', $diff) && $diff['current'] == null) {
$class="info";
$class = 'info';
} else {
$class="warning";
$class = 'warning';
}
echo '
<tr class="bg-'.$class.'" >

View File

@@ -22,7 +22,7 @@ include_once __DIR__.'/../../core.php';
use Util\Zip;
if (!setting('Attiva aggiornamenti')) {
die(tr('Accesso negato'));
exit(tr('Accesso negato'));
}
if (!extension_loaded('zip')) {

View File

@@ -50,7 +50,6 @@ if (!$is_cliente) {
$nazione_anagrafica = $anagrafica->sedeLegale->nazione;
// Avvisi problemi scheda anagrafica
$problemi_anagrafica = [];
if ($is_cliente && empty($record['idconto_cliente'])) {
@@ -62,8 +61,8 @@ if ($is_fornitore && empty($record['idconto_fornitore'])){
}
if (sizeof($problemi_anagrafica) > 0) {
echo '<div class="alert alert-warning"><i class="fa fa-warning"></i> '.tr("Attenzione: _CAMPI_" , [
'_CAMPI_' => implode(', ', $problemi_anagrafica)
echo '<div class="alert alert-warning"><i class="fa fa-warning"></i> '.tr('Attenzione: _CAMPI_', [
'_CAMPI_' => implode(', ', $problemi_anagrafica),
]).'</div>';
}

View File

@@ -129,7 +129,7 @@ switch ($name) {
])->count() == 0;
$result = $disponibile;
$message = $disponibile ? tr("Questa email non è ancora stata utilizzata") : tr("L'email è già utilizzata in un'altra anagrafica");
$message = $disponibile ? tr('Questa email non è ancora stata utilizzata') : tr("L'email è già utilizzata in un'altra anagrafica");
$errors = [];
$check = Validate::isValidEmail($value);

View File

@@ -18,12 +18,12 @@
*/
include_once __DIR__.'/../../core.php';
use Modules\Articoli\Articolo;
use Modules\Preventivi\Preventivo;
use Modules\Anagrafiche\Anagrafica;
use Modules\Preventivi\Components\Articolo as ArticoloPreventivo;
use Modules\TipiIntervento\Tipo as TipoSessione;
use Modules;
use Modules\Anagrafiche\Anagrafica;
use Modules\Articoli\Articolo;
use Modules\Preventivi\Components\Articolo as ArticoloPreventivo;
use Modules\Preventivi\Preventivo;
use Modules\TipiIntervento\Tipo as TipoSessione;
use Prints;
switch (post('op')) {

View File

@@ -58,7 +58,6 @@ switch (post('op')) {
break;
case 'delete':
$documenti = $dbo->fetchNum('SELECT id FROM dt_ddt WHERE idaspettobeni='.prepare($id_record).'
UNION SELECT id FROM co_documenti WHERE idaspettobeni='.prepare($id_record));

View File

@@ -79,7 +79,6 @@ switch (filter('op')) {
break;
case 'delete':
$documenti = $dbo->fetchNum('SELECT id FROM dt_ddt WHERE idcausalet='.prepare($id_record).'
UNION SELECT id FROM co_documenti WHERE idcausalet='.prepare($id_record));

View File

@@ -108,7 +108,6 @@ switch (post('op')) {
break;
case 'update_rinnovo':
$contratto->rinnovabile = post('rinnovabile');
$contratto->rinnovo_automatico = post('rinnovo_automatico');
$contratto->giorni_preavviso_rinnovo = post('giorni_preavviso_rinnovo');
@@ -315,7 +314,6 @@ $riga = $contratto->getRiga($type, $id_riga);
// eliminazione contratto
case 'delete':
// Fatture o interventi collegati a questo contratto
$elementi = $dbo->fetchArray('SELECT 0 AS `codice`, `co_documenti`.`id` AS `id`, `co_documenti`.`numero` AS `numero`, `co_documenti`.`numero_esterno` AS `numero_esterno`, `co_documenti`.`data`, `co_tipidocumento`.`descrizione` AS `tipo_documento`, `co_tipidocumento`.`dir` AS `dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idcontratto` = '.prepare($id_record).')'.'
UNION
@@ -414,7 +412,6 @@ $riga = $contratto->getRiga($type, $id_riga);
break;
case 'import':
$rs = $dbo->fetchArray('SELECT * FROM co_contratti_tipiintervento WHERE idcontratto = '.prepare(post('idcontratto')).' AND idtipointervento='.prepare(post('idtipointervento')));
// Se la riga in_tipiintervento esiste, la aggiorno...

View File

@@ -207,7 +207,6 @@ class Contratto extends Document
$intervallo = CarbonInterval::make($this->validita.' '.$this->tipo_validita);
$data = Carbon::make($this->data_accettazione)->add($intervallo);
$this->data_conclusione = $data->subDays(1);
}
}

View File

@@ -64,7 +64,6 @@ foreach ($moduli as $module_id => $note) {
</tr>';
foreach ($note as $nota) {
$class = (strtotime($nota->notification_date) < strtotime(date('Y-m-d')) && !empty($nota->notification_date)) ? 'danger' : '';
echo '

View File

@@ -20,7 +20,7 @@
include_once __DIR__.'/../../core.php';
use Modules\DDT\DDT;
use Modules\Fatture\Fattura;
$documento = DDT::find($id_record);
$module = Modules::get($id_module);

View File

@@ -341,7 +341,7 @@ function apriRiferimenti(button) {
let id = riga.data("id");
let type = riga.data("type");
openModal("'.tr('Riferimenti riga').'", globals.rootdir + "/actions.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&op=visualizza_riferimenti&riga_id=" + id + "&riga_type=" + type)
openModal("'.tr('Riferimenti riga').'", globals.rootdir + "/actions.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&op=visualizza_righe_riferimenti&riga_id=" + id + "&riga_type=" + type)
}
$(document).ready(function() {

View File

@@ -36,7 +36,6 @@ $idtipodocumento = $dbo->selectOne('co_tipidocumento', ['id'], [
'dir' => $dir,
])['id'];
?>
<form action="" method="post" id="add-form">
<input type="hidden" name="op" value="add">

View File

@@ -27,7 +27,8 @@ switch ($resource) {
$query_ordini = "SELECT or_ordini.id,
CONCAT('Ordine num. ', IF(numero_esterno != '', numero_esterno, numero), ' del ', DATE_FORMAT(data, '%d/%m/%Y'), ' [', (SELECT descrizione FROM or_statiordine WHERE id = idstatoordine) , ']') AS text,
'Ordini' AS optgroup,
'ordine' AS tipo
'ordine' AS tipo,
'uscita' AS dir
FROM or_ordini
INNER JOIN or_righe_ordini ON or_righe_ordini.idordine = or_ordini.id
WHERE idanagrafica = ".prepare($id_anagrafica)." AND
@@ -44,7 +45,8 @@ switch ($resource) {
$query_ddt = "SELECT dt_ddt.id,
CONCAT('DDT num. ', IF(numero_esterno != '', numero_esterno, numero), ' del ', DATE_FORMAT(data, '%d/%m/%Y'), ' [', (SELECT descrizione FROM dt_statiddt WHERE id = idstatoddt) , ']') AS text,
'DDT' AS optgroup,
'ddt' AS tipo
'ddt' AS tipo,
'uscita' AS dir
FROM dt_ddt
INNER JOIN dt_righe_ddt ON dt_righe_ddt.idddt = dt_ddt.id
WHERE idanagrafica = ".prepare($id_anagrafica)." AND
@@ -71,5 +73,72 @@ switch ($resource) {
$ddt = $database->fetchArray($query_ddt);
$results = array_merge($ordini, $ddt);
break;
case 'riferimenti-vendita-fe':
$direzione = 'entrata';
$id_articolo = $superselect['id_articolo'];
if (empty($id_articolo)) {
return [];
}
// Campi di ricerca
$search_fields = [];
if (!empty($search)) {
$search_fields[] = "IF(numero_esterno != '', numero_esterno, numero) LIKE ".prepare('%'.$search.'%');
$search_fields[] = "DATE_FORMAT(data, '%d/%m/%Y') LIKE ".prepare('%'.$search.'%');
}
$where = implode(' OR ', $search_fields);
$where = $where ? '('.$where.')' : '1=1';
$query_ordini = "SELECT or_ordini.id,
CONCAT('Ordine num. ', IF(numero_esterno != '', numero_esterno, numero), ' del ', DATE_FORMAT(data, '%d/%m/%Y'), ' [', (SELECT descrizione FROM or_statiordine WHERE id = idstatoordine) , ']') AS text,
'Ordini' AS optgroup,
'ordine' AS tipo,
'entrata' AS dir
FROM or_ordini
INNER JOIN or_righe_ordini ON or_righe_ordini.idordine = or_ordini.id
WHERE idarticolo = ".prepare($id_articolo)." AND
idstatoordine IN (
SELECT id FROM or_statiordine WHERE descrizione != 'Fatturato'
) AND
idtipoordine IN (
SELECT id FROM or_tipiordine WHERE dir = ".prepare($direzione).'
) AND |where|
GROUP BY or_ordini.id
ORDER BY data DESC, numero DESC';
$query_ddt = "SELECT dt_ddt.id,
CONCAT('DDT num. ', IF(numero_esterno != '', numero_esterno, numero), ' del ', DATE_FORMAT(data, '%d/%m/%Y'), ' [', (SELECT descrizione FROM dt_statiddt WHERE id = idstatoddt) , ']') AS text,
'DDT' AS optgroup,
'ddt' AS tipo,
'entrata' AS dir
FROM dt_ddt
INNER JOIN dt_righe_ddt ON dt_righe_ddt.idddt = dt_ddt.id
WHERE idarticolo = ".prepare($id_articolo)." AND
idstatoddt IN (
SELECT id FROM dt_statiddt WHERE descrizione != 'Fatturato'
) AND
idtipoddt IN (
SELECT id FROM dt_tipiddt WHERE dir=".prepare($direzione).'
) AND |where|
GROUP BY dt_ddt.id
HAVING SUM(dt_righe_ddt.qta - dt_righe_ddt.qta_evasa) > 0
ORDER BY data DESC, numero DESC';
// Sostituzione per la ricerca
$query_ordini = replace($query_ordini, [
'|where|' => $where,
]);
$query_ddt = replace($query_ddt, [
'|where|' => $where,
]);
$ordini = $database->fetchArray($query_ordini);
$ddt = $database->fetchArray($query_ddt);
$results = array_merge($ordini, $ddt);
break;
}

View File

@@ -362,7 +362,7 @@ elseif ($record['stato'] == 'Bozza') {
if ($dir == 'uscita') {
echo '
<div class="col-md-3">
{[ "type": "checkbox", "label": "'.tr("Ritenuta pagata dal fornitore").'", "name": "is_ritenuta_pagata", "value": "$is_ritenuta_pagata$" ]}
{[ "type": "checkbox", "label": "'.tr('Ritenuta pagata dal fornitore').'", "name": "is_ritenuta_pagata", "value": "$is_ritenuta_pagata$" ]}
</div>';
}
if ($dir == 'entrata') {

View File

@@ -134,7 +134,6 @@ switch ($op) {
// Duplica impianto
case 'copy':
$dbo->query('CREATE TEMPORARY TABLE tmp SELECT * FROM my_impianti WHERE id= '.prepare($id_record));
$dbo->query('ALTER TABLE tmp DROP id');
$dbo->query('INSERT INTO my_impianti SELECT NULL,tmp. * FROM tmp');

View File

@@ -108,7 +108,6 @@ switch (post('op')) {
}
}
}
}
aggiorna_sedi_movimenti('interventi', $id_record);
flash()->info(tr('Attività modificata correttamente!'));

View File

@@ -66,7 +66,6 @@ switch (filter('op')) {
break;
case 'delete':
$righe = $dbo->fetchNum('SELECT id FROM co_righe_documenti WHERE um='.prepare($record['valore']).'
UNION SELECT id FROM dt_righe_ddt WHERE um='.prepare($record['valore']).'
UNION SELECT id FROM or_righe_ordini WHERE um='.prepare($record['valore']).'

View File

@@ -19,14 +19,13 @@
include_once __DIR__.'/../../core.php';
use Modules\Ordini\Ordine;
use Modules\Fatture\Fattura;
use Modules\Fatture\Stato;
use Modules\Fatture\Tipo;
use Modules\Ordini\Ordine;
$module_fatture = 'Fatture di vendita';
// Segmenti
$id_fatture = Modules::get($module_fatture)['id'];
if (!isset($_SESSION['module_'.$id_fatture]['id_segment'])) {
@@ -161,4 +160,5 @@ $operations['cambia_stato'] = [
'blank' => false,
],
];
return $operations;

View File

@@ -36,25 +36,20 @@ echo '
</a>
</li>';
if ($dir == 'entrata') {
echo '
<li>
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine_fornitore" data-toggle="modal" data-title="'.tr('Crea ordine fornitore').'">
<i class="fa fa-file-o"></i> '.tr('Ordine fornitore').'
</a>
</li>';
} else {
/*echo '
<li>
<a data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine_cliente" data-toggle="modal" data-title="'.tr('Crea ordine cliente').'">
<i class="fa fa-file-o"></i> '.tr('Ordine cliente').'
</a>
</li>';*/
}
echo '

View File

@@ -68,6 +68,16 @@ foreach ($righe as $riga) {
<td>';
$numero_riferimenti_riga = $riga->referenceTargets()->count();
$numero_riferimenti_collegati = $riga->referenceSources()->count();
$riferimenti_presenti = $numero_riferimenti_riga;
$testo_aggiuntivo = $riferimenti_presenti ? $numero_riferimenti_riga : '';
echo '
<button type="button" class="btn btn-xs btn-'.($riferimenti_presenti ? 'primary' : 'info').' pull-right text-right" onclick="apriRiferimenti(this)">
<i class="fa fa-chevron-right"></i> '.tr('Riferimenti').' '.$testo_aggiuntivo.'
</button>';
// Aggiunta dei riferimenti ai documenti
if ($riga->hasOriginalComponent()) {
echo '
@@ -349,6 +359,14 @@ function modificaSeriali(button) {
openModal("'.tr('Aggiorna SN').'", globals.rootdir + "/modules/fatture/add_serial.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
function apriRiferimenti(button) {
let riga = $(button).closest("tr");
let id = riga.data("id");
let type = riga.data("type");
openModal("'.tr('Riferimenti riga').'", globals.rootdir + "/actions.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&op=visualizza_righe_riferimenti&riga_id=" + id + "&riga_type=" + type)
}
$(document).ready(function() {
$(".sortable").each(function() {
$(this).sortable({

View File

@@ -68,7 +68,6 @@ switch (filter('op')) {
break;
case 'delete':
$righe = $dbo->fetchNum('SELECT idanagrafica FROM an_anagrafiche WHERE idrelazione='.prepare($id_record));
if (isset($id_record) && empty($righe)) {

View File

@@ -34,7 +34,6 @@ switch (post('op')) {
break;
case 'add':
$descrizione = post('descrizione');
$icona = post('icona');
$is_completato = post('is_completato') ?: null;
@@ -54,7 +53,6 @@ switch (post('op')) {
break;
case 'delete':
//scelgo se settare come eliminato o cancellare direttamente la riga se non è stato utilizzato nei contratti
if (count($dbo->fetchArray('SELECT id FROM co_contratti WHERE idstato='.prepare($id_record))) > 0) {
$query = 'UPDATE co_staticontratti SET deleted_at = NOW() WHERE can_delete = 1 AND id='.prepare($id_record);

View File

@@ -58,7 +58,6 @@ switch (post('op')) {
break;
case 'delete':
//scelgo se settare come eliminato o cancellare direttamente la riga se non è stato utilizzato negli interventi
if (count($dbo->fetchArray('SELECT id FROM in_interventi WHERE idstatointervento='.prepare($id_record))) > 0) {
$query = 'UPDATE in_statiintervento SET deleted_at = NOW() WHERE idstatointervento='.prepare($id_record).' AND `can_delete`=1';

View File

@@ -35,7 +35,6 @@ switch (post('op')) {
break;
case 'add':
$descrizione = post('descrizione');
$icona = post('icona');
$is_completato = post('is_completato') ?: null;
@@ -55,7 +54,6 @@ switch (post('op')) {
break;
case 'delete':
//scelgo se settare come eliminato o cancellare direttamente la riga se non è stato utilizzato nei preventivi
if (count($dbo->fetchArray('SELECT id FROM co_preventivi WHERE idstato='.prepare($id_record))) > 0) {
$query = 'UPDATE co_statipreventivi SET deleted_at = NOW() WHERE can_delete = 1 AND id='.prepare($id_record);

View File

@@ -332,7 +332,6 @@ $(document).ready(function() {
});
</script>';
// Interventi per tecnico
$tecnici = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale, colore FROM an_anagrafiche
INNER JOIN
@@ -346,7 +345,6 @@ ORDER BY ragione_sociale ASC");
$dataset = '';
foreach ($tecnici as $tecnico) {
$sessioni = $dbo->fetchArray('SELECT SUM(in_interventi_tecnici.ore) AS result, CONCAT(CAST(SUM(in_interventi_tecnici.ore) AS char(20)),\' ore\') AS ore_lavorate, YEAR(in_interventi_tecnici.orario_inizio) AS year, MONTH(in_interventi_tecnici.orario_inizio) AS month FROM in_interventi_tecnici INNER JOIN `in_interventi` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` LEFT JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento` WHERE in_interventi_tecnici.idtecnico = '.prepare($tecnico['id']).' AND in_interventi_tecnici.orario_inizio BETWEEN '.prepare($start).' AND '.prepare($end).' AND `in_statiintervento`.`is_completato` = 1 GROUP BY YEAR(in_interventi_tecnici.orario_inizio), MONTH(in_interventi_tecnici.orario_inizio) ORDER BY YEAR(in_interventi_tecnici.orario_inizio) ASC, MONTH(in_interventi_tecnici.orario_inizio) ASC');
$sessioni = Stats::monthly($sessioni, $start, $end);
@@ -366,8 +364,6 @@ foreach ($tecnici as $tecnico) {
],
},';
}
echo '

View File

@@ -22,7 +22,6 @@ use Notifications\EmailNotification;
switch (post('op')) {
case 'send':
$email = EmailNotification::build($mail);
// Invio mail

View File

@@ -50,7 +50,6 @@ if (Services::isEnabled()) {
$servizi = Cache::pool('Informazioni su Services')->content;
if (!empty($servizi)) {
// Elaborazione dei servizi in scadenza
$limite_scadenze = (new Carbon())->addDays(60);
$servizi_in_scadenza = [];
@@ -126,12 +125,9 @@ if (Services::isEnabled()) {
});
});
</script>';
} else {
echo '
<div class="col-md-12 col-lg-6"><div class="alert alert-warning alert-dismissible" role="alert"><button class="close" type="button" data-dismiss="alert" aria-hidden="true"><span aria-hidden="true">×</span><span class="sr-only">'.tr('Chiudi').'</span></button><span><i class="fa fa-warning"></i> '.tr('Nessun servizio abilitato o "OSMCloud Services API Token" non valido').'.</span></div></div>';
}
}

View File

@@ -27,7 +27,6 @@ switch (filter('op')) {
if (isset($descrizione) && isset($dir) && isset($codice_tipo_documento_fe)) {
if ($dbo->fetchNum('SELECT * FROM `co_tipidocumento` WHERE `dir`='.prepare($dir).' AND `codice_tipo_documento_fe`='.prepare($codice_tipo_documento_fe).' AND `id`!='.prepare($id_record)) == 0) {
$predefined = post('predefined');
if (!empty($predefined)) {
$dbo->query('UPDATE co_tipidocumento SET predefined = 0 WHERE dir = '.prepare($dir));
@@ -87,7 +86,6 @@ switch (filter('op')) {
break;
case 'delete':
$documenti = $dbo->fetchNum('SELECT id FROM co_documenti WHERE idtipodocumento ='.prepare($id_record));
if (isset($id_record) && empty($documenti)) {
@@ -96,7 +94,6 @@ switch (filter('op')) {
'_TYPE_' => 'tipo documento',
]));
} else {
$dbo->update('co_tipidocumento', [
'deleted_at' => date(),
'predefined' => 0,
@@ -107,7 +104,6 @@ switch (filter('op')) {
'_TYPE_' => 'tipo documento',
]));
//flash()->error(tr('Sono presenti dei documenti collegati a questo tipo documento'));
}

View File

@@ -66,7 +66,6 @@ switch (post('op')) {
break;
case 'delete':
// Permetto eliminazione tipo intervento solo se questo non è utilizzado da nessun'altra parte a gestionale
// UNION SELECT `in_tariffe`.`idtipointervento` FROM `in_tariffe` WHERE `in_tariffe`.`idtipointervento` = '.prepare($id_record).'
// UNION SELECT `co_contratti_tipiintervento`.`idtipointervento` FROM `co_contratti_tipiintervento` WHERE `co_contratti_tipiintervento`.`idtipointervento` = '.prepare($id_record).'

View File

@@ -99,7 +99,6 @@ switch (filter('op')) {
break;
case 'delete':
$documenti = $dbo->fetchNum('SELECT id FROM co_scadenziario WHERE tipo = (SELECT nome FROM co_tipi_scadenze WHERE id = '.prepare($id_record).')');
if (isset($id_record) && empty($documenti)) {

View File

@@ -127,6 +127,8 @@ switch (filter('op')) {
'conto' => post('conto'),
'tipo_riga_riferimento' => post('tipo_riga_riferimento'),
'id_riga_riferimento' => post('id_riga_riferimento'),
'tipo_riga_riferimento_vendita' => post('tipo_riga_riferimento_vendita'),
'id_riga_riferimento_vendita' => post('id_riga_riferimento_vendita'),
'movimentazione' => post('movimentazione'),
'crea_articoli' => post('crea_articoli'),
'is_ritenuta_pagata' => post('is_ritenuta_pagata'),

View File

@@ -286,7 +286,7 @@ echo '
if (!empty($ritenuta)) {
echo '
<div class="col-md-3">
{[ "type": "checkbox", "label": "'.tr('Ritenuta pagata dal fornitore').'", "name": "is_ritenuta_pagata", "value": 0, "help": "'.tr("Attivare se la ritenuta è stata pagata dal fornitore").'" ]}
{[ "type": "checkbox", "label": "'.tr('Ritenuta pagata dal fornitore').'", "name": "is_ritenuta_pagata", "value": 0, "help": "'.tr('Attivare se la ritenuta è stata pagata dal fornitore').'" ]}
</div>';
}
echo '
@@ -397,7 +397,15 @@ if (!empty($righe)) {
<input type="hidden" name="id_riga_riferimento['.$key.']" id="id_riga_riferimento_'.$key.'" value="">
<input type="hidden" name="tipo_riga_riferimento['.$key.']" id="tipo_riga_riferimento_'.$key.'" value="">
<div class="col-md-3">
<input type="hidden" name="tipo_riferimento_vendita['.$key.']" id="tipo_riferimento_vendita_'.$key.'" value="">
<input type="hidden" name="id_riferimento_vendita['.$key.']" id="id_riferimento_vendita_'.$key.'" value="">
<input type="hidden" name="id_riga_riferimento_vendita['.$key.']" id="id_riga_riferimento_vendita_'.$key.'" value="">
<input type="hidden" name="tipo_riga_riferimento_vendita['.$key.']" id="tipo_riga_riferimento_vendita_'.$key.'" value="">
<div class="col-md-12">
<div class="row">
<div class="col-md-6">
{[ "type": "select", "name": "articoli['.$key.']", "ajax-source": "articoli", "select-options": '.json_encode(['permetti_movimento_a_zero' => 1, 'dir' => 'entrata', 'idanagrafica' => $anagrafica ? $anagrafica->id : '']).', "icon-after": "add|'.Modules::get('Articoli')['id'].'|codice='.htmlentities($codice_principale).'&descrizione='.htmlentities($riga['Descrizione']).'", "value": "'.$id_articolo.'", "label": "'.tr('Articolo').'" ]}
</div>
@@ -408,10 +416,19 @@ if (!empty($righe)) {
<div class="col-md-3">
{[ "type": "select", "name": "iva['.$key.']", "values": '.json_encode('query='.$query).', "required": 1, "label": "'.tr('Aliquota IVA').'" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "name": "selezione_riferimento['.$key.']", "ajax-source": "riferimenti-fe", "select-options": '.json_encode(['id_anagrafica' => $anagrafica ? $anagrafica->id : '']).', "label": "'.tr('Riferimento').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimento(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_'.$key.'"><i class="fa fa-close"></i></button>').' ]}
</div>
<div class="row">
<div class="col-md-3">
{[ "type": "select", "name": "selezione_riferimento['.$key.']", "ajax-source": "riferimenti-fe", "select-options": '.json_encode(['id_anagrafica' => $anagrafica ? $anagrafica->id : '']).', "label": "'.tr('Riferimento acquisto').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimento(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_'.$key.'"><i class="fa fa-close"></i></button>').' ]}
</div>
<div class="col-md-3">
{[ "type": "select", "name": "selezione_riferimento_vendita['.$key.']", "ajax-source": "riferimenti-vendita-fe", "select-options": '.json_encode(['id_articolo' => $id_articolo]).', "label": "'.tr('Riferimento vendita').'", "icon-after": '.json_encode('<button type="button" onclick="rimuoviRiferimentoVendita(this)" class="btn btn-primary disabled" id="rimuovi_riferimento_vendita_'.$key.'"><i class="fa fa-close"></i></button>').' ]}
</div>
</div>
</div>
</td>
</tr>';
}
@@ -488,7 +505,7 @@ echo '
if (data) {
let riga = $this.closest("tr").prev();
selezionaRiferimento(riga, data.tipo, data.id);
selezionaRiferimento(riga, data.tipo, data.id, data.dir);
}
});
@@ -504,7 +521,7 @@ function rimuoviRiferimento(button) {
riga.removeClass("success").removeClass("warning");
}
function selezionaRiferimento(riga, tipo_documento, id_documento) {
function selezionaRiferimento(riga, tipo_documento, id_documento, dir) {
let id_riga = riga.data("id");
let qta = riga.data("qta");
@@ -518,6 +535,7 @@ function selezionaRiferimento(riga, tipo_documento, id_documento) {
tipo_documento: tipo_documento,
righe_ddt: riferimenti.ddt,
righe_ordini: riferimenti.ordini,
dir: dir,
};
let url = "'.$structure->fileurl('riferimento.php').'?" + $.param(query);
@@ -579,7 +597,14 @@ function impostaRiferimento(id_riga, documento, riga) {
impostaContenuto(riga_fe.data("iva_percentuale"), riga.iva_percentuale, "%", "#riferimento_" + id_riga + "_iva");
$("#riferimento_" + id_riga).html(documento.descrizione ? documento.descrizione : "");
$("#riferimento_" + id_riga + "_descrizione").html(riga.descrizione ? riga.descrizione : "");
var descrizione = riga.descrizione;
console.log(descrizione);
if(typeof descrizione !== "undefined"){
descrizione = descrizione.replace(/_/g, " ");
}
$("#riferimento_" + id_riga + "_descrizione").html(descrizione ? descrizione : "");
// Colorazione dell\'intera riga
let warnings = riga_fe.find(".text-warning");
@@ -612,4 +637,33 @@ function impostaContenuto(valore_riga, valore_riferimento, contenuto_successivo,
elemento.html("<br>" + contenuto);
}
function impostaRiferimentoVendita(id_riga, documento, riga) {
// Informazioni interne per il riferimento
$("#tipo_riferimento_vendita_" + id_riga).val(documento.tipo);
$("#id_riferimento_vendita_" + id_riga).val(documento.id);
$("#tipo_riga_riferimento_vendita_" + id_riga).val(riga.tipo);
$("#id_riga_riferimento_vendita_" + id_riga).val(riga.id);
// Gestione della selezione
input("selezione_riferimento_vendita[" + id_riga + "]").disable();
$("#rimuovi_riferimento_vendita_" + id_riga).removeClass("disabled");
}
function rimuoviRiferimentoVendita(button) {
let riga = $(button).closest("tr").prev();
let id_riga = riga.data("id");
impostaRiferimentoVendita(id_riga, {}, {});
input("selezione_riferimento_vendita[" + id_riga + "]").enable()
.getElement().selectReset();
$(button).addClass("disabled");
riga.removeClass("success").removeClass("warning");
}
$("[id^=\'articoli\']").change(function() {
updateSelectOption("id_articolo", $(this).val());
});
</script>';

View File

@@ -29,6 +29,7 @@ $qta = get('qta');
$id_documento = get('id_documento');
$tipo_documento = get('tipo_documento');
$dir = get('dir');
if ($tipo_documento == 'ordine') {
$documento = Ordine::find($id_documento);
$righe_utilizzate = get('righe_ordini');
@@ -59,7 +60,7 @@ foreach ($righe as $riga) {
$dettagli = [
'tipo' => get_class($riga),
'id' => $riga->id,
'descrizione' => $riga->descrizione,
'descrizione' => str_replace(' ', '_', $riga->descrizione),
'qta' => $riga->qta,
'um' => $riga->um,
'prezzo_unitario' => $riga->prezzo_unitario ?: $riga_origine->prezzo_unitario,
@@ -102,8 +103,14 @@ var documento_importazione = {
function selezionaRiga(button) {
let riga = $(button).closest("tr");
let dettagli_riga = riga.data("dettagli");
let dettagli_riga = riga.data("dettagli")
if("'.$dir.'"=="entrata"){
impostaRiferimentoVendita("'.$id_riga.'", documento_importazione, dettagli_riga);
}else{
impostaRiferimento("'.$id_riga.'", documento_importazione, dettagli_riga);
}
$(button).closest(".modal").modal("hide");
}

View File

@@ -364,7 +364,7 @@ class FatturaElettronica
{
$this->saveFattura($info['id_pagamento'], $info['id_segment'], $info['id_tipo'], $info['data_registrazione'], $info['ref_fattura'], $info['is_ritenuta_pagata']);
$this->saveRighe($info['articoli'], $info['iva'], $info['conto'], $info['movimentazione'], $info['crea_articoli'], $info['tipo_riga_riferimento'], $info['id_riga_riferimento']);
$this->saveRighe($info['articoli'], $info['iva'], $info['conto'], $info['movimentazione'], $info['crea_articoli'], $info['tipo_riga_riferimento'], $info['id_riga_riferimento'], $info['tipo_riga_riferimento_vendita'], $info['id_riga_riferimento_vendita']);
$this->saveAllegati();

View File

@@ -19,13 +19,12 @@
namespace Plugins\ImportFE;
use Modules\Anagrafiche\Anagrafica;
use Modules\Articoli\Articolo as ArticoloOriginale;
use Modules\Articoli\Categoria;
use Modules\Fatture\Components\Articolo;
use Modules\Fatture\Components\Riga;
use Modules\Fatture\Fattura;
use Modules\Anagrafiche\Anagrafica;
use Plugins\DettagliArticolo\DettaglioFornitore;
use Plugins\DettagliArticolo\DettaglioPrezzo;
use UnexpectedValueException;
use Util\XML;
@@ -110,7 +109,7 @@ class FatturaOrdinaria extends FatturaElettronica
return $this->forceArray($result);
}
public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = false, $tipi_riferimenti = [], $id_riferimenti = [])
public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = false, $tipi_riferimenti = [], $id_riferimenti = [], $tipi_riferimenti_vendita = [], $id_riferimenti_vendita = [])
{
$info = $this->getRitenutaRivalsa();
@@ -161,8 +160,12 @@ class FatturaOrdinaria extends FatturaElettronica
$obj = Articolo::build($fattura, $articolo);
$obj->movimentazione($movimentazione);
$target_type = 'Modules\Fatture\Components\Articolo';
} else {
$obj = Riga::build($fattura);
$target_type = 'Modules\Fatture\Components\Riga';
}
$obj->descrizione = $riga['Descrizione'];
@@ -176,6 +179,17 @@ class FatturaOrdinaria extends FatturaElettronica
$obj->descrizione .= $nuovo_riferimento;
}
$obj->save();
if (!empty($tipi_riferimenti_vendita[$key])) {
database()->insert('co_riferimenti_righe', [
'source_type' => $tipi_riferimenti_vendita[$key],
'source_id' => $id_riferimenti_vendita[$key],
'target_type' => $target_type,
'target_id' => $obj->id,
]);
}
$obj->id_iva = $iva[$key];
$obj->idconto = $conto[$key];

View File

@@ -95,7 +95,7 @@ class FatturaSemplificata extends FatturaElettronica
return $result;
}
public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = false, $tipi_riferimenti = [], $id_riferimenti = [])
public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = false, $tipi_riferimenti = [], $id_riferimenti = [], $tipi_riferimenti_vendita = [], $id_riferimenti_vendita = [])
{
$righe = $this->getRighe();
$fattura = $this->getFattura();

View File

@@ -1,7 +1,7 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.n.c.
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,9 +17,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
use Modules\Contratti\Components\Riga;
use Modules\Contratti\Components\Articolo;
use Modules\Articoli\Articolo as ArticoloOriginale;
use Modules\Contratti\Components\Articolo;
use Modules\Contratti\Components\Riga;
use Modules\Contratti\Contratto;
use Modules\Fatture\Fattura;
use Modules\Fatture\Tipo;
@@ -99,8 +99,8 @@ switch ($operazione) {
$qta_evasa = $r->qta_evasa;
$data_scadenza = '';
$inizio = $date_pianificazioni[0];
$fine = date("Y-m-d", strtotime($inizio.' -1 days'));
$fine = date("Y-m-d", strtotime($fine." ".$timeing));
$fine = date('Y-m-d', strtotime($inizio.' -1 days'));
$fine = date('Y-m-d', strtotime($fine.' '.$timeing));
for ($rata = 1; $rata <= $numero_fatture; ++$rata) {
if ($qta_evasa < $r->qta) {
$qta_riga = ($qta[$r->id] <= ($r->qta - $qta_evasa) ? $qta[$r->id] : ($r->qta - $qta_evasa));
@@ -109,8 +109,8 @@ switch ($operazione) {
$descrizione = variables($descrizione, $inizio, $fine)['descrizione'];
$inizio = $fine;
$fine = date("Y-m-d", strtotime($timeing, strtotime($inizio)));
$inizio = date("Y-m-d", strtotime($inizio.' +1 days'));
$fine = date('Y-m-d', strtotime($timeing, strtotime($inizio)));
$inizio = date('Y-m-d', strtotime($inizio.' +1 days'));
$prezzo_unitario = ($r->subtotale / $r->qta);

View File

@@ -1,7 +1,7 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.n.c.
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -106,7 +106,7 @@ $righe = $contratto->getRighe();
echo '
<div class="alert alert-info">
<p>'.tr("Puoi utilizzare le seguenti variabili nella descrizione delle righe").':</p>'.variables()['list'].'
<p>'.tr('Puoi utilizzare le seguenti variabili nella descrizione delle righe').':</p>'.variables()['list'].'
</div>';
foreach ($righe as $riga) {

View File

@@ -1,7 +1,7 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.n.c.
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -54,13 +54,13 @@ echo '
while ($data_corrente->lessThanOrEqualTo($data_conclusione)) {
$data = $data_corrente->endOfMonth()->format('Y-m-d');
$data_fatturazione = ($data_fatturazione ?: date("Y-m", strtotime($data)) );
$data_fatturazione = ($data_fatturazione ?: date('Y-m', strtotime($data)));
unset($checked);
if ($id_module == Modules::get('Contratti')['id']) {
if( $data==date("Y-m-t", strtotime($timeing, strtotime($data_fatturazione)) ) ){
if ($data == date('Y-m-t', strtotime($timeing, strtotime($data_fatturazione)))) {
$checked = 'checked';
$data_fatturazione = date("Y-m", strtotime($data));
$data_fatturazione = date('Y-m', strtotime($data));
}
}

View File

@@ -1,7 +1,7 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.n.c.
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -33,7 +33,7 @@ $numero_rata = $contratto->pianificazioni->search(function ($item) use ($id_pian
$module_fattura = Modules::get('Fatture di vendita');
$id_conto = setting('Conto predefinito fatture di vendita');
$data = date("Y-m",strtotime($pianificazione->data_scadenza))."-".date("d",strtotime($contratto->data_accettazione));
$data = date('Y-m', strtotime($pianificazione->data_scadenza)).'-'.date('d', strtotime($contratto->data_accettazione));
echo '
<form action="" method="post">

View File

@@ -1,7 +1,7 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.n.c.
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

View File

@@ -19,18 +19,18 @@
'12' => 'Dicembre',
];
$result['list'] = "<ul>
$result['list'] = '<ul>
<li><code>{periodo}</code></li>
<li><code>{data_inizio}</code></li>
<li><code>{data_fine}</code></li>
<li><code>{mese_fatturazione}</code></li>
</ul>";
</ul>';
if (!empty($descrizione)) {
$result['descrizione'] = str_replace("{periodo}","durata dal ".Translator::dateToLocale($inizio)." al ".Translator::dateToLocale($fine),$descrizione);
$result['descrizione'] = str_replace("{data_inizio}",Translator::dateToLocale($inizio), $result['descrizione']);
$result['descrizione'] = str_replace("{data_fine}",Translator::dateToLocale($fine), $result['descrizione']);
$result['descrizione'] = str_replace("{mese_fatturazione}", $mese[date('m',strtotime($inizio))], $result['descrizione']);
$result['descrizione'] = str_replace('{periodo}', 'durata dal '.Translator::dateToLocale($inizio).' al '.Translator::dateToLocale($fine), $descrizione);
$result['descrizione'] = str_replace('{data_inizio}', Translator::dateToLocale($inizio), $result['descrizione']);
$result['descrizione'] = str_replace('{data_fine}', Translator::dateToLocale($fine), $result['descrizione']);
$result['descrizione'] = str_replace('{mese_fatturazione}', $mese[date('m', strtotime($inizio))], $result['descrizione']);
}
return $result;

View File

@@ -1,7 +1,7 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.n.c.
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.n.c.
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

View File

@@ -23,7 +23,6 @@ $operazione = filter('op');
switch ($operazione) {
case 'edit_revision':
$master_revision = post('master_revision');
$id_record = post('idrevisione');
//Tolgo il flag default_revision da tutte le revisioni e dal record_principale
@@ -34,7 +33,6 @@ switch ($operazione) {
break;
case 'delete_revision':
$idrevisione = post('idrevisione');
$dbo->query('DELETE FROM co_preventivi WHERE id='.prepare($idrevisione));

View File

@@ -109,7 +109,6 @@ class Clienti extends AppResource
public function createRecord($data)
{
$ragione_sociale = $data['ragione_sociale'];
$id_tipo = [1];
@@ -133,7 +132,6 @@ class Clienti extends AppResource
return [
'id' => $id_record,
];
}
public function updateRecord($data)
@@ -163,5 +161,4 @@ class Clienti extends AppResource
$record->cellulare = $data['cellulare'];
$record->email = $data['email'];
}
}

View File

@@ -224,7 +224,6 @@ class RigheInterventi extends AppResource
$record->setPrezzoUnitario($data['prezzo_unitario'], $data['id_iva']);
$record->setSconto($data['sconto_percentuale'] ?: $data['sconto_unitario'], $data['tipo_sconto']);
try {
$record->qta = $data['qta'];
} catch (UnexpectedValueException $e) {

View File

@@ -98,7 +98,7 @@ class Permissions
}
if (!$result && $die) {
die(tr('Accesso negato'));
exit(tr('Accesso negato'));
}
}
}

View File

@@ -39,7 +39,8 @@ trait RecordTrait
/**
* @param string $name
*/
public function customField($name) {
public function customField($name)
{
$field = database()->table('zz_fields')
->leftJoin('zz_field_record', 'zz_fields.id', '=', 'zz_field_record.id_field')
->where('zz_fields.name', '=', $name)

View File

@@ -488,8 +488,6 @@ class Update
}
}
$results;
return $results;
}

View File

@@ -33,7 +33,6 @@ echo '<style>
}
</style>';
if (!empty($_SESSION['superselect']['id_articolo_barcode'])) {
$articoli = Articolo::whereIn('id', $_SESSION['superselect']['id_articolo_barcode'])->get();
unset($_SESSION['superselect']['id_articolo_barcode']);
@@ -51,10 +50,9 @@ foreach( $articoli as $articolo ){
<p><b>'.$articolo->barcode.'</b></p>
</div>';
$page++;
++$page;
if ($page < $pages) {
echo '<pagebreak>';
}
}

View File

@@ -59,16 +59,15 @@ echo '
<td class="text-right">'.numberFormat($liv3_p['totale']).'</td>
</tr>';
}
}
if($liv2_p['descrizione']=="Crediti clienti e crediti diversi"){
if ($liv2_p['descrizione'] == 'Crediti clienti e crediti diversi') {
echo '
<tr>
<td></td>
<td>Clienti</td>
<td class="text-right">'.numberFormat($crediti_clienti).'</td>
</tr>';
} elseif($liv2_p['descrizione']=="Debiti fornitori e debiti diversi") {
} elseif ($liv2_p['descrizione'] == 'Debiti fornitori e debiti diversi') {
echo '
<tr>
<td></td>
@@ -136,14 +135,14 @@ echo '
</tr>';
}
}
if($liv2_p['descrizione']=="Crediti clienti e crediti diversi"){
if ($liv2_p['descrizione'] == 'Crediti clienti e crediti diversi') {
echo '
<tr>
<td></td>
<td>Clienti</td>
<td class="text-right">'.numberFormat(abs($crediti_clienti)).'</td>
</tr>';
} elseif($liv2_p['descrizione']=="Debiti fornitori e debiti diversi") {
} elseif ($liv2_p['descrizione'] == 'Debiti fornitori e debiti diversi') {
echo '
<tr>
<td></td>

View File

@@ -17,7 +17,6 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
echo '
<h5 style="border-bottom:1px solid #777; display:block;">
<div class="col-xs-5">STAMPA BILANCIO <small>'.dateFormat($date_start).' - '.dateFormat($date_end).'</small></div>

View File

@@ -1,9 +1,7 @@
<?php
return [
'format' => 'A4',
'orientation' => 'P',
'font-size' => '9px',
];

View File

@@ -93,5 +93,5 @@ $custom = [
// - utente qualsiasi con permessi almeno in lettura sul modulo
// - admin
if ((Auth::user()['gruppo'] == 'Clienti' && $id_cliente != Auth::user()['idanagrafica'] && !Auth::admin()) || Modules::getPermission($documento->module) == '-') {
die(tr('Non hai i permessi per questa stampa!'));
exit(tr('Non hai i permessi per questa stampa!'));
}

View File

@@ -118,7 +118,7 @@ $custom = [
// - utente qualsiasi con permessi almeno in lettura sul modulo
// - admin
if ((Auth::user()['gruppo'] == 'Clienti' && $id_cliente != Auth::user()['idanagrafica'] && !Auth::admin()) || Modules::getPermission($module_name) == '-') {
die(tr('Non hai i permessi per questa stampa!'));
exit(tr('Non hai i permessi per questa stampa!'));
}
if ($fattura_accompagnatoria) {

View File

@@ -31,17 +31,14 @@ if ($documento->direzione == 'entrata'){
}) !== false;
if ($has_image) {
$columns++;
++$columns;
$char_number = $options['pricing'] ? 26 : 63;
}
}
if ($documento->direzione == 'uscita') {
$columns++;
++$columns;
$char_number = $options['pricing'] ? 26 : 63;
} else {
$char_number = $options['pricing'] ? 45 : 82;
}
@@ -98,17 +95,13 @@ foreach ($righe as $riga) {
'.$num.'
</td>';
if ($documento->direzione == 'uscita') {
echo '
<td class="text-center" style="vertical-align: middle">
'.$riga->articolo->codice.'
</td>';
}
if ($has_image) {
if ($riga->isArticolo() && !empty($riga->articolo->image)) {
echo '

View File

@@ -19,8 +19,6 @@
include_once __DIR__.'/../../core.php';
if (get('lev') == '2' || get('lev') == '3') {
$dare = 0;
$avere = 0;

View File

@@ -2,7 +2,7 @@
class AnagraficheCest
{
public function _before(\AcceptanceTester $t)
public function _before(AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');

View File

@@ -2,7 +2,7 @@
class BackupCest
{
public function _before(\AcceptanceTester $t)
public function _before(AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');

View File

@@ -9,7 +9,7 @@ class ContrattiCest
*/
protected $rowHelper;
public function _before(\AcceptanceTester $t)
public function _before(AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');

View File

@@ -9,7 +9,7 @@ class DDTCest
*/
protected $rowHelper;
public function _before(\AcceptanceTester $t)
public function _before(AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');

View File

@@ -9,7 +9,7 @@ class FattureCest
*/
protected $rowHelper;
public function _before(\AcceptanceTester $t)
public function _before(AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');

View File

@@ -9,7 +9,7 @@ class OrdiniCest
*/
protected $rowHelper;
public function _before(\AcceptanceTester $t)
public function _before(AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');

View File

@@ -9,7 +9,7 @@ class PreventiviCest
*/
protected $rowHelper;
public function _before(\AcceptanceTester $t)
public function _before(AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');

View File

@@ -123,12 +123,6 @@ ALTER TABLE `or_ordini` ADD `idreferente` INT NULL DEFAULT NULL AFTER `idanagraf
ALTER TABLE `co_documenti` ADD `idreferente` INT NULL DEFAULT NULL AFTER `idanagrafica`;
ALTER TABLE `dt_ddt` ADD `idreferente` INT NULL DEFAULT NULL AFTER `idanagrafica`;
-- Colonna "Tecnici assegnati" in interventi
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM (`in_interventi` INNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`) LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` LEFT JOIN `in_interventi_tecnici_assegnati` ON `in_interventi_tecnici_assegnati`.`id_intervento` = `in_interventi`.`id` LEFT JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento` LEFT JOIN (SELECT an_sedi.id, CONCAT(an_sedi.nomesede,\'<br />\',an_sedi.telefono,\'<br />\',an_sedi.cellulare,\'<br />\',an_sedi.citta,\' - \', an_sedi.indirizzo) AS info FROM an_sedi) AS sede_destinazione ON sede_destinazione.id = in_interventi.idsede_destinazione LEFT JOIN (SELECT co_righe_documenti.idintervento, CONCAT(\'Fatt. \', co_documenti.numero_esterno,\' del \', DATE_FORMAT(co_documenti.data, \'%d/%m/%Y\')) AS info FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento) AS fattura ON fattura.idintervento = in_interventi.id WHERE 1=1 |date_period(`orario_inizio`,`data_richiesta`)| GROUP BY `in_interventi`.`id` HAVING 2=2 ORDER BY IFNULL(`orario_fine`, `data_richiesta`) DESC' WHERE `zz_modules`.`name` = 'Interventi';
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES
(NULL, (SELECT id FROM zz_modules WHERE name='Interventi'), 'Tecnici assegnati', 'GROUP_CONCAT(DISTINCT((SELECT DISTINCT(ragione_sociale) FROM an_anagrafiche WHERE idanagrafica = in_interventi_tecnici_assegnati.id_tecnico)))', 16, 1, 0, 0, '', '', 0, 0, 0);
-- Colorazione riga fatture di acquisto con stesso numero e fornitore
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti`\r\n LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\r\n LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`\r\n LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`\r\n LEFT JOIN (\r\n SELECT `iddocumento`,\r\n SUM(`subtotale` - `sconto`) AS `totale_imponibile`,\r\n SUM(`subtotale` - `sconto` + `iva`) AS `totale`\r\n FROM `co_righe_documenti`\r\n GROUP BY `iddocumento`\r\n ) AS righe ON `co_documenti`.`id` = `righe`.`iddocumento`\r\n LEFT JOIN (\r\n SELECT COUNT(`d`.`id`) AS `conteggio`, IF(`d`.`numero_esterno`=\'\', `d`.`numero`, `d`.`numero_esterno`) AS `numero_documento` FROM `co_documenti` AS `d` LEFT JOIN `co_tipidocumento` AS `d_tipo` ON `d`.`idtipodocumento` = `d_tipo`.`id` WHERE 1=1 AND `d_tipo`.`dir` = \'uscita\' AND ( \'|period_start|\' <= `d`.`data` AND \'|period_end|\' >= `d`.`data` OR \'|period_start|\' <= `d`.`data_competenza` AND \'|period_end|\' >= `d`.`data_competenza` )\r\n GROUP BY `numero_documento`, `d`.`idanagrafica`\r\n ) AS `d` ON `d`.`numero_documento` = IF(`co_documenti`.`numero_esterno`=\'\', `co_documenti`.`numero`, `co_documenti`.`numero_esterno`)\r\nWHERE 1=1 AND `dir` = \'uscita\' |segment(`co_documenti`.`id_segment`)||date_period(custom, \'|period_start|\' <= `co_documenti`.`data` AND \'|period_end|\' >= `co_documenti`.`data`, \'|period_start|\' <= `co_documenti`.`data_competenza` AND \'|period_end|\' >= `co_documenti`.`data_competenza` )|\r\nHAVING 2=2\r\nORDER BY `co_documenti`.`data` DESC, CAST(IF(`co_documenti`.`numero` = \'\', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC' WHERE `zz_modules`.`name`='Fatture di acquisto';