From 694c2a0e50de6ed52377f489c79a73416d026825 Mon Sep 17 00:00:00 2001 From: Beppe Date: Tue, 28 Jan 2020 14:06:33 +0100 Subject: [PATCH 1/2] Aggiunta scelta del sezionale alla copia delle fatture --- modules/fatture/bulk.php | 85 ++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 47 deletions(-) diff --git a/modules/fatture/bulk.php b/modules/fatture/bulk.php index 9cf2873f9..ade439641 100644 --- a/modules/fatture/bulk.php +++ b/modules/fatture/bulk.php @@ -187,70 +187,62 @@ switch (post('op')) { case 'copy-bulk': - foreach ($id_records as $id_record) { - // Lettura dati fattura attuale - $rs = $dbo->fetchOne('SELECT * FROM co_documenti WHERE id='.prepare($id_record)); + foreach ($id_records as $id) { + $fattura = Fattura::find($id); - $dir = $dbo->fetchOne('SELECT dir FROM co_tipidocumento WHERE id='.prepare($rs['idtipodocumento']))['dir']; + $id_segment = (post('id_segment') ? post('id_segment') : $fattura->id_segment); + $dir = $dbo->fetchOne("SELECT dir FROM co_tipidocumento WHERE id=".prepare($fattura->idtipodocumento))['dir']; - //+ 1 settimana - if (post('skip_time') == 'Giorno') { - $data = date('Y-m-d', strtotime('+1 day', strtotime($rs['data']))); + //+ 1 giorno + if(post('skip_time')=='Giorno'){ + $data = date("Y-m-d", strtotime( '+1 day' , strtotime ( $fattura->data )) ); } //+ 1 settimana - if (post('skip_time') == 'Settimana') { - $data = date('Y-m-d', strtotime('+1 week', strtotime($rs['data']))); + if(post('skip_time')=='Settimana'){ + $data = date("Y-m-d", strtotime( '+1 week' , strtotime ( $fattura->data )) ); } //+ 1 mese - if (post('skip_time') == 'Mese') { - $data = date('Y-m-d', strtotime('+1 month', strtotime($rs['data']))); + if(post('skip_time')=='Mese'){ + $data = date("Y-m-d", strtotime( '+1 month' , strtotime ( $fattura->data )) ); } //+ 1 anno - if (post('skip_time') == 'Anno') { - $data = date('Y-m-d', strtotime('+1 year', strtotime($rs['data']))); + if(post('skip_time')=='Anno'){ + $data = date("Y-m-d", strtotime( '+1 year' , strtotime ( $fattura->data )) ); } - // Duplicazione righe - $righe = $dbo->fetchArray('SELECT * FROM co_righe_documenti WHERE iddocumento='.prepare($id_record)); + $new = $fattura->replicate(); + $new->id_segment = $id_segment; + $new->numero_esterno = Fattura::getNextNumeroSecondario($data, $dir, $id_segment); + $new->numero = Fattura::getNextNumero($data, $dir, $id_segment); + $new->idstatodocumento = 2; + $new->data = $data; + $new->save(); - $id_segment = $rs['id_segment']; - - // Calcolo prossimo numero fattura - $numero = get_new_numerofattura(date('Y-m-d')); - - if ($dir == 'entrata') { - $numero_esterno = get_new_numerosecondariofattura(date('Y-m-d')); - } else { - $numero_esterno = ''; - } - - // Duplicazione intestazione - $dbo->query('INSERT INTO co_documenti(numero, numero_esterno, data, idanagrafica, idcausalet, idspedizione, idporto, idaspettobeni, idvettore, n_colli, idsede_partenza, idsede_destinazione, idtipodocumento, idstatodocumento, idpagamento, idconto, idrivalsainps, idritenutaacconto, rivalsainps, iva_rivalsainps, ritenutaacconto, bollo, note, note_aggiuntive, buono_ordine, id_segment) VALUES('.prepare($numero).', '.prepare($numero_esterno).', '.prepare($data).', '.prepare($rs['idanagrafica']).', '.prepare($rs[0]['idcausalet']).', '.prepare($rs['idspedizione']).', '.prepare($rs['idporto']).', '.prepare($rs['idaspettobeni']).', '.prepare($rs['idvettore']).', '.prepare($rs['n_colli']).', '.prepare($rs['idsede_partenza']).', '.prepare($rs['idsede_destinazione']).', '.prepare($rs['idtipodocumento']).', (SELECT id FROM co_statidocumento WHERE descrizione=\'Bozza\'), '.prepare($rs['idpagamento']).', '.prepare($rs['idconto']).', '.prepare($rs['idrivalsainps']).', '.prepare($rs['idritenutaacconto']).', '.prepare($rs['rivalsainps']).', '.prepare($rs['iva_rivalsainps']).', '.prepare($rs['ritenutaacconto']).', '.prepare($rs['bollo']).', '.prepare($rs['note']).', '.prepare($rs['note_aggiuntive']).', '.prepare($rs['buono_ordine']).', '.prepare($rs['id_segment']).')'); - $id_record = $dbo->lastInsertedID(); - - // TODO: sistemare la duplicazione delle righe generiche e degli articoli, ignorando interventi, ddt, ordini, preventivi + $righe = $fattura->getRighe(); foreach ($righe as $riga) { - if (!post('riferimenti')) { - $riga['idpreventivo'] = 0; - $riga['idcontratto'] = 0; - $riga['idintervento'] = 0; - $riga['idddt'] = 0; - $riga['idordine'] = 0; + + if( !post('riferimenti') ){ + $riga->idpreventivo = 0; + $riga->idcontratto = 0; + $riga->idintervento = 0; + $riga->idddt = 0; + $riga->idordine = 0; } - // Scarico/carico nuovamente l'articolo da magazzino - if (!empty($riga['idarticolo'])) { - add_articolo_infattura($id_record, $riga['idarticolo'], $riga['descrizione'], $riga['idiva'], $riga['qta'], $riga['subtotale'], $riga['sconto'], $riga['sconto_unitario'], $riga['tipo_sconto'], $riga['idintervento'], $riga['idconto'], $riga['um']); - } else { - $dbo->query('INSERT INTO co_righe_documenti(iddocumento, idordine, idddt, idintervento, idarticolo, idpreventivo, idcontratto, is_descrizione, idtecnico, idagente, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, idritenutaacconto, ritenutaacconto, idrivalsainps, rivalsainps, um, qta, `order`) VALUES('.prepare($id_record).', '.prepare($riga['idordine']).', '.prepare($riga['idddt']).', '.prepare($riga['idintervento']).', '.prepare($riga['idarticolo']).', '.prepare($riga['idpreventivo']).', '.prepare($riga['idcontratto']).', '.prepare($riga['is_descrizione']).', '.prepare($riga['idtecnico']).', '.prepare($riga['idagente']).', '.prepare($riga['idconto']).', '.prepare($riga['idiva']).', '.prepare($riga['desc_iva']).', '.prepare($riga['iva']).', '.prepare($riga['iva_indetraibile']).', '.prepare($riga['descrizione']).', '.prepare($riga['subtotale']).', '.prepare($riga['sconto']).', '.prepare($riga['sconto_unitario']).', '.prepare($riga['tipo_sconto']).', '.prepare($riga['idritenutaacconto']).', '.prepare($riga['ritenutaacconto']).', '.prepare($riga['idrivalsainps']).', '.prepare($riga['rivalsainps']).', '.prepare($riga['um']).', '.prepare($riga['qta']).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'); + + $new_riga = $riga->replicate(); + $new_riga->setParent($new); + + $new_riga->save(); + + if( $new_riga->idarticolo ){ + $articolo = Articolo::find($new_riga->id); + $articolo->movimentaMagazzino($articolo->qta); } } - // Ricalcolo inps, ritenuta e bollo (se la fattura non รจ stata pagata) - ricalcola_costiagg_fattura($id_record); - aggiorna_sedi_movimenti('documenti', $id_record); } flash()->info(tr('Fatture duplicate correttamente!')); @@ -267,10 +259,9 @@ if (App::debug()) { $operations['copy-bulk'] = [ 'text' => ' '.tr('Duplica selezionati').'', 'data' => [ - 'msg' => tr('Vuoi davvero duplicare le righe selezionate?').'

{[ "type": "select", "label": "", "name": "skip_time", "required": 1, "values": "list=\"Giorno\":\"'.tr('Giorno').'\", \"Settimana\":\"'.tr('Settimana').'\", \"Mese\":\"'.tr('Mese').'\", \"Anno\":\"'.tr('Anno').'\" ", "value": "Giorno" ]}
{[ "type": "checkbox", "placeholder": "'.tr('Aggiungere i riferimenti ai documenti esterni?').'", "name": "riferimenti" ]}', + 'msg' => tr('Vuoi davvero duplicare le righe selezionate?').'

{[ "type": "select", "label": "", "name": "skip_time", "required": 1, "values": "list=\"Giorno\":\"'.tr('Giorno').'\", \"Settimana\":\"'.tr('Settimana').'\", \"Mese\":\"'.tr('Mese').'\", \"Anno\":\"'.tr('Anno').'\" ", "value": "Giorno" ]}
{[ "type": "select", "label": "", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.$id_module.' ORDER BY name", "value": "Giorno" ]}
{[ "type": "checkbox", "placeholder": "'.tr('Aggiungere i riferimenti ai documenti esterni?').'", "name": "riferimenti" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', - 'blank' => false, ], ]; From 0726a364fd13157237470b317eada26e1fbfdb51 Mon Sep 17 00:00:00 2001 From: Beppe Date: Tue, 28 Jan 2020 14:20:14 +0100 Subject: [PATCH 2/2] Aggiunta note in scadenzario --- modules/scadenzario/actions.php | 2 ++ modules/scadenzario/edit.php | 7 +++++++ update/2_4_13.sql | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/modules/scadenzario/actions.php b/modules/scadenzario/actions.php index 50976fdd8..cf01b4e25 100644 --- a/modules/scadenzario/actions.php +++ b/modules/scadenzario/actions.php @@ -50,6 +50,7 @@ switch (post('op')) { 'pagato' => $pagato, 'scadenza' => $scadenza, 'data_concordata' => $data_concordata, + 'note' => post('note'), ], ['id' => $id_scadenza]); if ($da_pagare == 0) { @@ -65,6 +66,7 @@ switch (post('op')) { 'scadenza' => $scadenza, 'data_concordata' => $data_concordata, 'data_emissione' => date('Y-m-d'), + 'note' => post('note'), ]); $id_scadenza = $database->lastInsertedID(); diff --git a/modules/scadenzario/edit.php b/modules/scadenzario/edit.php index 5326c8786..58418b1a1 100644 --- a/modules/scadenzario/edit.php +++ b/modules/scadenzario/edit.php @@ -64,6 +64,13 @@ if (!empty($documento)) { '.moneyFormat($documento->totale).' + + '.tr('Note').': + + {[ "type": "textarea", "name": "note", "value": "'.$record['note'].'" ]} + + + '.Modules::link($documento->module, $record['iddocumento'], ' '.tr('Apri documento'), null, 'class="btn btn-primary"'); diff --git a/update/2_4_13.sql b/update/2_4_13.sql index b1c610198..4077d147c 100755 --- a/update/2_4_13.sql +++ b/update/2_4_13.sql @@ -139,3 +139,9 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, -- Ripristino modulo pianificazione fatturazione INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `script`, `enabled`, `default`, `order`, `compatibility`, `version`, `options2`, `options`, `directory`, `help`) VALUES (27, 'Pianificazione fatturazione', 'Pianificazione fatturazione', (SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), (SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), 'tab', 'contratti.fatturaordiniservizio.php', 1, 0, 0, '', '', NULL, NULL, '', ''); + +-- Aggiunta campo note nello scadenzario -- +ALTER TABLE `co_scadenziario` ADD `note` VARCHAR(255) DEFAULT NULL AFTER `data_pagamento`; + +-- Aggiunta note in vista scadenzario -- +INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='Scadenzario' ), 'Note', 'co_scadenziario.note', '5', '1', '0', '0', '', '', '0', '0', '0');