Miglioramento #538

This commit is contained in:
Thomas Zilio 2019-04-04 08:30:58 -07:00
parent f0f755ebc6
commit 90f92a198a
25 changed files with 75 additions and 81 deletions

View File

@ -100,17 +100,11 @@ abstract class Article extends Row
$this->qta_movimentazione += $diff;
}
$database = database();
$this->evasioneAltriArticoli();
}
// Se c'è un collegamento ad un ddt, aggiorno la quantità evasa
if (!empty($this->idddt)) {
$database->query('UPDATE dt_righe_ddt SET qta_evasa = qta_evasa + '.$diff.' WHERE descrizione = '.prepare($this->descrizione).' AND idarticolo = '.prepare($this->idarticolo).' AND idddt = '.prepare($this->idddt).' AND idiva = '.prepare($this->idiva).' AND qta_evasa < qta LIMIT 1');
}
// Se c'è un collegamento ad un ordine, aggiorno la quantità evasa
elseif (!empty($this->idordine)) {
$database->query('UPDATE or_righe_ordini SET qta_evasa = qta_evasa + '.$diff.' WHERE descrizione = '.prepare($this->descrizione).' AND idarticolo = '.prepare($this->idarticolo).' AND idordine = '.prepare($this->idordine).' AND idiva = '.prepare($this->idiva).' AND qta_evasa < qta LIMIT 1');
}
public function evasioneAltriArticoli($diff)
{
}
public function articolo()
@ -139,6 +133,13 @@ abstract class Article extends Row
return parent::save($options);
}
public function delete()
{
$this->evasioneAltriArticoli(-$this->qta);
return parent::delete();
}
protected static function boot()
{
parent::boot(true);

View File

@ -2,13 +2,10 @@
namespace Common\Components;
use Common\Document;
use Illuminate\Database\Eloquent\Builder;
use Modules\Iva\Aliquota;
abstract class Discount extends Row
{
public function getIvaAttribute()
{
return $this->attributes['iva'];

View File

@ -99,7 +99,7 @@ switch (post('op')) {
'_IVA_' => $partita_iva,
]));
}
// Validazione del Codice Fiscale, solo per anagrafiche Private e Aziende, ignoro controllo se codice fiscale e settato uguale alla p.iva
if ($anagrafica->tipo != 'Ente pubblico' and $anagrafica->codice_fiscale != $anagrafica->partita_iva) {
$check_codice_fiscale = Validate::isValidTaxCode($anagrafica->codice_fiscale);
@ -165,11 +165,11 @@ switch (post('op')) {
$anagrafica->email = post('email');
$anagrafica->idrelazione = post('idrelazione');
$anagrafica->idagente = $idagente;
$anagrafica->pec = post('pec');
$anagrafica->tipo = post('tipo');
$anagrafica->codice_destinatario = post('codice_destinatario');
$anagrafica->id_nazione = post('id_nazione') ?: null;
$anagrafica->pec = post('pec');
$anagrafica->tipo = post('tipo');
$anagrafica->codice_destinatario = post('codice_destinatario');
$anagrafica->id_nazione = post('id_nazione') ?: null;
$anagrafica->save();
if ($anagrafica->isAzienda()) {

View File

@ -109,10 +109,9 @@ echo '
<div class="col-md-4">
{[ "type": "text", "label": "'.tr('PEC').'", "name": "pec", "class": "email-mask", "placeholder":"pec@dominio.ext", "icon-before": "<i class=\'fa fa-envelope-o\'></i>" ]}
</div>';
$help_codice_destinatario = tr("Per impostare il codice specificare prima '<b>Tipologia</b>' e '<b>Nazione</b>' dell'anagrafica").':<br><br><ul><li>'.tr('Ente pubblico (B2G/PA) - Codice Univoco Ufficio (www.indicepa.gov.it), 6 caratteri').'</li><li>'.tr('Azienda (B2B) - Codice Destinatario, 7 caratteri').'</li><li>'.tr('Privato (B2C) - viene utilizzato il Codice Fiscale').'</li>'.'</ul>Se non si conosce il codice destinatario lasciare vuoto il campo. Verrà applicato in automatico quello previsto di default dal sistema (\'0000000\', \'999999\', \'XXXXXXX\').';
$help_codice_destinatario = tr("Per impostare il codice specificare prima '<b>Tipologia</b>' e '<b>Nazione</b>' dell'anagrafica").':<br><br><ul><li>'.tr('Ente pubblico (B2G/PA) - Codice Univoco Ufficio (www.indicepa.gov.it), 6 caratteri').'</li><li>'.tr('Azienda (B2B) - Codice Destinatario, 7 caratteri').'</li><li>'.tr('Privato (B2C) - viene utilizzato il Codice Fiscale').'</li>'.'</ul>Se non si conosce il codice destinatario lasciare vuoto il campo. Verrà applicato in automatico quello previsto di default dal sistema (\'0000000\', \'999999\', \'XXXXXXX\').';
echo '
<div class="col-md-4">
{[ "type": "text", "label": "'.tr('Codice destinatario').'", "name": "codice_destinatario", "required": 0, "class": "text-center text-uppercase alphanumeric-mask", "maxlength": "7", "extra": "", "help": "'.tr($help_codice_destinatario).'" ]}

View File

@ -132,8 +132,7 @@ echo '
<h3 class="box-title">'.tr('Fatture').'</h3>
</div>
<div class="box-body">';
// Fatture di vendita
$rsi = $dbo->fetchArray("SELECT id, data, ragione_sociale, (SELECT SUM(subtotale+iva) FROM co_righe_documenti WHERE iddocumento=co_documenti.id) AS totale FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='entrata') AND co_documenti.idanagrafica=".prepare($id_record));
@ -142,8 +141,8 @@ $date_start = date('Y-01-01');
foreach ($rsi as $fattura) {
$totale_fatture_vendita = sum($totale_fatture_vendita, Modules\Fatture\Fattura::find($fattura['id'])->netto);
// Calcolo data più bassa per la ricerca
// Calcolo data più bassa per la ricerca
if (strtotime($fattura['data']) < strtotime($date_start)) {
$date_start = $fattura['data'];
}
@ -170,7 +169,6 @@ $rsi = $dbo->fetchArray("SELECT data, ragione_sociale, (SELECT SUM(subtotale+iva
$totale_fatture_acquisto = 0;
$date_start = date('Y-01-01');
for ($i = 0; $i < count($rsi); ++$i) {
$totale_fatture_acquisto += $rsi[$i]['totale'];

View File

@ -49,7 +49,7 @@ switch ($resource) {
'codice' => 'codice',
'descrizione' => 'descrizione',
'qta' => 'qta',
'um' => 'um',
'um' => 'um',
'categoria' => 'categoria',
'sottocategoria' => 'sottocategoria',
'idiva_vendita' => 'idiva_vendita',
@ -114,10 +114,10 @@ switch ($resource) {
$results[count($results) - 1]['children'][] = [
'id' => $r['id'],
'text' => $r['codice'].' - '.$r['descrizione'].' ('.Translator::numberToLocale($r['qta']).(!empty($r['um']) ? ' '.$r['um']: '').')',
'text' => $r['codice'].' - '.$r['descrizione'].' ('.Translator::numberToLocale($r['qta']).(!empty($r['um']) ? ' '.$r['um'] : '').')',
'codice' => $r['codice'],
'descrizione' => $r['descrizione'],
'qta' => $r['qta'],
'qta' => $r['qta'],
'um' => $r['um'],
'idiva_vendita' => $idiva,
'iva_vendita' => $iva,

View File

@ -6,8 +6,8 @@ use Modules\Anagrafiche\Anagrafica;
use Modules\Articoli\Articolo as ArticoloOriginale;
use Modules\Fatture\Components\Articolo;
use Modules\Fatture\Components\Descrizione;
use Modules\Fatture\Components\Sconto;
use Modules\Fatture\Components\Riga;
use Modules\Fatture\Components\Sconto;
use Modules\Fatture\Fattura;
use Modules\Fatture\Tipo;

View File

@ -94,7 +94,6 @@ switch (post('op')) {
} else {
$include = $fattura->isFE();
}
} catch (UnexpectedValueException $e) {
$include = false;
}
@ -106,8 +105,8 @@ switch (post('op')) {
$src = $fe->getFilename();
$dst = $src;
} else {
$src = basename( $fattura->uploads()->where('name', 'Fattura Elettronica')->first()->filepath );
$dst = basename( $fattura->uploads()->where('name', 'Fattura Elettronica')->first()->original );
$src = basename($fattura->uploads()->where('name', 'Fattura Elettronica')->first()->filepath);
$dst = basename($fattura->uploads()->where('name', 'Fattura Elettronica')->first()->original);
}
$file = slashes($module->upload_directory.'/'.$src);
@ -158,7 +157,6 @@ if ($module->name == 'Fatture di vendita') {
];
}
$bulk['export-xml-bulk'] = [
'text' => tr('Esporta XML'),
'data' => [

View File

@ -16,7 +16,7 @@ echo '
if ($dir == 'entrata') {
echo '
<div class="btn-group">
<button type="button" class="btn btn-primary unblockable dropdown-toggle '.(((!empty($record['ref_documento']) || $record['stato'] != 'Bozza') and empty($record['reversed']) ) ? '' : 'disabled').'" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<button type="button" class="btn btn-primary unblockable dropdown-toggle '.(((!empty($record['ref_documento']) || $record['stato'] != 'Bozza') and empty($record['reversed'])) ? '' : 'disabled').'" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-magic"></i> '.tr('Crea').' <span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>

View File

@ -57,6 +57,23 @@ class Articolo extends Article
]);
}
public function evasioneAltriArticoli($diff)
{
parent::evasioneAltriArticoli($diff);
$database = database();
// Se c'è un collegamento ad un ddt, aggiorno la quantità evasa
if (!empty($this->idddt)) {
$database->query('UPDATE dt_righe_ddt SET qta_evasa = qta_evasa + '.$diff.' WHERE descrizione = '.prepare($this->descrizione).' AND idarticolo = '.prepare($this->idarticolo).' AND idddt = '.prepare($this->idddt).' AND idiva = '.prepare($this->idiva).' AND qta_evasa < qta LIMIT 1');
}
// Se c'è un collegamento ad un ordine, aggiorno la quantità evasa
elseif (!empty($this->idordine)) {
$database->query('UPDATE or_righe_ordini SET qta_evasa = qta_evasa + '.$diff.' WHERE descrizione = '.prepare($this->descrizione).' AND idarticolo = '.prepare($this->idarticolo).' AND idordine = '.prepare($this->idordine).' AND idiva = '.prepare($this->idiva).' AND qta_evasa < qta LIMIT 1');
}
}
public function getDirection()
{
return $this->fattura->tipo->dir;

View File

@ -4,7 +4,6 @@ namespace Modules\Fatture;
use Common\Document;
use Modules\Anagrafiche\Anagrafica;
use Modules\Fatture\Components\Riga;
use Modules\Pagamenti\Pagamento;
use Modules\RitenuteContributi\RitenutaContributi;
use Plugins\ExportFE\FatturaElettronica;

View File

@ -111,9 +111,9 @@ class Ordine extends Document
}
public function sconti()
{
return $this->hasMany(Components\Sconto::class, 'idordine');
}
{
return $this->hasMany(Components\Sconto::class, 'idordine');
}
public function descrizioni()
{

View File

@ -17,12 +17,12 @@ switch (post('op')) {
break;
case 'add':
$descrizione = post('descrizione');
$icona = post('icona');
$is_completato = post('is_completato') ?: null;
$is_fatturabile = post('is_fatturabile') ?: null;
$is_pianificabile = post('is_pianificabile') ?: null;
$is_completato = post('is_completato') ?: null;
$is_fatturabile = post('is_fatturabile') ?: null;
$is_pianificabile = post('is_pianificabile') ?: null;
//controlla descrizione che non sia duplicata
if (count($dbo->fetchArray('SELECT descrizione FROM co_staticontratti WHERE descrizione='.prepare($descrizione))) > 0) {

View File

@ -4,14 +4,10 @@ include_once __DIR__.'/../../core.php';
$contratti = count($dbo->fetchArray('SELECT id FROM co_contratti WHERE idstato='.prepare($id_record)));
if ($contratti == 0) {
$attr = '';
} else {
$attr = 'readonly';
echo '<div class="alert alert-warning">'.tr('Alcune impostazioni non possono essere modificate per questo stato perché già utilizzato in alcuni contratti.').'</div>';
}
?>
<form action="" method="post" id="edit-form">
@ -53,7 +49,6 @@ if ($contratti == 0) {
<?php
if (!empty($contratti)) {
echo '
<div class="alert alert-danger">

View File

@ -17,12 +17,12 @@ switch (post('op')) {
break;
case 'add':
$descrizione = post('descrizione');
$icona = post('icona');
$is_completato = post('is_completato') ?: null;
$is_fatturabile = post('is_fatturabile') ?: null;
$is_pianificabile = post('is_pianificabile') ?: null;
$is_completato = post('is_completato') ?: null;
$is_fatturabile = post('is_fatturabile') ?: null;
$is_pianificabile = post('is_pianificabile') ?: null;
//controlla descrizione che non sia duplicata
if (count($dbo->fetchArray('SELECT descrizione FROM co_statipreventivi WHERE descrizione='.prepare($descrizione))) > 0) {

View File

@ -4,14 +4,10 @@ include_once __DIR__.'/../../core.php';
$preventivi = count($dbo->fetchArray('SELECT id FROM co_preventivi WHERE idstato='.prepare($id_record)));
if ($preventivi == 0) {
$attr = '';
} else {
$attr = 'readonly';
echo '<div class="alert alert-warning">'.tr('Alcune impostazioni non possono essere modificate per questo stato perché già utilizzato in alcuni preventivi.').'</div>';
}
?>
<form action="" method="post" id="edit-form">
@ -53,7 +49,6 @@ if ($preventivi == 0) {
<?php
if (!empty($preventivi)) {
echo '
<div class="alert alert-danger">

View File

@ -45,13 +45,12 @@ echo '
<div class="col-md-6">
<h4>'.$dati_generali['Numero'];
echo '
<a href="'.$structure->fileurl('view.php').'?filename='.get('filename').'" class="btn btn-info btn-xs'.((!ends_with(get('filename'), '.p7m')) ? '':' disabled').'" target="_blank" >
echo '
<a href="'.$structure->fileurl('view.php').'?filename='.get('filename').'" class="btn btn-info btn-xs'.((!ends_with(get('filename'), '.p7m')) ? '' : ' disabled').'" target="_blank" >
<i class="fa fa-eye"></i> '.tr('Visualizza').'
</a>';
echo '
<br><small>
'.database()->fetchOne('SELECT CONCAT("(", codice, ") ", descrizione) AS descrizione FROM fe_tipi_documento WHERE codice = '.prepare($dati_generali['TipoDocumento']))['descrizione'].'

View File

@ -375,10 +375,10 @@ class FatturaElettronica
$fattura->progressivo_invio = $progressivo_invio;
$fattura->numero_esterno = $numero_esterno;
$fattura->idpagamento = $id_pagamento;
//Per il destinatario, la data di ricezione della fattura assume grande rilievo ai fini IVA, poiché determina la decorrenza dei termini per poter esercitare il diritto alla detrazione.
//La data di ricezione della fattura è contenuta allinterno della “ricevuta di consegna” visibile al trasmittente della stessa.
$fattura->data_ricezione = $dati_generali['Data'];
//Per il destinatario, la data di ricezione della fattura assume grande rilievo ai fini IVA, poiché determina la decorrenza dei termini per poter esercitare il diritto alla detrazione.
//La data di ricezione della fattura è contenuta allinterno della “ricevuta di consegna” visibile al trasmittente della stessa.
$fattura->data_ricezione = $dati_generali['Data'];
$stato_documento = StatoFattura::where('descrizione', 'Emessa')->first();
$fattura->stato()->associate($stato_documento);

View File

@ -26,7 +26,7 @@ switch ($operazione) {
], ['id' => $id_record]);
flash()->info(tr('Promemoria inserito!'));
break;
// Eliminazione pianificazione

View File

@ -12,7 +12,7 @@ if (!Interaction::isEnabled()) {
}
echo '
<p>'.tr("Le ricevute delle Fatture Elettroniche permettono di individuare se una determinata fattura rilasciata è stata accettata dal Sistema Di Interscambio e dal cliente relativo").'.</p>
<p>'.tr('Le ricevute delle Fatture Elettroniche permettono di individuare se una determinata fattura rilasciata è stata accettata dal Sistema Di Interscambio e dal cliente relativo').'.</p>
<p>'.tr("Tramite il pulsante _BTN_ è possibile procedere all controllo automatico di queste ricevute, che aggiorneranno di conseguenza lo $requesto dei documenti relativi e verranno allegate ad essi", [
'_BTN_' => '<b>Ricerca</b>',

View File

@ -86,7 +86,7 @@ class FileManager implements ManagerInterface
<td align="left">
<a href="'.ROOTDIR.'/view.php?file_id='.$r['id'].'" target="_blank">
<i class="fa fa-external-link"></i> '.$r['name'].'
</a><small> ('.$file->extension.')'.((!empty($file->size)) ? ' ('.\Util\FileSystem::formatBytes($file->size).')':'').'</small>'.'
</a><small> ('.$file->extension.')'.((!empty($file->size)) ? ' ('.\Util\FileSystem::formatBytes($file->size).')' : '').'</small>'.'
</td>
<td>'.\Translator::timestampToLocale($r['created_at']).'</td>
<td class="text-right">

View File

@ -215,7 +215,7 @@ class Uploads
// Registrazione del file
$data['filename'] = $filename;
$data['original'] = $original;
$data['size'] = $source['size'];
$data['size'] = $source['size'];
self::register($data);
// Operazioni finali
@ -241,7 +241,7 @@ class Uploads
'id_module' => !empty($data['id_module']) && empty($data['id_plugin']) ? $data['id_module'] : null,
'id_plugin' => !empty($data['id_plugin']) ? $data['id_plugin'] : null,
'id_record' => $data['id_record'],
'size' => $data['size'],
'size' => $data['size'],
]);
}

View File

@ -8,7 +8,6 @@ $module_name = 'Interventi';
$query = 'SELECT in_interventi.*, (SELECT nome FROM co_contratti WHERE id=in_interventi.id_contratto) AS nome_contratto, (SELECT numero FROM co_contratti WHERE id=in_interventi.id_contratto) AS numero_contratto, (SELECT numero FROM co_preventivi WHERE id=in_interventi.id_preventivo) AS numero_preventivo, (SELECT SUM(prezzo_dirittochiamata) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_dirittochiamata`, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km`, (SELECT SUM(ore*prezzo_ore_unitario) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_ore_consuntivo`, (SELECT SUM(prezzo_km_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km_consuntivo`, in_interventi.descrizione AS `descrizione_intervento`, richiesta, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS tipointervento FROM in_interventi INNER JOIN in_tipiintervento ON in_interventi.idtipointervento=in_tipiintervento.idtipointervento WHERE id='.prepare($id_record);
$records = $dbo->fetchArray($query);
$costi_intervento = get_costi_intervento($id_record);
$id_cliente = $records[0]['idanagrafica'];

View File

@ -73,12 +73,9 @@ if ($_GET['lev'] == '3') {
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'><b>SALDO INIZIALE</b></td><td class='br bb padded text-right'><b>".Translator::numberToLocale(abs($dare))."</b></td><td class='bb padded text-right'><b>".Translator::numberToLocale(abs($avere))."</b></td></tr>\n";
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$idconto.'" AND data >= "'.$date_start.'" AND data <= "'.$date_end.'" ORDER BY data ASC');
// Inizializzo saldo finale
$saldo_finale2 = [];
// Inizializzo saldo finale
$saldo_finale2 = [];
for ($i = 0; $i < sizeof($rs); ++$i) {
if ($rs[$i]['totale'] >= 0) {
$dare = Translator::numberToLocale(abs($rs[$i]['totale']));
$avere = '';
@ -94,9 +91,9 @@ if ($_GET['lev'] == '3') {
if (sum($saldo_finale) < 0) {
$dare = '';
$avere = abs(sum($saldo_finale) + sum($saldo_finale2) );
$avere = abs(sum($saldo_finale) + sum($saldo_finale2));
} else {
$dare = abs(sum($saldo_finale) + sum($saldo_finale2) );
$dare = abs(sum($saldo_finale) + sum($saldo_finale2));
$avere = '';
}

View File

@ -195,7 +195,7 @@ echo '
</tbody>';
// TOTALE COSTI FINALI
if ($options['pricing'] and !isset($options['hide_total']) ) {
if ($options['pricing'] and !isset($options['hide_total'])) {
// Totale imponibile
echo '
<tr>