diff --git a/include/common/importa.php b/include/common/importa.php
index 5d7ca751a..e78b288e7 100755
--- a/include/common/importa.php
+++ b/include/common/importa.php
@@ -23,6 +23,7 @@ use Modules\DDT\Stato;
use Modules\Fatture\Stato as StatoFattura;
use Modules\Ordini\Stato as StatoOrdine;
use Plugins\ListinoFornitori\DettaglioFornitore;
+use Modules\Fatture\Tipo as Tipofattura;
// Inizializzazione
$documento = $options['documento'];
@@ -43,12 +44,15 @@ $id_segment = $_SESSION['module_'.$final_module->id]['id_segment'];
$id_iva = $id_iva ?: setting('Iva predefinita');
$righe_totali = $documento->getRighe();
-if ($final_module->getTranslation('name') == 'Interventi') {
+
+$id_module_interventi = (new Module)->getByField('name', 'Interventi', Models\Locale::getPredefined()->id);
+$id_module_ordini_f = (new Module)->getByField('name', 'Ordini fornitore', Models\Locale::getPredefined()->id);
+if ($final_module->id == $id_module_interventi) {
$righe = $righe_totali->where('is_descrizione', '=', 0)
->where('qta_rimanente', '>', 0);
$righe_evase = $righe_totali->where('is_descrizione', '=', 0)
->where('qta_rimanente', '=', 0);
-} elseif ($final_module->getTranslation('name') == 'Ordini fornitore') {
+} elseif ($final_module->id == $id_module_ordini_f) {
$righe = $righe_totali;
$righe_evase = collect();
} else {
@@ -92,20 +96,28 @@ if (!empty($options['create_document'])) {
';
// Opzioni aggiuntive per le Fatture
- if (in_array($final_module->getTranslation('name'), ['Fatture di vendita', 'Fatture di acquisto'])) {
+ $id_module_fatt_vendita = (new Module())->getByField('name', 'Fatture di vendita', Models\Locale::getPredefined()->id);
+ $id_module_fatt_acquisto = (new Module())->getByField('name', 'Fatture di acquisto', Models\Locale::getPredefined()->id);
+ $id_module_ddt_vendita = (new Module())->getByField('name', 'Ddt di vendita', Models\Locale::getPredefined()->id);
+ $id_module_ddt_acquisto = (new Module())->getByField('name', 'Ddt di acquisto', Models\Locale::getPredefined()->id);
+ if (in_array($final_module->id, [$id_module_fatt_vendita, $id_module_fatt_acquisto])) {
$stato_predefinito = (new StatoFattura())->getByField('name', 'Bozza', Models\Locale::getPredefined()->id);
+ $fatt_differita_acquisto = (new TipoFattura())->getByField('name', 'Fattura differita di acquisto', Models\Locale::getPredefined()->id);
+ $fatt_differita_vendita = (new TipoFattura())->getByField('name', 'Fattura differita di vendita', Models\Locale::getPredefined()->id);
if (!empty($options['reversed'])) {
$idtipodocumento = database()->fetchOne('SELECT `co_tipidocumento`.`id` FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `name` = "Nota di credito" AND `dir` = \''.$dir.'\'')['id'];
- } elseif (in_array($original_module->getTranslation('name'), ['Ddt di vendita', 'Ddt di acquisto'])) {
- $idtipodocumento = database()->fetchOne('SELECT `co_tipidocumento`.`id` FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `name` = '.($dir == 'uscita' ? 'Fattura differita di acquisto' : 'Fattura differita di vendita').' AND `dir` = \''.$dir.'\'')['id'];
+ } elseif (in_array($original_module->id, [$id_module_ddt_vendita, $id_module_ddt_acquisto])) {
+ $idtipodocumento = database()->fetchOne('SELECT `co_tipidocumento`.`id` FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `co_tipidocumento`.`id` = '.($dir == 'uscita' ? $fatt_differita_acquisto : $fatt_differita_vendita).' AND `dir` = \''.$dir.'\'')['id'];
} else {
$idtipodocumento = database()->fetchOne('SELECT `co_tipidocumento`.`id` FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `dir` = \''.$dir.'\' AND `predefined` = 1')['id'];
}
+ $id_bozza = (new StatoFattura())->getByField('name', 'Bozza', Models\Locale::getPredefined()->id);
+ $id_emessa = (new StatoFattura())->getByField('name', 'Emessa', Models\Locale::getPredefined()->id);
echo '
- {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT `co_statidocumento`.`id` as id, `co_statidocumento_lang`.`name` as descrizione FROM `co_statidocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `name` IN (\'Emessa\', \'Bozza\')", "value": "'.$stato_predefinito.'"]}
+ {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT `co_statidocumento`.`id` as id, `co_statidocumento_lang`.`name` as descrizione FROM `co_statidocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `co_statidocumento`.`id` IN ('.$id_bozza.', '.$id_emessa.')", "value": "'.$stato_predefinito.'"]}
diff --git a/modules/anagrafiche/add.php b/modules/anagrafiche/add.php
index 63ff07f9b..e3a28840a 100755
--- a/modules/anagrafiche/add.php
+++ b/modules/anagrafiche/add.php
@@ -24,8 +24,8 @@ include_once __DIR__.'/../../core.php';
$id_nazione_italia = (new Nazione())->getByField('name', 'Italia', Models\Locale::getPredefined()->id);
$tipo = get('tipoanagrafica');
-$id_tipo = Tipo::find((new Tipo())->getByField('name', $tipo, Models\Locale::getPredefined()->id))->id;
-$id_tipo_azienda = Tipo::find((new Tipo())->getByField('name', 'Azienda', Models\Locale::getPredefined()->id))->id;
+$id_tipo = (new Tipo())->getByField('name', $tipo, Models\Locale::getPredefined()->id);
+$id_tipo_azienda = (new Tipo())->getByField('name', 'Azienda', Models\Locale::getPredefined()->id);
if (!empty($tipo)) {
$rs = $dbo->fetchArray('SELECT `an_tipianagrafiche`.`id`, `an_tipianagrafiche_lang`.`name` as descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `an_tipianagrafiche`.`id`='.prepare($id_tipo));
diff --git a/modules/ordini/add.php b/modules/ordini/add.php
index 0bfe104bb..ed2ee9aee 100755
--- a/modules/ordini/add.php
+++ b/modules/ordini/add.php
@@ -22,15 +22,15 @@ use Models\Module;
$module = Module::find($id_module);
-if ($module->getTranslation('name') == 'Ordini cliente') {
+if ($module->getTranslation('name', \Models\Locale::getPredefined()->id) == 'Ordini cliente') {
$dir = 'entrata';
- $tipo_anagrafica = tr('Cliente');
+ $tipo_anagrafica = 'Cliente';
$ajax = 'clienti';
} else {
$dir = 'uscita';
- $tipo_anagrafica = tr('Fornitore');
+ $tipo_anagrafica = 'Fornitore';
$ajax = 'fornitori';
}
@@ -50,7 +50,7 @@ $id_anagrafica = !empty(get('idanagrafica')) ? get('idanagrafica') : '';
- {[ "type": "select", "label": "", "name": "idanagrafica", "required": 1, "value": "", "ajax-source": "", "icon-after": "add|getByField('name', 'Anagrafiche', Models\Locale::getPredefined()->id); ?>|tipoanagrafica=&readonly_tipo=1" ]}
+ {[ "type": "select", "label": "", "name": "idanagrafica", "required": 1, "value": "", "ajax-source": "", "icon-after": "add|getByField('name', 'Anagrafiche', Models\Locale::getPredefined()->id); ?>|tipoanagrafica=&readonly_tipo=1" ]}
diff --git a/modules/ordini/edit.php b/modules/ordini/edit.php
index 7c8335a4f..2944a8c18 100755
--- a/modules/ordini/edit.php
+++ b/modules/ordini/edit.php
@@ -19,11 +19,12 @@
include_once __DIR__.'/../../core.php';
use Models\Module;
+use Modules\Ordini\Stato;
$block_edit = $record['flag_completato'];
$module = Module::find($id_module);
-if ($module->getTranslation('name') == 'Ordini cliente') {
+if ($module->getTranslation('name', \Models\Locale::getPredefined()->id) == 'Ordini cliente') {
$dir = 'entrata';
} else {
$dir = 'uscita';
@@ -72,18 +73,23 @@ if ($righe_vuote) {
getByField('name', 'Evaso', Models\Locale::getPredefined()->id);
+ $id_stato_parz_evaso = (new Stato())->getByField('name', 'Parzialmente evaso', Models\Locale::getPredefined()->id);
+ $id_stato_fatt = (new Stato())->getByField('name', 'Fatturato', Models\Locale::getPredefined()->id);
+ $id_stato_parz_fatt = (new Stato())->getByField('name', 'Parzialmente fatturato', Models\Locale::getPredefined()->id);
+
+ if ($ordine->stato->id == $id_stato_fatt || $ordine->stato->id == $id_stato_parz_fatt || $ordine->stato->id == $id_stato_evaso || $ordine->stato->id == $id_stato_parz_evaso) {
?>
- {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, `or_statiordine_lang`.`name` as descrizione, `colore` AS _bgcolor_ FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = id); ?>) ORDER BY `name`", "value": "$idstatoordine$", "extra": "readonly", "class": "unblockable" ]}
+ {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT `or_statiordine`.*, `or_statiordine_lang`.`name` as descrizione, `colore` AS _bgcolor_ FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = id); ?>) ORDER BY `name`", "value": "$idstatoordine$", "extra": "readonly", "class": "unblockable" ]}
- {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, `or_statiordine_lang`.`name` as descrizione, `colore` AS _bgcolor_ FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = id); ?>) WHERE (`is_fatturabile` = 0 AND `name` != 'Fatturato' || `name` = 'Accettato') ORDER BY `name`", "value": "$idstatoordine$", "class": "unblockable" ]}
+ {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT `or_statiordine`.*, `or_statiordine_lang`.`name` as descrizione, `colore` AS _bgcolor_ FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = id); ?>) WHERE (`is_fatturabile` = 0 AND `name` != 'Fatturato' || `name` = 'Accettato') ORDER BY `name`", "value": "$idstatoordine$", "class": "unblockable" ]}
- {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT *, `colore` AS _bgcolor_, `or_statiordine_lang`.`name` as descrizione FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = id); ?>) ORDER BY `name`", "value": "$idstatoordine$", "class": "unblockable" ]}
+ {[ "type": "select", "label": "", "name": "idstatoordine", "required": 1, "values": "query=SELECT `or_statiordine`.*, `colore` AS _bgcolor_, `or_statiordine_lang`.`name` as descrizione FROM `or_statiordine` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record` = `or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang` = id); ?>) ORDER BY `name`", "value": "$idstatoordine$", "class": "unblockable" ]}
diff --git a/modules/ordini/init.php b/modules/ordini/init.php
index aa28e9600..30c9891cb 100755
--- a/modules/ordini/init.php
+++ b/modules/ordini/init.php
@@ -22,21 +22,23 @@ use Modules\Ordini\Ordine;
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
- $ordine = Ordine::with('tipo', 'stato')->find($id_record);
+ $ordine = Ordine::find($id_record);
- $record = $dbo->fetchOne('SELECT *,
+ $record = $dbo->fetchOne('SELECT
+ `or_ordini`.*,
`or_ordini`.`note`,
`or_ordini`.`idpagamento`,
`or_ordini`.`id` AS idordine,
`or_ordini`.`idagente` AS idagente,
- `or_statiordine_lang`.`name` AS `stato`,
- `or_tipiordine_lang`.`name` AS `descrizione_tipodoc`,
+ `or_ordini`.`idstatoordine` AS idstatoordine,
+ `or_statiordine_lang`.`name` AS stato,
+ `or_tipiordine_lang`.`name` AS descrizione_tipodoc,
`an_anagrafiche`.`tipo` AS tipo_anagrafica,
`or_statiordine`.`completato` AS flag_completato
FROM
`or_ordini`
- INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine`=`or_statiordine`.`id`
- LEFT JOIN `or_statiordine_lang` ON `or_statiordine_lang`.`id_record`=`or_statiordine`.`id`
+ LEFT JOIN `or_statiordine` ON `or_ordini`.`idstatoordine`=`or_statiordine`.`id`
+ LEFT JOIN `or_statiordine_lang` ON (`or_statiordine_lang`.`id_record`=`or_statiordine`.`id` AND `or_statiordine_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).')
INNER JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine`=`or_tipiordine`.`id`
LEFT JOIN `or_tipiordine_lang` ON (`or_tipiordine_lang`.`id_record`=`or_tipiordine`.`id` AND `or_tipiordine_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).')
diff --git a/modules/preventivi/src/Preventivo.php b/modules/preventivi/src/Preventivo.php
index 036743f4d..3375c44a5 100755
--- a/modules/preventivi/src/Preventivo.php
+++ b/modules/preventivi/src/Preventivo.php
@@ -260,9 +260,8 @@ class Preventivo extends Document
$qta_evasa = $righe->sum('qta_evasa');
$qta = $righe->sum('qta');
$parziale = $qta != $qta_evasa;
-
- $stato_attuale = $this->stato;
-
+ $stato = $this->stato;
+
// Impostazione del nuovo stato
if ($qta_evasa == 0) {
$descrizione = 'In lavorazione';
@@ -271,11 +270,11 @@ class Preventivo extends Document
$descrizione = $parziale ? 'Parzialmente fatturato' : 'Fatturato';
$codice_intervento = 'FAT';
} else {
- $descrizione = $this->stato->getTranslation('name');
+ $descrizione = $stato->getTranslation('name', \Models\Locale::getPredefined()->id);
$codice_intervento = 'OK';
}
- $stato = (new Stato())->getByField('name', $descrizione);
+ $stato = (new Stato())->getByField('name', $descrizione, \Models\Locale::getPredefined()->id);
$this->stato()->associate($stato);
$this->save();
diff --git a/src/HTMLBuilder/Manager/ButtonManager.php b/src/HTMLBuilder/Manager/ButtonManager.php
index 4c1184a47..2e7c6ef03 100755
--- a/src/HTMLBuilder/Manager/ButtonManager.php
+++ b/src/HTMLBuilder/Manager/ButtonManager.php
@@ -55,11 +55,13 @@ class ButtonManager implements ManagerInterface
$print = PrintTemplate::find($options['id']);
}
- $result = [
- 'link' => \Prints::getHref($options['id'], $options['id_record'], $options['parameters']),
- 'title' => tr('Stampa').' '.((strtoupper($print->getTranslation('title')) == $print->getTranslation('title')) ? $print->getTranslation('title') : lcfirst($print->getTranslation('title'))),
- 'icon' => $print->icon,
- ];
+ if (!empty($print)) {
+ $result = [
+ 'link' => \Prints::getHref($options['id'], $options['id_record'], $options['parameters']),
+ 'title' => tr('Stampa').' '.((strtoupper($print->getTranslation('title')) == $print->getTranslation('title')) ? $print->getTranslation('title') : lcfirst($print->getTranslation('title'))),
+ 'icon' => $print->icon,
+ ];
+ }
} elseif ($options['type'] == 'email') {
$template_email = TemplateEmail::find($options['id']);
diff --git a/update/2_5.php b/update/2_5.php
index cc53facf3..69e28fb54 100644
--- a/update/2_5.php
+++ b/update/2_5.php
@@ -111,7 +111,7 @@ $traduzioni = [
['zz_modules_lang', 'Type of tasks', 'Tipi di intervento'],
['zz_modules_lang', 'Tasks status', 'Stati di intervento'],
['zz_modules_lang', 'Accounting', 'Contabilità'],
- ['zz_modules_lang', 'Quotes', 'Preventivi'],
+ ['zz_modules_lang', 'Quotations', 'Preventivi'],
['zz_modules_lang', 'Sales invoices', 'Fatture di vendita'],
['zz_modules_lang', 'Purchase invoices', 'Fatture di acquisto'],
['zz_modules_lang', 'Scheduled payments', 'Scadenzario'],