mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-17 03:51:06 +01:00
Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
ddede4dc30
@ -13,12 +13,9 @@ abstract class Document extends Model
|
||||
*/
|
||||
public function getRighe()
|
||||
{
|
||||
$descrizioni = $this->descrizioni;
|
||||
$righe = $this->righe;
|
||||
$articoli = $this->articoli;
|
||||
$sconti = $this->sconti;
|
||||
$results = $this->mergeCollections($this->descrizioni, $this->righe, $this->articoli, $this->sconti);
|
||||
|
||||
return $descrizioni->merge($righe)->merge($articoli)->merge($sconti)->sortBy('order');
|
||||
return $results->sortBy('order');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -174,6 +171,20 @@ abstract class Document extends Model
|
||||
$this->setRelations([]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Costruisce una nuova collezione Laravel a partire da quelle indicate.
|
||||
*
|
||||
* @param array<\Illuminate\Support\Collection> ...$args
|
||||
*
|
||||
* @return \Illuminate\Support\Collection
|
||||
*/
|
||||
protected function mergeCollections(...$args)
|
||||
{
|
||||
$collection = collect($args);
|
||||
|
||||
return $collection->collapse();
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola la somma degli attributi indicati come parametri.
|
||||
* Il metodo **non** deve essere adattato per ulteriori funzionalità: deve esclusivamente calcolare la somma richiesta in modo esplicito dagli argomenti.
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
if (in_array($id_cliente, $tipi_anagrafica) or in_array($id_fornitore, $tipi_anagrafica) ) {
|
||||
if (in_array($id_cliente, $tipi_anagrafica) or in_array($id_fornitore, $tipi_anagrafica)) {
|
||||
echo '
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-magic"></i>
|
||||
@ -9,8 +9,8 @@ if (in_array($id_cliente, $tipi_anagrafica) or in_array($id_fornitore, $tipi_an
|
||||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-right">';
|
||||
|
||||
if (in_array($id_cliente, $tipi_anagrafica)){
|
||||
echo '
|
||||
if (in_array($id_cliente, $tipi_anagrafica)) {
|
||||
echo '
|
||||
<li><a data-toggle="modal" data-title="'.tr('Aggiungi intervento').'" data-href="add.php?id_module='.Modules::get('Interventi')['id'].'&idanagrafica='.$record['idanagrafica'].'"><i class="fa fa-wrench"></i>'.tr('Nuovo intervento').'
|
||||
</a></li>
|
||||
|
||||
@ -28,11 +28,10 @@ echo '
|
||||
|
||||
<li><a data-toggle="modal" data-title="'.tr('Aggiungi fattura di vendita').'" data-href="add.php?id_module='.Modules::get('Fatture di vendita')['id'].'&idanagrafica='.$record['idanagrafica'].'"><i class="fa fa-file"></i>'.tr('Nuova fattura di vendita').'
|
||||
</a></li>';
|
||||
}
|
||||
}
|
||||
|
||||
if (in_array($id_fornitore, $tipi_anagrafica)){
|
||||
|
||||
echo '<li><a data-toggle="modal" data-title="'.tr('Aggiungi ordine fornitore').'" data-href="add.php?id_module='.Modules::get('Ordini fornitore')['id'].'&idanagrafica='.$record['idanagrafica'].'"><i class="fa fa-file-o fa-flip-horizontal"></i>'.tr('Nuovo ordine fornitore').'
|
||||
if (in_array($id_fornitore, $tipi_anagrafica)) {
|
||||
echo '<li><a data-toggle="modal" data-title="'.tr('Aggiungi ordine fornitore').'" data-href="add.php?id_module='.Modules::get('Ordini fornitore')['id'].'&idanagrafica='.$record['idanagrafica'].'"><i class="fa fa-file-o fa-flip-horizontal"></i>'.tr('Nuovo ordine fornitore').'
|
||||
</a></li>
|
||||
|
||||
<li><a data-toggle="modal" data-title="'.tr('Aggiungi ddt entrata').'" data-href="add.php?id_module='.Modules::get('Ddt di acquisto')['id'].'&idanagrafica='.$record['idanagrafica'].'"><i class="fa fa-truck fa-flip-horizontal"></i>'.tr('Nuovo ddt in entrata').'
|
||||
@ -40,11 +39,9 @@ if (in_array($id_fornitore, $tipi_anagrafica)){
|
||||
|
||||
<li><a data-toggle="modal" data-title="'.tr('Aggiungi fattura di acquisto').'" data-href="add.php?id_module='.Modules::get('Fatture di acquisto')['id'].'&idanagrafica='.$record['idanagrafica'].'"><i class="fa fa-file fa-flip-horizontal"></i>'.tr('Nuova fattura di acquisto').'
|
||||
</a></li>';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
echo '
|
||||
echo '
|
||||
</ul>
|
||||
</div>';
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ switch (post('op')) {
|
||||
$module = filter('module');
|
||||
|
||||
$list = [
|
||||
['Codice', 'Ragione sociale', 'Partita IVA', 'Codice destinatario' ,'Nazione', 'Indirizzo', 'CAP', 'Città', 'Provincia', 'Telefono', 'Fax', 'Cellulare', 'Email', 'PEC', 'IBAN', 'Note', 'Tipologia'],
|
||||
['Codice', 'Ragione sociale', 'Partita IVA', 'Codice destinatario', 'Nazione', 'Indirizzo', 'CAP', 'Città', 'Provincia', 'Telefono', 'Fax', 'Cellulare', 'Email', 'PEC', 'IBAN', 'Note', 'Tipologia'],
|
||||
['00001', 'Mia anagrafica', '12345678910', '1234567', 'ITALIA', 'Via Giuseppe Mazzini, 123', '12345', 'Este', 'PD', '+39 0429 60 25 12', '+39 0429 456 781', '+39 321 12 34 567', 'email@anagrafica.it', 'pec@anagrafica.it', 'IT60 X054 2811 1010 0000 0123 456', 'Note dell\'anagrafica di esempio', 'Cliente,Fornitore'],
|
||||
];
|
||||
|
||||
@ -75,12 +75,11 @@ switch (post('op')) {
|
||||
if (empty($anagrafica)) {
|
||||
$anagrafica = Anagrafica::build($dati_anagrafica['ragione_sociale']);
|
||||
}
|
||||
|
||||
|
||||
// Impedisco di aggiornare la mia anagrafica azienda
|
||||
if ($dati_anagrafica[$primary_key] != $id_azienda) {
|
||||
|
||||
//se non imposto nessun codice evito di resettare quello calcolato automaticamente o già presente
|
||||
if (empty($dati_anagrafica['codice'])){
|
||||
if (empty($dati_anagrafica['codice'])) {
|
||||
unset($dati_anagrafica['codice']);
|
||||
}
|
||||
|
||||
@ -106,7 +105,7 @@ return [
|
||||
'names' => [
|
||||
'Codice interno',
|
||||
'Numero',
|
||||
]
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'ragione_sociale',
|
||||
@ -114,7 +113,7 @@ return [
|
||||
'names' => [
|
||||
'Nome',
|
||||
'Denominazione',
|
||||
]
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'codice_destinatario',
|
||||
@ -125,7 +124,7 @@ return [
|
||||
'Codice univoco',
|
||||
'Codice univoco ufficio',
|
||||
'SDI',
|
||||
]
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'provincia',
|
||||
@ -137,7 +136,7 @@ return [
|
||||
'names' => [
|
||||
'Citt_',
|
||||
'Città',
|
||||
]
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'telefono',
|
||||
@ -170,7 +169,7 @@ return [
|
||||
'E-mail',
|
||||
'Indirizzo email',
|
||||
'Mail',
|
||||
]
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'pec',
|
||||
@ -179,7 +178,7 @@ return [
|
||||
'E-mail PEC',
|
||||
'Email certificata',
|
||||
'Indirizzo email certificata',
|
||||
]
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'codice_fiscale',
|
||||
@ -204,7 +203,7 @@ return [
|
||||
'P.IVA',
|
||||
'P.IVA/TAX ID',
|
||||
'TAX ID',
|
||||
]
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'codiceiban',
|
||||
@ -215,7 +214,7 @@ return [
|
||||
'label' => 'Note',
|
||||
'names' => [
|
||||
'Note Extra',
|
||||
]
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'id_nazione',
|
||||
|
@ -61,9 +61,8 @@ if (!empty($record['is_fiscale'])) {
|
||||
//Aggiunta insoluto
|
||||
if (!empty($record['riba']) && ($record['stato'] == 'Emessa' || $record['stato'] == 'Parzialmente pagato' || $record['stato'] == 'Pagato') && $dir == 'entrata') {
|
||||
$disabled1 = 0;
|
||||
}
|
||||
?>
|
||||
<a class="btn btn-primary <?php echo ( empty($disabled1) ) ? '' : 'disabled'; ?>" data-href="<?php echo $rootdir; ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&id_documenti=<?php echo $id_record; ?>&single=1&is_insoluto=1" data-title="<?php echo tr('Registra insoluto'); ?>" ><i class="fa fa-ban fa-inverse"></i> <?php echo tr('Registra insoluto'); ?></a>
|
||||
} ?>
|
||||
<a class="btn btn-primary <?php echo (empty($disabled1)) ? '' : 'disabled'; ?>" data-href="<?php echo $rootdir; ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&id_documenti=<?php echo $id_record; ?>&single=1&is_insoluto=1" data-title="<?php echo tr('Registra insoluto'); ?>" ><i class="fa fa-ban fa-inverse"></i> <?php echo tr('Registra insoluto'); ?></a>
|
||||
<?php
|
||||
|
||||
// Aggiunta prima nota solo se non c'è già, se non si è in bozza o se il pagamento non è completo
|
||||
@ -75,14 +74,12 @@ if (!empty($record['is_fiscale'])) {
|
||||
$disabled2 = 1;
|
||||
if (($n2 <= 0 && $record['stato'] == 'Emessa') || $differenza != 0) {
|
||||
$disabled2 = 0;
|
||||
}
|
||||
?>
|
||||
} ?>
|
||||
|
||||
<a class="btn btn-primary <?php echo (!empty(Modules::get('Prima nota')) and empty($disabled2) ) ? '' : 'disabled'; ?>" data-href="<?php echo $rootdir; ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&id_documenti=<?php echo $id_record; ?>&single=1" data-title="<?php echo tr('Registra contabile'); ?>" > <i class="fa fa-euro"></i> <?php echo tr('Registra contabile'); ?></a>
|
||||
<a class="btn btn-primary <?php echo (!empty(Modules::get('Prima nota')) and empty($disabled2)) ? '' : 'disabled'; ?>" data-href="<?php echo $rootdir; ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&id_documenti=<?php echo $id_record; ?>&single=1" data-title="<?php echo tr('Registra contabile'); ?>" > <i class="fa fa-euro"></i> <?php echo tr('Registra contabile'); ?></a>
|
||||
|
||||
<?php
|
||||
|
||||
|
||||
if ($record['stato'] == 'Pagato') {
|
||||
echo '
|
||||
<button type="button" class="btn btn-primary ask tip" data-msg="'.tr('Se riapri questa fattura verrà azzerato lo scadenzario e la prima nota. Continuare?').'" data-method="post" data-op="reopen" data-backto="record-edit" data-title="'.tr('Riaprire la fattura?').'" title="'.tr('Riporta la fattura in stato bozza e ne elimina i movimenti contabili').'">
|
||||
|
@ -127,7 +127,7 @@ if ($dir == 'entrata' && !empty($fattura->dichiarazione) && $fattura->stato->des
|
||||
{[ "type": "hidden", "label": "Segmento", "name": "id_segment", "class": "text-center", "value": "$id_segment$" ]}
|
||||
|
||||
<div class="col-md-2">
|
||||
{[ "type": "text", "label": "<?php echo $label; ?>", "name": "numero_esterno", "class": "text-center", "value": "$numero_esterno$", "help": "<?php echo (!empty($record['numero_esterno']) and $dir=='entrata' ) ? '' : tr('Il numero della fattura sarà generato automaticamente in fase di emissione.'); ?>" ]}
|
||||
{[ "type": "text", "label": "<?php echo $label; ?>", "name": "numero_esterno", "class": "text-center", "value": "$numero_esterno$", "help": "<?php echo (!empty($record['numero_esterno']) and $dir == 'entrata') ? '' : tr('Il numero della fattura sarà generato automaticamente in fase di emissione.'); ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
|
@ -35,7 +35,7 @@ echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Tipo attività').'", "name": "idtipointerventot", "value": "'.$sessione['idtipointervento'].'", "required": 1, "values": "query=SELECT in_tipiintervento.idtipointervento AS id, descrizione, in_tariffe.costo_ore AS prezzo_ore_unitario, in_tariffe.costo_km AS prezzo_km_unitario, in_tariffe.costo_dirittochiamata AS prezzo_dirittochiamata FROM in_tipiintervento JOIN in_tariffe ON in_tipiintervento.idtipointervento = in_tariffe.idtipointervento WHERE in_tariffe.idtecnico = '.prepare($sessione['idtecnico']).' ORDER BY descrizione" ]}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "timestamp", "label": "'.tr('Inizio attività').'", "name": "orario_inizio", "required": 1, "value": "'.$sessione['orario_inizio'].'" ]}
|
||||
</div>
|
||||
@ -54,35 +54,33 @@ echo '
|
||||
{[ "type": "number", "label": "'.tr('Km').'", "name": "km", "value": "'.$sessione['km'].'"]}
|
||||
</div>';
|
||||
|
||||
$hide = '';
|
||||
if ($show_costi) {
|
||||
$hide = 'hide';
|
||||
}
|
||||
$class = $show_costi ? '' : 'hide';
|
||||
|
||||
// Sconto ore
|
||||
echo '
|
||||
<div class="col-md-4 '.$hide.'" >
|
||||
<div class="col-md-4 '.$class.'" >
|
||||
{[ "type": "number", "label": "'.tr('Sconto ore').'", "name": "sconto", "value": "'.$sessione['sconto_unitario'].'", "icon-after": "choice|untprc|'.$sessione['tipo_sconto'].'"]}
|
||||
</div>';
|
||||
|
||||
// Sconto km
|
||||
echo '
|
||||
<div class="col-md-4 '.$hide.'">
|
||||
<div class="col-md-4 '.$class.'">
|
||||
{[ "type": "number", "label": "'.tr('Sconto km').'", "name": "sconto_km", "value": "'.$sessione['scontokm_unitario'].'", "icon-after": "choice|untprc|'.$sessione['tipo_sconto_km'].'"]}
|
||||
</div>';
|
||||
|
||||
echo'
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4 '.$hide.'">
|
||||
<div class="col-md-4 '.$class.'">
|
||||
{[ "type": "number", "label": "'.tr('Addebito orario').'", "name": "prezzo_ore_unitario", "value": "'.$sessione['prezzo_ore_unitario'].'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 '.$hide.'">
|
||||
<div class="col-md-4 '.$class.'">
|
||||
{[ "type": "number", "label": "'.tr('Addebito km').'", "name": "prezzo_km_unitario", "value": "'.$sessione['prezzo_km_unitario'].'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 '.$hide.'">
|
||||
<div class="col-md-4 '.$class.'">
|
||||
{[ "type": "number", "label": "'.tr('Addebito diritto ch.').'", "name": "prezzo_dirittochiamata", "value": "'.$sessione['prezzo_dirittochiamata'].'" ]}
|
||||
</div>';
|
||||
|
||||
@ -113,7 +111,7 @@ $(document).ready(function () {
|
||||
|
||||
$("#idtipointerventot").change(function() {
|
||||
data = $(this).selectData();
|
||||
|
||||
|
||||
$("#prezzo_ore_unitario").val(data.prezzo_ore_unitario);
|
||||
$("#prezzo_km_unitario").val(data.prezzo_km_unitario);
|
||||
$("#prezzo_dirittochiamata").val(data.prezzo_dirittochiamata);
|
||||
|
@ -94,7 +94,7 @@ class Intervento extends Document
|
||||
{
|
||||
$results = parent::getRigheContabili();
|
||||
|
||||
return $results->merge($this->sessioni);
|
||||
return $this->mergeCollections($results, $this->sessioni);
|
||||
}
|
||||
|
||||
// Relazioni Eloquent
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM in_interventi WHERE in_interventi.idstatointervento = (SELECT in_statiintervento.idstatointervento FROm in_statiintervento WHERE in_statiintervento.codice=\'WIP\') ORDER BY data_richiesta ASC');
|
||||
$rs = $dbo->fetchArray('SELECT * FROM in_interventi WHERE in_interventi.idstatointervento = (SELECT in_statiintervento.idstatointervento FROM in_statiintervento WHERE in_statiintervento.codice=\'WIP\') ORDER BY data_richiesta ASC');
|
||||
|
||||
if (!empty($rs)) {
|
||||
echo '
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM in_interventi WHERE in_interventi.idstatointervento = (SELECT in_statiintervento.idstatointervento FROm in_statiintervento WHERE in_statiintervento.codice=\'TODO\') ORDER BY data_richiesta ASC');
|
||||
$rs = $dbo->fetchArray('SELECT * FROM in_interventi WHERE in_interventi.idstatointervento = (SELECT in_statiintervento.idstatointervento FROM in_statiintervento WHERE in_statiintervento.codice=\'TODO\') ORDER BY data_richiesta ASC');
|
||||
|
||||
if (!empty($rs)) {
|
||||
echo '
|
||||
|
@ -29,36 +29,48 @@ class Pagamento extends Model
|
||||
$results = [];
|
||||
$count = 0;
|
||||
foreach ($rate as $key => $rata) {
|
||||
$date = new DateTime($data);
|
||||
|
||||
// X giorni esatti
|
||||
if ($rata['giorno'] == 0) {
|
||||
$scadenza = date('Y-m-d', strtotime($data.' +'.$rata['num_giorni'].' day'));
|
||||
// Offset della rata
|
||||
$date->modify('+'.($rata['num_giorni']).' day');
|
||||
}
|
||||
|
||||
// Ultimo del mese
|
||||
elseif ($rata['giorno'] < 0) {
|
||||
$date = new DateTime($data);
|
||||
|
||||
// Offset della rata in mesi
|
||||
$add = floor($rata['num_giorni'] / 30);
|
||||
for ($c = 0; $c < $add; ++$c) {
|
||||
$date->modify('last day of next month');
|
||||
}
|
||||
|
||||
// Ultimo del mese più X giorni
|
||||
// Opzione ultimo del mese più X giorni
|
||||
$giorni = -$rata['giorno'] - 1;
|
||||
if ($giorni > 0) {
|
||||
$date->modify('+'.($giorni).' day');
|
||||
} else {
|
||||
$date->modify('last day of this month');
|
||||
}
|
||||
|
||||
$scadenza = $date->format('Y-m-d');
|
||||
}
|
||||
|
||||
// Giorno preciso del mese
|
||||
else {
|
||||
$scadenza = date('Y-m-'.$rata['giorno'], strtotime($data.' +'.$rata['num_giorni'].' day'));
|
||||
// Offset della rata
|
||||
$date->modify('+'.($rata['num_giorni']).' day');
|
||||
|
||||
// Individuazione giorno effettivo (se il giorno indicato è eccessivamente grande, viene preso il massimo possibile)
|
||||
$date->modify('last day of this month');
|
||||
$last_day = $date->format('d');
|
||||
$day = $rata['giorno'] > $last_day ? $last_day : $rata['giorno'];
|
||||
|
||||
// Correzione data
|
||||
$date->setDate($date->format('Y'), $date->format('m'), $day);
|
||||
}
|
||||
|
||||
// Comversione della data in stringa standard
|
||||
$scadenza = $date->format('Y-m-d');
|
||||
|
||||
// All'ultimo ciclo imposto come cifra da pagare il totale della fattura meno gli importi già inseriti in scadenziario per evitare di inserire cifre arrotondate "male"
|
||||
if ($count + 1 == $number) {
|
||||
$da_pagare = sum($importo, -$totale, 2);
|
||||
|
@ -188,7 +188,7 @@ class Query
|
||||
|
||||
$value = trim(str_replace(['<', '=', '>'], '', $value));
|
||||
|
||||
if ($more || $minus){
|
||||
if ($more || $minus) {
|
||||
$search_filters[] = 'CAST('.$search_query.' AS UNSIGNED) '.$sign.' '.prepare($value);
|
||||
} else {
|
||||
$search_filters[] = $search_query.' = '.prepare($value);
|
||||
|
@ -66,7 +66,7 @@ foreach ($righe as $riga) {
|
||||
|
||||
// Aggiunta dei riferimenti ai documenti
|
||||
if (setting('Riferimento dei documenti nelle stampe')) {
|
||||
$ref = doc_references($r, $record['dir'], ['iddocumento']);
|
||||
$ref = doc_references($r, $record['dir'], ['idddt']);
|
||||
|
||||
if (!empty($ref)) {
|
||||
echo '
|
||||
|
@ -13,5 +13,6 @@ $id_cliente = $documento['idanagrafica'];
|
||||
$id_sede = $documento['idsede'];
|
||||
|
||||
//Se utente tencico e ho deciso di non mostrare i prezzi al tencico mi assicuro che non li possa vedere dalla stampa
|
||||
if (Auth::user()['gruppo'] == 'Tecnici' and $options['pricing'] == true and setting('Mostra i prezzi al tecnico') == 0)
|
||||
$options['pricing'] = false;
|
||||
if (Auth::user()['gruppo'] == 'Tecnici' and $options['pricing'] == true and setting('Mostra i prezzi al tecnico') == 0) {
|
||||
$options['pricing'] = false;
|
||||
}
|
||||
|
@ -12,6 +12,9 @@ $database->query('UPDATE `zz_operations` SET `id_email` = NULL');
|
||||
foreach ($logs as $log) {
|
||||
$user = User::find($log['id_utente']);
|
||||
$template = Template::find($log['id_email']);
|
||||
if (empty($template)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$mail = Mail::build($user, $template, $log['id_record']);
|
||||
$mail->resetPrints();
|
||||
|
Loading…
x
Reference in New Issue
Block a user