diff --git a/include/common/importa.php b/include/common/importa.php index e87bc0ffe..8efbfd68a 100755 --- a/include/common/importa.php +++ b/include/common/importa.php @@ -366,7 +366,7 @@ if (!$righe_evase->isEmpty()) { echo '
-

' . tr('Righe evase completamente') . '

+

'.tr('Righe evase completamente').'

diff --git a/modules/articoli/modutil.php b/modules/articoli/modutil.php index 5b4fceb92..593517364 100755 --- a/modules/articoli/modutil.php +++ b/modules/articoli/modutil.php @@ -19,8 +19,6 @@ include_once __DIR__.'/../../core.php'; -use Modules\Articoli\Articolo; - /** * Funzione per aggiornare le sedi nei movimenti di magazzino. */ diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index db26f8252..c5e614237 100755 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -19,6 +19,7 @@ include_once __DIR__.'/../../core.php'; +use Models\Module; use Modules\Anagrafiche\Anagrafica; use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\DDT\Components\Articolo; @@ -26,6 +27,7 @@ use Modules\DDT\Components\Descrizione; use Modules\DDT\Components\Riga; use Modules\DDT\Components\Sconto; use Modules\DDT\DDT; +use Modules\DDT\Stato; use Modules\DDT\Tipo; $module = Modules::get($id_module); @@ -36,7 +38,7 @@ if ($module['name'] == 'Ddt di vendita') { $dir = 'uscita'; } -switch (post('op')) { +switch (filter('op')) { case 'add': $idanagrafica = post('idanagrafica'); $data = post('data'); @@ -421,14 +423,58 @@ switch (post('op')) { break; - case 'update_position': - $order = explode(',', post('order', true)); + case 'update_position': + $order = explode(',', post('order', true)); - foreach ($order as $i => $id_riga) { - $dbo->query('UPDATE `dt_righe_ddt` SET `order` = '.prepare($i + 1).' WHERE id='.prepare($id_riga)); - } + foreach ($order as $i => $id_riga) { + $dbo->query('UPDATE `dt_righe_ddt` SET `order` = '.prepare($i + 1).' WHERE id='.prepare($id_riga)); + } - break; + break; + + /* + * Gestione della generazione di DDT in direzione opposta a quella corrente, per completare il riferimento di trasporto interno tra sedi distinte dell'anagrafica Azienda. + */ + case 'completa_trasporto': + $tipo = Tipo::where('dir', '!=', $ddt->direzione)->first(); + $stato = Stato::where('descrizione', '=', 'Evaso')->first(); + + // Duplicazione DDT + $copia = $ddt->replicate(); + $copia->tipo()->associate($tipo); + $copia->stato()->associate($stato); + $copia->id_ddt_trasporto_interno = $ddt->id; + + // Inversione sedi + $copia->idsede_partenza = $ddt->idsede_destinazione; + $copia->idsede_destinazione = $ddt->idsede_partenza; + + $copia->save(); + + // Copia righe + $righe = $ddt->getRighe(); + foreach ($righe as $riga) { + $copia_riga = $riga->replicate(); + + // Aggiornamento riferimenti + $copia_riga->idddt = $copia->id; + $copia_riga->original_id = null; + $copia_riga->original_type = null; + + $copia_riga->save(); + + // Movimentazione forzata in direzione del documento + $copia_riga->movimenta($riga->qta); + } + + // Salvataggio riferimento + $ddt->id_ddt_trasporto_interno = $copia->id; + $ddt->save(); + + $id_record = $copia->id; + $id_module = $ddt->direzione == 'entrata' ? Module::pool('Ddt di acquisto')->id : Module::pool('Ddt di vendita')->id; + + break; } // Aggiornamento stato degli ordini presenti in questa fattura in base alle quantità totali evase diff --git a/modules/ddt/buttons.php b/modules/ddt/buttons.php index 1fe96b5f8..42ea31e47 100755 --- a/modules/ddt/buttons.php +++ b/modules/ddt/buttons.php @@ -17,14 +17,54 @@ * along with this program. If not, see . */ +use Models\Module; + include_once __DIR__.'/../../core.php'; -$stati = $dbo->fetchArray('SELECT descrizione FROM `dt_statiddt` WHERE `is_fatturabile` = 1'); +// Informazioni sui movimenti interni +if (!empty($ddt->id_ddt_trasporto_interno)) { + $id_module_collegamento = $ddt->direzione == 'entrata' ? Module::pool('Ddt di acquisto')->id : Module::pool('Ddt di vendita')->id; + + echo ' +'; +} elseif ($azienda->id == $ddt->anagrafica->id) { + echo ' +
+ +
+ +'; +} + +// Informazioni sull'importabilità del DDT +$stati = $database->fetchArray('SELECT descrizione FROM `dt_statiddt` WHERE `is_fatturabile` = 1'); foreach ($stati as $stato) { $stati_importabili[] = $stato['descrizione']; } -$causali = $dbo->fetchArray('SELECT descrizione FROM `dt_causalet` WHERE `is_importabile` = 1'); +$causali = $database->fetchArray('SELECT descrizione FROM `dt_causalet` WHERE `is_importabile` = 1'); foreach ($causali as $causale) { $causali_importabili[] = $causale['descrizione']; } diff --git a/modules/ddt/init.php b/modules/ddt/init.php index 523085c81..ec4d64fbc 100755 --- a/modules/ddt/init.php +++ b/modules/ddt/init.php @@ -19,8 +19,11 @@ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Anagrafica; use Modules\DDT\DDT; +$azienda = Anagrafica::find(setting('Azienda predefinita')); + if ($module['name'] == 'Ddt di vendita') { $dir = 'entrata'; } else { diff --git a/modules/emails/edit.php b/modules/emails/edit.php index baa39d618..73572e43e 100755 --- a/modules/emails/edit.php +++ b/modules/emails/edit.php @@ -150,23 +150,22 @@ echo ' '.tr('Questo template non può essere rimosso dal sistema perchè collegato alle seguenti newsletter:').'
    '; - foreach($newsletters as $newsletter){ - echo ' + foreach ($newsletters as $newsletter) { + echo '
  • '.Modules::link('Newsletter', $newsletter->id, $newsletter->name, null, '').'
  • '; - } + } echo '
'; - -}elseif (!$record['predefined']) { -?> +} elseif (!$record['predefined']) { + ?> diff --git a/modules/emails/init.php b/modules/emails/init.php index 836073157..f0fec6fed 100755 --- a/modules/emails/init.php +++ b/modules/emails/init.php @@ -25,5 +25,5 @@ if (isset($id_record)) { $record = $dbo->fetchOne('SELECT * FROM em_templates WHERE id='.prepare($id_record).' AND deleted_at IS NULL'); //Controllo se ci sono newletter collegate a questo template - $newsletters = Newsletter::where('id_template',$id_record)->get(); + $newsletters = Newsletter::where('id_template', $id_record)->get(); } diff --git a/modules/newsletter/edit.php b/modules/newsletter/edit.php index 6760919b4..fce917d86 100755 --- a/modules/newsletter/edit.php +++ b/modules/newsletter/edit.php @@ -23,7 +23,7 @@ use Modules\Emails\Template; include_once __DIR__.'/../../core.php'; //Controllo se il template è ancora attivo -if( empty($template) ){ +if (empty($template)) { echo '
'.tr('ATTENZIONE! Questa newsletter risulta collegata ad un template non più presente a sistema').'
'; } diff --git a/modules/newsletter/init.php b/modules/newsletter/init.php index 6a22d78b4..be0b97d69 100755 --- a/modules/newsletter/init.php +++ b/modules/newsletter/init.php @@ -17,8 +17,8 @@ * along with this program. If not, see . */ -use Modules\Newsletter\Newsletter; use Modules\Emails\Template; +use Modules\Newsletter\Newsletter; include_once __DIR__.'/../../core.php'; diff --git a/update/2_4_24.sql b/update/2_4_24.sql index a29a3e85e..6ac0da86b 100644 --- a/update/2_4_24.sql +++ b/update/2_4_24.sql @@ -135,3 +135,6 @@ INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `e (NULL, 'app-v1', 'retrieve', 'controllo-clienti', 'API\\App\\v1\\ControlloClienti', '1'), (NULL, 'app-v1', 'retrieve', 'segnalazione-bug', 'API\\App\\v1\\SegnalazioneBug', '1'), (NULL, 'app-v1', 'create', 'segnalazione-bug', 'API\\App\\v1\\SegnalazioneBug', '1'); + +-- Aggiunto collegamento tra DDT in direzioni opposte per gestione movimentazioni interne tra sedi +ALTER TABLE `dt_ddt` ADD `id_ddt_trasporto_interno` INT(11) NULL, ADD FOREIGN KEY (`id_ddt_trasporto_interno`) REFERENCES `dt_ddt`(`id`) ON DELETE CASCADE;