Aggiunta tabella co_statidocumento_lang

This commit is contained in:
Pek5892 2024-02-13 15:49:40 +01:00
parent 331e525ee9
commit 2f42eb061e
39 changed files with 418 additions and 251 deletions

View File

@ -18,6 +18,7 @@
*/
use Plugins\ListinoFornitori\DettaglioFornitore;
use Modules\Fatture\Stato;
// Inizializzazione
$documento = $options['documento'];
@ -88,7 +89,7 @@ if (!empty($options['create_document'])) {
// Opzioni aggiuntive per le Fatture
if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'])) {
$stato_predefinito = $database->fetchOne("SELECT id FROM co_statidocumento WHERE descrizione = 'Bozza'");
$stato_predefinito = (new Stato())->getByName('Bozza')->id_record;
if (!empty($options['reversed'])) {
$idtipodocumento = $dbo->selectOne('co_tipidocumento', ['id'], [
@ -109,7 +110,7 @@ if (!empty($options['create_document'])) {
echo '
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM co_statidocumento WHERE descrizione IN (\'Emessa\', \'Bozza\')", "value": "'.$stato_predefinito['id'].'"]}
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM `co_statidocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name` IN (\'Emessa\', \'Bozza\')", "value": "'.$stato_predefinito['id'].'"]}
</div>
<div class="col-md-6">

View File

@ -70,20 +70,22 @@ $righe = $dbo->fetchArray(
$ultimo_prezzo_vendita = $dbo->fetchArray(
'SELECT
co_righe_contratti.idarticolo,
co_righe_documenti.prezzo_unitario,
DATE(co_righe_documenti.updated_at) AS updated_at
FROM
co_documenti
INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento = co_documenti.id
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_documenti.idarticolo
INNER JOIN co_righe_contratti ON co_righe_contratti.idarticolo = mg_articoli.id
WHERE
co_documenti.idanagrafica ='.prepare($id_anagrafica).' AND co_righe_documenti.idarticolo ='.prepare($riga['idarticolo']).' AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Emessa" OR descrizione = "Pagato" OR descrizione = "Parzialmente pagato")
GROUP BY
mg_articoli.id, co_righe_documenti.id
ORDER BY
updated_at DESC'
`co_righe_contratti`.`idarticolo`,
`co_righe_documenti`.`prezzo_unitario`,
DATE(`co_righe_documenti`.`updated_at`) AS updated_at
FROM
`co_documenti`
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_documenti`.`idarticolo`
INNER JOIN `co_righe_contratti` ON `co_righe_contratti`.`idarticolo` = `mg_articoli`.`id`
INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).')
WHERE
`co_documenti`.`idanagrafica` ='.prepare($id_anagrafica).' AND `co_righe_documenti`.`idarticolo` ='.prepare($riga['idarticolo']).' AND `co_statidocumento_lang`.`name` IN ("Emessa", "Pagato", "Parzialmente pagato")
GROUP BY
mg_articoli.id, co_righe_documenti.id
ORDER BY
updated_at DESC'
)[0];
?>

View File

@ -71,20 +71,22 @@ $righe = $dbo->fetchArray(
$ultimo_prezzo_vendita = $dbo->fetchArray(
'SELECT
dt_righe_ddt.idarticolo,
co_righe_documenti.prezzo_unitario,
DATE(co_righe_documenti.updated_at) AS updated_at
FROM
co_documenti
INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento = co_documenti.id
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_documenti.idarticolo
INNER JOIN dt_righe_ddt ON dt_righe_ddt.idarticolo = mg_articoli.id
WHERE
co_documenti.idanagrafica ='.prepare($id_anagrafica).' AND co_righe_documenti.idarticolo ='.prepare($riga['idarticolo']).' AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Emessa" OR descrizione = "Pagato" OR descrizione = "Parzialmente pagato")
GROUP BY
mg_articoli.id, co_righe_documenti.id
ORDER BY
updated_at DESC'
`dt_righe_ddt`.`idarticolo`,
`co_righe_documenti`.`prezzo_unitario`,
DATE(`co_righe_documenti`.`updated_at`) AS updated_at
FROM
`co_documenti`
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_documenti`.`idarticolo`
INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idarticolo` = `mg_articoli`.`id`
INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).')
WHERE
`co_documenti`.`idanagrafica` ='.prepare($id_anagrafica).' AND `co_righe_documenti`.`idarticolo` ='.prepare($riga['idarticolo']).' AND `co_statidocumento_lang`.`name` IN ("Emessa", "Pagato", "Parzialmente pagato")
GROUP BY
`mg_articoli`.`id`, `co_righe_documenti`.`id`
ORDER BY
`updated_at` DESC'
)[0];
?>

View File

@ -102,14 +102,15 @@ switch ($op) {
$data_fattura_precedente = $dbo->fetchOne('
SELECT
MAX(DATA) AS datamax
MAX(`data`) AS datamax
FROM
co_documenti
INNER JOIN co_statidocumento ON co_statidocumento.id = co_documenti.idstatodocumento
INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id
INNER JOIN zz_segments ON zz_segments.id = co_documenti.id_segment
`co_documenti`
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = '.setting('Lingua').')
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_documenti`.`id_segment`
WHERE
co_statidocumento.descrizione = "Emessa" AND co_tipidocumento.dir="entrata" AND co_documenti.id_segment='.$fattura->id_segment);
`co_statidocumento_lang`.`name` = "Emessa" AND `co_tipidocumento`.`dir`="entrata" AND `co_documenti`.`id_segment`='.$fattura->id_segment);
if ((setting('Data emissione fattura automatica') == 1) && ($dir == 'entrata') && ($stato->descrizione == 'Emessa') && Carbon::parse($data)->lessThan(Carbon::parse($data_fattura_precedente['datamax'])) && (!empty($data_fattura_precedente['datamax']))) {
$fattura->data = $data_fattura_precedente['datamax'];
@ -311,7 +312,7 @@ switch ($op) {
// Elenco fatture in stato Bozza per il cliente
case 'fatture_bozza':
$id_anagrafica = post('id_anagrafica');
$stato = Stato::where('descrizione', 'Bozza')->first();
$stato = (new Stato())->getByName('Bozza')->id_record;
$fatture = Fattura::vendita()
->where('idanagrafica', $id_anagrafica)
@ -330,8 +331,8 @@ switch ($op) {
// Elenco fatture Scadute per il cliente
case 'fatture_scadute':
$id_anagrafica = post('id_anagrafica');
$stato1 = Stato::where('descrizione', 'Emessa')->first();
$stato2 = Stato::where('descrizione', 'Parzialmente pagato')->first();
$stato1 = (new Stato())->getByName('Emessa')->id_record;
$stato2 = (new Stato())->getByName('Parzialmente pagato')->id_record;
$fatture = Fattura::vendita()
->select('*', 'co_documenti.id AS id', 'co_documenti.data AS data')
@ -404,10 +405,10 @@ switch ($op) {
case 'reopen':
if (!empty($id_record)) {
$stato = Stato::where('descrizione', 'Bozza')->first();
$stato = (new Stato())->getByName('Bozza')->id_record;
$fattura->stato()->associate($stato);
$fattura->save();
$stato = Stato::where('descrizione', 'Emessa')->first();
$stato = (new Stato())->getByName('Emessa')->id_record;
$fattura->stato()->associate($stato);
$fattura->save();
flash()->info(tr('Fattura riaperta!'));

View File

@ -28,11 +28,10 @@ use Modules\Fatture\Stato;
use Plugins\ExportFE\FatturaElettronica;
use Plugins\ExportFE\Interaction;
use Plugins\ReceiptFE\Ricevuta;
use Util\XML;
use Util\Zip;
$anagrafica_azienda = Anagrafica::find(setting('Azienda predefinita'));
$stato_emessa = $dbo->selectOne('co_statidocumento', 'id', ['descrizione' => 'Emessa'])['id'];
$stato_emessa = (new Stato())->getByName('Emessa')->id_record;
$is_fiscale = $dbo->selectOne('zz_segments', 'is_fiscale', ['id' => $_SESSION['module_'.$id_module]])['is_fiscale'];
switch (post('op')) {
@ -185,7 +184,7 @@ switch (post('op')) {
}
// Selezione delle fatture da esportare
$fatture = $dbo->fetchArray('SELECT co_documenti.id, numero_esterno, data, ragione_sociale, co_tipidocumento.descrizione, co_tipidocumento.dir FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id WHERE co_documenti.id IN('.implode(',', $id_records).')');
$fatture = $dbo->fetchArray('SELECT `co_documenti`.`id`, `numero_esterno`, `data`, `ragione_sociale`, `co_tipidocumento`.`descrizione`, `co_tipidocumento`.`dir` FROM `co_documenti` INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica`=`an_anagrafiche`.`idanagrafica` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento`=`co_statidocumento`.`id` WHERE `co_documenti`.`id` IN('.implode(',', $id_records).')');
$failed = [];
$added = 0;
@ -263,7 +262,7 @@ switch (post('op')) {
}
// Selezione delle fatture da esportare
$fatture = $dbo->fetchArray('SELECT co_documenti.id, numero_esterno, data, ragione_sociale, co_tipidocumento.descrizione, co_tipidocumento.dir FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id WHERE co_documenti.id IN('.implode(',', $id_records).')');
$fatture = $dbo->fetchArray('SELECT `co_documenti`.`id`, `numero_esterno`, `data`, `ragione_sociale`, `co_tipidocumento`.`descrizione`, `co_tipidocumento`.`dir` FROM `co_documenti` INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica`=`an_anagrafiche`.`idanagrafica` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento`=`co_statidocumento`.`id` WHERE `co_documenti`.`id` IN('.implode(',', $id_records).')');
$failed = [];
$added = 0;
@ -463,7 +462,7 @@ switch (post('op')) {
case 'change-stato':
$list = [];
$new_stato = Stato::where('descrizione', 'Emessa')->first();
$new_stato = (new Stato())->getByName('Emessa')->id_record;
$fatture = Fattura::vendita()
->whereIn('id', $id_records)
->orderBy('data')
@ -477,14 +476,15 @@ switch (post('op')) {
$data_fattura_precedente = $dbo->fetchOne('
SELECT
MAX(DATA) AS datamax
MAX(`data`) AS datamax
FROM
co_documenti
INNER JOIN co_statidocumento ON co_statidocumento.id = co_documenti.idstatodocumento
INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id
INNER JOIN zz_segments ON zz_segments.id = co_documenti.id_segment
`co_documenti`
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_documenti`.`idstatodocumento` AND `co_statidocumento_lang`.`id_lang` = '.setting('Lingua').')
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_documenti`.`id_segment`
WHERE
co_statidocumento.descrizione = "Emessa" AND co_tipidocumento.dir="entrata" AND co_documenti.id_segment='.$fattura->id_segment);
`co_statidocumento_lang`.`name` = "Emessa" AND `co_tipidocumento`.`dir`="entrata" AND `co_documenti`.`id_segment`='.$fattura->id_segment);
if ((setting('Data emissione fattura automatica') == 1) && ($dir == 'entrata') && Carbon::parse($data)->lessThan(Carbon::parse($data_fattura_precedente['datamax'])) && (!empty($data_fattura_precedente['datamax']))) {
$fattura->data = $data_fattura_precedente['datamax'];
@ -576,7 +576,7 @@ switch (post('op')) {
$documento = Fattura::find($id);
++$count;
if ($documento->stato->descrizione == 'Bozza') {
if ($documento->stato->name == 'Bozza') {
$documento->id_segment = post('id_segment');
$documento->save();
++$n_doc;

View File

@ -153,7 +153,7 @@ if (!empty($fattura->ref_documento) && $fattura->isNota()) {
}
// Ricordo che si sta emettendo una fattura conto terzi
if ($dir == 'entrata' && $fattura->stato->descrizione == 'Bozza') {
if ($dir == 'entrata' && $fattura->stato->name == 'Bozza') {
if ($fattura->is_fattura_conto_terzi) {
echo '
<div class="alert alert-info">
@ -239,19 +239,19 @@ if ($dir == 'entrata') {
<?php
$query = 'SELECT *, colore AS _bgcolor_ FROM co_statidocumento';
$query = 'SELECT *, `colore` AS _bgcolor_, `co_statidocumento_lang`.`name` as descrizione FROM `co_statidocumento` LEFT JOIN `co_statidocumento` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).')';
if (empty($record['is_fiscale'])) {
$query .= " WHERE descrizione = 'Bozza'";
$query .= " WHERE `name` = 'Bozza'";
$plugin = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Fatturazione Elettronica' AND idmodule_to = ".prepare($id_module));
echo '<script>$("#link-tab_'.$plugin[0]['id'].'").addClass("disabled");</script>';
}
// Forzo il passaggio della fattura da Bozza ad Emessa per il corretto calcolo del numero.
elseif ($record['stato'] == 'Bozza') {
$query .= " WHERE descrizione IN ('Emessa', 'Bozza')";
$query .= " WHERE `name` IN ('Emessa', 'Bozza')";
}
$query .= ' ORDER BY descrizione';
$query .= ' ORDER BY `name`';
?>
<?php if ($dir == 'entrata') {
@ -709,7 +709,7 @@ if ($dir == 'entrata' && !empty($fattura->dichiarazione)) {
$descrizione_iva_accettata .= '<li>'.Aliquota::find($iva_accettata->id)->name.'</li>';
}
if ($fattura->stato->descrizione == 'Bozza') {
if ($fattura->stato->name == 'Bozza') {
echo '
<div class="alert alert-info">
<i class="fa fa-info"></i> '.tr("La fattura è collegata ad una dichiarazione d'intento con diponibilità residura pari a _MONEY_.", ['_MONEY_' => moneyFormat($diff)]).'<br>'.tr('Per collegare una riga alla dichiarazione è sufficiente specificare come IVA <ul>_IVA_</ul>', ['_IVA_' => $descrizione_iva_accettata]).'</b>

View File

@ -44,7 +44,7 @@ if (isset($id_record)) {
`co_documenti`.`idpagamento`,
`co_documenti`.`id` AS iddocumento,
`co_documenti`.`split_payment` AS split_payment,
`co_statidocumento`.`descrizione` AS `stato`,
`co_statidocumento_lang`.`name` AS `stato`,
`co_tipidocumento`.`descrizione` AS `descrizione_tipo`,
`co_tipidocumento`.`id` AS `idtipodocumento`,
(SELECT `is_fiscale` FROM `zz_segments` WHERE `zz_segments`.`id` = `co_documenti`.`id_segment`) AS is_fiscale,
@ -53,6 +53,7 @@ if (isset($id_record)) {
(SELECT `descrizione` FROM `dt_causalet` WHERE `id`=`idcausalet`) AS causale_desc
FROM `co_documenti`
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento`=`co_statidocumento`.`id`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).')
INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id`
LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento`=`co_pagamenti`.`id`

View File

@ -71,19 +71,21 @@ $righe = $dbo->fetchArray(
$ultimo_prezzo_vendita = $dbo->fetchArray(
'SELECT
co_righe_documenti.idarticolo,
co_righe_documenti.prezzo_unitario,
DATE(co_righe_documenti.updated_at) AS updated_at
FROM
co_documenti
LEFT JOIN co_righe_documenti ON co_righe_documenti.iddocumento = co_documenti.id
LEFT JOIN mg_articoli ON mg_articoli.id = co_righe_documenti.idarticolo
WHERE
co_documenti.idanagrafica = '.prepare($id_anagrafica).' AND co_righe_documenti.idarticolo = '.prepare($riga['idarticolo']).' AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Emessa" OR descrizione = "Pagato" OR descrizione = "Parzialmente pagato")
GROUP BY
mg_articoli.id, co_righe_documenti.id
ORDER BY
updated_at DESC'
`co_righe_documenti`.`idarticolo`,
`co_righe_documenti`.`prezzo_unitario`,
DATE(`co_righe_documenti`.`updated_at`) AS updated_at
FROM
`co_documenti`
LEFT JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
LEFT JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_documenti`.`idarticolo`
INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `co_statidocumento_lang` ON `co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).'
WHERE
`co_documenti`.`idanagrafica` = '.prepare($id_anagrafica).' AND `co_righe_documenti`.`idarticolo` = '.prepare($riga['idarticolo']).' AND `co_statidocumento_lang`.`name` IN ("Emessa", "Pagato", "Parzialmente pagato")
GROUP BY
`mg_articoli`.`id`, `co_righe_documenti`.`id`
ORDER BY
`updated_at` DESC'
)[0];
?>

View File

@ -265,13 +265,11 @@ if (!function_exists('aggiungi_movimento')) {
}
// Lettura info fattura
$query = 'SELECT *, co_documenti.data_competenza, co_documenti.note, co_documenti.idpagamento, co_documenti.id AS iddocumento, co_statidocumento.descrizione AS `stato`, co_tipidocumento.descrizione AS `descrizione_tipo` FROM ((co_documenti LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento);
$query = 'SELECT *, `co_documenti`.`data_competenza`, `co_documenti`.`note`, `co_documenti`.`idpagamento`, `co_documenti`.`id` AS iddocumento, `co_statidocumento_lang`.`name` AS `stato`, `co_tipidocumento`.`descrizione` AS descrizione_tipo FROM ((`co_documenti` LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento`=`co_statidocumento`.`id`) INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`) INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` WHERE `co_documenti`.`id`='.prepare($iddocumento);
$rs = $dbo->fetchArray($query);
$n = sizeof($rs);
$data = $rs[0]['data_competenza'];
$idanagrafica = $rs[0]['idanagrafica'];
$ragione_sociale = $rs[0]['ragione_sociale'];
$stato = $rs[0]['stato'];
$idmastrino = get_new_idmastrino();

View File

@ -96,7 +96,7 @@ class Fattura extends Document
$database = database();
// Individuazione dello stato predefinito per il documento
$stato_documento = Stato::where('descrizione', 'Bozza')->first();
$stato_documento = (new Stato())->getByName('Bozza')->id_record;
$direzione = $tipo_documento->dir;
// Conto predefinito sulla base del flusso di denaro
@ -249,7 +249,7 @@ class Fattura extends Document
$this->numero = static::getNextNumero($data, $direzione, $value);
if ($this->stato->descrizione == 'Bozza') {
if ($this->stato->name == 'Bozza') {
$this->numero_esterno = null;
} elseif (!empty($previous)) {
$this->numero_esterno = static::getNextNumeroSecondario($data, $direzione, $value);
@ -719,7 +719,7 @@ class Fattura extends Document
$new->id_ricevuta_principale = null;
// Spostamento dello stato
$stato = Stato::where('descrizione', 'Bozza')->first();
$stato = (new Stato())->getByName('Bozza')->id_record;
$new->stato()->associate($stato);
return $new;

View File

@ -32,4 +32,34 @@ class Stato extends Model
{
return $this->hasMany(Fattura::class, 'idstatodocumento');
}
/**
* Ritorna l'attributo name dello stato fattura.
*
* @return string
*/
public function getNameAttribute()
{
return database()->table($this->table.'_lang')
->select('name')
->where('id_record', '=', $this->id)
->where('id_lang', '=', setting('Lingua'))
->first()->name;
}
/**
* Ritorna l'id dello stato fattura a partire dal nome.
*
* @param string $name il nome da ricercare
*
* @return \Illuminate\Support\Collection
*/
public function getByName($name)
{
return database()->table($this->table.'_lang')
->select('id_record')
->where('name', '=', $name)
->where('id_lang', '=', setting('Lingua'))
->first();
}
}

View File

@ -31,7 +31,7 @@ switch ($op) {
if (!$contratti->isEmpty()) {
foreach ($contratti as $contratto) {
echo '
<li>'.$contratto->getReference().' ['.$contratto->stato->descrizione.']: '.dateFormat($contratto->data_accettazione).' - '.dateFormat($contratto->data_conclusione).'</li>';
<li>'.$contratto->getReference().' ['.$contratto->stato->name.']: '.dateFormat($contratto->data_accettazione).' - '.dateFormat($contratto->data_conclusione).'</li>';
}
} else {
echo '

View File

@ -165,7 +165,7 @@ switch (post('op')) {
if (empty($id_documento)) {
if (!empty($accodare)) {
$where = $raggruppamento == 'sede' ? ' AND idsede_destinazione = '.prepare($intervento['idsede_destinazione']) : '';
$documento = $dbo->fetchOne('SELECT co_documenti.id FROM co_documenti INNER JOIN co_statidocumento ON co_documenti.idstatodocumento = co_statidocumento.id INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento INNER JOIN zz_segments ON zz_segments.id = co_documenti.id_segment WHERE co_statidocumento.descrizione = "Bozza" AND co_documenti.idanagrafica = '.prepare($id_anagrafica).' AND co_tipidocumento.id='.prepare($tipo_documento['id']).' AND co_documenti.id_segment = '.prepare($id_segment).$where);
$documento = $dbo->fetchOne('SELECT `co_documenti`.`id` FROM `co_documenti` INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` LEFT JOIN `co_statidocumenti_lang` ON (`co_statidocumenti`.`id` = `co_statidocumenti_lang`.`id_record` AND `co_statidocumenti_lang`.`id_lang` = "'.prepare(setting('Lingua')).'") INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_documenti`.`id_segment` WHERE `co_statidocumento_lang`.`name` = "Bozza" AND `co_documenti`.`idanagrafica` = '.prepare($id_anagrafica).' AND co_tipidocumento.id='.prepare($tipo_documento['id']).' AND `co_documenti`.`id_segment` = '.prepare($id_segment).$where);
$id_documento = $documento['id'];
$id_documento_cliente[$id_anagrafica] = $id_documento;

View File

@ -858,7 +858,7 @@ $(document).ready(function() {
// Collegamenti diretti
// Fatture collegate a questo intervento
$elementi = $dbo->fetchArray('SELECT `co_documenti`.*, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_statidocumento`.`descrizione` AS stato_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idintervento` = '.prepare($id_record).') ORDER BY `data`');
$elementi = $dbo->fetchArray('SELECT `co_documenti`.*, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_statidocumento_lang`.`name` AS stato_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`idstatodocumento` = `co_documenti`.`idstatodocumento` AND `co_statidocumento_lang`.`lang` = "'.prepare(setting('Lingua')).'") WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idintervento` = '.prepare($id_record).') ORDER BY `data`');
if (!empty($elementi)) {
echo '

View File

@ -71,20 +71,22 @@ $righe = $dbo->fetchArray(
$ultimo_prezzo_vendita = $dbo->fetchArray(
'SELECT
in_righe_interventi.idarticolo,
co_righe_documenti.prezzo_unitario,
DATE(co_righe_documenti.updated_at) AS updated_at
FROM
co_documenti
INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento = co_documenti.id
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_documenti.idarticolo
INNER JOIN in_righe_interventi ON in_righe_interventi.idarticolo = mg_articoli.id
WHERE
co_documenti.idanagrafica ='.prepare($id_anagrafica).' AND co_righe_documenti.idarticolo ='.prepare($riga['idarticolo']).' AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Emessa" OR descrizione = "Pagato" OR descrizione = "Parzialmente pagato")
GROUP BY
mg_articoli.id, co_righe_documenti.id
ORDER BY
updated_at DESC'
`in_righe_interventi`.`idarticolo`,
`co_righe_documenti`.`prezzo_unitario`,
DATE(`co_righe_documenti`.`updated_at`) AS updated_at
FROM
`co_documenti`
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_documenti`.`idarticolo`
INNER JOIN `in_righe_interventi` ON `in_righe_interventi`.`idarticolo` = `mg_articoli`.`id`
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`idstatodocumento` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`lang` = "'.prepare(setting('Lingua')).'")
WHERE
`co_documenti`.`idanagrafica` ='.prepare($id_anagrafica).' AND `co_righe_documenti`.`idarticolo` ='.prepare($riga['idarticolo']).' AND `co_statidocumento_lang`.`name` IN ("Emessa", "Pagato", "Parzialmente pagato")
GROUP BY
`mg_articoli`.`id`, `co_righe_documenti`.`id`
ORDER BY
`updated_at` DESC'
)[0];
?>

View File

@ -71,20 +71,22 @@ $righe = $dbo->fetchArray(
$ultimo_prezzo_vendita = $dbo->fetchArray(
'SELECT
or_righe_ordini.idarticolo,
co_righe_documenti.prezzo_unitario,
DATE(co_righe_documenti.updated_at) AS updated_at
FROM
co_documenti
INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento = co_documenti.id
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_documenti.idarticolo
INNER JOIN or_righe_ordini ON or_righe_ordini.idarticolo = mg_articoli.id
WHERE
co_documenti.idanagrafica ='.prepare($id_anagrafica).' AND co_righe_documenti.idarticolo ='.prepare($riga['idarticolo']).' AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Emessa" OR descrizione = "Pagato" OR descrizione = "Parzialmente pagato")
GROUP BY
mg_articoli.id, co_righe_documenti.id
ORDER BY
updated_at DESC'
`or_righe_ordini`.`idarticolo`,
`co_righe_documenti`.`prezzo_unitario`,
DATE(`co_righe_documenti`.`updated_at`) AS updated_at
FROM
`co_documenti`
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_documenti`.`idarticolo`
INNER JOIN `or_righe_ordini` ON `or_righe_ordini`.`idarticolo` = `mg_articoli`.`id`
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`idstatodocumento` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`lang` = "'.prepare(setting('Lingua')).'")
WHERE
`co_documenti`.`idanagrafica` ='.prepare($id_anagrafica).' AND `co_righe_documenti`.`idarticolo` ='.prepare($riga['idarticolo']).' AND `co_statidocumento_lang`.`name` IN ("Emessa", "Pagato", "Parzialmente pagato")
GROUP BY
`mg_articoli`.`id`, `co_righe_documenti`.`id`
ORDER BY
`updated_at` DESC'
)[0];
?>

View File

@ -69,20 +69,22 @@ $righe = $dbo->fetchArray(
$ultimo_prezzo_vendita = $dbo->fetchArray(
'SELECT
co_righe_preventivi.idarticolo,
co_righe_documenti.prezzo_unitario,
DATE(co_righe_documenti.updated_at) AS updated_at
`co_righe_preventivi`.`idarticolo`,
`co_righe_documenti`.`prezzo_unitario`,
DATE(`co_righe_documenti`.`updated_at`) AS updated_at
FROM
co_documenti
INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento = co_documenti.id
INNER JOIN mg_articoli ON mg_articoli.id = co_righe_documenti.idarticolo
INNER JOIN co_righe_preventivi ON co_righe_preventivi.idarticolo = mg_articoli.id
`co_documenti`
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_documenti`.`idarticolo`
INNER JOIN `co_righe_preventivi` ON `co_righe_preventivi`.`idarticolo` = `mg_articoli`.`id`
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).')
WHERE
co_documenti.idanagrafica ='.prepare($id_anagrafica).' AND co_righe_documenti.idarticolo ='.prepare($riga['idarticolo']).' AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Emessa" OR descrizione = "Pagato" OR descrizione = "Parzialmente pagato")
`co_documenti`.`idanagrafica` ='.prepare($id_anagrafica).' AND `co_righe_documenti`.`idarticolo` ='.prepare($riga['idarticolo']).' AND `co_statidocumento_lang`.`name` IN ("Emessa", "Pagato", "Parzialmente pagato")
GROUP BY
mg_articoli.id, co_righe_documenti.id
`mg_articoli`.`id`, `co_righe_documenti`.`id`
ORDER BY
updated_at DESC'
`updated_at` DESC'
)[0];
?>

View File

@ -271,7 +271,7 @@ class Preventivo extends Document
$descrizione = $parziale ? 'Parzialmente fatturato' : 'Fatturato';
$codice_intervento = 'FAT';
} else {
$descrizione = $this->stato->descrizione;
$descrizione = $this->stato->name;
$codice_intervento = 'OK';
}

View File

@ -121,7 +121,7 @@ foreach ($id_documenti as $id_documento) {
$dir = $fattura->direzione;
// Inclusione delle sole fatture in stato Emessa, Parzialmente pagato o Pagato
if (!in_array($fattura->stato->descrizione, ['Emessa', 'Parzialmente pagato', 'Pagato'])) {
if (!in_array($fattura->stato->name, ['Emessa', 'Parzialmente pagato', 'Pagato'])) {
++$counter;
continue;
}
@ -243,9 +243,9 @@ if ($numero_documenti + $numero_scadenze > 1) {
if (!empty($id_records) && get('origine') == 'fatture' && !empty($counter)) {
$descrizione_stati = [];
$stati = $database->fetchArray("SELECT * FROM `co_statidocumento` WHERE descrizione IN ('Emessa', 'Parzialmente pagato', 'Pagato') ORDER BY descrizione");
$stati = $database->fetchArray("SELECT * FROM `co_statidocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = '".prepare(setting('Lingua'))."') WHERE `name` IN ('Emessa', 'Parzialmente pagato', 'Pagato') ORDER BY `name`");
foreach ($stati as $stato) {
$descrizione_stati[] = '<i class="'.$stato['icona'].'"></i> <small>'.$stato['descrizione'].'</small>';
$descrizione_stati[] = '<i class="'.$stato['icona'].'"></i> <small>'.$stato['name'].'</small>';
}
echo '

View File

@ -157,7 +157,7 @@ class Mastrino extends Model
$stato = 'Emessa';
}
$database->query('UPDATE co_documenti SET idstatodocumento = (SELECT id FROM co_statidocumento WHERE descrizione = '.prepare($stato).') WHERE id = '.prepare($id_documento));
$database->query('UPDATE `co_documenti` SET `idstatodocumento` = (SELECT `co_statidocumento`.`id` FROM `co_statidocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = "'.prepare(setting('Lingua')).'") WHERE `name` = '.prepare($stato).') WHERE id = '.prepare($id_documento));
}
}

View File

@ -22,11 +22,14 @@ include_once __DIR__.'/../../core.php';
switch (post('op')) {
case 'update':
$dbo->update('co_statidocumento', [
'descrizione' => (count($dbo->fetchArray('SELECT descrizione FROM co_statidocumento WHERE descrizione = '.prepare(post('descrizione')))) > 0) ? $dbo->fetchOne('SELECT descrizione FROM co_statidocumento WHERE id ='.$id_record)['descrizione'] : post('descrizione'),
'icona' => post('icona'),
'colore' => post('colore'),
], ['id' => $id_record]);
$dbo->update('co_statidocumento_lang', [
'name' => post('descrizione'),
], ['id_record' => $id_record]);
flash()->info(tr('Informazioni salvate correttamente.'));
break;

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM co_statidocumento WHERE id='.prepare($id_record));
$record = $dbo->fetchOne('SELECT * FROM `co_statidocumento` LEFT JOIN (`co_statidocumento_lang`) ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_statidocumento`.`id`='.prepare($id_record));
}

View File

@ -176,9 +176,50 @@ function init_calendar(calendar) {
</script>';
// Clienti top
$clienti = $dbo->fetchArray('SELECT SUM(IF(reversed=1, -(co_righe_documenti.subtotale - co_righe_documenti.sconto), (co_righe_documenti.subtotale - co_righe_documenti.sconto))) AS totale, (SELECT COUNT(*) FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN zz_segments ON co_documenti.id_segment=zz_segments.id WHERE co_documenti.idanagrafica = an_anagrafiche.idanagrafica AND co_documenti.data BETWEEN '.prepare($start).' AND '.prepare($end)." AND co_tipidocumento.dir='entrata' AND zz_segments.autofatture=0) AS qta, an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM co_documenti INNER JOIN co_statidocumento ON co_statidocumento.id = co_documenti.idstatodocumento INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica INNER JOIN zz_segments ON co_documenti.id_segment=zz_segments.id WHERE co_tipidocumento.dir='entrata' AND (co_statidocumento.descrizione = 'Pagato' OR co_statidocumento.descrizione = 'Parzialmente pagato' OR co_statidocumento.descrizione = 'Emessa') AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' AND zz_segments.autofatture=0 GROUP BY an_anagrafiche.idanagrafica ORDER BY totale DESC LIMIT 20');
$clienti = $dbo->fetchArray('SELECT
SUM(IF(`reversed`=1, - (`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`), (`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`))) AS totale,
(SELECT
COUNT(*)
FROM
`co_documenti`
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id`
INNER JOIN `zz_segments` ON `co_documenti`.`id_segment`=`zz_segments`.`id`
WHERE
`co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` AND `co_documenti`.`data` BETWEEN '.prepare($start).' AND '.prepare($end)." AND `co_tipidocumento`.`dir`='entrata' AND `zz_segments`.`autofatture`=0) AS qta,
`an_anagrafiche`.`idanagrafica`,
`an_anagrafiche`.`ragione_sociale`
FROM
`co_documenti`
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = ".prepare(setting('Lingua')).")
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id`
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento`=`co_documenti`.`id`
INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`co_documenti`.`idanagrafica`
INNER JOIN `zz_segments` ON `co_documenti`.`id_segment`=`zz_segments`.`id`
WHERE
`co_tipidocumento`.`dir`='entrata'
AND `co_statidocumento_lang`.`name` IN('Pagato', 'Parzialmente pagato', 'Emessa')
AND `co_documenti`.`data` BETWEEN ".prepare($start).' AND '.prepare($end).'
AND `zz_segments`.`autofatture`=0
GROUP BY
`an_anagrafiche`.`idanagrafica`
ORDER BY
`totale` DESC LIMIT 20');
$totale = $dbo->fetchArray("SELECT SUM(IF(reversed=1, -(co_righe_documenti.subtotale - co_righe_documenti.sconto), (co_righe_documenti.subtotale - co_righe_documenti.sconto))) AS totale FROM co_documenti INNER JOIN co_statidocumento ON co_statidocumento.id = co_documenti.idstatodocumento INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN zz_segments ON co_documenti.id_segment=zz_segments.id WHERE (co_statidocumento.descrizione = 'Pagato' OR co_statidocumento.descrizione = 'Parzialmente pagato' OR co_statidocumento.descrizione = 'Emessa') AND co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' AND zz_segments.autofatture=0');
$totale = $dbo->fetchArray("SELECT
SUM(IF(`reversed`=1, -(`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`), (`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`))) AS totale
FROM
`co_documenti`
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = ".prepare(setting('Lingua')).")
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id`
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento`=`co_documenti`.`id`
INNER JOIN `zz_segments` ON `co_documenti`.`id_segment`=`zz_segments`.`id`
WHERE
`co_statidocumento_lang`.`name` IN ('Pagato', 'Parzialmente pagato', 'Emessa')
AND `co_tipidocumento`.`dir`='entrata'
AND `co_documenti`.`data` BETWEEN ".prepare($start).' AND '.prepare($end).'
AND `zz_segments`.`autofatture`=0');
echo '
<div class="row">
@ -225,9 +266,47 @@ echo '
</div>';
// Articoli più venduti
$articoli = $dbo->fetchArray("SELECT SUM(IF(reversed=1, -co_righe_documenti.qta, co_righe_documenti.qta)) AS qta, SUM(IF(reversed=1, -(co_righe_documenti.subtotale - co_righe_documenti.sconto), (co_righe_documenti.subtotale - co_righe_documenti.sconto))) AS totale, mg_articoli.id, mg_articoli.codice, mg_articoli.descrizione, mg_articoli.um FROM co_documenti INNER JOIN co_statidocumento ON co_statidocumento.id = co_documenti.idstatodocumento INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN mg_articoli ON mg_articoli.id=co_righe_documenti.idarticolo INNER JOIN zz_segments ON co_documenti.id_segment=zz_segments.id WHERE co_tipidocumento.dir='entrata' AND (co_statidocumento.descrizione = 'Pagato' OR co_statidocumento.descrizione = 'Parzialmente pagato' OR co_statidocumento.descrizione = 'Emessa') AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' AND zz_segments.autofatture=0 GROUP BY co_righe_documenti.idarticolo ORDER BY qta DESC LIMIT 20');
$articoli = $dbo->fetchArray("SELECT
SUM(IF(`reversed`=1, -`co_righe_documenti`.`qta`, `co_righe_documenti`.`qta`)) AS qta,
SUM(IF(`reversed`=1, -(`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`), (`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`))) AS totale,
`mg_articoli`.`id`,
`mg_articoli`.`codice`,
`mg_articoli`.`descrizione`,
`mg_articoli`.`um`
FROM
`co_documenti`
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
LEFT JOIN `co_statidocumento_lang` ON `co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '".setting('Lingua')."'
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id`
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento`=`co_documenti`.`id`
INNER JOIN `mg_articoli` ON `mg_articoli`.`id`=`co_righe_documenti`.`idarticolo`
INNER JOIN `zz_segments` ON `co_documenti`.`id_segment`=`zz_segments`.`id`
WHERE
`co_tipidocumento`.`dir`='entrata'
AND `co_statidocumento_lang`.`name` IN ('Pagato', 'Parzialmente pagato', 'Emessa')
AND `co_documenti`.`data` BETWEEN ".prepare($start).' AND '.prepare($end).'
AND `zz_segments`.`autofatture`=0
GROUP BY
`co_righe_documenti`.`idarticolo`
ORDER BY
`qta` DESC LIMIT 20');
$totale = $dbo->fetchArray("SELECT SUM(IF(reversed=1, -co_righe_documenti.qta, co_righe_documenti.qta)) AS totale_qta, SUM(IF(reversed=1, -(co_righe_documenti.subtotale - co_righe_documenti.sconto), (co_righe_documenti.subtotale - co_righe_documenti.sconto))) AS totale FROM co_documenti INNER JOIN co_statidocumento ON co_statidocumento.id = co_documenti.idstatodocumento INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN mg_articoli ON mg_articoli.id=co_righe_documenti.idarticolo INNER JOIN zz_segments ON co_documenti.id_segment=zz_segments.id WHERE co_tipidocumento.dir='entrata' AND (co_statidocumento.descrizione = 'Pagato' OR co_statidocumento.descrizione = 'Parzialmente pagato' OR co_statidocumento.descrizione = 'Emessa') AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' AND zz_segments.autofatture=0');
$totale = $dbo->fetchArray("SELECT
SUM(IF(`reversed`=1, - `co_righe_documenti`.`qta`, `co_righe_documenti`.`qta`)) AS totale_qta,
SUM(IF(`reversed`=1, - (`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`), (`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`))) AS totale
FROM
`co_documenti`
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
LEFT JOIN `co_statidocumento_lang` ON `co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '".setting('Lingua')."'
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id`
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento`=`co_documenti`.`id`
INNER JOIN `mg_articoli` ON `mg_articoli`.`id`=`co_righe_documenti`.`idarticolo`
INNER JOIN `zz_segments` ON `co_documenti`.`id_segment`=`zz_segments`.`id`
WHERE
`co_tipidocumento`.`dir`='entrata'
AND `co_statidocumento_lang`.name IN ('Pagato', 'Parzialmente pagato', 'Emessa')
AND `co_documenti`.`data` BETWEEN ".prepare($start).' AND '.prepare($end)."
AND `zz_segments`.`autofatture`=0");
echo '
<div class="col-md-6">

View File

@ -26,7 +26,7 @@ use Util\XML;
if ($fattura !== null) {
/* Per le PA EC02 e EC01 sono dei stati successivi a NE il quale a sua volta è successivo a RC. EC01 e EC02 sono definiti all'interno della ricevuta di NE che di fatto indica il rifiuto o l'accettazione. */
$stato_fe = $database->fetchOne('SELECT * FROM fe_stati_documento WHERE codice = '.prepare($fattura->codice_stato_fe));
$abilita_genera = $fattura->stato->descrizione != 'Bozza' && (empty($fattura->codice_stato_fe) || intval($stato_fe['is_generabile']));
$abilita_genera = $fattura->stato->name != 'Bozza' && (empty($fattura->codice_stato_fe) || intval($stato_fe['is_generabile']));
$ricevuta_principale = $fattura->getRicevutaPrincipale();
if (!empty($fattura_pa)) {

View File

@ -67,7 +67,7 @@ class FatturaElettronica
// Controllo sulla possibilità di creare la fattura elettronica
// Posso fatturare ai privati utilizzando il codice fiscale
if ($this->documento->stato->descrizione == 'Bozza') {
if ($this->documento->stato->name == 'Bozza') {
throw new \UnexpectedValueException();
}
}
@ -424,7 +424,7 @@ class FatturaElettronica
$errors = [];
// Controlli sulla fattura stessa
if ($fattura->stato->descrizione == 'Bozza') {
if ($fattura->stato->name == 'Bozza') {
$missing = [
'state' => tr('Stato ("Emessa")'),
];

View File

@ -148,7 +148,7 @@ switch (filter('op')) {
$fattura_pa->delete();
$fattura = Fattura::find($id_fattura);
$id_autofattura = post('autofattura');
$new_stato = Stato::where('descrizione', 'Pagato')->first();
$new_stato = (new Stato())->getByName('Pagato')->id_record;
if ($fattura->isAutofattura() && !empty($id_autofattura)) {
$autofattura_collegata = Fattura::find($id_autofattura);

View File

@ -255,15 +255,15 @@ echo '
if (!empty($anagrafica)) {
$query = "SELECT
co_documenti.id,
CONCAT('Fattura num. ', co_documenti.numero_esterno, ' del ', DATE_FORMAT(co_documenti.data, '%d/%m/%Y')) AS descrizione
FROM co_documenti
INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento
`co_documenti`.`id`,
CONCAT('Fattura num. ', `co_documenti`.`numero_esterno`, ' del ', DATE_FORMAT(`co_documenti`.`data`, '%d/%m/%Y')) AS descrizione
FROM `co_documenti`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
co_tipidocumento.dir = 'uscita' AND
(co_documenti.data BETWEEN NOW() - INTERVAL 1 YEAR AND NOW()) AND
co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione != 'Bozza') AND
co_documenti.idanagrafica = ".prepare($anagrafica->id);
`co_tipidocumento`.`dir` = 'uscita' AND
(`co_documenti`.`data` BETWEEN NOW() - INTERVAL 1 YEAR AND NOW()) AND
`co_documenti`.`idstatodocumento` IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` != 'Bozza') AND
`co_documenti`.`idanagrafica` = ".prepare($anagrafica->id);
// Riferimenti ad altre fatture
if (in_array($dati_generali['TipoDocumento'], ['TD04', 'TD05'])) {
@ -280,16 +280,16 @@ if (!empty($anagrafica)) {
</div>';
} elseif ($is_autofattura) {
$query = "SELECT
co_documenti.id,
CONCAT('Fattura num. ', co_documenti.numero_esterno, ' del ', DATE_FORMAT(co_documenti.data, '%d/%m/%Y')) AS descrizione
FROM co_documenti
INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento
`co_documenti`.`id`,
CONCAT('Fattura num. ', `co_documenti`.`numero_esterno`, ' del ', DATE_FORMAT(`co_documenti`.`data`, '%d/%m/%Y')) AS descrizione
FROM `co_documenti`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
co_tipidocumento.dir = 'entrata' AND
co_tipidocumento.codice_tipo_documento_fe IN('TD16', 'TD17', 'TD18', 'TD19', 'TD20', 'TD21', 'TD28') AND
(co_documenti.data BETWEEN NOW() - INTERVAL 1 YEAR AND NOW()) AND
co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione != 'Bozza') AND
co_documenti.idanagrafica = ".prepare($anagrafica->id);
`co_tipidocumento`.`dir` = 'entrata' AND
`co_tipidocumento`.`codice_tipo_documento_fe` IN('TD16', 'TD17', 'TD18', 'TD19', 'TD20', 'TD21', 'TD28') AND
(`co_documenti`.`data` BETWEEN NOW() - INTERVAL 1 YEAR AND NOW()) AND
`co_documenti`.`idstatodocumento` IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` != 'Bozza') AND
`co_documenti`.`idanagrafica` = ".prepare($anagrafica->id);
$autofattura_collegata = Fattura::where('progressivo_invio', '=', $fattura_pa->getHeader()['DatiTrasmissione']['ProgressivoInvio'])->first();

View File

@ -169,7 +169,7 @@ switch ($operazione) {
$tipo = Tipo::find(post('idtipodocumento'));
if (!empty($accodare)) {
$documento = $dbo->fetchOne('SELECT co_documenti.id FROM co_documenti INNER JOIN co_statidocumento ON co_documenti.idstatodocumento = co_statidocumento.id WHERE co_statidocumento.descrizione = \'Bozza\' AND idanagrafica = '.prepare($contratto->idanagrafica));
$documento = $dbo->fetchOne('SELECT `co_documenti`.`id` FROM `co_documenti` INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = "'.prepare(setting('Lingua')).'") WHERE `co_statidocumento`.`name` = \'Bozza\' AND `idanagrafica` = '.prepare($contratto->idanagrafica));
$id_documento = $documento['id'];
}
@ -219,8 +219,7 @@ switch ($operazione) {
$contratto = $pianificazione->contratto;
if (!empty($accodare)) {
$documento = $dbo->fetchOne(
'SELECT co_documenti.id FROM co_documenti INNER JOIN co_statidocumento ON co_documenti.idstatodocumento = co_statidocumento.id
WHERE co_statidocumento.descrizione = \'Bozza\' AND idanagrafica = '.prepare($contratto->idanagrafica)
'SELECT `co_documenti`.`id` FROM `co_documenti` INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_statidocumento_lang`.`name` = \'Bozza\' AND `idanagrafica` = '.prepare($contratto->idanagrafica)
);
$id_documento = $documento['id'];

View File

@ -83,7 +83,7 @@ if (!$pianificazioni->isEmpty()) {
'.Modules::link('Fatture di vendita', $fattura->id, tr('Fattura num. _NUM_ del _DATE_', [
'_NUM_' => $fattura->numero_esterno,
'_DATE_' => dateFormat($fattura->data),
])).' (<i class="'.$fattura->stato->icona.'"></i> '.$fattura->stato->descrizione.')';
])).' (<i class="'.$fattura->stato->icona.'"></i> '.$fattura->stato->name.')';
} else {
echo '
<i class="fa fa-hourglass-start"></i> '.tr('Non ancora fatturato');

View File

@ -243,8 +243,8 @@ class Ricevuta
// Correzione eventuale per lo stato della fattura in Bozza
$fattura = $this->getFattura();
if ($fattura->stato->descrizione == 'Bozza') {
$stato_emessa = Stato::where('descrizione', 'Emessa')->first();
if ($fattura->stato->name == 'Bozza') {
$stato_emessa = (new Stato())->getByName('Emessa')->id_record;
$fattura->stato()->associate($stato_emessa);
$fattura->save();
}

View File

@ -42,7 +42,7 @@ switch ($operazione) {
$fattura = Fattura::find($id_record);
if ($fattura->stato->descrizione != 'Bozza') {
if ($fattura->stato->name != 'Bozza') {
$fattura->gestoreMovimenti = new GestoreMovimenti($fattura);
$fattura->gestoreMovimenti->registra();
}

View File

@ -157,7 +157,7 @@ if (!empty($interventi)) {
</tr>
<tr>
<td colspan="2" class="text-left" >'.tr('Tipo').': <b>'.$intervento->tipo->descrizione.'</b></td>
<td colspan="2" class="text-left" >'.tr('stato').': <b>'.$intervento->stato->descrizione.'</b></td>
<td colspan="2" class="text-left" >'.tr('stato').': <b>'.$intervento->stato->name.'</b></td>
</tr>
<tr>
<td colspan="4" class="text-left" >'.tr('richiesta').': <b>'.$intervento->richiesta.'</b></td>

View File

@ -38,7 +38,7 @@ $raggruppamenti = $dbo->fetchArray('
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = '.prepare($dir).' AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
`co_tipidocumento`.`dir` = '.prepare($dir).' AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` = "Bozza" OR `name` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`periodo`
ORDER BY

View File

@ -64,7 +64,7 @@ if (!empty($vendita_banco)) {
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
@ -118,7 +118,7 @@ if (!empty($vendita_banco)) {
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
@ -170,7 +170,7 @@ if (!empty($vendita_banco)) {
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
GROUP BY
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
@ -222,7 +222,7 @@ if (!empty($vendita_banco)) {
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
GROUP BY
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
@ -267,7 +267,7 @@ else {
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
@ -286,7 +286,7 @@ else {
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
@ -305,7 +305,7 @@ else {
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY aliquota desc');
@ -324,7 +324,7 @@ else {
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
@ -344,7 +344,7 @@ $iva_vendite_nonesigibile = $dbo->fetchArray('
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 1 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 1 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
@ -363,7 +363,7 @@ $iva_acquisti_detraibile = $dbo->fetchArray('
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND `co_iva`.`indetraibile` != 100
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND `co_iva`.`indetraibile` != 100
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
@ -382,7 +382,7 @@ $iva_acquisti_nondetraibile = $dbo->fetchArray('
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND `co_iva`.`indetraibile` != 0
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND `co_iva`.`indetraibile` != 0
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
@ -401,7 +401,7 @@ $iva_acquisti = $dbo->fetchArray('
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
@ -420,7 +420,7 @@ $iva_acquisti_anno_precedente = $dbo->fetchArray('
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
@ -439,7 +439,7 @@ $iva_acquisti_periodo_precedente = $dbo->fetchArray('
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');

View File

@ -24,23 +24,24 @@ $id_module = $module['id'];
$module_query = '
SELECT
numero_esterno,
an_anagrafiche.ragione_sociale,
SUM(prezzo_unitario*qta) as \'Totale\',
provvigione_percentuale,
provvigione
`numero_esterno`,
`an_anagrafiche`.`ragione_sociale`,
SUM(`prezzo_unitario`*`qta`) as \'Totale\',
`provvigione_percentuale`,
`provvigione`
FROM
`co_documenti`
LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`iva`) AS `iva` FROM `co_righe_documenti` GROUP BY `iddocumento`) AS righe ON `co_documenti`.`id` = `righe`.`iddocumento`
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN an_anagrafiche as agenti ON agenti.idanagrafica = co_documenti.idagente
LEFT JOIN co_righe_documenti ON co_righe_documenti.iddocumento = co_documenti.id
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_statidocumento`.`id` AND `co_statidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).')
LEFT JOIN `an_anagrafiche` as agenti ON `agenti`.`idanagrafica` = `co_documenti`.`idagente`
LEFT JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
WHERE
1=1 AND provvigione > 0
1=1 AND `provvigione` > 0
GROUP BY
co_documenti.id
`co_documenti`.`id`
HAVING
2=2
ORDER BY
@ -58,15 +59,15 @@ if (!empty(get('date_end'))) {
$date_end = get('date_end');
}
$module_query = str_replace('1=1', '1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato")', $module_query);
$module_query = str_replace('1=1', '1=1 AND `co_documenti`.`idstatodocumento` IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` = "Pagato")', $module_query);
if (get('is_emessa') == 'true' && get('is_parz_pagata') == 'true') {
$module_query = str_replace('1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato")', '1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato" OR descrizione = "Emessa" OR descrizione = "Parzialmente pagato")', $module_query);
$module_query = str_replace('1=1 AND `co_documenti`.`idstatodocumento` IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` = "Pagato")', '1=1 AND `co_documenti`.`idstatodocumento` IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Pagato", "Emessa", "Parzialmente pagato"))', $module_query);
} elseif (get('is_emessa') == 'true') {
$module_query = str_replace('1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato")', '1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato" OR descrizione = "Emessa")', $module_query);
$module_query = str_replace('1=1 AND `co_documenti`.`idstatodocumento` IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` = "Pagato")', '1=1 AND `co_documenti`.`idstatodocumento` IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Pagato", "Emessa"))', $module_query);
} elseif (get('is_parz_pagata') == 'true') {
$module_query = str_replace('1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato")', '1=1 AND co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione = "Pagato" OR descrizione = "Parzialmente pagato")', $module_query);
$module_query = str_replace('1=1 AND `co_documenti`.`idstatodocumento` IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` = "Pagato")', '1=1 AND `co_documenti`.`idstatodocumento` IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Pagato", "Parzialmente pagato"))', $module_query);
}
$module_query = str_replace('1=1', '1=1 AND co_documenti.idagente='.prepare($id_record), $module_query);
$module_query = str_replace('1=1', '1=1 AND `co_documenti`.`idagente`='.prepare($id_record), $module_query);
$records = $dbo->fetchArray($module_query);

View File

@ -73,7 +73,7 @@ if ((!empty($vendita_banco)) && ($id_sezionale == -1) && ($tipo == 'vendite')) {
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `co_documenti`.`idanagrafica`
WHERE
`dir` = '.prepare($dir).' AND `idstatodocumento` NOT IN (SELECT `id` FROM `co_statidocumento` WHERE `descrizione`="Bozza" OR `descrizione`="Annullata") AND `is_descrizione` = 0 AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND '.(($id_sezionale != -1) ? '`co_documenti`.`id_segment` = '.prepare($id_sezionale).'' : '1=1').'
`dir` = '.prepare($dir).' AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `is_descrizione` = 0 AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND '.(($id_sezionale != -1) ? '`co_documenti`.`id_segment` = '.prepare($id_sezionale).'' : '1=1').'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
UNION
@ -130,7 +130,7 @@ FROM
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `co_documenti`.`idanagrafica`
WHERE
`dir` = '.prepare($dir).' AND `idstatodocumento` NOT IN (SELECT `id` FROM `co_statidocumento` WHERE `descrizione`="Bozza" OR `descrizione`="Annullata") AND `is_descrizione` = 0 AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND '.(($id_sezionale != -1) ? '`co_documenti`.`id_segment` = '.prepare($id_sezionale).'' : '1=1').'
`dir` = '.prepare($dir).' AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `is_descrizione` = 0 AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND '.(($id_sezionale != -1) ? '`co_documenti`.`id_segment` = '.prepare($id_sezionale).'' : '1=1').'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY

View File

@ -66,7 +66,7 @@ if (dateFormat($intervento->inizio)) {
}
echo '
<p><small><b>'.tr('Cliente').':</b> '.$intervento->anagrafica->ragione_sociale.'</small></p>
<p><small><b>'.tr('Stato').':</b> '.$intervento->stato->descrizione.'</small></p>
<p><small><b>'.tr('Stato').':</b> '.$intervento->stato->name.'</small></p>
<p><small><b>'.tr('Data richiesta').':</b> '.dateFormat($intervento->data_richiesta).'</small></p>
<p><small><b>'.tr('Richiesta').':</b> '.$intervento->richiesta.'</p>';
if ($intervento->descrizione) {

View File

@ -309,33 +309,6 @@ UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_module
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'COUNT(`co_pagamenti_lang`.`name`)' WHERE `zz_modules`.`name` = 'Pagamenti' AND `zz_views`.`name` = 'Rate';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_pagamenti_lang`.`id`' WHERE `zz_modules`.`name` = 'Pagamenti' AND `zz_views`.`name` = 'id';
-- Allineamento vista Fatture di vendita
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`co_documenti`
LEFT JOIN (SELECT SUM(`totale`) AS `totale`, `iddocumento` FROM `co_movimenti` WHERE `totale` > 0 AND `primanota` = 1 GROUP BY `iddocumento`) AS `primanota` ON `primanota`.`iddocumento` = `co_documenti`.`id`
LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM((`subtotale` - `sconto` + `rivalsainps`) * `co_iva`.`percentuale` / 100) AS `iva` FROM `co_righe_documenti` LEFT JOIN `co_iva` ON `co_iva`.`id` = `co_righe_documenti`.`idiva` GROUP BY `iddocumento`) AS `righe` ON `co_documenti`.`id` = `righe`.`iddocumento`
LEFT JOIN (SELECT `co_banche`.`id`, CONCAT(`co_banche`.`nome`, ' - ', `co_banche`.`iban`) AS `descrizione` FROM `co_banche` GROUP BY `co_banche`.`id`) AS `banche` ON `banche`.`id` =`co_documenti`.`id_banca_azienda`
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `fe_stati_documento` ON `co_documenti`.`codice_stato_fe` = `fe_stati_documento`.`codice`
LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id`
LEFT JOIN (SELECT COUNT(id) as `emails`, `em_emails`.`id_record` FROM `em_emails` INNER JOIN `zz_operations` ON `zz_operations`.`id_email` = `em_emails`.`id` WHERE `id_module` IN(SELECT `id` FROM `zz_modules` WHERE name = 'Fatture di vendita') AND `zz_operations`.`op` = 'send-email' GROUP BY `em_emails`.`id_record`) AS `email` ON `email`.`id_record` = `co_documenti`.`id`
LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`
LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND |lang|)
LEFT JOIN (SELECT `numero_esterno`, `id_segment`, `idtipodocumento`, `data` FROM `co_documenti` WHERE `co_documenti`.`idtipodocumento` IN( SELECT `id` FROM `co_tipidocumento` WHERE `dir` = 'entrata') AND `numero_esterno` != '' GROUP BY `id_segment`, `numero_esterno`, `idtipodocumento` HAVING COUNT(`numero_esterno`) > 1 |date_period(`co_documenti`.`data`)| ) dup ON `co_documenti`.`numero_esterno` = `dup`.`numero_esterno` AND `dup`.`id_segment` = `co_documenti`.`id_segment` AND `dup`.`idtipodocumento` = `co_documenti`.`idtipodocumento`
WHERE
1=1 AND `dir` = 'entrata' |segment(`co_documenti`.`id_segment`)| |date_period(`co_documenti`.`data`)|
HAVING
2=2
ORDER BY
`co_documenti`.`data` DESC,
CAST(`co_documenti`.`numero_esterno` AS UNSIGNED) DESC" WHERE `name` = 'Fatture di vendita';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_pagamenti_lang`.`name`' WHERE `zz_modules`.`name` = 'Fatture di vendita' AND `zz_views`.`name` = 'Pagamento';
-- Allineamento vista Anagrafiche
UPDATE `zz_modules` SET `options` = "
SELECT
@ -360,36 +333,6 @@ HAVING
ORDER BY
TRIM(`ragione_sociale`)" WHERE `name` = 'Anagrafiche';
-- Allineamento vista Fatture di acquisto
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`co_documenti`
LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id`
LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`
LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.|lang|)
LEFT JOIN (SELECT `co_banche`.`id`, CONCAT(`nome`, ' - ', `iban`) AS `descrizione` FROM `co_banche`) AS `banche` ON `banche`.`id` = `co_documenti`.`id_banca_azienda`
LEFT JOIN (SELECT `iddocumento`, GROUP_CONCAT(`co_pianodeiconti3`.`descrizione`) AS `descrizione` FROM `co_righe_documenti` INNER JOIN `co_pianodeiconti3` ON `co_pianodeiconti3`.`id` = `co_righe_documenti`.`idconto` GROUP BY iddocumento) AS `conti` ON `conti`.`iddocumento` = `co_documenti`.`id`
LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`iva`) AS `iva` FROM `co_righe_documenti` GROUP BY `iddocumento`) AS `righe` ON `co_documenti`.`id` = `righe`.`iddocumento`
LEFT JOIN (SELECT COUNT(`d`.`id`) AS `conteggio`, IF(`d`.`numero_esterno` = '', `d`.`numero`, `d`.`numero_esterno`) AS `numero_documento`, `d`.`idanagrafica` AS `anagrafica`, `d`.`id_segment` 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`) GROUP BY `d`.`id_segment`, `numero_documento`, `d`.`idanagrafica`) AS `d` ON (`d`.`numero_documento` = IF(`co_documenti`.`numero_esterno` = '',`co_documenti`.`numero`,`co_documenti`.`numero_esterno`) AND `d`.`anagrafica` = `co_documenti`.`idanagrafica` AND `d`.`id_segment` = `co_documenti`.`id_segment`)
WHERE
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` )|
GROUP BY
`co_documenti`.`id`, `d`.`conteggio`
HAVING
2=2
ORDER BY
`co_documenti`.`data` DESC,
CAST(IF(`co_documenti`.`numero` = '', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC" WHERE `name` = 'Fatture di acquisto';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'CONCAT(`co_pagamenti`.`codice_modalita_pagamento_fe`, " - ", `co_pagamenti_lang`.`name`)' WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = 'Pagamento';
-- Allineamento vista Scadenzario
UPDATE `zz_modules` SET `options` = "
SELECT
@ -491,4 +434,102 @@ UPDATE `zz_modules` SET `options` = 'SELECT\n |select|\nFROM \n `zz_groups` \n L
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Utenti e permessi'), 'N. utenti abilitati', '`utenti_abilitati`.`num`', '3', '1', '0', '0', '0', '', '', '1', '0', '0');
-- Aggiunta colonna N. API abilitate
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Utenti e permessi'), 'N. API abilitate', '`api_abilitate`.`num`', '3', '1', '0', '0', '0', '', '', '1', '0', '0');
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Utenti e permessi'), 'N. API abilitate', '`api_abilitate`.`num`', '3', '1', '0', '0', '0', '', '', '1', '0', '0');
-- Aggiunta tabella co_statidocumento_lang
CREATE TABLE IF NOT EXISTS `co_statidocumento_lang` (
`id` int NOT NULL,
`id_lang` int NOT NULL,
`id_record` int NOT NULL,
`name` VARCHAR(255) NOT NULL
);
ALTER TABLE `co_statidocumento_lang`
ADD PRIMARY KEY (`id`);
ALTER TABLE `co_statidocumento_lang`
MODIFY `id` int NOT NULL AUTO_INCREMENT;
INSERT INTO `co_statidocumento_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `co_statidocumento`;
ALTER TABLE `co_statidocumento`
DROP `descrizione`;
ALTER TABLE `co_statidocumento` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `co_statidocumento_lang` ADD CONSTRAINT `co_statidocumento_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `co_statidocumento`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
-- Allineamento vista Stati fatture
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`co_statidocumento`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND |lang|)
WHERE
1=1
HAVING
2=2" WHERE `name` = 'Stati fatture';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_statidocumento_lang`.`name`' WHERE `zz_modules`.`name` = 'Stati fatture' AND `zz_views`.`name` = 'Descrizione';
-- Allineamento vista Fatture di vendita
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`co_documenti`
LEFT JOIN (SELECT SUM(`totale`) AS `totale`, `iddocumento` FROM `co_movimenti` WHERE `totale` > 0 AND `primanota` = 1 GROUP BY `iddocumento`) AS `primanota` ON `primanota`.`iddocumento` = `co_documenti`.`id`
LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM((`subtotale` - `sconto` + `rivalsainps`) * `co_iva`.`percentuale` / 100) AS `iva` FROM `co_righe_documenti` LEFT JOIN `co_iva` ON `co_iva`.`id` = `co_righe_documenti`.`idiva` GROUP BY `iddocumento`) AS `righe` ON `co_documenti`.`id` = `righe`.`iddocumento`
LEFT JOIN (SELECT `co_banche`.`id`, CONCAT(`co_banche`.`nome`, ' - ', `co_banche`.`iban`) AS `descrizione` FROM `co_banche` GROUP BY `co_banche`.`id`) AS `banche` ON `banche`.`id` =`co_documenti`.`id_banca_azienda`
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND co_statidocumento_lang.|lang|)
LEFT JOIN `fe_stati_documento` ON `co_documenti`.`codice_stato_fe` = `fe_stati_documento`.`codice`
LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id`
LEFT JOIN (SELECT COUNT(id) as `emails`, `em_emails`.`id_record` FROM `em_emails` INNER JOIN `zz_operations` ON `zz_operations`.`id_email` = `em_emails`.`id` WHERE `id_module` IN(SELECT `id` FROM `zz_modules` WHERE name = 'Fatture di vendita') AND `zz_operations`.`op` = 'send-email' GROUP BY `em_emails`.`id_record`) AS `email` ON `email`.`id_record` = `co_documenti`.`id`
LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`
LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND co_pagamenti_lang.|lang|)
LEFT JOIN (SELECT `numero_esterno`, `id_segment`, `idtipodocumento`, `data` FROM `co_documenti` WHERE `co_documenti`.`idtipodocumento` IN( SELECT `id` FROM `co_tipidocumento` WHERE `dir` = 'entrata') AND `numero_esterno` != '' GROUP BY `id_segment`, `numero_esterno`, `idtipodocumento` HAVING COUNT(`numero_esterno`) > 1 |date_period(`co_documenti`.`data`)| ) dup ON `co_documenti`.`numero_esterno` = `dup`.`numero_esterno` AND `dup`.`id_segment` = `co_documenti`.`id_segment` AND `dup`.`idtipodocumento` = `co_documenti`.`idtipodocumento`
WHERE
1=1 AND `dir` = 'entrata' |segment(`co_documenti`.`id_segment`)| |date_period(`co_documenti`.`data`)|
HAVING
2=2
ORDER BY
`co_documenti`.`data` DESC,
CAST(`co_documenti`.`numero_esterno` AS UNSIGNED) DESC" WHERE `name` = 'Fatture di vendita';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_statidocumento_lang`.`name`' WHERE `zz_modules`.`name` = 'Fatture di vendita' AND `zz_views`.`name` = 'icon_title_Stato';
-- Allineamento vista Fatture di acquisto
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`co_documenti`
LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.|lang|)
LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id`
LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`
LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.|lang|)
LEFT JOIN (SELECT `co_banche`.`id`, CONCAT(`nome`, ' - ', `iban`) AS `descrizione` FROM `co_banche`) AS `banche` ON `banche`.`id` = `co_documenti`.`id_banca_azienda`
LEFT JOIN (SELECT `iddocumento`, GROUP_CONCAT(`co_pianodeiconti3`.`descrizione`) AS `descrizione` FROM `co_righe_documenti` INNER JOIN `co_pianodeiconti3` ON `co_pianodeiconti3`.`id` = `co_righe_documenti`.`idconto` GROUP BY iddocumento) AS `conti` ON `conti`.`iddocumento` = `co_documenti`.`id`
LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`iva`) AS `iva` FROM `co_righe_documenti` GROUP BY `iddocumento`) AS `righe` ON `co_documenti`.`id` = `righe`.`iddocumento`
LEFT JOIN (SELECT COUNT(`d`.`id`) AS `conteggio`, IF(`d`.`numero_esterno` = '', `d`.`numero`, `d`.`numero_esterno`) AS `numero_documento`, `d`.`idanagrafica` AS `anagrafica`, `d`.`id_segment` 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`) GROUP BY `d`.`id_segment`, `numero_documento`, `d`.`idanagrafica`) AS `d` ON (`d`.`numero_documento` = IF(`co_documenti`.`numero_esterno` = '',`co_documenti`.`numero`,`co_documenti`.`numero_esterno`) AND `d`.`anagrafica` = `co_documenti`.`idanagrafica` AND `d`.`id_segment` = `co_documenti`.`id_segment`)
WHERE
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` )|
GROUP BY
`co_documenti`.`id`, `d`.`conteggio`
HAVING
2=2
ORDER BY
`co_documenti`.`data` DESC,
CAST(IF(`co_documenti`.`numero` = '', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC" WHERE `name` = 'Fatture di acquisto';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_statidocumento_lang`.`name`' WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = 'icon_title_Stato';
-- Fix plugin Ddt del cliente
UPDATE `zz_plugins` SET `options` = '{ \"main_query\": [ { \"type\": \"table\", \"fields\": \"Numero, Data, Descrizione, Qtà\", \"query\": \"SELECT dt_ddt.id, IF(dt_tipiddt.dir = \'entrata\', (SELECT `id` FROM `zz_modules` WHERE `name` = \'Ddt di vendita\'), (SELECT `id` FROM `zz_modules` WHERE `name` = \'Ddt di acquisto\')) AS _link_module_, dt_ddt.id AS _link_record_, IF(dt_ddt.numero_esterno = \'\', dt_ddt.numero, dt_ddt.numero_esterno) AS Numero, DATE_FORMAT(dt_ddt.data, \'%d/%m/%Y\') AS Data, dt_righe_ddt.descrizione AS `Descrizione`, REPLACE(REPLACE(REPLACE(FORMAT(dt_righe_ddt.qta, 2), \',\', \'#\'), \'.\', \',\'), \'#\', \'.\') AS `Qtà` FROM dt_ddt LEFT JOIN dt_righe_ddt ON dt_ddt.id=dt_righe_ddt.idddt JOIN dt_tipiddt ON dt_ddt.idtipoddt = dt_tipiddt.id WHERE dt_ddt.idanagrafica=|id_parent| HAVING 2=2 ORDER BY dt_ddt.id DESC\"} ]}' WHERE `zz_plugins`.`name` = 'Ddt del cliente';

View File

@ -51,6 +51,7 @@ return [
'co_staticontratti',
'co_staticontratti_lang',
'co_statidocumento',
'co_statidocumento_lang'
'co_statipreventivi',
'co_tipidocumento',
'co_tipi_scadenze',