Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
d9c960403e
|
@ -5,6 +5,7 @@ return [
|
||||||
'modules/anagrafiche' => 'Modules\Anagrafiche',
|
'modules/anagrafiche' => 'Modules\Anagrafiche',
|
||||||
'modules/articoli' => 'Modules\Articoli',
|
'modules/articoli' => 'Modules\Articoli',
|
||||||
'modules/ritenute' => 'Modules\Ritenute',
|
'modules/ritenute' => 'Modules\Ritenute',
|
||||||
|
'modules/rivalse' => 'Modules\Rivalse',
|
||||||
'modules/iva' => 'Modules\Iva',
|
'modules/iva' => 'Modules\Iva',
|
||||||
'modules/ddt' => 'Modules\DDT',
|
'modules/ddt' => 'Modules\DDT',
|
||||||
'modules/fatture' => 'Modules\Fatture',
|
'modules/fatture' => 'Modules\Fatture',
|
||||||
|
|
2
core.php
2
core.php
|
@ -111,7 +111,7 @@ Monolog\ErrorHandler::register($logger, [], Monolog\Logger::ERROR, Monolog\Logge
|
||||||
|
|
||||||
// Aggiunta di Monolog a Whoops
|
// Aggiunta di Monolog a Whoops
|
||||||
if (App::debug()) {
|
if (App::debug()) {
|
||||||
$whoops->pushHandler(function (\Whoops\Exception\ErrorException $exception, $inspector, $run) use ($logger) {
|
$whoops->pushHandler(function ($exception, $inspector, $run) use ($logger) {
|
||||||
$logger->addError($exception->getMessage(), [
|
$logger->addError($exception->getMessage(), [
|
||||||
'code' => $exception->getCode(),
|
'code' => $exception->getCode(),
|
||||||
'message' => $exception->getMessage(),
|
'message' => $exception->getMessage(),
|
||||||
|
|
|
@ -96,32 +96,6 @@ abstract class Article extends Row
|
||||||
return $this->belongsTo(Original::class, 'idarticolo');
|
return $this->belongsTo(Original::class, 'idarticolo');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function copiaIn(Document $document)
|
|
||||||
{
|
|
||||||
$class = get_class($document);
|
|
||||||
$namespace = implode('\\', explode('\\', $class, -1));
|
|
||||||
|
|
||||||
$current = get_class($this);
|
|
||||||
$pieces = explode('\\', $current);
|
|
||||||
$type = end($pieces);
|
|
||||||
|
|
||||||
$object = $namespace.'\\Components\\'.$type;
|
|
||||||
|
|
||||||
$attributes = $this->getAttributes();
|
|
||||||
unset($attributes['id']);
|
|
||||||
|
|
||||||
$model = $object::build($document, $this->articolo);
|
|
||||||
$model->save();
|
|
||||||
|
|
||||||
$model = $object::find($model->id);
|
|
||||||
$accepted = $model->getAttributes();
|
|
||||||
|
|
||||||
$attributes = array_intersect_key($attributes, $accepted);
|
|
||||||
$model->fill($attributes);
|
|
||||||
|
|
||||||
return $model;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static function boot()
|
protected static function boot()
|
||||||
{
|
{
|
||||||
parent::boot(true);
|
parent::boot(true);
|
||||||
|
@ -169,4 +143,9 @@ abstract class Article extends Row
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function customCopiaIn($original)
|
||||||
|
{
|
||||||
|
$this->articolo()->associate($original->articolo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,11 @@ abstract class Description extends Model
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Imposta il proprietario dell'oggetto e l'ordine relativo all'interno delle righe.
|
||||||
|
*
|
||||||
|
* @param Document $document
|
||||||
|
*/
|
||||||
public function setParent(Document $document)
|
public function setParent(Document $document)
|
||||||
{
|
{
|
||||||
$this->parent()->associate($document);
|
$this->parent()->associate($document);
|
||||||
|
@ -35,8 +40,17 @@ abstract class Description extends Model
|
||||||
$this->save();
|
$this->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function copiaIn(Document $document)
|
/**
|
||||||
|
* Copia l'oggetto (articolo, riga, descrizione) nel corrispettivo per il documento indicato.
|
||||||
|
*
|
||||||
|
* @param Document $document
|
||||||
|
* @param float|null $qta
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function copiaIn(Document $document, $qta = null)
|
||||||
{
|
{
|
||||||
|
// Individuazione classe di destinazione
|
||||||
$class = get_class($document);
|
$class = get_class($document);
|
||||||
$namespace = implode('\\', explode('\\', $class, -1));
|
$namespace = implode('\\', explode('\\', $class, -1));
|
||||||
|
|
||||||
|
@ -46,18 +60,34 @@ abstract class Description extends Model
|
||||||
|
|
||||||
$object = $namespace.'\\Components\\'.$type;
|
$object = $namespace.'\\Components\\'.$type;
|
||||||
|
|
||||||
|
// Attributi dell'oggetto da copiare
|
||||||
$attributes = $this->getAttributes();
|
$attributes = $this->getAttributes();
|
||||||
unset($attributes['id']);
|
unset($attributes['id']);
|
||||||
|
|
||||||
$model = $object::build($document);
|
if ($qta !== null) {
|
||||||
|
$attributes['qta'] = $qta;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Creazione del nuovo oggetto
|
||||||
|
$model = new $object();
|
||||||
|
$model->setParent($document);
|
||||||
|
|
||||||
|
$model->customCopiaIn($this);
|
||||||
|
|
||||||
$model->save();
|
$model->save();
|
||||||
|
|
||||||
|
// Impostazione degli attributi
|
||||||
$model = $object::find($model->id);
|
$model = $object::find($model->id);
|
||||||
$accepted = $model->getAttributes();
|
$accepted = $model->getAttributes();
|
||||||
|
|
||||||
$attributes = array_intersect_key($attributes, $accepted);
|
$attributes = array_intersect_key($attributes, $accepted);
|
||||||
$model->fill($attributes);
|
$model->fill($attributes);
|
||||||
|
|
||||||
|
$model->save();
|
||||||
|
|
||||||
|
// Rimozione quantità evasa
|
||||||
|
$this->qta_evasa = $this->qta_evasa + $attributes['qta'];
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,6 +95,15 @@ abstract class Description extends Model
|
||||||
|
|
||||||
abstract public function getParentID();
|
abstract public function getParentID();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Azione personalizzata per la copia dell'oggetto.
|
||||||
|
*
|
||||||
|
* @param $original
|
||||||
|
*/
|
||||||
|
protected function customCopiaIn($original)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
protected static function boot($bypass = false)
|
protected static function boot($bypass = false)
|
||||||
{
|
{
|
||||||
parent::boot();
|
parent::boot();
|
||||||
|
|
|
@ -6,7 +6,7 @@ use Common\Document;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Modules\Iva\Aliquota;
|
use Modules\Iva\Aliquota;
|
||||||
use Modules\Ritenute\RitenutaAcconto;
|
use Modules\Ritenute\RitenutaAcconto;
|
||||||
use Modules\Ritenute\RivalsaINPS;
|
use Modules\Rivalse\RivalsaINPS;
|
||||||
|
|
||||||
abstract class Row extends Description
|
abstract class Row extends Description
|
||||||
{
|
{
|
||||||
|
|
|
@ -59,11 +59,10 @@ switch (post('op')) {
|
||||||
$costo_km = post('costo_km');
|
$costo_km = post('costo_km');
|
||||||
$costo_diritto_chiamata = post('costo_diritto_chiamata');
|
$costo_diritto_chiamata = post('costo_diritto_chiamata');
|
||||||
|
|
||||||
$id_documento_fe = post('id_documento_fe');
|
$id_documento_fe = post('id_documento_fe');
|
||||||
$codice_cig = post('codice_cig');
|
$codice_cig = post('codice_cig');
|
||||||
$codice_cup = post('codice_cup');
|
$codice_cup = post('codice_cup');
|
||||||
|
|
||||||
|
|
||||||
$query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).',
|
$query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).',
|
||||||
idsede='.prepare($idsede).',
|
idsede='.prepare($idsede).',
|
||||||
idstato='.prepare($idstato).',
|
idstato='.prepare($idstato).',
|
||||||
|
|
|
@ -444,7 +444,7 @@ switch (post('op')) {
|
||||||
|
|
||||||
if (!empty(post('import'))) {
|
if (!empty(post('import'))) {
|
||||||
// Replicazione delle righe del contratto sul documento
|
// Replicazione delle righe del contratto sul documento
|
||||||
$righe = $dbo->fetchArray('SELECT idarticolo, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto, IFNULL( (SELECT mg_articoli.abilita_serial FROM mg_articoli WHERE mg_articoli.id=co_righe_contratti.idarticolo), 0 ) AS abilita_serial FROM co_righe_contratti WHERE idcontratto='.prepare($idcontratto));
|
$righe = $dbo->fetchArray('SELECT *, IFNULL( (SELECT mg_articoli.abilita_serial FROM mg_articoli WHERE mg_articoli.id=co_righe_contratti.idarticolo), 0 ) AS abilita_serial FROM co_righe_contratti WHERE idcontratto='.prepare($idcontratto));
|
||||||
|
|
||||||
foreach ($righe as $key => $riga) {
|
foreach ($righe as $key => $riga) {
|
||||||
$subtot = $riga['subtotale'];
|
$subtot = $riga['subtotale'];
|
||||||
|
|
|
@ -555,15 +555,13 @@ function ricalcola_costiagg_fattura($iddocumento, $idrivalsainps = '', $idritenu
|
||||||
|
|
||||||
$marca_da_bollo = 0;
|
$marca_da_bollo = 0;
|
||||||
if (abs($bolli) > 0 && abs($netto_a_pagare > setting("Soglia minima per l'applicazione della marca da bollo"))) {
|
if (abs($bolli) > 0 && abs($netto_a_pagare > setting("Soglia minima per l'applicazione della marca da bollo"))) {
|
||||||
|
|
||||||
//Controllo che tra le iva ce ne sia almeno una con natura N1, N2, N3 o N4
|
//Controllo che tra le iva ce ne sia almeno una con natura N1, N2, N3 o N4
|
||||||
$check_natura = $dbo->fetchArray("SELECT codice_natura_fe FROM co_righe_documenti INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE iddocumento=".prepare($iddocumento)." AND codice_natura_fe IN('N1','N2','N3','N4') GROUP BY codice_natura_fe");
|
$check_natura = $dbo->fetchArray('SELECT codice_natura_fe FROM co_righe_documenti INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE iddocumento='.prepare($iddocumento)." AND codice_natura_fe IN('N1','N2','N3','N4') GROUP BY codice_natura_fe");
|
||||||
if(($dir == 'entrata' && sizeof($check_natura)>0) || $dir == 'uscita'){
|
if (($dir == 'entrata' && sizeof($check_natura) > 0) || $dir == 'uscita') {
|
||||||
$marca_da_bollo = $bolli;
|
$marca_da_bollo = $bolli;
|
||||||
}else{
|
} else {
|
||||||
$marca_da_bollo = 0.00;
|
$marca_da_bollo = 0.00;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Se l'importo è negativo può essere una nota di credito, quindi cambio segno alla marca da bollo
|
// Se l'importo è negativo può essere una nota di credito, quindi cambio segno alla marca da bollo
|
||||||
|
|
|
@ -71,7 +71,7 @@ foreach ($righe as $riga) {
|
||||||
//$ref_modulo = Modules::get('Preventivi')['id'];
|
//$ref_modulo = Modules::get('Preventivi')['id'];
|
||||||
//$ref_id = $riga['idpreventivo'];
|
//$ref_id = $riga['idpreventivo'];
|
||||||
|
|
||||||
$preventivo = $dbo->fetchOne('SELECT codice_cig,codice_cup,id_documento_fe FROM co_preventivi WHERE id = '.prepare($riga['idpreventivo']));
|
$preventivo = $dbo->fetchOne('SELECT codice_cig,codice_cup,id_documento_fe FROM co_preventivi WHERE id = '.prepare($riga['idpreventivo']));
|
||||||
$riga['codice_cig'] = $preventivo['codice_cig'];
|
$riga['codice_cig'] = $preventivo['codice_cig'];
|
||||||
$riga['codice_cup'] = $preventivo['codice_cup'];
|
$riga['codice_cup'] = $preventivo['codice_cup'];
|
||||||
$riga['id_documento_fe'] = $preventivo['id_documento_fe'];
|
$riga['id_documento_fe'] = $preventivo['id_documento_fe'];
|
||||||
|
@ -108,14 +108,14 @@ foreach ($righe as $riga) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$extra_riga = '';
|
$extra_riga = '';
|
||||||
if (!$riga['is_descrizione']){
|
if (!$riga['is_descrizione']) {
|
||||||
$extra_riga = tr('_DESCRIZIONE_CONTO_ _ID_DOCUMENTO_ _CODICE_CIG_ _CODICE_CUP_ ', [
|
$extra_riga = tr('_DESCRIZIONE_CONTO_ _ID_DOCUMENTO_ _CODICE_CIG_ _CODICE_CUP_ ', [
|
||||||
'_DESCRIZIONE_CONTO_' => $riga['descrizione_conto'] ?: null,
|
'_DESCRIZIONE_CONTO_' => $riga['descrizione_conto'] ?: null,
|
||||||
'_CODICE_CIG_' => $riga['codice_cig'] ? ',CIG: '.$riga['codice_cig'] : null,
|
'_CODICE_CIG_' => $riga['codice_cig'] ? ',CIG: '.$riga['codice_cig'] : null,
|
||||||
'_CODICE_CUP_' => $riga['codice_cup'] ? ',CUP: '.$riga['codice_cup'] : null,
|
'_CODICE_CUP_' => $riga['codice_cup'] ? ',CUP: '.$riga['codice_cup'] : null,
|
||||||
'_ID_DOCUMENTO_' => $riga['id_documento_fe'] ? ' - DOC: '.$riga['id_documento_fe'] : null,
|
'_ID_DOCUMENTO_' => $riga['id_documento_fe'] ? ' - DOC: '.$riga['id_documento_fe'] : null,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<tr data-id="'.$riga['id'].'" '.$extra.'>
|
<tr data-id="'.$riga['id'].'" '.$extra.'>
|
||||||
|
|
|
@ -60,11 +60,10 @@ switch (post('op')) {
|
||||||
|
|
||||||
$idiva = post('idiva');
|
$idiva = post('idiva');
|
||||||
|
|
||||||
$id_documento_fe = post('id_documento_fe');
|
$id_documento_fe = post('id_documento_fe');
|
||||||
$codice_cig = post('codice_cig');
|
$codice_cig = post('codice_cig');
|
||||||
$codice_cup = post('codice_cup');
|
$codice_cup = post('codice_cup');
|
||||||
|
|
||||||
|
|
||||||
$query = 'UPDATE co_preventivi SET idstato='.prepare($idstato).','.
|
$query = 'UPDATE co_preventivi SET idstato='.prepare($idstato).','.
|
||||||
' nome='.prepare($nome).','.
|
' nome='.prepare($nome).','.
|
||||||
' idanagrafica='.prepare($idanagrafica).','.
|
' idanagrafica='.prepare($idanagrafica).','.
|
||||||
|
@ -82,9 +81,9 @@ switch (post('op')) {
|
||||||
' descrizione='.prepare($descrizione).','.
|
' descrizione='.prepare($descrizione).','.
|
||||||
' tipo_sconto_globale='.prepare($tipo_sconto).','.
|
' tipo_sconto_globale='.prepare($tipo_sconto).','.
|
||||||
' sconto_globale='.prepare($sconto).','.
|
' sconto_globale='.prepare($sconto).','.
|
||||||
' id_documento_fe='.prepare($id_documento_fe).','.
|
' id_documento_fe='.prepare($id_documento_fe).','.
|
||||||
' codice_cig='.prepare($codice_cig).','.
|
' codice_cig='.prepare($codice_cig).','.
|
||||||
' codice_cup='.prepare($codice_cup).','.
|
' codice_cup='.prepare($codice_cup).','.
|
||||||
' validita='.prepare($validita).','.
|
' validita='.prepare($validita).','.
|
||||||
' idtipointervento='.prepare($idtipointervento).','.
|
' idtipointervento='.prepare($idtipointervento).','.
|
||||||
' idiva='.prepare($idiva).' WHERE id='.prepare($id_record);
|
' idiva='.prepare($idiva).' WHERE id='.prepare($id_record);
|
||||||
|
|
|
@ -6,14 +6,13 @@ echo'
|
||||||
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Duplicare questo preventivo?\') ){ $(\'#form-copy\').submit(); }"> <i class="fa fa-copy"></i> '.tr('Duplica preventivo').'</button>';
|
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Duplicare questo preventivo?\') ){ $(\'#form-copy\').submit(); }"> <i class="fa fa-copy"></i> '.tr('Duplica preventivo').'</button>';
|
||||||
|
|
||||||
if (!in_array($record['stato'], ['Bozza', 'Rifiutato', 'In attesa di conferma'])) {
|
if (!in_array($record['stato'], ['Bozza', 'Rifiutato', 'In attesa di conferma'])) {
|
||||||
$disabled = '';
|
$disabled = '';
|
||||||
} else {
|
} else {
|
||||||
echo '
|
echo '
|
||||||
<button type="button" class="btn btn-warning" onclick="if(confirm(\'Vuoi creare un nuova revisione?\')){$(\'#form_crearevisione\').submit();}"><i class="fa fa-edit"></i> '.tr('Crea nuova revisione...').'</button>';
|
<button type="button" class="btn btn-warning" onclick="if(confirm(\'Vuoi creare un nuova revisione?\')){$(\'#form_crearevisione\').submit();}"><i class="fa fa-edit"></i> '.tr('Crea nuova revisione...').'</button>';
|
||||||
$disabled = 'disabled';
|
$disabled = 'disabled';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// crea ordine
|
// crea ordine
|
||||||
echo '
|
echo '
|
||||||
<div style="margin-left:4px;" class="dropdown pull-right" >
|
<div style="margin-left:4px;" class="dropdown pull-right" >
|
||||||
|
@ -31,7 +30,6 @@ echo '
|
||||||
</ul>
|
</ul>
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
|
|
||||||
//duplica preventivo
|
//duplica preventivo
|
||||||
echo '
|
echo '
|
||||||
<form action="" method="post" id="form-copy">
|
<form action="" method="post" id="form-copy">
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Modules\Ritenute;
|
namespace Modules\Rivalse;
|
||||||
|
|
||||||
use Common\Model;
|
use Common\Model;
|
||||||
|
|
|
@ -121,11 +121,11 @@ class FatturaElettronica
|
||||||
|
|
||||||
$contratti = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `co_contratti` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idcontratto` = `co_contratti`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
|
$contratti = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `co_contratti` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idcontratto` = `co_contratti`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
|
||||||
|
|
||||||
$preventivi = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `co_preventivi` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idpreventivo` = `co_preventivi`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
|
$preventivi = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `co_preventivi` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idpreventivo` = `co_preventivi`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
|
||||||
|
|
||||||
$interventi = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `in_interventi` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idintervento` = `in_interventi`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
|
$interventi = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `in_interventi` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idintervento` = `in_interventi`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
|
||||||
|
|
||||||
$ordini = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `or_ordini` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idordine` = `or_ordini`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
|
$ordini = $database->fetchArray('SELECT `id_documento_fe`, `codice_cig`, `codice_cup` FROM `or_ordini` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idordine` = `or_ordini`.`id` WHERE `co_righe_documenti`.`iddocumento` = '.prepare($documento['id']).' AND `id_documento_fe` IS NOT NULL');
|
||||||
|
|
||||||
$this->contratti = array_merge($contratti, $preventivi, $interventi, $ordini);
|
$this->contratti = array_merge($contratti, $preventivi, $interventi, $ordini);
|
||||||
}
|
}
|
||||||
|
@ -633,11 +633,13 @@ class FatturaElettronica
|
||||||
];
|
];
|
||||||
|
|
||||||
$ritenuta_predefinita = setting("Percentuale ritenuta d'acconto");
|
$ritenuta_predefinita = setting("Percentuale ritenuta d'acconto");
|
||||||
if (!empty($ritenuta_predefinita))
|
if (!empty($ritenuta_predefinita)) {
|
||||||
$dati_cassa['Ritenuta'] = 'SI';
|
$dati_cassa['Ritenuta'] = 'SI';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($iva['codice_natura_fe']))
|
if (!empty($iva['codice_natura_fe'])) {
|
||||||
$dati_cassa['Natura'] = $iva['codice_natura_fe'];
|
$dati_cassa['Natura'] = $iva['codice_natura_fe'];
|
||||||
|
}
|
||||||
|
|
||||||
//$dati_cassa['RiferimentoAmministrazione'] = '';
|
//$dati_cassa['RiferimentoAmministrazione'] = '';
|
||||||
|
|
||||||
|
@ -882,23 +884,22 @@ class FatturaElettronica
|
||||||
|
|
||||||
//2.2.1.3
|
//2.2.1.3
|
||||||
if (!empty($riga['idarticolo'])) {
|
if (!empty($riga['idarticolo'])) {
|
||||||
|
$tipo_codice = $database->fetchOne('SELECT `mg_categorie`.`nome` FROM `mg_categorie` INNER JOIN `mg_articoli` ON `mg_categorie`.`id` = `mg_articoli`.`id_categoria` WHERE `mg_articoli`.`id` = '.prepare($riga['idarticolo']))['nome'];
|
||||||
$tipo_codice = $database->fetchOne('SELECT `mg_categorie`.`nome` FROM `mg_categorie` INNER JOIN `mg_articoli` ON `mg_categorie`.`id` = `mg_articoli`.`id_categoria` WHERE `mg_articoli`.`id` = '.prepare($riga['idarticolo']))['nome'];
|
|
||||||
|
|
||||||
$codice_articolo = [
|
$codice_articolo = [
|
||||||
'CodiceTipo' => ($tipo_codice) ? : 'OSM',
|
'CodiceTipo' => ($tipo_codice) ?: 'OSM',
|
||||||
'CodiceValore' => $database->fetchOne('SELECT `codice` FROM `mg_articoli` WHERE `id` = '.prepare($riga['idarticolo']))['codice'],
|
'CodiceValore' => $database->fetchOne('SELECT `codice` FROM `mg_articoli` WHERE `id` = '.prepare($riga['idarticolo']))['codice'],
|
||||||
];
|
];
|
||||||
|
|
||||||
$dettaglio['CodiceArticolo'] = $codice_articolo;
|
$dettaglio['CodiceArticolo'] = $codice_articolo;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Non ammesso ’
|
//Non ammesso ’
|
||||||
//$descrizione = html_entity_decode($riga['descrizione'], ENT_HTML5, 'UTF-8');
|
//$descrizione = html_entity_decode($riga['descrizione'], ENT_HTML5, 'UTF-8');
|
||||||
$descrizione = str_replace(">", " ", $riga['descrizione']);
|
$descrizione = str_replace('>', ' ', $riga['descrizione']);
|
||||||
$descrizione = str_replace("…", "...", $descrizione);
|
$descrizione = str_replace('…', '...', $descrizione);
|
||||||
|
|
||||||
$dettaglio['Descrizione'] = str_replace("’", " ", $descrizione);
|
$dettaglio['Descrizione'] = str_replace('’', ' ', $descrizione);
|
||||||
$dettaglio['Quantita'] = $riga['qta'];
|
$dettaglio['Quantita'] = $riga['qta'];
|
||||||
|
|
||||||
if (!empty($riga['um'])) {
|
if (!empty($riga['um'])) {
|
||||||
|
@ -987,7 +988,7 @@ class FatturaElettronica
|
||||||
// $iva['RiferimentoNormativo'] = $riepilogo['dicitura'];
|
// $iva['RiferimentoNormativo'] = $riepilogo['dicitura'];
|
||||||
}
|
}
|
||||||
|
|
||||||
//2.2.2
|
//2.2.2
|
||||||
$result[] = [
|
$result[] = [
|
||||||
'DatiRiepilogo' => $iva,
|
'DatiRiepilogo' => $iva,
|
||||||
];
|
];
|
||||||
|
@ -1010,7 +1011,7 @@ class FatturaElettronica
|
||||||
$iva['EsigibilitaIVA'] = 'S';
|
$iva['EsigibilitaIVA'] = 'S';
|
||||||
}
|
}
|
||||||
|
|
||||||
//2.2.2
|
//2.2.2
|
||||||
$result[] = [
|
$result[] = [
|
||||||
'DatiRiepilogo' => $iva,
|
'DatiRiepilogo' => $iva,
|
||||||
];
|
];
|
||||||
|
|
|
@ -45,7 +45,7 @@ switch (filter('op')) {
|
||||||
|
|
||||||
//Processo il file ricevuto
|
//Processo il file ricevuto
|
||||||
$process_result = Interaction::processXML($filename);
|
$process_result = Interaction::processXML($filename);
|
||||||
if($process_result!=''){
|
if ($process_result != '') {
|
||||||
flash()->error($process_result);
|
flash()->error($process_result);
|
||||||
redirect(ROOTDIR.'/controller.php?id_module='.$id_module);
|
redirect(ROOTDIR.'/controller.php?id_module='.$id_module);
|
||||||
exit;
|
exit;
|
||||||
|
|
|
@ -222,22 +222,19 @@ class FatturaElettronica
|
||||||
|
|
||||||
$sconti = $riga['ScontoMaggiorazione'];
|
$sconti = $riga['ScontoMaggiorazione'];
|
||||||
if (!empty($sconti)) {
|
if (!empty($sconti)) {
|
||||||
|
foreach ($sconti as $key => $sconto) {
|
||||||
|
$tipo = !empty($sconto['Percentuale']) ? 'PRC' : 'EUR';
|
||||||
|
$unitario = $sconto['Percentuale'] ?: $sconto['Importo'];
|
||||||
|
|
||||||
foreach ($sconti as $key => $sconto) {
|
//SConto o MaGgiorazione
|
||||||
$tipo = !empty($sconto['Percentuale']) ? 'PRC' : 'EUR';
|
$unitario = ($sconto['Tipo'] == 'SC') ? $unitario : -$unitario;
|
||||||
$unitario = $sconto['Percentuale'] ?: $sconto['Importo'];
|
|
||||||
|
|
||||||
//SConto o MaGgiorazione
|
|
||||||
$unitario = ($sconto['Tipo'] == 'SC') ? $unitario : -$unitario;
|
|
||||||
|
|
||||||
if (!empty($unitario)){
|
|
||||||
$obj->sconto_unitario = $unitario;
|
|
||||||
$obj->tipo_sconto = $tipo;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (!empty($unitario)) {
|
||||||
|
$obj->sconto_unitario = $unitario;
|
||||||
|
$obj->tipo_sconto = $tipo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$obj->save();
|
$obj->save();
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,21 +20,21 @@ class Interaction extends Connection
|
||||||
|
|
||||||
$code = $body['code'];
|
$code = $body['code'];
|
||||||
|
|
||||||
if($code=='200'){
|
if ($code == '200') {
|
||||||
$files = $body['results'];
|
$files = $body['results'];
|
||||||
|
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
/**
|
/*
|
||||||
* Verifico che l'XML non sia già stato importato nel db
|
* Verifico che l'XML non sia già stato importato nel db
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if( preg_match( "/^([A-Z]{2})(.+?)_([^\.]+)\.xml/i", $file, $m ) ){
|
if (preg_match("/^([A-Z]{2})(.+?)_([^\.]+)\.xml/i", $file, $m)) {
|
||||||
$partita_iva = $m[2];
|
$partita_iva = $m[2];
|
||||||
$progressivo_invio = $m[3];
|
$progressivo_invio = $m[3];
|
||||||
$fattura = database()->fetchOne('SELECT co_documenti.id FROM (co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica WHERE co_tipidocumento.dir="uscita" AND an_anagrafiche.piva='.prepare($partita_iva).' AND co_documenti.progressivo_invio='.prepare($progressivo_invio));
|
$fattura = database()->fetchOne('SELECT co_documenti.id FROM (co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica WHERE co_tipidocumento.dir="uscita" AND an_anagrafiche.piva='.prepare($partita_iva).' AND co_documenti.progressivo_invio='.prepare($progressivo_invio));
|
||||||
|
|
||||||
if (!$fattura) {
|
if (!$fattura) {
|
||||||
$list[] = basename($file);
|
$list[] = basename($file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,17 +62,17 @@ class Interaction extends Connection
|
||||||
|
|
||||||
public static function processXML($filename)
|
public static function processXML($filename)
|
||||||
{
|
{
|
||||||
$response = static::request('POST', 'process_xml', [
|
$response = static::request('POST', 'process_xml', [
|
||||||
'filename' => $filename,
|
'filename' => $filename,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$body = static::responseBody($response);
|
$body = static::responseBody($response);
|
||||||
|
|
||||||
if($body['processed']=='0'){
|
if ($body['processed'] == '0') {
|
||||||
$message = $body['code']." - ".$body['message'];
|
$message = $body['code'].' - '.$body['message'];
|
||||||
}else{
|
} else {
|
||||||
$message = "";
|
$message = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,7 +157,7 @@ class AJAX
|
||||||
if (!empty($permissions)) {
|
if (!empty($permissions)) {
|
||||||
$modules = Modules::getAvailableModules();
|
$modules = Modules::getAvailableModules();
|
||||||
} else {
|
} else {
|
||||||
$modules = Modules::getModules();
|
$modules = Models\Module::withoutGlobalScope('enabled')->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
$modules = $modules->toArray();
|
$modules = $modules->toArray();
|
||||||
|
|
|
@ -100,7 +100,7 @@ class Generator
|
||||||
$values = array_column($replaces, 'regex');
|
$values = array_column($replaces, 'regex');
|
||||||
|
|
||||||
$pattern = preg_replace('/#{1,}/', '#', $pattern);
|
$pattern = preg_replace('/#{1,}/', '#', $pattern);
|
||||||
$pattern = str_replace('\\#','#',preg_quote($pattern, '/'));
|
$pattern = str_replace('\\#', '#', preg_quote($pattern, '/'));
|
||||||
$pattern = str_replace(array_keys($replaces), array_values($values), $pattern);
|
$pattern = str_replace(array_keys($replaces), array_values($values), $pattern);
|
||||||
|
|
||||||
// Individuazione dei valori
|
// Individuazione dei valori
|
||||||
|
|
Loading…
Reference in New Issue