This commit is contained in:
Beppe 2020-06-10 17:00:37 +02:00
commit 99083268e2
25 changed files with 148 additions and 58 deletions

View File

@ -17,7 +17,7 @@ $total = Util\Query::readQuery($structure);
// Ricerca
$search = [];
for ($i = 0; $i < count($columns); ++$i) {
if (!empty($columns[$i]['search']['value']) || $columns[$i]['search']['value']=='0') {
if (!empty($columns[$i]['search']['value']) || $columns[$i]['search']['value'] == '0') {
$search[$total['fields'][$i]] = $columns[$i]['search']['value'];
}
}

View File

@ -213,6 +213,7 @@ function message(element) {
onOpen: function () {
start_superselect();
start_inputmask();
start_datepickers();
},
preConfirm: function () {
$form = $('#swal-form');

View File

@ -30,9 +30,9 @@ switch (post('op')) {
case 'import':
$sede_fields = [
'piva',
'codice_fiscale',
'codice_destinatario',
//'piva',
//'codice_fiscale',
//'codice_destinatario',
'indirizzo',
'indirizzo2',
'citta',
@ -139,6 +139,7 @@ return [
'Citt_',
'Citt&agrave;',
'Città',
'Citta',
],
],
[
@ -208,6 +209,7 @@ return [
'P.IVA',
'P.IVA/TAX ID',
'TAX ID',
'Partita IVA',
],
],
[

View File

@ -250,8 +250,10 @@ class Anagrafica extends Model
public function setCodiceDestinatarioAttribute($value)
{
if ($this->sedeLegale->nazione->iso2 != 'IT') {
if (!empty($this->sedeLegale->nazione) && $this->sedeLegale->nazione->iso2 != 'IT') {
$value = '';
dump('tes');
exit();
}
$this->attributes['codice_destinatario'] = trim(strtoupper($value));

View File

@ -5,9 +5,7 @@ include_once __DIR__.'/../../core.php';
switch (post('op')) {
case 'delete-bulk':
foreach ($id_records as $id) {
$elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`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 `idarticolo` = '.prepare($id).')
UNION SELECT `dt_ddt`.`id`, `dt_ddt`.`data`, `dt_ddt`.`numero`, `dt_ddt`.`numero_esterno`, `dt_tipiddt`.`descrizione` AS tipo_documento, `dt_tipiddt`.`dir` FROM `dt_ddt` JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` WHERE `dt_ddt`.`id` IN (SELECT `idddt` FROM `dt_righe_ddt` WHERE `idarticolo` = '.prepare($id).')
@ -16,10 +14,9 @@ switch (post('op')) {
if (!empty($elementi)) {
$dbo->query('UPDATE mg_articoli SET deleted_at = NOW() WHERE id = '.prepare($id).Modules::getAdditionalsQuery($id_module));
}else{
} else {
$dbo->query('DELETE FROM `mg_articoli` WHERE id = '.prepare($id).Modules::getAdditionalsQuery($id_module));
}
}
flash()->info(tr('Articoli eliminati!'));

View File

@ -391,7 +391,6 @@ $riga = $contratto->getRiga($type, $id_riga);
// Creazione del contratto al volo
if (post('create_document') == 'on') {
$contratto = Contratto::build($preventivo->anagrafica, $preventivo->nome);
$contratto->idpagamento = $preventivo->idpagamento;

View File

@ -23,10 +23,9 @@ foreach ($righe as $riga) {
echo '
<tr data-id="'.$riga->id.'">';
echo '
<td class="text-center">
'.(($riga->order)+1).'
'.(($riga->order) + 1).'
</td>';
// Descrizione

View File

@ -179,7 +179,7 @@ switch (get('op')) {
<div class="fc-event '.$class.'" data-id="'.$r['id'].'" data-idcontratto="'.$r['idcontratto'].'" data-ref="'.$r['ref'].'">'.(($r['ref'] == 'intervento') ? '<i class=\'fa fa-wrench pull-right\'></i>' : '<i class=\'fa fa-file-text-o pull-right\'></i>').'
<b>'.$r['ragione_sociale'].'</b><br>'.Translator::dateToLocale($r['data_richiesta']).' ('.$r['tipointervento'].')<div class="request" >'.(!empty($r['richiesta']) ? ' - '.$r['richiesta'] : '').'</div>'.(!empty($r['nomecontratto']) ? '<br><b>Contratto:</b> '.$r['nomecontratto'] : '').
(!empty($r['data_scadenza'] and $r['data_scadenza'] != '0000-00-00 00:00:00') ? '<br><small>'.tr('entro il: ').Translator::dateToLocale($r['data_scadenza']).'</small>' : '').
(($r['ref'] == 'intervento') ? (Modules::link('Interventi', $r['id'], '<i class="fa fa-eye"></i>', null, 'title="'.tr("Visualizza scheda").'" class="btn btn-primary btn-xs pull-right"')) : (Modules::link('Contratti', $r['idcontratto'], '<i class="fa fa-eye"></i>', null, 'title="'.tr("Visualizza scheda").'" class="btn btn-primary btn-xs pull-right"'))).
(($r['ref'] == 'intervento') ? (Modules::link('Interventi', $r['id'], '<i class="fa fa-eye"></i>', null, 'title="'.tr('Visualizza scheda').'" class="btn btn-primary btn-xs pull-right"')) : (Modules::link('Contratti', $r['idcontratto'], '<i class="fa fa-eye"></i>', null, 'title="'.tr('Visualizza scheda').'" class="btn btn-primary btn-xs pull-right"'))).
'</div>';
}
} ?>

View File

@ -41,7 +41,7 @@ foreach ($righe as $riga) {
echo '
<td class="text-center">
'.(($riga->order)+1).'
'.(($riga->order) + 1).'
</td>';
echo '

View File

@ -74,7 +74,7 @@ foreach ($righe as $riga) {
echo '
<td class="text-center">
'.(($riga->order)+1).'
'.(($riga->order) + 1).'
</td>';
echo '

View File

@ -421,6 +421,10 @@ $riga = $intervento->getRiga($type, $id_riga);
$new = $intervento->replicate();
$new->idstatointervento = $idstatointervento;
//calcolo il nuovo codice
$new->codice = Intervento::getNextCodice($data_richiesta);
$new->save();
$id_record = $new->id;
@ -431,7 +435,7 @@ $riga = $intervento->getRiga($type, $id_riga);
$new_riga->setParent($new);
//Copio le righe
if( $copia_righe==1 ){
if ($copia_righe == 1) {
$righe = $intervento->getRighe();
foreach ($righe as $riga) {
$new_riga = $riga->replicate();
@ -446,20 +450,19 @@ $riga = $intervento->getRiga($type, $id_riga);
$i = 0;
//Copio le sessioni
if( $copia_sessioni==1 ){
if ($copia_sessioni == 1) {
$sessioni = $intervento->sessioni;
foreach ($sessioni as $sessione) {
//Se è la prima sessione che copio importo la data con quella della richiesta
if( $i == 0 ){
$orario_inizio = date("Y-m-d", strtotime($data_richiesta)).' '.date("H:i:s", strtotime($sessione->orario_inizio));
}else{
if ($i == 0) {
$orario_inizio = date('Y-m-d', strtotime($data_richiesta)).' '.date('H:i:s', strtotime($sessione->orario_inizio));
} else {
$diff = strtotime($sessione->orario_inizio) - strtotime($inizio_old);
$orario_inizio = date("Y-m-d H:i:s", (strtotime($orario_inizio)+$diff));
$orario_inizio = date('Y-m-d H:i:s', (strtotime($orario_inizio) + $diff));
}
$diff_fine = strtotime($sessione->orario_fine) - strtotime($sessione->orario_inizio);
$orario_fine = date("Y-m-d H:i:s", (strtotime($orario_inizio)+$diff_fine));
$orario_fine = date('Y-m-d H:i:s', (strtotime($orario_inizio) + $diff_fine));
$new_sessione = $sessione->replicate();
$new_sessione->idintervento = $new->id;
@ -468,7 +471,7 @@ $riga = $intervento->getRiga($type, $id_riga);
$new_sessione->orario_fine = $orario_fine;
$new_sessione->save();
$i++;
++$i;
$inizio_old = $sessione->orario_inizio;
}
}
@ -476,5 +479,4 @@ $riga = $intervento->getRiga($type, $id_riga);
flash()->info(tr('Attività duplicata correttamente!'));
break;
}

View File

@ -141,6 +141,78 @@ switch (post('op')) {
flash()->warning(tr('Nessuna attività modificata!'));
}
break;
case 'copy':
$idstatointervento = post('idstatointervento');
$data_richiesta = post('data_richiesta');
$copia_sessioni = post('sessioni');
$copia_righe = post('righe');
foreach ($id_records as $idintervento) {
$intervento = Intervento::find($idintervento);
$new = $intervento->replicate();
$new->idstatointervento = $idstatointervento;
//calcolo il nuovo codice
$new->codice = Intervento::getNextCodice($data_richiesta);
$new->save();
$id_record = $new->id;
$righe = $intervento->getRighe();
foreach ($righe as $riga) {
$new_riga = $riga->replicate();
$new_riga->setParent($new);
//Copio le righe
if ($copia_righe == 1) {
$righe = $intervento->getRighe();
foreach ($righe as $riga) {
$new_riga = $riga->replicate();
$new_riga->setParent($new);
$new_riga->qta_evasa = 0;
$new_riga->save();
}
}
}
$i = 0;
//Copio le sessioni
if ($copia_sessioni == 1) {
$sessioni = $intervento->sessioni;
foreach ($sessioni as $sessione) {
//Se è la prima sessione che copio importo la data con quella della richiesta
if ($i == 0) {
$orario_inizio = date('Y-m-d', strtotime($data_richiesta)).' '.date('H:i:s', strtotime($sessione->orario_inizio));
} else {
$diff = strtotime($sessione->orario_inizio) - strtotime($inizio_old);
$orario_inizio = date('Y-m-d H:i:s', (strtotime($orario_inizio) + $diff));
}
$diff_fine = strtotime($sessione->orario_fine) - strtotime($sessione->orario_inizio);
$orario_fine = date('Y-m-d H:i:s', (strtotime($orario_inizio) + $diff_fine));
$new_sessione = $sessione->replicate();
$new_sessione->idintervento = $new->id;
$new_sessione->orario_inizio = $orario_inizio;
$new_sessione->orario_fine = $orario_fine;
$new_sessione->save();
++$i;
$inizio_old = $sessione->orario_inizio;
}
}
}
flash()->info(tr('Attività duplicate correttamente!'));
break;
}
@ -179,4 +251,18 @@ return [
'blank' => false,
],
],
'copy' => [
'text' => tr('Duplica attività'),
'data' => [
'title' => tr('Vuoi davvero fare una copia degli interventi selezionati?'),
'msg' => '<br>{[ "type": "timestamp", "label": "'.tr('Data/ora richiesta').'", "name": "data_richiesta", "required": 0, "value": "-now-", "required":1 ]}
<br>{[ "type": "select", "label": "'.tr('Stato').'", "name": "idstatointervento", "required": 1, "values": "query=SELECT idstatointervento AS id, descrizione, colore AS _bgcolor_ FROM in_statiintervento WHERE deleted_at IS NULL", "value": "" ]}
<br>{[ "type":"checkbox", "label":"'.tr('Duplica righe').'", "name":"righe", "value":"" ]}
<br>{[ "type":"checkbox", "label":"'.tr('Duplica sessioni').'", "name":"sessioni", "value":"" ]}',
'button' => tr('Duplica attività'),
'class' => 'btn btn-lg btn-warning',
'blank' => false,
],
],
];

View File

@ -36,6 +36,9 @@ class Articoli extends Resource implements RetrieveInterface, CreateInterface
$articolo->qta = $data['qta'];
$articolo->um = $data['um'];
$articolo->prezzo_unitario = $originale->prezzo_vendita;
$articolo->costo_unitario = $originale->prezzo_acquisto;
$articolo->save();
}

View File

@ -41,10 +41,9 @@ foreach ($righe as $riga) {
echo '
<td class="text-center">
'.(($riga->order)+1).'
'.(($riga->order) + 1).'
</td>';
echo '
<td>';

View File

@ -69,7 +69,7 @@ switch (post('op')) {
case 'copy':
// Copia del preventivo
$new = $preventivo->replicate();
$new->numero = Preventivo::getNextNumero( Carbon::now() );
$new->numero = Preventivo::getNextNumero(Carbon::now());
$new->data_bozza = Carbon::now();
$new->data_conclusione = Carbon::now()->addMonth();
$new->stato = 'Bozza';

View File

@ -23,9 +23,9 @@ foreach ($righe as $riga) {
echo '
<tr data-id="'.$riga->id.'">';
echo '
echo '
<td class="text-center">
'.(($riga->order)+1).'
'.(($riga->order) + 1).'
</td>';
// Descrizione

View File

@ -27,6 +27,7 @@ class Login extends Resource implements CreateInterface
$response['token'] = $token;
$response['group'] = $user['gruppo'];
$response['google_maps_token'] = setting('Google Maps API key');
$response['prezzi_al_tecnico'] = setting('Mostra i prezzi al tecnico');
$response['version'] = Update::getVersion();
} else {

View File

@ -55,7 +55,8 @@ foreach ($raggruppamenti as $mese => $raggruppamento) {
$contratto = $pianificazione->contratto;
$anagrafica = $contratto->anagrafica;
echo '
if (strtolower($pianificazione->data_scadenza->formatLocalized('%B %Y')) == strtolower($mese)) {
echo '
<tr>
<td>
'.dateFormat($pianificazione->data_scadenza).'
@ -74,14 +75,15 @@ foreach ($raggruppamenti as $mese => $raggruppamento) {
]).'</small>
</td>';
// Pulsanti
echo '
// Pulsanti
echo '
<td class="text-center">
<button type="button" class="btn btn-primary btn-sm" onclick="crea_fattura('.$contratto->id.', '.$pianificazione->id.')">
<i class="fa fa-euro"></i> '.tr('Crea fattura').'
</button>
</td>
</tr>';
}
}
echo '

View File

@ -7,24 +7,22 @@ use Plugins\ReceiptFE\Interaction;
echo '
<p>'.tr('Le ricevute delle Fatture Elettroniche permettono di individuare se una determinata fattura tramessa è stata accettata dal Sistema Di Interscambio').'.</p>';
if (Interaction::isEnabled()) {
echo '
<p>'.tr('Tramite il pulsante _BTN_ è possibile procedere al recupero delle ricevute, aggiornando automaticamente lo stato delle relative fatture e allegandole ad esse', [
'_BTN_' => '<i class="fa fa-refresh"></i> <b>'.tr('Ricerca ricevute').'</b>',
]).'.</p>';
//controllo se ci sono fatture in elaborazione da più di 7 giorni per le quali non ho ancora una ricevuta
$fatture_generate = $dbo->fetchArray('SELECT `co_documenti`.`numero_esterno`, `co_documenti`.`data`, `co_documenti`.`data_stato_fe` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_tipidocumento`.`dir` = \'entrata\' AND `co_documenti`.`codice_stato_fe` = \'WAIT\' AND `co_documenti`.`data_stato_fe` >= "'.$_SESSION['period_start'].'" AND `co_documenti`.`data_stato_fe`<(NOW() - INTERVAL 7 DAY) ORDER BY `co_documenti`.`data_stato_fe`');
//controllo se ci sono fatture in elaborazione da più di 7 giorni per le quali non ho ancora una ricevuta
$fatture_generate = $dbo->fetchArray('SELECT `co_documenti`.`numero_esterno`, `co_documenti`.`data`, `co_documenti`.`data_stato_fe` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_tipidocumento`.`dir` = \'entrata\' AND `co_documenti`.`codice_stato_fe` = \'WAIT\' AND `co_documenti`.`data_stato_fe` >= "'.$_SESSION['period_start'].'" AND `co_documenti`.`data_stato_fe`<(NOW() - INTERVAL 7 DAY) ORDER BY `co_documenti`.`data_stato_fe`');
foreach ($fatture_generate as $fattura_generata) {
echo '
foreach ($fatture_generate as $fattura_generata) {
echo '
<div class="alert alert-warning"><i class="fa fa-warning" ></i> '.tr('Attenzione: la fattura _NUM_ del _DATA_ è in attesa di una ricevuta dal _DATA_STATO_FE.', [
'_NUM_' => $fattura_generata['numero_esterno'],
'_DATA_' => Translator::dateToLocale($fattura_generata['data']),
'_DATA_STATO_FE' => Translator::timestampToLocale($fattura_generata['data_stato_fe'])
'_DATA_STATO_FE' => Translator::timestampToLocale($fattura_generata['data_stato_fe']),
]).'</div>';
}
}
}
echo '
<div class="box box-success">

View File

@ -135,7 +135,7 @@ class Ricevuta
$this->saveAllegato($codice);
//In caso di Notifica Esito il codice è definito dal nodo <Esito> della ricevuta
if ($codice == 'NE'){
if ($codice == 'NE') {
$this->xml = XML::readFile($this->file);
$codice = $this->xml['EsitoCommittente']['Esito'];
}

View File

@ -44,8 +44,7 @@ foreach ($righe as $riga) {
echo'
<td class=\'text-center\' >
'.($r['order']+1).'</td>';
'.($r['order'] + 1).'</td>';
echo'
<td>

View File

@ -42,11 +42,9 @@ foreach ($righe as $riga) {
echo '
<tr>';
echo'
<td class=\'text-center\' >
'.($r['order']+1).'</td>';
'.($r['order'] + 1).'</td>';
echo '
<td>

View File

@ -89,7 +89,9 @@ foreach ($righe as $riga) {
<tr>';
echo '<td>';
if (!empty($riga->articolo->immagine)) {echo '<img src="files/articoli/'.$riga->articolo->immagine.'" width="95" height="95">';}
if (!empty($riga->articolo->immagine)) {
echo '<img src="files/articoli/'.$riga->articolo->immagine.'" width="95" height="95">';
}
echo '</td>';
echo '